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