rgss3_default_scripts 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +9 -0
  3. data/Gemfile +4 -0
  4. data/README.md +9 -0
  5. data/Rakefile +2 -0
  6. data/lib/rgss3_default_scripts.rb +109 -0
  7. data/lib/rgss3_default_scripts/BattleManager.rb +392 -0
  8. data/lib/rgss3_default_scripts/Cache.rb +134 -0
  9. data/lib/rgss3_default_scripts/DataManager.rb +267 -0
  10. data/lib/rgss3_default_scripts/Game_Action.rb +262 -0
  11. data/lib/rgss3_default_scripts/Game_ActionResult.rb +159 -0
  12. data/lib/rgss3_default_scripts/Game_Actor.rb +696 -0
  13. data/lib/rgss3_default_scripts/Game_Actors.rb +22 -0
  14. data/lib/rgss3_default_scripts/Game_BaseItem.rb +51 -0
  15. data/lib/rgss3_default_scripts/Game_Battler.rb +824 -0
  16. data/lib/rgss3_default_scripts/Game_BattlerBase.rb +731 -0
  17. data/lib/rgss3_default_scripts/Game_Character.rb +396 -0
  18. data/lib/rgss3_default_scripts/Game_CharacterBase.rb +443 -0
  19. data/lib/rgss3_default_scripts/Game_CommonEvent.rb +41 -0
  20. data/lib/rgss3_default_scripts/Game_Enemy.rb +264 -0
  21. data/lib/rgss3_default_scripts/Game_Event.rb +308 -0
  22. data/lib/rgss3_default_scripts/Game_Follower.rb +74 -0
  23. data/lib/rgss3_default_scripts/Game_Followers.rb +112 -0
  24. data/lib/rgss3_default_scripts/Game_Interpreter.rb +1413 -0
  25. data/lib/rgss3_default_scripts/Game_Map.rb +704 -0
  26. data/lib/rgss3_default_scripts/Game_Message.rb +101 -0
  27. data/lib/rgss3_default_scripts/Game_Party.rb +418 -0
  28. data/lib/rgss3_default_scripts/Game_Picture.rb +161 -0
  29. data/lib/rgss3_default_scripts/Game_Pictures.rb +28 -0
  30. data/lib/rgss3_default_scripts/Game_Player.rb +488 -0
  31. data/lib/rgss3_default_scripts/Game_Screen.rb +234 -0
  32. data/lib/rgss3_default_scripts/Game_SelfSwitches.rb +35 -0
  33. data/lib/rgss3_default_scripts/Game_Switches.rb +35 -0
  34. data/lib/rgss3_default_scripts/Game_System.rb +122 -0
  35. data/lib/rgss3_default_scripts/Game_Temp.rb +45 -0
  36. data/lib/rgss3_default_scripts/Game_Timer.rb +56 -0
  37. data/lib/rgss3_default_scripts/Game_Troop.rb +205 -0
  38. data/lib/rgss3_default_scripts/Game_Unit.rb +131 -0
  39. data/lib/rgss3_default_scripts/Game_Variables.rb +34 -0
  40. data/lib/rgss3_default_scripts/Game_Vehicle.rb +193 -0
  41. data/lib/rgss3_default_scripts/SceneManager.rb +94 -0
  42. data/lib/rgss3_default_scripts/Scene_Base.rb +132 -0
  43. data/lib/rgss3_default_scripts/Scene_Battle.rb +693 -0
  44. data/lib/rgss3_default_scripts/Scene_Debug.rb +87 -0
  45. data/lib/rgss3_default_scripts/Scene_End.rb +61 -0
  46. data/lib/rgss3_default_scripts/Scene_Equip.rb +144 -0
  47. data/lib/rgss3_default_scripts/Scene_File.rb +203 -0
  48. data/lib/rgss3_default_scripts/Scene_Gameover.rb +85 -0
  49. data/lib/rgss3_default_scripts/Scene_Item.rb +75 -0
  50. data/lib/rgss3_default_scripts/Scene_ItemBase.rb +147 -0
  51. data/lib/rgss3_default_scripts/Scene_Load.rb +40 -0
  52. data/lib/rgss3_default_scripts/Scene_Map.rb +276 -0
  53. data/lib/rgss3_default_scripts/Scene_Menu.rb +127 -0
  54. data/lib/rgss3_default_scripts/Scene_MenuBase.rb +63 -0
  55. data/lib/rgss3_default_scripts/Scene_Name.rb +32 -0
  56. data/lib/rgss3_default_scripts/Scene_Save.rb +38 -0
  57. data/lib/rgss3_default_scripts/Scene_Shop.rb +299 -0
  58. data/lib/rgss3_default_scripts/Scene_Skill.rb +108 -0
  59. data/lib/rgss3_default_scripts/Scene_Status.rb +25 -0
  60. data/lib/rgss3_default_scripts/Scene_Title.rb +137 -0
  61. data/lib/rgss3_default_scripts/Sound.rb +135 -0
  62. data/lib/rgss3_default_scripts/Sprite_Base.rb +232 -0
  63. data/lib/rgss3_default_scripts/Sprite_Battler.rb +231 -0
  64. data/lib/rgss3_default_scripts/Sprite_Character.rb +226 -0
  65. data/lib/rgss3_default_scripts/Sprite_Picture.rb +82 -0
  66. data/lib/rgss3_default_scripts/Sprite_Timer.rb +77 -0
  67. data/lib/rgss3_default_scripts/Spriteset_Battle.rb +389 -0
  68. data/lib/rgss3_default_scripts/Spriteset_Map.rb +273 -0
  69. data/lib/rgss3_default_scripts/Spriteset_Weather.rb +184 -0
  70. data/lib/rgss3_default_scripts/Vocab.rb +145 -0
  71. data/lib/rgss3_default_scripts/Window_ActorCommand.rb +78 -0
  72. data/lib/rgss3_default_scripts/Window_Base.rb +571 -0
  73. data/lib/rgss3_default_scripts/Window_BattleActor.rb +38 -0
  74. data/lib/rgss3_default_scripts/Window_BattleEnemy.rb +70 -0
  75. data/lib/rgss3_default_scripts/Window_BattleItem.rb +40 -0
  76. data/lib/rgss3_default_scripts/Window_BattleLog.rb +425 -0
  77. data/lib/rgss3_default_scripts/Window_BattleSkill.rb +34 -0
  78. data/lib/rgss3_default_scripts/Window_BattleStatus.rb +111 -0
  79. data/lib/rgss3_default_scripts/Window_ChoiceList.rb +88 -0
  80. data/lib/rgss3_default_scripts/Window_Command.rb +152 -0
  81. data/lib/rgss3_default_scripts/Window_DebugLeft.rb +104 -0
  82. data/lib/rgss3_default_scripts/Window_DebugRight.rb +119 -0
  83. data/lib/rgss3_default_scripts/Window_EquipCommand.rb +36 -0
  84. data/lib/rgss3_default_scripts/Window_EquipItem.rb +78 -0
  85. data/lib/rgss3_default_scripts/Window_EquipSlot.rb +111 -0
  86. data/lib/rgss3_default_scripts/Window_EquipStatus.rb +97 -0
  87. data/lib/rgss3_default_scripts/Window_GameEnd.rb +38 -0
  88. data/lib/rgss3_default_scripts/Window_Gold.rb +47 -0
  89. data/lib/rgss3_default_scripts/Window_Help.rb +43 -0
  90. data/lib/rgss3_default_scripts/Window_HorzCommand.rb +106 -0
  91. data/lib/rgss3_default_scripts/Window_ItemCategory.rb +54 -0
  92. data/lib/rgss3_default_scripts/Window_ItemList.rb +117 -0
  93. data/lib/rgss3_default_scripts/Window_KeyItem.rb +55 -0
  94. data/lib/rgss3_default_scripts/Window_MapName.rb +96 -0
  95. data/lib/rgss3_default_scripts/Window_MenuActor.rb +43 -0
  96. data/lib/rgss3_default_scripts/Window_MenuCommand.rb +106 -0
  97. data/lib/rgss3_default_scripts/Window_MenuStatus.rb +85 -0
  98. data/lib/rgss3_default_scripts/Window_Message.rb +397 -0
  99. data/lib/rgss3_default_scripts/Window_NameEdit.rb +129 -0
  100. data/lib/rgss3_default_scripts/Window_NameInput.rb +253 -0
  101. data/lib/rgss3_default_scripts/Window_NumberInput.rb +148 -0
  102. data/lib/rgss3_default_scripts/Window_PartyCommand.rb +47 -0
  103. data/lib/rgss3_default_scripts/Window_SaveFile.rb +69 -0
  104. data/lib/rgss3_default_scripts/Window_ScrollText.rb +90 -0
  105. data/lib/rgss3_default_scripts/Window_Selectable.rb +442 -0
  106. data/lib/rgss3_default_scripts/Window_ShopBuy.rb +115 -0
  107. data/lib/rgss3_default_scripts/Window_ShopCommand.rb +36 -0
  108. data/lib/rgss3_default_scripts/Window_ShopNumber.rb +137 -0
  109. data/lib/rgss3_default_scripts/Window_ShopSell.rb +27 -0
  110. data/lib/rgss3_default_scripts/Window_ShopStatus.rb +124 -0
  111. data/lib/rgss3_default_scripts/Window_SkillCommand.rb +76 -0
  112. data/lib/rgss3_default_scripts/Window_SkillList.rb +121 -0
  113. data/lib/rgss3_default_scripts/Window_SkillStatus.rb +38 -0
  114. data/lib/rgss3_default_scripts/Window_Status.rb +125 -0
  115. data/lib/rgss3_default_scripts/Window_TitleCommand.rb +45 -0
  116. data/rgss3_default_scripts.gemspec +23 -0
  117. metadata +186 -0
