Project1

标题: 如何制作双刃类技能? [打印本页]

作者: xxyzx    时间: 2017-5-29 13:18
标题: 如何制作双刃类技能?
例如像“攻击后使用者hp扣除本次伤害的X%”或者“技能发动时使用者损失X%的hp后再处理技能效果”这样的0.0
作者: 魔法丶小肉包    时间: 2017-5-29 16:04
在技能备注里写<双刃技能 数字>
比如<双刃技能 2> 那么就是除以2

想要扣除此次伤害百分比的hp的话
RUBY 代码复制
  1. class Game_Battler < Game_BattlerBase
  2.   def make_damage_value(user, item)
  3.     value = item.damage.eval(user, self, $game_variables)
  4.     value *= item_element_rate(user, item)
  5.     value *= pdr if item.physical?
  6.     value *= mdr if item.magical?
  7.     value *= rec if item.damage.recover?
  8.     value = apply_critical(value) if @result.critical
  9.     value = apply_variance(value, item.damage.variance)
  10.     value = apply_guard(value)
  11.     @result.make_damage(value.to_i, item)
  12.     if item.note =~ /<双刃技能\s*(\d+)>/
  13.       user.hp -= (value/$1.to_f).to_i
  14.     end
  15.   end
  16. end


想要扣除最大hp的百分比的话
RUBY 代码复制
  1. class Game_Battler < Game_BattlerBase
  2.   def item_apply(user, item)
  3.     if item.note =~ /<双刃技能\s*(\d+)>/
  4.       user.hp -= (user.mhp/$1.to_f).to_i
  5.     end
  6.     @result.clear
  7.     @result.used = item_test(user, item)
  8.     @result.missed = (@result.used && rand >= item_hit(user, item))
  9.     @result.evaded = (!@result.missed && rand < item_eva(user, item))
  10.     if @result.hit?
  11.       unless item.damage.none?
  12.         @result.critical = (rand < item_cri(user, item))
  13.         make_damage_value(user, item)
  14.         execute_damage(user)
  15.       end
  16.       item.effects.each {|effect| item_effect_apply(user, item, effect) }
  17.       item_user_effect(user, item)
  18.     end
  19.   end
  20. end





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1