作者laechan (小太保)
看板mud_sanc
标题[wizs] 修正 no_damage_msg 造成的 bug
时间Tue Jul 23 22:33:16 2013
假设某群式怪物 hp 设定 15 万,只数 100 只,你的某次
普攻/en 共 16 连击,每击 10000。
之前会造成的 bug 是因为 setdata no_damage_msg 的缘故
,使得 16 连击合并计算为 16x10000 = 16万,而 16 万的
总和伤害大於怪物 hp 15万,会造成怪物马上死一只。
(也就是玩家只要发动一次攻击怪物就死一只)
而实际上因为每一击才 10000 不可能造成血量 15 万的mob
马上瞬死一只,此即本次 bug。
修改方式是在普攻/en 的 no_damage_msg 判断上面,在呼
叫 show 函数时多传一个参数过去,用来代表「传过去的伤
害为合并计算值」。
show(me,tar,"叙述",伤害,
合并参数);
并将 /adm/simul_efun/show.c 的 show 函数改成 varargs
varargs void show(参数1,参数2,参数3,参数4,
合并参数);
然後在 show 函数里面只要有呼叫到 tar->receive_damage
的地方一样传合并参数过去..
tar->receive_damage(dam,
合并参数);
接着改 /std/mob/g_attack.c,在 dam > data["hp"] 改成
if(dam > data["hp"] &&
合并参数<0)
{
}
else
做相当於一击损伤多少的判断;
实际修改跟上面略有不同,但概念相同。
那麽理论上,原先清矿坑在 no_damage_msg 的情况下应该
是轻松愉快的,将会因为这个 bug 的修正,而变回「正常
难度」。
所以我一直反对一般群式怪物设定过多只数,该 bug 修正
後只数越多,怪物越强,越难被清掉。
Laechan
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 1.165.189.245
1F:→ laechan :先观察几天. 07/23 22:47