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.
- 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
|