[wizs] /d/spell/magic-cycle.c
inherit __DIR__+"spell_d.c";
int start_skill(object tar,int lv)
{
int sk,i,j,k;
object env,ob,ppl;
string skname,obname,pplname,t1;
mixed keys_pass;
mapping pass;
ppl=this_player();
if(lv>10)
{
write("魔法陣目前還沒開發到 lv 10 以上.\n");
return 0;
}
if(lv==10)
{
// 限定需在進階轉職處 & 滿足二轉條件才能施展
return 0;
}
write("\n");
if(userp(ppl) )
{
if((string)ppl->query("pri_guild")!="mage")
{
write("你的主公會不是法師, 無法使用這項專業技能.\n");
return 0;
}
if((int)ppl->query("guild/mage")<36)
{
write("你的魔法公會級數至少要在 36 以上, 才能使用這項技能.\n");
return 0;
}
if(ppl->query("record_data/magiccycle_time")>time())
{
write("你在不久前才張設一道魔法陣出來喔! 你要再過一會兒才能再張設喔!\n");
return 0;
}
if(!ppl->query_temp("magic heart"))
{
write("張設魔法陣之前, 你必須先使用"+skill_name("magic heart")+"(Magic heart)喔!\n");
return 0;
}
sk=ppl->query("skill/magic heart");
sk=sk/100;
if(lv>sk)
{
write("你想使用 "+lv+" 級的魔法陣, 魔力釋放術(Magic heart)要有"+(lv*100)+"喔!\n");
return 0;
}
// 設定間隔, 這裡要依據一些數值去做計算
this_player()->set("record_data/magiccycle_time",間隔時間+time());
}
env=environment(this_player());
if(env)
show(this_player(),this_object(),
"敘述也依該法師目前的能力來決定");
t=依照該法師的能力來決定出召喚時間;
// t小於 1 秒時直接 call
if(t<1)
call_other(this_object(),"clone_magic_cycle",this_player(),env,lv);
else
{
// t 秒內該法師無法施展其它特殊攻擊
this_player()->add_temp("casting",t);
call_out("clone_magic_cycle",t,this_player(),env,lv);
}
return 1;
}
int clone_magic_cycle(object ppl,object env,int lv)
{
if(!ppl || !env) return 1;
if(environment(ppl)!=env) return 1; // 玩家已離開該房間
依照 lv 的不同
{
呼叫出不同的魔法陣->move(env);
對魔法陣進行各項設定;
魔法陣->set_heart_beat(1); // 啟動魔法陣心跳(時間到魔法陣自動消失)
show(ppl,ppl,"執行不同的魔法陣展開訊息.\n"+
"執行不同的魔法陣說明.\n");
}
return 1;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
※ 編輯: laechan 來自: 115.83.14.146 (06/07 15:07)
mud_sanc 近期熱門文章
PTT遊戲區 即時熱門文章
15
19