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,396 @@
1
+ #==============================================================================
2
+ # ** Game_Character
3
+ #------------------------------------------------------------------------------
4
+ # A character class with mainly movement route and other such processing
5
+ # added. It is used as a super class of Game_Player, Game_Follower,
6
+ # GameVehicle, and Game_Event.
7
+ #==============================================================================
8
+
9
+ class Game_Character < Game_CharacterBase
10
+ #--------------------------------------------------------------------------
11
+ # * Constants
12
+ #--------------------------------------------------------------------------
13
+ ROUTE_END = 0 # End of Move Route
14
+ ROUTE_MOVE_DOWN = 1 # Move Down
15
+ ROUTE_MOVE_LEFT = 2 # Move Left
16
+ ROUTE_MOVE_RIGHT = 3 # Move Right
17
+ ROUTE_MOVE_UP = 4 # Move Up
18
+ ROUTE_MOVE_LOWER_L = 5 # Move Lower Left
19
+ ROUTE_MOVE_LOWER_R = 6 # Move Lower Right
20
+ ROUTE_MOVE_UPPER_L = 7 # Move Upper Left
21
+ ROUTE_MOVE_UPPER_R = 8 # Move Upper Right
22
+ ROUTE_MOVE_RANDOM = 9 # Move at Random
23
+ ROUTE_MOVE_TOWARD = 10 # Move toward Player
24
+ ROUTE_MOVE_AWAY = 11 # Move away from Player
25
+ ROUTE_MOVE_FORWARD = 12 # 1 Step Forward
26
+ ROUTE_MOVE_BACKWARD = 13 # 1 Step Backward
27
+ ROUTE_JUMP = 14 # Jump
28
+ ROUTE_WAIT = 15 # Wait
29
+ ROUTE_TURN_DOWN = 16 # Turn Down
30
+ ROUTE_TURN_LEFT = 17 # Turn Left
31
+ ROUTE_TURN_RIGHT = 18 # Turn Right
32
+ ROUTE_TURN_UP = 19 # Turn Up
33
+ ROUTE_TURN_90D_R = 20 # Turn 90 Degrees Right
34
+ ROUTE_TURN_90D_L = 21 # Turn 90 Degrees Left
35
+ ROUTE_TURN_180D = 22 # Turn 180 Degrees
36
+ ROUTE_TURN_90D_R_L = 23 # Turn 90 Degrees Right/Left
37
+ ROUTE_TURN_RANDOM = 24 # Turn at Random
38
+ ROUTE_TURN_TOWARD = 25 # Turn toward player
39
+ ROUTE_TURN_AWAY = 26 # Turn away from Player
40
+ ROUTE_SWITCH_ON = 27 # Switch ON
41
+ ROUTE_SWITCH_OFF = 28 # Switch OFF
42
+ ROUTE_CHANGE_SPEED = 29 # Change Speed
43
+ ROUTE_CHANGE_FREQ = 30 # Change Frequency
44
+ ROUTE_WALK_ANIME_ON = 31 # Walking Animation ON
45
+ ROUTE_WALK_ANIME_OFF = 32 # Walking Animation OFF
46
+ ROUTE_STEP_ANIME_ON = 33 # Stepping Animation ON
47
+ ROUTE_STEP_ANIME_OFF = 34 # Stepping Animation OFF
48
+ ROUTE_DIR_FIX_ON = 35 # Direction Fix ON
49
+ ROUTE_DIR_FIX_OFF = 36 # Direction Fix OFF
50
+ ROUTE_THROUGH_ON = 37 # Pass-Through ON
51
+ ROUTE_THROUGH_OFF = 38 # Pass-Through OFF
52
+ ROUTE_TRANSPARENT_ON = 39 # Transparent ON
53
+ ROUTE_TRANSPARENT_OFF = 40 # Transparent OFF
54
+ ROUTE_CHANGE_GRAPHIC = 41 # Change Graphic
55
+ ROUTE_CHANGE_OPACITY = 42 # Change Opacity
56
+ ROUTE_CHANGE_BLENDING = 43 # Change Blending
57
+ ROUTE_PLAY_SE = 44 # Play SE
58
+ ROUTE_SCRIPT = 45 # Script
59
+ #--------------------------------------------------------------------------
60
+ # * Public Instance Variables
61
+ #--------------------------------------------------------------------------
62
+ attr_reader :move_route_forcing # forced move route flag
63
+ #--------------------------------------------------------------------------
64
+ # * Initialize Public Member Variables
65
+ #--------------------------------------------------------------------------
66
+ def init_public_members
67
+ super
68
+ @move_route_forcing = false
69
+ end
70
+ #--------------------------------------------------------------------------
71
+ # * Initialize Private Member Variables
72
+ #--------------------------------------------------------------------------
73
+ def init_private_members
74
+ super
75
+ @move_route = nil # Move route
76
+ @move_route_index = 0 # Move route execution position
77
+ @original_move_route = nil # Original move route
78
+ @original_move_route_index = 0 # Original move route execution position
79
+ @wait_count = 0 # Wait count
80
+ end
81
+ #--------------------------------------------------------------------------
82
+ # * Memorize Move Route
83
+ #--------------------------------------------------------------------------
84
+ def memorize_move_route
85
+ @original_move_route = @move_route
86
+ @original_move_route_index = @move_route_index
87
+ end
88
+ #--------------------------------------------------------------------------
89
+ # * Restore Move Route
90
+ #--------------------------------------------------------------------------
91
+ def restore_move_route
92
+ @move_route = @original_move_route
93
+ @move_route_index = @original_move_route_index
94
+ @original_move_route = nil
95
+ end
96
+ #--------------------------------------------------------------------------
97
+ # * Force Move Route
98
+ #--------------------------------------------------------------------------
99
+ def force_move_route(move_route)
100
+ memorize_move_route unless @original_move_route
101
+ @move_route = move_route
102
+ @move_route_index = 0
103
+ @move_route_forcing = true
104
+ @prelock_direction = 0
105
+ @wait_count = 0
106
+ end
107
+ #--------------------------------------------------------------------------
108
+ # * Update While Stopped
109
+ #--------------------------------------------------------------------------
110
+ def update_stop
111
+ super
112
+ update_routine_move if @move_route_forcing
113
+ end
114
+ #--------------------------------------------------------------------------
115
+ # * Update Move Along Route
116
+ #--------------------------------------------------------------------------
117
+ def update_routine_move
118
+ if @wait_count > 0
119
+ @wait_count -= 1
120
+ else
121
+ @move_succeed = true
122
+ command = @move_route.list[@move_route_index]
123
+ if command
124
+ process_move_command(command)
125
+ advance_move_route_index
126
+ end
127
+ end
128
+ end
129
+ #--------------------------------------------------------------------------
130
+ # * Process Move Command
131
+ #--------------------------------------------------------------------------
132
+ def process_move_command(command)
133
+ params = command.parameters
134
+ case command.code
135
+ when ROUTE_END; process_route_end
136
+ when ROUTE_MOVE_DOWN; move_straight(2)
137
+ when ROUTE_MOVE_LEFT; move_straight(4)
138
+ when ROUTE_MOVE_RIGHT; move_straight(6)
139
+ when ROUTE_MOVE_UP; move_straight(8)
140
+ when ROUTE_MOVE_LOWER_L; move_diagonal(4, 2)
141
+ when ROUTE_MOVE_LOWER_R; move_diagonal(6, 2)
142
+ when ROUTE_MOVE_UPPER_L; move_diagonal(4, 8)
143
+ when ROUTE_MOVE_UPPER_R; move_diagonal(6, 8)
144
+ when ROUTE_MOVE_RANDOM; move_random
145
+ when ROUTE_MOVE_TOWARD; move_toward_player
146
+ when ROUTE_MOVE_AWAY; move_away_from_player
147
+ when ROUTE_MOVE_FORWARD; move_forward
148
+ when ROUTE_MOVE_BACKWARD; move_backward
149
+ when ROUTE_JUMP; jump(params[0], params[1])
150
+ when ROUTE_WAIT; @wait_count = params[0] - 1
151
+ when ROUTE_TURN_DOWN; set_direction(2)
152
+ when ROUTE_TURN_LEFT; set_direction(4)
153
+ when ROUTE_TURN_RIGHT; set_direction(6)
154
+ when ROUTE_TURN_UP; set_direction(8)
155
+ when ROUTE_TURN_90D_R; turn_right_90
156
+ when ROUTE_TURN_90D_L; turn_left_90
157
+ when ROUTE_TURN_180D; turn_180
158
+ when ROUTE_TURN_90D_R_L; turn_right_or_left_90
159
+ when ROUTE_TURN_RANDOM; turn_random
160
+ when ROUTE_TURN_TOWARD; turn_toward_player
161
+ when ROUTE_TURN_AWAY; turn_away_from_player
162
+ when ROUTE_SWITCH_ON; $game_switches[params[0]] = true
163
+ when ROUTE_SWITCH_OFF; $game_switches[params[0]] = false
164
+ when ROUTE_CHANGE_SPEED; @move_speed = params[0]
165
+ when ROUTE_CHANGE_FREQ; @move_frequency = params[0]
166
+ when ROUTE_WALK_ANIME_ON; @walk_anime = true
167
+ when ROUTE_WALK_ANIME_OFF; @walk_anime = false
168
+ when ROUTE_STEP_ANIME_ON; @step_anime = true
169
+ when ROUTE_STEP_ANIME_OFF; @step_anime = false
170
+ when ROUTE_DIR_FIX_ON; @direction_fix = true
171
+ when ROUTE_DIR_FIX_OFF; @direction_fix = false
172
+ when ROUTE_THROUGH_ON; @through = true
173
+ when ROUTE_THROUGH_OFF; @through = false
174
+ when ROUTE_TRANSPARENT_ON; @transparent = true
175
+ when ROUTE_TRANSPARENT_OFF; @transparent = false
176
+ when ROUTE_CHANGE_GRAPHIC; set_graphic(params[0], params[1])
177
+ when ROUTE_CHANGE_OPACITY; @opacity = params[0]
178
+ when ROUTE_CHANGE_BLENDING; @blend_type = params[0]
179
+ when ROUTE_PLAY_SE; params[0].play
180
+ when ROUTE_SCRIPT; eval(params[0])
181
+ end
182
+ end
183
+ #--------------------------------------------------------------------------
184
+ # * Calculate Distance in X Axis Direction
185
+ #--------------------------------------------------------------------------
186
+ def distance_x_from(x)
187
+ result = @x - x
188
+ if $game_map.loop_horizontal? && result.abs > $game_map.width / 2
189
+ if result < 0
190
+ result += $game_map.width
191
+ else
192
+ result -= $game_map.width
193
+ end
194
+ end
195
+ result
196
+ end
197
+ #--------------------------------------------------------------------------
198
+ # * Calculate Distance in Y Axis Direction
199
+ #--------------------------------------------------------------------------
200
+ def distance_y_from(y)
201
+ result = @y - y
202
+ if $game_map.loop_vertical? && result.abs > $game_map.height / 2
203
+ if result < 0
204
+ result += $game_map.height
205
+ else
206
+ result -= $game_map.height
207
+ end
208
+ end
209
+ result
210
+ end
211
+ #--------------------------------------------------------------------------
212
+ # * Move at Random
213
+ #--------------------------------------------------------------------------
214
+ def move_random
215
+ move_straight(2 + rand(4) * 2, false)
216
+ end
217
+ #--------------------------------------------------------------------------
218
+ # * Move Toward Character
219
+ #--------------------------------------------------------------------------
220
+ def move_toward_character(character)
221
+ sx = distance_x_from(character.x)
222
+ sy = distance_y_from(character.y)
223
+ if sx.abs > sy.abs
224
+ move_straight(sx > 0 ? 4 : 6)
225
+ move_straight(sy > 0 ? 8 : 2) if !@move_succeed && sy != 0
226
+ elsif sy != 0
227
+ move_straight(sy > 0 ? 8 : 2)
228
+ move_straight(sx > 0 ? 4 : 6) if !@move_succeed && sx != 0
229
+ end
230
+ end
231
+ #--------------------------------------------------------------------------
232
+ # * Move Away from Character
233
+ #--------------------------------------------------------------------------
234
+ def move_away_from_character(character)
235
+ sx = distance_x_from(character.x)
236
+ sy = distance_y_from(character.y)
237
+ if sx.abs > sy.abs
238
+ move_straight(sx > 0 ? 6 : 4)
239
+ move_straight(sy > 0 ? 2 : 8) if !@move_succeed && sy != 0
240
+ elsif sy != 0
241
+ move_straight(sy > 0 ? 2 : 8)
242
+ move_straight(sx > 0 ? 6 : 4) if !@move_succeed && sx != 0
243
+ end
244
+ end
245
+ #--------------------------------------------------------------------------
246
+ # * Turn Toward Character
247
+ #--------------------------------------------------------------------------
248
+ def turn_toward_character(character)
249
+ sx = distance_x_from(character.x)
250
+ sy = distance_y_from(character.y)
251
+ if sx.abs > sy.abs
252
+ set_direction(sx > 0 ? 4 : 6)
253
+ elsif sy != 0
254
+ set_direction(sy > 0 ? 8 : 2)
255
+ end
256
+ end
257
+ #--------------------------------------------------------------------------
258
+ # * Turn Away from Character
259
+ #--------------------------------------------------------------------------
260
+ def turn_away_from_character(character)
261
+ sx = distance_x_from(character.x)
262
+ sy = distance_y_from(character.y)
263
+ if sx.abs > sy.abs
264
+ set_direction(sx > 0 ? 6 : 4)
265
+ elsif sy != 0
266
+ set_direction(sy > 0 ? 2 : 8)
267
+ end
268
+ end
269
+ #--------------------------------------------------------------------------
270
+ # * Turn toward Player
271
+ #--------------------------------------------------------------------------
272
+ def turn_toward_player
273
+ turn_toward_character($game_player)
274
+ end
275
+ #--------------------------------------------------------------------------
276
+ # * Turn away from Player
277
+ #--------------------------------------------------------------------------
278
+ def turn_away_from_player
279
+ turn_away_from_character($game_player)
280
+ end
281
+ #--------------------------------------------------------------------------
282
+ # * Move toward Player
283
+ #--------------------------------------------------------------------------
284
+ def move_toward_player
285
+ move_toward_character($game_player)
286
+ end
287
+ #--------------------------------------------------------------------------
288
+ # * Move away from Player
289
+ #--------------------------------------------------------------------------
290
+ def move_away_from_player
291
+ move_away_from_character($game_player)
292
+ end
293
+ #--------------------------------------------------------------------------
294
+ # * 1 Step Forward
295
+ #--------------------------------------------------------------------------
296
+ def move_forward
297
+ move_straight(@direction)
298
+ end
299
+ #--------------------------------------------------------------------------
300
+ # * 1 Step Backward
301
+ #--------------------------------------------------------------------------
302
+ def move_backward
303
+ last_direction_fix = @direction_fix
304
+ @direction_fix = true
305
+ move_straight(reverse_dir(@direction), false)
306
+ @direction_fix = last_direction_fix
307
+ end
308
+ #--------------------------------------------------------------------------
309
+ # * Jump
310
+ # x_plus : x-coordinate plus value
311
+ # y_plus : y-coordinate plus value
312
+ #--------------------------------------------------------------------------
313
+ def jump(x_plus, y_plus)
314
+ if x_plus.abs > y_plus.abs
315
+ set_direction(x_plus < 0 ? 4 : 6) if x_plus != 0
316
+ else
317
+ set_direction(y_plus < 0 ? 8 : 2) if y_plus != 0
318
+ end
319
+ @x += x_plus
320
+ @y += y_plus
321
+ distance = Math.sqrt(x_plus * x_plus + y_plus * y_plus).round
322
+ @jump_peak = 10 + distance - @move_speed
323
+ @jump_count = @jump_peak * 2
324
+ @stop_count = 0
325
+ straighten
326
+ end
327
+ #--------------------------------------------------------------------------
328
+ # * Process Move Route End
329
+ #--------------------------------------------------------------------------
330
+ def process_route_end
331
+ if @move_route.repeat
332
+ @move_route_index = -1
333
+ elsif @move_route_forcing
334
+ @move_route_forcing = false
335
+ restore_move_route
336
+ end
337
+ end
338
+ #--------------------------------------------------------------------------
339
+ # * Advance Execution Position of Move Route
340
+ #--------------------------------------------------------------------------
341
+ def advance_move_route_index
342
+ @move_route_index += 1 if @move_succeed || @move_route.skippable
343
+ end
344
+ #--------------------------------------------------------------------------
345
+ # * Turn 90° Right
346
+ #--------------------------------------------------------------------------
347
+ def turn_right_90
348
+ case @direction
349
+ when 2; set_direction(4)
350
+ when 4; set_direction(8)
351
+ when 6; set_direction(2)
352
+ when 8; set_direction(6)
353
+ end
354
+ end
355
+ #--------------------------------------------------------------------------
356
+ # * Turn 90° Left
357
+ #--------------------------------------------------------------------------
358
+ def turn_left_90
359
+ case @direction
360
+ when 2; set_direction(6)
361
+ when 4; set_direction(2)
362
+ when 6; set_direction(8)
363
+ when 8; set_direction(4)
364
+ end
365
+ end
366
+ #--------------------------------------------------------------------------
367
+ # * Turn 180°
368
+ #--------------------------------------------------------------------------
369
+ def turn_180
370
+ set_direction(reverse_dir(@direction))
371
+ end
372
+ #--------------------------------------------------------------------------
373
+ # * Turn 90° Right or Left
374
+ #--------------------------------------------------------------------------
375
+ def turn_right_or_left_90
376
+ case rand(2)
377
+ when 0; turn_right_90
378
+ when 1; turn_left_90
379
+ end
380
+ end
381
+ #--------------------------------------------------------------------------
382
+ # * Turn at Random
383
+ #--------------------------------------------------------------------------
384
+ def turn_random
385
+ set_direction(2 + rand(4) * 2)
386
+ end
387
+ #--------------------------------------------------------------------------
388
+ # * Swap Character Positions
389
+ #--------------------------------------------------------------------------
390
+ def swap(character)
391
+ new_x = character.x
392
+ new_y = character.y
393
+ character.moveto(x, y)
394
+ moveto(new_x, new_y)
395
+ end
396
+ end
@@ -0,0 +1,443 @@
1
+ #==============================================================================
2
+ # ** Game_CharacterBase
3
+ #------------------------------------------------------------------------------
4
+ # This base class handles characters. It retains basic information, such as
5
+ # coordinates and graphics, shared by all characters.
6
+ #==============================================================================
7
+
8
+ class Game_CharacterBase
9
+ #--------------------------------------------------------------------------
10
+ # * Public Instance Variables
11
+ #--------------------------------------------------------------------------
12
+ attr_reader :id # ID
13
+ attr_reader :x # map X coordinate (logical)
14
+ attr_reader :y # map Y coordinate (logical)
15
+ attr_reader :real_x # map X coordinate (real)
16
+ attr_reader :real_y # map Y coordinate (real)
17
+ attr_reader :tile_id # tile ID (invalid if 0)
18
+ attr_reader :character_name # character graphic filename
19
+ attr_reader :character_index # character graphic index
20
+ attr_reader :move_speed # movement speed
21
+ attr_reader :move_frequency # movement frequency
22
+ attr_reader :walk_anime # walking animation
23
+ attr_reader :step_anime # stepping animation
24
+ attr_reader :direction_fix # direction fix
25
+ attr_reader :opacity # opacity level
26
+ attr_reader :blend_type # blending method
27
+ attr_reader :direction # direction
28
+ attr_reader :pattern # pattern
29
+ attr_reader :priority_type # priority type
30
+ attr_reader :through # pass-through
31
+ attr_reader :bush_depth # bush depth
32
+ attr_accessor :animation_id # animation ID
33
+ attr_accessor :balloon_id # balloon icon ID
34
+ attr_accessor :transparent # transparency flag
35
+ #--------------------------------------------------------------------------
36
+ # * Object Initialization
37
+ #--------------------------------------------------------------------------
38
+ def initialize
39
+ init_public_members
40
+ init_private_members
41
+ end
42
+ #--------------------------------------------------------------------------
43
+ # * Initialize Public Member Variables
44
+ #--------------------------------------------------------------------------
45
+ def init_public_members
46
+ @id = 0
47
+ @x = 0
48
+ @y = 0
49
+ @real_x = 0
50
+ @real_y = 0
51
+ @tile_id = 0
52
+ @character_name = ""
53
+ @character_index = 0
54
+ @move_speed = 4
55
+ @move_frequency = 6
56
+ @walk_anime = true
57
+ @step_anime = false
58
+ @direction_fix = false
59
+ @opacity = 255
60
+ @blend_type = 0
61
+ @direction = 2
62
+ @pattern = 1
63
+ @priority_type = 1
64
+ @through = false
65
+ @bush_depth = 0
66
+ @animation_id = 0
67
+ @balloon_id = 0
68
+ @transparent = false
69
+ end
70
+ #--------------------------------------------------------------------------
71
+ # * Initialize Private Member Variables
72
+ #--------------------------------------------------------------------------
73
+ def init_private_members
74
+ @original_direction = 2 # Original direction
75
+ @original_pattern = 1 # Original pattern
76
+ @anime_count = 0 # Animation count
77
+ @stop_count = 0 # Stop count
78
+ @jump_count = 0 # Jump count
79
+ @jump_peak = 0 # Jump peak count
80
+ @locked = false # Locked flag
81
+ @prelock_direction = 0 # Direction before lock
82
+ @move_succeed = true # Move success flag
83
+ end
84
+ #--------------------------------------------------------------------------
85
+ # * Determine Coordinate Match
86
+ #--------------------------------------------------------------------------
87
+ def pos?(x, y)
88
+ @x == x && @y == y
89
+ end
90
+ #--------------------------------------------------------------------------
91
+ # * Determine if Coordinates Match and Pass-Through Is Off (nt = No Through)
92
+ #--------------------------------------------------------------------------
93
+ def pos_nt?(x, y)
94
+ pos?(x, y) && !@through
95
+ end
96
+ #--------------------------------------------------------------------------
97
+ # * Determine if [Same as Characters] Priority
98
+ #--------------------------------------------------------------------------
99
+ def normal_priority?
100
+ @priority_type == 1
101
+ end
102
+ #--------------------------------------------------------------------------
103
+ # * Determine if Moving
104
+ #--------------------------------------------------------------------------
105
+ def moving?
106
+ @real_x != @x || @real_y != @y
107
+ end
108
+ #--------------------------------------------------------------------------
109
+ # * Determine if Jumping
110
+ #--------------------------------------------------------------------------
111
+ def jumping?
112
+ @jump_count > 0
113
+ end
114
+ #--------------------------------------------------------------------------
115
+ # * Calculate Jump Height
116
+ #--------------------------------------------------------------------------
117
+ def jump_height
118
+ (@jump_peak * @jump_peak - (@jump_count - @jump_peak).abs ** 2) / 2
119
+ end
120
+ #--------------------------------------------------------------------------
121
+ # * Determine if Stopping
122
+ #--------------------------------------------------------------------------
123
+ def stopping?
124
+ !moving? && !jumping?
125
+ end
126
+ #--------------------------------------------------------------------------
127
+ # * Get Move Speed (Account for Dash)
128
+ #--------------------------------------------------------------------------
129
+ def real_move_speed
130
+ @move_speed + (dash? ? 1 : 0)
131
+ end
132
+ #--------------------------------------------------------------------------
133
+ # * Calculate Move Distance per Frame
134
+ #--------------------------------------------------------------------------
135
+ def distance_per_frame
136
+ 2 ** real_move_speed / 256.0
137
+ end
138
+ #--------------------------------------------------------------------------
139
+ # * Determine if Dashing
140
+ #--------------------------------------------------------------------------
141
+ def dash?
142
+ return false
143
+ end
144
+ #--------------------------------------------------------------------------
145
+ # * Determine if Debug Pass-Through State
146
+ #--------------------------------------------------------------------------
147
+ def debug_through?
148
+ return false
149
+ end
150
+ #--------------------------------------------------------------------------
151
+ # * Straighten Position
152
+ #--------------------------------------------------------------------------
153
+ def straighten
154
+ @pattern = 1 if @walk_anime || @step_anime
155
+ @anime_count = 0
156
+ end
157
+ #--------------------------------------------------------------------------
158
+ # * Get Opposite Direction
159
+ # d : Direction (2,4,6,8)
160
+ #--------------------------------------------------------------------------
161
+ def reverse_dir(d)
162
+ return 10 - d
163
+ end
164
+ #--------------------------------------------------------------------------
165
+ # * Determine if Passable
166
+ # d : Direction (2,4,6,8)
167
+ #--------------------------------------------------------------------------
168
+ def passable?(x, y, d)
169
+ x2 = $game_map.round_x_with_direction(x, d)
170
+ y2 = $game_map.round_y_with_direction(y, d)
171
+ return false unless $game_map.valid?(x2, y2)
172
+ return true if @through || debug_through?
173
+ return false unless map_passable?(x, y, d)
174
+ return false unless map_passable?(x2, y2, reverse_dir(d))
175
+ return false if collide_with_characters?(x2, y2)
176
+ return true
177
+ end
178
+ #--------------------------------------------------------------------------
179
+ # * Determine Diagonal Passability
180
+ # horz : Horizontal (4 or 6)
181
+ # vert : Vertical (2 or 8)
182
+ #--------------------------------------------------------------------------
183
+ def diagonal_passable?(x, y, horz, vert)
184
+ x2 = $game_map.round_x_with_direction(x, horz)
185
+ y2 = $game_map.round_y_with_direction(y, vert)
186
+ (passable?(x, y, vert) && passable?(x, y2, horz)) ||
187
+ (passable?(x, y, horz) && passable?(x2, y, vert))
188
+ end
189
+ #--------------------------------------------------------------------------
190
+ # * Determine if Map is Passable
191
+ # d : Direction (2,4,6,8)
192
+ #--------------------------------------------------------------------------
193
+ def map_passable?(x, y, d)
194
+ $game_map.passable?(x, y, d)
195
+ end
196
+ #--------------------------------------------------------------------------
197
+ # * Detect Collision with Character
198
+ #--------------------------------------------------------------------------
199
+ def collide_with_characters?(x, y)
200
+ collide_with_events?(x, y) || collide_with_vehicles?(x, y)
201
+ end
202
+ #--------------------------------------------------------------------------
203
+ # * Detect Collision with Event
204
+ #--------------------------------------------------------------------------
205
+ def collide_with_events?(x, y)
206
+ $game_map.events_xy_nt(x, y).any? do |event|
207
+ event.normal_priority? || self.is_a?(Game_Event)
208
+ end
209
+ end
210
+ #--------------------------------------------------------------------------
211
+ # * Detect Collision with Vehicle
212
+ #--------------------------------------------------------------------------
213
+ def collide_with_vehicles?(x, y)
214
+ $game_map.boat.pos_nt?(x, y) || $game_map.ship.pos_nt?(x, y)
215
+ end
216
+ #--------------------------------------------------------------------------
217
+ # * Move to Designated Position
218
+ #--------------------------------------------------------------------------
219
+ def moveto(x, y)
220
+ @x = x % $game_map.width
221
+ @y = y % $game_map.height
222
+ @real_x = @x
223
+ @real_y = @y
224
+ @prelock_direction = 0
225
+ straighten
226
+ update_bush_depth
227
+ end
228
+ #--------------------------------------------------------------------------
229
+ # * Change Direction to Designated Direction
230
+ # d : Direction (2,4,6,8)
231
+ #--------------------------------------------------------------------------
232
+ def set_direction(d)
233
+ @direction = d if !@direction_fix && d != 0
234
+ @stop_count = 0
235
+ end
236
+ #--------------------------------------------------------------------------
237
+ # * Determine Tile
238
+ #--------------------------------------------------------------------------
239
+ def tile?
240
+ @tile_id > 0 && @priority_type == 0
241
+ end
242
+ #--------------------------------------------------------------------------
243
+ # * Determine Object Character
244
+ #--------------------------------------------------------------------------
245
+ def object_character?
246
+ @tile_id > 0 || @character_name[0, 1] == '!'
247
+ end
248
+ #--------------------------------------------------------------------------
249
+ # * Get Number of Pixels to Shift Up from Tile Position
250
+ #--------------------------------------------------------------------------
251
+ def shift_y
252
+ object_character? ? 0 : 4
253
+ end
254
+ #--------------------------------------------------------------------------
255
+ # * Get Screen X-Coordinates
256
+ #--------------------------------------------------------------------------
257
+ def screen_x
258
+ $game_map.adjust_x(@real_x) * 32 + 16
259
+ end
260
+ #--------------------------------------------------------------------------
261
+ # * Get Screen Y-Coordinates
262
+ #--------------------------------------------------------------------------
263
+ def screen_y
264
+ $game_map.adjust_y(@real_y) * 32 + 32 - shift_y - jump_height
265
+ end
266
+ #--------------------------------------------------------------------------
267
+ # * Get Screen Z-Coordinates
268
+ #--------------------------------------------------------------------------
269
+ def screen_z
270
+ @priority_type * 100
271
+ end
272
+ #--------------------------------------------------------------------------
273
+ # * Frame Update
274
+ #--------------------------------------------------------------------------
275
+ def update
276
+ update_animation
277
+ return update_jump if jumping?
278
+ return update_move if moving?
279
+ return update_stop
280
+ end
281
+ #--------------------------------------------------------------------------
282
+ # * Update While Jumping
283
+ #--------------------------------------------------------------------------
284
+ def update_jump
285
+ @jump_count -= 1
286
+ @real_x = (@real_x * @jump_count + @x) / (@jump_count + 1.0)
287
+ @real_y = (@real_y * @jump_count + @y) / (@jump_count + 1.0)
288
+ update_bush_depth
289
+ if @jump_count == 0
290
+ @real_x = @x = $game_map.round_x(@x)
291
+ @real_y = @y = $game_map.round_y(@y)
292
+ end
293
+ end
294
+ #--------------------------------------------------------------------------
295
+ # * Update While Moving
296
+ #--------------------------------------------------------------------------
297
+ def update_move
298
+ @real_x = [@real_x - distance_per_frame, @x].max if @x < @real_x
299
+ @real_x = [@real_x + distance_per_frame, @x].min if @x > @real_x
300
+ @real_y = [@real_y - distance_per_frame, @y].max if @y < @real_y
301
+ @real_y = [@real_y + distance_per_frame, @y].min if @y > @real_y
302
+ update_bush_depth unless moving?
303
+ end
304
+ #--------------------------------------------------------------------------
305
+ # * Update While Stopped
306
+ #--------------------------------------------------------------------------
307
+ def update_stop
308
+ @stop_count += 1 unless @locked
309
+ end
310
+ #--------------------------------------------------------------------------
311
+ # * Update Walking/Stepping Animation
312
+ #--------------------------------------------------------------------------
313
+ def update_animation
314
+ update_anime_count
315
+ if @anime_count > 18 - real_move_speed * 2
316
+ update_anime_pattern
317
+ @anime_count = 0
318
+ end
319
+ end
320
+ #--------------------------------------------------------------------------
321
+ # * Update Animation Count
322
+ #--------------------------------------------------------------------------
323
+ def update_anime_count
324
+ if moving? && @walk_anime
325
+ @anime_count += 1.5
326
+ elsif @step_anime || @pattern != @original_pattern
327
+ @anime_count += 1
328
+ end
329
+ end
330
+ #--------------------------------------------------------------------------
331
+ # * Update Animation Pattern
332
+ #--------------------------------------------------------------------------
333
+ def update_anime_pattern
334
+ if !@step_anime && @stop_count > 0
335
+ @pattern = @original_pattern
336
+ else
337
+ @pattern = (@pattern + 1) % 4
338
+ end
339
+ end
340
+ #--------------------------------------------------------------------------
341
+ # * Determine if Ladder
342
+ #--------------------------------------------------------------------------
343
+ def ladder?
344
+ $game_map.ladder?(@x, @y)
345
+ end
346
+ #--------------------------------------------------------------------------
347
+ # * Update Bush Depth
348
+ #--------------------------------------------------------------------------
349
+ def update_bush_depth
350
+ if normal_priority? && !object_character? && bush? && !jumping?
351
+ @bush_depth = 8 unless moving?
352
+ else
353
+ @bush_depth = 0
354
+ end
355
+ end
356
+ #--------------------------------------------------------------------------
357
+ # * Determine if Bush
358
+ #--------------------------------------------------------------------------
359
+ def bush?
360
+ $game_map.bush?(@x, @y)
361
+ end
362
+ #--------------------------------------------------------------------------
363
+ # * Get Terrain Tag
364
+ #--------------------------------------------------------------------------
365
+ def terrain_tag
366
+ $game_map.terrain_tag(@x, @y)
367
+ end
368
+ #--------------------------------------------------------------------------
369
+ # * Get Region ID
370
+ #--------------------------------------------------------------------------
371
+ def region_id
372
+ $game_map.region_id(@x, @y)
373
+ end
374
+ #--------------------------------------------------------------------------
375
+ # * Increase Steps
376
+ #--------------------------------------------------------------------------
377
+ def increase_steps
378
+ set_direction(8) if ladder?
379
+ @stop_count = 0
380
+ update_bush_depth
381
+ end
382
+ #--------------------------------------------------------------------------
383
+ # * Change Graphics
384
+ # character_name : new character graphic filename
385
+ # character_index : new character graphic index
386
+ #--------------------------------------------------------------------------
387
+ def set_graphic(character_name, character_index)
388
+ @tile_id = 0
389
+ @character_name = character_name
390
+ @character_index = character_index
391
+ @original_pattern = 1
392
+ end
393
+ #--------------------------------------------------------------------------
394
+ # * Determine Triggering of Frontal Touch Event
395
+ #--------------------------------------------------------------------------
396
+ def check_event_trigger_touch_front
397
+ x2 = $game_map.round_x_with_direction(@x, @direction)
398
+ y2 = $game_map.round_y_with_direction(@y, @direction)
399
+ check_event_trigger_touch(x2, y2)
400
+ end
401
+ #--------------------------------------------------------------------------
402
+ # * Determine if Touch Event is Triggered
403
+ #--------------------------------------------------------------------------
404
+ def check_event_trigger_touch(x, y)
405
+ return false
406
+ end
407
+ #--------------------------------------------------------------------------
408
+ # * Move Straight
409
+ # d: Direction (2,4,6,8)
410
+ # turn_ok : Allows change of direction on the spot
411
+ #--------------------------------------------------------------------------
412
+ def move_straight(d, turn_ok = true)
413
+ @move_succeed = passable?(@x, @y, d)
414
+ if @move_succeed
415
+ set_direction(d)
416
+ @x = $game_map.round_x_with_direction(@x, d)
417
+ @y = $game_map.round_y_with_direction(@y, d)
418
+ @real_x = $game_map.x_with_direction(@x, reverse_dir(d))
419
+ @real_y = $game_map.y_with_direction(@y, reverse_dir(d))
420
+ increase_steps
421
+ elsif turn_ok
422
+ set_direction(d)
423
+ check_event_trigger_touch_front
424
+ end
425
+ end
426
+ #--------------------------------------------------------------------------
427
+ # * Move Diagonally
428
+ # horz: Horizontal (4 or 6)
429
+ # vert: Vertical (2 or 8)
430
+ #--------------------------------------------------------------------------
431
+ def move_diagonal(horz, vert)
432
+ @move_succeed = diagonal_passable?(x, y, horz, vert)
433
+ if @move_succeed
434
+ @x = $game_map.round_x_with_direction(@x, horz)
435
+ @y = $game_map.round_y_with_direction(@y, vert)
436
+ @real_x = $game_map.x_with_direction(@x, reverse_dir(horz))
437
+ @real_y = $game_map.y_with_direction(@y, reverse_dir(vert))
438
+ increase_steps
439
+ end
440
+ set_direction(horz) if @direction == reverse_dir(horz)
441
+ set_direction(vert) if @direction == reverse_dir(vert)
442
+ end
443
+ end