rgss3_default_scripts 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
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