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,94 @@
1
+ #==============================================================================
2
+ # ** SceneManager
3
+ #------------------------------------------------------------------------------
4
+ # This module manages scene transitions. For example, it can handle
5
+ # hierarchical structures such as calling the item screen from the main menu
6
+ # or returning from the item screen to the main menu.
7
+ #==============================================================================
8
+
9
+ module SceneManager
10
+ #--------------------------------------------------------------------------
11
+ # * Module Instance Variables
12
+ #--------------------------------------------------------------------------
13
+ @scene = nil # current scene object
14
+ @stack = [] # stack for hierarchical transitions
15
+ @background_bitmap = nil # background bitmap
16
+ #--------------------------------------------------------------------------
17
+ # * Execute
18
+ #--------------------------------------------------------------------------
19
+ def self.run
20
+ DataManager.init
21
+ Audio.setup_midi if use_midi?
22
+ @scene = first_scene_class.new
23
+ @scene.main while @scene
24
+ end
25
+ #--------------------------------------------------------------------------
26
+ # * Get First Scene Class
27
+ #--------------------------------------------------------------------------
28
+ def self.first_scene_class
29
+ $BTEST ? Scene_Battle : Scene_Title
30
+ end
31
+ #--------------------------------------------------------------------------
32
+ # * Use MIDI?
33
+ #--------------------------------------------------------------------------
34
+ def self.use_midi?
35
+ $data_system.opt_use_midi
36
+ end
37
+ #--------------------------------------------------------------------------
38
+ # * Get Current Scene
39
+ #--------------------------------------------------------------------------
40
+ def self.scene
41
+ @scene
42
+ end
43
+ #--------------------------------------------------------------------------
44
+ # * Determine Current Scene Class
45
+ #--------------------------------------------------------------------------
46
+ def self.scene_is?(scene_class)
47
+ @scene.instance_of?(scene_class)
48
+ end
49
+ #--------------------------------------------------------------------------
50
+ # * Direct Transition
51
+ #--------------------------------------------------------------------------
52
+ def self.goto(scene_class)
53
+ @scene = scene_class.new
54
+ end
55
+ #--------------------------------------------------------------------------
56
+ # * Call
57
+ #--------------------------------------------------------------------------
58
+ def self.call(scene_class)
59
+ @stack.push(@scene)
60
+ @scene = scene_class.new
61
+ end
62
+ #--------------------------------------------------------------------------
63
+ # * Return to Caller
64
+ #--------------------------------------------------------------------------
65
+ def self.return
66
+ @scene = @stack.pop
67
+ end
68
+ #--------------------------------------------------------------------------
69
+ # * Clear Call Stack
70
+ #--------------------------------------------------------------------------
71
+ def self.clear
72
+ @stack.clear
73
+ end
74
+ #--------------------------------------------------------------------------
75
+ # * Exit Game
76
+ #--------------------------------------------------------------------------
77
+ def self.exit
78
+ @scene = nil
79
+ end
80
+ #--------------------------------------------------------------------------
81
+ # * Create Snapshot to Use as Background
82
+ #--------------------------------------------------------------------------
83
+ def self.snapshot_for_background
84
+ @background_bitmap.dispose if @background_bitmap
85
+ @background_bitmap = Graphics.snap_to_bitmap
86
+ @background_bitmap.blur
87
+ end
88
+ #--------------------------------------------------------------------------
89
+ # * Get Background Bitmap
90
+ #--------------------------------------------------------------------------
91
+ def self.background_bitmap
92
+ @background_bitmap
93
+ end
94
+ end
@@ -0,0 +1,132 @@
1
+ #==============================================================================
2
+ # ** Scene_Base
3
+ #------------------------------------------------------------------------------
4
+ # This is a super class of all scenes within the game.
5
+ #==============================================================================
6
+
7
+ class Scene_Base
8
+ #--------------------------------------------------------------------------
9
+ # * Main
10
+ #--------------------------------------------------------------------------
11
+ def main
12
+ start
13
+ post_start
14
+ update until scene_changing?
15
+ pre_terminate
16
+ terminate
17
+ end
18
+ #--------------------------------------------------------------------------
19
+ # * Start Processing
20
+ #--------------------------------------------------------------------------
21
+ def start
22
+ create_main_viewport
23
+ end
24
+ #--------------------------------------------------------------------------
25
+ # * Post-Start Processing
26
+ #--------------------------------------------------------------------------
27
+ def post_start
28
+ perform_transition
29
+ Input.update
30
+ end
31
+ #--------------------------------------------------------------------------
32
+ # * Determine if Scene Is Changing
33
+ #--------------------------------------------------------------------------
34
+ def scene_changing?
35
+ SceneManager.scene != self
36
+ end
37
+ #--------------------------------------------------------------------------
38
+ # * Frame Update
39
+ #--------------------------------------------------------------------------
40
+ def update
41
+ update_basic
42
+ end
43
+ #--------------------------------------------------------------------------
44
+ # * Update Frame (Basic)
45
+ #--------------------------------------------------------------------------
46
+ def update_basic
47
+ Graphics.update
48
+ Input.update
49
+ update_all_windows
50
+ end
51
+ #--------------------------------------------------------------------------
52
+ # * Pre-Termination Processing
53
+ #--------------------------------------------------------------------------
54
+ def pre_terminate
55
+ end
56
+ #--------------------------------------------------------------------------
57
+ # * Termination Processing
58
+ #--------------------------------------------------------------------------
59
+ def terminate
60
+ Graphics.freeze
61
+ dispose_all_windows
62
+ dispose_main_viewport
63
+ end
64
+ #--------------------------------------------------------------------------
65
+ # * Execute Transition
66
+ #--------------------------------------------------------------------------
67
+ def perform_transition
68
+ Graphics.transition(transition_speed)
69
+ end
70
+ #--------------------------------------------------------------------------
71
+ # * Get Transition Speed
72
+ #--------------------------------------------------------------------------
73
+ def transition_speed
74
+ return 10
75
+ end
76
+ #--------------------------------------------------------------------------
77
+ # * Create Viewport
78
+ #--------------------------------------------------------------------------
79
+ def create_main_viewport
80
+ @viewport = Viewport.new
81
+ @viewport.z = 200
82
+ end
83
+ #--------------------------------------------------------------------------
84
+ # * Free Viewport
85
+ #--------------------------------------------------------------------------
86
+ def dispose_main_viewport
87
+ @viewport.dispose
88
+ end
89
+ #--------------------------------------------------------------------------
90
+ # * Update All Windows
91
+ #--------------------------------------------------------------------------
92
+ def update_all_windows
93
+ instance_variables.each do |varname|
94
+ ivar = instance_variable_get(varname)
95
+ ivar.update if ivar.is_a?(Window)
96
+ end
97
+ end
98
+ #--------------------------------------------------------------------------
99
+ # * Free All Windows
100
+ #--------------------------------------------------------------------------
101
+ def dispose_all_windows
102
+ instance_variables.each do |varname|
103
+ ivar = instance_variable_get(varname)
104
+ ivar.dispose if ivar.is_a?(Window)
105
+ end
106
+ end
107
+ #--------------------------------------------------------------------------
108
+ # * Return to Calling Scene
109
+ #--------------------------------------------------------------------------
110
+ def return_scene
111
+ SceneManager.return
112
+ end
113
+ #--------------------------------------------------------------------------
114
+ # * Fade Out All Sounds and Graphics
115
+ #--------------------------------------------------------------------------
116
+ def fadeout_all(time = 1000)
117
+ RPG::BGM.fade(time)
118
+ RPG::BGS.fade(time)
119
+ RPG::ME.fade(time)
120
+ Graphics.fadeout(time * Graphics.frame_rate / 1000)
121
+ RPG::BGM.stop
122
+ RPG::BGS.stop
123
+ RPG::ME.stop
124
+ end
125
+ #--------------------------------------------------------------------------
126
+ # * Determine if Game Is Over
127
+ # Transition to the game over screen if the entire party is dead.
128
+ #--------------------------------------------------------------------------
129
+ def check_gameover
130
+ SceneManager.goto(Scene_Gameover) if $game_party.all_dead?
131
+ end
132
+ end
@@ -0,0 +1,693 @@
1
+ #==============================================================================
2
+ # ** Scene_Battle
3
+ #------------------------------------------------------------------------------
4
+ # This class performs battle screen processing.
5
+ #==============================================================================
6
+
7
+ class Scene_Battle < Scene_Base
8
+ #--------------------------------------------------------------------------
9
+ # * Start Processing
10
+ #--------------------------------------------------------------------------
11
+ def start
12
+ super
13
+ create_spriteset
14
+ create_all_windows
15
+ BattleManager.method_wait_for_message = method(:wait_for_message)
16
+ end
17
+ #--------------------------------------------------------------------------
18
+ # * Post-Start Processing
19
+ #--------------------------------------------------------------------------
20
+ def post_start
21
+ super
22
+ battle_start
23
+ end
24
+ #--------------------------------------------------------------------------
25
+ # * Pre-Termination Processing
26
+ #--------------------------------------------------------------------------
27
+ def pre_terminate
28
+ super
29
+ Graphics.fadeout(30) if SceneManager.scene_is?(Scene_Map)
30
+ Graphics.fadeout(60) if SceneManager.scene_is?(Scene_Title)
31
+ end
32
+ #--------------------------------------------------------------------------
33
+ # * Termination Processing
34
+ #--------------------------------------------------------------------------
35
+ def terminate
36
+ super
37
+ dispose_spriteset
38
+ @info_viewport.dispose
39
+ RPG::ME.stop
40
+ end
41
+ #--------------------------------------------------------------------------
42
+ # * Frame Update
43
+ #--------------------------------------------------------------------------
44
+ def update
45
+ super
46
+ if BattleManager.in_turn?
47
+ process_event
48
+ process_action
49
+ end
50
+ BattleManager.judge_win_loss
51
+ end
52
+ #--------------------------------------------------------------------------
53
+ # * Update Frame (Basic)
54
+ #--------------------------------------------------------------------------
55
+ def update_basic
56
+ super
57
+ $game_timer.update
58
+ $game_troop.update
59
+ @spriteset.update
60
+ update_info_viewport
61
+ update_message_open
62
+ end
63
+ #--------------------------------------------------------------------------
64
+ # * Update Frame (for Wait)
65
+ #--------------------------------------------------------------------------
66
+ def update_for_wait
67
+ update_basic
68
+ end
69
+ #--------------------------------------------------------------------------
70
+ # * Wait
71
+ #--------------------------------------------------------------------------
72
+ def wait(duration)
73
+ duration.times {|i| update_for_wait if i < duration / 2 || !show_fast? }
74
+ end
75
+ #--------------------------------------------------------------------------
76
+ # * Determine if Fast Forward
77
+ #--------------------------------------------------------------------------
78
+ def show_fast?
79
+ Input.press?(:A) || Input.press?(:C)
80
+ end
81
+ #--------------------------------------------------------------------------
82
+ # * Wait (No Fast Forward)
83
+ #--------------------------------------------------------------------------
84
+ def abs_wait(duration)
85
+ duration.times {|i| update_for_wait }
86
+ end
87
+ #--------------------------------------------------------------------------
88
+ # * Short Wait (No Fast Forward)
89
+ #--------------------------------------------------------------------------
90
+ def abs_wait_short
91
+ abs_wait(15)
92
+ end
93
+ #--------------------------------------------------------------------------
94
+ # * Wait Until Message Display has Finished
95
+ #--------------------------------------------------------------------------
96
+ def wait_for_message
97
+ @message_window.update
98
+ update_for_wait while $game_message.visible
99
+ end
100
+ #--------------------------------------------------------------------------
101
+ # * Wait Until Animation Display has Finished
102
+ #--------------------------------------------------------------------------
103
+ def wait_for_animation
104
+ update_for_wait
105
+ update_for_wait while @spriteset.animation?
106
+ end
107
+ #--------------------------------------------------------------------------
108
+ # * Wait Until Effect Execution Ends
109
+ #--------------------------------------------------------------------------
110
+ def wait_for_effect
111
+ update_for_wait
112
+ update_for_wait while @spriteset.effect?
113
+ end
114
+ #--------------------------------------------------------------------------
115
+ # * Update Information Display Viewport
116
+ #--------------------------------------------------------------------------
117
+ def update_info_viewport
118
+ move_info_viewport(0) if @party_command_window.active
119
+ move_info_viewport(128) if @actor_command_window.active
120
+ move_info_viewport(64) if BattleManager.in_turn?
121
+ end
122
+ #--------------------------------------------------------------------------
123
+ # * Move Information Display Viewport
124
+ #--------------------------------------------------------------------------
125
+ def move_info_viewport(ox)
126
+ current_ox = @info_viewport.ox
127
+ @info_viewport.ox = [ox, current_ox + 16].min if current_ox < ox
128
+ @info_viewport.ox = [ox, current_ox - 16].max if current_ox > ox
129
+ end
130
+ #--------------------------------------------------------------------------
131
+ # * Update Processing for Opening Message Window
132
+ # Set openness to 0 until the status window and so on are finished closing.
133
+ #--------------------------------------------------------------------------
134
+ def update_message_open
135
+ if $game_message.busy? && !@status_window.close?
136
+ @message_window.openness = 0
137
+ @status_window.close
138
+ @party_command_window.close
139
+ @actor_command_window.close
140
+ end
141
+ end
142
+ #--------------------------------------------------------------------------
143
+ # * Create Sprite Set
144
+ #--------------------------------------------------------------------------
145
+ def create_spriteset
146
+ @spriteset = Spriteset_Battle.new
147
+ end
148
+ #--------------------------------------------------------------------------
149
+ # * Free Sprite Set
150
+ #--------------------------------------------------------------------------
151
+ def dispose_spriteset
152
+ @spriteset.dispose
153
+ end
154
+ #--------------------------------------------------------------------------
155
+ # * Create All Windows
156
+ #--------------------------------------------------------------------------
157
+ def create_all_windows
158
+ create_message_window
159
+ create_scroll_text_window
160
+ create_log_window
161
+ create_status_window
162
+ create_info_viewport
163
+ create_party_command_window
164
+ create_actor_command_window
165
+ create_help_window
166
+ create_skill_window
167
+ create_item_window
168
+ create_actor_window
169
+ create_enemy_window
170
+ end
171
+ #--------------------------------------------------------------------------
172
+ # * Create Message Window
173
+ #--------------------------------------------------------------------------
174
+ def create_message_window
175
+ @message_window = Window_Message.new
176
+ end
177
+ #--------------------------------------------------------------------------
178
+ # * Create Scrolling Text Window
179
+ #--------------------------------------------------------------------------
180
+ def create_scroll_text_window
181
+ @scroll_text_window = Window_ScrollText.new
182
+ end
183
+ #--------------------------------------------------------------------------
184
+ # * Create Log Window
185
+ #--------------------------------------------------------------------------
186
+ def create_log_window
187
+ @log_window = Window_BattleLog.new
188
+ @log_window.method_wait = method(:wait)
189
+ @log_window.method_wait_for_effect = method(:wait_for_effect)
190
+ end
191
+ #--------------------------------------------------------------------------
192
+ # * Create Status Window
193
+ #--------------------------------------------------------------------------
194
+ def create_status_window
195
+ @status_window = Window_BattleStatus.new
196
+ @status_window.x = 128
197
+ end
198
+ #--------------------------------------------------------------------------
199
+ # * Create Information Display Viewport
200
+ #--------------------------------------------------------------------------
201
+ def create_info_viewport
202
+ @info_viewport = Viewport.new
203
+ @info_viewport.rect.y = Graphics.height - @status_window.height
204
+ @info_viewport.rect.height = @status_window.height
205
+ @info_viewport.z = 100
206
+ @info_viewport.ox = 64
207
+ @status_window.viewport = @info_viewport
208
+ end
209
+ #--------------------------------------------------------------------------
210
+ # * Create Party Commands Window
211
+ #--------------------------------------------------------------------------
212
+ def create_party_command_window
213
+ @party_command_window = Window_PartyCommand.new
214
+ @party_command_window.viewport = @info_viewport
215
+ @party_command_window.set_handler(:fight, method(:command_fight))
216
+ @party_command_window.set_handler(:escape, method(:command_escape))
217
+ @party_command_window.unselect
218
+ end
219
+ #--------------------------------------------------------------------------
220
+ # * Create Actor Commands Window
221
+ #--------------------------------------------------------------------------
222
+ def create_actor_command_window
223
+ @actor_command_window = Window_ActorCommand.new
224
+ @actor_command_window.viewport = @info_viewport
225
+ @actor_command_window.set_handler(:attack, method(:command_attack))
226
+ @actor_command_window.set_handler(:skill, method(:command_skill))
227
+ @actor_command_window.set_handler(:guard, method(:command_guard))
228
+ @actor_command_window.set_handler(:item, method(:command_item))
229
+ @actor_command_window.set_handler(:cancel, method(:prior_command))
230
+ @actor_command_window.x = Graphics.width
231
+ end
232
+ #--------------------------------------------------------------------------
233
+ # * Create Help Window
234
+ #--------------------------------------------------------------------------
235
+ def create_help_window
236
+ @help_window = Window_Help.new
237
+ @help_window.visible = false
238
+ end
239
+ #--------------------------------------------------------------------------
240
+ # * Create Skill Window
241
+ #--------------------------------------------------------------------------
242
+ def create_skill_window
243
+ @skill_window = Window_BattleSkill.new(@help_window, @info_viewport)
244
+ @skill_window.set_handler(:ok, method(:on_skill_ok))
245
+ @skill_window.set_handler(:cancel, method(:on_skill_cancel))
246
+ end
247
+ #--------------------------------------------------------------------------
248
+ # * Create Item Window
249
+ #--------------------------------------------------------------------------
250
+ def create_item_window
251
+ @item_window = Window_BattleItem.new(@help_window, @info_viewport)
252
+ @item_window.set_handler(:ok, method(:on_item_ok))
253
+ @item_window.set_handler(:cancel, method(:on_item_cancel))
254
+ end
255
+ #--------------------------------------------------------------------------
256
+ # * Create Actor Window
257
+ #--------------------------------------------------------------------------
258
+ def create_actor_window
259
+ @actor_window = Window_BattleActor.new(@info_viewport)
260
+ @actor_window.set_handler(:ok, method(:on_actor_ok))
261
+ @actor_window.set_handler(:cancel, method(:on_actor_cancel))
262
+ end
263
+ #--------------------------------------------------------------------------
264
+ # * Create Enemy Window
265
+ #--------------------------------------------------------------------------
266
+ def create_enemy_window
267
+ @enemy_window = Window_BattleEnemy.new(@info_viewport)
268
+ @enemy_window.set_handler(:ok, method(:on_enemy_ok))
269
+ @enemy_window.set_handler(:cancel, method(:on_enemy_cancel))
270
+ end
271
+ #--------------------------------------------------------------------------
272
+ # * Update Status Window Information
273
+ #--------------------------------------------------------------------------
274
+ def refresh_status
275
+ @status_window.refresh
276
+ end
277
+ #--------------------------------------------------------------------------
278
+ # * To Next Command Input
279
+ #--------------------------------------------------------------------------
280
+ def next_command
281
+ if BattleManager.next_command
282
+ start_actor_command_selection
283
+ else
284
+ turn_start
285
+ end
286
+ end
287
+ #--------------------------------------------------------------------------
288
+ # * To Previous Command Input
289
+ #--------------------------------------------------------------------------
290
+ def prior_command
291
+ if BattleManager.prior_command
292
+ start_actor_command_selection
293
+ else
294
+ start_party_command_selection
295
+ end
296
+ end
297
+ #--------------------------------------------------------------------------
298
+ # * Start Party Command Selection
299
+ #--------------------------------------------------------------------------
300
+ def start_party_command_selection
301
+ unless scene_changing?
302
+ refresh_status
303
+ @status_window.unselect
304
+ @status_window.open
305
+ if BattleManager.input_start
306
+ @actor_command_window.close
307
+ @party_command_window.setup
308
+ else
309
+ @party_command_window.deactivate
310
+ turn_start
311
+ end
312
+ end
313
+ end
314
+ #--------------------------------------------------------------------------
315
+ # * [Fight] Command
316
+ #--------------------------------------------------------------------------
317
+ def command_fight
318
+ next_command
319
+ end
320
+ #--------------------------------------------------------------------------
321
+ # * [Escape] Command
322
+ #--------------------------------------------------------------------------
323
+ def command_escape
324
+ turn_start unless BattleManager.process_escape
325
+ end
326
+ #--------------------------------------------------------------------------
327
+ # * Start Actor Command Selection
328
+ #--------------------------------------------------------------------------
329
+ def start_actor_command_selection
330
+ @status_window.select(BattleManager.actor.index)
331
+ @party_command_window.close
332
+ @actor_command_window.setup(BattleManager.actor)
333
+ end
334
+ #--------------------------------------------------------------------------
335
+ # * [Attack] Command
336
+ #--------------------------------------------------------------------------
337
+ def command_attack
338
+ BattleManager.actor.input.set_attack
339
+ select_enemy_selection
340
+ end
341
+ #--------------------------------------------------------------------------
342
+ # * [Skill] Command
343
+ #--------------------------------------------------------------------------
344
+ def command_skill
345
+ @skill_window.actor = BattleManager.actor
346
+ @skill_window.stype_id = @actor_command_window.current_ext
347
+ @skill_window.refresh
348
+ @skill_window.show.activate
349
+ end
350
+ #--------------------------------------------------------------------------
351
+ # * [Guard] Command
352
+ #--------------------------------------------------------------------------
353
+ def command_guard
354
+ BattleManager.actor.input.set_guard
355
+ next_command
356
+ end
357
+ #--------------------------------------------------------------------------
358
+ # * [Item] Command
359
+ #--------------------------------------------------------------------------
360
+ def command_item
361
+ @item_window.refresh
362
+ @item_window.show.activate
363
+ end
364
+ #--------------------------------------------------------------------------
365
+ # * Start Actor Selection
366
+ #--------------------------------------------------------------------------
367
+ def select_actor_selection
368
+ @actor_window.refresh
369
+ @actor_window.show.activate
370
+ end
371
+ #--------------------------------------------------------------------------
372
+ # * Actor [OK]
373
+ #--------------------------------------------------------------------------
374
+ def on_actor_ok
375
+ BattleManager.actor.input.target_index = @actor_window.index
376
+ @actor_window.hide
377
+ @skill_window.hide
378
+ @item_window.hide
379
+ next_command
380
+ end
381
+ #--------------------------------------------------------------------------
382
+ # * Actor [Cancel]
383
+ #--------------------------------------------------------------------------
384
+ def on_actor_cancel
385
+ @actor_window.hide
386
+ case @actor_command_window.current_symbol
387
+ when :skill
388
+ @skill_window.activate
389
+ when :item
390
+ @item_window.activate
391
+ end
392
+ end
393
+ #--------------------------------------------------------------------------
394
+ # * Start Enemy Selection
395
+ #--------------------------------------------------------------------------
396
+ def select_enemy_selection
397
+ @enemy_window.refresh
398
+ @enemy_window.show.activate
399
+ end
400
+ #--------------------------------------------------------------------------
401
+ # * Enemy [OK]
402
+ #--------------------------------------------------------------------------
403
+ def on_enemy_ok
404
+ BattleManager.actor.input.target_index = @enemy_window.enemy.index
405
+ @enemy_window.hide
406
+ @skill_window.hide
407
+ @item_window.hide
408
+ next_command
409
+ end
410
+ #--------------------------------------------------------------------------
411
+ # * Enemy [Cancel]
412
+ #--------------------------------------------------------------------------
413
+ def on_enemy_cancel
414
+ @enemy_window.hide
415
+ case @actor_command_window.current_symbol
416
+ when :attack
417
+ @actor_command_window.activate
418
+ when :skill
419
+ @skill_window.activate
420
+ when :item
421
+ @item_window.activate
422
+ end
423
+ end
424
+ #--------------------------------------------------------------------------
425
+ # * Skill [OK]
426
+ #--------------------------------------------------------------------------
427
+ def on_skill_ok
428
+ @skill = @skill_window.item
429
+ BattleManager.actor.input.set_skill(@skill.id)
430
+ BattleManager.actor.last_skill.object = @skill
431
+ if !@skill.need_selection?
432
+ @skill_window.hide
433
+ next_command
434
+ elsif @skill.for_opponent?
435
+ select_enemy_selection
436
+ else
437
+ select_actor_selection
438
+ end
439
+ end
440
+ #--------------------------------------------------------------------------
441
+ # * Skill [Cancel]
442
+ #--------------------------------------------------------------------------
443
+ def on_skill_cancel
444
+ @skill_window.hide
445
+ @actor_command_window.activate
446
+ end
447
+ #--------------------------------------------------------------------------
448
+ # * Item [OK]
449
+ #--------------------------------------------------------------------------
450
+ def on_item_ok
451
+ @item = @item_window.item
452
+ BattleManager.actor.input.set_item(@item.id)
453
+ if !@item.need_selection?
454
+ @item_window.hide
455
+ next_command
456
+ elsif @item.for_opponent?
457
+ select_enemy_selection
458
+ else
459
+ select_actor_selection
460
+ end
461
+ $game_party.last_item.object = @item
462
+ end
463
+ #--------------------------------------------------------------------------
464
+ # * Item [Cancel]
465
+ #--------------------------------------------------------------------------
466
+ def on_item_cancel
467
+ @item_window.hide
468
+ @actor_command_window.activate
469
+ end
470
+ #--------------------------------------------------------------------------
471
+ # * Battle Start
472
+ #--------------------------------------------------------------------------
473
+ def battle_start
474
+ BattleManager.battle_start
475
+ process_event
476
+ start_party_command_selection
477
+ end
478
+ #--------------------------------------------------------------------------
479
+ # * Start Turn
480
+ #--------------------------------------------------------------------------
481
+ def turn_start
482
+ @party_command_window.close
483
+ @actor_command_window.close
484
+ @status_window.unselect
485
+ @subject = nil
486
+ BattleManager.turn_start
487
+ @log_window.wait
488
+ @log_window.clear
489
+ end
490
+ #--------------------------------------------------------------------------
491
+ # * End Turn
492
+ #--------------------------------------------------------------------------
493
+ def turn_end
494
+ all_battle_members.each do |battler|
495
+ battler.on_turn_end
496
+ refresh_status
497
+ @log_window.display_auto_affected_status(battler)
498
+ @log_window.wait_and_clear
499
+ end
500
+ BattleManager.turn_end
501
+ process_event
502
+ start_party_command_selection
503
+ end
504
+ #--------------------------------------------------------------------------
505
+ # * Get All Battle Members Including Enemies and Allies
506
+ #--------------------------------------------------------------------------
507
+ def all_battle_members
508
+ $game_party.members + $game_troop.members
509
+ end
510
+ #--------------------------------------------------------------------------
511
+ # * Event Processing
512
+ #--------------------------------------------------------------------------
513
+ def process_event
514
+ while !scene_changing?
515
+ $game_troop.interpreter.update
516
+ $game_troop.setup_battle_event
517
+ wait_for_message
518
+ wait_for_effect if $game_troop.all_dead?
519
+ process_forced_action
520
+ BattleManager.judge_win_loss
521
+ break unless $game_troop.interpreter.running?
522
+ update_for_wait
523
+ end
524
+ end
525
+ #--------------------------------------------------------------------------
526
+ # * Forced Action Processing
527
+ #--------------------------------------------------------------------------
528
+ def process_forced_action
529
+ if BattleManager.action_forced?
530
+ last_subject = @subject
531
+ @subject = BattleManager.action_forced_battler
532
+ BattleManager.clear_action_force
533
+ process_action
534
+ @subject = last_subject
535
+ end
536
+ end
537
+ #--------------------------------------------------------------------------
538
+ # * Battle Action Processing
539
+ #--------------------------------------------------------------------------
540
+ def process_action
541
+ return if scene_changing?
542
+ if !@subject || !@subject.current_action
543
+ @subject = BattleManager.next_subject
544
+ end
545
+ return turn_end unless @subject
546
+ if @subject.current_action
547
+ @subject.current_action.prepare
548
+ if @subject.current_action.valid?
549
+ @status_window.open
550
+ execute_action
551
+ end
552
+ @subject.remove_current_action
553
+ end
554
+ process_action_end unless @subject.current_action
555
+ end
556
+ #--------------------------------------------------------------------------
557
+ # * Processing at End of Action
558
+ #--------------------------------------------------------------------------
559
+ def process_action_end
560
+ @subject.on_action_end
561
+ refresh_status
562
+ @log_window.display_auto_affected_status(@subject)
563
+ @log_window.wait_and_clear
564
+ @log_window.display_current_state(@subject)
565
+ @log_window.wait_and_clear
566
+ BattleManager.judge_win_loss
567
+ end
568
+ #--------------------------------------------------------------------------
569
+ # * Execute Battle Actions
570
+ #--------------------------------------------------------------------------
571
+ def execute_action
572
+ @subject.sprite_effect_type = :whiten
573
+ use_item
574
+ @log_window.wait_and_clear
575
+ end
576
+ #--------------------------------------------------------------------------
577
+ # * Use Skill/Item
578
+ #--------------------------------------------------------------------------
579
+ def use_item
580
+ item = @subject.current_action.item
581
+ @log_window.display_use_item(@subject, item)
582
+ @subject.use_item(item)
583
+ refresh_status
584
+ targets = @subject.current_action.make_targets.compact
585
+ show_animation(targets, item.animation_id)
586
+ targets.each {|target| item.repeats.times { invoke_item(target, item) } }
587
+ end
588
+ #--------------------------------------------------------------------------
589
+ # * Invoke Skill/Item
590
+ #--------------------------------------------------------------------------
591
+ def invoke_item(target, item)
592
+ if rand < target.item_cnt(@subject, item)
593
+ invoke_counter_attack(target, item)
594
+ elsif rand < target.item_mrf(@subject, item)
595
+ invoke_magic_reflection(target, item)
596
+ else
597
+ apply_item_effects(apply_substitute(target, item), item)
598
+ end
599
+ @subject.last_target_index = target.index
600
+ end
601
+ #--------------------------------------------------------------------------
602
+ # * Apply Skill/Item Effect
603
+ #--------------------------------------------------------------------------
604
+ def apply_item_effects(target, item)
605
+ target.item_apply(@subject, item)
606
+ refresh_status
607
+ @log_window.display_action_results(target, item)
608
+ end
609
+ #--------------------------------------------------------------------------
610
+ # * Invoke Counterattack
611
+ #--------------------------------------------------------------------------
612
+ def invoke_counter_attack(target, item)
613
+ @log_window.display_counter(target, item)
614
+ attack_skill = $data_skills[target.attack_skill_id]
615
+ @subject.item_apply(target, attack_skill)
616
+ refresh_status
617
+ @log_window.display_action_results(@subject, attack_skill)
618
+ end
619
+ #--------------------------------------------------------------------------
620
+ # * Invoke Magic Reflection
621
+ #--------------------------------------------------------------------------
622
+ def invoke_magic_reflection(target, item)
623
+ @subject.magic_reflection = true
624
+ @log_window.display_reflection(target, item)
625
+ apply_item_effects(@subject, item)
626
+ @subject.magic_reflection = false
627
+ end
628
+ #--------------------------------------------------------------------------
629
+ # * Apply Substitute
630
+ #--------------------------------------------------------------------------
631
+ def apply_substitute(target, item)
632
+ if check_substitute(target, item)
633
+ substitute = target.friends_unit.substitute_battler
634
+ if substitute && target != substitute
635
+ @log_window.display_substitute(substitute, target)
636
+ return substitute
637
+ end
638
+ end
639
+ target
640
+ end
641
+ #--------------------------------------------------------------------------
642
+ # * Check Substitute Condition
643
+ #--------------------------------------------------------------------------
644
+ def check_substitute(target, item)
645
+ target.hp < target.mhp / 4 && (!item || !item.certain?)
646
+ end
647
+ #--------------------------------------------------------------------------
648
+ # * Show Animation
649
+ # targets : Target array
650
+ # animation_id : Animation ID (-1: Same as normal attack)
651
+ #--------------------------------------------------------------------------
652
+ def show_animation(targets, animation_id)
653
+ if animation_id < 0
654
+ show_attack_animation(targets)
655
+ else
656
+ show_normal_animation(targets, animation_id)
657
+ end
658
+ @log_window.wait
659
+ wait_for_animation
660
+ end
661
+ #--------------------------------------------------------------------------
662
+ # * Show Attack Animation
663
+ # targets : Target array
664
+ # Account for dual wield in the case of an actor (flip left hand weapon
665
+ # display). If enemy, play the [Enemy Attack] SE and wait briefly.
666
+ #--------------------------------------------------------------------------
667
+ def show_attack_animation(targets)
668
+ if @subject.actor?
669
+ show_normal_animation(targets, @subject.atk_animation_id1, false)
670
+ show_normal_animation(targets, @subject.atk_animation_id2, true)
671
+ else
672
+ Sound.play_enemy_attack
673
+ abs_wait_short
674
+ end
675
+ end
676
+ #--------------------------------------------------------------------------
677
+ # * Show Normal Animation
678
+ # targets : Target array
679
+ # animation_id : Animation ID
680
+ # mirror : Flip horizontal
681
+ #--------------------------------------------------------------------------
682
+ def show_normal_animation(targets, animation_id, mirror = false)
683
+ animation = $data_animations[animation_id]
684
+ if animation
685
+ targets.each do |target|
686
+ target.animation_id = animation_id
687
+ target.animation_mirror = mirror
688
+ abs_wait_short unless animation.to_screen?
689
+ end
690
+ abs_wait_short if animation.to_screen?
691
+ end
692
+ end
693
+ end