本帖最后由 KB.Driver 于 2019-1-24 18:43 编辑
module CLD99 module Dracula DRAIN_SKILL_ID = 23 # 领悟了此ID技能后,所有攻击带吸血 DRAIN_RATE = 0.1 # 因上面的情况允许吸血时的比例 end end class Game_Battler #-------------------------------------------------------------------------- # ● [追加]是否所有攻击带吸血 #-------------------------------------------------------------------------- def dracula? @skills.include?(CLD99::Dracula::DRAIN_SKILL_ID) end #-------------------------------------------------------------------------- # ● [别名修改]计算伤害 #-------------------------------------------------------------------------- alias :make_damage_value_for_dracula :make_damage_value def make_damage_value(user, item) make_damage_value_for_dracula(user, item) @result.make_dracula(item) if user.actor? && user.dracula? end end class Game_ActionResult attr_reader :dracula #-------------------------------------------------------------------------- # ● [追加]计算吸血 #-------------------------------------------------------------------------- def make_dracula(item) return if item.damage.drain? # 自带吸血的技能不参与 return if @hp_damage < 0 # 回复类技能不参与 @hp_drain = (@hp_damage * CLD99::Dracula::DRAIN_RATE).to_i @dracula = true end #-------------------------------------------------------------------------- # ● [别名修改]获取 HP 伤害的文字 #-------------------------------------------------------------------------- alias hp_damage_text_for_dracula hp_damage_text def hp_damage_text if @dracula fmt = "%s造成了%s伤害,吸收了%s%s" return sprintf(fmt, @battler.name, @hp_damage, @hp_drain, Vocab.hp) end hp_damage_text_for_dracula end end class Window_BattleLog #-------------------------------------------------------------------------- # ● 显示 HP 伤害 #-------------------------------------------------------------------------- alias :display_hp_damage_for_dracula :display_hp_damage def display_hp_damage(target, item) target.perform_damage_effect if target.result.dracula display_hp_damage_for_dracula(target, item) end end
module CLD99
module Dracula
DRAIN_SKILL_ID = 23
# 领悟了此ID技能后,所有攻击带吸血
DRAIN_RATE = 0.1
# 因上面的情况允许吸血时的比例
end
end
class Game_Battler
#--------------------------------------------------------------------------
# ● [追加]是否所有攻击带吸血
#--------------------------------------------------------------------------
def dracula?
@skills.include?(CLD99::Dracula::DRAIN_SKILL_ID)
end
#--------------------------------------------------------------------------
# ● [别名修改]计算伤害
#--------------------------------------------------------------------------
alias :make_damage_value_for_dracula :make_damage_value
def make_damage_value(user, item)
make_damage_value_for_dracula(user, item)
@result.make_dracula(item) if user.actor? && user.dracula?
end
end
class Game_ActionResult
attr_reader :dracula
#--------------------------------------------------------------------------
# ● [追加]计算吸血
#--------------------------------------------------------------------------
def make_dracula(item)
return if item.damage.drain? # 自带吸血的技能不参与
return if @hp_damage < 0 # 回复类技能不参与
@hp_drain = (@hp_damage * CLD99::Dracula::DRAIN_RATE).to_i
@dracula = true
end
#--------------------------------------------------------------------------
# ● [别名修改]获取 HP 伤害的文字
#--------------------------------------------------------------------------
alias hp_damage_text_for_dracula hp_damage_text
def hp_damage_text
if @dracula
fmt = "%s造成了%s伤害,吸收了%s%s"
return sprintf(fmt, @battler.name, @hp_damage, @hp_drain, Vocab.hp)
end
hp_damage_text_for_dracula
end
end
class Window_BattleLog
#--------------------------------------------------------------------------
# ● 显示 HP 伤害
#--------------------------------------------------------------------------
alias :display_hp_damage_for_dracula :display_hp_damage
def display_hp_damage(target, item)
target.perform_damage_effect if target.result.dracula
display_hp_damage_for_dracula(target, item)
end
end
新建工程运行通过。 |