피격시 받은 대미지의 일정 퍼센티지만큼을 MP로 흡수하는 스테이트를 작성가능한 스크립트입니다.
MP로 흡수하는 수치만큼 HP대미지를 경감한다거나 하는 기능은 없습니다.
해당 기능이 필요하신 분은 리퀘스트 주시면 해당 사양이 실장된 스크립트를 따로 만들어드리겠습니다.
module DEST21C
module Damage_MP_Absorb
# 대미지 MP흡수로 사용할 스테이트ID
DMA_ID = 21
# 흡수율(%)
DMA_Percent = 5
# 스테이트ID2 및 흡수율 (DMA_ID가 nil이 아니라면 DMA_Percent도 nil이어선 안됨)
DMA_ID2 = nil
DMA_Percent2 = nil
end
end
class Game_Battler
alias DMA_make_attack_damage_value make_attack_damage_value
def make_attack_damage_value(attacker)
DMA_make_attack_damage_value(attacker)
for state in self.states
if state.id == DEST21C::Damage_MP_Absorb::DMA_ID and @hp_damage > 0
@mp_damage -= @hp_damage * DEST21C::Damage_MP_Absorb::DMA_Percent / 100
end
unless DEST21C::Damage_MP_Absorb::DMA_ID2 == nil
if state.id == DEST21C::Damage_MP_Absorb::DMA_ID2 and @hp_damage > 0
@mp_damage -= @hp_damage * DEST21C::Damage_MP_Absorb::DMA_Percent2 / 100
end
end
end
end
alias DMA_make_obj_damage_value make_obj_damage_value
def make_obj_damage_value(user, obj)
DMA_obj_attack_damage_value(attacker)
for state in self.states
if state.id == DEST21C::Damage_MP_Absorb::DMA_ID and @hp_damage > 0
@mp_damage -= @hp_damage * DEST21C::Damage_MP_Absorb::DMA_Percent / 100
end
unless DEST21C::Damage_MP_Absorb::DMA_ID2 == nil
if state.id == DEST21C::Damage_MP_Absorb::DMA_ID2 and @hp_damage > 0
@mp_damage -= @hp_damage * DEST21C::Damage_MP_Absorb::DMA_Percent2 / 100
end
end
end
end
end
문제는 이것도 테스트 안해봤다는거