jiuyin-xia.c
来自「C实现的MUD,对大家基本入门网络游戏很有帮助!」· C语言 代码 · 共 111 行
C
111 行
#include <ansi.h>inherit ITEM;inherit F_AUTOLOAD;mapping *skills = ({ (["name": "jiuyin-baiguzhua", "max": 200]), (["name": "cuixin-zhang", "max": 200]), (["name": "jiuyin-shenfa", "max": 200]), (["name": "dafumo-quan", "max": 200]), (["name": "xuanyin-jian", "max": 200]), (["name": "yinlong-bian", "max": 200]), });void create(){ string desc = ""; int i; set_name(HIY"「九阴真经」下卷"NOR, ({ "jiuyin xiajuan", "xiajuan" })); set_weight(50); if( clonep() ) set_default_object(__FILE__); else { set("unit", "张"); for (i=0; i<sizeof(skills); i++) desc += sprintf("\t%s (%s)\n", to_chinese(skills[i]["name"]), skills[i]["name"]); set("long",HIC"这是九阴真经的下卷,里面记载着各种高深的武学。你可以研读以下的技能:\n\n"HIW+desc+"\n"NOR); set("treasure", 1); set("value", 0); set("material", "skin"); set("no_put", 1); set("no_drop", 1); set("no_give", 1); set("no_get", 1); set("no_steal", 1); }}void init(){ add_action("do_yandu",({"yandu"}));}int do_yandu(string arg){ int cost, my_skill, max_level, i, flag = 0; string book, skill; object me = this_player(); object where = environment(me); if (!me->query("jiuyin/xia")) return 0; if (!arg) return notify_fail("你要读什么?\n"); if (sscanf(arg, "%s %s", book, skill) != 2) return notify_fail("指令格式:yandu <书名> <技能>\n"); if (book != "xiajuan") return 0; for (i=0; i<sizeof(skills); i++) if (skill == skills[i]["name"]) { max_level = skills[i]["max"]; flag = 1; break; } if (!flag) return notify_fail("你无法从" + this_object()->name() + "中学到这个技能。\n"); if (me->is_busy()) return notify_fail("你现在正忙着呢。\n"); if (where->query("sleep_room")) return notify_fail("卧室不能读书,会影响别人休息。\n"); if( me->is_fighting() ) return notify_fail("你无法在战斗中专心下来研读新知!\n"); if( !me->query_skill("literate", 1) ) return notify_fail("你是个文盲,先学点文化(literate)吧。\n"); if (!random(5)) message("vision", me->name() + "正专心地研读" + this_object()->name() + "。\n", environment(me), me); if((int)me->query("potential") - (int)me->query("learned_points") < 200 ) return notify_fail("你的潜能太少了!\n"); if( (int)me->query("learned_points") < 1 ) return notify_fail("你的潜能已经用完了,再怎么读也没用。\n"); if( (int)me->query("potential") < 1 ) return notify_fail("你的潜能已经用完了,再怎么读也没用。\n"); if( (int)me->query("combat_exp") < 1000000 ) return notify_fail("你的实战经验不足,再怎么读也没用。\n"); if( me->query("int") < 25 || me->query_int() < 50 ) return notify_fail("以你目前的领悟能力,还没有办法学这个技能。\n"); notify_fail("依你目前的能力,没有办法学习这种技能。\n"); if( !SKILL_D(skill)->valid_learn(me) ) return 0; cost = 40 * (1 + (50 - (int)me->query("int")) / 20); if (cost < 10) cost = 10; // minimum cost if((int)me->query("jing") < cost) { me->start_busy(1); return notify_fail("你的精不够用了。\n"); } my_skill = me->query_skill(skill, 1); if (my_skill > max_level) return notify_fail("你研读了一会儿,但是发现上面所说的对你而言都太浅了,没有学到任何东西。\n"); if (my_skill * my_skill * my_skill / 10 > (int)me->query("combat_exp")) return notify_fail("也许是缺乏实战经验,你对帛卷上面所说的东西总是无法领会。\n"); else write("你研读着有关" + to_chinese(skill) + "的技巧,似乎有些心得。\n"); me->improve_skill(skill, ((int)me->query_skill("literate", 1) / 5 + 1)); me->receive_damage("jing", cost); me->add("potential", - random(2)); return 1;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?