mud_sanc 板


LINE

// 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)
1F:→ laechan :真難搞 02/28 20:24
2F:→ laechan :今天寫不完哩,明天繼續 02/28 22:05
3F:→ laechan :今天繼續 coding 03/01 09:28
4F:→ laechan :剩下最終的判斷 03/01 10:21







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:BabyMother站內搜尋

TOP