Project1

标题: 角色在某状态下某特定技能伤害加大 [打印本页]

作者: duchen5779    时间: 2014-12-3 10:27
标题: 角色在某状态下某特定技能伤害加大
本帖最后由 duchen5779 于 2014-12-3 10:38 编辑

找到了这样一个帖子,是XP的。  https://rpg.blue/thread-370030-1-1.html       我想也在VX的Game_Battler里照猫画虎仿照一下。是不是这样写?
如果攻击者被增加状态ID为1并且使用技能ID为2时,怪物收到的伤害加倍。   刚才又想到的……或者是判断当攻击者身上装备某件防具的时候,怪物受到的特定技能的伤害加倍。比如角色身上装备着ID为1号的防具,释放的ID为2号的技能对怪物的伤害加倍。

状态ID为1并且使用技能ID为2时,怪物收到的伤害加倍。
      if user.state == 1  and  skill.id ==2        
        self.damage *= 2

还是怎么写?
另外,是插入在 ● 技能效果发动 ,也就是 def skill_effect(user, skill) 下面吗?插入在这里的最后面好像出错,求教写法和放置的地方,谢谢……


作者: 上贺茂润    时间: 2014-12-3 10:39
VX的Damage不用self的吧 感觉你这个Skill.id怪怪的,采用base的试试 位置的话实在不行在计算技能伤害最后汇总那里做文章
作者: duchen5779    时间: 2014-12-3 10:52
刚才 看了一下计算技能伤害那里,也就是 648行这里
  1.   #--------------------------------------------------------------------------
  2.   # ● 计算技能/物品伤害
  3.   #     user : 技能或物品的使用者
  4.   #     obj  : 使用的技能或物品
  5.   #    计算结果赋值入 @hp_damage
  6.   #--------------------------------------------------------------------------
  7.   def make_obj_damage_value(user, obj)
  8.     damage = obj.base_damage                        # 基础计算
  9.     if damage > 0                                   # 若伤害为正
  10.       damage += user.atk * 4 * obj.atk_f / 100      # 使用者攻击力关系度
  11.       damage += user.spi * 2 * obj.spi_f / 100      # 使用者精神力关系度
  12.       unless obj.ignore_defense                     # 除非无视防御力
  13.         damage -= self.def * 2 * obj.atk_f / 100    # 目标攻击力关系度
  14.         damage -= self.spi * 1 * obj.spi_f / 100    # 目标精神力关系度
  15.       end
  16.       damage = 0 if damage < 0                      # 设负数伤害为0
  17.     elsif damage < 0                                # 若伤害为负
  18.       damage -= user.atk * 4 * obj.atk_f / 100      # 使用者攻击力关系度
  19.       damage -= user.spi * 2 * obj.spi_f / 100      # 使用者精神力关系度
  20.     end
  21.     damage *= elements_max_rate(obj.element_set)    # 属性校正
  22.     damage /= 100
  23.     damage = apply_variance(damage, obj.variance)   # 分散度
  24.     damage = apply_guard(damage)                    # 防御校正
  25.     if obj.damage_to_mp  
  26.       @mp_damage = damage                           # 伤害魔力
  27.     else
  28.       @hp_damage = damage                           # 伤害体力
  29.       
  30.         if user.state == 1  and  skill.id ==2        
  31.         damage *= 2
  32.       
  33.     end
  34.   end
复制代码
不用self也行?

if user.state == 1  and  skill.id ==2 
damage *= 2

这样? 但是确实这个skill.id还是怪怪的,因为是从XP那边看过来的……
作者: duchen5779    时间: 2014-12-3 11:21
本帖最后由 duchen5779 于 2014-12-3 14:47 编辑

哪位大神能写一个单独的脚本出来啊,估计也没几行东西,就是判断身上增加相应状态,使用相应攻击技能时伤害增加,或者判断身上装备相关防具,使用相关技能时伤害增加。(两个可以和在一起写吗?不知道两者都满足的时候会不会冲突)
作者: 正太君    时间: 2014-12-3 18:11
duchen5779 发表于 2014-12-3 10:52
刚才 看了一下计算技能伤害那里,也就是 648行这里不用self也行?

if user.state == 1  and  skill.id ...
  1.   #--------------------------------------------------------------------------
  2.   # ● 计算技能/物品伤害
  3.   #     user : 技能或物品的使用者
  4.   #     obj  : 使用的技能或物品
  5.   #    计算结果赋值入 @hp_damage
  6.   #--------------------------------------------------------------------------
  7.   def make_obj_damage_value(user, obj)
  8.     damage = obj.base_damage                        # 基础计算
  9.     if damage > 0                                   # 若伤害为正
  10.       damage += user.atk * 4 * obj.atk_f / 100      # 使用者攻击力关系度
  11.       damage += user.spi * 2 * obj.spi_f / 100      # 使用者精神力关系度
  12.       unless obj.ignore_defense                     # 除非无视防御力
  13.         damage -= self.def * 2 * obj.atk_f / 100    # 目标攻击力关系度
  14.         damage -= self.spi * 1 * obj.spi_f / 100    # 目标精神力关系度
  15.       end
  16.       damage = 0 if damage < 0                      # 设负数伤害为0
  17.     elsif damage < 0                                # 若伤害为负
  18.       damage -= user.atk * 4 * obj.atk_f / 100      # 使用者攻击力关系度
  19.       damage -= user.spi * 2 * obj.spi_f / 100      # 使用者精神力关系度
  20.     end
  21.     damage *= elements_max_rate(obj.element_set)    # 属性校正
  22.     damage /= 100
  23.     damage = apply_variance(damage, obj.variance)   # 分散度
  24.     damage = apply_guard(damage)                    # 防御校正
  25.     if obj.damage_to_mp  
  26.       @mp_damage = damage                           # 伤害魔力
  27.     else
  28.       damage *= 2 if user.state?(10) and obj.is_a?(RPG::Skill) and obj.id == 2 # 状态不要用1号,1号是战斗不能...
  29.       @hp_damage = damage                           # 伤害体力
  30.     end  
  31.   end
复制代码

作者: duchen5779    时间: 2014-12-3 19:22
本帖最后由 duchen5779 于 2014-12-3 20:03 编辑

谢谢聪仔~另外问一句,如果是判断身上装备相关防具,使用相关技能时伤害增加,也就是那一句代码,应该怎么写?比如装备20号防具的时候,59号技能伤害提升10倍。

damage *= 10 if user.armor1(armor2/armor3/armor4)?(20) and obj.is_a?(RPG::Skill) and obj.id == 59

是这样吗?

@正太君
作者: 正太君    时间: 2014-12-3 20:41
duchen5779 发表于 2014-12-3 19:22
谢谢聪仔~另外问一句,如果是判断身上装备相关防具,使用相关技能时伤害增加,也就是那一句代码,应该怎么 ...
  1. damage *= 10 if user.actor? and user.armors.include?($data_armors[20]) and obj.is_a?(RPG::Skill) and obj.id == 59
复制代码

作者: duchen5779    时间: 2014-12-3 20:58
本帖最后由 duchen5779 于 2014-12-3 21:06 编辑

太感谢了!解决了困扰已久的问题!已去专用贴申请版主手动认可答案!




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