Project1

标题: 消耗当前TP值的问题 [打印本页]

作者: hijl1990    时间: 2015-9-17 10:50
标题: 消耗当前TP值的问题

问题是如果做一个消耗当前TP值的技能?
比如:角色当前的TP值为80,那么该技能就是消耗80的TP值,造成80%伤害。

搜索了后找到了这个答案:https://rpg.blue/thread-366142-1-1.html

但是如那贴里所说,如果敌人不是单人的话就会没效果,请问要怎么改?
作者: cinderelmini    时间: 2015-9-17 16:34
本帖最后由 cinderelmini 于 2015-9-21 14:43 编辑

Game_Battler里面的【计算伤害】部分:
  1.   #--------------------------------------------------------------------------
  2.   # ● 计算伤害
  3.   #--------------------------------------------------------------------------
  4.   def make_damage_value(user, item)
  5.     value = item.damage.eval(user, self, $game_variables)
  6.     value *= item_element_rate(user, item)
  7.     value *= pdr if item.physical?
  8.     value *= mdr if item.magical?
  9.     value *= rec if item.damage.recover?
  10.     value = apply_critical(value) if @result.critical
  11.     value = apply_variance(value, item.damage.variance)
  12.     value = apply_guard(value)
  13.     if user.is_a?(Game_Actor)
  14.       if item.id == 50              # 消耗全部TP的技能ID分歧,多技能的话请用include?的方式
  15.         value *= 1 + user.tp_rate
  16.       end
  17.     end
  18.     @result.make_damage(value.to_i, item)
  19.   end
复制代码
计算伤害的部分,然后技能设置的时候这个技能的TP消耗设定为0。
(清楚tp的那句还是不要放在这里了。)
之后去【Scene_Battle】里(用了别的战斗系统的话就去新的战斗系统里)找到“use_item”方法,然后把

  1.     @subject.use_item(item)
  2.     refresh_status
复制代码
这两句放到方法的最后去,这样应该真的就可以了。。。。
PS:为了让这个行为可逆,请用复制和注释的方式,以免忘记它们原来的位置(雾


include?的用法的话,如果自己有module的话,
就可以在module里写个技能组,如:
  1. module XXX
  2.   TP_SKILL_IDS = []
  3.   for i in 50..100
  4.     TP_SKILL_IDS.push(i)
  5.   end
  6. end
复制代码
如果没有自己的模块的话,就在mian脚本里面找个空白的地方写:

  1. $tp_skill_ids = []
  2. for i in 50..100
  3.   $tp_skill_ids.push(i)
  4. end
复制代码
然后用的时候,像这样就行:
  1. if XXX::TP_SKILL_IDS.include?(skill.id)
  2. # 或者:
  3. if $tp_skill_ids.include?(skill.id)
复制代码
唔。。就这样。。。
总之就是先建个数组,把包含的ID全塞进去,再判断这个数组是不是包含了当前的技能ID……




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