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,731 @@
|
|
1
|
+
#==============================================================================
|
2
|
+
# ** Game_BattlerBase
|
3
|
+
#------------------------------------------------------------------------------
|
4
|
+
# This base class handles battlers. It mainly contains methods for calculating
|
5
|
+
# parameters. It is used as a super class of the Game_Battler class.
|
6
|
+
#==============================================================================
|
7
|
+
|
8
|
+
class Game_BattlerBase
|
9
|
+
#--------------------------------------------------------------------------
|
10
|
+
# * Constants (Features)
|
11
|
+
#--------------------------------------------------------------------------
|
12
|
+
FEATURE_ELEMENT_RATE = 11 # Element Rate
|
13
|
+
FEATURE_DEBUFF_RATE = 12 # Debuff Rate
|
14
|
+
FEATURE_STATE_RATE = 13 # State Rate
|
15
|
+
FEATURE_STATE_RESIST = 14 # State Resist
|
16
|
+
FEATURE_PARAM = 21 # Parameter
|
17
|
+
FEATURE_XPARAM = 22 # Ex-Parameter
|
18
|
+
FEATURE_SPARAM = 23 # Sp-Parameter
|
19
|
+
FEATURE_ATK_ELEMENT = 31 # Atk Element
|
20
|
+
FEATURE_ATK_STATE = 32 # Atk State
|
21
|
+
FEATURE_ATK_SPEED = 33 # Atk Speed
|
22
|
+
FEATURE_ATK_TIMES = 34 # Atk Times+
|
23
|
+
FEATURE_STYPE_ADD = 41 # Add Skill Type
|
24
|
+
FEATURE_STYPE_SEAL = 42 # Disable Skill Type
|
25
|
+
FEATURE_SKILL_ADD = 43 # Add Skill
|
26
|
+
FEATURE_SKILL_SEAL = 44 # Disable Skill
|
27
|
+
FEATURE_EQUIP_WTYPE = 51 # Equip Weapon
|
28
|
+
FEATURE_EQUIP_ATYPE = 52 # Equip Armor
|
29
|
+
FEATURE_EQUIP_FIX = 53 # Lock Equip
|
30
|
+
FEATURE_EQUIP_SEAL = 54 # Seal Equip
|
31
|
+
FEATURE_SLOT_TYPE = 55 # Slot Type
|
32
|
+
FEATURE_ACTION_PLUS = 61 # Action Times+
|
33
|
+
FEATURE_SPECIAL_FLAG = 62 # Special Flag
|
34
|
+
FEATURE_COLLAPSE_TYPE = 63 # Collapse Effect
|
35
|
+
FEATURE_PARTY_ABILITY = 64 # Party Ability
|
36
|
+
#--------------------------------------------------------------------------
|
37
|
+
# * Constants (Feature Flags)
|
38
|
+
#--------------------------------------------------------------------------
|
39
|
+
FLAG_ID_AUTO_BATTLE = 0 # auto battle
|
40
|
+
FLAG_ID_GUARD = 1 # guard
|
41
|
+
FLAG_ID_SUBSTITUTE = 2 # substitute
|
42
|
+
FLAG_ID_PRESERVE_TP = 3 # preserve TP
|
43
|
+
#--------------------------------------------------------------------------
|
44
|
+
# * Constants (Starting Number of Buff/Debuff Icons)
|
45
|
+
#--------------------------------------------------------------------------
|
46
|
+
ICON_BUFF_START = 64 # buff (16 icons)
|
47
|
+
ICON_DEBUFF_START = 80 # debuff (16 icons)
|
48
|
+
#--------------------------------------------------------------------------
|
49
|
+
# * Public Instance Variables
|
50
|
+
#--------------------------------------------------------------------------
|
51
|
+
attr_reader :hp # HP
|
52
|
+
attr_reader :mp # MP
|
53
|
+
attr_reader :tp # TP
|
54
|
+
#--------------------------------------------------------------------------
|
55
|
+
# * Access Method by Parameter Abbreviations
|
56
|
+
#--------------------------------------------------------------------------
|
57
|
+
def mhp; param(0); end # MHP Maximum Hit Points
|
58
|
+
def mmp; param(1); end # MMP Maximum Magic Points
|
59
|
+
def atk; param(2); end # ATK ATtacK power
|
60
|
+
def def; param(3); end # DEF DEFense power
|
61
|
+
def mat; param(4); end # MAT Magic ATtack power
|
62
|
+
def mdf; param(5); end # MDF Magic DeFense power
|
63
|
+
def agi; param(6); end # AGI AGIlity
|
64
|
+
def luk; param(7); end # LUK LUcK
|
65
|
+
def hit; xparam(0); end # HIT HIT rate
|
66
|
+
def eva; xparam(1); end # EVA EVAsion rate
|
67
|
+
def cri; xparam(2); end # CRI CRItical rate
|
68
|
+
def cev; xparam(3); end # CEV Critical EVasion rate
|
69
|
+
def mev; xparam(4); end # MEV Magic EVasion rate
|
70
|
+
def mrf; xparam(5); end # MRF Magic ReFlection rate
|
71
|
+
def cnt; xparam(6); end # CNT CouNTer attack rate
|
72
|
+
def hrg; xparam(7); end # HRG Hp ReGeneration rate
|
73
|
+
def mrg; xparam(8); end # MRG Mp ReGeneration rate
|
74
|
+
def trg; xparam(9); end # TRG Tp ReGeneration rate
|
75
|
+
def tgr; sparam(0); end # TGR TarGet Rate
|
76
|
+
def grd; sparam(1); end # GRD GuaRD effect rate
|
77
|
+
def rec; sparam(2); end # REC RECovery effect rate
|
78
|
+
def pha; sparam(3); end # PHA PHArmacology
|
79
|
+
def mcr; sparam(4); end # MCR Mp Cost Rate
|
80
|
+
def tcr; sparam(5); end # TCR Tp Charge Rate
|
81
|
+
def pdr; sparam(6); end # PDR Physical Damage Rate
|
82
|
+
def mdr; sparam(7); end # MDR Magical Damage Rate
|
83
|
+
def fdr; sparam(8); end # FDR Floor Damage Rate
|
84
|
+
def exr; sparam(9); end # EXR EXperience Rate
|
85
|
+
#--------------------------------------------------------------------------
|
86
|
+
# * Object Initialization
|
87
|
+
#--------------------------------------------------------------------------
|
88
|
+
def initialize
|
89
|
+
@hp = @mp = @tp = 0
|
90
|
+
@hidden = false
|
91
|
+
clear_param_plus
|
92
|
+
clear_states
|
93
|
+
clear_buffs
|
94
|
+
end
|
95
|
+
#--------------------------------------------------------------------------
|
96
|
+
# * Clear Values Added to Parameter
|
97
|
+
#--------------------------------------------------------------------------
|
98
|
+
def clear_param_plus
|
99
|
+
@param_plus = [0] * 8
|
100
|
+
end
|
101
|
+
#--------------------------------------------------------------------------
|
102
|
+
# * Clear State Information
|
103
|
+
#--------------------------------------------------------------------------
|
104
|
+
def clear_states
|
105
|
+
@states = []
|
106
|
+
@state_turns = {}
|
107
|
+
@state_steps = {}
|
108
|
+
end
|
109
|
+
#--------------------------------------------------------------------------
|
110
|
+
# * Erase States
|
111
|
+
#--------------------------------------------------------------------------
|
112
|
+
def erase_state(state_id)
|
113
|
+
@states.delete(state_id)
|
114
|
+
@state_turns.delete(state_id)
|
115
|
+
@state_steps.delete(state_id)
|
116
|
+
end
|
117
|
+
#--------------------------------------------------------------------------
|
118
|
+
# * Clear Buff Information
|
119
|
+
#--------------------------------------------------------------------------
|
120
|
+
def clear_buffs
|
121
|
+
@buffs = Array.new(8) { 0 }
|
122
|
+
@buff_turns = {}
|
123
|
+
end
|
124
|
+
#--------------------------------------------------------------------------
|
125
|
+
# * Check State
|
126
|
+
#--------------------------------------------------------------------------
|
127
|
+
def state?(state_id)
|
128
|
+
@states.include?(state_id)
|
129
|
+
end
|
130
|
+
#--------------------------------------------------------------------------
|
131
|
+
# * Check K.O. State
|
132
|
+
#--------------------------------------------------------------------------
|
133
|
+
def death_state?
|
134
|
+
state?(death_state_id)
|
135
|
+
end
|
136
|
+
#--------------------------------------------------------------------------
|
137
|
+
# * Get State ID of K.O.
|
138
|
+
#--------------------------------------------------------------------------
|
139
|
+
def death_state_id
|
140
|
+
return 1
|
141
|
+
end
|
142
|
+
#--------------------------------------------------------------------------
|
143
|
+
# * Get Current States as an Object Array
|
144
|
+
#--------------------------------------------------------------------------
|
145
|
+
def states
|
146
|
+
@states.collect {|id| $data_states[id] }
|
147
|
+
end
|
148
|
+
#--------------------------------------------------------------------------
|
149
|
+
# * Get Current States as an Array of Icon Numbers
|
150
|
+
#--------------------------------------------------------------------------
|
151
|
+
def state_icons
|
152
|
+
icons = states.collect {|state| state.icon_index }
|
153
|
+
icons.delete(0)
|
154
|
+
icons
|
155
|
+
end
|
156
|
+
#--------------------------------------------------------------------------
|
157
|
+
# * Get Current Buffs/Debuffs as an Array of Icon Numbers
|
158
|
+
#--------------------------------------------------------------------------
|
159
|
+
def buff_icons
|
160
|
+
icons = []
|
161
|
+
@buffs.each_with_index {|lv, i| icons.push(buff_icon_index(lv, i)) }
|
162
|
+
icons.delete(0)
|
163
|
+
icons
|
164
|
+
end
|
165
|
+
#--------------------------------------------------------------------------
|
166
|
+
# * Get Icon Number Corresponding to Buff/Debuff
|
167
|
+
#--------------------------------------------------------------------------
|
168
|
+
def buff_icon_index(buff_level, param_id)
|
169
|
+
if buff_level > 0
|
170
|
+
return ICON_BUFF_START + (buff_level - 1) * 8 + param_id
|
171
|
+
elsif buff_level < 0
|
172
|
+
return ICON_DEBUFF_START + (-buff_level - 1) * 8 + param_id
|
173
|
+
else
|
174
|
+
return 0
|
175
|
+
end
|
176
|
+
end
|
177
|
+
#--------------------------------------------------------------------------
|
178
|
+
# * Get Array of All Objects Retaining Features
|
179
|
+
#--------------------------------------------------------------------------
|
180
|
+
def feature_objects
|
181
|
+
states
|
182
|
+
end
|
183
|
+
#--------------------------------------------------------------------------
|
184
|
+
# * Get Array of All Feature Objects
|
185
|
+
#--------------------------------------------------------------------------
|
186
|
+
def all_features
|
187
|
+
feature_objects.inject([]) {|r, obj| r + obj.features }
|
188
|
+
end
|
189
|
+
#--------------------------------------------------------------------------
|
190
|
+
# * Get Feature Object Array (Feature Codes Limited)
|
191
|
+
#--------------------------------------------------------------------------
|
192
|
+
def features(code)
|
193
|
+
all_features.select {|ft| ft.code == code }
|
194
|
+
end
|
195
|
+
#--------------------------------------------------------------------------
|
196
|
+
# * Get Feature Object Array (Feature Codes and Data IDs Limited)
|
197
|
+
#--------------------------------------------------------------------------
|
198
|
+
def features_with_id(code, id)
|
199
|
+
all_features.select {|ft| ft.code == code && ft.data_id == id }
|
200
|
+
end
|
201
|
+
#--------------------------------------------------------------------------
|
202
|
+
# * Calculate Complement of Feature Values
|
203
|
+
#--------------------------------------------------------------------------
|
204
|
+
def features_pi(code, id)
|
205
|
+
features_with_id(code, id).inject(1.0) {|r, ft| r *= ft.value }
|
206
|
+
end
|
207
|
+
#--------------------------------------------------------------------------
|
208
|
+
# * Calculate Sum of Feature Values (Specify Data ID)
|
209
|
+
#--------------------------------------------------------------------------
|
210
|
+
def features_sum(code, id)
|
211
|
+
features_with_id(code, id).inject(0.0) {|r, ft| r += ft.value }
|
212
|
+
end
|
213
|
+
#--------------------------------------------------------------------------
|
214
|
+
# * Calculate Sum of Feature Values (Data ID Unspecified)
|
215
|
+
#--------------------------------------------------------------------------
|
216
|
+
def features_sum_all(code)
|
217
|
+
features(code).inject(0.0) {|r, ft| r += ft.value }
|
218
|
+
end
|
219
|
+
#--------------------------------------------------------------------------
|
220
|
+
# * Calculate Set Sum of Features
|
221
|
+
#--------------------------------------------------------------------------
|
222
|
+
def features_set(code)
|
223
|
+
features(code).inject([]) {|r, ft| r |= [ft.data_id] }
|
224
|
+
end
|
225
|
+
#--------------------------------------------------------------------------
|
226
|
+
# * Get Base Value of Parameter
|
227
|
+
#--------------------------------------------------------------------------
|
228
|
+
def param_base(param_id)
|
229
|
+
return 0
|
230
|
+
end
|
231
|
+
#--------------------------------------------------------------------------
|
232
|
+
# * Get Added Value of Parameter
|
233
|
+
#--------------------------------------------------------------------------
|
234
|
+
def param_plus(param_id)
|
235
|
+
@param_plus[param_id]
|
236
|
+
end
|
237
|
+
#--------------------------------------------------------------------------
|
238
|
+
# * Get Reduced Value of Parameter
|
239
|
+
#--------------------------------------------------------------------------
|
240
|
+
def param_min(param_id)
|
241
|
+
return 0 if param_id == 1 # MMP
|
242
|
+
return 1
|
243
|
+
end
|
244
|
+
#--------------------------------------------------------------------------
|
245
|
+
# * Get Maximum Value of Parameter
|
246
|
+
#--------------------------------------------------------------------------
|
247
|
+
def param_max(param_id)
|
248
|
+
return 999999 if param_id == 0 # MHP
|
249
|
+
return 9999 if param_id == 1 # MMP
|
250
|
+
return 999
|
251
|
+
end
|
252
|
+
#--------------------------------------------------------------------------
|
253
|
+
# * Get Rate of Parameter Change
|
254
|
+
#--------------------------------------------------------------------------
|
255
|
+
def param_rate(param_id)
|
256
|
+
features_pi(FEATURE_PARAM, param_id)
|
257
|
+
end
|
258
|
+
#--------------------------------------------------------------------------
|
259
|
+
# * Get Rate of Change Due to Parameter Buff/Debuff
|
260
|
+
#--------------------------------------------------------------------------
|
261
|
+
def param_buff_rate(param_id)
|
262
|
+
@buffs[param_id] * 0.25 + 1.0
|
263
|
+
end
|
264
|
+
#--------------------------------------------------------------------------
|
265
|
+
# * Get Parameter
|
266
|
+
#--------------------------------------------------------------------------
|
267
|
+
def param(param_id)
|
268
|
+
value = param_base(param_id) + param_plus(param_id)
|
269
|
+
value *= param_rate(param_id) * param_buff_rate(param_id)
|
270
|
+
[[value, param_max(param_id)].min, param_min(param_id)].max.to_i
|
271
|
+
end
|
272
|
+
#--------------------------------------------------------------------------
|
273
|
+
# * Get Ex-Parameter
|
274
|
+
#--------------------------------------------------------------------------
|
275
|
+
def xparam(xparam_id)
|
276
|
+
features_sum(FEATURE_XPARAM, xparam_id)
|
277
|
+
end
|
278
|
+
#--------------------------------------------------------------------------
|
279
|
+
# * Get Sp-Parameter
|
280
|
+
#--------------------------------------------------------------------------
|
281
|
+
def sparam(sparam_id)
|
282
|
+
features_pi(FEATURE_SPARAM, sparam_id)
|
283
|
+
end
|
284
|
+
#--------------------------------------------------------------------------
|
285
|
+
# * Get Element Rate
|
286
|
+
#--------------------------------------------------------------------------
|
287
|
+
def element_rate(element_id)
|
288
|
+
features_pi(FEATURE_ELEMENT_RATE, element_id)
|
289
|
+
end
|
290
|
+
#--------------------------------------------------------------------------
|
291
|
+
# * Get Debuff Rate
|
292
|
+
#--------------------------------------------------------------------------
|
293
|
+
def debuff_rate(param_id)
|
294
|
+
features_pi(FEATURE_DEBUFF_RATE, param_id)
|
295
|
+
end
|
296
|
+
#--------------------------------------------------------------------------
|
297
|
+
# * Get State Rate
|
298
|
+
#--------------------------------------------------------------------------
|
299
|
+
def state_rate(state_id)
|
300
|
+
features_pi(FEATURE_STATE_RATE, state_id)
|
301
|
+
end
|
302
|
+
#--------------------------------------------------------------------------
|
303
|
+
# * Get Array of States to Resist
|
304
|
+
#--------------------------------------------------------------------------
|
305
|
+
def state_resist_set
|
306
|
+
features_set(FEATURE_STATE_RESIST)
|
307
|
+
end
|
308
|
+
#--------------------------------------------------------------------------
|
309
|
+
# * Determine if State Is Resisted
|
310
|
+
#--------------------------------------------------------------------------
|
311
|
+
def state_resist?(state_id)
|
312
|
+
state_resist_set.include?(state_id)
|
313
|
+
end
|
314
|
+
#--------------------------------------------------------------------------
|
315
|
+
# * Get Attack Element
|
316
|
+
#--------------------------------------------------------------------------
|
317
|
+
def atk_elements
|
318
|
+
features_set(FEATURE_ATK_ELEMENT)
|
319
|
+
end
|
320
|
+
#--------------------------------------------------------------------------
|
321
|
+
# * Get Attack State
|
322
|
+
#--------------------------------------------------------------------------
|
323
|
+
def atk_states
|
324
|
+
features_set(FEATURE_ATK_STATE)
|
325
|
+
end
|
326
|
+
#--------------------------------------------------------------------------
|
327
|
+
# * Get Attack State Invocation Rate
|
328
|
+
#--------------------------------------------------------------------------
|
329
|
+
def atk_states_rate(state_id)
|
330
|
+
features_sum(FEATURE_ATK_STATE, state_id)
|
331
|
+
end
|
332
|
+
#--------------------------------------------------------------------------
|
333
|
+
# * Get Attack Speed
|
334
|
+
#--------------------------------------------------------------------------
|
335
|
+
def atk_speed
|
336
|
+
features_sum_all(FEATURE_ATK_SPEED)
|
337
|
+
end
|
338
|
+
#--------------------------------------------------------------------------
|
339
|
+
# * Get Additional Attack Times
|
340
|
+
#--------------------------------------------------------------------------
|
341
|
+
def atk_times_add
|
342
|
+
[features_sum_all(FEATURE_ATK_TIMES), 0].max
|
343
|
+
end
|
344
|
+
#--------------------------------------------------------------------------
|
345
|
+
# * Get Added Skill Types
|
346
|
+
#--------------------------------------------------------------------------
|
347
|
+
def added_skill_types
|
348
|
+
features_set(FEATURE_STYPE_ADD)
|
349
|
+
end
|
350
|
+
#--------------------------------------------------------------------------
|
351
|
+
# * Determine if Skill Type Is Disabled
|
352
|
+
#--------------------------------------------------------------------------
|
353
|
+
def skill_type_sealed?(stype_id)
|
354
|
+
features_set(FEATURE_STYPE_SEAL).include?(stype_id)
|
355
|
+
end
|
356
|
+
#--------------------------------------------------------------------------
|
357
|
+
# * Get Added Skills
|
358
|
+
#--------------------------------------------------------------------------
|
359
|
+
def added_skills
|
360
|
+
features_set(FEATURE_SKILL_ADD)
|
361
|
+
end
|
362
|
+
#--------------------------------------------------------------------------
|
363
|
+
# * Determine if Skill Is Disabled
|
364
|
+
#--------------------------------------------------------------------------
|
365
|
+
def skill_sealed?(skill_id)
|
366
|
+
features_set(FEATURE_SKILL_SEAL).include?(skill_id)
|
367
|
+
end
|
368
|
+
#--------------------------------------------------------------------------
|
369
|
+
# * Determine if Weapon Can Be Equipped
|
370
|
+
#--------------------------------------------------------------------------
|
371
|
+
def equip_wtype_ok?(wtype_id)
|
372
|
+
features_set(FEATURE_EQUIP_WTYPE).include?(wtype_id)
|
373
|
+
end
|
374
|
+
#--------------------------------------------------------------------------
|
375
|
+
# * Determine if Armor Can Be Equipped
|
376
|
+
#--------------------------------------------------------------------------
|
377
|
+
def equip_atype_ok?(atype_id)
|
378
|
+
features_set(FEATURE_EQUIP_ATYPE).include?(atype_id)
|
379
|
+
end
|
380
|
+
#--------------------------------------------------------------------------
|
381
|
+
# * Determine if Equipment Is Locked
|
382
|
+
#--------------------------------------------------------------------------
|
383
|
+
def equip_type_fixed?(etype_id)
|
384
|
+
features_set(FEATURE_EQUIP_FIX).include?(etype_id)
|
385
|
+
end
|
386
|
+
#--------------------------------------------------------------------------
|
387
|
+
# * Determine if Equipment Is Sealed
|
388
|
+
#--------------------------------------------------------------------------
|
389
|
+
def equip_type_sealed?(etype_id)
|
390
|
+
features_set(FEATURE_EQUIP_SEAL).include?(etype_id)
|
391
|
+
end
|
392
|
+
#--------------------------------------------------------------------------
|
393
|
+
# * Get Slot Type
|
394
|
+
#--------------------------------------------------------------------------
|
395
|
+
def slot_type
|
396
|
+
features_set(FEATURE_SLOT_TYPE).max || 0
|
397
|
+
end
|
398
|
+
#--------------------------------------------------------------------------
|
399
|
+
# * Determine if Dual Wield
|
400
|
+
#--------------------------------------------------------------------------
|
401
|
+
def dual_wield?
|
402
|
+
slot_type == 1
|
403
|
+
end
|
404
|
+
#--------------------------------------------------------------------------
|
405
|
+
# * Get Array of Additional Action Time Probabilities
|
406
|
+
#--------------------------------------------------------------------------
|
407
|
+
def action_plus_set
|
408
|
+
features(FEATURE_ACTION_PLUS).collect {|ft| ft.value }
|
409
|
+
end
|
410
|
+
#--------------------------------------------------------------------------
|
411
|
+
# * Determine if Special Flag
|
412
|
+
#--------------------------------------------------------------------------
|
413
|
+
def special_flag(flag_id)
|
414
|
+
features(FEATURE_SPECIAL_FLAG).any? {|ft| ft.data_id == flag_id }
|
415
|
+
end
|
416
|
+
#--------------------------------------------------------------------------
|
417
|
+
# * Get Collapse Effect
|
418
|
+
#--------------------------------------------------------------------------
|
419
|
+
def collapse_type
|
420
|
+
features_set(FEATURE_COLLAPSE_TYPE).max || 0
|
421
|
+
end
|
422
|
+
#--------------------------------------------------------------------------
|
423
|
+
# * Determine Party Ability
|
424
|
+
#--------------------------------------------------------------------------
|
425
|
+
def party_ability(ability_id)
|
426
|
+
features(FEATURE_PARTY_ABILITY).any? {|ft| ft.data_id == ability_id }
|
427
|
+
end
|
428
|
+
#--------------------------------------------------------------------------
|
429
|
+
# * Determine if Auto Battle
|
430
|
+
#--------------------------------------------------------------------------
|
431
|
+
def auto_battle?
|
432
|
+
special_flag(FLAG_ID_AUTO_BATTLE)
|
433
|
+
end
|
434
|
+
#--------------------------------------------------------------------------
|
435
|
+
# * Determine if Guard
|
436
|
+
#--------------------------------------------------------------------------
|
437
|
+
def guard?
|
438
|
+
special_flag(FLAG_ID_GUARD) && movable?
|
439
|
+
end
|
440
|
+
#--------------------------------------------------------------------------
|
441
|
+
# * Determine if Substitute
|
442
|
+
#--------------------------------------------------------------------------
|
443
|
+
def substitute?
|
444
|
+
special_flag(FLAG_ID_SUBSTITUTE) && movable?
|
445
|
+
end
|
446
|
+
#--------------------------------------------------------------------------
|
447
|
+
# * Determine if Preserve TP
|
448
|
+
#--------------------------------------------------------------------------
|
449
|
+
def preserve_tp?
|
450
|
+
special_flag(FLAG_ID_PRESERVE_TP)
|
451
|
+
end
|
452
|
+
#--------------------------------------------------------------------------
|
453
|
+
# * Increase Parameter
|
454
|
+
#--------------------------------------------------------------------------
|
455
|
+
def add_param(param_id, value)
|
456
|
+
@param_plus[param_id] += value
|
457
|
+
refresh
|
458
|
+
end
|
459
|
+
#--------------------------------------------------------------------------
|
460
|
+
# * Change HP
|
461
|
+
#--------------------------------------------------------------------------
|
462
|
+
def hp=(hp)
|
463
|
+
@hp = hp
|
464
|
+
refresh
|
465
|
+
end
|
466
|
+
#--------------------------------------------------------------------------
|
467
|
+
# * Change MP
|
468
|
+
#--------------------------------------------------------------------------
|
469
|
+
def mp=(mp)
|
470
|
+
@mp = mp
|
471
|
+
refresh
|
472
|
+
end
|
473
|
+
#--------------------------------------------------------------------------
|
474
|
+
# * Change HP (for Events)
|
475
|
+
# value: Amount of increase/decrease
|
476
|
+
# enable_death: Allow knockout
|
477
|
+
#--------------------------------------------------------------------------
|
478
|
+
def change_hp(value, enable_death)
|
479
|
+
if !enable_death && @hp + value <= 0
|
480
|
+
self.hp = 1
|
481
|
+
else
|
482
|
+
self.hp += value
|
483
|
+
end
|
484
|
+
end
|
485
|
+
#--------------------------------------------------------------------------
|
486
|
+
# * Change TP
|
487
|
+
#--------------------------------------------------------------------------
|
488
|
+
def tp=(tp)
|
489
|
+
@tp = [[tp, max_tp].min, 0].max
|
490
|
+
end
|
491
|
+
#--------------------------------------------------------------------------
|
492
|
+
# * Get Maximum Value of TP
|
493
|
+
#--------------------------------------------------------------------------
|
494
|
+
def max_tp
|
495
|
+
return 100
|
496
|
+
end
|
497
|
+
#--------------------------------------------------------------------------
|
498
|
+
# * Refresh
|
499
|
+
#--------------------------------------------------------------------------
|
500
|
+
def refresh
|
501
|
+
state_resist_set.each {|state_id| erase_state(state_id) }
|
502
|
+
@hp = [[@hp, mhp].min, 0].max
|
503
|
+
@mp = [[@mp, mmp].min, 0].max
|
504
|
+
@hp == 0 ? add_state(death_state_id) : remove_state(death_state_id)
|
505
|
+
end
|
506
|
+
#--------------------------------------------------------------------------
|
507
|
+
# * Recover All
|
508
|
+
#--------------------------------------------------------------------------
|
509
|
+
def recover_all
|
510
|
+
clear_states
|
511
|
+
@hp = mhp
|
512
|
+
@mp = mmp
|
513
|
+
end
|
514
|
+
#--------------------------------------------------------------------------
|
515
|
+
# * Get Percentage of HP
|
516
|
+
#--------------------------------------------------------------------------
|
517
|
+
def hp_rate
|
518
|
+
@hp.to_f / mhp
|
519
|
+
end
|
520
|
+
#--------------------------------------------------------------------------
|
521
|
+
# * Get Percentage of MP
|
522
|
+
#--------------------------------------------------------------------------
|
523
|
+
def mp_rate
|
524
|
+
mmp > 0 ? @mp.to_f / mmp : 0
|
525
|
+
end
|
526
|
+
#--------------------------------------------------------------------------
|
527
|
+
# * Get Percentage of TP
|
528
|
+
#--------------------------------------------------------------------------
|
529
|
+
def tp_rate
|
530
|
+
@tp.to_f / 100
|
531
|
+
end
|
532
|
+
#--------------------------------------------------------------------------
|
533
|
+
# * Hide
|
534
|
+
#--------------------------------------------------------------------------
|
535
|
+
def hide
|
536
|
+
@hidden = true
|
537
|
+
end
|
538
|
+
#--------------------------------------------------------------------------
|
539
|
+
# * Appear
|
540
|
+
#--------------------------------------------------------------------------
|
541
|
+
def appear
|
542
|
+
@hidden = false
|
543
|
+
end
|
544
|
+
#--------------------------------------------------------------------------
|
545
|
+
# * Get Hide State
|
546
|
+
#--------------------------------------------------------------------------
|
547
|
+
def hidden?
|
548
|
+
@hidden
|
549
|
+
end
|
550
|
+
#--------------------------------------------------------------------------
|
551
|
+
# * Determine Existence
|
552
|
+
#--------------------------------------------------------------------------
|
553
|
+
def exist?
|
554
|
+
!hidden?
|
555
|
+
end
|
556
|
+
#--------------------------------------------------------------------------
|
557
|
+
# * Determine Incapacitation
|
558
|
+
#--------------------------------------------------------------------------
|
559
|
+
def dead?
|
560
|
+
exist? && death_state?
|
561
|
+
end
|
562
|
+
#--------------------------------------------------------------------------
|
563
|
+
# * Determine Survival
|
564
|
+
#--------------------------------------------------------------------------
|
565
|
+
def alive?
|
566
|
+
exist? && !death_state?
|
567
|
+
end
|
568
|
+
#--------------------------------------------------------------------------
|
569
|
+
# * Determine Normality
|
570
|
+
#--------------------------------------------------------------------------
|
571
|
+
def normal?
|
572
|
+
exist? && restriction == 0
|
573
|
+
end
|
574
|
+
#--------------------------------------------------------------------------
|
575
|
+
# * Determine if Command is Inputable
|
576
|
+
#--------------------------------------------------------------------------
|
577
|
+
def inputable?
|
578
|
+
normal? && !auto_battle?
|
579
|
+
end
|
580
|
+
#--------------------------------------------------------------------------
|
581
|
+
# * Determine if Action is Possible
|
582
|
+
#--------------------------------------------------------------------------
|
583
|
+
def movable?
|
584
|
+
exist? && restriction < 4
|
585
|
+
end
|
586
|
+
#--------------------------------------------------------------------------
|
587
|
+
# * Determine if Character is Confused
|
588
|
+
#--------------------------------------------------------------------------
|
589
|
+
def confusion?
|
590
|
+
exist? && restriction >= 1 && restriction <= 3
|
591
|
+
end
|
592
|
+
#--------------------------------------------------------------------------
|
593
|
+
# * Get Confusion Level
|
594
|
+
#--------------------------------------------------------------------------
|
595
|
+
def confusion_level
|
596
|
+
confusion? ? restriction : 0
|
597
|
+
end
|
598
|
+
#--------------------------------------------------------------------------
|
599
|
+
# * Determine if Actor or Not
|
600
|
+
#--------------------------------------------------------------------------
|
601
|
+
def actor?
|
602
|
+
return false
|
603
|
+
end
|
604
|
+
#--------------------------------------------------------------------------
|
605
|
+
# * Determine if Enemy
|
606
|
+
#--------------------------------------------------------------------------
|
607
|
+
def enemy?
|
608
|
+
return false
|
609
|
+
end
|
610
|
+
#--------------------------------------------------------------------------
|
611
|
+
# * Sorting States
|
612
|
+
# Sort the content of the @states array, with higher priority states
|
613
|
+
# coming first.
|
614
|
+
#--------------------------------------------------------------------------
|
615
|
+
def sort_states
|
616
|
+
@states = @states.sort_by {|id| [-$data_states[id].priority, id] }
|
617
|
+
end
|
618
|
+
#--------------------------------------------------------------------------
|
619
|
+
# * Get Restriction
|
620
|
+
# Get the largest restriction from the currently added states.
|
621
|
+
#--------------------------------------------------------------------------
|
622
|
+
def restriction
|
623
|
+
states.collect {|state| state.restriction }.push(0).max
|
624
|
+
end
|
625
|
+
#--------------------------------------------------------------------------
|
626
|
+
# * Get Most Important State Continuation Message
|
627
|
+
#--------------------------------------------------------------------------
|
628
|
+
def most_important_state_text
|
629
|
+
states.each {|state| return state.message3 unless state.message3.empty? }
|
630
|
+
return ""
|
631
|
+
end
|
632
|
+
#--------------------------------------------------------------------------
|
633
|
+
# * Determine if Skill-Required Weapon Is Equipped
|
634
|
+
#--------------------------------------------------------------------------
|
635
|
+
def skill_wtype_ok?(skill)
|
636
|
+
return true
|
637
|
+
end
|
638
|
+
#--------------------------------------------------------------------------
|
639
|
+
# * Calculate Skill's MP Cost
|
640
|
+
#--------------------------------------------------------------------------
|
641
|
+
def skill_mp_cost(skill)
|
642
|
+
(skill.mp_cost * mcr).to_i
|
643
|
+
end
|
644
|
+
#--------------------------------------------------------------------------
|
645
|
+
# * Calculate Skill's TP Cost
|
646
|
+
#--------------------------------------------------------------------------
|
647
|
+
def skill_tp_cost(skill)
|
648
|
+
skill.tp_cost
|
649
|
+
end
|
650
|
+
#--------------------------------------------------------------------------
|
651
|
+
# * Determine if Cost of Using Skill Can Be Paid
|
652
|
+
#--------------------------------------------------------------------------
|
653
|
+
def skill_cost_payable?(skill)
|
654
|
+
tp >= skill_tp_cost(skill) && mp >= skill_mp_cost(skill)
|
655
|
+
end
|
656
|
+
#--------------------------------------------------------------------------
|
657
|
+
# * Pay Cost of Using Skill
|
658
|
+
#--------------------------------------------------------------------------
|
659
|
+
def pay_skill_cost(skill)
|
660
|
+
self.mp -= skill_mp_cost(skill)
|
661
|
+
self.tp -= skill_tp_cost(skill)
|
662
|
+
end
|
663
|
+
#--------------------------------------------------------------------------
|
664
|
+
# * Check When Skill/Item Can Be Used
|
665
|
+
#--------------------------------------------------------------------------
|
666
|
+
def occasion_ok?(item)
|
667
|
+
$game_party.in_battle ? item.battle_ok? : item.menu_ok?
|
668
|
+
end
|
669
|
+
#--------------------------------------------------------------------------
|
670
|
+
# * Check Common Usability Conditions for Skill/Item
|
671
|
+
#--------------------------------------------------------------------------
|
672
|
+
def usable_item_conditions_met?(item)
|
673
|
+
movable? && occasion_ok?(item)
|
674
|
+
end
|
675
|
+
#--------------------------------------------------------------------------
|
676
|
+
# * Check Usability Conditions for Skill
|
677
|
+
#--------------------------------------------------------------------------
|
678
|
+
def skill_conditions_met?(skill)
|
679
|
+
usable_item_conditions_met?(skill) &&
|
680
|
+
skill_wtype_ok?(skill) && skill_cost_payable?(skill) &&
|
681
|
+
!skill_sealed?(skill.id) && !skill_type_sealed?(skill.stype_id)
|
682
|
+
end
|
683
|
+
#--------------------------------------------------------------------------
|
684
|
+
# * Check Usability Conditions for Item
|
685
|
+
#--------------------------------------------------------------------------
|
686
|
+
def item_conditions_met?(item)
|
687
|
+
usable_item_conditions_met?(item) && $game_party.has_item?(item)
|
688
|
+
end
|
689
|
+
#--------------------------------------------------------------------------
|
690
|
+
# * Determine Skill/Item Usability
|
691
|
+
#--------------------------------------------------------------------------
|
692
|
+
def usable?(item)
|
693
|
+
return skill_conditions_met?(item) if item.is_a?(RPG::Skill)
|
694
|
+
return item_conditions_met?(item) if item.is_a?(RPG::Item)
|
695
|
+
return false
|
696
|
+
end
|
697
|
+
#--------------------------------------------------------------------------
|
698
|
+
# * Determine if Equippable
|
699
|
+
#--------------------------------------------------------------------------
|
700
|
+
def equippable?(item)
|
701
|
+
return false unless item.is_a?(RPG::EquipItem)
|
702
|
+
return false if equip_type_sealed?(item.etype_id)
|
703
|
+
return equip_wtype_ok?(item.wtype_id) if item.is_a?(RPG::Weapon)
|
704
|
+
return equip_atype_ok?(item.atype_id) if item.is_a?(RPG::Armor)
|
705
|
+
return false
|
706
|
+
end
|
707
|
+
#--------------------------------------------------------------------------
|
708
|
+
# * Get Skill ID of Normal Attack
|
709
|
+
#--------------------------------------------------------------------------
|
710
|
+
def attack_skill_id
|
711
|
+
return 1
|
712
|
+
end
|
713
|
+
#--------------------------------------------------------------------------
|
714
|
+
# * Get Skill ID of Guard
|
715
|
+
#--------------------------------------------------------------------------
|
716
|
+
def guard_skill_id
|
717
|
+
return 2
|
718
|
+
end
|
719
|
+
#--------------------------------------------------------------------------
|
720
|
+
# * Determine Usability of Normal Attack
|
721
|
+
#--------------------------------------------------------------------------
|
722
|
+
def attack_usable?
|
723
|
+
usable?($data_skills[attack_skill_id])
|
724
|
+
end
|
725
|
+
#--------------------------------------------------------------------------
|
726
|
+
# * Determine Usability of Guard
|
727
|
+
#--------------------------------------------------------------------------
|
728
|
+
def guard_usable?
|
729
|
+
usable?($data_skills[guard_skill_id])
|
730
|
+
end
|
731
|
+
end
|