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,43 @@
1
+ #==============================================================================
2
+ # ** Window_MenuActor
3
+ #------------------------------------------------------------------------------
4
+ # This window is for selecting actors that will be the target of item or
5
+ # skill use.
6
+ #==============================================================================
7
+
8
+ class Window_MenuActor < Window_MenuStatus
9
+ #--------------------------------------------------------------------------
10
+ # * Object Initialization
11
+ #--------------------------------------------------------------------------
12
+ def initialize
13
+ super(0, 0)
14
+ self.visible = false
15
+ end
16
+ #--------------------------------------------------------------------------
17
+ # * Processing When OK Button Is Pressed
18
+ #--------------------------------------------------------------------------
19
+ def process_ok
20
+ $game_party.target_actor = $game_party.members[index] unless @cursor_all
21
+ call_ok_handler
22
+ end
23
+ #--------------------------------------------------------------------------
24
+ # * Restore Previous Selection Position
25
+ #--------------------------------------------------------------------------
26
+ def select_last
27
+ select($game_party.target_actor.index || 0)
28
+ end
29
+ #--------------------------------------------------------------------------
30
+ # * Set Position of Cursor for Item
31
+ #--------------------------------------------------------------------------
32
+ def select_for_item(item)
33
+ @cursor_fix = item.for_user?
34
+ @cursor_all = item.for_all?
35
+ if @cursor_fix
36
+ select($game_party.menu_actor.index)
37
+ elsif @cursor_all
38
+ select(0)
39
+ else
40
+ select_last
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,106 @@
1
+ #==============================================================================
2
+ # ** Window_MenuCommand
3
+ #------------------------------------------------------------------------------
4
+ # This command window appears on the menu screen.
5
+ #==============================================================================
6
+
7
+ class Window_MenuCommand < Window_Command
8
+ #--------------------------------------------------------------------------
9
+ # * Initialize Command Selection Position (Class Method)
10
+ #--------------------------------------------------------------------------
11
+ def self.init_command_position
12
+ @@last_command_symbol = nil
13
+ end
14
+ #--------------------------------------------------------------------------
15
+ # * Object Initialization
16
+ #--------------------------------------------------------------------------
17
+ def initialize
18
+ super(0, 0)
19
+ select_last
20
+ end
21
+ #--------------------------------------------------------------------------
22
+ # * Get Window Width
23
+ #--------------------------------------------------------------------------
24
+ def window_width
25
+ return 160
26
+ end
27
+ #--------------------------------------------------------------------------
28
+ # * Get Number of Lines to Show
29
+ #--------------------------------------------------------------------------
30
+ def visible_line_number
31
+ item_max
32
+ end
33
+ #--------------------------------------------------------------------------
34
+ # * Create Command List
35
+ #--------------------------------------------------------------------------
36
+ def make_command_list
37
+ add_main_commands
38
+ add_formation_command
39
+ add_original_commands
40
+ add_save_command
41
+ add_game_end_command
42
+ end
43
+ #--------------------------------------------------------------------------
44
+ # * Add Main Commands to List
45
+ #--------------------------------------------------------------------------
46
+ def add_main_commands
47
+ add_command(Vocab::item, :item, main_commands_enabled)
48
+ add_command(Vocab::skill, :skill, main_commands_enabled)
49
+ add_command(Vocab::equip, :equip, main_commands_enabled)
50
+ add_command(Vocab::status, :status, main_commands_enabled)
51
+ end
52
+ #--------------------------------------------------------------------------
53
+ # * Add Formation to Command List
54
+ #--------------------------------------------------------------------------
55
+ def add_formation_command
56
+ add_command(Vocab::formation, :formation, formation_enabled)
57
+ end
58
+ #--------------------------------------------------------------------------
59
+ # * For Adding Original Commands
60
+ #--------------------------------------------------------------------------
61
+ def add_original_commands
62
+ end
63
+ #--------------------------------------------------------------------------
64
+ # * Add Save to Command List
65
+ #--------------------------------------------------------------------------
66
+ def add_save_command
67
+ add_command(Vocab::save, :save, save_enabled)
68
+ end
69
+ #--------------------------------------------------------------------------
70
+ # * Add Exit Game to Command List
71
+ #--------------------------------------------------------------------------
72
+ def add_game_end_command
73
+ add_command(Vocab::game_end, :game_end)
74
+ end
75
+ #--------------------------------------------------------------------------
76
+ # * Get Activation State of Main Commands
77
+ #--------------------------------------------------------------------------
78
+ def main_commands_enabled
79
+ $game_party.exists
80
+ end
81
+ #--------------------------------------------------------------------------
82
+ # * Get Activation State of Formation
83
+ #--------------------------------------------------------------------------
84
+ def formation_enabled
85
+ $game_party.members.size >= 2 && !$game_system.formation_disabled
86
+ end
87
+ #--------------------------------------------------------------------------
88
+ # * Get Activation State of Save
89
+ #--------------------------------------------------------------------------
90
+ def save_enabled
91
+ !$game_system.save_disabled
92
+ end
93
+ #--------------------------------------------------------------------------
94
+ # * Processing When OK Button Is Pressed
95
+ #--------------------------------------------------------------------------
96
+ def process_ok
97
+ @@last_command_symbol = current_symbol
98
+ super
99
+ end
100
+ #--------------------------------------------------------------------------
101
+ # * Restore Previous Selection Position
102
+ #--------------------------------------------------------------------------
103
+ def select_last
104
+ select_symbol(@@last_command_symbol)
105
+ end
106
+ end
@@ -0,0 +1,85 @@
1
+ #==============================================================================
2
+ # ** Window_MenuStatus
3
+ #------------------------------------------------------------------------------
4
+ # This window displays party member status on the menu screen.
5
+ #==============================================================================
6
+
7
+ class Window_MenuStatus < Window_Selectable
8
+ #--------------------------------------------------------------------------
9
+ # * Public Instance Variables
10
+ #--------------------------------------------------------------------------
11
+ attr_reader :pending_index # Pending position (for formation)
12
+ #--------------------------------------------------------------------------
13
+ # * Object Initialization
14
+ #--------------------------------------------------------------------------
15
+ def initialize(x, y)
16
+ super(x, y, window_width, window_height)
17
+ @pending_index = -1
18
+ refresh
19
+ end
20
+ #--------------------------------------------------------------------------
21
+ # * Get Window Width
22
+ #--------------------------------------------------------------------------
23
+ def window_width
24
+ Graphics.width - 160
25
+ end
26
+ #--------------------------------------------------------------------------
27
+ # * Get Window Height
28
+ #--------------------------------------------------------------------------
29
+ def window_height
30
+ Graphics.height
31
+ end
32
+ #--------------------------------------------------------------------------
33
+ # * Get Number of Items
34
+ #--------------------------------------------------------------------------
35
+ def item_max
36
+ $game_party.members.size
37
+ end
38
+ #--------------------------------------------------------------------------
39
+ # * Get Item Height
40
+ #--------------------------------------------------------------------------
41
+ def item_height
42
+ (height - standard_padding * 2) / 4
43
+ end
44
+ #--------------------------------------------------------------------------
45
+ # * Draw Item
46
+ #--------------------------------------------------------------------------
47
+ def draw_item(index)
48
+ actor = $game_party.members[index]
49
+ enabled = $game_party.battle_members.include?(actor)
50
+ rect = item_rect(index)
51
+ draw_item_background(index)
52
+ draw_actor_face(actor, rect.x + 1, rect.y + 1, enabled)
53
+ draw_actor_simple_status(actor, rect.x + 108, rect.y + line_height / 2)
54
+ end
55
+ #--------------------------------------------------------------------------
56
+ # * Draw Background for Item
57
+ #--------------------------------------------------------------------------
58
+ def draw_item_background(index)
59
+ if index == @pending_index
60
+ contents.fill_rect(item_rect(index), pending_color)
61
+ end
62
+ end
63
+ #--------------------------------------------------------------------------
64
+ # * Processing When OK Button Is Pressed
65
+ #--------------------------------------------------------------------------
66
+ def process_ok
67
+ super
68
+ $game_party.menu_actor = $game_party.members[index]
69
+ end
70
+ #--------------------------------------------------------------------------
71
+ # * Restore Previous Selection Position
72
+ #--------------------------------------------------------------------------
73
+ def select_last
74
+ select($game_party.menu_actor.index || 0)
75
+ end
76
+ #--------------------------------------------------------------------------
77
+ # * Set Pending Position (for Formation)
78
+ #--------------------------------------------------------------------------
79
+ def pending_index=(index)
80
+ last_pending_index = @pending_index
81
+ @pending_index = index
82
+ redraw_item(@pending_index)
83
+ redraw_item(last_pending_index)
84
+ end
85
+ end
@@ -0,0 +1,397 @@
1
+ #==============================================================================
2
+ # ** Window_Message
3
+ #------------------------------------------------------------------------------
4
+ # This message window is used to display text.
5
+ #==============================================================================
6
+
7
+ class Window_Message < Window_Base
8
+ #--------------------------------------------------------------------------
9
+ # * Object Initialization
10
+ #--------------------------------------------------------------------------
11
+ def initialize
12
+ super(0, 0, window_width, window_height)
13
+ self.z = 200
14
+ self.openness = 0
15
+ create_all_windows
16
+ create_back_bitmap
17
+ create_back_sprite
18
+ clear_instance_variables
19
+ end
20
+ #--------------------------------------------------------------------------
21
+ # * Get Window Width
22
+ #--------------------------------------------------------------------------
23
+ def window_width
24
+ Graphics.width
25
+ end
26
+ #--------------------------------------------------------------------------
27
+ # * Get Window Height
28
+ #--------------------------------------------------------------------------
29
+ def window_height
30
+ fitting_height(visible_line_number)
31
+ end
32
+ #--------------------------------------------------------------------------
33
+ # * Clear Instance Variables
34
+ #--------------------------------------------------------------------------
35
+ def clear_instance_variables
36
+ @fiber = nil # Fiber
37
+ @background = 0 # Background type
38
+ @position = 2 # Display position
39
+ clear_flags
40
+ end
41
+ #--------------------------------------------------------------------------
42
+ # * Clear Flag
43
+ #--------------------------------------------------------------------------
44
+ def clear_flags
45
+ @show_fast = false # Fast forward flag
46
+ @line_show_fast = false # Fast forward by line flag
47
+ @pause_skip = false # Input standby omission flag
48
+ end
49
+ #--------------------------------------------------------------------------
50
+ # * Get Number of Lines to Show
51
+ #--------------------------------------------------------------------------
52
+ def visible_line_number
53
+ return 4
54
+ end
55
+ #--------------------------------------------------------------------------
56
+ # * Free
57
+ #--------------------------------------------------------------------------
58
+ def dispose
59
+ super
60
+ dispose_all_windows
61
+ dispose_back_bitmap
62
+ dispose_back_sprite
63
+ end
64
+ #--------------------------------------------------------------------------
65
+ # * Frame Update
66
+ #--------------------------------------------------------------------------
67
+ def update
68
+ super
69
+ update_all_windows
70
+ update_back_sprite
71
+ update_fiber
72
+ end
73
+ #--------------------------------------------------------------------------
74
+ # * Update Fiber
75
+ #--------------------------------------------------------------------------
76
+ def update_fiber
77
+ if @fiber
78
+ @fiber.resume
79
+ elsif $game_message.busy? && !$game_message.scroll_mode
80
+ @fiber = Fiber.new { fiber_main }
81
+ @fiber.resume
82
+ else
83
+ $game_message.visible = false
84
+ end
85
+ end
86
+ #--------------------------------------------------------------------------
87
+ # * Create All Windows
88
+ #--------------------------------------------------------------------------
89
+ def create_all_windows
90
+ @gold_window = Window_Gold.new
91
+ @gold_window.x = Graphics.width - @gold_window.width
92
+ @gold_window.y = 0
93
+ @gold_window.openness = 0
94
+ @choice_window = Window_ChoiceList.new(self)
95
+ @number_window = Window_NumberInput.new(self)
96
+ @item_window = Window_KeyItem.new(self)
97
+ end
98
+ #--------------------------------------------------------------------------
99
+ # * Create Background Bitmap
100
+ #--------------------------------------------------------------------------
101
+ def create_back_bitmap
102
+ @back_bitmap = Bitmap.new(width, height)
103
+ rect1 = Rect.new(0, 0, width, 12)
104
+ rect2 = Rect.new(0, 12, width, height - 24)
105
+ rect3 = Rect.new(0, height - 12, width, 12)
106
+ @back_bitmap.gradient_fill_rect(rect1, back_color2, back_color1, true)
107
+ @back_bitmap.fill_rect(rect2, back_color1)
108
+ @back_bitmap.gradient_fill_rect(rect3, back_color1, back_color2, true)
109
+ end
110
+ #--------------------------------------------------------------------------
111
+ # * Get Background Color 1
112
+ #--------------------------------------------------------------------------
113
+ def back_color1
114
+ Color.new(0, 0, 0, 160)
115
+ end
116
+ #--------------------------------------------------------------------------
117
+ # * Get Background Color 2
118
+ #--------------------------------------------------------------------------
119
+ def back_color2
120
+ Color.new(0, 0, 0, 0)
121
+ end
122
+ #--------------------------------------------------------------------------
123
+ # * Create Background Sprite
124
+ #--------------------------------------------------------------------------
125
+ def create_back_sprite
126
+ @back_sprite = Sprite.new
127
+ @back_sprite.bitmap = @back_bitmap
128
+ @back_sprite.visible = false
129
+ @back_sprite.z = z - 1
130
+ end
131
+ #--------------------------------------------------------------------------
132
+ # * Free All Windows
133
+ #--------------------------------------------------------------------------
134
+ def dispose_all_windows
135
+ @gold_window.dispose
136
+ @choice_window.dispose
137
+ @number_window.dispose
138
+ @item_window.dispose
139
+ end
140
+ #--------------------------------------------------------------------------
141
+ # * Free Background Bitmap
142
+ #--------------------------------------------------------------------------
143
+ def dispose_back_bitmap
144
+ @back_bitmap.dispose
145
+ end
146
+ #--------------------------------------------------------------------------
147
+ # * Free Background Sprite
148
+ #--------------------------------------------------------------------------
149
+ def dispose_back_sprite
150
+ @back_sprite.dispose
151
+ end
152
+ #--------------------------------------------------------------------------
153
+ # * Update All Windows
154
+ #--------------------------------------------------------------------------
155
+ def update_all_windows
156
+ @gold_window.update
157
+ @choice_window.update
158
+ @number_window.update
159
+ @item_window.update
160
+ end
161
+ #--------------------------------------------------------------------------
162
+ # * Update Background Sprite
163
+ #--------------------------------------------------------------------------
164
+ def update_back_sprite
165
+ @back_sprite.visible = (@background == 1)
166
+ @back_sprite.y = y
167
+ @back_sprite.opacity = openness
168
+ @back_sprite.update
169
+ end
170
+ #--------------------------------------------------------------------------
171
+ # * Main Processing of Fiber
172
+ #--------------------------------------------------------------------------
173
+ def fiber_main
174
+ $game_message.visible = true
175
+ update_background
176
+ update_placement
177
+ loop do
178
+ process_all_text if $game_message.has_text?
179
+ process_input
180
+ $game_message.clear
181
+ @gold_window.close
182
+ Fiber.yield
183
+ break unless text_continue?
184
+ end
185
+ close_and_wait
186
+ $game_message.visible = false
187
+ @fiber = nil
188
+ end
189
+ #--------------------------------------------------------------------------
190
+ # * Update Window Background
191
+ #--------------------------------------------------------------------------
192
+ def update_background
193
+ @background = $game_message.background
194
+ self.opacity = @background == 0 ? 255 : 0
195
+ end
196
+ #--------------------------------------------------------------------------
197
+ # * Update Window Position
198
+ #--------------------------------------------------------------------------
199
+ def update_placement
200
+ @position = $game_message.position
201
+ self.y = @position * (Graphics.height - height) / 2
202
+ @gold_window.y = y > 0 ? 0 : Graphics.height - @gold_window.height
203
+ end
204
+ #--------------------------------------------------------------------------
205
+ # * Process All Text
206
+ #--------------------------------------------------------------------------
207
+ def process_all_text
208
+ open_and_wait
209
+ text = convert_escape_characters($game_message.all_text)
210
+ pos = {}
211
+ new_page(text, pos)
212
+ process_character(text.slice!(0, 1), text, pos) until text.empty?
213
+ end
214
+ #--------------------------------------------------------------------------
215
+ # * Input Processing
216
+ #--------------------------------------------------------------------------
217
+ def process_input
218
+ if $game_message.choice?
219
+ input_choice
220
+ elsif $game_message.num_input?
221
+ input_number
222
+ elsif $game_message.item_choice?
223
+ input_item
224
+ else
225
+ input_pause unless @pause_skip
226
+ end
227
+ end
228
+ #--------------------------------------------------------------------------
229
+ # * Open Window and Wait for It to Fully Open
230
+ #--------------------------------------------------------------------------
231
+ def open_and_wait
232
+ open
233
+ Fiber.yield until open?
234
+ end
235
+ #--------------------------------------------------------------------------
236
+ # * Close Window and Wait for It to Fully Close
237
+ #--------------------------------------------------------------------------
238
+ def close_and_wait
239
+ close
240
+ Fiber.yield until all_close?
241
+ end
242
+ #--------------------------------------------------------------------------
243
+ # * Determine if All Windows Are Fully Closed
244
+ #--------------------------------------------------------------------------
245
+ def all_close?
246
+ close? && @choice_window.close? &&
247
+ @number_window.close? && @item_window.close?
248
+ end
249
+ #--------------------------------------------------------------------------
250
+ # * Determine Whether to Continue Displaying Text
251
+ #--------------------------------------------------------------------------
252
+ def text_continue?
253
+ $game_message.has_text? && !settings_changed?
254
+ end
255
+ #--------------------------------------------------------------------------
256
+ # * Determine if Background and Position Changed
257
+ #--------------------------------------------------------------------------
258
+ def settings_changed?
259
+ @background != $game_message.background ||
260
+ @position != $game_message.position
261
+ end
262
+ #--------------------------------------------------------------------------
263
+ # * Wait
264
+ #--------------------------------------------------------------------------
265
+ def wait(duration)
266
+ duration.times { Fiber.yield }
267
+ end
268
+ #--------------------------------------------------------------------------
269
+ # * Update Fast Forward Flag
270
+ #--------------------------------------------------------------------------
271
+ def update_show_fast
272
+ @show_fast = true if Input.trigger?(:C)
273
+ end
274
+ #--------------------------------------------------------------------------
275
+ # * Wait After Output of One Character
276
+ #--------------------------------------------------------------------------
277
+ def wait_for_one_character
278
+ update_show_fast
279
+ Fiber.yield unless @show_fast || @line_show_fast
280
+ end
281
+ #--------------------------------------------------------------------------
282
+ # * New Page
283
+ #--------------------------------------------------------------------------
284
+ def new_page(text, pos)
285
+ contents.clear
286
+ draw_face($game_message.face_name, $game_message.face_index, 0, 0)
287
+ reset_font_settings
288
+ pos[:x] = new_line_x
289
+ pos[:y] = 0
290
+ pos[:new_x] = new_line_x
291
+ pos[:height] = calc_line_height(text)
292
+ clear_flags
293
+ end
294
+ #--------------------------------------------------------------------------
295
+ # * Get New Line Position
296
+ #--------------------------------------------------------------------------
297
+ def new_line_x
298
+ $game_message.face_name.empty? ? 0 : 112
299
+ end
300
+ #--------------------------------------------------------------------------
301
+ # * Normal Character Processing
302
+ #--------------------------------------------------------------------------
303
+ def process_normal_character(c, pos)
304
+ super
305
+ wait_for_one_character
306
+ end
307
+ #--------------------------------------------------------------------------
308
+ # * New Line Character Processing
309
+ #--------------------------------------------------------------------------
310
+ def process_new_line(text, pos)
311
+ @line_show_fast = false
312
+ super
313
+ if need_new_page?(text, pos)
314
+ input_pause
315
+ new_page(text, pos)
316
+ end
317
+ end
318
+ #--------------------------------------------------------------------------
319
+ # * Determine if New Page Is Needed
320
+ #--------------------------------------------------------------------------
321
+ def need_new_page?(text, pos)
322
+ pos[:y] + pos[:height] > contents.height && !text.empty?
323
+ end
324
+ #--------------------------------------------------------------------------
325
+ # * New Page Character Processing
326
+ #--------------------------------------------------------------------------
327
+ def process_new_page(text, pos)
328
+ text.slice!(/^\n/)
329
+ input_pause
330
+ new_page(text, pos)
331
+ end
332
+ #--------------------------------------------------------------------------
333
+ # * Icon Drawing Process by Control Characters
334
+ #--------------------------------------------------------------------------
335
+ def process_draw_icon(icon_index, pos)
336
+ super
337
+ wait_for_one_character
338
+ end
339
+ #--------------------------------------------------------------------------
340
+ # * Control Character Processing
341
+ # code : the core of the control character
342
+ # e.g. "C" in the case of the control character \C[1].
343
+ # text : character string buffer in drawing processing (destructive)
344
+ # pos : draw position {:x, :y, :new_x, :height}
345
+ #--------------------------------------------------------------------------
346
+ def process_escape_character(code, text, pos)
347
+ case code.upcase
348
+ when '$'
349
+ @gold_window.open
350
+ when '.'
351
+ wait(15)
352
+ when '|'
353
+ wait(60)
354
+ when '!'
355
+ input_pause
356
+ when '>'
357
+ @line_show_fast = true
358
+ when '<'
359
+ @line_show_fast = false
360
+ when '^'
361
+ @pause_skip = true
362
+ else
363
+ super
364
+ end
365
+ end
366
+ #--------------------------------------------------------------------------
367
+ # * Input Pause Processing
368
+ #--------------------------------------------------------------------------
369
+ def input_pause
370
+ self.pause = true
371
+ wait(10)
372
+ Fiber.yield until Input.trigger?(:B) || Input.trigger?(:C)
373
+ Input.update
374
+ self.pause = false
375
+ end
376
+ #--------------------------------------------------------------------------
377
+ # * Choice Input Processing
378
+ #--------------------------------------------------------------------------
379
+ def input_choice
380
+ @choice_window.start
381
+ Fiber.yield while @choice_window.active
382
+ end
383
+ #--------------------------------------------------------------------------
384
+ # * Number Input Processing
385
+ #--------------------------------------------------------------------------
386
+ def input_number
387
+ @number_window.start
388
+ Fiber.yield while @number_window.active
389
+ end
390
+ #--------------------------------------------------------------------------
391
+ # * Item Selection Processing
392
+ #--------------------------------------------------------------------------
393
+ def input_item
394
+ @item_window.start
395
+ Fiber.yield while @item_window.active
396
+ end
397
+ end