作者hlead (希多)
看板mud_sanc
标题[wizs] 种族抗性等级作法。
时间Sun Jul 31 19:15:32 2011
还没写,不过大致上想法如下:
/cmds/std/_wear.c
mappings RACE_ANTI=([
"human":({"ice/100","fire/50"})
])
if(type=="body")
{
mixed anti_all;
anti_all = RACE_ANTI[user->query("race")];
foreach(anti_lv in anti_all)
if(sscanf(anti_lv,"%s/%s",kind,lv)==1)
ob->add("anti_kind/"+kind,atoi(lv) );
user->set("armor_body",ob);
}
之後在 /adm/daemons/shut_d.c 新增:
// 种族等级抗性
if(wand=(object)tar->query("armor_body"))
if(anti_tmp=(int)wand->query("anti_kind/"+kind))
{
if(c>9) c=9; // 威力级数 max = 9 。
if( anti_tmp > (c+2) )
damage = 0;
}
-----------------------------------
c+2的部份要额外在决定,因为现在调到1-9了!
所以看要改防御级数与技能威力差多少才会造就威力无效。
由於防御级数,只有 body 才有,其他部位都"只能"是抗性啪数。
(就算其他部位有写防御级数也无效。)
所以方便上来说,就直接wear时读阵列把种族抗性级数加上去就好了!
依照上述写法,remove也要同样有个减回去的措施。
虽然,可能有人没装body,会造就失去效果啦!
不过这应该是极少数,所以还是方便为主...avert
不写在shut的原因是,如果那里多一堆程式码,
会让sanc越来越慢,因为那里会常常执行到,会狂判断!
--
Norr@Sanc
风,吹散了一切烦恼,只留下平静的思考。
雨,淋落了一切纷乱,只剩下无比的快乐。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.117.46.189