#----------------------------------------------------------------------------
# ダメージ吸収 貪藻矢射妥←カスタム by 貪藻矢射妥←
# 微妙に使いづらいです・・・多分(をひ)
#----------------------------------------------------------------------------
# 原作: ◆ ダメージ吸収 - KGC_AbsorbDamage ◆
# ◇ Last update : 2008/06/07 ◇
# 原作者: TOMY様
# HP: KGC Software
# アドレス: http://ytomy.sakura.ne.jp/
#
# 改造内容:
# ・ダメージ吸収○%の廃止(ダメージ吸収は常に100%)
# ・通常攻撃にSP吸収を追加
# ・シフトダメージの実装
#
# ※SPダメージと併用することで以下のスキルを作成可能です
# ・SP吸収
# ・HPにダメージを与え、SPをHPダメージ分回復
# ・SPにダメージを与え、HPをSPダメージ分回復
#
# ※なお、ダメージ吸収○%を復活させるかもしれないのでその関数などは残したまま
# となっております。
#
#============================================================================
# 変更点
# 2009:09:14
# ・通常攻撃のシフトダメージが実装されていなかったミスを修正
# ・通常攻撃でSP吸収を設定してもHPにダメージを与えていたバグを修正
#==============================================================================
# ★ カスタマイズ項目 ★
#==============================================================================
module KGC
# ◆吸収量制限
# true にすると、相手の残存HP/SPを超える量は吸収しない。
ABSDMG_RESTRICT = true
# ◆吸収属性
ABSORB = 28
# ◆Recover Inverce属性
RECV_INV = 51
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
$imported = {} if $imported == nil
$imported["AbsorbDamage"] = true
#==============================================================================
# ■ Game_Battler
#==============================================================================
class Game_Battler
attr_accessor :prev_hp, :prev_sp
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
alias initialize_KGC_AbsorbDamage initialize
def initialize
initialize_KGC_AbsorbDamage
@prev_hp = nil
@prev_sp = nil
end
#--------------------------------------------------------------------------
# ● 吸収率取得
# elements : 属性配列
#--------------------------------------------------------------------------
def absorbency(elements)
n = 0
elements.each { |element|
if $game_special_elements["absorb"] =~ $data_system.elements[element]
n += $1.to_i
end
}
return n
end
#--------------------------------------------------------------------------
# ● 通常攻撃の効果適用
#--------------------------------------------------------------------------
alias attack_effect_KGC_AbsorbDamage attack_effect
def attack_effect(attacker)
result = attack_effect_KGC_AbsorbDamage(attacker)
# ダメージ判定
#r = absorbency(attacker.element_set)
if result && attacker.element_set.include?(KGC::ABSORB)# && r > 0
# 吸収量を算出
if $imported["SPDamage"] && attacker.element_set.include?(KGC::SP_DAMAGE)
recover_sp = self.damage.to_i# * r / 100
recover_sp = [recover_sp, self.prev_sp].min if KGC::ABSDMG_RESTRICT
# シフトダメージの場合HP/SPの回復を反転する
if attacker.element_set.include?(KGC::RECV_INV)
attacker.hp += recover_sp
attacker.damage = -recover_sp
else
attacker.sp += recover_sp
attacker.damage2 = -recover_sp
end
self.damage2 = self.damage
self.damage = nil
else
recover_hp = self.damage.to_i# * r / 100
recover_hp = [recover_hp, self.prev_hp].min if KGC::ABSDMG_RESTRICT
# シフトダメージの場合HP/SPの回復を反転する
if attacker.element_set.include?(KGC::RECV_INV)
attacker.sp += recover_hp
attacker.damage2 = -recover_hp
else
attacker.hp += recover_hp
attacker.damage = -recover_hp
end
end
end
return result
end
#--------------------------------------------------------------------------
# ● スキルの効果適用
#--------------------------------------------------------------------------
alias skill_effect_KGC_AbsorbDamage skill_effect
def skill_effect(user, skill)
result = skill_effect_KGC_AbsorbDamage(user, skill)
# ダメージ判定
#r = absorbency(skill.element_set)
if result && skill.element_set.include?(KGC::ABSORB)# && r > 0
if $imported["SPDamage"] && self.damage2.is_a?(Numeric)
# SP吸収量を算出
recover_sp = self.damage2.to_i# * r / 100
recover_sp = [recover_sp, self.prev_sp].min if KGC::ABSDMG_RESTRICT
# シフトダメージの場合HP/SPの回復を反転する
if skill.element_set.include?(KGC::RECV_INV)
user.hp += recover_sp
user.damage = -recover_sp
else
user.sp += recover_sp
user.damage2 = -recover_sp
end
end
if self.damage.is_a?(Numeric)
# HP吸収量を算出
recover_hp = self.damage.to_i# * r / 100
recover_hp = [recover_hp, self.prev_hp].min if KGC::ABSDMG_RESTRICT
# シフトダメージの場合HP/SPの回復を反転する
if skill.element_set.include?(KGC::RECV_INV)
user.sp += recover_hp
user.damage2 = -recover_hp
else
user.hp += recover_hp
user.damage = -recover_hp
end
end
end
return result
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ Scene_Battle (分割定義 4)
#==============================================================================
class Scene_Battle
#--------------------------------------------------------------------------
# ● フレーム更新 (メインフェーズ ステップ 2 : アクション開始)
#--------------------------------------------------------------------------
alias update_phase4_step2_KGC_AbsorbDamage update_phase4_step2
def update_phase4_step2
# 元のHPを保存
($game_party.actors + $game_troop.enemies).each { |battler|
battler.prev_hp = battler.hp
battler.prev_sp = battler.sp
}
update_phase4_step2_KGC_AbsorbDamage
end
#--------------------------------------------------------------------------
# ● フレーム更新 (メインフェーズ ステップ 5 : ダメージ表示)
#--------------------------------------------------------------------------
alias update_phase4_step5_KGC_AbsorbDamage update_phase4_step5
def update_phase4_step5
update_phase4_step5_KGC_AbsorbDamage
# 行動者もダメージ表示
@active_battler.damage_pop |=
(@active_battler.damage != nil && @active_battler.damage != "Miss") ||
($imported["SPDamage"] && @active_battler.damage2 != nil)
end
end
|