Project1

标题: 变量护盾问题 [打印本页]

作者: 347780682    时间: 2015-11-11 14:24
标题: 变量护盾问题
这是在论坛找到的一个变量护盾脚本,当状态在角色上面时能正常的减少伤害,但是状态在敌人身上时就失效了(无法抵消伤害)
求大大帮忙改造下


RUBY 代码复制
  1. class Game_Actor
  2.  
  3.   alias apply_guard_without_state apply_guard
  4.   def apply_guard(value)
  5.     value = apply_guard_without_state(value)
  6.     if state?(50) && value > 0   
  7.       v = $game_variables      
  8.       if v[30] >= value      
  9.         $Hurt_Shield = value
  10.         $Magic_Shield = "have"
  11.         v[30] -= value
  12.         0
  13.       else
  14.         value -= v[30]
  15.         $Hurt_Shield = value
  16.         $Magic_Shield = "have"
  17.         v[30] = 0
  18.         $game_party.members.each {|actor| actor.remove_state(50) }
  19.         value
  20.       end
  21.     else
  22.       $Magic_Shield = ""
  23.       value
  24.     end
  25.   end
  26. end
  27. class Game_ActionResult
  28.   #--------------------------------------------------------------------------
  29.   # ● 获取 HP 伤害的文字
  30.   #--------------------------------------------------------------------------
  31.   def hp_damage_text
  32.     if @hp_drain > 0
  33.       fmt = @battler.actor? ? Vocab::ActorDrain : Vocab::EnemyDrain
  34.       sprintf(fmt, @battler.name, Vocab::hp, @hp_drain)
  35.     elsif @hp_damage > 0
  36.       fmt = @battler.actor? ? Vocab::ActorDamage : Vocab::EnemyDamage
  37.       sprintf(fmt, @battler.name, @hp_damage)
  38.     elsif @hp_damage < 0
  39.       fmt = @battler.actor? ? Vocab::ActorRecovery : Vocab::EnemyRecovery
  40.       sprintf(fmt, @battler.name, Vocab::hp, -hp_damage)
  41.     elsif $Magic_Shield == "have"
  42.       fmt = "魔法之盾抵消了%s点伤害"
  43.       sprintf(fmt,$Hurt_Shield.to_i)
  44.     else
  45.       fmt = @battler.actor? ? Vocab::ActorNoDamage : Vocab::EnemyNoDamage
  46.       sprintf(fmt, @battler.name)
  47.     end
  48.   end
  49. end

作者: 喵呜喵5    时间: 2015-11-11 14:28
未测试

第一行改成 class Game_Battler
作者: 百里_飞柳    时间: 2015-11-11 17:45
不知道怎么改,不过我给个思路吧,期待有牛人来帮忙:
在原脚本中是重写了防御检查,新增了一个变量来代表当前我方队伍可用的汲取伤害总数值,
所以,只是写了我方的,而且是唯一的一个,
所以如果强行给敌人加状态,会出现敌人也用我方的护盾的神奇bug。

然后重写的话需要判定受到伤害的是否为敌人,并且需要新增一个变量来记录敌人的护盾数值。




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