[技能] 魔法陣
看板mud_sanc (Sanctuary - 聖殿)作者laechan (小太保)時間16年前 (2010/03/25 10:32)推噓0(0推 0噓 3→)留言3則, 1人參與討論串2/2 (看更多)
// 舊技能已備份為 /d/spell/magic-cycle.20100325
// Laechan@Sanc written in 2010/03/25
inherit __DIR__+"spell_d.c";
// 非 return 1 可截斷 start_effect 呼叫
// (例如 return 2)
int start_skill(object tar,int lv)
{
object ppl=this_player();
int skill;
// wiz 可略過底下判斷
if(!wizardp(ppl))
{
if((string)ppl->query("pri_guild")!="mage")
{
write("只有主職魔法師才能施展魔法陣喔.\n");
return 0;
}
// 這裡可加上 runes 限制
if(!ppl->query_temp("magic heart"))
{
write("施展魔法陣之前必須先施展 magic heart 喔.\n");
return 0;
}
if(ppl->query_temp("flying"))
{
write("施展魔法陣之前必須先 land 喔(漂浮在半空中無法使用).\n");
return 0;
}
}
// 保險起見增設的限制
if(ppl->query_temp("casting"))
{
write("你正在施法當中, 沒空施展其它法術喔.\n");
return 0;
}
skill=ppl->query("skill/magic-cycle");
switch(lv)
{
// 全屬性增幅魔法陣, 可跟其它魔法陣共存
case 1:
skill=skill/200;
ppl->add_temp("casting",6-skill); // Lv10 時剩 1 秒
call_out("add_all_stat",5,ppl,environment(ppl),skill);
return 2; // = return 0; 但有 call_out 不能有 return 0;
break;
default:
write("這個級數的魔法陣功能未實裝喔.\n");
return 0;
break;
}
}
int add_all_stat(object ppl,object env,lv)
{
mixed obs;
object ob;
int sp;
if(!ppl) return 1;
if(!env)
{
ppl->delete_temp("casting");
return 1;
}
// 玩家已離開施展地點時取消施展
if(env!=environment(ppl))
{
ppl->delete_temp("casting");
return 1;
}
sp=ppl->query("sp_src");
ppl->add("sp",-(sp/10)); // 消耗 1/10 的 sp
if(ppl->query("sp")<1)
ppl->set("sp",1);
obs=all_inventory(env);
obs-=({ppl}); // 施展者自己不加
foreach(ppl in obs)
{
if(!ppl) continue;
if(!userp(ppl)) continue;
// 不加 con 其它都加
ppl->temp_several_same_mod(({"stat/air","stat/str","stat/fel",
"stat/mag","stat/dex","stat/int"}),
lv*lv,"magic-cycle",lv);
}
return 1;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.225.161.19
→
03/25 10:32, , 1F
03/25 10:32, 1F
→
03/25 10:32, , 2F
03/25 10:32, 2F
→
03/25 10:53, , 3F
03/25 10:53, 3F
討論串 (同標題文章)
mud_sanc 近期熱門文章
PTT遊戲區 即時熱門文章
51
111
47
79
6
15