xiangpi-ren.c
来自「C实现的MUD,对大家基本入门网络游戏很有帮助!」· C语言 代码 · 共 153 行
C
153 行
// xiangpi-ren.c
inherit NPC;
void create()
{
set_name("橡皮人", ({ "xiangpi ren","man", "ren" }) );
set("gender", "男性" );
set("age", 30);
set("long", "一个练功用的精制橡皮木人,制作精巧,如同真人一般。\n");
set("attitude", "heroism");
set("str", 25);
set("con", 25);
set("dex", 25);
set("int", 25);
set("max_qi", 300);
set("eff_qi", 300);
set("qi", 300);
set("max_jing", 100);
set("jing", 100);
set("neili", 300);
set("max_neili", 300);
set("jiali", 10);
set("shen_type", 0);
set("combat_exp", 50000);
set_skill("force", 30);
set_skill("unarmed", 30);
set_skill("dodge", 30);
set_skill("parry", 30);
set("fight_times", 0);
setup();
}
int accept_fight(object ob)
{
object me;
mapping hp_status, skill_status, map_status, prepare_status;
string *sname, *mname, *pname;
int i, temp;
me = this_object();
if (is_fighting()) return 0;
if (me->query("damaged"))
return notify_fail("这个橡皮人已经被打坏了!\n");
if (random(me->query("fight_times")) >= 10) {
me->set("damaged", 1);
return notify_fail("这个橡皮人已经被打坏了!\n");
}
if (me->query("last_fighter") == ob->query("id"))
return notify_fail("你刚跟这个橡皮人练过功!\n");
me->set("last_fighter", ob->query("id"));
me->add("fight_times", 1);
remove_call_out("renewing");
call_out("renewing", 300 + random(300), 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]]);
}
}
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("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("combat_exp",hp_status["combat_exp"]);
return 1;
}
void renewing(object me)
{
me->delete("last_fighter");
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?