tianjianshi.c
来自「C实现的MUD,对大家基本入门网络游戏很有帮助!」· C语言 代码 · 共 364 行
C
364 行
// npc: /d/npc/m_weapon/npc/tianjianshi.c// Jay 3/26/96#include <ansi.h>inherit NPC;string ask_met();int do_weapon();object creat_weapon();void create(){ set_name("欧冶子", ({ "ouye zi", "zi" }) ); set("nickname", RED "赤心剑胆" NOR ); set("gender", "男性" ); set("age", 60); set("long", "他头上包着头巾,三缕长髯飘洒胸前,面目清瘦但红晕有光,\n" "二目炯炯有神,烁烁闪着竟似是凛凛的剑光,浑身似乎都包围\n" "在一股剑气之中。\n"); set("str", 25); set("dex", 20); set("con", 17); set("int", 30); set("shen_type", 0); set("max_neli",5000); set("jiali",50); set_skill("unarmed", 100); set_skill("dodge", 100); set_skill("claw",200); set_skill("jiuyin-baiguzhao",200); set_skill("force",150); set_skill("sword",150); set_skill("bibo-shengong",100); set_skill("luoying-shenjian",100); set_skill("parry",90); set_skill("anying-fuxiang",100); set_temp("apply/attack", 50); set_temp("apply/defense", 50); set_temp("apply/damage",50); create_family("玄天派",1,"弟子"); set("combat_exp", 250000); set("score",0); map_skill("force","bibo-shengong"); map_skill("parry","luoying-shenjian"); map_skill("sword","luoying-shenjian"); map_skill("claw","jiuyin-baiguzhao"); map_skill("dodge","anying-fuxiang"); set("attitude", "peaceful"); set("inquiry", ([ "铸剑" : "铸剑可是件十分艰苦的事,要消耗人的精气和内力,你有决心和毅力吗?\n", "原料" : "铸剑可用千年玄铁。。。你找到了我才能帮你铸剑。\n", "兵器" : (: do_weapon() :), "修理" : (: ask_met() :), ]) ); setup(); set("chat_chance", 3); set("chat_msg", ({ "欧冶子抚剑而歌:巨阙神兵兮,人铸就。盖世宝剑兮,配英雄!\n", "欧冶子低头沉吟,似乎在思考什么。\n" "欧冶子叹了一口气:神兵配英雄,可英雄。。。。。。\n" }) ); carry_object("/clone/misc/cloth")->wear(); carry_object("/clone/weapon/changjian")->wield();}void init(){ ::init(); add_action("do_answer","answer");}int accept_object(object who, object ob){ switch ((string)ob->query("name") ) { case "菩提子" : case "叫化鸡" : case "手镯": case "辟邪剑谱": case "白虎堂令牌": if( (who->query_temp("condition")) != (string)ob->query("name") ) { message_vision(HIC "欧冶子一愣:我对你说过我要这样东西么?\n" NOR, who); return 2; } else { who->delete_temp("condition"); message_vision(HIG "欧冶子微笑着:很好很好!那我就帮你这一次吧!\n" NOR, who); who->set_temp("condition_ok",1); do_weapon(); return 2; } } if((int)(who->query("weapon/make")) ){ say("欧冶子一脸茫然:您已经有一把自造的武器了,还来干什么?难到不可手么?\n"); return 2; }// switch ((string)ob->query("name") ) switch ((string)ob->query("id") ) {// case "千年神木": case "shen mu": who->set_temp("or",1); who->set_temp("get_orc",1); destruct(present("shen mu",ob)); break;// case "海底金母": case "jin mu": who->set_temp("or",2); who->set_temp("get_orc",1); destruct(present("jin mu",ob)); break;// case "寒丝羽竹": case "han zhu": who->set_temp("or",3); who->set_temp("get_orc",1); destruct(present("han zhu",ob)); break; default : message("vision","这是什么!这不能用来打造兵器!",who); return 2; } message("vision","欧冶子低头检视了一下手中的"+(string)ob->query("name")+ "点了点头说:\n",who); write("我这儿可以打造以下兵器:\n"+ " 剑(sword)\n"+ " 刀(blade)\n"+ " 棍(stick)\n"+ " 杖(staff)\n"+ " 锤(hammer)\n"+ " 鞭(whip)\n"); say("这位"+RANK_D->query_respect(who)+"要造什么兵器?决定了告诉我(answer)。\n"); return 2;}int do_answer(string arg){ object me,w_or; me = this_player(); if(!(me->query_temp("get_orc") ) ){ write("你找到原料了吗?\n"); return 0; } if(!arg){ write("你要造什么兵器?\n"); return 0; } message("vision",me->name()+"对欧冶子轻声说了几句。\n",environment(me), ({me}) ); switch (arg) { case "sword" : me->add_temp("sword",1); write("带着原料去找侍剑吧!\n"); message("vision","去吧!"+me->name()+"!\n",me); break; case "blade" : me->add_temp("blade",1); write("带着原料去找侍刀吧!\n"); message("vision","去吧!"+me->name()+"!\n",me); break; case "stick" : me->add_temp("club",1); write("带着原料去找侍棍吧!\n"); message("vision","去吧!"+me->name()+"!\n",me); break; case "staff" : me->add_temp("staff",1); write("带着原料去找侍杖吧!\n"); message("vision","去吧!"+me->name()+"!\n",me); break; case "hammer" : me->add_temp("hammer",1); write("带着原料去找侍锤吧!\n"); message("vision","去吧!"+me->name()+"!\n",me); break; case "whip" : me->add_temp("whip",1); write("带着原料去找侍鞭吧!\n"); message("vision","去吧!"+me->name()+"!\n",me); break; default : message_vision(HIC "欧冶子一脸狐疑:什么兵器?\n" NOR,me); return notify_fail("欧冶子仔细的说:此事不可儿戏,请慎重!!\n"); }if (!me->query_temp("weaponok")){ switch ( me->query_temp("or") ) { case 1: w_or = new("/d/npc/m_weapon/tan/item/shenmu",1); w_or->move(me); message_vision(HIC "欧冶子给了$N一块千年神木。\n" NOR, me); break; case 2: w_or = new("/d/npc/m_weapon/tan/item/jinmu",1); w_or->move(me); message_vision(HIC "欧冶子给了$N一块海底金母。\n" NOR, me); break; case 3: w_or = new("/d/npc/m_weapon/tan/item/hanzhu",1); w_or->move(me); message_vision(HIC "欧冶子给了$N一块寒丝羽竹。\n" NOR, me); break; }}me->set_temp("weaponok",1); return 1;}int do_weapon(){ object me,weapon,obj; string w_id; me = this_player(); w_id = me->query("weapon/id"); if( !(me->query("weapon/make")) ) return notify_fail("你造过兵器吗?\n"); if( objectp(obj = present(w_id, me)) ) { say("欧冶子脸色一沉:您的武器不就在你手边么?还来干什么!\n"); return 1; } if (me->query_temp("condition") ) { say("欧冶子脸色一沉:不是让你去拿"+(me->query_temp("condition") )+"了么?还没拿到回来干嘛!\n"); return 1; } if( !(me->query_temp("condition_ok")) ) { message_vision(HIY "这位"+RANK_D->query_respect(me)+"想要重新得到兵器?这不难。不过......\n" NOR, me); message_vision(HIY "欧冶子沉吟了一下说:你得找到我要的东西。\n" NOR, me); switch( random(5) ) { case 0: message_vision("拿到菩提子,再来吧!\n",me); me->set_temp("condition","菩提子"); break; case 1: message_vision("给我叫化鸡,我就帮你!!\n",me); me->set_temp("condition","叫化鸡"); break; case 2: message_vision("嗯...你就拿黑木崖白虎堂令牌来换吧!!\n",me); me->set_temp("condition","白虎堂令牌"); break; case 3: message_vision("....我想看看有名的手镯!\n",me); me->set_temp("condition","手镯"); break; case 4: message_vision("如果你能替我找到辟邪剑谱的话......\n",me); me->set_temp("condition","辟邪剑谱"); break; } } else { me->delete_temp("condition_ok"); weapon = creat_weapon(); weapon->move(me); } return 1;}object creat_weapon(){ object me,weapon; string mask; //the verible that record the type of weapon me = this_player(); mask = me->query("weapon/type"); switch(mask) { case "剑": weapon = new("/d/npc/m_weapon/weapon/m_sword",1); return weapon; case "刀": weapon = new("/d/npc/m_weapon/weapon/m_blade",1); return weapon; case "棍": weapon = new("/d/npc/m_weapon/weapon/m_club",1); return weapon; case "杖": weapon = new("/d/npc/m_weapon/weapon/m_staff",1); return weapon; case "锤": weapon = new("/d/npc/m_weapon/weapon/m_hammer",1); return weapon; case "鞭": weapon = new("/d/npc/m_weapon/weapon/m_whip",1); return weapon; }}string ask_met() { object weapon; object gold; object *inv; int i; object me = this_player(); inv = all_inventory(me); for(i=0; i<sizeof(inv); i++) { if((int)(inv[i]->query("weapon_prop")&&inv[i]->query("ownmake"))) return "你身上不是有武器吗?"; if(me->is_busy()) return "你上一个动作还没有完成。"; gold = present("gold_money", this_player()); if( !gold) return "你身上没有金子。"; if((int) gold->query_amount() < 101) return "你身上没带够一百两金子。"; if (me->query("weapon/type")) { switch((string)me->query("weapon/type")) { case "剑": weapon = new("/d/npc/m_weapon/weapon/m_sword"); weapon->move(me); gold->add_amount(-100); me->start_busy(5); return "修好了,请quit,再重新登陆一次!"; case "刀": weapon = new("/d/npc/m_weapon/weapon/m_blade"); weapon->move(me); gold->add_amount(-100); me->start_busy(5); return "修好了,请quit,再重新登陆一次!"; case "鞭": weapon = new("/d/npc/m_weapon/weapon/m_whip"); weapon->move(me); gold->add_amount(-100); me->start_busy(5); return "修好了,请quit,再重新登陆一次!"; case "杖": weapon = new("/d/npc/m_weapon/weapon/m_staff"); weapon->move(me); gold->add_amount(-100); me->start_busy(5); return "修好了,请quit,再重新登陆一次!"; case "棍": weapon = new("/d/npc/m_weapon/weapon/m_club"); weapon->move(me); gold->add_amount(-100); me->start_busy(5); return "修好了,请quit,再重新登陆一次!"; } }else return "你造过武器吗?"; }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?