這個東西我忘記當初是為啥寫的, 今天搭電車回家時, 在車上
有想到它的特殊用法, 剛好也有人寫了 nine-sword 的 help,
就想到應該可以拿來用.
(而其實, 這個東西早就應該要被發明出來了)
special_attack=(mixed)query_temp("special_attack");
j=sizeof(special_attack);
if(j>2)
{
for(i=0;i<j;i=i+3)
{
// 攻擊型式是必中攻擊
if(special_attack[i+2])
me->shut2(special_attack[i],special_attack[i+1],10000,"dam",
special_attack[i+2]);
}
me->delete_temp("special_attack");
}
這個東西每一秒會被玩家自己判斷一次(所以 mob 不適用),
底下舉個例子來讓 wiz 們知道它怎麼用.
假設玩家身上有個東西叫做天神的輝記(laechan's mask),這
個輝記有設定特殊的參數 set("laechan mask",1), 玩家身上
帶著輝記打 hair laechan 時,我希望玩家會主動對 hair
laechan 擊出一個強度 100 萬的必中攻擊...
// hair laechan
int special_fun(object mob,object ppl)
{
object ob;
mixed special_attack;
if(ob=present("laechan's mask",ppl))
{
if(ob->query("laechan mask"))
{
// 先將 ob 移除
ob->remove();
special_attack=(mixed)ppl->query_temp("special_attack");
// "敘述",殺傷,對象
special_attack+=({"$N身上的天神輝記, 突然發出耀眼的強光, "+
"一道灼熱的光箭隨即激射而出, 擊向了$O",
1000000,mob});
ppl->set_temp("special_attack",special_attack);
}
}
return 1;
}
這樣,在「約一秒後」,玩家就會「自己對該怪物施展上述的攻擊」
,而且是必中。
格式一定要照上面那樣,因為必須是 += 才能保留原先的設定。
這個東西的應用很廣,以反擊來說,因為是怪物判斷玩家有沒有反擊
技能,因此假設有,例如怪物的攻擊敘述是..
$N以強力的雷電風暴擊向$O ($N代表怪物, $O代表玩家)
偵測到反擊時...
str = "$N以強力的雷電風暴擊向$O";
damage = 原先的 damage;
// $N 與 $O 互調
str=substr(str,"$N","$X");
str=substr(str,"$O","$N");
str=substr(str,"$X","$O");
special_attack=(mixed)ppl->query_temp("special_attack");
special_attack+=({str+", 但是被$N反擊了回去!!".
dam*看要設百分之多少的反彈威力,mob});
ppl->set_temp("special_attack",special_attack);
return ({"",0});
上面有個問題, 就是 return ({"",0}) 的部份, 實際上要修改為
return ({"no-action",0});
當系統判斷到 "no-action" 時就「完全不顯示該攻擊」, 這樣就
只會顯示反擊,使得..
一、反擊=怪物該次的攻擊沒有擊中玩家
二、不只如此,反擊還會將殺傷以百分之多少的比率反彈回去
這大概就是設定構想. 有了構想就可以實裝, 基本上困難度不高,
以現行來說, wiz 們至少可以玩看看 special_attack 那一部份,
如果有人有玩家, 貼一下測試報告吧^^
基本的玩法則是, 在戰鬥中..
call me;set_temp;"special_attack";({"$N以巨大的雷電擊向$O",10000,guard})
> k guard
你對著高塔守衛喝道: 「小王八蛋﹗今日不是你死就是我活﹗」
你開始攻擊 高塔守衛.
□ □ □ 戰 鬥 開 始 □ □ □
> call me;set_temp;"special_attack";({"$N以巨大的雷電擊向$O",10000,guard})
你伺機而動,準備找尋最佳的攻擊時機...
高塔守衛以槍桿擊向你, 但是被你閃了過去.
玩家(laechan /std/user)-> set_temp(
"special_attack", ({ "$N以巨大的雷電擊向$O", 10000, 怪物(guard
/u/l/laechan/area/felid/mob/guard2) }) ) = 0
你以巨大的雷電擊向高塔守衛, .對高塔守衛造成身體機能嚴重的傷害!!(9999)
「高塔守衛受了點傷,但沒大礙。」
很簡單的。
Laechan
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.114.50.89