指令 enchant - 聖殿英雄傳說 MUD

By Harry
at 2012-08-09T08:51
at 2012-08-09T08:51
Table of Contents
底下是原本的指令檔,今天會依這個版本修改成新版,其中
效果簡稱的部份各位若有更合適的名稱可以提供。
================================================================
// 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("");
}
--
效果簡稱的部份各位若有更合適的名稱可以提供。
================================================================
// 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("");
}
--
Tags:
線上
All Comments

By Jessica
at 2012-08-11T08:04
at 2012-08-11T08:04

By Todd Johnson
at 2012-08-11T15:44
at 2012-08-11T15:44

By Queena
at 2012-08-16T12:53
at 2012-08-16T12:53
Related Posts
壓力測試

By Emma
at 2012-08-09T04:23
at 2012-08-09T04:23
RC公會代表大會列表整理與相關規劃說明

By Barb Cronin
at 2012-08-09T04:09
at 2012-08-09T04:09
請問卡莉的闇靈突刺傷害

By Annie
at 2012-08-09T03:43
at 2012-08-09T03:43
《激戰 2》即將於 28 日上市 典藏版開箱影片搶先公開

By Sierra Rose
at 2012-08-09T03:23
at 2012-08-09T03:23
玩家照片不會被上傳?

By Barb Cronin
at 2012-08-09T02:22
at 2012-08-09T02:22