airs=ppl->query("stat/air");
pp=ppl->query("pp");
tar_pp=ppl->query("pp_src");
hit=airs/100 + (pp*100)/tar_pp;
if(hit>95) hit=95;
// 失败的情况
if(random(100)>hit)
{
show(ppl,target,HIR"\n$O"HIR"身形一闪,避开了$N"HIR"的攻击!!\n"NOR);
// 反过来就是成功的情况即 if(hit>=random(100))
// 所以只要看这个就行,hit 越大,成功率越高
上面公式首先最明显的问题在于
hit=airs/100 + (pp*100)/tar_pp;
^^^^^^^^^^^^^^^^
上面公式基本上恒为正,在这前提下,(pp*100)/tar_pp 的意思
就是你剩余的 pp 占你 pp最大值 的比例,比方你先灌满 pp 药
水后马上击出破甲,则 (pp*100)/tar_pp = 100 的意思。
在这情况下不管你的气劲多少,hit 都是 100↑
这应该是一开始就写错了正常应该是
hit=( (airs/100) * pp) / tar_pp;
破甲不可能用“不管你的气劲多少”这样的公式去算成功率,相
反的它一定会看你的气劲多少、甚至你与怪物的气劲高低差异,
来判断成功率,这才是合理的。而且该公式实际上也没有考量到
你的pp值多少,它只算残余pp的比例而已。
因此,预告破甲的成功率计算式变更
1. 会看 你的气劲值 与 怪物的气劲值 差异来决定基本成功率
基本成功率 = (你的气劲值-怪物的气劲值)/100
2. pp残余值的影响方式变更
最终成功率 = (基本成功率 x pp残余值) / pp最大值
然后最终成功率会给上下限,也就是再怎样成功率都有几%,以
及最大成功率 95%。
再怎样成功率都有几%的部份,有三种做法
1. 定值,比方 10% 定值、15% 定值
2. 参考值,比方你的拳士公会级数(但这跟定值差不多,就是 25% 定值)
3. 复杂的参考值,比方把种族进化级数参考进去、把拳士之心参考进去、..
上述变更有两个目的
一、合理化破甲的成功率计算公式
二、让 wiz 能设计出不太会被破甲成功的怪物
有意见或建议可提出。