Project1

标题: 持续几个回合后造成伤害的技能 [打印本页]

作者: 勇敢的馒头    时间: 2012-10-18 13:36
标题: 持续几个回合后造成伤害的技能
我想制作一个技能,使用之后3个回合后对对方造成伤害,请问该如何实现呢
求思路
作者: kangxi0109    时间: 2012-10-18 16:13
本帖最后由 kangxi0109 于 2012-10-21 09:41 编辑

1. 在数据库中设置一个新的状态,勾选“持续伤害”,这里以80号状态为例。
2. 在Scene_Battle 1中对应位置添加如下部分:
  1.   #--------------------------------------------------------------------------
  2.   # ● 主处理
  3.   #--------------------------------------------------------------------------
  4.   def main
  5.     # 初始化战斗用的各种暂时数据
  6.     #===============添加↓
  7.     $state80 = [] #添加80号状态回合计数初始化数组
  8.     #===============添加↑
  9.     $game_temp.in_battle = true
  10.     $game_temp.battle_turn = 0
复制代码
3.在Game_Battler 3中对应位置添加如下部分:

  1.   #--------------------------------------------------------------------------
  2.   # ● 应用连续伤害效果
  3.   #--------------------------------------------------------------------------
  4.   def slip_damage_effect
  5.     # 设置伤害
  6.     self.damage = self.maxhp / 10
  7.       # 分散
  8.       if self.damage.abs > 0
  9.         amp = [self.damage.abs * 15 / 100, 1].max
  10.         self.damage += rand(amp+1) + rand(amp+1) - amp
  11.       end
  12.     #============================添加↓
  13.     if self.state?(80) # 包含80号状态的场合
  14.       if self.is_a?(Game_Actor)#角色的场合
  15.         m = self.id + 8 #获取编号,空出前8个位置给敌人
  16.       else #敌人的场合
  17.         m = self.index #获取序列
  18.       end
  19.       if $state80[m] == nil #初始化,目标若从未附加过这个状态时执行
  20.         $state80[m] = 0
  21.       end
  22.       $state80[m] += 1
  23.       if $state80[m] == 4 #计数至第4回合
  24.         self.damage = 1000 #造成1000点损伤
  25.         self.remove_state(80) #解除80号状态
  26.         $state80[m] = 0 #回合计数归0
  27.       else
  28.         self.damage = $state80[m] #造成当前回合计数的伤害,作为标记使用
  29.       end
  30.     end
  31.     #============================添加↑
  32.     # HP 的伤害减法运算
  33.     self.hp -= self.damage
  34.     # 过程结束
  35.     return true
  36.   end
复制代码
注意:这个状态的特殊结算方式只在战斗中有效,如果该状态是在地图中用公共事件附加的,则会按默认的持续伤害方式运行,直至开始战斗。
作者: kangxi0109    时间: 2012-10-21 09:44
已经在二楼更新了判定的方法,修正适用面的问题。
作者: 小传子    时间: 2012-10-21 15:01
kangxi0109 发表于 2012-10-21 09:44
已经在二楼更新了判定的方法,修正适用面的问题。

确实没什么问题,我的$state80 = [] 要放到better 1去= =,
然后 self.damage = $state80[m] 可以加to_s比较保险呢。




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