fengdong.c

来自「C实现的MUD,对大家基本入门网络游戏很有帮助!」· C语言 代码 · 共 181 行

C
181
字号
//Cracked by Kafei// road: /zhongnan/fengdong.c// by sdong 08/98#include <ansi.h>#include <room.h>inherit ROOM;private int blow_result(object victim);int blow();void setup_ob(object me,object victim);void create(){		  set("short","风洞");		  set("long",@LONG这个大洞又高又宽,由两大花岗岩夹峙而成。洞内清风习习,凉气飕飕,故称风洞。听说有时会狂风大作,看来要小心一些。LONG);		  set("exits",([	"west": __DIR__"xuanya4",							 ])			  );	  set("cost",1);	  setup();}void init(){	add_action("do_throw", "throw");	remove_call_out("blow");	call_out("blow",3 + random(3) );}int do_throw(string arg){	object ob;	if(!arg)return notify_fail("你想扔什么?");	ob = present(arg,this_player());	if(!ob)return notify_fail("你想扔什么?");	message_vision( HIY"\n$N把$n往外扔去!\n"NOR, this_player(), ob);	remove_call_out("blow");	call_out("blow",1  );	if(userp(ob))	{		ob->move(__DIR__"xuanya4");		message_vision( HIY"\n$N被扔了出来!\n"NOR, ob);	 }	else destruct(ob);	return 1;}int blow(){	object *inv = all_inventory(find_object(__DIR__"fengdong"));	object ob, me= this_player();	int i;	if( !this_player() ) return 1;	if(!environment(this_player())) return 1;	if( base_name(environment(this_player())) != __DIR__"fengdong") return 1;	message_vision( HIY"\n突然一阵狂风夹带石块向风洞袭来,声势惊人!\n"NOR, this_player() );	for ( i=0 ; i < sizeof(inv); i++)	{		if ( (string)inv[i]->query("race") == "人类" )		{			blow_result(inv[i]);		}	}	remove_call_out("blow");	call_out( "blow",3 + random(3) );	return 1;}private int blow_result(object victim){	object ob2,ob;	string *limbs, str, dodge_skill, limb, result;	int ap, dp, damage;	if(random(60)==1)	{		ob2=new(__DIR__"bigbear");		ob2->move(environment(victim));		message_vision(HIR"突然从洞口中走进一只$N,它看到有人,大概受了惊吓,发疯似地向$n发起进攻!\n"NOR, ob2,victim);		setup_ob(ob2,victim);		ob2->kill_ob(victim);		ob2->add_temp("offenders/"+victim->query("id"), 1);		ob2->start_busy(1+random(3));      victim->kill_ob(ob2);	}	ap = victim->query_dex()+victim->query_str();	dp = victim->query_dex();	ap *= victim->query("combat_exp")/1000;	dp *= victim->query("combat_exp")/1000;	ap = random(ap);	ob = new (__DIR__"stone");	if ( ap > dp){	limbs = victim->query("limbs");		victim->receive_wound("qi", random(20));		victim->receive_damage("qi", random(ob->query_weight()/100));		message_vision(CYN"$N猝不及防,$n"+CYN+"砸在了$N的"+limbs[random(sizeof(limbs))]			  +"上。\n"NOR, victim, ob);		destruct(ob);	}	else if ( ap < dp/7 && ob->query_weight() < 7000		&& victim->query("race") == "人类"){		message_vision(CYN"不料$N眼明手快,身子一侧,把$n"+CYN+"轻轻地接在手里。\n\n"NOR, victim, ob);		ob->move(victim);	 }	else {		dodge_skill = victim->query_skill_mapped("dodge");		if( !dodge_skill ) dodge_skill = "dodge";		message_vision("$N一闪,正好躲过"+ob->query("name")+".\n", victim);		destruct(ob);	}	if( victim->query_skill("parry",1) < 350 ) victim->improve_skill( "parry",victim->query("con")+10 );	return 1;}void setup_ob(object me,object victim){	object *inv;	mapping skill_status;	string *sname;	int i, max = 0, max1, j;	if ( !me->query_temp("copied") ) {		if ( mapp(skill_status = victim->query_skills()) ) {		skill_status = victim->query_skills();		sname = keys(skill_status);		for(i=0; i<sizeof(skill_status); i++) {			if ( skill_status[sname[i]] > max ) max = skill_status[sname[i]];		}		max1 = (int)max + random(max);		if( victim->query("combat_exp",1) < 10000 ) max1 = max1/2;		me->set_skill("dodge", max1);		me->set_skill("parry", max1 );		me->set_skill("force", max1);		me->set("combat_exp", victim->query("combat_exp",1)+random(victim->query("combat_exp",1)/6));		me->set("max_qi", victim->query("max_qi"));		me->set("eff_qi", victim->query("max_qi"));		me->set("max_jing", victim->query("max_jing"));		me->set("eff_jing", victim->query("max_jing"));		me->set("qi", me->query("max_qi"));		me->set("jing", me->query("max_jing"));		me->set("jiali", victim->query("jiali")*3/4);		if ( victim->query("max_jing") > 0 ) {			me->set("max_jing", victim->query("max_jing"));		}		else me->set("max_jing", 500);		me->set("jing", me->query("max_jing"));		me->set("no_sing", 1);		me->set_temp("copied", 1);		}	}}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?