Project1

标题: 请教降低固定能力值的状态的实现方法。 [打印本页]

作者: 立仆芋头    时间: 2015-3-3 22:04
标题: 请教降低固定能力值的状态的实现方法。
我想设定一种状态叫”骨折”,中了“骨折”状态的角色,力量会降固定10点。
请路过的大侠指点迷津,或者可以参考的范例,谢谢。

作者: duchen5779    时间: 2015-3-5 11:02
Game_Battler里,
  1.   #--------------------------------------------------------------------------
  2.   # ● 附加状态
  3.   #     state_id : 状态 ID
  4.   #--------------------------------------------------------------------------
  5.   def add_state(state_id)
  6.     state = $data_states[state_id]        # 获取状态资料
  7.     return if state == nil                # 资料是否为空?
  8.     return if state_ignore?(state_id)     # 状态是否无视?
  9.     unless state?(state_id)               # 状态是否存在?
  10.       unless state_offset?(state_id)      # 状态是否抵销?
  11.         @states.push(state_id)            # 加入状态
  12.       end
  13.       
  14.       if state_id == 19
  15.         self.atk -=10
  16.         end
  17.       if state_id == 1                    # 如状态是「无法战斗」(1号状态)
  18.         @hp = 0                           # 设体力为0
  19.       end
  20.       unless inputable?                   # 除非角色无法输入命令
  21.         @action.clear                     # 清除所有行动
  22.       end
  23.       for i in state.state_set            # 获取「移除状态」列表
  24.         remove_state(i)                   # 移除状态
  25.         @removed_states.delete(i)         # 清除
  26.       end
  27.       sort_states                         # 依照优先度排列状态
  28.     end
  29.     @state_turns[state_id] = state.hold_turn    # 设置回合数
  30.   end
复制代码
在这里面,
RUBY 代码复制
  1. if state_id == 19
  2.         self.atk -=10
  3.         end


是新加上去的,如果状态是19号,攻击力减10
作者: 立仆芋头    时间: 2015-3-5 14:06
无比感激,
大侠功高德厚。乐天助人。{:2_275:}
作者: duchen5779    时间: 2015-3-6 09:48
本帖最后由 duchen5779 于 2015-3-6 10:17 编辑

啊,好像在战斗中确实是不行。后来在Game_Battler里改了改,战斗中倒是行,但问题是,一直判断是否有那个状态,判断一次减10攻击,判断一次减10攻击,直到减到1……总之吧,好像不顶了……不好意思了,想解决找大神吧……
作者: 上贺茂润    时间: 2015-3-6 15:24
改变角色状态怎么能在battle里设定,肯定是在Actor里设定
def base_atk
    n = actor.parameters[2, @level]
    for item in equips.compact do n += item.atk  end
   if actor.state_id==??
    n = n -10
   end
   return n
  end
作者: 立仆芋头    时间: 2015-3-6 21:44
新的解法?我本来已经放弃了说。我赶紧再试试。
作者: chd114    时间: 2015-3-8 16:15
duchen5779 发表于 2015-3-4 18:02
Game_Battler里,在这里面,      if state_id == 19
        self.atk -=10
        end[/pre]

这样是永远地减少了10点吧···




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