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,22 @@
|
|
1
|
+
#==============================================================================
|
2
|
+
# ** Game_Actors
|
3
|
+
#------------------------------------------------------------------------------
|
4
|
+
# This is a wrapper for an actor array. Instances of this class are referenced
|
5
|
+
# by $game_actors.
|
6
|
+
#==============================================================================
|
7
|
+
|
8
|
+
class Game_Actors
|
9
|
+
#--------------------------------------------------------------------------
|
10
|
+
# * Object Initialization
|
11
|
+
#--------------------------------------------------------------------------
|
12
|
+
def initialize
|
13
|
+
@data = []
|
14
|
+
end
|
15
|
+
#--------------------------------------------------------------------------
|
16
|
+
# * Get Actor
|
17
|
+
#--------------------------------------------------------------------------
|
18
|
+
def [](actor_id)
|
19
|
+
return nil unless $data_actors[actor_id]
|
20
|
+
@data[actor_id] ||= Game_Actor.new(actor_id)
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
#==============================================================================
|
2
|
+
# ** Game_BaseItem
|
3
|
+
#------------------------------------------------------------------------------
|
4
|
+
# This class uniformly handles skills, items, weapons, and armor. References
|
5
|
+
# to the database object itself are not retained to enable inclusion in save
|
6
|
+
# data.
|
7
|
+
#==============================================================================
|
8
|
+
|
9
|
+
class Game_BaseItem
|
10
|
+
#--------------------------------------------------------------------------
|
11
|
+
# * Object Initialization
|
12
|
+
#--------------------------------------------------------------------------
|
13
|
+
def initialize
|
14
|
+
@class = nil
|
15
|
+
@item_id = 0
|
16
|
+
end
|
17
|
+
#--------------------------------------------------------------------------
|
18
|
+
# * Determine Class
|
19
|
+
#--------------------------------------------------------------------------
|
20
|
+
def is_skill?; @class == RPG::Skill; end
|
21
|
+
def is_item?; @class == RPG::Item; end
|
22
|
+
def is_weapon?; @class == RPG::Weapon; end
|
23
|
+
def is_armor?; @class == RPG::Armor; end
|
24
|
+
def is_nil?; @class == nil; end
|
25
|
+
#--------------------------------------------------------------------------
|
26
|
+
# * Get Item Object
|
27
|
+
#--------------------------------------------------------------------------
|
28
|
+
def object
|
29
|
+
return $data_skills[@item_id] if is_skill?
|
30
|
+
return $data_items[@item_id] if is_item?
|
31
|
+
return $data_weapons[@item_id] if is_weapon?
|
32
|
+
return $data_armors[@item_id] if is_armor?
|
33
|
+
return nil
|
34
|
+
end
|
35
|
+
#--------------------------------------------------------------------------
|
36
|
+
# * Set Item Object
|
37
|
+
#--------------------------------------------------------------------------
|
38
|
+
def object=(item)
|
39
|
+
@class = item ? item.class : nil
|
40
|
+
@item_id = item ? item.id : 0
|
41
|
+
end
|
42
|
+
#--------------------------------------------------------------------------
|
43
|
+
# * Set Equipment with ID
|
44
|
+
# is_weapon: Whether it is a weapon
|
45
|
+
# item_id: Weapon/armor ID
|
46
|
+
#--------------------------------------------------------------------------
|
47
|
+
def set_equip(is_weapon, item_id)
|
48
|
+
@class = is_weapon ? RPG::Weapon : RPG::Armor
|
49
|
+
@item_id = item_id
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,824 @@
|
|
1
|
+
#==============================================================================
|
2
|
+
# ** Game_Battler
|
3
|
+
#------------------------------------------------------------------------------
|
4
|
+
# A battler class with methods for sprites and actions added. This class
|
5
|
+
# is used as a super class of the Game_Actor class and Game_Enemy class.
|
6
|
+
#==============================================================================
|
7
|
+
|
8
|
+
class Game_Battler < Game_BattlerBase
|
9
|
+
#--------------------------------------------------------------------------
|
10
|
+
# * Constants (Effects)
|
11
|
+
#--------------------------------------------------------------------------
|
12
|
+
EFFECT_RECOVER_HP = 11 # HP Recovery
|
13
|
+
EFFECT_RECOVER_MP = 12 # MP Recovery
|
14
|
+
EFFECT_GAIN_TP = 13 # TP Gain
|
15
|
+
EFFECT_ADD_STATE = 21 # Add State
|
16
|
+
EFFECT_REMOVE_STATE = 22 # Remove State
|
17
|
+
EFFECT_ADD_BUFF = 31 # Add Buff
|
18
|
+
EFFECT_ADD_DEBUFF = 32 # Add Debuff
|
19
|
+
EFFECT_REMOVE_BUFF = 33 # Remove Buff
|
20
|
+
EFFECT_REMOVE_DEBUFF = 34 # Remove Debuff
|
21
|
+
EFFECT_SPECIAL = 41 # Special Effect
|
22
|
+
EFFECT_GROW = 42 # Raise Parameter
|
23
|
+
EFFECT_LEARN_SKILL = 43 # Learn Skill
|
24
|
+
EFFECT_COMMON_EVENT = 44 # Common Events
|
25
|
+
#--------------------------------------------------------------------------
|
26
|
+
# * Constants (Special Effects)
|
27
|
+
#--------------------------------------------------------------------------
|
28
|
+
SPECIAL_EFFECT_ESCAPE = 0 # Escape
|
29
|
+
#--------------------------------------------------------------------------
|
30
|
+
# * Public Instance Variables
|
31
|
+
#--------------------------------------------------------------------------
|
32
|
+
attr_reader :battler_name # battle graphic filename
|
33
|
+
attr_reader :battler_hue # battle graphic hue
|
34
|
+
attr_reader :action_times # action times
|
35
|
+
attr_reader :actions # combat actions (action side)
|
36
|
+
attr_reader :speed # action speed
|
37
|
+
attr_reader :result # action result (target side)
|
38
|
+
attr_accessor :last_target_index # last target
|
39
|
+
attr_accessor :animation_id # animation ID
|
40
|
+
attr_accessor :animation_mirror # animation flip horizontal flag
|
41
|
+
attr_accessor :sprite_effect_type # sprite effect
|
42
|
+
attr_accessor :magic_reflection # reflection flag
|
43
|
+
#--------------------------------------------------------------------------
|
44
|
+
# * Object Initialization
|
45
|
+
#--------------------------------------------------------------------------
|
46
|
+
def initialize
|
47
|
+
@battler_name = ""
|
48
|
+
@battler_hue = 0
|
49
|
+
@actions = []
|
50
|
+
@speed = 0
|
51
|
+
@result = Game_ActionResult.new(self)
|
52
|
+
@last_target_index = 0
|
53
|
+
@guarding = false
|
54
|
+
clear_sprite_effects
|
55
|
+
super
|
56
|
+
end
|
57
|
+
#--------------------------------------------------------------------------
|
58
|
+
# * Clear Sprite Effects
|
59
|
+
#--------------------------------------------------------------------------
|
60
|
+
def clear_sprite_effects
|
61
|
+
@animation_id = 0
|
62
|
+
@animation_mirror = false
|
63
|
+
@sprite_effect_type = nil
|
64
|
+
end
|
65
|
+
#--------------------------------------------------------------------------
|
66
|
+
# * Clear Actions
|
67
|
+
#--------------------------------------------------------------------------
|
68
|
+
def clear_actions
|
69
|
+
@actions.clear
|
70
|
+
end
|
71
|
+
#--------------------------------------------------------------------------
|
72
|
+
# * Clear State Information
|
73
|
+
#--------------------------------------------------------------------------
|
74
|
+
def clear_states
|
75
|
+
super
|
76
|
+
@result.clear_status_effects
|
77
|
+
end
|
78
|
+
#--------------------------------------------------------------------------
|
79
|
+
# * Add State
|
80
|
+
#--------------------------------------------------------------------------
|
81
|
+
def add_state(state_id)
|
82
|
+
if state_addable?(state_id)
|
83
|
+
add_new_state(state_id) unless state?(state_id)
|
84
|
+
reset_state_counts(state_id)
|
85
|
+
@result.added_states.push(state_id).uniq!
|
86
|
+
end
|
87
|
+
end
|
88
|
+
#--------------------------------------------------------------------------
|
89
|
+
# * Determine if States Are Addable
|
90
|
+
#--------------------------------------------------------------------------
|
91
|
+
def state_addable?(state_id)
|
92
|
+
alive? && $data_states[state_id] && !state_resist?(state_id) &&
|
93
|
+
!state_removed?(state_id) && !state_restrict?(state_id)
|
94
|
+
end
|
95
|
+
#--------------------------------------------------------------------------
|
96
|
+
# * Determine States Removed During Same Action
|
97
|
+
#--------------------------------------------------------------------------
|
98
|
+
def state_removed?(state_id)
|
99
|
+
@result.removed_states.include?(state_id)
|
100
|
+
end
|
101
|
+
#--------------------------------------------------------------------------
|
102
|
+
# * Determine States Removed by Action Restriction
|
103
|
+
#--------------------------------------------------------------------------
|
104
|
+
def state_restrict?(state_id)
|
105
|
+
$data_states[state_id].remove_by_restriction && restriction > 0
|
106
|
+
end
|
107
|
+
#--------------------------------------------------------------------------
|
108
|
+
# * Add New State
|
109
|
+
#--------------------------------------------------------------------------
|
110
|
+
def add_new_state(state_id)
|
111
|
+
die if state_id == death_state_id
|
112
|
+
@states.push(state_id)
|
113
|
+
on_restrict if restriction > 0
|
114
|
+
sort_states
|
115
|
+
refresh
|
116
|
+
end
|
117
|
+
#--------------------------------------------------------------------------
|
118
|
+
# * Processing Performed When Action Restriction Occurs
|
119
|
+
#--------------------------------------------------------------------------
|
120
|
+
def on_restrict
|
121
|
+
clear_actions
|
122
|
+
states.each do |state|
|
123
|
+
remove_state(state.id) if state.remove_by_restriction
|
124
|
+
end
|
125
|
+
end
|
126
|
+
#--------------------------------------------------------------------------
|
127
|
+
# * Reset State Counts (Turns and Steps)
|
128
|
+
#--------------------------------------------------------------------------
|
129
|
+
def reset_state_counts(state_id)
|
130
|
+
state = $data_states[state_id]
|
131
|
+
variance = 1 + [state.max_turns - state.min_turns, 0].max
|
132
|
+
@state_turns[state_id] = state.min_turns + rand(variance)
|
133
|
+
@state_steps[state_id] = state.steps_to_remove
|
134
|
+
end
|
135
|
+
#--------------------------------------------------------------------------
|
136
|
+
# * Remove State
|
137
|
+
#--------------------------------------------------------------------------
|
138
|
+
def remove_state(state_id)
|
139
|
+
if state?(state_id)
|
140
|
+
revive if state_id == death_state_id
|
141
|
+
erase_state(state_id)
|
142
|
+
refresh
|
143
|
+
@result.removed_states.push(state_id).uniq!
|
144
|
+
end
|
145
|
+
end
|
146
|
+
#--------------------------------------------------------------------------
|
147
|
+
# * Knock Out
|
148
|
+
#--------------------------------------------------------------------------
|
149
|
+
def die
|
150
|
+
@hp = 0
|
151
|
+
clear_states
|
152
|
+
clear_buffs
|
153
|
+
end
|
154
|
+
#--------------------------------------------------------------------------
|
155
|
+
# * Revive from Knock Out
|
156
|
+
#--------------------------------------------------------------------------
|
157
|
+
def revive
|
158
|
+
@hp = 1 if @hp == 0
|
159
|
+
end
|
160
|
+
#--------------------------------------------------------------------------
|
161
|
+
# * Escape
|
162
|
+
#--------------------------------------------------------------------------
|
163
|
+
def escape
|
164
|
+
hide if $game_party.in_battle
|
165
|
+
clear_actions
|
166
|
+
clear_states
|
167
|
+
Sound.play_escape
|
168
|
+
end
|
169
|
+
#--------------------------------------------------------------------------
|
170
|
+
# * Add Buff
|
171
|
+
#--------------------------------------------------------------------------
|
172
|
+
def add_buff(param_id, turns)
|
173
|
+
return unless alive?
|
174
|
+
@buffs[param_id] += 1 unless buff_max?(param_id)
|
175
|
+
erase_buff(param_id) if debuff?(param_id)
|
176
|
+
overwrite_buff_turns(param_id, turns)
|
177
|
+
@result.added_buffs.push(param_id).uniq!
|
178
|
+
refresh
|
179
|
+
end
|
180
|
+
#--------------------------------------------------------------------------
|
181
|
+
# * Add Debuff
|
182
|
+
#--------------------------------------------------------------------------
|
183
|
+
def add_debuff(param_id, turns)
|
184
|
+
return unless alive?
|
185
|
+
@buffs[param_id] -= 1 unless debuff_max?(param_id)
|
186
|
+
erase_buff(param_id) if buff?(param_id)
|
187
|
+
overwrite_buff_turns(param_id, turns)
|
188
|
+
@result.added_debuffs.push(param_id).uniq!
|
189
|
+
refresh
|
190
|
+
end
|
191
|
+
#--------------------------------------------------------------------------
|
192
|
+
# * Remove Buff/Debuff
|
193
|
+
#--------------------------------------------------------------------------
|
194
|
+
def remove_buff(param_id)
|
195
|
+
return unless alive?
|
196
|
+
return if @buffs[param_id] == 0
|
197
|
+
erase_buff(param_id)
|
198
|
+
@buff_turns.delete(param_id)
|
199
|
+
@result.removed_buffs.push(param_id).uniq!
|
200
|
+
refresh
|
201
|
+
end
|
202
|
+
#--------------------------------------------------------------------------
|
203
|
+
# * Erase Buff/Debuff
|
204
|
+
#--------------------------------------------------------------------------
|
205
|
+
def erase_buff(param_id)
|
206
|
+
@buffs[param_id] = 0
|
207
|
+
@buff_turns[param_id] = 0
|
208
|
+
end
|
209
|
+
#--------------------------------------------------------------------------
|
210
|
+
# * Determine Buff Status
|
211
|
+
#--------------------------------------------------------------------------
|
212
|
+
def buff?(param_id)
|
213
|
+
@buffs[param_id] > 0
|
214
|
+
end
|
215
|
+
#--------------------------------------------------------------------------
|
216
|
+
# * Determine Debuff Status
|
217
|
+
#--------------------------------------------------------------------------
|
218
|
+
def debuff?(param_id)
|
219
|
+
@buffs[param_id] < 0
|
220
|
+
end
|
221
|
+
#--------------------------------------------------------------------------
|
222
|
+
# * Determine if Buff Is at Maximum Level
|
223
|
+
#--------------------------------------------------------------------------
|
224
|
+
def buff_max?(param_id)
|
225
|
+
@buffs[param_id] == 2
|
226
|
+
end
|
227
|
+
#--------------------------------------------------------------------------
|
228
|
+
# * Determine if Debuff Is at Maximum Level
|
229
|
+
#--------------------------------------------------------------------------
|
230
|
+
def debuff_max?(param_id)
|
231
|
+
@buffs[param_id] == -2
|
232
|
+
end
|
233
|
+
#--------------------------------------------------------------------------
|
234
|
+
# * Overwrite Buff/Debuff Turns
|
235
|
+
# Doesn't overwrite if number of turns would become shorter.
|
236
|
+
#--------------------------------------------------------------------------
|
237
|
+
def overwrite_buff_turns(param_id, turns)
|
238
|
+
@buff_turns[param_id] = turns if @buff_turns[param_id].to_i < turns
|
239
|
+
end
|
240
|
+
#--------------------------------------------------------------------------
|
241
|
+
# * Update State Turn Count
|
242
|
+
#--------------------------------------------------------------------------
|
243
|
+
def update_state_turns
|
244
|
+
states.each do |state|
|
245
|
+
@state_turns[state.id] -= 1 if @state_turns[state.id] > 0
|
246
|
+
end
|
247
|
+
end
|
248
|
+
#--------------------------------------------------------------------------
|
249
|
+
# * Update Buff/Debuff Turn Count
|
250
|
+
#--------------------------------------------------------------------------
|
251
|
+
def update_buff_turns
|
252
|
+
@buff_turns.keys.each do |param_id|
|
253
|
+
@buff_turns[param_id] -= 1 if @buff_turns[param_id] > 0
|
254
|
+
end
|
255
|
+
end
|
256
|
+
#--------------------------------------------------------------------------
|
257
|
+
# * Remove Battle States
|
258
|
+
#--------------------------------------------------------------------------
|
259
|
+
def remove_battle_states
|
260
|
+
states.each do |state|
|
261
|
+
remove_state(state.id) if state.remove_at_battle_end
|
262
|
+
end
|
263
|
+
end
|
264
|
+
#--------------------------------------------------------------------------
|
265
|
+
# * Remove All Buffs/Debuffs
|
266
|
+
#--------------------------------------------------------------------------
|
267
|
+
def remove_all_buffs
|
268
|
+
@buffs.size.times {|param_id| remove_buff(param_id) }
|
269
|
+
end
|
270
|
+
#--------------------------------------------------------------------------
|
271
|
+
# * Automatically Remove States
|
272
|
+
# timing: Timing (1: End of action 2: End of turn)
|
273
|
+
#--------------------------------------------------------------------------
|
274
|
+
def remove_states_auto(timing)
|
275
|
+
states.each do |state|
|
276
|
+
if @state_turns[state.id] == 0 && state.auto_removal_timing == timing
|
277
|
+
remove_state(state.id)
|
278
|
+
end
|
279
|
+
end
|
280
|
+
end
|
281
|
+
#--------------------------------------------------------------------------
|
282
|
+
# * Automatically Remove Buffs/Debuffs
|
283
|
+
#--------------------------------------------------------------------------
|
284
|
+
def remove_buffs_auto
|
285
|
+
@buffs.size.times do |param_id|
|
286
|
+
next if @buffs[param_id] == 0 || @buff_turns[param_id] > 0
|
287
|
+
remove_buff(param_id)
|
288
|
+
end
|
289
|
+
end
|
290
|
+
#--------------------------------------------------------------------------
|
291
|
+
# * Remove State by Damage
|
292
|
+
#--------------------------------------------------------------------------
|
293
|
+
def remove_states_by_damage
|
294
|
+
states.each do |state|
|
295
|
+
if state.remove_by_damage && rand(100) < state.chance_by_damage
|
296
|
+
remove_state(state.id)
|
297
|
+
end
|
298
|
+
end
|
299
|
+
end
|
300
|
+
#--------------------------------------------------------------------------
|
301
|
+
# * Determine Action Times
|
302
|
+
#--------------------------------------------------------------------------
|
303
|
+
def make_action_times
|
304
|
+
action_plus_set.inject(1) {|r, p| rand < p ? r + 1 : r }
|
305
|
+
end
|
306
|
+
#--------------------------------------------------------------------------
|
307
|
+
# * Create Battle Action
|
308
|
+
#--------------------------------------------------------------------------
|
309
|
+
def make_actions
|
310
|
+
clear_actions
|
311
|
+
return unless movable?
|
312
|
+
@actions = Array.new(make_action_times) { Game_Action.new(self) }
|
313
|
+
end
|
314
|
+
#--------------------------------------------------------------------------
|
315
|
+
# * Determine Action Speed
|
316
|
+
#--------------------------------------------------------------------------
|
317
|
+
def make_speed
|
318
|
+
@speed = @actions.collect {|action| action.speed }.min || 0
|
319
|
+
end
|
320
|
+
#--------------------------------------------------------------------------
|
321
|
+
# * Get Current Action
|
322
|
+
#--------------------------------------------------------------------------
|
323
|
+
def current_action
|
324
|
+
@actions[0]
|
325
|
+
end
|
326
|
+
#--------------------------------------------------------------------------
|
327
|
+
# * Remove Current Action
|
328
|
+
#--------------------------------------------------------------------------
|
329
|
+
def remove_current_action
|
330
|
+
@actions.shift
|
331
|
+
end
|
332
|
+
#--------------------------------------------------------------------------
|
333
|
+
# * Force Action
|
334
|
+
#--------------------------------------------------------------------------
|
335
|
+
def force_action(skill_id, target_index)
|
336
|
+
clear_actions
|
337
|
+
action = Game_Action.new(self, true)
|
338
|
+
action.set_skill(skill_id)
|
339
|
+
if target_index == -2
|
340
|
+
action.target_index = last_target_index
|
341
|
+
elsif target_index == -1
|
342
|
+
action.decide_random_target
|
343
|
+
else
|
344
|
+
action.target_index = target_index
|
345
|
+
end
|
346
|
+
@actions.push(action)
|
347
|
+
end
|
348
|
+
#--------------------------------------------------------------------------
|
349
|
+
# * Calculate Damage
|
350
|
+
#--------------------------------------------------------------------------
|
351
|
+
def make_damage_value(user, item)
|
352
|
+
value = item.damage.eval(user, self, $game_variables)
|
353
|
+
value *= item_element_rate(user, item)
|
354
|
+
value *= pdr if item.physical?
|
355
|
+
value *= mdr if item.magical?
|
356
|
+
value *= rec if item.damage.recover?
|
357
|
+
value = apply_critical(value) if @result.critical
|
358
|
+
value = apply_variance(value, item.damage.variance)
|
359
|
+
value = apply_guard(value)
|
360
|
+
@result.make_damage(value.to_i, item)
|
361
|
+
end
|
362
|
+
#--------------------------------------------------------------------------
|
363
|
+
# * Get Element Modifier for Skill/Item
|
364
|
+
#--------------------------------------------------------------------------
|
365
|
+
def item_element_rate(user, item)
|
366
|
+
if item.damage.element_id < 0
|
367
|
+
user.atk_elements.empty? ? 1.0 : elements_max_rate(user.atk_elements)
|
368
|
+
else
|
369
|
+
element_rate(item.damage.element_id)
|
370
|
+
end
|
371
|
+
end
|
372
|
+
#--------------------------------------------------------------------------
|
373
|
+
# * Get Maximum Elemental Adjustment Amount
|
374
|
+
# elements : An array of attribute IDs
|
375
|
+
# Returns the most effective adjustment of all elemental alignments.
|
376
|
+
#--------------------------------------------------------------------------
|
377
|
+
def elements_max_rate(elements)
|
378
|
+
elements.inject([0.0]) {|r, i| r.push(element_rate(i)) }.max
|
379
|
+
end
|
380
|
+
#--------------------------------------------------------------------------
|
381
|
+
# * Apply Critical
|
382
|
+
#--------------------------------------------------------------------------
|
383
|
+
def apply_critical(damage)
|
384
|
+
damage * 3
|
385
|
+
end
|
386
|
+
#--------------------------------------------------------------------------
|
387
|
+
# * Applying Variance
|
388
|
+
#--------------------------------------------------------------------------
|
389
|
+
def apply_variance(damage, variance)
|
390
|
+
amp = [damage.abs * variance / 100, 0].max.to_i
|
391
|
+
var = rand(amp + 1) + rand(amp + 1) - amp
|
392
|
+
damage >= 0 ? damage + var : damage - var
|
393
|
+
end
|
394
|
+
#--------------------------------------------------------------------------
|
395
|
+
# * Applying Guard Adjustment
|
396
|
+
#--------------------------------------------------------------------------
|
397
|
+
def apply_guard(damage)
|
398
|
+
damage / (damage > 0 && guard? ? 2 * grd : 1)
|
399
|
+
end
|
400
|
+
#--------------------------------------------------------------------------
|
401
|
+
# * Damage Processing
|
402
|
+
# @result.hp_damage @result.mp_damage @result.hp_drain
|
403
|
+
# @result.mp_drain must be set before call.
|
404
|
+
#--------------------------------------------------------------------------
|
405
|
+
def execute_damage(user)
|
406
|
+
on_damage(@result.hp_damage) if @result.hp_damage > 0
|
407
|
+
self.hp -= @result.hp_damage
|
408
|
+
self.mp -= @result.mp_damage
|
409
|
+
user.hp += @result.hp_drain
|
410
|
+
user.mp += @result.mp_drain
|
411
|
+
end
|
412
|
+
#--------------------------------------------------------------------------
|
413
|
+
# * Use Skill/Item
|
414
|
+
# Called for the acting side and applies the effect to other than the user.
|
415
|
+
#--------------------------------------------------------------------------
|
416
|
+
def use_item(item)
|
417
|
+
pay_skill_cost(item) if item.is_a?(RPG::Skill)
|
418
|
+
consume_item(item) if item.is_a?(RPG::Item)
|
419
|
+
item.effects.each {|effect| item_global_effect_apply(effect) }
|
420
|
+
end
|
421
|
+
#--------------------------------------------------------------------------
|
422
|
+
# * Consume Items
|
423
|
+
#--------------------------------------------------------------------------
|
424
|
+
def consume_item(item)
|
425
|
+
$game_party.consume_item(item)
|
426
|
+
end
|
427
|
+
#--------------------------------------------------------------------------
|
428
|
+
# * Apply Effect of Use to Other Than User
|
429
|
+
#--------------------------------------------------------------------------
|
430
|
+
def item_global_effect_apply(effect)
|
431
|
+
if effect.code == EFFECT_COMMON_EVENT
|
432
|
+
$game_temp.reserve_common_event(effect.data_id)
|
433
|
+
end
|
434
|
+
end
|
435
|
+
#--------------------------------------------------------------------------
|
436
|
+
# * Test Skill/Item Application
|
437
|
+
# Used to determine, for example, if a character is already fully healed
|
438
|
+
# and so cannot recover anymore.
|
439
|
+
#--------------------------------------------------------------------------
|
440
|
+
def item_test(user, item)
|
441
|
+
return false if item.for_dead_friend? != dead?
|
442
|
+
return true if $game_party.in_battle
|
443
|
+
return true if item.for_opponent?
|
444
|
+
return true if item.damage.recover? && item.damage.to_hp? && hp < mhp
|
445
|
+
return true if item.damage.recover? && item.damage.to_mp? && mp < mmp
|
446
|
+
return true if item_has_any_valid_effects?(user, item)
|
447
|
+
return false
|
448
|
+
end
|
449
|
+
#--------------------------------------------------------------------------
|
450
|
+
# * Determine if Skill/Item Has Any Valid Effects
|
451
|
+
#--------------------------------------------------------------------------
|
452
|
+
def item_has_any_valid_effects?(user, item)
|
453
|
+
item.effects.any? {|effect| item_effect_test(user, item, effect) }
|
454
|
+
end
|
455
|
+
#--------------------------------------------------------------------------
|
456
|
+
# * Calculate Counterattack Rate for Skill/Item
|
457
|
+
#--------------------------------------------------------------------------
|
458
|
+
def item_cnt(user, item)
|
459
|
+
return 0 unless item.physical? # Hit type is not physical
|
460
|
+
return 0 unless opposite?(user) # No counterattack on allies
|
461
|
+
return cnt # Return counterattack rate
|
462
|
+
end
|
463
|
+
#--------------------------------------------------------------------------
|
464
|
+
# * Calculate Reflection Rate of Skill/Item
|
465
|
+
#--------------------------------------------------------------------------
|
466
|
+
def item_mrf(user, item)
|
467
|
+
return mrf if item.magical? # Return magic reflection if magic attack
|
468
|
+
return 0
|
469
|
+
end
|
470
|
+
#--------------------------------------------------------------------------
|
471
|
+
# * Calculate Hit Rate of Skill/Item
|
472
|
+
#--------------------------------------------------------------------------
|
473
|
+
def item_hit(user, item)
|
474
|
+
rate = item.success_rate * 0.01 # Get success rate
|
475
|
+
rate *= user.hit if item.physical? # Physical attack: Multiply hit rate
|
476
|
+
return rate # Return calculated hit rate
|
477
|
+
end
|
478
|
+
#--------------------------------------------------------------------------
|
479
|
+
# * Calculate Evasion Rate for Skill/Item
|
480
|
+
#--------------------------------------------------------------------------
|
481
|
+
def item_eva(user, item)
|
482
|
+
return eva if item.physical? # Return evasion if physical attack
|
483
|
+
return mev if item.magical? # Return magic evasion if magic attack
|
484
|
+
return 0
|
485
|
+
end
|
486
|
+
#--------------------------------------------------------------------------
|
487
|
+
# * Calculate Critical Rate of Skill/Item
|
488
|
+
#--------------------------------------------------------------------------
|
489
|
+
def item_cri(user, item)
|
490
|
+
item.damage.critical ? user.cri * (1 - cev) : 0
|
491
|
+
end
|
492
|
+
#--------------------------------------------------------------------------
|
493
|
+
# * Apply Normal Attack Effects
|
494
|
+
#--------------------------------------------------------------------------
|
495
|
+
def attack_apply(attacker)
|
496
|
+
item_apply(attacker, $data_skills[attacker.attack_skill_id])
|
497
|
+
end
|
498
|
+
#--------------------------------------------------------------------------
|
499
|
+
# * Apply Effect of Skill/Item
|
500
|
+
#--------------------------------------------------------------------------
|
501
|
+
def item_apply(user, item)
|
502
|
+
@result.clear
|
503
|
+
@result.used = item_test(user, item)
|
504
|
+
@result.missed = (@result.used && rand >= item_hit(user, item))
|
505
|
+
@result.evaded = (!@result.missed && rand < item_eva(user, item))
|
506
|
+
if @result.hit?
|
507
|
+
unless item.damage.none?
|
508
|
+
@result.critical = (rand < item_cri(user, item))
|
509
|
+
make_damage_value(user, item)
|
510
|
+
execute_damage(user)
|
511
|
+
end
|
512
|
+
item.effects.each {|effect| item_effect_apply(user, item, effect) }
|
513
|
+
item_user_effect(user, item)
|
514
|
+
end
|
515
|
+
end
|
516
|
+
#--------------------------------------------------------------------------
|
517
|
+
# * Test Effect
|
518
|
+
#--------------------------------------------------------------------------
|
519
|
+
def item_effect_test(user, item, effect)
|
520
|
+
case effect.code
|
521
|
+
when EFFECT_RECOVER_HP
|
522
|
+
hp < mhp || effect.value1 < 0 || effect.value2 < 0
|
523
|
+
when EFFECT_RECOVER_MP
|
524
|
+
mp < mmp || effect.value1 < 0 || effect.value2 < 0
|
525
|
+
when EFFECT_ADD_STATE
|
526
|
+
!state?(effect.data_id)
|
527
|
+
when EFFECT_REMOVE_STATE
|
528
|
+
state?(effect.data_id)
|
529
|
+
when EFFECT_ADD_BUFF
|
530
|
+
!buff_max?(effect.data_id)
|
531
|
+
when EFFECT_ADD_DEBUFF
|
532
|
+
!debuff_max?(effect.data_id)
|
533
|
+
when EFFECT_REMOVE_BUFF
|
534
|
+
buff?(effect.data_id)
|
535
|
+
when EFFECT_REMOVE_DEBUFF
|
536
|
+
debuff?(effect.data_id)
|
537
|
+
when EFFECT_LEARN_SKILL
|
538
|
+
actor? && !skills.include?($data_skills[effect.data_id])
|
539
|
+
else
|
540
|
+
true
|
541
|
+
end
|
542
|
+
end
|
543
|
+
#--------------------------------------------------------------------------
|
544
|
+
# * Apply Effect
|
545
|
+
#--------------------------------------------------------------------------
|
546
|
+
def item_effect_apply(user, item, effect)
|
547
|
+
method_table = {
|
548
|
+
EFFECT_RECOVER_HP => :item_effect_recover_hp,
|
549
|
+
EFFECT_RECOVER_MP => :item_effect_recover_mp,
|
550
|
+
EFFECT_GAIN_TP => :item_effect_gain_tp,
|
551
|
+
EFFECT_ADD_STATE => :item_effect_add_state,
|
552
|
+
EFFECT_REMOVE_STATE => :item_effect_remove_state,
|
553
|
+
EFFECT_ADD_BUFF => :item_effect_add_buff,
|
554
|
+
EFFECT_ADD_DEBUFF => :item_effect_add_debuff,
|
555
|
+
EFFECT_REMOVE_BUFF => :item_effect_remove_buff,
|
556
|
+
EFFECT_REMOVE_DEBUFF => :item_effect_remove_debuff,
|
557
|
+
EFFECT_SPECIAL => :item_effect_special,
|
558
|
+
EFFECT_GROW => :item_effect_grow,
|
559
|
+
EFFECT_LEARN_SKILL => :item_effect_learn_skill,
|
560
|
+
EFFECT_COMMON_EVENT => :item_effect_common_event,
|
561
|
+
}
|
562
|
+
method_name = method_table[effect.code]
|
563
|
+
send(method_name, user, item, effect) if method_name
|
564
|
+
end
|
565
|
+
#--------------------------------------------------------------------------
|
566
|
+
# * [HP Recovery] Effect
|
567
|
+
#--------------------------------------------------------------------------
|
568
|
+
def item_effect_recover_hp(user, item, effect)
|
569
|
+
value = (mhp * effect.value1 + effect.value2) * rec
|
570
|
+
value *= user.pha if item.is_a?(RPG::Item)
|
571
|
+
value = value.to_i
|
572
|
+
@result.hp_damage -= value
|
573
|
+
@result.success = true
|
574
|
+
self.hp += value
|
575
|
+
end
|
576
|
+
#--------------------------------------------------------------------------
|
577
|
+
# * [MP Recovery] Effect
|
578
|
+
#--------------------------------------------------------------------------
|
579
|
+
def item_effect_recover_mp(user, item, effect)
|
580
|
+
value = (mmp * effect.value1 + effect.value2) * rec
|
581
|
+
value *= user.pha if item.is_a?(RPG::Item)
|
582
|
+
value = value.to_i
|
583
|
+
@result.mp_damage -= value
|
584
|
+
@result.success = true if value != 0
|
585
|
+
self.mp += value
|
586
|
+
end
|
587
|
+
#--------------------------------------------------------------------------
|
588
|
+
# * [TP Gain] Effect
|
589
|
+
#--------------------------------------------------------------------------
|
590
|
+
def item_effect_gain_tp(user, item, effect)
|
591
|
+
value = effect.value1.to_i
|
592
|
+
@result.tp_damage -= value
|
593
|
+
@result.success = true if value != 0
|
594
|
+
self.tp += value
|
595
|
+
end
|
596
|
+
#--------------------------------------------------------------------------
|
597
|
+
# * [Add State] Effect
|
598
|
+
#--------------------------------------------------------------------------
|
599
|
+
def item_effect_add_state(user, item, effect)
|
600
|
+
if effect.data_id == 0
|
601
|
+
item_effect_add_state_attack(user, item, effect)
|
602
|
+
else
|
603
|
+
item_effect_add_state_normal(user, item, effect)
|
604
|
+
end
|
605
|
+
end
|
606
|
+
#--------------------------------------------------------------------------
|
607
|
+
# * [Add State] Effect: Normal Attack
|
608
|
+
#--------------------------------------------------------------------------
|
609
|
+
def item_effect_add_state_attack(user, item, effect)
|
610
|
+
user.atk_states.each do |state_id|
|
611
|
+
chance = effect.value1
|
612
|
+
chance *= state_rate(state_id)
|
613
|
+
chance *= user.atk_states_rate(state_id)
|
614
|
+
chance *= luk_effect_rate(user)
|
615
|
+
if rand < chance
|
616
|
+
add_state(state_id)
|
617
|
+
@result.success = true
|
618
|
+
end
|
619
|
+
end
|
620
|
+
end
|
621
|
+
#--------------------------------------------------------------------------
|
622
|
+
# * [Add State] Effect: Normal
|
623
|
+
#--------------------------------------------------------------------------
|
624
|
+
def item_effect_add_state_normal(user, item, effect)
|
625
|
+
chance = effect.value1
|
626
|
+
chance *= state_rate(effect.data_id) if opposite?(user)
|
627
|
+
chance *= luk_effect_rate(user) if opposite?(user)
|
628
|
+
if rand < chance
|
629
|
+
add_state(effect.data_id)
|
630
|
+
@result.success = true
|
631
|
+
end
|
632
|
+
end
|
633
|
+
#--------------------------------------------------------------------------
|
634
|
+
# * [Remove State] Effect
|
635
|
+
#--------------------------------------------------------------------------
|
636
|
+
def item_effect_remove_state(user, item, effect)
|
637
|
+
chance = effect.value1
|
638
|
+
if rand < chance
|
639
|
+
remove_state(effect.data_id)
|
640
|
+
@result.success = true
|
641
|
+
end
|
642
|
+
end
|
643
|
+
#--------------------------------------------------------------------------
|
644
|
+
# * [Buff] Effect
|
645
|
+
#--------------------------------------------------------------------------
|
646
|
+
def item_effect_add_buff(user, item, effect)
|
647
|
+
add_buff(effect.data_id, effect.value1)
|
648
|
+
@result.success = true
|
649
|
+
end
|
650
|
+
#--------------------------------------------------------------------------
|
651
|
+
# * [Debuff] Effect
|
652
|
+
#--------------------------------------------------------------------------
|
653
|
+
def item_effect_add_debuff(user, item, effect)
|
654
|
+
chance = debuff_rate(effect.data_id) * luk_effect_rate(user)
|
655
|
+
if rand < chance
|
656
|
+
add_debuff(effect.data_id, effect.value1)
|
657
|
+
@result.success = true
|
658
|
+
end
|
659
|
+
end
|
660
|
+
#--------------------------------------------------------------------------
|
661
|
+
# * [Remove Buff] Effect
|
662
|
+
#--------------------------------------------------------------------------
|
663
|
+
def item_effect_remove_buff(user, item, effect)
|
664
|
+
remove_buff(effect.data_id) if @buffs[effect.data_id] > 0
|
665
|
+
@result.success = true
|
666
|
+
end
|
667
|
+
#--------------------------------------------------------------------------
|
668
|
+
# * [Remove Debuff] Effect
|
669
|
+
#--------------------------------------------------------------------------
|
670
|
+
def item_effect_remove_debuff(user, item, effect)
|
671
|
+
remove_buff(effect.data_id) if @buffs[effect.data_id] < 0
|
672
|
+
@result.success = true
|
673
|
+
end
|
674
|
+
#--------------------------------------------------------------------------
|
675
|
+
# * [Special Effect] Effect
|
676
|
+
#--------------------------------------------------------------------------
|
677
|
+
def item_effect_special(user, item, effect)
|
678
|
+
case effect.data_id
|
679
|
+
when SPECIAL_EFFECT_ESCAPE
|
680
|
+
escape
|
681
|
+
end
|
682
|
+
@result.success = true
|
683
|
+
end
|
684
|
+
#--------------------------------------------------------------------------
|
685
|
+
# * [Raise Parameter] Effect
|
686
|
+
#--------------------------------------------------------------------------
|
687
|
+
def item_effect_grow(user, item, effect)
|
688
|
+
add_param(effect.data_id, effect.value1.to_i)
|
689
|
+
@result.success = true
|
690
|
+
end
|
691
|
+
#--------------------------------------------------------------------------
|
692
|
+
# * [Learn Skill] Effect
|
693
|
+
#--------------------------------------------------------------------------
|
694
|
+
def item_effect_learn_skill(user, item, effect)
|
695
|
+
learn_skill(effect.data_id) if actor?
|
696
|
+
@result.success = true
|
697
|
+
end
|
698
|
+
#--------------------------------------------------------------------------
|
699
|
+
# * [Common Event] Effect
|
700
|
+
#--------------------------------------------------------------------------
|
701
|
+
def item_effect_common_event(user, item, effect)
|
702
|
+
end
|
703
|
+
#--------------------------------------------------------------------------
|
704
|
+
# * Effect of Skill/Item on Using Side
|
705
|
+
#--------------------------------------------------------------------------
|
706
|
+
def item_user_effect(user, item)
|
707
|
+
user.tp += item.tp_gain * user.tcr
|
708
|
+
end
|
709
|
+
#--------------------------------------------------------------------------
|
710
|
+
# * Get Effect Change Rate by Luck
|
711
|
+
#--------------------------------------------------------------------------
|
712
|
+
def luk_effect_rate(user)
|
713
|
+
[1.0 + (user.luk - luk) * 0.001, 0.0].max
|
714
|
+
end
|
715
|
+
#--------------------------------------------------------------------------
|
716
|
+
# * Determine if Hostile Relation
|
717
|
+
#--------------------------------------------------------------------------
|
718
|
+
def opposite?(battler)
|
719
|
+
actor? != battler.actor? || battler.magic_reflection
|
720
|
+
end
|
721
|
+
#--------------------------------------------------------------------------
|
722
|
+
# * Effect When Taking Damage on Map
|
723
|
+
#--------------------------------------------------------------------------
|
724
|
+
def perform_map_damage_effect
|
725
|
+
end
|
726
|
+
#--------------------------------------------------------------------------
|
727
|
+
# * Initialize TP
|
728
|
+
#--------------------------------------------------------------------------
|
729
|
+
def init_tp
|
730
|
+
self.tp = rand * 25
|
731
|
+
end
|
732
|
+
#--------------------------------------------------------------------------
|
733
|
+
# * Clear TP
|
734
|
+
#--------------------------------------------------------------------------
|
735
|
+
def clear_tp
|
736
|
+
self.tp = 0
|
737
|
+
end
|
738
|
+
#--------------------------------------------------------------------------
|
739
|
+
# * Charge TP by Damage Suffered
|
740
|
+
#--------------------------------------------------------------------------
|
741
|
+
def charge_tp_by_damage(damage_rate)
|
742
|
+
self.tp += 50 * damage_rate * tcr
|
743
|
+
end
|
744
|
+
#--------------------------------------------------------------------------
|
745
|
+
# * Regenerate HP
|
746
|
+
#--------------------------------------------------------------------------
|
747
|
+
def regenerate_hp
|
748
|
+
damage = -(mhp * hrg).to_i
|
749
|
+
perform_map_damage_effect if $game_party.in_battle && damage > 0
|
750
|
+
@result.hp_damage = [damage, max_slip_damage].min
|
751
|
+
self.hp -= @result.hp_damage
|
752
|
+
end
|
753
|
+
#--------------------------------------------------------------------------
|
754
|
+
# * Get Maximum Value of Slip Damage
|
755
|
+
#--------------------------------------------------------------------------
|
756
|
+
def max_slip_damage
|
757
|
+
$data_system.opt_slip_death ? hp : [hp - 1, 0].max
|
758
|
+
end
|
759
|
+
#--------------------------------------------------------------------------
|
760
|
+
# * Regenerate MP
|
761
|
+
#--------------------------------------------------------------------------
|
762
|
+
def regenerate_mp
|
763
|
+
@result.mp_damage = -(mmp * mrg).to_i
|
764
|
+
self.mp -= @result.mp_damage
|
765
|
+
end
|
766
|
+
#--------------------------------------------------------------------------
|
767
|
+
# * Regenerate TP
|
768
|
+
#--------------------------------------------------------------------------
|
769
|
+
def regenerate_tp
|
770
|
+
self.tp += 100 * trg
|
771
|
+
end
|
772
|
+
#--------------------------------------------------------------------------
|
773
|
+
# * Regenerate All
|
774
|
+
#--------------------------------------------------------------------------
|
775
|
+
def regenerate_all
|
776
|
+
if alive?
|
777
|
+
regenerate_hp
|
778
|
+
regenerate_mp
|
779
|
+
regenerate_tp
|
780
|
+
end
|
781
|
+
end
|
782
|
+
#--------------------------------------------------------------------------
|
783
|
+
# * Processing at Start of Battle
|
784
|
+
#--------------------------------------------------------------------------
|
785
|
+
def on_battle_start
|
786
|
+
init_tp unless preserve_tp?
|
787
|
+
end
|
788
|
+
#--------------------------------------------------------------------------
|
789
|
+
# * Processing at End of Action
|
790
|
+
#--------------------------------------------------------------------------
|
791
|
+
def on_action_end
|
792
|
+
@result.clear
|
793
|
+
remove_states_auto(1)
|
794
|
+
remove_buffs_auto
|
795
|
+
end
|
796
|
+
#--------------------------------------------------------------------------
|
797
|
+
# * Processing at End of Turn
|
798
|
+
#--------------------------------------------------------------------------
|
799
|
+
def on_turn_end
|
800
|
+
@result.clear
|
801
|
+
regenerate_all
|
802
|
+
update_state_turns
|
803
|
+
update_buff_turns
|
804
|
+
remove_states_auto(2)
|
805
|
+
end
|
806
|
+
#--------------------------------------------------------------------------
|
807
|
+
# * Processing at End of Battle
|
808
|
+
#--------------------------------------------------------------------------
|
809
|
+
def on_battle_end
|
810
|
+
@result.clear
|
811
|
+
remove_battle_states
|
812
|
+
remove_all_buffs
|
813
|
+
clear_actions
|
814
|
+
clear_tp unless preserve_tp?
|
815
|
+
appear
|
816
|
+
end
|
817
|
+
#--------------------------------------------------------------------------
|
818
|
+
# * Processing When Suffering Damage
|
819
|
+
#--------------------------------------------------------------------------
|
820
|
+
def on_damage(value)
|
821
|
+
remove_states_by_damage
|
822
|
+
charge_tp_by_damage(value.to_f / mhp)
|
823
|
+
end
|
824
|
+
end
|