Project1

标题: RTAB实现被动技能触发的方法 [打印本页]

作者: mugencomic    时间: 2014-5-11 22:43
标题: RTAB实现被动技能触发的方法
RTAB打起来节奏实在很快,最近想加些长动画的被动技能来提供一点中断的机会,同时令角色的特点更强。
首先被动技能先在RTAB初始化的地方设置好——
RUBY 代码复制
  1. #-----------------被动技能设定---------------------#
  2.     #初始化被动技能
  3.     @passive_skill_used = []
  4.     @passive_skill = []
  5.     for i in 1...$data_actors.size
  6.       a=[]
  7.       @passive_skill.push(a)
  8.     end
  9.     @passive_skill[0]=[4]
  10.     @passive_skill[1]=[]
  11.     @passive_skill[2]=[6]
  12.     @passive_skill[3]=[5]
  13.     @passive_skill[4]=[]
  14.     @passive_skill[5]=[]
  15.     #--------------------------------------------------#

然后在update_phase0后面增加一个update_phase6,再将RTAB里面battler.current_action.kind = 1后的内容弄一部分相似的给battler.current_action.kind = 3用,以区分主动技能和被动技能的计算公式
RUBY 代码复制
  1. #==============================================================================
  2. # ■ Scene_Battle (分割定義 6)
  3. #------------------------------------------------------------------------------
  4. #  平时被动触发技能
  5. #==============================================================================
  6. class Scene_Battle
  7.  
  8.   #--------------------------------------------------------------------------
  9.   # ● 被动技能判断開始
  10.   #--------------------------------------------------------------------------
  11.   def update_phase6
  12.      for battler in $game_party.actors
  13.         unless @action_battlers.include?(battler) and @command.include?(battler)
  14.           if  battler.hp>0
  15.             #获取角色可以发动的被动技能id
  16.             for i in @passive_skill[battler.id-1]
  17.               skill = $data_skills[i]
  18.               if rand(10000)<skill.hit and not @passive_skill_used.include?(i)
  19.               battler.current_action.kind = 3
  20.               battler.current_action.skill_id = i
  21.               action_start(battler)
  22.               #一旦发动一次就不发动
  23.               @passive_skill_used.push(i)
  24.               end
  25.             end
  26.           end  
  27.         end  
  28.      end     
  29.  
  30.  
  31.  
  32.   end     
  33.  
  34. end

这时,可以保证在多钟设定下的RTAB也不会导致同时导入技能,被动技能也完全和AT槽独立开来。
另外在update_phase3下面的各个按下决定键的部分套上
unless @action_battlers.include?(@active_actor)
来阻止被动技能待发时加入其他行动出错。(RTAB写了一大长串这么多,还是几乎没有自我排错的能力啊)

求大神指导下有无其他更好的写法,改进一下效率之类的。
作者: anald    时间: 2014-5-12 11:38
说的不错!
作者: 冰蓝的马甲    时间: 2014-5-16 22:29
给LZ的想法点个赞。顺便如果你想要被动技能每隔固定时间发动一次的话直接在AT计算里做一个变量倒计时,倒计时满直接发动@phase=6啥的。嗯嗯




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