⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jiuyang-zhenjing.c

📁 C实现的MUD,对大家基本入门网络游戏很有帮助!
💻 C
字号:
// jiuyang-zhenjing.c
// Modified by jpei
#include <ansi.h>
inherit ITEM;
mapping *skills = ({
	(["name": "lieyan-dao", "max": 400]),
	(["name": "liehuo-jian", "max": 400]),
	});
void create()
{
	set_name(HIR"九阳真经"NOR, ({"jiuyang zhenjing", "jiuyang", "zhenjing", "book"}));
	set_weight(600);
	if (clonep())
		set_default_object(__FILE__);
	else {
		set("unit", "本");
		set("long", "这是一套四本薄薄的经书。你可以用dujing jiuyang zhenjing来读它。
书后还有一本附本,上面记载着一种刀法(lieyan-dao),和一种剑法(liehuo-jian)你可以通过翻阅fanyue来看看。\n");
		set("value", 800000);
		set("material", "paper");
		set("no_drop", "这么珍贵的武林秘籍,你可不能随意丢弃!\n");
		set("no_get", "这样东西是那人的宝贝,连睡觉都要当枕头垫,你无法拿取!\n");
                set("treasure", 1);
	}
}

void init()
{
	add_action("do_yandu",({"fanyue"}));
        add_action("do_du", "dujing");
        add_action("do_du", "studyjing");
}

int do_du(string arg)
{
        object me = this_player();
        object where = environment(me);
        object ob;
        mapping skill;
        int jylevel, neili_lost;

        if (!id(arg)) return 0;

        if (where->query("pigging")){
                write("你还是专心拱猪吧!\n");
                return 1;
        }
        if (me->is_busy()) {
                write("你现在正忙着呢。\n");
                return 1;
        }

        if( me->is_fighting() ) {
                write("你无法在战斗中专心下来研读新知!\n");
                return 1;
        }

        if (!me->query_skill("literate", 1)) {
                write("你是个文盲,先学点文化(literate)吧。\n");
                return 1;
        }
        
        if (me->query("jing") < 60) {
                write("你现在过于疲倦,无法专心下来研读新知。\n");
                return 1;
        }
	if (me->query_skill("force",1) < 20) {
		write("你的内功基础没有打好,不能修练九阳神功。\n");
		return 1;
	}
	if (me->query_skill("bahuang-gong",1)
	|| me->query_skill("beiming-shengong",1)
	|| me->query_skill("bibo-shengong",1)
	|| me->query_skill("hamagong",1)
	|| me->query_skill("huagong-dafa",1)
	|| me->query_skill("huntian-qigong",1)
	|| me->query_skill("hunyuan-yiqi",1)
	|| me->query_skill("kuihua-xinfa",1)
	|| me->query_skill("kurong-changong",1)
	|| me->query_skill("linji-zhuang",1)
	|| me->query_skill("longxiang",1)
 	|| me->query_skill("shenlong-xinfa",1)
	|| me->query_skill("taiji-shengong",1)
	|| me->query_skill("xiantian-qigong",1)
	|| me->query_skill("xiaowuxiang",1)
	|| me->query_skill("yijinjing",1)
	|| me->query_skill("yunv-xinfa",1)
	|| me->query_skill("yunlong-shengong",1)   ||
me->query_skill("shenyuan-gong",1)   ||
me->query_skill("huashan-neigong",1)   ||
me->query_skill("zixia-shengong",1) ||
me->query_skill("xuantian-wuji",1)  ||
me->query_skill("guiyuan-tunafa",1) )
	return notify_fail("你不先散了别派内功,怎能学九阳神功?!\n");


        jylevel = me->query_skill("jiuyang-shengong", 1);
	if (jylevel < 30)
		neili_lost = jylevel / 2;
	else if (jylevel < 70)
		neili_lost = jylevel * 2 / 3;
	else if (jylevel < 120)
		neili_lost = jylevel * 3 / 4;
	else
		neili_lost = jylevel;
	if (jylevel >= (me->query_skill("force", 1) + 30)) {
		write("由于你的内功的火侯不够,不能再获得更高一层的提高。\n");
		return 1;
	}
	if (jylevel / 5 >= me->query_int()) {
		write("由于你的悟性不够,无法进一步研习高一层的九阳神功。\n");
		return 1;
	}
	if (me->query("neili") < neili_lost) {
		write("你内力不够,无法钻研这么高深的武功。\n");
                return 1;
        }
        if (me->query("combat_exp") < jylevel * jylevel * jylevel / 10) {
                write("你的实战经验不足,再怎么读也没用。\n");
                return 1;
        }
	if (jylevel >= 200) {
                write("你已经无法再从经书上领悟到什么,要有更高的修为必须自已练了。\n");
                return 1;
        }
	if (jylevel >= 120 && me->query("neili") < me->query("max_neili") + jylevel) {
                write("这最后一册书上的内容过于深奥,光靠研读而不身体力行是无法再获得进步的。\n");
                return 1;
        }
        me->receive_damage("jing", 50);
        me->add("neili", -neili_lost);
	if (!jylevel) {
		write("你翻开第一册经书,发现上面尽是弯弯曲曲的梵文,但每一行之间却以蝇头小楷写满了中国文字。\n");
		write("你定一定神,从头细看,发现文中所记似是关于练功运气的诀窍。\n");
	        write("你开始研读第一册,上面讲述的是九阳功入门基础。\n");
	}
	if (jylevel >= 120)
	        write("你按照书中所讲打坐一阵,再对照着研读《九阳真经》最后一册,这才有点心得。\n");
	else
	        write("你研读《九阳真经》,颇有心得。\n");
	me->improve_skill("jiuyang-shengong", me->query_skill("literate", 1) / 3 + 1);
	if (!random(5)) message("vision", me->name() + "拿着一本经书正在钻研。\n", environment(me), ({me}));
	if (me->query_skill("jiuyang-shengong", 1) > jylevel) {
		if (jylevel == 29) {
		        write("你读完了第一册,觉得这册上所讲的入门基础很是易学。\n");
		        write("你开始研读第二册,上面讲述的是练气法门。\n");
		}
		else if (jylevel == 69) {
		        write("你读完了第二册,虽然这册上所讲的练气法门有些难度,但是并没有太深奥的地方。\n");
		        write("你开始研读第三册,上面讲述的是运气诀要。\n");
		}
		else if (jylevel == 119) {
		        write("你读完了第三册,这册上所讲的运气诀要颇为艰深,你费了好大的劲才完全理解了。\n");
		        write("你开始研读第四册,上面讲述的已经是十分艰深的内功精要,读起来相当困难。\n");
		}
		else if (jylevel == 199) {
		        write("你终于读完了第四册,揭过最后一页之后,心中又是欢喜,又微微感到怅惘。\n");
		        write("屈指算来,数年的光阴匆匆而过,至今方始功行圆满。\n");
if (!me->query("jiuyangok/con"))
{
			me->add("con", 1);
me->set("jiuyangok/con",1);
}
		}
	}
	return 1;
}
int query_autoload()
{
       return 1;
}
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 (!arg)
		return notify_fail("你要读什么?\n");
	if (sscanf(arg, "%s %s", book, skill) != 2)
		return notify_fail("指令格式:yandu <书名> <技能>\n");
	if (book != "jiuyang")
		return notify_fail("你要读什么书,这是九阳真经(jiuyang)啊\n");
	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") < 30 || me->query_int() < 60 )
		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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -