[wizs] 種族抗性等級作法。
還沒寫,不過大致上想法如下:
/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
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):
mud_sanc 近期熱門文章
PTT遊戲區 即時熱門文章
21
49