Project1

标题: 關於傷害公式的寫法,有人能幫我想想嗎?? [打印本页]

作者: a000b1745    时间: 2013-2-27 14:53
标题: 關於傷害公式的寫法,有人能幫我想想嗎??
技能的HP回復公式裡面,我想寫一個讓目標HP+50 也順便回復TP的公式

" b.tp + 5 " & "b.hp + 50"

但覺得固定恢復5實在太單調了,想用目標的LUK(運氣)來成為恢復的TP量,
請問這公式要怎麼寫??
{:2_263:}
作者: 月满月西楼    时间: 2013-2-27 16:16
在公式里面直接带入LUK进行计算不行么?
作者: a000b1745    时间: 2013-2-27 17:01
本帖最后由 a000b1745 于 2013-2-27 17:02 编辑

應該是說~ 我只要選了公式類型(HP回復,HP傷害等...)
VA就會把算出來的數字代到那個類型的功能裡面,
譬如我在"HP回復"寫的是 b.tp + a.luk
那他就會把施法角色的TP量和目標的LUK加起來做為HP回復的量.......
但其實我想要的是...目標B回復TP值回復量為施法角色的LUK值
{:2_254:}
作者: 月满月西楼    时间: 2013-2-27 17:17
a000b1745 发表于 2013-2-27 17:01
應該是說~ 我只要選了公式類型(HP回復,HP傷害等...)
VA就會把算出來的數字代到那個類型的功能裡面,
譬如 ...

我理解了,不过刚刚实验了下,才发现在 事件 或者 数据库 里面,没有TP值获取方式
弄的我用变量也不知道应该怎么才能获取角色的TP值
应该只能通过在技能中添加备注脚本的方式来实现了
作者: a000b1745    时间: 2013-2-28 09:55
我試了很多方法...就是沒辦法做到利用目標的屬性(如LUK,AGI)來給目標回復TP...{:2_253:}
作者: Sion    时间: 2013-2-28 21:39
本帖最后由 Sion 于 2013-2-28 22:04 编辑

伤害只有如下选项,不能操作TP:

那么只能自己修改一下代码:
  1. class Game_ActionResult
  2. #--------------------------------------------------------------------------
  3.   # ● 生成伤害
  4.   #--------------------------------------------------------------------------
  5.   def make_damage(value, item)
  6.     @critical = false if value == 0
  7.     if item.tp_recovery? # 判断物品/技能是否是用于特技回复
  8.       @tp_damage = -value
  9.     elsif item.damage.to_hp?
  10.       @hp_damage = value
  11.     end
  12.     @mp_damage = value if item.damage.to_mp?
  13.     @mp_damage = [@battler.mp, @mp_damage].min
  14.     @hp_drain = @hp_damage if item.damage.drain?
  15.     @mp_drain = @mp_damage if item.damage.drain?
  16.     @hp_drain = [@battler.hp, @hp_drain].min
  17.     @success = true if item.damage.to_hp? || @mp_damage != 0
  18.   end
  19. end

  20. class Game_Battler < Game_BattlerBase
  21.   #--------------------------------------------------------------------------
  22.   # ● 计算伤害
  23.   #--------------------------------------------------------------------------
  24.   def make_damage_value(user, item)
  25.     value = item.damage.eval(user, self, $game_variables)
  26.     value *= item_element_rate(user, item)
  27.     value *= pdr if item.physical?
  28.     value *= mdr if item.magical?
  29.     value *= rec if item.damage.recover?
  30.     value = apply_critical(value) if @result.critical
  31.     value = apply_variance(value, item.damage.variance)
  32.     value = apply_guard(value) unless item.tp_recovery? # 如果特技回复则不计算防御修正
  33.     @result.make_damage(value.to_i, item)
  34.   end
  35.   #--------------------------------------------------------------------------
  36.   # ● 处理伤害
  37.   #    调用前需要设置好
  38.   #    @result.hp_damage   @result.mp_damage
  39.   #    @result.hp_drain    @result.mp_drain
  40.   #--------------------------------------------------------------------------
  41.   def execute_damage(user)
  42.     on_damage(@result.hp_damage) if @result.hp_damage > 0
  43.     self.hp -= @result.hp_damage
  44.     self.mp -= @result.mp_damage
  45.     self.tp -= @result.tp_damage # 特技回复的处理
  46.     user.hp += @result.hp_drain
  47.     user.mp += @result.mp_drain
  48.   end
  49. end

  50. class Window_BattleLog < Window_Selectable
  51.   #--------------------------------------------------------------------------
  52.   # ● 显示 HP 伤害
  53.   #--------------------------------------------------------------------------
  54.   def display_hp_damage(target, item)
  55.     return if target.result.hp_damage == 0 && item && !item.damage.to_hp?
  56.     return if item.tp_recovery? # 如果特技回复则不显示HP伤害提示
  57.     if target.result.hp_damage > 0 && target.result.hp_drain == 0
  58.       target.perform_damage_effect
  59.     end
  60.     Sound.play_recovery if target.result.hp_damage < 0
  61.     add_text(target.result.hp_damage_text)
  62.     wait
  63.   end
  64. end

  65. class RPG::UsableItem
  66.   def tp_recovery?
  67.     self.note.each_line do |line|
  68.       return true if line.include?("特技回复")
  69.     end
  70.     return false
  71.   end
  72. end
  73.   
复制代码
在备注中加入: 特技回复
伤害计算公式得到的数值就可以用于回复特技了。

注意:伤害类型只能选体力值伤害,选其它的话恐怕会造成额外的效果。

改了下代码,因为发现一些bug……




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