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中对应位置添加如下部分:
#--------------------------------------------------------------------------
# ● 主处理
#--------------------------------------------------------------------------
def main
# 初始化战斗用的各种暂时数据
#===============添加↓
$state80 = [] #添加80号状态回合计数初始化数组
#===============添加↑
$game_temp.in_battle = true
$game_temp.battle_turn = 0
复制代码
3.在Game_Battler 3中对应位置添加如下部分:
#--------------------------------------------------------------------------
# ● 应用连续伤害效果
#--------------------------------------------------------------------------
def slip_damage_effect
# 设置伤害
self.damage = self.maxhp / 10
# 分散
if self.damage.abs > 0
amp = [self.damage.abs * 15 / 100, 1].max
self.damage += rand(amp+1) + rand(amp+1) - amp
end
#============================添加↓
if self.state?(80) # 包含80号状态的场合
if self.is_a?(Game_Actor)#角色的场合
m = self.id + 8 #获取编号,空出前8个位置给敌人
else #敌人的场合
m = self.index #获取序列
end
if $state80[m] == nil #初始化,目标若从未附加过这个状态时执行
$state80[m] = 0
end
$state80[m] += 1
if $state80[m] == 4 #计数至第4回合
self.damage = 1000 #造成1000点损伤
self.remove_state(80) #解除80号状态
$state80[m] = 0 #回合计数归0
else
self.damage = $state80[m] #造成当前回合计数的伤害,作为标记使用
end
end
#============================添加↑
# HP 的伤害减法运算
self.hp -= self.damage
# 过程结束
return true
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