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,159 @@
1
+ #==============================================================================
2
+ # ** Game_ActionResult
3
+ #------------------------------------------------------------------------------
4
+ # This class handles the results of battle actions. It is used internally for
5
+ # the Game_Battler class.
6
+ #==============================================================================
7
+
8
+ class Game_ActionResult
9
+ #--------------------------------------------------------------------------
10
+ # * Public Instance Variables
11
+ #--------------------------------------------------------------------------
12
+ attr_accessor :used # used flag
13
+ attr_accessor :missed # missed flag
14
+ attr_accessor :evaded # evaded flag
15
+ attr_accessor :critical # critical flag
16
+ attr_accessor :success # success flag
17
+ attr_accessor :hp_damage # HP damage
18
+ attr_accessor :mp_damage # MP damage
19
+ attr_accessor :tp_damage # TP damage
20
+ attr_accessor :hp_drain # HP drain
21
+ attr_accessor :mp_drain # MP drain
22
+ attr_accessor :added_states # added states
23
+ attr_accessor :removed_states # removed states
24
+ attr_accessor :added_buffs # added buffs
25
+ attr_accessor :added_debuffs # added debuffs
26
+ attr_accessor :removed_buffs # removed buffs/debuffs
27
+ #--------------------------------------------------------------------------
28
+ # * Object Initialization
29
+ #--------------------------------------------------------------------------
30
+ def initialize(battler)
31
+ @battler = battler
32
+ clear
33
+ end
34
+ #--------------------------------------------------------------------------
35
+ # * Clear
36
+ #--------------------------------------------------------------------------
37
+ def clear
38
+ clear_hit_flags
39
+ clear_damage_values
40
+ clear_status_effects
41
+ end
42
+ #--------------------------------------------------------------------------
43
+ # * Clear Hit Flags
44
+ #--------------------------------------------------------------------------
45
+ def clear_hit_flags
46
+ @used = false
47
+ @missed = false
48
+ @evaded = false
49
+ @critical = false
50
+ @success = false
51
+ end
52
+ #--------------------------------------------------------------------------
53
+ # * Clear Damage Values
54
+ #--------------------------------------------------------------------------
55
+ def clear_damage_values
56
+ @hp_damage = 0
57
+ @mp_damage = 0
58
+ @tp_damage = 0
59
+ @hp_drain = 0
60
+ @mp_drain = 0
61
+ end
62
+ #--------------------------------------------------------------------------
63
+ # * Create Damage
64
+ #--------------------------------------------------------------------------
65
+ def make_damage(value, item)
66
+ @critical = false if value == 0
67
+ @hp_damage = value if item.damage.to_hp?
68
+ @mp_damage = value if item.damage.to_mp?
69
+ @mp_damage = [@battler.mp, @mp_damage].min
70
+ @hp_drain = @hp_damage if item.damage.drain?
71
+ @mp_drain = @mp_damage if item.damage.drain?
72
+ @hp_drain = [@battler.hp, @hp_drain].min
73
+ @success = true if item.damage.to_hp? || @mp_damage != 0
74
+ end
75
+ #--------------------------------------------------------------------------
76
+ # * Clear Status Effects
77
+ #--------------------------------------------------------------------------
78
+ def clear_status_effects
79
+ @added_states = []
80
+ @removed_states = []
81
+ @added_buffs = []
82
+ @added_debuffs = []
83
+ @removed_buffs = []
84
+ end
85
+ #--------------------------------------------------------------------------
86
+ # * Get Added States as an Object Array
87
+ #--------------------------------------------------------------------------
88
+ def added_state_objects
89
+ @added_states.collect {|id| $data_states[id] }
90
+ end
91
+ #--------------------------------------------------------------------------
92
+ # * Get Removed States as an Object Array
93
+ #--------------------------------------------------------------------------
94
+ def removed_state_objects
95
+ @removed_states.collect {|id| $data_states[id] }
96
+ end
97
+ #--------------------------------------------------------------------------
98
+ # * Determine Whether Some Sort of Status (Parameter or State) Was Affected
99
+ #--------------------------------------------------------------------------
100
+ def status_affected?
101
+ !(@added_states.empty? && @removed_states.empty? &&
102
+ @added_buffs.empty? && @added_debuffs.empty? && @removed_buffs.empty?)
103
+ end
104
+ #--------------------------------------------------------------------------
105
+ # * Determine Final Hit
106
+ #--------------------------------------------------------------------------
107
+ def hit?
108
+ @used && !@missed && !@evaded
109
+ end
110
+ #--------------------------------------------------------------------------
111
+ # * Get Text for HP Damage
112
+ #--------------------------------------------------------------------------
113
+ def hp_damage_text
114
+ if @hp_drain > 0
115
+ fmt = @battler.actor? ? Vocab::ActorDrain : Vocab::EnemyDrain
116
+ sprintf(fmt, @battler.name, Vocab::hp, @hp_drain)
117
+ elsif @hp_damage > 0
118
+ fmt = @battler.actor? ? Vocab::ActorDamage : Vocab::EnemyDamage
119
+ sprintf(fmt, @battler.name, @hp_damage)
120
+ elsif @hp_damage < 0
121
+ fmt = @battler.actor? ? Vocab::ActorRecovery : Vocab::EnemyRecovery
122
+ sprintf(fmt, @battler.name, Vocab::hp, -hp_damage)
123
+ else
124
+ fmt = @battler.actor? ? Vocab::ActorNoDamage : Vocab::EnemyNoDamage
125
+ sprintf(fmt, @battler.name)
126
+ end
127
+ end
128
+ #--------------------------------------------------------------------------
129
+ # * Get Text for MP Damage
130
+ #--------------------------------------------------------------------------
131
+ def mp_damage_text
132
+ if @mp_drain > 0
133
+ fmt = @battler.actor? ? Vocab::ActorDrain : Vocab::EnemyDrain
134
+ sprintf(fmt, @battler.name, Vocab::mp, @mp_drain)
135
+ elsif @mp_damage > 0
136
+ fmt = @battler.actor? ? Vocab::ActorLoss : Vocab::EnemyLoss
137
+ sprintf(fmt, @battler.name, Vocab::mp, @mp_damage)
138
+ elsif @mp_damage < 0
139
+ fmt = @battler.actor? ? Vocab::ActorRecovery : Vocab::EnemyRecovery
140
+ sprintf(fmt, @battler.name, Vocab::mp, -@mp_damage)
141
+ else
142
+ ""
143
+ end
144
+ end
145
+ #--------------------------------------------------------------------------
146
+ # * Get Text for TP Damage
147
+ #--------------------------------------------------------------------------
148
+ def tp_damage_text
149
+ if @tp_damage > 0
150
+ fmt = @battler.actor? ? Vocab::ActorLoss : Vocab::EnemyLoss
151
+ sprintf(fmt, @battler.name, Vocab::tp, @tp_damage)
152
+ elsif @tp_damage < 0
153
+ fmt = @battler.actor? ? Vocab::ActorGain : Vocab::EnemyGain
154
+ sprintf(fmt, @battler.name, Vocab::tp, -@tp_damage)
155
+ else
156
+ ""
157
+ end
158
+ end
159
+ end
@@ -0,0 +1,696 @@
1
+ #==============================================================================
2
+ # ** Game_Actor
3
+ #------------------------------------------------------------------------------
4
+ # This class handles actors. It is used within the Game_Actors class
5
+ # ($game_actors) and is also referenced from the Game_Party class ($game_party).
6
+ #==============================================================================
7
+
8
+ class Game_Actor < Game_Battler
9
+ #--------------------------------------------------------------------------
10
+ # * Public Instance Variables
11
+ #--------------------------------------------------------------------------
12
+ attr_accessor :name # Name
13
+ attr_accessor :nickname # Nickname
14
+ attr_reader :character_name # character graphic filename
15
+ attr_reader :character_index # character graphic index
16
+ attr_reader :face_name # face graphic filename
17
+ attr_reader :face_index # face graphic index
18
+ attr_reader :class_id # class ID
19
+ attr_reader :level # level
20
+ attr_reader :action_input_index # action number being input
21
+ attr_reader :last_skill # For cursor memorization: Skill
22
+ #--------------------------------------------------------------------------
23
+ # * Object Initialization
24
+ #--------------------------------------------------------------------------
25
+ def initialize(actor_id)
26
+ super()
27
+ setup(actor_id)
28
+ @last_skill = Game_BaseItem.new
29
+ end
30
+ #--------------------------------------------------------------------------
31
+ # * Setup
32
+ #--------------------------------------------------------------------------
33
+ def setup(actor_id)
34
+ @actor_id = actor_id
35
+ @name = actor.name
36
+ @nickname = actor.nickname
37
+ init_graphics
38
+ @class_id = actor.class_id
39
+ @level = actor.initial_level
40
+ @exp = {}
41
+ @equips = []
42
+ init_exp
43
+ init_skills
44
+ init_equips(actor.equips)
45
+ clear_param_plus
46
+ recover_all
47
+ end
48
+ #--------------------------------------------------------------------------
49
+ # * Get Actor Object
50
+ #--------------------------------------------------------------------------
51
+ def actor
52
+ $data_actors[@actor_id]
53
+ end
54
+ #--------------------------------------------------------------------------
55
+ # * Initialize Graphics
56
+ #--------------------------------------------------------------------------
57
+ def init_graphics
58
+ @character_name = actor.character_name
59
+ @character_index = actor.character_index
60
+ @face_name = actor.face_name
61
+ @face_index = actor.face_index
62
+ end
63
+ #--------------------------------------------------------------------------
64
+ # * Get Total EXP Required for Rising to Specified Level
65
+ #--------------------------------------------------------------------------
66
+ def exp_for_level(level)
67
+ self.class.exp_for_level(level)
68
+ end
69
+ #--------------------------------------------------------------------------
70
+ # * Initialize EXP
71
+ #--------------------------------------------------------------------------
72
+ def init_exp
73
+ @exp[@class_id] = current_level_exp
74
+ end
75
+ #--------------------------------------------------------------------------
76
+ # * Get Experience
77
+ #--------------------------------------------------------------------------
78
+ def exp
79
+ @exp[@class_id]
80
+ end
81
+ #--------------------------------------------------------------------------
82
+ # * Get Minimum EXP for Current Level
83
+ #--------------------------------------------------------------------------
84
+ def current_level_exp
85
+ exp_for_level(@level)
86
+ end
87
+ #--------------------------------------------------------------------------
88
+ # * Get EXP for Next Level
89
+ #--------------------------------------------------------------------------
90
+ def next_level_exp
91
+ exp_for_level(@level + 1)
92
+ end
93
+ #--------------------------------------------------------------------------
94
+ # * Maximum Level
95
+ #--------------------------------------------------------------------------
96
+ def max_level
97
+ actor.max_level
98
+ end
99
+ #--------------------------------------------------------------------------
100
+ # * Determine Maximum Level
101
+ #--------------------------------------------------------------------------
102
+ def max_level?
103
+ @level >= max_level
104
+ end
105
+ #--------------------------------------------------------------------------
106
+ # * Initialize Skills
107
+ #--------------------------------------------------------------------------
108
+ def init_skills
109
+ @skills = []
110
+ self.class.learnings.each do |learning|
111
+ learn_skill(learning.skill_id) if learning.level <= @level
112
+ end
113
+ end
114
+ #--------------------------------------------------------------------------
115
+ # * Initialize Equipment
116
+ # equips: An array of initial equipment
117
+ #--------------------------------------------------------------------------
118
+ def init_equips(equips)
119
+ @equips = Array.new(equip_slots.size) { Game_BaseItem.new }
120
+ equips.each_with_index do |item_id, i|
121
+ etype_id = index_to_etype_id(i)
122
+ slot_id = empty_slot(etype_id)
123
+ @equips[slot_id].set_equip(etype_id == 0, item_id) if slot_id
124
+ end
125
+ refresh
126
+ end
127
+ #--------------------------------------------------------------------------
128
+ # * Convert Index Set by Editor to Equipment Type ID
129
+ #--------------------------------------------------------------------------
130
+ def index_to_etype_id(index)
131
+ index == 1 && dual_wield? ? 0 : index
132
+ end
133
+ #--------------------------------------------------------------------------
134
+ # * Convert from Equipment Type to List of Slot IDs
135
+ #--------------------------------------------------------------------------
136
+ def slot_list(etype_id)
137
+ result = []
138
+ equip_slots.each_with_index {|e, i| result.push(i) if e == etype_id }
139
+ result
140
+ end
141
+ #--------------------------------------------------------------------------
142
+ # * Convert from Equipment Type to Slot ID (Empty Take Precedence)
143
+ #--------------------------------------------------------------------------
144
+ def empty_slot(etype_id)
145
+ list = slot_list(etype_id)
146
+ list.find {|i| @equips[i].is_nil? } || list[0]
147
+ end
148
+ #--------------------------------------------------------------------------
149
+ # * Get Equipment Slot Array
150
+ #--------------------------------------------------------------------------
151
+ def equip_slots
152
+ return [0,0,2,3,4] if dual_wield? # Dual wield
153
+ return [0,1,2,3,4] # Normal
154
+ end
155
+ #--------------------------------------------------------------------------
156
+ # * Get Weapon Object Array
157
+ #--------------------------------------------------------------------------
158
+ def weapons
159
+ @equips.select {|item| item.is_weapon? }.collect {|item| item.object }
160
+ end
161
+ #--------------------------------------------------------------------------
162
+ # * Get Armor Object Array
163
+ #--------------------------------------------------------------------------
164
+ def armors
165
+ @equips.select {|item| item.is_armor? }.collect {|item| item.object }
166
+ end
167
+ #--------------------------------------------------------------------------
168
+ # * Get Equipped Item Object Array
169
+ #--------------------------------------------------------------------------
170
+ def equips
171
+ @equips.collect {|item| item.object }
172
+ end
173
+ #--------------------------------------------------------------------------
174
+ # * Determine if Equipment Change Possible
175
+ # slot_id: Equipment slot ID
176
+ #--------------------------------------------------------------------------
177
+ def equip_change_ok?(slot_id)
178
+ return false if equip_type_fixed?(equip_slots[slot_id])
179
+ return false if equip_type_sealed?(equip_slots[slot_id])
180
+ return true
181
+ end
182
+ #--------------------------------------------------------------------------
183
+ # * Change Equipment
184
+ # slot_id: Equipment slot ID
185
+ # item: Weapon/armor (remove equipment if nil)
186
+ #--------------------------------------------------------------------------
187
+ def change_equip(slot_id, item)
188
+ return unless trade_item_with_party(item, equips[slot_id])
189
+ return if item && equip_slots[slot_id] != item.etype_id
190
+ @equips[slot_id].object = item
191
+ refresh
192
+ end
193
+ #--------------------------------------------------------------------------
194
+ # * Forcibly Change Equipment
195
+ # slot_id: Equipment slot ID
196
+ # item: Weapon/armor (remove equipment if nil)
197
+ #--------------------------------------------------------------------------
198
+ def force_change_equip(slot_id, item)
199
+ @equips[slot_id].object = item
200
+ release_unequippable_items(false)
201
+ refresh
202
+ end
203
+ #--------------------------------------------------------------------------
204
+ # * Trade Item with Party
205
+ # new_item: Item to get from party
206
+ # old_item: Item to give to party
207
+ #--------------------------------------------------------------------------
208
+ def trade_item_with_party(new_item, old_item)
209
+ return false if new_item && !$game_party.has_item?(new_item)
210
+ $game_party.gain_item(old_item, 1)
211
+ $game_party.lose_item(new_item, 1)
212
+ return true
213
+ end
214
+ #--------------------------------------------------------------------------
215
+ # * Change Equipment (Specify with ID)
216
+ # slot_id: Equipment slot ID
217
+ # item_id: Weapons/armor ID
218
+ #--------------------------------------------------------------------------
219
+ def change_equip_by_id(slot_id, item_id)
220
+ if equip_slots[slot_id] == 0
221
+ change_equip(slot_id, $data_weapons[item_id])
222
+ else
223
+ change_equip(slot_id, $data_armors[item_id])
224
+ end
225
+ end
226
+ #--------------------------------------------------------------------------
227
+ # * Discard Equipment
228
+ # item: Weapon/armor to discard
229
+ #--------------------------------------------------------------------------
230
+ def discard_equip(item)
231
+ slot_id = equips.index(item)
232
+ @equips[slot_id].object = nil if slot_id
233
+ end
234
+ #--------------------------------------------------------------------------
235
+ # * Remove Equipment that Cannot Be Equipped
236
+ # item_gain: Return removed equipment to party.
237
+ #--------------------------------------------------------------------------
238
+ def release_unequippable_items(item_gain = true)
239
+ loop do
240
+ last_equips = equips.dup
241
+ @equips.each_with_index do |item, i|
242
+ if !equippable?(item.object) || item.object.etype_id != equip_slots[i]
243
+ trade_item_with_party(nil, item.object) if item_gain
244
+ item.object = nil
245
+ end
246
+ end
247
+ return if equips == last_equips
248
+ end
249
+ end
250
+ #--------------------------------------------------------------------------
251
+ # * Remove All Equipment
252
+ #--------------------------------------------------------------------------
253
+ def clear_equipments
254
+ equip_slots.size.times do |i|
255
+ change_equip(i, nil) if equip_change_ok?(i)
256
+ end
257
+ end
258
+ #--------------------------------------------------------------------------
259
+ # * Ultimate Equipment
260
+ #--------------------------------------------------------------------------
261
+ def optimize_equipments
262
+ clear_equipments
263
+ equip_slots.size.times do |i|
264
+ next if !equip_change_ok?(i)
265
+ items = $game_party.equip_items.select do |item|
266
+ item.etype_id == equip_slots[i] &&
267
+ equippable?(item) && item.performance >= 0
268
+ end
269
+ change_equip(i, items.max_by {|item| item.performance })
270
+ end
271
+ end
272
+ #--------------------------------------------------------------------------
273
+ # * Determine if Skill-Required Weapon Is Equipped
274
+ #--------------------------------------------------------------------------
275
+ def skill_wtype_ok?(skill)
276
+ wtype_id1 = skill.required_wtype_id1
277
+ wtype_id2 = skill.required_wtype_id2
278
+ return true if wtype_id1 == 0 && wtype_id2 == 0
279
+ return true if wtype_id1 > 0 && wtype_equipped?(wtype_id1)
280
+ return true if wtype_id2 > 0 && wtype_equipped?(wtype_id2)
281
+ return false
282
+ end
283
+ #--------------------------------------------------------------------------
284
+ # * Determine if Specific Type of Weapon Is Equipped
285
+ #--------------------------------------------------------------------------
286
+ def wtype_equipped?(wtype_id)
287
+ weapons.any? {|weapon| weapon.wtype_id == wtype_id }
288
+ end
289
+ #--------------------------------------------------------------------------
290
+ # * Refresh
291
+ #--------------------------------------------------------------------------
292
+ def refresh
293
+ release_unequippable_items
294
+ super
295
+ end
296
+ #--------------------------------------------------------------------------
297
+ # * Determine if Actor or Not
298
+ #--------------------------------------------------------------------------
299
+ def actor?
300
+ return true
301
+ end
302
+ #--------------------------------------------------------------------------
303
+ # * Get Allied Units
304
+ #--------------------------------------------------------------------------
305
+ def friends_unit
306
+ $game_party
307
+ end
308
+ #--------------------------------------------------------------------------
309
+ # * Get Enemy Units
310
+ #--------------------------------------------------------------------------
311
+ def opponents_unit
312
+ $game_troop
313
+ end
314
+ #--------------------------------------------------------------------------
315
+ # * Get Actor ID
316
+ #--------------------------------------------------------------------------
317
+ def id
318
+ @actor_id
319
+ end
320
+ #--------------------------------------------------------------------------
321
+ # * Get Index
322
+ #--------------------------------------------------------------------------
323
+ def index
324
+ $game_party.members.index(self)
325
+ end
326
+ #--------------------------------------------------------------------------
327
+ # * Determine Battle Members
328
+ #--------------------------------------------------------------------------
329
+ def battle_member?
330
+ $game_party.battle_members.include?(self)
331
+ end
332
+ #--------------------------------------------------------------------------
333
+ # * Get Class Object
334
+ #--------------------------------------------------------------------------
335
+ def class
336
+ $data_classes[@class_id]
337
+ end
338
+ #--------------------------------------------------------------------------
339
+ # * Get Skill Object Array
340
+ #--------------------------------------------------------------------------
341
+ def skills
342
+ (@skills | added_skills).sort.collect {|id| $data_skills[id] }
343
+ end
344
+ #--------------------------------------------------------------------------
345
+ # * Get Array of Currently Usable Skills
346
+ #--------------------------------------------------------------------------
347
+ def usable_skills
348
+ skills.select {|skill| usable?(skill) }
349
+ end
350
+ #--------------------------------------------------------------------------
351
+ # * Get Array of All Objects Retaining Features
352
+ #--------------------------------------------------------------------------
353
+ def feature_objects
354
+ super + [actor] + [self.class] + equips.compact
355
+ end
356
+ #--------------------------------------------------------------------------
357
+ # * Get Attack Element
358
+ #--------------------------------------------------------------------------
359
+ def atk_elements
360
+ set = super
361
+ set |= [1] if weapons.compact.empty? # Unarmed: Physical element
362
+ return set
363
+ end
364
+ #--------------------------------------------------------------------------
365
+ # * Get Maximum Value of Parameter
366
+ #--------------------------------------------------------------------------
367
+ def param_max(param_id)
368
+ return 9999 if param_id == 0 # MHP
369
+ return super
370
+ end
371
+ #--------------------------------------------------------------------------
372
+ # * Get Base Value of Parameter
373
+ #--------------------------------------------------------------------------
374
+ def param_base(param_id)
375
+ self.class.params[param_id, @level]
376
+ end
377
+ #--------------------------------------------------------------------------
378
+ # * Get Added Value of Parameter
379
+ #--------------------------------------------------------------------------
380
+ def param_plus(param_id)
381
+ equips.compact.inject(super) {|r, item| r += item.params[param_id] }
382
+ end
383
+ #--------------------------------------------------------------------------
384
+ # * Get Normal Attack Animation ID
385
+ #--------------------------------------------------------------------------
386
+ def atk_animation_id1
387
+ if dual_wield?
388
+ return weapons[0].animation_id if weapons[0]
389
+ return weapons[1] ? 0 : 1
390
+ else
391
+ return weapons[0] ? weapons[0].animation_id : 1
392
+ end
393
+ end
394
+ #--------------------------------------------------------------------------
395
+ # * Get Animation ID of Normal Attack (Dual Wield: Weapon 2)
396
+ #--------------------------------------------------------------------------
397
+ def atk_animation_id2
398
+ if dual_wield?
399
+ return weapons[1] ? weapons[1].animation_id : 0
400
+ else
401
+ return 0
402
+ end
403
+ end
404
+ #--------------------------------------------------------------------------
405
+ # * Change Experience
406
+ # show : Level up display flag
407
+ #--------------------------------------------------------------------------
408
+ def change_exp(exp, show)
409
+ @exp[@class_id] = [exp, 0].max
410
+ last_level = @level
411
+ last_skills = skills
412
+ level_up while !max_level? && self.exp >= next_level_exp
413
+ level_down while self.exp < current_level_exp
414
+ display_level_up(skills - last_skills) if show && @level > last_level
415
+ refresh
416
+ end
417
+ #--------------------------------------------------------------------------
418
+ # * Get Experience
419
+ #--------------------------------------------------------------------------
420
+ def exp
421
+ @exp[@class_id]
422
+ end
423
+ #--------------------------------------------------------------------------
424
+ # * Level Up
425
+ #--------------------------------------------------------------------------
426
+ def level_up
427
+ @level += 1
428
+ self.class.learnings.each do |learning|
429
+ learn_skill(learning.skill_id) if learning.level == @level
430
+ end
431
+ end
432
+ #--------------------------------------------------------------------------
433
+ # * Level Down
434
+ #--------------------------------------------------------------------------
435
+ def level_down
436
+ @level -= 1
437
+ end
438
+ #--------------------------------------------------------------------------
439
+ # * Show Level Up Message
440
+ # new_skills : Array of newly learned skills
441
+ #--------------------------------------------------------------------------
442
+ def display_level_up(new_skills)
443
+ $game_message.new_page
444
+ $game_message.add(sprintf(Vocab::LevelUp, @name, Vocab::level, @level))
445
+ new_skills.each do |skill|
446
+ $game_message.add(sprintf(Vocab::ObtainSkill, skill.name))
447
+ end
448
+ end
449
+ #--------------------------------------------------------------------------
450
+ # * Get EXP (Account for Experience Rate)
451
+ #--------------------------------------------------------------------------
452
+ def gain_exp(exp)
453
+ change_exp(self.exp + (exp * final_exp_rate).to_i, true)
454
+ end
455
+ #--------------------------------------------------------------------------
456
+ # * Calculate Final EXP Rate
457
+ #--------------------------------------------------------------------------
458
+ def final_exp_rate
459
+ exr * (battle_member? ? 1 : reserve_members_exp_rate)
460
+ end
461
+ #--------------------------------------------------------------------------
462
+ # * Get EXP Rate for Reserve Members
463
+ #--------------------------------------------------------------------------
464
+ def reserve_members_exp_rate
465
+ $data_system.opt_extra_exp ? 1 : 0
466
+ end
467
+ #--------------------------------------------------------------------------
468
+ # * Change Level
469
+ # show : Level up display flag
470
+ #--------------------------------------------------------------------------
471
+ def change_level(level, show)
472
+ level = [[level, max_level].min, 1].max
473
+ change_exp(exp_for_level(level), show)
474
+ end
475
+ #--------------------------------------------------------------------------
476
+ # * Learn Skill
477
+ #--------------------------------------------------------------------------
478
+ def learn_skill(skill_id)
479
+ unless skill_learn?($data_skills[skill_id])
480
+ @skills.push(skill_id)
481
+ @skills.sort!
482
+ end
483
+ end
484
+ #--------------------------------------------------------------------------
485
+ # * Forget Skill
486
+ #--------------------------------------------------------------------------
487
+ def forget_skill(skill_id)
488
+ @skills.delete(skill_id)
489
+ end
490
+ #--------------------------------------------------------------------------
491
+ # * Determine if Skill Is Already Learned
492
+ #--------------------------------------------------------------------------
493
+ def skill_learn?(skill)
494
+ skill.is_a?(RPG::Skill) && @skills.include?(skill.id)
495
+ end
496
+ #--------------------------------------------------------------------------
497
+ # * Get Description
498
+ #--------------------------------------------------------------------------
499
+ def description
500
+ actor.description
501
+ end
502
+ #--------------------------------------------------------------------------
503
+ # * Change Class
504
+ # keep_exp: Keep EXP
505
+ #--------------------------------------------------------------------------
506
+ def change_class(class_id, keep_exp = false)
507
+ @exp[class_id] = exp if keep_exp
508
+ @class_id = class_id
509
+ change_exp(@exp[@class_id] || 0, false)
510
+ refresh
511
+ end
512
+ #--------------------------------------------------------------------------
513
+ # * Change Graphics
514
+ #--------------------------------------------------------------------------
515
+ def set_graphic(character_name, character_index, face_name, face_index)
516
+ @character_name = character_name
517
+ @character_index = character_index
518
+ @face_name = face_name
519
+ @face_index = face_index
520
+ end
521
+ #--------------------------------------------------------------------------
522
+ # * Use Sprites?
523
+ #--------------------------------------------------------------------------
524
+ def use_sprite?
525
+ return false
526
+ end
527
+ #--------------------------------------------------------------------------
528
+ # * Execute Damage Effect
529
+ #--------------------------------------------------------------------------
530
+ def perform_damage_effect
531
+ $game_troop.screen.start_shake(5, 5, 10)
532
+ @sprite_effect_type = :blink
533
+ Sound.play_actor_damage
534
+ end
535
+ #--------------------------------------------------------------------------
536
+ # * Execute Collapse Effect
537
+ #--------------------------------------------------------------------------
538
+ def perform_collapse_effect
539
+ if $game_party.in_battle
540
+ @sprite_effect_type = :collapse
541
+ Sound.play_actor_collapse
542
+ end
543
+ end
544
+ #--------------------------------------------------------------------------
545
+ # * Create Action Candidate List for Auto Battle
546
+ #--------------------------------------------------------------------------
547
+ def make_action_list
548
+ list = []
549
+ list.push(Game_Action.new(self).set_attack.evaluate)
550
+ usable_skills.each do |skill|
551
+ list.push(Game_Action.new(self).set_skill(skill.id).evaluate)
552
+ end
553
+ list
554
+ end
555
+ #--------------------------------------------------------------------------
556
+ # * Create Action During Auto Battle
557
+ #--------------------------------------------------------------------------
558
+ def make_auto_battle_actions
559
+ @actions.size.times do |i|
560
+ @actions[i] = make_action_list.max_by {|action| action.value }
561
+ end
562
+ end
563
+ #--------------------------------------------------------------------------
564
+ # * Create Action During Confusion
565
+ #--------------------------------------------------------------------------
566
+ def make_confusion_actions
567
+ @actions.size.times do |i|
568
+ @actions[i].set_confusion
569
+ end
570
+ end
571
+ #--------------------------------------------------------------------------
572
+ # * Create Battle Action
573
+ #--------------------------------------------------------------------------
574
+ def make_actions
575
+ super
576
+ if auto_battle?
577
+ make_auto_battle_actions
578
+ elsif confusion?
579
+ make_confusion_actions
580
+ end
581
+ end
582
+ #--------------------------------------------------------------------------
583
+ # * Processing Performed When Player Takes 1 Step
584
+ #--------------------------------------------------------------------------
585
+ def on_player_walk
586
+ @result.clear
587
+ check_floor_effect
588
+ if $game_player.normal_walk?
589
+ turn_end_on_map
590
+ states.each {|state| update_state_steps(state) }
591
+ show_added_states
592
+ show_removed_states
593
+ end
594
+ end
595
+ #--------------------------------------------------------------------------
596
+ # * Update Step Count for State
597
+ #--------------------------------------------------------------------------
598
+ def update_state_steps(state)
599
+ if state.remove_by_walking
600
+ @state_steps[state.id] -= 1 if @state_steps[state.id] > 0
601
+ remove_state(state.id) if @state_steps[state.id] == 0
602
+ end
603
+ end
604
+ #--------------------------------------------------------------------------
605
+ # * Show Added State
606
+ #--------------------------------------------------------------------------
607
+ def show_added_states
608
+ @result.added_state_objects.each do |state|
609
+ $game_message.add(name + state.message1) unless state.message1.empty?
610
+ end
611
+ end
612
+ #--------------------------------------------------------------------------
613
+ # * Show Removed State
614
+ #--------------------------------------------------------------------------
615
+ def show_removed_states
616
+ @result.removed_state_objects.each do |state|
617
+ $game_message.add(name + state.message4) unless state.message4.empty?
618
+ end
619
+ end
620
+ #--------------------------------------------------------------------------
621
+ # * Number of Steps Regarded as One Turn in Battle
622
+ #--------------------------------------------------------------------------
623
+ def steps_for_turn
624
+ return 20
625
+ end
626
+ #--------------------------------------------------------------------------
627
+ # * End of Turn Processing on Map Screen
628
+ #--------------------------------------------------------------------------
629
+ def turn_end_on_map
630
+ if $game_party.steps % steps_for_turn == 0
631
+ on_turn_end
632
+ perform_map_damage_effect if @result.hp_damage > 0
633
+ end
634
+ end
635
+ #--------------------------------------------------------------------------
636
+ # * Determine Floor Effect
637
+ #--------------------------------------------------------------------------
638
+ def check_floor_effect
639
+ execute_floor_damage if $game_player.on_damage_floor?
640
+ end
641
+ #--------------------------------------------------------------------------
642
+ # * Floor Damage Processing
643
+ #--------------------------------------------------------------------------
644
+ def execute_floor_damage
645
+ damage = (basic_floor_damage * fdr).to_i
646
+ self.hp -= [damage, max_floor_damage].min
647
+ perform_map_damage_effect if damage > 0
648
+ end
649
+ #--------------------------------------------------------------------------
650
+ # * Get Base Value for Floor Damage
651
+ #--------------------------------------------------------------------------
652
+ def basic_floor_damage
653
+ return 10
654
+ end
655
+ #--------------------------------------------------------------------------
656
+ # * Get Maximum Value for Floor Damage
657
+ #--------------------------------------------------------------------------
658
+ def max_floor_damage
659
+ $data_system.opt_floor_death ? hp : [hp - 1, 0].max
660
+ end
661
+ #--------------------------------------------------------------------------
662
+ # * Execute Damage Effect on Map
663
+ #--------------------------------------------------------------------------
664
+ def perform_map_damage_effect
665
+ $game_map.screen.start_flash_for_damage
666
+ end
667
+ #--------------------------------------------------------------------------
668
+ # * Clear Actions
669
+ #--------------------------------------------------------------------------
670
+ def clear_actions
671
+ super
672
+ @action_input_index = 0
673
+ end
674
+ #--------------------------------------------------------------------------
675
+ # * Get Action Being Input
676
+ #--------------------------------------------------------------------------
677
+ def input
678
+ @actions[@action_input_index]
679
+ end
680
+ #--------------------------------------------------------------------------
681
+ # * To Next Command Input
682
+ #--------------------------------------------------------------------------
683
+ def next_command
684
+ return false if @action_input_index >= @actions.size - 1
685
+ @action_input_index += 1
686
+ return true
687
+ end
688
+ #--------------------------------------------------------------------------
689
+ # * To Previous Command Input
690
+ #--------------------------------------------------------------------------
691
+ def prior_command
692
+ return false if @action_input_index <= 0
693
+ @action_input_index -= 1
694
+ return true
695
+ end
696
+ end