Project1

标题: 求教一下,设计了一个流血技能,但还有缺陷 [打印本页]

作者: 踢腿水上飘    时间: 2020-3-10 11:59
标题: 求教一下,设计了一个流血技能,但还有缺陷
意思就是攻击目标,并给目标挂上一个流血的状态,让这个敌人每回合都掉血,掉血的量就是刚才攻击造成的伤害
我的思路是用变量1记录下这次攻击的伤害,然后流血技能触发公共事件,用变量2=变量1,把流血的伤害记录到变量2里面,然后在体力恢复那里设定如果处于流血状态,每回合减少 变量2 的体力

倒是实现了流血效果的制作,就还有个大问题

如果有2个敌人A和B
我给A附加流血状态,A就会按我这次攻击的伤害量持续掉血,然后我给B也附加流血状态,A的持续掉血数值就会被B给覆盖了
求教这个问题怎么解决啊,
我想的是给每个不同编号的敌人设置不同的变量,然后根据敌人的编号来代入不同的伤害值
或者多做几个流血状态,根据敌人编号的不同,附加不同的流血状态
但以上两种思路都不知道怎么才能做到。
作者: 穿越时空之剑    时间: 2020-3-10 15:34
我觉得这个bug只用事件的话是没有办法了,而且敌人数量一多,设置起来也相当麻烦
话说为何不设置成按百分比掉血或者固定数值掉血,或者换一种想法,改成受到的伤害变为双倍的debuff,和你这个在数值上也没区别
作者: chanszeman1018    时间: 2020-3-10 16:45
提示: 作者被禁止或删除 内容自动屏蔽
作者: xsrong2    时间: 2020-3-11 16:09
如果一定要用事件的话,可以试着用多个开关来实现。
比如你的游戏中,敌人队伍中最多可以有8个敌人,那你就用8个开关来一一对应即可。
作者: 踢腿水上飘    时间: 2020-3-14 23:25
有人吗?????
作者: enghao_lim    时间: 2020-3-15 11:05
稍微弄了下,原装工程,不保证和其他脚本冲突,必须设定掉血状态的ID。
  1. #==============================================================================
  2. # 设置
  3. #------------------------------------------------------------------------------
  4. # 状态ID必须设置
  5. #==============================================================================

  6. module LimSkillInjure
  7.   # 掉血状态ID
  8.   StateId = 26
  9. end

  10. #==============================================================================
  11. # RPG::UsableItem
  12. #------------------------------------------------------------------------------
  13. # 为技能与物品添加掉血判定
  14. #==============================================================================

  15. class RPG::UsableItem
  16.   
  17.   #--------------------------------------------------------------------------
  18.   # 是否导致掉血(会附加状态)
  19.   #--------------------------------------------------------------------------
  20.   def will_injure
  21.     if @will_injure == nil
  22.       @will_injure = false
  23.       for i in [email protected]
  24.         if @effects[i].code == 21 and @effects[i].data_id == LimSkillInjure::StateId
  25.           @will_injure = true
  26.           break
  27.         end
  28.       end
  29.     end
  30.     return @will_injure
  31.   end
  32. end

  33. #==============================================================================
  34. # Game Battler
  35. #------------------------------------------------------------------------------
  36. # 重定义连续伤害
  37. #==============================================================================
  38. class Game_Battler

  39.   #--------------------------------------------------------------------------
  40.   # 默认伤害,记录掉血值
  41.   #--------------------------------------------------------------------------
  42.   alias rgss_make_damage_value make_damage_value
  43.   def make_damage_value(user, item)
  44.     rgss_make_damage_value(user, item)
  45.     if (item.will_injure)
  46.       @injure_damage = @result.hp_damage
  47.     end
  48.   end
  49.   #--------------------------------------------------------------------------
  50.   # 重定义连续伤害
  51.   #--------------------------------------------------------------------------
  52.   def regenerate_hp
  53.     damage = -(mhp * hrg).to_i
  54.     perform_map_damage_effect if $game_party.in_battle && damage > 0
  55.     @result.hp_damage = [damage, max_slip_damage].min
  56.     if (self.is_injure?)
  57.       @result.hp_damage += (@injure_damage == nil) ? 0 : @injure_damage
  58.     end
  59.     self.hp -= @result.hp_damage
  60.   end
  61.   #--------------------------------------------------------------------------
  62.   # 判断角色是否处在掉血状态
  63.   #--------------------------------------------------------------------------
  64.   def is_injure?
  65.     return @states.include?(LimSkillInjure::StateId)
  66.   end
  67. end
复制代码

作者: chanszeman1018    时间: 2020-3-15 11:14
提示: 作者被禁止或删除 内容自动屏蔽




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