rgss3_default_scripts 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +9 -0
  3. data/Gemfile +4 -0
  4. data/README.md +9 -0
  5. data/Rakefile +2 -0
  6. data/lib/rgss3_default_scripts.rb +109 -0
  7. data/lib/rgss3_default_scripts/BattleManager.rb +392 -0
  8. data/lib/rgss3_default_scripts/Cache.rb +134 -0
  9. data/lib/rgss3_default_scripts/DataManager.rb +267 -0
  10. data/lib/rgss3_default_scripts/Game_Action.rb +262 -0
  11. data/lib/rgss3_default_scripts/Game_ActionResult.rb +159 -0
  12. data/lib/rgss3_default_scripts/Game_Actor.rb +696 -0
  13. data/lib/rgss3_default_scripts/Game_Actors.rb +22 -0
  14. data/lib/rgss3_default_scripts/Game_BaseItem.rb +51 -0
  15. data/lib/rgss3_default_scripts/Game_Battler.rb +824 -0
  16. data/lib/rgss3_default_scripts/Game_BattlerBase.rb +731 -0
  17. data/lib/rgss3_default_scripts/Game_Character.rb +396 -0
  18. data/lib/rgss3_default_scripts/Game_CharacterBase.rb +443 -0
  19. data/lib/rgss3_default_scripts/Game_CommonEvent.rb +41 -0
  20. data/lib/rgss3_default_scripts/Game_Enemy.rb +264 -0
  21. data/lib/rgss3_default_scripts/Game_Event.rb +308 -0
  22. data/lib/rgss3_default_scripts/Game_Follower.rb +74 -0
  23. data/lib/rgss3_default_scripts/Game_Followers.rb +112 -0
  24. data/lib/rgss3_default_scripts/Game_Interpreter.rb +1413 -0
  25. data/lib/rgss3_default_scripts/Game_Map.rb +704 -0
  26. data/lib/rgss3_default_scripts/Game_Message.rb +101 -0
  27. data/lib/rgss3_default_scripts/Game_Party.rb +418 -0
  28. data/lib/rgss3_default_scripts/Game_Picture.rb +161 -0
  29. data/lib/rgss3_default_scripts/Game_Pictures.rb +28 -0
  30. data/lib/rgss3_default_scripts/Game_Player.rb +488 -0
  31. data/lib/rgss3_default_scripts/Game_Screen.rb +234 -0
  32. data/lib/rgss3_default_scripts/Game_SelfSwitches.rb +35 -0
  33. data/lib/rgss3_default_scripts/Game_Switches.rb +35 -0
  34. data/lib/rgss3_default_scripts/Game_System.rb +122 -0
  35. data/lib/rgss3_default_scripts/Game_Temp.rb +45 -0
  36. data/lib/rgss3_default_scripts/Game_Timer.rb +56 -0
  37. data/lib/rgss3_default_scripts/Game_Troop.rb +205 -0
  38. data/lib/rgss3_default_scripts/Game_Unit.rb +131 -0
  39. data/lib/rgss3_default_scripts/Game_Variables.rb +34 -0
  40. data/lib/rgss3_default_scripts/Game_Vehicle.rb +193 -0
  41. data/lib/rgss3_default_scripts/SceneManager.rb +94 -0
  42. data/lib/rgss3_default_scripts/Scene_Base.rb +132 -0
  43. data/lib/rgss3_default_scripts/Scene_Battle.rb +693 -0
  44. data/lib/rgss3_default_scripts/Scene_Debug.rb +87 -0
  45. data/lib/rgss3_default_scripts/Scene_End.rb +61 -0
  46. data/lib/rgss3_default_scripts/Scene_Equip.rb +144 -0
  47. data/lib/rgss3_default_scripts/Scene_File.rb +203 -0
  48. data/lib/rgss3_default_scripts/Scene_Gameover.rb +85 -0
  49. data/lib/rgss3_default_scripts/Scene_Item.rb +75 -0
  50. data/lib/rgss3_default_scripts/Scene_ItemBase.rb +147 -0
  51. data/lib/rgss3_default_scripts/Scene_Load.rb +40 -0
  52. data/lib/rgss3_default_scripts/Scene_Map.rb +276 -0
  53. data/lib/rgss3_default_scripts/Scene_Menu.rb +127 -0
  54. data/lib/rgss3_default_scripts/Scene_MenuBase.rb +63 -0
  55. data/lib/rgss3_default_scripts/Scene_Name.rb +32 -0
  56. data/lib/rgss3_default_scripts/Scene_Save.rb +38 -0
  57. data/lib/rgss3_default_scripts/Scene_Shop.rb +299 -0
  58. data/lib/rgss3_default_scripts/Scene_Skill.rb +108 -0
  59. data/lib/rgss3_default_scripts/Scene_Status.rb +25 -0
  60. data/lib/rgss3_default_scripts/Scene_Title.rb +137 -0
  61. data/lib/rgss3_default_scripts/Sound.rb +135 -0
  62. data/lib/rgss3_default_scripts/Sprite_Base.rb +232 -0
  63. data/lib/rgss3_default_scripts/Sprite_Battler.rb +231 -0
  64. data/lib/rgss3_default_scripts/Sprite_Character.rb +226 -0
  65. data/lib/rgss3_default_scripts/Sprite_Picture.rb +82 -0
  66. data/lib/rgss3_default_scripts/Sprite_Timer.rb +77 -0
  67. data/lib/rgss3_default_scripts/Spriteset_Battle.rb +389 -0
  68. data/lib/rgss3_default_scripts/Spriteset_Map.rb +273 -0
  69. data/lib/rgss3_default_scripts/Spriteset_Weather.rb +184 -0
  70. data/lib/rgss3_default_scripts/Vocab.rb +145 -0
  71. data/lib/rgss3_default_scripts/Window_ActorCommand.rb +78 -0
  72. data/lib/rgss3_default_scripts/Window_Base.rb +571 -0
  73. data/lib/rgss3_default_scripts/Window_BattleActor.rb +38 -0
  74. data/lib/rgss3_default_scripts/Window_BattleEnemy.rb +70 -0
  75. data/lib/rgss3_default_scripts/Window_BattleItem.rb +40 -0
  76. data/lib/rgss3_default_scripts/Window_BattleLog.rb +425 -0
  77. data/lib/rgss3_default_scripts/Window_BattleSkill.rb +34 -0
  78. data/lib/rgss3_default_scripts/Window_BattleStatus.rb +111 -0
  79. data/lib/rgss3_default_scripts/Window_ChoiceList.rb +88 -0
  80. data/lib/rgss3_default_scripts/Window_Command.rb +152 -0
  81. data/lib/rgss3_default_scripts/Window_DebugLeft.rb +104 -0
  82. data/lib/rgss3_default_scripts/Window_DebugRight.rb +119 -0
  83. data/lib/rgss3_default_scripts/Window_EquipCommand.rb +36 -0
  84. data/lib/rgss3_default_scripts/Window_EquipItem.rb +78 -0
  85. data/lib/rgss3_default_scripts/Window_EquipSlot.rb +111 -0
  86. data/lib/rgss3_default_scripts/Window_EquipStatus.rb +97 -0
  87. data/lib/rgss3_default_scripts/Window_GameEnd.rb +38 -0
  88. data/lib/rgss3_default_scripts/Window_Gold.rb +47 -0
  89. data/lib/rgss3_default_scripts/Window_Help.rb +43 -0
  90. data/lib/rgss3_default_scripts/Window_HorzCommand.rb +106 -0
  91. data/lib/rgss3_default_scripts/Window_ItemCategory.rb +54 -0
  92. data/lib/rgss3_default_scripts/Window_ItemList.rb +117 -0
  93. data/lib/rgss3_default_scripts/Window_KeyItem.rb +55 -0
  94. data/lib/rgss3_default_scripts/Window_MapName.rb +96 -0
  95. data/lib/rgss3_default_scripts/Window_MenuActor.rb +43 -0
  96. data/lib/rgss3_default_scripts/Window_MenuCommand.rb +106 -0
  97. data/lib/rgss3_default_scripts/Window_MenuStatus.rb +85 -0
  98. data/lib/rgss3_default_scripts/Window_Message.rb +397 -0
  99. data/lib/rgss3_default_scripts/Window_NameEdit.rb +129 -0
  100. data/lib/rgss3_default_scripts/Window_NameInput.rb +253 -0
  101. data/lib/rgss3_default_scripts/Window_NumberInput.rb +148 -0
  102. data/lib/rgss3_default_scripts/Window_PartyCommand.rb +47 -0
  103. data/lib/rgss3_default_scripts/Window_SaveFile.rb +69 -0
  104. data/lib/rgss3_default_scripts/Window_ScrollText.rb +90 -0
  105. data/lib/rgss3_default_scripts/Window_Selectable.rb +442 -0
  106. data/lib/rgss3_default_scripts/Window_ShopBuy.rb +115 -0
  107. data/lib/rgss3_default_scripts/Window_ShopCommand.rb +36 -0
  108. data/lib/rgss3_default_scripts/Window_ShopNumber.rb +137 -0
  109. data/lib/rgss3_default_scripts/Window_ShopSell.rb +27 -0
  110. data/lib/rgss3_default_scripts/Window_ShopStatus.rb +124 -0
  111. data/lib/rgss3_default_scripts/Window_SkillCommand.rb +76 -0
  112. data/lib/rgss3_default_scripts/Window_SkillList.rb +121 -0
  113. data/lib/rgss3_default_scripts/Window_SkillStatus.rb +38 -0
  114. data/lib/rgss3_default_scripts/Window_Status.rb +125 -0
  115. data/lib/rgss3_default_scripts/Window_TitleCommand.rb +45 -0
  116. data/rgss3_default_scripts.gemspec +23 -0
  117. metadata +186 -0
