# ▽▽▽ XRXSv42. 詳細設定、スリップ&リカバー ▽▽▽ # # publish 2010/ 4/10 # update - 11/ 1/ 4 # #============================================================================== # カスタマイズポイント #============================================================================== module XRXSV42 # # システムレベルでのMP自動回復の量 # BasicMPRecover = 0 BasicMPRecoverPercent = 0 # # HPスリップダメージでの戦闘不能(HP 0)になる? # SlipDown = false # # 分散度 - (HP/MP-スリップ/リカバー共通) # Variance = 10 # # ステートオプション「スリップダメージ」のダメージ%(VX標準 : 10) # SlipD = 10 # # 防具オプション「HP自動回復」の回復%(VX標準 : 5) # RecoverD = 5 # # \slip_by_level での1レベルにつきダメージは...[単位:%] # SlipLevelBy = 5 end #============================================================================== # 各種追加機能への対応 #============================================================================== class RPG::Weapon def auto_hp_recover return false end end class RPG::State def auto_hp_recover return false end end class Game_Battler def note return "" end def auto_hp_recover return false end def equips return [] end end class Game_Enemy < Game_Battler def note return self.enemy.note end end #============================================================================== # \slip[n], \mpslip[n], \recover[n], \mprecover[n]の情報取得 #============================================================================== class Game_Battler def slip_hp_damage_value percent = 0 for object in self.states percent += XRXSV42::SlipD end for object in self.equips.compact + self.states + [self] percent += (object.note[/\\slip\[([+-]*?[0-9]+?)\]/] ? $1.to_i : 0) end for state in self.states if state.note[/\\slip_by_level/] percent += (@state_turns[state.id].to_i + 1) * XRXSV42::SlipLevelBy end end percent = [percent, 0].max for object in self.equips.compact + self.states + [self] object.note.gsub(/\\slip\/([+-]*?[0-9]+?)/) do percent /= $1.to_i end end return self.maxhp * percent / 100 end def slip_mp_damage_value percent = 0 for object in self.equips.compact + self.states + [self] object.note.gsub!(/\\mpslip\[([+-]*?[0-9]+?)\]/) do percent += $1.to_i end end percent = [percent, 0].max for object in self.equips.compact + self.states + [self] object.note.gsub(/\\slip\/([+-]*?[0-9]+?)/) do percent /= $1.to_i end end return self.maxmp * percent / 100 end def auto_hp_recover_value percent = 0 for object in self.equips.compact + self.states + [self] percent += (object.auto_hp_recover ? XRXSV42::RecoverD : 0) unless object.is_a?(Game_Battler) percent += (object.note[/\\recover\[([+-]*?[0-9]+?)\]/] ? $1.to_i : 0) end percent = [percent, 0].max return self.maxhp * percent / 100 end def auto_mp_recover_value percent = XRXSV42::BasicMPRecoverPercent for object in self.equips.compact + self.states + [self] n = (object.note[/\\mprecover\[([+-]*?[0-9]+?)\]/] ? $1.to_i : 0) percent += n end percent = [percent, 0].max return (self.maxmp * percent / 100 + XRXSV42::BasicMPRecover) end end #============================================================================== # スリップダメージの効果適用 [再定義] #============================================================================== class Game_Battler def slip_damage_effect if @hp > 0 n = self.slip_hp_damage_value if n != 0 @hp_damage = apply_variance(n, XRXSV42::Variance) if !XRXSV42::SlipDown and @hp_damage >= @hp self.hp = 1 else self.hp -= @hp_damage end self.damage_pops.push(@hp_damage) rescue nil end n = self.slip_mp_damage_value if n != 0 @mp_damage = apply_variance(n, XRXSV42::Variance) self.mp -= n self.damage_pops.push(Vocab.mp_a + @mp_damage.to_s) rescue nil end end end end #============================================================================== # オートリカバーの効果適用 一部[再定義] #============================================================================== class Game_Battler def do_auto_recovery if not dead? n = self.auto_hp_recover_value if n != 0 n = apply_variance(n, XRXSV42::Variance) self.hp += n self.damage_pops.push(-n) rescue nil end n = self.auto_mp_recover_value if n != 0 n = apply_variance(n, XRXSV42::Variance) self.mp += n self.damage_pops.push(Vocab.mp_a + (-n).to_s) rescue nil end end end end class Game_Actor < Game_Battler def do_auto_recovery super end end #============================================================================== # トループもオートリカバー #============================================================================== class Game_Party < Game_Unit alias xrxsv42_do_auto_recovery do_auto_recovery def do_auto_recovery xrxsv42_do_auto_recovery $game_troop.do_auto_recovery end end class Game_Unit def do_auto_recovery for battler in members battler.do_auto_recovery end end end