rgss3_default_scripts 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +9 -0
- data/Gemfile +4 -0
- data/README.md +9 -0
- data/Rakefile +2 -0
- data/lib/rgss3_default_scripts.rb +109 -0
- data/lib/rgss3_default_scripts/BattleManager.rb +392 -0
- data/lib/rgss3_default_scripts/Cache.rb +134 -0
- data/lib/rgss3_default_scripts/DataManager.rb +267 -0
- data/lib/rgss3_default_scripts/Game_Action.rb +262 -0
- data/lib/rgss3_default_scripts/Game_ActionResult.rb +159 -0
- data/lib/rgss3_default_scripts/Game_Actor.rb +696 -0
- data/lib/rgss3_default_scripts/Game_Actors.rb +22 -0
- data/lib/rgss3_default_scripts/Game_BaseItem.rb +51 -0
- data/lib/rgss3_default_scripts/Game_Battler.rb +824 -0
- data/lib/rgss3_default_scripts/Game_BattlerBase.rb +731 -0
- data/lib/rgss3_default_scripts/Game_Character.rb +396 -0
- data/lib/rgss3_default_scripts/Game_CharacterBase.rb +443 -0
- data/lib/rgss3_default_scripts/Game_CommonEvent.rb +41 -0
- data/lib/rgss3_default_scripts/Game_Enemy.rb +264 -0
- data/lib/rgss3_default_scripts/Game_Event.rb +308 -0
- data/lib/rgss3_default_scripts/Game_Follower.rb +74 -0
- data/lib/rgss3_default_scripts/Game_Followers.rb +112 -0
- data/lib/rgss3_default_scripts/Game_Interpreter.rb +1413 -0
- data/lib/rgss3_default_scripts/Game_Map.rb +704 -0
- data/lib/rgss3_default_scripts/Game_Message.rb +101 -0
- data/lib/rgss3_default_scripts/Game_Party.rb +418 -0
- data/lib/rgss3_default_scripts/Game_Picture.rb +161 -0
- data/lib/rgss3_default_scripts/Game_Pictures.rb +28 -0
- data/lib/rgss3_default_scripts/Game_Player.rb +488 -0
- data/lib/rgss3_default_scripts/Game_Screen.rb +234 -0
- data/lib/rgss3_default_scripts/Game_SelfSwitches.rb +35 -0
- data/lib/rgss3_default_scripts/Game_Switches.rb +35 -0
- data/lib/rgss3_default_scripts/Game_System.rb +122 -0
- data/lib/rgss3_default_scripts/Game_Temp.rb +45 -0
- data/lib/rgss3_default_scripts/Game_Timer.rb +56 -0
- data/lib/rgss3_default_scripts/Game_Troop.rb +205 -0
- data/lib/rgss3_default_scripts/Game_Unit.rb +131 -0
- data/lib/rgss3_default_scripts/Game_Variables.rb +34 -0
- data/lib/rgss3_default_scripts/Game_Vehicle.rb +193 -0
- data/lib/rgss3_default_scripts/SceneManager.rb +94 -0
- data/lib/rgss3_default_scripts/Scene_Base.rb +132 -0
- data/lib/rgss3_default_scripts/Scene_Battle.rb +693 -0
- data/lib/rgss3_default_scripts/Scene_Debug.rb +87 -0
- data/lib/rgss3_default_scripts/Scene_End.rb +61 -0
- data/lib/rgss3_default_scripts/Scene_Equip.rb +144 -0
- data/lib/rgss3_default_scripts/Scene_File.rb +203 -0
- data/lib/rgss3_default_scripts/Scene_Gameover.rb +85 -0
- data/lib/rgss3_default_scripts/Scene_Item.rb +75 -0
- data/lib/rgss3_default_scripts/Scene_ItemBase.rb +147 -0
- data/lib/rgss3_default_scripts/Scene_Load.rb +40 -0
- data/lib/rgss3_default_scripts/Scene_Map.rb +276 -0
- data/lib/rgss3_default_scripts/Scene_Menu.rb +127 -0
- data/lib/rgss3_default_scripts/Scene_MenuBase.rb +63 -0
- data/lib/rgss3_default_scripts/Scene_Name.rb +32 -0
- data/lib/rgss3_default_scripts/Scene_Save.rb +38 -0
- data/lib/rgss3_default_scripts/Scene_Shop.rb +299 -0
- data/lib/rgss3_default_scripts/Scene_Skill.rb +108 -0
- data/lib/rgss3_default_scripts/Scene_Status.rb +25 -0
- data/lib/rgss3_default_scripts/Scene_Title.rb +137 -0
- data/lib/rgss3_default_scripts/Sound.rb +135 -0
- data/lib/rgss3_default_scripts/Sprite_Base.rb +232 -0
- data/lib/rgss3_default_scripts/Sprite_Battler.rb +231 -0
- data/lib/rgss3_default_scripts/Sprite_Character.rb +226 -0
- data/lib/rgss3_default_scripts/Sprite_Picture.rb +82 -0
- data/lib/rgss3_default_scripts/Sprite_Timer.rb +77 -0
- data/lib/rgss3_default_scripts/Spriteset_Battle.rb +389 -0
- data/lib/rgss3_default_scripts/Spriteset_Map.rb +273 -0
- data/lib/rgss3_default_scripts/Spriteset_Weather.rb +184 -0
- data/lib/rgss3_default_scripts/Vocab.rb +145 -0
- data/lib/rgss3_default_scripts/Window_ActorCommand.rb +78 -0
- data/lib/rgss3_default_scripts/Window_Base.rb +571 -0
- data/lib/rgss3_default_scripts/Window_BattleActor.rb +38 -0
- data/lib/rgss3_default_scripts/Window_BattleEnemy.rb +70 -0
- data/lib/rgss3_default_scripts/Window_BattleItem.rb +40 -0
- data/lib/rgss3_default_scripts/Window_BattleLog.rb +425 -0
- data/lib/rgss3_default_scripts/Window_BattleSkill.rb +34 -0
- data/lib/rgss3_default_scripts/Window_BattleStatus.rb +111 -0
- data/lib/rgss3_default_scripts/Window_ChoiceList.rb +88 -0
- data/lib/rgss3_default_scripts/Window_Command.rb +152 -0
- data/lib/rgss3_default_scripts/Window_DebugLeft.rb +104 -0
- data/lib/rgss3_default_scripts/Window_DebugRight.rb +119 -0
- data/lib/rgss3_default_scripts/Window_EquipCommand.rb +36 -0
- data/lib/rgss3_default_scripts/Window_EquipItem.rb +78 -0
- data/lib/rgss3_default_scripts/Window_EquipSlot.rb +111 -0
- data/lib/rgss3_default_scripts/Window_EquipStatus.rb +97 -0
- data/lib/rgss3_default_scripts/Window_GameEnd.rb +38 -0
- data/lib/rgss3_default_scripts/Window_Gold.rb +47 -0
- data/lib/rgss3_default_scripts/Window_Help.rb +43 -0
- data/lib/rgss3_default_scripts/Window_HorzCommand.rb +106 -0
- data/lib/rgss3_default_scripts/Window_ItemCategory.rb +54 -0
- data/lib/rgss3_default_scripts/Window_ItemList.rb +117 -0
- data/lib/rgss3_default_scripts/Window_KeyItem.rb +55 -0
- data/lib/rgss3_default_scripts/Window_MapName.rb +96 -0
- data/lib/rgss3_default_scripts/Window_MenuActor.rb +43 -0
- data/lib/rgss3_default_scripts/Window_MenuCommand.rb +106 -0
- data/lib/rgss3_default_scripts/Window_MenuStatus.rb +85 -0
- data/lib/rgss3_default_scripts/Window_Message.rb +397 -0
- data/lib/rgss3_default_scripts/Window_NameEdit.rb +129 -0
- data/lib/rgss3_default_scripts/Window_NameInput.rb +253 -0
- data/lib/rgss3_default_scripts/Window_NumberInput.rb +148 -0
- data/lib/rgss3_default_scripts/Window_PartyCommand.rb +47 -0
- data/lib/rgss3_default_scripts/Window_SaveFile.rb +69 -0
- data/lib/rgss3_default_scripts/Window_ScrollText.rb +90 -0
- data/lib/rgss3_default_scripts/Window_Selectable.rb +442 -0
- data/lib/rgss3_default_scripts/Window_ShopBuy.rb +115 -0
- data/lib/rgss3_default_scripts/Window_ShopCommand.rb +36 -0
- data/lib/rgss3_default_scripts/Window_ShopNumber.rb +137 -0
- data/lib/rgss3_default_scripts/Window_ShopSell.rb +27 -0
- data/lib/rgss3_default_scripts/Window_ShopStatus.rb +124 -0
- data/lib/rgss3_default_scripts/Window_SkillCommand.rb +76 -0
- data/lib/rgss3_default_scripts/Window_SkillList.rb +121 -0
- data/lib/rgss3_default_scripts/Window_SkillStatus.rb +38 -0
- data/lib/rgss3_default_scripts/Window_Status.rb +125 -0
- data/lib/rgss3_default_scripts/Window_TitleCommand.rb +45 -0
- data/rgss3_default_scripts.gemspec +23 -0
- 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
|