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