作者ritud (小风)
看板RPGMaker
标题Re: [问题] 几个状态问题和设定修改
时间Mon Dec 15 18:06:52 2008
关於我问的第一个问题,我在66rpg找到解决法了(不过还没试=v=)
分享给大家,以後如果有人要做类似效果也能用了。
原文网址:
http://www.66rpg.com/htm/news84.htm
简单来说就是在我上一篇提到的连续伤害定义中再多加几个判断式,
虽然概念很简单,但是不懂RGSS就做不出来(没错,就是我),所以
那篇文章就把范例写出来了。
内容:
一般来说,在数据库设置"连续伤害"这个状态只是为了表现中毒发作
减HP的效果,可能很少有人想到用它来做一些其他的事情。
「连续伤害」这个状态的属性是在角色每一次行动之前检查毒发作用
,它在战斗中在角色准备开始执行动作时触发一次。即使是在RTAB战
斗中也不例外。(当然,通过修改脚本判定位置,可以使它挪动到每
个角色行动後,或每个回合开始前等等,此话与本文无关,不表)
「连续伤害」这个功能调用虽然是在战斗中,但它的定义是在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
# HP 的伤害减法运算
self.hp -= self.damage
# 过程结束
return true
end
那麽这个可以拿来做什麽"妙用"呢?
利用它每回合检查一次的特性,可以做出很多以回合数为基础的特殊状态效果:
举个两个例子:
1."再生"状态: 战斗中每回合固定恢复角色最大HP的5%,最大SP的5%,
效果持续十六回合後结束
2."老化"状态: 战斗中每回合角色的各项能力(除HP和SP以外)降为前
一回合的70%,降到1为止
首先在数据库里设定好这两个状态,都勾上「连续伤害」的选项,这里
假设它们的编号为28和29
其中"再生"状态可设为:16回合後100%的概率解除
而"老化"状态,则把所有需要下降的能力值都设成70 (注意回避力要设成-30)
最重要的是,这些战斗中临时用的状态一定要勾上战斗後自动解除的选
项,否则影响到地图连续伤害的检查
然後修改脚本里「连续伤害」这部分的定义
原本的定义是关於毒的,查到毒状态的编号为3,那麽就在外面包一个条件
def slip_damage_effect
if self.state?(3)
# 设置伤害
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
# HP 的伤害减法运算
self.hp -= self.damage
end
# 过程结束
return true
end
然後再加上"再生"和"老化"的定义
def slip_damage_effect
# 毒
if self.state?(3)
# 设置伤害
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
# HP 的伤害减法运算
self.hp -= self.damage
# 再生
elsif self.state?(28)
# 设置伤害
self.damage = -self.maxhp / 20
recover_sp = self.maxsp / 20
# HP 的伤害减法运算
self.hp -= self.damage
self.sp += recover_sp
# 老化
elsif self.state?(29)
# 设置伤害
self.damage = "Being aged!"
# 能力值下降
$data_states[29].hit_rate *= 0.7
$data_states[29].pdef_rate *= 0.7
$data_states[29].mdef_rate *= 0.7
$data_states[29].atk_rate *= 0.7
$data_states[29].str_rate *= 0.7
$data_states[29].dex_rate *= 0.7
$data_states[29].int_rate *= 0.7
$data_states[29].agi_rate *= 0.7
$data_states[29].eva -= 30
$data_states[29].eva = [$data_states[29].eva, -100].max
end
# 过程结束
return true
end
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.168.235.77