📄 meng-zhu.c
字号:
//版本:武林争霸6.0 (98/12)//开发者:徐竞// meng-zhu.c 武林盟主// colored the title of 武林盟主(player) , ReyGod, 1/15/1997#include <ansi.h>#ifndef NPCDATA#define NPCDATA "/data/npc/"#endif#define MENGZHU NPCDATA + "meng-zhu"inherit NPC;inherit F_MASTER;//inherit F_CLEAN_UP;inherit F_UNIQUE;inherit F_SAVE;string query_save_file(){ return MENGZHU;}void create(){ seteuid(getuid()); if (!restore()) { set_name("魏无双", ({ "wulin mengzhu", "mengzhu", "zhu" }) ); set("title", "武林盟主" ); set("gender", "男性" ); set("age", 40); set("long","他就是雄踞武林,号召天下,威风赫赫的当今武林盟主。\n"); set("attitude", "heroism"); set("generation",0); set("winner","none"); set("no_xi", 1); set("str", 25); set("con", 25); set("int", 25); set("dex", 25); set("max_qi", 500); set("eff_qi", 500); set("qi", 500); set("max_jing", 300); set("jing", 300); set("neili", 500); set("max_neili", 500); set("jiali", 40); set("shen_type", 0); set("no_clean_up",1); set("combat_exp", 500000); set_skill("force", 100); set_skill("unarmed",100); set_skill("sword", 100); set_skill("dodge", 100); set_skill("parry", 100); set("weapon", "/d/shaolin/obj/changjian"); set("armor", "/d/city/obj/cloth"); setup(); carry_object("/d/shaolin/obj/changjian")->wield(); carry_object("/d/city/obj/cloth")->wear(); } else { set("id", "mengzhu"); set_name(query("name"), ({ query("id") })); setup();// if( this_object()->query("weapon") ) carry_object(this_object()->query("weapon"))->wield();// if( this_object()->query("armor") ) carry_object(this_object()->query("armor"))->wear(); }}void init(){ object me = this_object(); add_action("do_recopy", "recopy"); add_action("do_recover", "recover");// add_action("do_kill", "kill");}int do_kill(){ object ob; int i; command("say 你想谋害本盟主,当真是吃了熊心豹子胆了!!"); command("say 座下白衣武士何在!"); message_vision("四周的白衣武士群起对$N发动攻击!\n", this_player()); for(i=0; i<4; i++) { if( objectp( ob = present("wei shi " + (i+1), environment(this_object())) ) ) ob->kill_ob(this_player()); else this_object()->kill_ob(this_player()); } return 1;}int accept_fight(object ob){ object me = this_object(); if ( me->query("winner") == ob->query("id") ) {// remove_call_out("do_copy");// call_out("do_copy", 1, me, ob); return notify_fail("你跟你自己打什么架?!\n");} if (wizardp(this_player())) return notify_fail("巫师不能抢盟主之位!\n"); if ( me->is_fighting() ) return notify_fail("已经有人正在挑战武林盟主!\n"); me->set("eff_qi", me->query("max_qi")); me->set("qi", me->query("max_qi")); me->set("jing", me->query("max_jing")); me->set("neili", me->query("max_neili")); remove_call_out("checking"); call_out("checking", 1, me, ob); return 1;}void die(){ object me; me = this_object(); me->set("eff_qi", me->query("max_qi")); me->set("qi", me->query("max_qi")); me->set("eff_jing", me->query("max_jing")); me->set("jing", me->query("max_jing")); me->set("neili", me->query("max_neili")); message_vision(HIR"\n$N死掉了。\n"NOR, me); message_vision(HIB"\n可是在此同时$N口中默念"HIC"『还魂咒』"HIB"四周妖风阵阵,慢慢的$N又站了起来。\n"NOR, me);}int checking(object me, object ob){ object obj; int my_max_qi, his_max_qi; my_max_qi = me->query("max_qi"); his_max_qi = ob->query("max_qi"); if (me->is_fighting()) { if ( (me->query("qi")*100 / my_max_qi) <= 80 ) command("exert recover"); call_out("checking", 1, me, ob); return 1; } if ( !present(ob, environment()) ) return 1; if (( (int)me->query("qi")*100 / my_max_qi) <= 50 ) { command("say 果然厉害,恭喜你成为当今武林盟主!\n"); command("chat 哈哈哈,到底是长江後浪推前浪,一代新人换旧人!\n"); command("chat 恭喜" + ob->query("name") + "被推举为当今武林盟主!\n"); remove_call_out("do_copy"); call_out("do_copy", 1, me, ob); return 1; } if (( (int)ob->query("qi")*100 / his_max_qi) < 50 ) { command("say 看来" + RANK_D->query_respect(ob) + "还得多加练习,方能在当今武林中出人头地 !\n"); return 1; } return 1; }int do_copy(object me, object ob){ object ob1, ob2; string mengzhu, shangshan, fae; seteuid(getuid()); me->set("winner", ob->query("id")); me->add("generation", 1); me->set("name", ob->query("name") ); me->set("title", "第" + chinese_number(me->query("generation")) + "代武林盟主"); me->set("short", HIR + me->query("title") + NOR + " " + me->query("name") + "(" + capitalize(ob->query("id")) + ")"); me->delete("title"); ob->delete_temp("apply/short"); ob->set_temp("apply/short", ({me->short()}));// --record which mengzhu generataion this player got-------by ReyGod// = better to place this checking when players login.// ob->set("mengzhu_gen",me->query("generation")); me->set("title", "第" + chinese_number(me->query("generation")) + "代武林盟主"); me->set("short", me->query("title") + " " + me->query("name") + "(Wulin mengzhu)"); me->delete("title"); if(!( ob1 = find_living("shangshan")) ) ob1 = load_object("/clone/npc/shang-shan"); shangshan = ob1->query("winner"); if(!( ob2 = find_living("fae")) ) ob2 = load_object("/clone/npc/fa-e"); fae = ob1->query("winner"); if( ob->query("id") == shangshan ) { rm( ob1->query_save_file() + __SAVE_EXTENSION__ ); destruct(ob1); } else if( ob->query("id") == fae ) { rm( ob2->query_save_file() + __SAVE_EXTENSION__ ); destruct(ob2); } remove_call_out("do_clone"); call_out("do_clone", 0, me, ob); return 1;}int do_recopy(object me, object ob){ me = this_object(); ob = this_player(); if ( me->query("winner") != ob->query("id") ) return notify_fail("你不是现任武林盟主!\n");; me->set("name", ob->query("name") ); me->set("title", "第" + chinese_number(me->query("generation")) + "代武林盟主"); me->set("short", HIR + me->query("title") + NOR + " " + me->query("name") + "(" + capitalize(ob->query("id")) + ")"); me->delete("title"); ob->delete_temp("apply/short"); ob->set_temp("apply/short", ({me->short()}));// --record which mengzhu generataion this player got-------by ReyGod// = better to place this checking when players login. // ob->set("mengzhu_gen",me->query("generation")); me->set("title", "第" + chinese_number(me->query("generation")) + "代武林盟主"); me->set("short", me->query("title") + " " + me->query("name") + "(Wulin mengzhu)"); me->delete("title"); remove_call_out("do_clone"); call_out("do_clone", 0, me, ob); return 1;}int do_clone(object me, object ob){ object *inv, new1; mapping hp_status, skill_status, map_status, prepare_status; string *sname, *mname, *pname; int i, temp; seteuid( geteuid(me) );/* delete and copy skills */ if ( mapp(skill_status = me->query_skills()) ) { skill_status = me->query_skills(); sname = keys(skill_status); temp = sizeof(skill_status); for(i=0; i<temp; i++) { me->delete_skill(sname[i]); } } if ( mapp(skill_status = ob->query_skills()) ) { skill_status = ob->query_skills(); sname = keys(skill_status); for(i=0; i<sizeof(skill_status); i++) { me->set_skill(sname[i], skill_status[sname[i]]); } } /* delete and copy skill maps */ if ( mapp(map_status = me->query_skill_map()) ) { mname = keys(map_status); temp = sizeof(map_status); for(i=0; i<temp; i++) { me->map_skill(mname[i]); } } if ( mapp(map_status = ob->query_skill_map()) ) { mname = keys(map_status); for(i=0; i<sizeof(map_status); i++) { me->map_skill(mname[i], map_status[mname[i]]); } } /* delete and copy skill prepares */ if ( mapp(prepare_status = me->query_skill_prepare()) ) { pname = keys(prepare_status); temp = sizeof(prepare_status); for(i=0; i<temp; i++) { me->prepare_skill(pname[i]); } } if ( mapp(prepare_status = ob->query_skill_prepare()) ) { pname = keys(prepare_status); for(i=0; i<sizeof(prepare_status); i++) { me->prepare_skill(pname[i], prepare_status[pname[i]]); } }/* unwield and remove weapon & armor */ inv = all_inventory(me); for(i=0; i<sizeof(inv); i++) { destruct(inv[i]); } set("weapon", 0); set("armor", 0);/* wield and wear weapon & armor */ inv = all_inventory(ob); for(i=0; i<sizeof(inv); i++) { if( inv[i]->query("weapon_prop/damage") > 100 || inv[i]->query("armor_prop/armor") > 100 ) continue; if( inv[i]->query("weapon_prop") && inv[i]->query("equipped") ) { carry_object(base_name(inv[i]))->wield(); me->set("weapon", base_name(inv[i])); } else if( inv[i]->query("armor_prop") && inv[i]->query("equipped") ) { carry_object(base_name(inv[i]))->wear(); me->set("armor", base_name(inv[i])); } }/* copy entire dbase values */ hp_status = ob->query_entire_dbase(); me->set("str", hp_status["str"]); me->set("int", hp_status["int"]); me->set("con", hp_status["con"]); me->set("dex", hp_status["dex"]); me->set("age", hp_status["age"]); me->set("max_qi", hp_status["max_qi"]); me->set("eff_qi", hp_status["eff_qi"]); me->set("qi", hp_status["qi"]); me->set("max_jing", hp_status["max_jing"]); me->set("eff_jing", hp_status["eff_jing"]); me->set("jing", hp_status["jing"]); me->set("max_neili", hp_status["max_neili"]); me->set("neili", hp_status["neili"]); me->set("jiali", hp_status["jiali"]); me->set("gender", hp_status["gender"]); me->set("combat_exp",hp_status["combat_exp"]); save(); tell_object(ob, "状态储存完毕。\n"); new1 = new("/clone/npc/meng-zhu"); new1->move("/d/taishan/fengchan"); destruct(me); return 1;}int do_recover(){ object me, ob; mapping skill_status, map_status, prepare_status; string *sname, *mname, *pname; int i; me = this_object(); ob = this_player(); if (me->is_fighting() || ob->is_fighting() || me->query("fighting")) return notify_fail("现在这里正打的不亦乐乎!等会吧!\n"); if ( me->query("winner") != ob->query("id") || me->query("age")>ob->query("age") ) return notify_fail("你不是现任武林盟主!\n");; if (time()-me->query("recover")<60) return notify_fail("状态复元完毕。\n"); ob->set("qi",ob->query("max_qi")); ob->set("jing",ob->query("max_jing")); ob->set("eff_qi",ob->query("max_qi")); ob->set("eff_jing",ob->query("max_jing")); ob->set("neili",ob->query("max_neili")); write("状态复元完毕。\n"); me->set("recover",time()); return 1;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -