Project1

标题: 伤害公式的疑问 [打印本页]

作者: familymart    时间: 2018-3-21 02:12
标题: 伤害公式的疑问
a.state?(1)? 200:300 *(b.state?(2)?a.add_state(3)+ 2:1)

如果持有1号状态则200伤害反之300伤害
且目标如果有2号状态  则自己会附加3号状态 然后再给予两倍伤害 反之不变

这段如果目标有2号状态伤害会变成0   请问怎么让句子实行?
作者: 300英雄    时间: 2018-3-21 12:27
本帖最后由 300英雄 于 2018-3-21 12:31 编辑

在 Game_Battler里面找到下面的东西
  def make_damage_value(user, item)
    value = item.damage.eval(user, self, $game_variables) #基础伤害
    value *= item_element_rate(user, item) #元素抗性
    value *= pdr if item.physical? #物理伤害
    value *= mdr if item.magical? #魔法伤害
    value *= rec if item.damage.recover? #恢复增益
    value = apply_critical(value) if @result.critical #暴击
    value = apply_variance(value, item.damage.variance) #离散度判定
    value = apply_guard(value) #防御修正



=begin #若=begin是蓝色把这行最靠左,绿色是正常
解释参数
user使用者
self目标
state?(1)持有1号状态 :user.state?(1) 或者self.state?(1)
add_state(1)添加一号状态 :user.add_state(1)或者self.add_state(1) add改为remove就是移除
value是伤害
item.id物品/技能的ID
item.is_a?(RPG::Skill) 判定是不是技能Skill改成Item就是判定是不是物品
if
end
一个if判定后面要跟一个end ,if怎么样end结束else是否则
=end#若=end是蓝色把这行最靠左,绿色是正常(不懂看图,蓝不正常,绿才对)


#你要的效果
if item.id == X and item.is_a?(RPG::Skill) #修改X为你的技能ID 如果发现效果有什么不对
if user.state?(1) #如果有1号状态

value = 200 #value就是伤害=200
else
if self.state?(2) #同理持有2号状态
user.add_state(3)
value =600
else
value = 300
end

end
end
#结束效果











    @result.make_damage(value.to_i, item)
  end

QQ截图20180321122508.png (4.78 KB, 下载次数: 22)

begin和end

begin和end

作者: 300英雄    时间: 2018-3-21 12:31
补充一下,如果发现伤害没变(离散度,抗性,类型伤害等等都是看基础设置在技能公式基础来算的话),上面基础伤害一直到防御修正全部移到效果的下面就行
作者: 百里_飞柳    时间: 2018-3-21 13:46
改成这样?
  1. a.state?(1) ? 200 : (300 * (b.state?(2) ? (a.add_state(3); 2) : 1))
复制代码

作者: familymart    时间: 2018-3-21 17:26
谢谢楼上两位帮助 顺利解决了




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