rgss3_default_scripts 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (117) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +9 -0
  3. data/Gemfile +4 -0
  4. data/README.md +9 -0
  5. data/Rakefile +2 -0
  6. data/lib/rgss3_default_scripts.rb +109 -0
  7. data/lib/rgss3_default_scripts/BattleManager.rb +392 -0
  8. data/lib/rgss3_default_scripts/Cache.rb +134 -0
  9. data/lib/rgss3_default_scripts/DataManager.rb +267 -0
  10. data/lib/rgss3_default_scripts/Game_Action.rb +262 -0
  11. data/lib/rgss3_default_scripts/Game_ActionResult.rb +159 -0
  12. data/lib/rgss3_default_scripts/Game_Actor.rb +696 -0
  13. data/lib/rgss3_default_scripts/Game_Actors.rb +22 -0
  14. data/lib/rgss3_default_scripts/Game_BaseItem.rb +51 -0
  15. data/lib/rgss3_default_scripts/Game_Battler.rb +824 -0
  16. data/lib/rgss3_default_scripts/Game_BattlerBase.rb +731 -0
  17. data/lib/rgss3_default_scripts/Game_Character.rb +396 -0
  18. data/lib/rgss3_default_scripts/Game_CharacterBase.rb +443 -0
  19. data/lib/rgss3_default_scripts/Game_CommonEvent.rb +41 -0
  20. data/lib/rgss3_default_scripts/Game_Enemy.rb +264 -0
  21. data/lib/rgss3_default_scripts/Game_Event.rb +308 -0
  22. data/lib/rgss3_default_scripts/Game_Follower.rb +74 -0
  23. data/lib/rgss3_default_scripts/Game_Followers.rb +112 -0
  24. data/lib/rgss3_default_scripts/Game_Interpreter.rb +1413 -0
  25. data/lib/rgss3_default_scripts/Game_Map.rb +704 -0
  26. data/lib/rgss3_default_scripts/Game_Message.rb +101 -0
  27. data/lib/rgss3_default_scripts/Game_Party.rb +418 -0
  28. data/lib/rgss3_default_scripts/Game_Picture.rb +161 -0
  29. data/lib/rgss3_default_scripts/Game_Pictures.rb +28 -0
  30. data/lib/rgss3_default_scripts/Game_Player.rb +488 -0
  31. data/lib/rgss3_default_scripts/Game_Screen.rb +234 -0
  32. data/lib/rgss3_default_scripts/Game_SelfSwitches.rb +35 -0
  33. data/lib/rgss3_default_scripts/Game_Switches.rb +35 -0
  34. data/lib/rgss3_default_scripts/Game_System.rb +122 -0
  35. data/lib/rgss3_default_scripts/Game_Temp.rb +45 -0
  36. data/lib/rgss3_default_scripts/Game_Timer.rb +56 -0
  37. data/lib/rgss3_default_scripts/Game_Troop.rb +205 -0
  38. data/lib/rgss3_default_scripts/Game_Unit.rb +131 -0
  39. data/lib/rgss3_default_scripts/Game_Variables.rb +34 -0
  40. data/lib/rgss3_default_scripts/Game_Vehicle.rb +193 -0
  41. data/lib/rgss3_default_scripts/SceneManager.rb +94 -0
  42. data/lib/rgss3_default_scripts/Scene_Base.rb +132 -0
  43. data/lib/rgss3_default_scripts/Scene_Battle.rb +693 -0
  44. data/lib/rgss3_default_scripts/Scene_Debug.rb +87 -0
  45. data/lib/rgss3_default_scripts/Scene_End.rb +61 -0
  46. data/lib/rgss3_default_scripts/Scene_Equip.rb +144 -0
  47. data/lib/rgss3_default_scripts/Scene_File.rb +203 -0
  48. data/lib/rgss3_default_scripts/Scene_Gameover.rb +85 -0
  49. data/lib/rgss3_default_scripts/Scene_Item.rb +75 -0
  50. data/lib/rgss3_default_scripts/Scene_ItemBase.rb +147 -0
  51. data/lib/rgss3_default_scripts/Scene_Load.rb +40 -0
  52. data/lib/rgss3_default_scripts/Scene_Map.rb +276 -0
  53. data/lib/rgss3_default_scripts/Scene_Menu.rb +127 -0
  54. data/lib/rgss3_default_scripts/Scene_MenuBase.rb +63 -0
  55. data/lib/rgss3_default_scripts/Scene_Name.rb +32 -0
  56. data/lib/rgss3_default_scripts/Scene_Save.rb +38 -0
  57. data/lib/rgss3_default_scripts/Scene_Shop.rb +299 -0
  58. data/lib/rgss3_default_scripts/Scene_Skill.rb +108 -0
  59. data/lib/rgss3_default_scripts/Scene_Status.rb +25 -0
  60. data/lib/rgss3_default_scripts/Scene_Title.rb +137 -0
  61. data/lib/rgss3_default_scripts/Sound.rb +135 -0
  62. data/lib/rgss3_default_scripts/Sprite_Base.rb +232 -0
  63. data/lib/rgss3_default_scripts/Sprite_Battler.rb +231 -0
  64. data/lib/rgss3_default_scripts/Sprite_Character.rb +226 -0
  65. data/lib/rgss3_default_scripts/Sprite_Picture.rb +82 -0
  66. data/lib/rgss3_default_scripts/Sprite_Timer.rb +77 -0
  67. data/lib/rgss3_default_scripts/Spriteset_Battle.rb +389 -0
  68. data/lib/rgss3_default_scripts/Spriteset_Map.rb +273 -0
  69. data/lib/rgss3_default_scripts/Spriteset_Weather.rb +184 -0
  70. data/lib/rgss3_default_scripts/Vocab.rb +145 -0
  71. data/lib/rgss3_default_scripts/Window_ActorCommand.rb +78 -0
  72. data/lib/rgss3_default_scripts/Window_Base.rb +571 -0
  73. data/lib/rgss3_default_scripts/Window_BattleActor.rb +38 -0
  74. data/lib/rgss3_default_scripts/Window_BattleEnemy.rb +70 -0
  75. data/lib/rgss3_default_scripts/Window_BattleItem.rb +40 -0
  76. data/lib/rgss3_default_scripts/Window_BattleLog.rb +425 -0
  77. data/lib/rgss3_default_scripts/Window_BattleSkill.rb +34 -0
  78. data/lib/rgss3_default_scripts/Window_BattleStatus.rb +111 -0
  79. data/lib/rgss3_default_scripts/Window_ChoiceList.rb +88 -0
  80. data/lib/rgss3_default_scripts/Window_Command.rb +152 -0
  81. data/lib/rgss3_default_scripts/Window_DebugLeft.rb +104 -0
  82. data/lib/rgss3_default_scripts/Window_DebugRight.rb +119 -0
  83. data/lib/rgss3_default_scripts/Window_EquipCommand.rb +36 -0
  84. data/lib/rgss3_default_scripts/Window_EquipItem.rb +78 -0
  85. data/lib/rgss3_default_scripts/Window_EquipSlot.rb +111 -0
  86. data/lib/rgss3_default_scripts/Window_EquipStatus.rb +97 -0
  87. data/lib/rgss3_default_scripts/Window_GameEnd.rb +38 -0
  88. data/lib/rgss3_default_scripts/Window_Gold.rb +47 -0
  89. data/lib/rgss3_default_scripts/Window_Help.rb +43 -0
  90. data/lib/rgss3_default_scripts/Window_HorzCommand.rb +106 -0
  91. data/lib/rgss3_default_scripts/Window_ItemCategory.rb +54 -0
  92. data/lib/rgss3_default_scripts/Window_ItemList.rb +117 -0
  93. data/lib/rgss3_default_scripts/Window_KeyItem.rb +55 -0
  94. data/lib/rgss3_default_scripts/Window_MapName.rb +96 -0
  95. data/lib/rgss3_default_scripts/Window_MenuActor.rb +43 -0
  96. data/lib/rgss3_default_scripts/Window_MenuCommand.rb +106 -0
  97. data/lib/rgss3_default_scripts/Window_MenuStatus.rb +85 -0
  98. data/lib/rgss3_default_scripts/Window_Message.rb +397 -0
  99. data/lib/rgss3_default_scripts/Window_NameEdit.rb +129 -0
  100. data/lib/rgss3_default_scripts/Window_NameInput.rb +253 -0
  101. data/lib/rgss3_default_scripts/Window_NumberInput.rb +148 -0
  102. data/lib/rgss3_default_scripts/Window_PartyCommand.rb +47 -0
  103. data/lib/rgss3_default_scripts/Window_SaveFile.rb +69 -0
  104. data/lib/rgss3_default_scripts/Window_ScrollText.rb +90 -0
  105. data/lib/rgss3_default_scripts/Window_Selectable.rb +442 -0
  106. data/lib/rgss3_default_scripts/Window_ShopBuy.rb +115 -0
  107. data/lib/rgss3_default_scripts/Window_ShopCommand.rb +36 -0
  108. data/lib/rgss3_default_scripts/Window_ShopNumber.rb +137 -0
  109. data/lib/rgss3_default_scripts/Window_ShopSell.rb +27 -0
  110. data/lib/rgss3_default_scripts/Window_ShopStatus.rb +124 -0
  111. data/lib/rgss3_default_scripts/Window_SkillCommand.rb +76 -0
  112. data/lib/rgss3_default_scripts/Window_SkillList.rb +121 -0
  113. data/lib/rgss3_default_scripts/Window_SkillStatus.rb +38 -0
  114. data/lib/rgss3_default_scripts/Window_Status.rb +125 -0
  115. data/lib/rgss3_default_scripts/Window_TitleCommand.rb +45 -0
  116. data/rgss3_default_scripts.gemspec +23 -0
  117. 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