@@ -0,0 +1,41 @@
1
+ #==============================================================================
2
+ # ** Game_CommonEvent
3
+ #------------------------------------------------------------------------------
4
+ # This class handles common events. It includes functionality for execution of
5
+ # parallel process events. It's used within the Game_Map class ($game_map).
6
+ #==============================================================================
7
+
8
+ class Game_CommonEvent
9
+ #--------------------------------------------------------------------------
10
+ # * Object Initialization
11
+ #--------------------------------------------------------------------------
12
+ def initialize(common_event_id)
13
+ @event = $data_common_events[common_event_id]
14
+ refresh
15
+ end
16
+ #--------------------------------------------------------------------------
17
+ # * Refresh
18
+ #--------------------------------------------------------------------------
19
+ def refresh
20
+ if active?
21
+ @interpreter ||= Game_Interpreter.new
22
+ else
23
+ @interpreter = nil
24
+ end
25
+ end
26
+ #--------------------------------------------------------------------------
27
+ # * Determine if Active State
28
+ #--------------------------------------------------------------------------
29
+ def active?
30
+ @event.parallel? && $game_switches[@event.switch_id]
31
+ end
32
+ #--------------------------------------------------------------------------
33
+ # * Frame Update
34
+ #--------------------------------------------------------------------------
35
+ def update
36
+ if @interpreter
37
+ @interpreter.setup(@event.list) unless @interpreter.running?
38
+ @interpreter.update
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,264 @@
1
+ #==============================================================================
2
+ # ** Game_Enemy
3
+ #------------------------------------------------------------------------------
4
+ # This class handles enemies. It used within the Game_Troop class
5
+ # ($game_troop).
6
+ #==============================================================================
7
+
8
+ class Game_Enemy < Game_Battler
9
+ #--------------------------------------------------------------------------
10
+ # * Public Instance Variables
11
+ #--------------------------------------------------------------------------
12
+ attr_reader :index # index in troop
13
+ attr_reader :enemy_id # enemy ID
14
+ attr_reader :original_name # original name
15
+ attr_accessor :letter # letters to be attached to the name
16
+ attr_accessor :plural # multiple appearance flag
17
+ attr_accessor :screen_x # battle screen X coordinate
18
+ attr_accessor :screen_y # battle screen Y coordinate
19
+ #--------------------------------------------------------------------------
20
+ # * Object Initialization
21
+ #--------------------------------------------------------------------------
22
+ def initialize(index, enemy_id)
23
+ super()
24
+ @index = index
25
+ @enemy_id = enemy_id
26
+ enemy = $data_enemies[@enemy_id]
27
+ @original_name = enemy.name
28
+ @letter = ""
29
+ @plural = false
30
+ @screen_x = 0
31
+ @screen_y = 0
32
+ @battler_name = enemy.battler_name
33
+ @battler_hue = enemy.battler_hue
34
+ @hp = mhp
35
+ @mp = mmp
36
+ end
37
+ #--------------------------------------------------------------------------
38
+ # * Determine if Enemy
39
+ #--------------------------------------------------------------------------
40
+ def enemy?
41
+ return true
42
+ end
43
+ #--------------------------------------------------------------------------
44
+ # * Get Allied Units
45
+ #--------------------------------------------------------------------------
46
+ def friends_unit
47
+ $game_troop
48
+ end
49
+ #--------------------------------------------------------------------------
50
+ # * Get Enemy Units
51
+ #--------------------------------------------------------------------------
52
+ def opponents_unit
53
+ $game_party
54
+ end
55
+ #--------------------------------------------------------------------------
56
+ # * Get Enemy Object
57
+ #--------------------------------------------------------------------------
58
+ def enemy
59
+ $data_enemies[@enemy_id]
60
+ end
61
+ #--------------------------------------------------------------------------
62
+ # * Get Array of All Objects Retaining Features
63
+ #--------------------------------------------------------------------------
64
+ def feature_objects
65
+ super + [enemy]
66
+ end
67
+ #--------------------------------------------------------------------------
68
+ # * Get Display Name
69
+ #--------------------------------------------------------------------------
70
+ def name
71
+ @original_name + (@plural ? letter : "")
72
+ end
73
+ #--------------------------------------------------------------------------
74
+ # * Get Base Value of Parameter
75
+ #--------------------------------------------------------------------------
76
+ def param_base(param_id)
77
+ enemy.params[param_id]
78
+ end
79
+ #--------------------------------------------------------------------------
80
+ # * Get Experience
81
+ #--------------------------------------------------------------------------
82
+ def exp
83
+ enemy.exp
84
+ end
85
+ #--------------------------------------------------------------------------
86
+ # * Get Gold
87
+ #--------------------------------------------------------------------------
88
+ def gold
89
+ enemy.gold
90
+ end
91
+ #--------------------------------------------------------------------------
92
+ # * Create Array of Dropped Items
93
+ #--------------------------------------------------------------------------
94
+ def make_drop_items
95
+ enemy.drop_items.inject([]) do |r, di|
96
+ if di.kind > 0 && rand * di.denominator < drop_item_rate
97
+ r.push(item_object(di.kind, di.data_id))
98
+ else
99
+ r
100
+ end
101
+ end
102
+ end
103
+ #--------------------------------------------------------------------------
104
+ # * Get Multiplier for Dropped Item Acquisition Probability
105
+ #--------------------------------------------------------------------------
106
+ def drop_item_rate
107
+ $game_party.drop_item_double? ? 2 : 1
108
+ end
109
+ #--------------------------------------------------------------------------
110
+ # * Get Item Object
111
+ #--------------------------------------------------------------------------
112
+ def item_object(kind, data_id)
113
+ return $data_items [data_id] if kind == 1
114
+ return $data_weapons[data_id] if kind == 2
115
+ return $data_armors [data_id] if kind == 3
116
+ return nil
117
+ end
118
+ #--------------------------------------------------------------------------
119
+ # * Use Sprites?
120
+ #--------------------------------------------------------------------------
121
+ def use_sprite?
122
+ return true
123
+ end
124
+ #--------------------------------------------------------------------------
125
+ # * Get Battle Screen Z-Coordinate
126
+ #--------------------------------------------------------------------------
127
+ def screen_z
128
+ return 100
129
+ end
130
+ #--------------------------------------------------------------------------
131
+ # * Execute Damage Effect
132
+ #--------------------------------------------------------------------------
133
+ def perform_damage_effect
134
+ @sprite_effect_type = :blink
135
+ Sound.play_enemy_damage
136
+ end
137
+ #--------------------------------------------------------------------------
138
+ # * Execute Collapse Effect
139
+ #--------------------------------------------------------------------------
140
+ def perform_collapse_effect
141
+ case collapse_type
142
+ when 0
143
+ @sprite_effect_type = :collapse
144
+ Sound.play_enemy_collapse
145
+ when 1
146
+ @sprite_effect_type = :boss_collapse
147
+ Sound.play_boss_collapse1
148
+ when 2
149
+ @sprite_effect_type = :instant_collapse
150
+ end
151
+ end
152
+ #--------------------------------------------------------------------------
153
+ # * Transform
154
+ #--------------------------------------------------------------------------
155
+ def transform(enemy_id)
156
+ @enemy_id = enemy_id
157
+ if enemy.name != @original_name
158
+ @original_name = enemy.name
159
+ @letter = ""
160
+ @plural = false
161
+ end
162
+ @battler_name = enemy.battler_name
163
+ @battler_hue = enemy.battler_hue
164
+ refresh
165
+ make_actions unless @actions.empty?
166
+ end
167
+ #--------------------------------------------------------------------------
168
+ # * Determine if Action Conditions Are Met
169
+ # action : RPG::Enemy::Action
170
+ #--------------------------------------------------------------------------
171
+ def conditions_met?(action)
172
+ method_table = {
173
+ 1 => :conditions_met_turns?,
174
+ 2 => :conditions_met_hp?,
175
+ 3 => :conditions_met_mp?,
176
+ 4 => :conditions_met_state?,
177
+ 5 => :conditions_met_party_level?,
178
+ 6 => :conditions_met_switch?,
179
+ }
180
+ method_name = method_table[action.condition_type]
181
+ if method_name
182
+ send(method_name, action.condition_param1, action.condition_param2)
183
+ else
184
+ true
185
+ end
186
+ end
187
+ #--------------------------------------------------------------------------
188
+ # * Determine if Action Conditions Are Met [Turns]
189
+ #--------------------------------------------------------------------------
190
+ def conditions_met_turns?(param1, param2)
191
+ n = $game_troop.turn_count
192
+ if param2 == 0
193
+ n == param1
194
+ else
195
+ n > 0 && n >= param1 && n % param2 == param1 % param2
196
+ end
197
+ end
198
+ #--------------------------------------------------------------------------
199
+ # * Determine if Action Conditions Are Met [HP]
200
+ #--------------------------------------------------------------------------
201
+ def conditions_met_hp?(param1, param2)
202
+ hp_rate >= param1 && hp_rate <= param2
203
+ end
204
+ #--------------------------------------------------------------------------
205
+ # * Determine if Action Conditions Are Met [MP]
206
+ #--------------------------------------------------------------------------
207
+ def conditions_met_mp?(param1, param2)
208
+ mp_rate >= param1 && mp_rate <= param2
209
+ end
210
+ #--------------------------------------------------------------------------
211
+ # * Determine if Action Conditions Are Met [State]
212
+ #--------------------------------------------------------------------------
213
+ def conditions_met_state?(param1, param2)
214
+ state?(param1)
215
+ end
216
+ #--------------------------------------------------------------------------
217
+ # * Determine if Action Conditions Are Met [Party Level]
218
+ #--------------------------------------------------------------------------
219
+ def conditions_met_party_level?(param1, param2)
220
+ $game_party.highest_level >= param1
221
+ end
222
+ #--------------------------------------------------------------------------
223
+ # * Determine if Action Conditions Are Met [Switch]
224
+ #--------------------------------------------------------------------------
225
+ def conditions_met_switch?(param1, param2)
226
+ $game_switches[param1]
227
+ end
228
+ #--------------------------------------------------------------------------
229
+ # * Determine if Action Is Valid in Current State
230
+ # action : RPG::Enemy::Action
231
+ #--------------------------------------------------------------------------
232
+ def action_valid?(action)
233
+ conditions_met?(action) && usable?($data_skills[action.skill_id])
234
+ end
235
+ #--------------------------------------------------------------------------
236
+ # * Randomly Select Action
237
+ # action_list: RPG::Enemy::Action array
238
+ # rating_zero: Rating value to consider as zero
239
+ #--------------------------------------------------------------------------
240
+ def select_enemy_action(action_list, rating_zero)
241
+ sum = action_list.inject(0) {|r, a| r += a.rating - rating_zero }
242
+ return nil if sum <= 0
243
+ value = rand(sum)
244
+ action_list.each do |action|
245
+ return action if value < action.rating - rating_zero
246
+ value -= action.rating - rating_zero
247
+ end
248
+ end
249
+ #--------------------------------------------------------------------------
250
+ # * Create Battle Action
251
+ #--------------------------------------------------------------------------
252
+ def make_actions
253
+ super
254
+ return if @actions.empty?
255
+ action_list = enemy.actions.select {|a| action_valid?(a) }
256
+ return if action_list.empty?
257
+ rating_max = action_list.collect {|a| a.rating }.max
258
+ rating_zero = rating_max - 3
259
+ action_list.reject! {|a| a.rating <= rating_zero }
260
+ @actions.each do |action|
261
+ action.set_enemy_action(select_enemy_action(action_list, rating_zero))
262
+ end
263
+ end
264
+ end
@@ -0,0 +1,308 @@
1
+ #==============================================================================
2
+ # ** Game_Event
3
+ #------------------------------------------------------------------------------
4
+ # This class handles events. Functions include event page switching via
5
+ # condition determinants and running parallel process events. Used within the
6
+ # Game_Map class.
7
+ #==============================================================================
8
+
9
+ class Game_Event < Game_Character
10
+ #--------------------------------------------------------------------------
11
+ # * Public Instance Variables
12
+ #--------------------------------------------------------------------------
13
+ attr_reader :trigger # trigger
14
+ attr_reader :list # list of event commands
15
+ attr_reader :starting # starting flag
16
+ #--------------------------------------------------------------------------
17
+ # * Object Initialization
18
+ # event: RPG::Event
19
+ #--------------------------------------------------------------------------
20
+ def initialize(map_id, event)
21
+ super()
22
+ @map_id = map_id
23
+ @event = event
24
+ @id = @event.id
25
+ moveto(@event.x, @event.y)
26
+ refresh
27
+ end
28
+ #--------------------------------------------------------------------------
29
+ # * Initialize Public Member Variables
30
+ #--------------------------------------------------------------------------
31
+ def init_public_members
32
+ super
33
+ @trigger = 0
34
+ @list = nil
35
+ @starting = false
36
+ end
37
+ #--------------------------------------------------------------------------
38
+ # * Initialize Private Member Variables
39
+ #--------------------------------------------------------------------------
40
+ def init_private_members
41
+ super
42
+ @move_type = 0 # Movement type
43
+ @erased = false # Temporary erase flag
44
+ @page = nil # Event page
45
+ end
46
+ #--------------------------------------------------------------------------
47
+ # * Detect Collision with Character
48
+ #--------------------------------------------------------------------------
49
+ def collide_with_characters?(x, y)
50
+ super || collide_with_player_characters?(x, y)
51
+ end
52
+ #--------------------------------------------------------------------------
53
+ # * Detect Collision with Player (Including Followers)
54
+ #--------------------------------------------------------------------------
55
+ def collide_with_player_characters?(x, y)
56
+ normal_priority? && $game_player.collide?(x, y)
57
+ end
58
+ #--------------------------------------------------------------------------
59
+ # * Lock (Processing in Which Executing Events Stop)
60
+ #--------------------------------------------------------------------------
61
+ def lock
62
+ unless @locked
63
+ @prelock_direction = @direction
64
+ turn_toward_player
65
+ @locked = true
66
+ end
67
+ end
68
+ #--------------------------------------------------------------------------
69
+ # * Unlock
70
+ #--------------------------------------------------------------------------
71
+ def unlock
72
+ if @locked
73
+ @locked = false
74
+ set_direction(@prelock_direction)
75
+ end
76
+ end
77
+ #--------------------------------------------------------------------------
78
+ # * Update While Stopped
79
+ #--------------------------------------------------------------------------
80
+ def update_stop
81
+ super
82
+ update_self_movement unless @move_route_forcing
83
+ end
84
+ #--------------------------------------------------------------------------
85
+ # * Update During Autonomous Movement
86
+ #--------------------------------------------------------------------------
87
+ def update_self_movement
88
+ if near_the_screen? && @stop_count > stop_count_threshold
89
+ case @move_type
90
+ when 1; move_type_random
91
+ when 2; move_type_toward_player
92
+ when 3; move_type_custom
93
+ end
94
+ end
95
+ end
96
+ #--------------------------------------------------------------------------
97
+ # * Determine if Near Visible Area of Screen
98
+ # dx: A certain number of tiles left/right of screen's center
99
+ # dy: A certain number of tiles above/below screen's center
100
+ #--------------------------------------------------------------------------
101
+ def near_the_screen?(dx = 12, dy = 8)
102
+ ax = $game_map.adjust_x(@real_x) - Graphics.width / 2 / 32
103
+ ay = $game_map.adjust_y(@real_y) - Graphics.height / 2 / 32
104
+ ax >= -dx && ax <= dx && ay >= -dy && ay <= dy
105
+ end
106
+ #--------------------------------------------------------------------------
107
+ # * Calculate Threshold of Counter for Stopping Autonomous Movement Startup
108
+ #--------------------------------------------------------------------------
109
+ def stop_count_threshold
110
+ 30 * (5 - @move_frequency)
111
+ end
112
+ #--------------------------------------------------------------------------
113
+ # * Move Type : Random
114
+ #--------------------------------------------------------------------------
115
+ def move_type_random
116
+ case rand(6)
117
+ when 0..1; move_random
118
+ when 2..4; move_forward
119
+ when 5; @stop_count = 0
120
+ end
121
+ end
122
+ #--------------------------------------------------------------------------
123
+ # * Move Type : Approach
124
+ #--------------------------------------------------------------------------
125
+ def move_type_toward_player
126
+ if near_the_player?
127
+ case rand(6)
128
+ when 0..3; move_toward_player
129
+ when 4; move_random
130
+ when 5; move_forward
131
+ end
132
+ else
133
+ move_random
134
+ end
135
+ end
136
+ #--------------------------------------------------------------------------
137
+ # * Determine if Near Player
138
+ #--------------------------------------------------------------------------
139
+ def near_the_player?
140
+ sx = distance_x_from($game_player.x).abs
141
+ sy = distance_y_from($game_player.y).abs
142
+ sx + sy < 20
143
+ end
144
+ #--------------------------------------------------------------------------
145
+ # * Move Type : Custom
146
+ #--------------------------------------------------------------------------
147
+ def move_type_custom
148
+ update_routine_move
149
+ end
150
+ #--------------------------------------------------------------------------
151
+ # * Clear Starting Flag
152
+ #--------------------------------------------------------------------------
153
+ def clear_starting_flag
154
+ @starting = false
155
+ end
156
+ #--------------------------------------------------------------------------
157
+ # * Determine if Contents Are Empty
158
+ #--------------------------------------------------------------------------
159
+ def empty?
160
+ !@list || @list.size <= 1
161
+ end
162
+ #--------------------------------------------------------------------------
163
+ # * Determine if One of Specified Triggers
164
+ # triggers : Trigger array
165
+ #--------------------------------------------------------------------------
166
+ def trigger_in?(triggers)
167
+ triggers.include?(@trigger)
168
+ end
169
+ #--------------------------------------------------------------------------
170
+ # * Start Event
171
+ #--------------------------------------------------------------------------
172
+ def start
173
+ return if empty?
174
+ @starting = true
175
+ lock if trigger_in?([0,1,2])
176
+ end
177
+ #--------------------------------------------------------------------------
178
+ # * Temporarily Erase
179
+ #--------------------------------------------------------------------------
180
+ def erase
181
+ @erased = true
182
+ refresh
183
+ end
184
+ #--------------------------------------------------------------------------
185
+ # * Refresh
186
+ #--------------------------------------------------------------------------
187
+ def refresh
188
+ new_page = @erased ? nil : find_proper_page
189
+ setup_page(new_page) if !new_page || new_page != @page
190
+ end
191
+ #--------------------------------------------------------------------------
192
+ # * Find Event Page Meeting Conditions
193
+ #--------------------------------------------------------------------------
194
+ def find_proper_page
195
+ @event.pages.reverse.find {|page| conditions_met?(page) }
196
+ end
197
+ #--------------------------------------------------------------------------
198
+ # * Determine if Event Page Conditions Are Met
199
+ #--------------------------------------------------------------------------
200
+ def conditions_met?(page)
201
+ c = page.condition
202
+ if c.switch1_valid
203
+ return false unless $game_switches[c.switch1_id]
204
+ end
205
+ if c.switch2_valid
206
+ return false unless $game_switches[c.switch2_id]
207
+ end
208
+ if c.variable_valid
209
+ return false if $game_variables[c.variable_id] < c.variable_value
210
+ end
211
+ if c.self_switch_valid
212
+ key = [@map_id, @event.id, c.self_switch_ch]
213
+ return false if $game_self_switches[key] != true
214
+ end
215
+ if c.item_valid
216
+ item = $data_items[c.item_id]
217
+ return false unless $game_party.has_item?(item)
218
+ end
219
+ if c.actor_valid
220
+ actor = $game_actors[c.actor_id]
221
+ return false unless $game_party.members.include?(actor)
222
+ end
223
+ return true
224
+ end
225
+ #--------------------------------------------------------------------------
226
+ # * Event Page Setup
227
+ #--------------------------------------------------------------------------
228
+ def setup_page(new_page)
229
+ @page = new_page
230
+ if @page
231
+ setup_page_settings
232
+ else
233
+ clear_page_settings
234
+ end
235
+ update_bush_depth
236
+ clear_starting_flag
237
+ check_event_trigger_auto
238
+ end
239
+ #--------------------------------------------------------------------------
240
+ # * Clear Event Page Settings
241
+ #--------------------------------------------------------------------------
242
+ def clear_page_settings
243
+ @tile_id = 0
244
+ @character_name = ""
245
+ @character_index = 0
246
+ @move_type = 0
247
+ @through = true
248
+ @trigger = nil
249
+ @list = nil
250
+ @interpreter = nil
251
+ end
252
+ #--------------------------------------------------------------------------
253
+ # * Set Up Event Page Settings
254
+ #--------------------------------------------------------------------------
255
+ def setup_page_settings
256
+ @tile_id = @page.graphic.tile_id
257
+ @character_name = @page.graphic.character_name
258
+ @character_index = @page.graphic.character_index
259
+ if @original_direction != @page.graphic.direction
260
+ @direction = @page.graphic.direction
261
+ @original_direction = @direction
262
+ @prelock_direction = 0
263
+ end
264
+ if @original_pattern != @page.graphic.pattern
265
+ @pattern = @page.graphic.pattern
266
+ @original_pattern = @pattern
267
+ end
268
+ @move_type = @page.move_type
269
+ @move_speed = @page.move_speed
270
+ @move_frequency = @page.move_frequency
271
+ @move_route = @page.move_route
272
+ @move_route_index = 0
273
+ @move_route_forcing = false
274
+ @walk_anime = @page.walk_anime
275
+ @step_anime = @page.step_anime
276
+ @direction_fix = @page.direction_fix
277
+ @through = @page.through
278
+ @priority_type = @page.priority_type
279
+ @trigger = @page.trigger
280
+ @list = @page.list
281
+ @interpreter = @trigger == 4 ? Game_Interpreter.new : nil
282
+ end
283
+ #--------------------------------------------------------------------------
284
+ # * Determine if Touch Event is Triggered
285
+ #--------------------------------------------------------------------------
286
+ def check_event_trigger_touch(x, y)
287
+ return if $game_map.interpreter.running?
288
+ if @trigger == 2 && $game_player.pos?(x, y)
289
+ start if !jumping? && normal_priority?
290
+ end
291
+ end
292
+ #--------------------------------------------------------------------------
293
+ # * Determine if Autorun Event is Triggered
294
+ #--------------------------------------------------------------------------
295
+ def check_event_trigger_auto
296
+ start if @trigger == 3
297
+ end
298
+ #--------------------------------------------------------------------------
299
+ # * Frame Update
300
+ #--------------------------------------------------------------------------
301
+ def update
302
+ super
303
+ check_event_trigger_auto
304
+ return unless @interpreter
305
+ @interpreter.setup(@list, @event.id) unless @interpreter.running?
306
+ @interpreter.update
307
+ end
308
+ end