[摳頂] 大釜室
看板mud_sanc (Sanctuary - 聖殿)作者laechan (小太保)時間13年前 (2013/02/28 10:14)推噓0(0推 0噓 4→)留言4則, 1人參與討論串1/2 (看更多)
// cauldron_room.c
// Laechan@Sanc add in 2013/02/28
// cp from urd's alchemy_room.c
// 哈利波特的大釜, 煉魔藥用
#define MED_COLOR ([\
"迷迭香":"白色","鼠尾草":"綠色","鳶尾根":"黃色","玫瑰瓣":"紅色",\
"忍冬花":"咖啡色","蜈蚣籐":"褐色","赤桔梗":"血紅色","魔羅果":"黑色",\
])
#define IGNITE_MENU ([\
])
// 藥粉 迷迭香(m991) 丟擲用,一般對自己
// 藥瓶 鼠尾草(m992) 丟擲用,可對敵,具特殊效果
// 藥丸 鳶尾根(m993) 自己食用,加 buff,持效型
// 藥水 玫瑰瓣(m994) 自己食用,瞬效,無持續效果
#define BREW_MENU ([\
"m991":({\
}),\
"m992":({
({"酸蝕瓶", 1, "炙蟻酸液", 3,"蛇精之血", 1}),\
}),\
"m993":({\
}),\
"m994":({\
}),\
])
#define CAULDRON_IGNITE_COST 10000
#defnie CAULDRON_IGNITE_TIME 1200
#define CAULDRON_IGNITE_MED0 99
#define CAULDRON_IGNITE_MED1 99
#define CAULDRON_IGNITE_MED2 99
inherit ROOM;
static mapping cauldron=([]);
static object vobjs_d;
void create()
{
::create();
seteuid(getuid(this_object()));
if(file_exists("/open/cmds/cauldron.o"))
restore_object("/open/cmds/cauldron");
else
{
set("light",1);
set("short","法師公會大釜室");
set("long",@LONG
在這裡,你可以下三個指令:
manual 大釜使用指南
ignite 點火加熱煮鍋底
brew 煉藥
LONG
);
set("exits/out","/d/nmap/klon/room/mage-guild");
}
}
int save_room()
{
save_object("/open/cmds/cauldron");
return 1;
}
void init()
{
add_action("manual_xxx","manual");
add_action("ignite_xxx","ignite");
add_action("brew_xxx","brew");
}
int manual_xxx(string str)
{
return notify_fail(@LONG
煉藥時所需的五大藥引為..
而在煉藥中添進附加藥引,可以增加煉藥效果..
蜈蚣籐 加快速度
赤桔梗 增加產量
魔羅果 增加成功率
LONG
);
}
int ignite_xxx(string str)
{
object ppl;
string names,tmp,m0,m1,m2;
mixed tmps=({}),objs=({});
int t,added;
if(!str || str=="")
return notify_fail(@LONG
語法: ignite -藥引名[,藥引名2]
例子: ignite -迷迭香 以迷迭香做為主要藥引
ignite -迷迭香,魔羅果 以迷迭香佐以魔羅果做為藥引
ignite status 觀看大釜狀態
藥引: 主要藥引─迷迭香、鼠尾草、鳶尾根、玫瑰瓣
附加藥引─蜈蚣籐、赤桔梗、魔羅果
共通藥引─忍冬花(煉藥時會自動添加進去)
煉藥時若添加附加藥引,可增加煉藥效果
收費: 大釜點火費每次 10000 影特幣,可煉藥 20 分鐘
ppl=this_player();
// 以後再考慮開放一般玩家調配 3p 藥水
if(!wizardp(ppl) && (string)ppl->query("adv_guild")!="alchemist")
return notify_fail("ignite: 只有煉金術士才可以使用大釜喔.\n");
names=ppl->query("name");
t=time();
if(!vobjs_d)
if(!vobjs_d=find_object_or_load("/open/cmds/vobjs_d"))
return notify_fail("ignite: 目前虛擬物品系統有點問題喔.\n");
if(str=="status")
{
if(!cauldron[names])
return notify_fail("ignite: 你的大釜現在是熄火狀態.\n");
if(cauldron[names]["times"]<t)
return notify_fail("ignite: 你的大釜需要重新點火添加藥引喔.\n");
}
if(sscanf(str,"-%s",tmp)==1)
{
if(cauldron[names])
return notify_fail("ignite: 你的大釜已經有點火了喔.\n"+
" 你可以使用 ignite -status 觀看大釜狀態.\n");
objs=vobjs_d->vobjs_data("query_array","忍冬花");
m0=objs[0];
if(ppl->query_vobjs(m0)<CAULDRON_IGNITE_MED0)
return notify_fail("ignite: 你身上的忍冬花不足 "+CAULDRON_IGNITE_MED0+
" "+objs[2]+" 了.\n"+
" 忍冬花是煉藥必備的共通藥引喔!\n");
tmps=explode(tmp,",");
if(tmps[0]!="迷迭香" && tmps[0]!="鼠尾草" &&
tmps[0]!="鳶尾根" && tmps[0]!="玫瑰瓣")
return notify_fail("ignite: 你不能放非藥引類的東西進去當主要藥引喔.\n");
objs=vobjs_d->vobjs_data("query_array",tmps[0]);
m1=objs[0];
if(ppl->query_vobjs(m1)<CAULDRON_IGNITE_MED1)
return notify_fail("ignite: 你身上的"+tmps[0]+"不足 "+CAULDRON_IGNITE_MED1+
" "+objs[2]+" 了.\n");
if(sizeof(tmps)>1)
{
if(tmps[1]!="蜈蚣籐" && tmps[1]!="赤桔梗" && tmps[1]!="魔羅果")
return notify_fail("ignite: 你不能放非藥引類的東西進去當附加藥引喔.\n");
objs=vobjs_d->vobjs_data("query_array",tmps[1]);
m2=objs[0];
if(ppl->query_vobjs(m2)<CAULDRON_IGNITE_MED1)
return notify_fail("ignite: 你身上的"+tmps[1]+"不足 "+CAULDRON_IGNITE_MED2+
" "+objs[2]+" 了.\n");
added=1;
}
if(ppl->query("balance")<CAULDRON_IGNITE_COST)
return notify_fail("ignite: 你的銀行存款不足點火費 "+
CAULDRON_IGNITE_COST+" 影特幣喔.\n");
ppl->add("balance",-CAULDRON_IGNITE_COST);
ppl->vobjs("del",m0);
ppl->vobjs("del",m1);
if(added>0)
ppl->vobjs("del",m2);
cauldron[names]=([]);
cauldron[names]["times"]=t+CAULDRON_IGNITE_TIME;
cauldron["med1"]=m1;
if(added>0)
cauldron["med2"]=m2;
cauldron[names]["brewing"]=([]);
save_room();
str="你不是很熟練地打開了瓦斯爐,點火加熱大釜。\n"+
"\"Amazing!麻瓜的東西真是又快又方便!\"\n";
if(added>0)
str+="你接著在大釜裡放入了適量的"+tmps[0]+"及"+tmps[1]+",\n"+
"只見一縷"+MED_COLOR[tmps[0]]+"及"+MED_COLOR[tmps[1]]+
"的輕煙緩緩自大釜裡升起...\n";
else
str+="你接著在大釜裡放入了適量的"+tmps[0]+",\n"+
"只見一縷"+MED_COLOR[tmps[0]]+"的輕煙緩緩自大釜裡升起...\n";
return str;
}
return notify_fail("ignite: 沒有這個語法喔.\n");
}
int brew_xxx(string str)
{
string names,tmp,tmp1,tmp2,tmp3;
mixed tmps=({});
int t,i,j;
object ppl;
/*
名字未定 縮短再變身時間, 每吃一單位縮短剩餘時間的一半
名字未定 一定時間內增強 hp 藥水的服用效果或 hp 最大值
└藥材跟「陸」類怪物有關
名字未定 一定時間內增強 sp 藥水的服用效果或 sp 最大值
└藥材跟「海」類怪物有關
名字未定 一定時間內增強 pp 藥水的服用效果或 pp 最大值
└藥材跟「空」類怪物有關
名字未定 增加en連擊數的藥
└藥材跟一些動作很靈敏、攻擊很快的怪物有關
名字未定 增加特攻連擊數的藥
└同上
名字未定 解各種異常狀態
大力丸 吃了全種類攻擊傷害增加(=經驗值提高)
└藥材跟一些力量很大或打人很痛的怪物有關
├可能會做個海灘放蟹
└可能會做個叢林放猩猩
一點靈 用了全種類攻擊命中增加(=熟練度提高)
└藥材跟一些眼睛很好的怪物有關,如蜥蜴、眼鏡猴、貓科動物等
名字未定 adv -屬性需要的藥
*/
if(!str || str=="")
return notify_fail(@LONG
語法: brew 藥名 from 藥材1[,藥材2,藥材3,..]
例如: brew 酸蝕藥瓶 from 炙蟻酸液,蛇精之血
LONG
);
ppl=this_player();
names=ppl->query("name");
t=time();
if(sscanf(str,"%s from %s",tmp1,tmp2)==2)
{
if(!cauldron[names])
return notify_fail("brew: 你要先 ignite 你的大釜喔.\n");
// 有上面代表有 times, brewing
if(sizeof(keys(cauldron[names]["brewing"]))>0)
return notify_fail("brew: 你的大釜裡面有藥正在煉製中喔.\n");
// 沒有藥在煉製、但是 times 過期
if(cauldron[names]["times"]<t)
{
map_delete(cauldron,names);
save_room();
return notify_fail("brew: 你的大釜已經過了租用時間囉.\n"+
" 你可以使用 ignite 指令重新租用它.\n");
}
if(!vobjs_d)
if(!vobjs_d=find_object_or_load("/open/cmds/vobjs_d"))
return notify_fail("brew: 虛擬物品系統現在有點問題喔.\n");
tmp=vobjs_d->vobjs_data("get_mark",tmp1);
if(tmp=="")
return notify_fail("brew: 沒有這種藥物可以煉製喔.\n");
tmps=keys(BREW_DATA[cauldron[names]["med1"]]);
j=sizeof(tmps);
for(i=0;i<j;i++)
if(tmps[i][0]==tmp1)
break;
if(ppl->query("sp")<((int)ppl->query("sp_src")*(int)tmps[i][1])/100)
return notify_fail("brew: 你的 sp 不足 "+tmps[i][1]+"% 了喔.\n");
tmps=tmps[i][2];
j=sizeof(tmps);
for(i=0;i<j;i=i+2)
{
tmp3=vobjs_d->vobjs_data("get_mark",tmps[i]);
if(ppl->query_vobjs(tmp3)<tmps[i+1])
return notify_fail("brew: 要煉製"+tmp1+",你需要 "+implode(tmps)+" 喔!\n");
}
for(i=0;i<j;i=i+2)
{
tmp3=vobjs_d->vobjs_data("get_mark",tmps[i]);
ppl->vobjs("add",tmp3,-tmps[i+1]);
}
return notify_fail("brew: 沒有這個語法喔.\n");
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
※ 編輯: laechan 來自: 1.165.182.181 (02/28 20:24)
→
02/28 20:24, , 1F
02/28 20:24, 1F
→
02/28 22:05, , 2F
02/28 22:05, 2F
→
03/01 09:28, , 3F
03/01 09:28, 3F
→
03/01 10:21, , 4F
03/01 10:21, 4F
討論串 (同標題文章)
mud_sanc 近期熱門文章
PTT遊戲區 即時熱門文章
13
30