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