@@ -0,0 +1,134 @@
1
+ #==============================================================================
2
+ # ** Cache
3
+ #------------------------------------------------------------------------------
4
+ # This module loads graphics, creates bitmap objects, and retains them.
5
+ # To speed up load times and conserve memory, this module holds the
6
+ # created bitmap object in the internal hash, allowing the program to
7
+ # return preexisting objects when the same bitmap is requested again.
8
+ #==============================================================================
9
+
10
+ module Cache
11
+ #--------------------------------------------------------------------------
12
+ # * Get Animation Graphic
13
+ #--------------------------------------------------------------------------
14
+ def self.animation(filename, hue)
15
+ load_bitmap("Graphics/Animations/", filename, hue)
16
+ end
17
+ #--------------------------------------------------------------------------
18
+ # * Get Battle Background (Floor) Graphic
19
+ #--------------------------------------------------------------------------
20
+ def self.battleback1(filename)
21
+ load_bitmap("Graphics/Battlebacks1/", filename)
22
+ end
23
+ #--------------------------------------------------------------------------
24
+ # * Get Battle Background (Wall) Graphic
25
+ #--------------------------------------------------------------------------
26
+ def self.battleback2(filename)
27
+ load_bitmap("Graphics/Battlebacks2/", filename)
28
+ end
29
+ #--------------------------------------------------------------------------
30
+ # * Get Battle Graphic
31
+ #--------------------------------------------------------------------------
32
+ def self.battler(filename, hue)
33
+ load_bitmap("Graphics/Battlers/", filename, hue)
34
+ end
35
+ #--------------------------------------------------------------------------
36
+ # * Get Character Graphic
37
+ #--------------------------------------------------------------------------
38
+ def self.character(filename)
39
+ load_bitmap("Graphics/Characters/", filename)
40
+ end
41
+ #--------------------------------------------------------------------------
42
+ # * Get Face Graphic
43
+ #--------------------------------------------------------------------------
44
+ def self.face(filename)
45
+ load_bitmap("Graphics/Faces/", filename)
46
+ end
47
+ #--------------------------------------------------------------------------
48
+ # * Get Parallax Background Graphic
49
+ #--------------------------------------------------------------------------
50
+ def self.parallax(filename)
51
+ load_bitmap("Graphics/Parallaxes/", filename)
52
+ end
53
+ #--------------------------------------------------------------------------
54
+ # * Get Picture Graphic
55
+ #--------------------------------------------------------------------------
56
+ def self.picture(filename)
57
+ load_bitmap("Graphics/Pictures/", filename)
58
+ end
59
+ #--------------------------------------------------------------------------
60
+ # * Get System Graphic
61
+ #--------------------------------------------------------------------------
62
+ def self.system(filename)
63
+ load_bitmap("Graphics/System/", filename)
64
+ end
65
+ #--------------------------------------------------------------------------
66
+ # * Get Tileset Graphic
67
+ #--------------------------------------------------------------------------
68
+ def self.tileset(filename)
69
+ load_bitmap("Graphics/Tilesets/", filename)
70
+ end
71
+ #--------------------------------------------------------------------------
72
+ # * Get Title (Background) Graphic
73
+ #--------------------------------------------------------------------------
74
+ def self.title1(filename)
75
+ load_bitmap("Graphics/Titles1/", filename)
76
+ end
77
+ #--------------------------------------------------------------------------
78
+ # * Get Title (Frame) Graphic
79
+ #--------------------------------------------------------------------------
80
+ def self.title2(filename)
81
+ load_bitmap("Graphics/Titles2/", filename)
82
+ end
83
+ #--------------------------------------------------------------------------
84
+ # * Load Bitmap
85
+ #--------------------------------------------------------------------------
86
+ def self.load_bitmap(folder_name, filename, hue = 0)
87
+ @cache ||= {}
88
+ if filename.empty?
89
+ empty_bitmap
90
+ elsif hue == 0
91
+ normal_bitmap(folder_name + filename)
92
+ else
93
+ hue_changed_bitmap(folder_name + filename, hue)
94
+ end
95
+ end
96
+ #--------------------------------------------------------------------------
97
+ # * Create Empty Bitmap
98
+ #--------------------------------------------------------------------------
99
+ def self.empty_bitmap
100
+ Bitmap.new(32, 32)
101
+ end
102
+ #--------------------------------------------------------------------------
103
+ # * Create/Get Normal Bitmap
104
+ #--------------------------------------------------------------------------
105
+ def self.normal_bitmap(path)
106
+ @cache[path] = Bitmap.new(path) unless include?(path)
107
+ @cache[path]
108
+ end
109
+ #--------------------------------------------------------------------------
110
+ # * Create/Get Hue-Changed Bitmap
111
+ #--------------------------------------------------------------------------
112
+ def self.hue_changed_bitmap(path, hue)
113
+ key = [path, hue]
114
+ unless include?(key)
115
+ @cache[key] = normal_bitmap(path).clone
116
+ @cache[key].hue_change(hue)
117
+ end
118
+ @cache[key]
119
+ end
120
+ #--------------------------------------------------------------------------
121
+ # * Check Cache Existence
122
+ #--------------------------------------------------------------------------
123
+ def self.include?(key)
124
+ @cache[key] && !@cache[key].disposed?
125
+ end
126
+ #--------------------------------------------------------------------------
127
+ # * Clear Cache
128
+ #--------------------------------------------------------------------------
129
+ def self.clear
130
+ @cache ||= {}
131
+ @cache.clear
132
+ GC.start
133
+ end
134
+ end
@@ -0,0 +1,267 @@
1
+ #==============================================================================
2
+ # ** DataManager
3
+ #------------------------------------------------------------------------------
4
+ # This module manages the database and game objects. Almost all of the
5
+ # global variables used by the game are initialized by this module.
6
+ #==============================================================================
7
+
8
+ module DataManager
9
+ #--------------------------------------------------------------------------
10
+ # * Module Instance Variables
11
+ #--------------------------------------------------------------------------
12
+ @last_savefile_index = 0 # most recently accessed file
13
+ #--------------------------------------------------------------------------
14
+ # * Initialize Module
15
+ #--------------------------------------------------------------------------
16
+ def self.init
17
+ @last_savefile_index = 0
18
+ load_database
19
+ create_game_objects
20
+ setup_battle_test if $BTEST
21
+ end
22
+ #--------------------------------------------------------------------------
23
+ # * Load Database
24
+ #--------------------------------------------------------------------------
25
+ def self.load_database
26
+ if $BTEST
27
+ load_battle_test_database
28
+ else
29
+ load_normal_database
30
+ check_player_location
31
+ end
32
+ end
33
+ #--------------------------------------------------------------------------
34
+ # * Load Normal Database
35
+ #--------------------------------------------------------------------------
36
+ def self.load_normal_database
37
+ $data_actors = load_data("Data/Actors.rvdata2")
38
+ $data_classes = load_data("Data/Classes.rvdata2")
39
+ $data_skills = load_data("Data/Skills.rvdata2")
40
+ $data_items = load_data("Data/Items.rvdata2")
41
+ $data_weapons = load_data("Data/Weapons.rvdata2")
42
+ $data_armors = load_data("Data/Armors.rvdata2")
43
+ $data_enemies = load_data("Data/Enemies.rvdata2")
44
+ $data_troops = load_data("Data/Troops.rvdata2")
45
+ $data_states = load_data("Data/States.rvdata2")
46
+ $data_animations = load_data("Data/Animations.rvdata2")
47
+ $data_tilesets = load_data("Data/Tilesets.rvdata2")
48
+ $data_common_events = load_data("Data/CommonEvents.rvdata2")
49
+ $data_system = load_data("Data/System.rvdata2")
50
+ $data_mapinfos = load_data("Data/MapInfos.rvdata2")
51
+ end
52
+ #--------------------------------------------------------------------------
53
+ # * Load Battle Test Database
54
+ #--------------------------------------------------------------------------
55
+ def self.load_battle_test_database
56
+ $data_actors = load_data("Data/BT_Actors.rvdata2")
57
+ $data_classes = load_data("Data/BT_Classes.rvdata2")
58
+ $data_skills = load_data("Data/BT_Skills.rvdata2")
59
+ $data_items = load_data("Data/BT_Items.rvdata2")
60
+ $data_weapons = load_data("Data/BT_Weapons.rvdata2")
61
+ $data_armors = load_data("Data/BT_Armors.rvdata2")
62
+ $data_enemies = load_data("Data/BT_Enemies.rvdata2")
63
+ $data_troops = load_data("Data/BT_Troops.rvdata2")
64
+ $data_states = load_data("Data/BT_States.rvdata2")
65
+ $data_animations = load_data("Data/BT_Animations.rvdata2")
66
+ $data_tilesets = load_data("Data/BT_Tilesets.rvdata2")
67
+ $data_common_events = load_data("Data/BT_CommonEvents.rvdata2")
68
+ $data_system = load_data("Data/BT_System.rvdata2")
69
+ end
70
+ #--------------------------------------------------------------------------
71
+ # * Check Player Start Location Existence
72
+ #--------------------------------------------------------------------------
73
+ def self.check_player_location
74
+ if $data_system.start_map_id == 0
75
+ msgbox(Vocab::PlayerPosError)
76
+ exit
77
+ end
78
+ end
79
+ #--------------------------------------------------------------------------
80
+ # * Create Game Objects
81
+ #--------------------------------------------------------------------------
82
+ def self.create_game_objects
83
+ $game_temp = Game_Temp.new
84
+ $game_system = Game_System.new
85
+ $game_timer = Game_Timer.new
86
+ $game_message = Game_Message.new
87
+ $game_switches = Game_Switches.new
88
+ $game_variables = Game_Variables.new
89
+ $game_self_switches = Game_SelfSwitches.new
90
+ $game_actors = Game_Actors.new
91
+ $game_party = Game_Party.new
92
+ $game_troop = Game_Troop.new
93
+ $game_map = Game_Map.new
94
+ $game_player = Game_Player.new
95
+ end
96
+ #--------------------------------------------------------------------------
97
+ # * Set Up New Game
98
+ #--------------------------------------------------------------------------
99
+ def self.setup_new_game
100
+ create_game_objects
101
+ $game_party.setup_starting_members
102
+ $game_map.setup($data_system.start_map_id)
103
+ $game_player.moveto($data_system.start_x, $data_system.start_y)
104
+ $game_player.refresh
105
+ Graphics.frame_count = 0
106
+ end
107
+ #--------------------------------------------------------------------------
108
+ # * Set Up Battle Test
109
+ #--------------------------------------------------------------------------
110
+ def self.setup_battle_test
111
+ $game_party.setup_battle_test
112
+ BattleManager.setup($data_system.test_troop_id)
113
+ BattleManager.play_battle_bgm
114
+ end
115
+ #--------------------------------------------------------------------------
116
+ # * Determine Existence of Save File
117
+ #--------------------------------------------------------------------------
118
+ def self.save_file_exists?
119
+ !Dir.glob('Save*.rvdata2').empty?
120
+ end
121
+ #--------------------------------------------------------------------------
122
+ # * Maximum Number of Save Files
123
+ #--------------------------------------------------------------------------
124
+ def self.savefile_max
125
+ return 16
126
+ end
127
+ #--------------------------------------------------------------------------
128
+ # * Create Filename
129
+ # index : File Index
130
+ #--------------------------------------------------------------------------
131
+ def self.make_filename(index)
132
+ sprintf("Save%02d.rvdata2", index + 1)
133
+ end
134
+ #--------------------------------------------------------------------------
135
+ # * Execute Save
136
+ #--------------------------------------------------------------------------
137
+ def self.save_game(index)
138
+ begin
139
+ save_game_without_rescue(index)
140
+ rescue
141
+ delete_save_file(index)
142
+ false
143
+ end
144
+ end
145
+ #--------------------------------------------------------------------------
146
+ # * Execute Load
147
+ #--------------------------------------------------------------------------
148
+ def self.load_game(index)
149
+ load_game_without_rescue(index) rescue false
150
+ end
151
+ #--------------------------------------------------------------------------
152
+ # * Load Save Header
153
+ #--------------------------------------------------------------------------
154
+ def self.load_header(index)
155
+ load_header_without_rescue(index) rescue nil
156
+ end
157
+ #--------------------------------------------------------------------------
158
+ # * Execute Save (No Exception Processing)
159
+ #--------------------------------------------------------------------------
160
+ def self.save_game_without_rescue(index)
161
+ File.open(make_filename(index), "wb") do |file|
162
+ $game_system.on_before_save
163
+ Marshal.dump(make_save_header, file)
164
+ Marshal.dump(make_save_contents, file)
165
+ @last_savefile_index = index
166
+ end
167
+ return true
168
+ end
169
+ #--------------------------------------------------------------------------
170
+ # * Execute Load (No Exception Processing)
171
+ #--------------------------------------------------------------------------
172
+ def self.load_game_without_rescue(index)
173
+ File.open(make_filename(index), "rb") do |file|
174
+ Marshal.load(file)
175
+ extract_save_contents(Marshal.load(file))
176
+ reload_map_if_updated
177
+ @last_savefile_index = index
178
+ end
179
+ return true
180
+ end
181
+ #--------------------------------------------------------------------------
182
+ # * Load Save Header (No Exception Processing)
183
+ #--------------------------------------------------------------------------
184
+ def self.load_header_without_rescue(index)
185
+ File.open(make_filename(index), "rb") do |file|
186
+ return Marshal.load(file)
187
+ end
188
+ return nil
189
+ end
190
+ #--------------------------------------------------------------------------
191
+ # * Delete Save File
192
+ #--------------------------------------------------------------------------
193
+ def self.delete_save_file(index)
194
+ File.delete(make_filename(index)) rescue nil
195
+ end
196
+ #--------------------------------------------------------------------------
197
+ # * Create Save Header
198
+ #--------------------------------------------------------------------------
199
+ def self.make_save_header
200
+ header = {}
201
+ header[:characters] = $game_party.characters_for_savefile
202
+ header[:playtime_s] = $game_system.playtime_s
203
+ header
204
+ end
205
+ #--------------------------------------------------------------------------
206
+ # * Create Save Contents
207
+ #--------------------------------------------------------------------------
208
+ def self.make_save_contents
209
+ contents = {}
210
+ contents[:system] = $game_system
211
+ contents[:timer] = $game_timer
212
+ contents[:message] = $game_message
213
+ contents[:switches] = $game_switches
214
+ contents[:variables] = $game_variables
215
+ contents[:self_switches] = $game_self_switches
216
+ contents[:actors] = $game_actors
217
+ contents[:party] = $game_party
218
+ contents[:troop] = $game_troop
219
+ contents[:map] = $game_map
220
+ contents[:player] = $game_player
221
+ contents
222
+ end
223
+ #--------------------------------------------------------------------------
224
+ # * Extract Save Contents
225
+ #--------------------------------------------------------------------------
226
+ def self.extract_save_contents(contents)
227
+ $game_system = contents[:system]
228
+ $game_timer = contents[:timer]
229
+ $game_message = contents[:message]
230
+ $game_switches = contents[:switches]
231
+ $game_variables = contents[:variables]
232
+ $game_self_switches = contents[:self_switches]
233
+ $game_actors = contents[:actors]
234
+ $game_party = contents[:party]
235
+ $game_troop = contents[:troop]
236
+ $game_map = contents[:map]
237
+ $game_player = contents[:player]
238
+ end
239
+ #--------------------------------------------------------------------------
240
+ # * Reload Map if Data Is Updated
241
+ #--------------------------------------------------------------------------
242
+ def self.reload_map_if_updated
243
+ if $game_system.version_id != $data_system.version_id
244
+ $game_map.setup($game_map.map_id)
245
+ $game_player.center($game_player.x, $game_player.y)
246
+ $game_player.make_encounter_count
247
+ end
248
+ end
249
+ #--------------------------------------------------------------------------
250
+ # * Get Update Date of Save File
251
+ #--------------------------------------------------------------------------
252
+ def self.savefile_time_stamp(index)
253
+ File.mtime(make_filename(index)) rescue Time.at(0)
254
+ end
255
+ #--------------------------------------------------------------------------
256
+ # * Get File Index with Latest Update Date
257
+ #--------------------------------------------------------------------------
258
+ def self.latest_savefile_index
259
+ savefile_max.times.max_by {|i| savefile_time_stamp(i) }
260
+ end
261
+ #--------------------------------------------------------------------------
262
+ # * Get Index of File Most Recently Accessed
263
+ #--------------------------------------------------------------------------
264
+ def self.last_savefile_index
265
+ @last_savefile_index
266
+ end
267
+ end
@@ -0,0 +1,262 @@
1
+ #==============================================================================
2
+ # ** Game_Action
3
+ #------------------------------------------------------------------------------
4
+ # This class handles battle actions. This class is used within the
5
+ # Game_Battler class.
6
+ #==============================================================================
7
+
8
+ class Game_Action
9
+ #--------------------------------------------------------------------------
10
+ # * Public Instance Variables
11
+ #--------------------------------------------------------------------------
12
+ attr_reader :subject # action subject
13
+ attr_reader :forcing # forcing flag for battle action
14
+ attr_reader :item # skill/item
15
+ attr_accessor :target_index # target index
16
+ attr_reader :value # evaluation value for auto battle
17
+ #--------------------------------------------------------------------------
18
+ # * Object Initialization
19
+ #--------------------------------------------------------------------------
20
+ def initialize(subject, forcing = false)
21
+ @subject = subject
22
+ @forcing = forcing
23
+ clear
24
+ end
25
+ #--------------------------------------------------------------------------
26
+ # * Clear
27
+ #--------------------------------------------------------------------------
28
+ def clear
29
+ @item = Game_BaseItem.new
30
+ @target_index = -1
31
+ @value = 0
32
+ end
33
+ #--------------------------------------------------------------------------
34
+ # * Get Allied Units
35
+ #--------------------------------------------------------------------------
36
+ def friends_unit
37
+ subject.friends_unit
38
+ end
39
+ #--------------------------------------------------------------------------
40
+ # * Get Enemy Units
41
+ #--------------------------------------------------------------------------
42
+ def opponents_unit
43
+ subject.opponents_unit
44
+ end
45
+ #--------------------------------------------------------------------------
46
+ # * Set Battle Action of Enemy Character
47
+ # action : RPG::Enemy::Action
48
+ #--------------------------------------------------------------------------
49
+ def set_enemy_action(action)
50
+ if action
51
+ set_skill(action.skill_id)
52
+ else
53
+ clear
54
+ end
55
+ end
56
+ #--------------------------------------------------------------------------
57
+ # * Set Normal Attack
58
+ #--------------------------------------------------------------------------
59
+ def set_attack
60
+ set_skill(subject.attack_skill_id)
61
+ self
62
+ end
63
+ #--------------------------------------------------------------------------
64
+ # * Set Guard
65
+ #--------------------------------------------------------------------------
66
+ def set_guard
67
+ set_skill(subject.guard_skill_id)
68
+ self
69
+ end
70
+ #--------------------------------------------------------------------------
71
+ # * Set Skill
72
+ #--------------------------------------------------------------------------
73
+ def set_skill(skill_id)
74
+ @item.object = $data_skills[skill_id]
75
+ self
76
+ end
77
+ #--------------------------------------------------------------------------
78
+ # * Set Item
79
+ #--------------------------------------------------------------------------
80
+ def set_item(item_id)
81
+ @item.object = $data_items[item_id]
82
+ self
83
+ end
84
+ #--------------------------------------------------------------------------
85
+ # * Get Item Object
86
+ #--------------------------------------------------------------------------
87
+ def item
88
+ @item.object
89
+ end
90
+ #--------------------------------------------------------------------------
91
+ # * Normal Attack Determination
92
+ #--------------------------------------------------------------------------
93
+ def attack?
94
+ item == $data_skills[subject.attack_skill_id]
95
+ end
96
+ #--------------------------------------------------------------------------
97
+ # * Random Target
98
+ #--------------------------------------------------------------------------
99
+ def decide_random_target
100
+ if item.for_dead_friend?
101
+ target = friends_unit.random_dead_target
102
+ elsif item.for_friend?
103
+ target = friends_unit.random_target
104
+ else
105
+ target = opponents_unit.random_target
106
+ end
107
+ if target
108
+ @target_index = target.index
109
+ else
110
+ clear
111
+ end
112
+ end
113
+ #--------------------------------------------------------------------------
114
+ # * Set Confusion Action
115
+ #--------------------------------------------------------------------------
116
+ def set_confusion
117
+ set_attack
118
+ end
119
+ #--------------------------------------------------------------------------
120
+ # * Action Preparation
121
+ #--------------------------------------------------------------------------
122
+ def prepare
123
+ set_confusion if subject.confusion? && !forcing
124
+ end
125
+ #--------------------------------------------------------------------------
126
+ # * Determination if Action is Valid or Not
127
+ # Assuming that an event command does not cause [Force Battle Action],
128
+ # if state limitations or lack of items, etc. make the planned action
129
+ # impossible, return false.
130
+ #--------------------------------------------------------------------------
131
+ def valid?
132
+ (forcing && item) || subject.usable?(item)
133
+ end
134
+ #--------------------------------------------------------------------------
135
+ # * Calculate Action Speed
136
+ #--------------------------------------------------------------------------
137
+ def speed
138
+ speed = subject.agi + rand(5 + subject.agi / 4)
139
+ speed += item.speed if item
140
+ speed += subject.atk_speed if attack?
141
+ speed
142
+ end
143
+ #--------------------------------------------------------------------------
144
+ # * Create Target Array
145
+ #--------------------------------------------------------------------------
146
+ def make_targets
147
+ if !forcing && subject.confusion?
148
+ [confusion_target]
149
+ elsif item.for_opponent?
150
+ targets_for_opponents
151
+ elsif item.for_friend?
152
+ targets_for_friends
153
+ else
154
+ []
155
+ end
156
+ end
157
+ #--------------------------------------------------------------------------
158
+ # * Target When Confused
159
+ #--------------------------------------------------------------------------
160
+ def confusion_target
161
+ case subject.confusion_level
162
+ when 1
163
+ opponents_unit.random_target
164
+ when 2
165
+ if rand(2) == 0
166
+ opponents_unit.random_target
167
+ else
168
+ friends_unit.random_target
169
+ end
170
+ else
171
+ friends_unit.random_target
172
+ end
173
+ end
174
+ #--------------------------------------------------------------------------
175
+ # * Targets for Opponents
176
+ #--------------------------------------------------------------------------
177
+ def targets_for_opponents
178
+ if item.for_random?
179
+ Array.new(item.number_of_targets) { opponents_unit.random_target }
180
+ elsif item.for_one?
181
+ num = 1 + (attack? ? subject.atk_times_add.to_i : 0)
182
+ if @target_index < 0
183
+ [opponents_unit.random_target] * num
184
+ else
185
+ [opponents_unit.smooth_target(@target_index)] * num
186
+ end
187
+ else
188
+ opponents_unit.alive_members
189
+ end
190
+ end
191
+ #--------------------------------------------------------------------------
192
+ # * Targets for Allies
193
+ #--------------------------------------------------------------------------
194
+ def targets_for_friends
195
+ if item.for_user?
196
+ [subject]
197
+ elsif item.for_dead_friend?
198
+ if item.for_one?
199
+ [friends_unit.smooth_dead_target(@target_index)]
200
+ else
201
+ friends_unit.dead_members
202
+ end
203
+ elsif item.for_friend?
204
+ if item.for_one?
205
+ [friends_unit.smooth_target(@target_index)]
206
+ else
207
+ friends_unit.alive_members
208
+ end
209
+ end
210
+ end
211
+ #--------------------------------------------------------------------------
212
+ # * Evaluate Value of Action (for Auto Battle)
213
+ # @value and @target_index are automatically set.
214
+ #--------------------------------------------------------------------------
215
+ def evaluate
216
+ @value = 0
217
+ evaluate_item if valid?
218
+ @value += rand if @value > 0
219
+ self
220
+ end
221
+ #--------------------------------------------------------------------------
222
+ # * Evaluate Skill/Item
223
+ #--------------------------------------------------------------------------
224
+ def evaluate_item
225
+ item_target_candidates.each do |target|
226
+ value = evaluate_item_with_target(target)
227
+ if item.for_all?
228
+ @value += value
229
+ elsif value > @value
230
+ @value = value
231
+ @target_index = target.index
232
+ end
233
+ end
234
+ end
235
+ #--------------------------------------------------------------------------
236
+ # * Get Use Target Candidates for Skills/Items
237
+ #--------------------------------------------------------------------------
238
+ def item_target_candidates
239
+ if item.for_opponent?
240
+ opponents_unit.alive_members
241
+ elsif item.for_user?
242
+ [subject]
243
+ elsif item.for_dead_friend?
244
+ friends_unit.dead_members
245
+ else
246
+ friends_unit.alive_members
247
+ end
248
+ end
249
+ #--------------------------------------------------------------------------
250
+ # * Evaluate Skill/Item (Target Specification)
251
+ #--------------------------------------------------------------------------
252
+ def evaluate_item_with_target(target)
253
+ target.result.clear
254
+ target.make_damage_value(subject, item)
255
+ if item.for_opponent?
256
+ return target.result.hp_damage.to_f / [target.hp, 1].max
257
+ else
258
+ recovery = [-target.result.hp_damage, target.mhp - target.hp].min
259
+ return recovery.to_f / target.mhp
260
+ end
261
+ end
262
+ end