作者laechan (小太保)
看板mud_sanc
标题[抠顶] 指令 enchant
时间Thu Aug 9 08:51:28 2012
底下是原本的指令档,今天会依这个版本修改成新版,其中
效果简称的部份各位若有更合适的名称可以提供。
================================================================
// Laechan@Sanc modify in 2012/08/09 for 新版魔法武器
// 魔法武器专用指令 enchant
// Belldandy@Sanc add in 2011/05/31
inherit DAEMON;
int cmd_wiz_enchant(string str,object me)
{
string skname,tarname;
int esk,sk,t,n;
object tar,wp;
if(!str || str=="")
return notify_fail(@LONG
enchant 指令说明:
=====================================================
enchant [效果简称] [施放对象]
例如: enchant hr man
1.你的魔法武器技能值、以及上述法术技能值,至少
都需要有 100 才可施放.
2.施放对象必须为玩家或自己,且必须有拿武器。
3.效果叠加限制请参照 help skill enchant 说明。
4.简称及效果对照
ad 增加攻击伤害力 ah 增加攻击命中力
fi 攻击时增加熟练度 fp 攻击时增加经验值及学点
hr 击中时 hp 回复 hv 普攻/en 额外增加连击数
km 杀死怪物时较多金钱 kr 杀死怪物时 pp 回复
pa 提升武器格挡能力 pd 普攻/en 节省 pp 消耗
z1 攻击中机率自动施展 hands 类法术(与灵力武器并效)
=====================================================
Laechan@Sanc 2012/08/09
LONG
);
esk=me->query("skill/enchant");
if(esk<100)
return notify_fail("enchant: 你的魔法武器技能值至少需要 100 才能施放喔.\n");
if(me->query("sp")<esk)
return notify_fail("enchant: 你的 sp 剩余量不足 "+esk+" 了喔.\n");
//if(me->query_temp("casting")>0)
// 改为独立延迟,不再共用 casting
t=time();
if(me->query_temp("time_record/enchant_times")>t)
return notify_fail("你以为你是莉娜因巴斯, 可以连续疯狂施法阿?\n");
if(sscanf(str,"%s %s",skname,tarname)==2);
else
skname=str;
if(!tarname || tarname=="")
tarname=me->query("name");
if(!tar=find_player(tarname))
return notify_fail("enchant: 没有这个玩家喔.\n");
if(wizardp(tar) && !wizardp(me))
return notify_fail("enchant: 没有这个玩家喔.\n");
if(!userp(tar))
return notify_fail("enchant: "+tarname+" 必须是玩家喔.\n");
if(environment(tar)!=environment(me))
return notify_fail("enchant: 这里没有 "+tarname+" 这个玩家喔.\n");
if(!wp=tar->query_wp())
return notify_fail("enchant: "+tarname+" 必须有装备[第一武器]喔.\n");
switch(skname)
{
case "ad": // 增加攻击伤害力
break;
case "ah": // 增加攻击命中力
break;
case "fi": // 攻击时增加熟练度
break;
case "fp": // 攻击时增加经验值及学点
break;
case "hr": // 击中时 hp 回复
break;
case "hv": // 普攻/en 额外增加连击数
break;
case "km": // 杀死怪物时较多金钱
break;
case "kr": // 杀死怪物时 pp 回复
break;
case "pa": // 提升武器格挡能力
break;
case "pd": // 普攻/en 节省 pp 消耗
break;
case "z1": // 攻击中机率自动施展 hands 类法术(与灵力武器并效)
if(me->query("skill/spiriten")<100)
return notify_fail("enchant: 要使用这项效果,你的灵力武器"+
"至少要学有 100 喔.\n");
break;
default:
return notify_fail("enchant: 没有 "+skname+" 这个效果简称喔.\n");
}
// 将过期的去掉
wp->check_enchant(t);
e1=(mapping)wp->enchant();
e2=(mapping)wp->enchant_times();
n=(int)wp->sizeof_enchant();
if(n>0 && (string)me->query("pri_guild")!="mage")
return notify_fail("enchant: 法师不是你的主职,你只能为武器"+
"附魔一层效果喔。\n");
if(n>1 && !me->query("adv_guild"))
return notify_fail("enchant: 你尚未转职为进阶法师,你只能为武器"+
"附魔两层效果喔。\n");
if(n>2 && (string)me->query("adv_guild")!="magemaster")
return notify_fail("enchant: 你不是大魔导士,你只能为武器"+
"附魔三层效果喔。\n");
if(n>3)
return notify_fail("enchant: 你最多只能为武器附魔四层效果喔。\n");
sk=(int)wp->enchant(skname);
// 当武器已经有该效果时且未过时
if(sk>0)
{
if(sk<esk)
return notify_fail("enchant: "+wp->query("short")+"已经有 '"+skname+
"' 这个效果存在了,\n"+
" 你无法用比较弱的效果值盖掉它喔.\n"+
"(若要盖掉的话可以先把该武器 remove).\n");
}
// 设值进去
wp->set_enchant(skname,esk,t);
// 预扣 sp 值
me->add("sp",-esk);
// 加延迟 3 秒
me->set_temp("time_record/enchant_times",3+t);
switch(random(3))
{
case 0: str="$N缓缓念道: "HIG"万物之根源,万能之力的马纳啊!"+
"化为打碎黑暗的力量吧!"NOR"\n"; break;
case 1: str="$N缓缓念道: "HIG"魔法根源,奇蹟之泉的马纳啊!"+
"化为打碎黑暗的力量吧!"NOR"\n"; break;
case 2: str="$N缓缓念道: "HIG"万能的马纳啊!化为打碎黑暗的力量吧!"NOR"\n";
break;
}
str+=HIM"$O"HIM"所拿的"+wp->query("short")+HIM"发出了魔法的光芒!"NOR"\n";
show(me,tar,str);
return notify_fail("");
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
1F:→ nahceal :好强大 08/09 14:36
2F:→ laechan :嗯? 08/09 14:51
※ 编辑: laechan 来自: 210.61.157.53 (08/09 15:13)
3F:→ laechan :疑似写好了..总之还是先 try try 08/09 15:14