作者laechan (小太保)
看板mud_sanc
标题Re: [情报] holybell实测(资料由mishaer提供)
时间Tue Jan 29 07:43:44 2008
int receive_damage(int damage)
{
object frog=this_object();
frog->delete_temp("time_record");
if(kk<1)
{
this_object()->set_temp("shield2",({500000,1,frog,frog}));
return 1;
}
kk=0;
::receive_damage(damage);
return 1;
}
这只怪最後执行到要真正扣血的部份时,它会判断自己身上的一个值
kk,若 kk<1 则...
一、补盾
二、中止扣血
若 kk 不小於 1 时,让 kk 重新归 0 而且造成伤害,所以下一轮攻
击它又会中止扣血。
这只怪一开始的 kk 是 0。
mixed shield(object me,object tar,int dam,string type)
{
dam = dam / 4;
if(dam < 7777 ) dam = 0;
if(dam > 77777 ) dam = 0;
return ({kk=dam,"但是都擦身而过,被闪开了!"});
}
这是它护盾格挡的执行部份。理论上被 holybell 过的怪物不会执行
护盾格挡,所以该怪物的 kk 永远是 0 = 永远不会实际上损血。
以上。
解决方法:
我可以让 holybell 不跳过所谓的护盾格挡,而是在护盾格挡後才判
断 holybell 是否存在。
但是这样 wiz 仍旧可以在自订的 shield 函数以及 receive_damage
中动手脚,结果是一样的。
但是上述设定违反「holybell 放下去不能对玩家造成负影响」的最
优先原则,所以修改方式有三...
一、holybell 取消放下去後会解除怪物防御状态的功能,单纯用来
解身上的不良状态。
二、怪物身上有 holybell 参数时,不呼叫 receive_damage 函数,
而是呼叫另一函数来执行扣血。
三、deus 将该只怪物修改为 selfshield2 型的怪物,取消自定的
receive_damage 函数或修改该函数的判断。
Laechan
--
※ 发信站: 批踢踢实业坊(ptt.cc)
※ 编辑: laechan 来自: 220.134.34.90 (01/29 07:44)
1F:→ laechan:我想先参考 deus 的决定. 01/29 10:17
2F:推 mishaer:推二;若选三治标不治本,且要玩家打过怪才知道,再告知wiz修 01/29 12:33
3F:→ mishaer:改的话..时间上部份会感觉比较没效率.. 01/29 12:34
4F:推 bahatest:3没意义,这样新怪出来玩家还是不敢放 01/29 13:46
5F:推 bahatest:推1吧,至少不用跟作者玩心理战 01/29 13:51