作者laechan (小太保)
看板mud_sanc
标题[wizs] /d/spell/magic-cycle.c
时间Tue Jun 7 11:47:06 2011
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)