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

📄 douzhuan-xingyi.c

📁 C实现的MUD,对大家基本入门网络游戏很有帮助!
💻 C
📖 第 1 页 / 共 2 页
字号:
// douzhuan-xingyi 斗转星移// 1997-2-14#include <ansi.h>#include <weapon.h>#include <combat.h>inherit SKILL;#include "/kungfu/skill/eff_msg.h";int douzhuan(object me, object victim);string *parry_msg = ({YEL"蓦地里一股力道飞来,将$N一引一带,$N身子轻轻越起,身行落在一旁"NOR,BLU"$N当下一股内力冲向$n,$n击向$N的$n的招数莫名奇妙的溜滑向一旁"NOR,HIW"$N双手前探,左臂搭上$n右臂,右臂使出$n的招数将$n此招化去"NOR,HIY"$N星移斗转,$n这招莫名其妙的在中途转了方向,直奔自己袭来"NOR,YEL"$N作壁上观,双手与对方相交数掌,谈笑间竟使出$n成名技艺,使得$n不知如何是好"NOR,BLU"$N凝神运气向$n猛攻快打,使出的招数好似$n的成名绝技,把$n的招数化于无行"NOR,HIW"只见$N身如飘风,恰似漫天星移,诡异地一式,双掌动向无定不可捉摸地拍向$n"NOR,HIY"$N身行飘忽不定,在星移斗转之间反用$n的招数击向$n,却令人$n百思不得其解"NOR,});int valid_enable(string usage){	return usage == "parry";}string query_parry_msg(object weapon){			return parry_msg[random(sizeof(parry_msg))] + "。\n";}int valid_learn(object me){     return notify_fail("斗转星移只能通过领悟来提高。\n");}int practice_skill(object me){	return notify_fail("斗转星移只能通过领悟来提高,无法通过练习来提高。\n");}string perform_action_file(string action){	return __DIR__"douzhuan-xingyi/" + action;}int ob_hit(object ob, object me, int damage){        string msg;        int i,p,j,skill, neili, neili1, exp, exp1;	int hurt;        object randomtarget, *rob;	rob = all_inventory(environment(me));	i = random(sizeof(rob));	randomtarget = rob[i];	hurt = damage;	if ( me->query_temp("mr_bishen", 1) > (random(2)+2)	&& me->query_skill_mapped("force") == "shenyuan-gong" ) {		me->delete_temp("mr_bishen");		if( !ob || !ob->is_character() || !me->is_fighting(ob) )	                return 0;		call_out("bishen", 0, me, ob);	}	damage = hurt;	me->add_temp("mr_bishen", 1);        skill = me->query_skill("douzhuan-xingyi", 1);        neili = me->query("neili");        neili1 = ob->query("neili");        exp = me->query("combat_exp");        exp1 = ob->query("combat_exp");if (me->query_skill("shenyuan-gong",1) < 50) return damage;        if(!living(ob)) return damage;        if(neili < 300) return damage;	if ( damage > 0 ) {		if ( rob[i] && living(rob[i]) && rob[i] != me		&& rob[i]->is_fighting(me)		&& me->query_skill_mapped("force") == "shenyuan-gong"		) {			if (me->query_skill("douzhuan-xingyi", 1) > 150 && me->query("max_neili") > 2500			    && me->query("neili") > 1000 && random(me->query("combat_exp")) > me->query("combat_exp")/3 			    && random(skill)> 100) {				msg = HIC+BBLU+"$N使出慕容武功精随,$n的招式莫明其妙地击中"+rob[i]->query("name")+HIC+BBLU+"\n"NOR;				tell_object(rob[i], HIR"突然之间,你居然莫明其妙地被击中。\n"NOR);				damage = damage * 2 / 3;if (ob->query("qi")/2 > damage)				rob[i]->receive_wound("qi", damage);                                p = rob[i]->query("qi")*100/rob[i]->query("max_qi");				msg += "( "+rob[i]->query("name") + eff_status_msg(p)+" )\n";                                message_vision(msg, me, ob);				if ( random(rob[i]->query("int")) > me->query("int")*2/3 )					rob[i]->kill_ob(me);				return -damage;			}		}		else {			if ( (random(me->query("combat_exp")) > ob->query("combat_exp")/3)			     && (random(me->query("str", 1)) > ob->query("str", 1)/2)			     && (random(me->query("dex", 1)) > ob->query("dex", 1)/2)			     && (me->query_skill("douzhuan-xingyi", 1)>300) 			     ) {				msg = HIC"$N使出慕容武功精随,斗转星移间$n被自己的成名绝技击中。\n"NOR;				damage =damage/2+random(damage/3);                                if (ob->query("qi")/2 > damage)				ob->receive_wound("qi", damage);				p = ob->query("qi")*100/ob->query("max_qi");				msg += "( $n"+eff_status_msg(p)+" )\n";				message_vision(msg, me, ob);				return -damage;			}					else if ( random(me->query("combat_exp")) > ob->query("combat_exp")/3				  && (random(me->query("dex", 1)) > ob->query("dex", 1)/2)				  && (me->query_skill("douzhuan-xingyi", 1)>240) )			{				msg = HIY"突然间$n的招势在中途转向,击中了自己。\n"NOR;				if (ob->query("qi")/2 > damage/3)				ob->receive_damage("qi", damage/3);				p = ob->query("qi")*100/ob->query("max_qi");				msg += "( $n"+eff_status_msg(p)+" )\n";				message_vision(msg, me, ob);				return -damage;			}			if ( random(me->query("combat_exp")) > ob->query("combat_exp")/3			     && (me->query_skill("douzhuan-xingyi", 1)>120) )			{				msg = MAG"$n的招势在$N的带引下中途转向,化为无形。\n"NOR;				message_vision(msg, me, ob);				return damage/8;			}          }}if (damage <10){damage=10;      }if (me->query_skill("shenyuan-gong",1) <100){           me->delete_temp("dzxy");           return 1;}	 if(me->query_temp("dzxy")){           me->delete_temp("dzxy");           return 1;           }        if(me->query("jiali") && random(skill)+20 > random(ob->query_skill("parry", 1))          && exp > exp1/3 && skill > 150         && neili > 300 && living(ob)){       message_vision(HIG"$N立时旁拨侧挑,推气引劲,试图把$n的攻击转向$n自己身上!\n"NOR,me, ob);        if(neili >= neili1+random(neili1)+damage){            message_vision(HIY"结果$n看破了$N的意图,招式忽变,$N这一招却未成功!\n"NOR,me, ob);            return damage;            }else{    message_vision(HIR"$n只觉似乎双手不听使唤,招式被$N一带一引,直向$n自己反击过来!\n"NOR,me,ob);         msg = "";         if(random(2)==1) me->add_temp("dzxy", 1); if (ob->query("qi")/2 > damage)              ob->receive_damage("qi", damage);if (ob->query("eff_qi") > damage/3)              ob->receive_wound("qi", damage/3);              p = ob->query("qi")*100/ob->query("max_qi");              msg += "( $n"+eff_status_msg(p)+" )\n";              j = -(damage*2+skill);              }        }else{                  msg = parry_msg[random(sizeof(parry_msg))];             if(neili >= random(neili1)+damage){              msg += HIR"\n果基本上卸掉了$n的力道。\n"NOR;                            j = -(damage+skill);              }           else{              j = damage/2+random(damage/2);               if(j<damage/2) msg += HIC"\n结果卸掉了一些$n的力道。\n"NOR;              else msg += HIB"\n结果卸掉了$n一半的力道。\n"NOR;              j = -j;              }           }                      message_vision(msg, me, ob);           return j;               }void bishen (object me, object ob){	int damage, p,ran;	object weapon;	string msg, menpai;if (!me) return;if (!ob) return;if (!living(ob))return;if (me->query("neili") <500) return;if (me->query("jing") <100) return;	damage = (int)me->query_skill("douzhuan-xingyi", 1);	damage += damage + random (damage);	menpai = ob->query("family/family_name");	weapon = me->query_temp("weapon");ran=random(24)+1;	msg = HIW"\n以彼之道,还施彼身。突然之间,$N使出一招绝技。\n\n"NOR;	switch ( ran ) {	case 1 :		if ( objectp( me->query_temp("weapon")) ) {			msg += BLU"\n突然$N大喝一声:「雷动九天」,面色唰的变得通红,须发皆飞,真气溶入" + weapon->name() + BLU"当中,“嗡”的一声,发出"HIW"闪闪光亮"BLU"!\n" NOR;			me->add("neili", -10);			me->add("jing", -10);if (ob->query("qi")/2 > damage/2)			ob->receive_damage("qi", damage/2);			p = (int)ob->query("qi")*100/(int)ob->query("max_qi");			msg += "( $n"+eff_status_msg(p)+" )\n";		}		else {			msg += "$N忽然跃起,左脚一勾一弹,霎时之间踢出一招「"HIY"如"NOR"」字诀的穿心腿,直袭$n前胸!\n";			me->add("neili", -10);			me->add("jing", -10);if (ob->query("qi")/2 > damage/3)			ob->receive_damage("qi", damage/3);			p = (int)ob->query("qi")*100/(int)ob->query("max_qi");			msg += "( $n"+eff_status_msg(p)+" )\n";			msg += "\n紧接着$N左腿勾回,将腰身一扭,那右腿的一招「"HIY"影"NOR"」字诀便紧随而至,飞向$n!\n";			me->add("neili", -10);			me->add("jing", -10);if (ob->query("qi")/2 > damage/3)			ob->receive_damage("qi", damage/3);			ob->receive_wound("qi", damage/3);			p = (int)ob->query("qi")*100/(int)ob->query("max_qi");			msg += "( $n"+eff_status_msg(p)+" )\n";			msg += "\n只见$N右脚劲力未消,便凌空一转,左腿顺势扫出一招「"HIY"随"NOR"」字诀,如影而至!\n";			me->add("neili", -10);			me->add("jing", -10);if (ob->query("qi")/2 > damage/3)			ob->receive_damage("qi", damage/3);			ob->receive_wound("qi", damage/2);			p = (int)ob->query("qi")*100/(int)ob->query("max_qi");			msg += "( $n"+eff_status_msg(p)+" )\n";			msg += "\n半空中$N脚未后撤,已经运起「"HIY"形"NOR"」字诀,内劲直透脚尖,在$n胸腹处连点了数十下!\n";			me->add("neili", -10);			me->add("jing", -10);if (ob->query("qi")/2 > damage/3)			ob->receive_damage("qi", damage/3);			p = (int)ob->query("qi")*100/(int)ob->query("max_qi");						msg += "( $n"+eff_status_msg(p)+" )\n";		}	break;	case 2 :		if ( objectp( me->query_temp("weapon")) )			msg += HIW "\n$N飘身而起,使出峨嵋绝技「灭剑」心法,顿时剑意空灵飘逸,似万千柳絮飞舞,又如和风阵阵拂过。$n惊骇之下,顿时出招散乱,无从招架!\n\n" NOR;		else			msg += MAG "\n只见$N面显庄严,一式「"HIY"佛光普照"MAG"」,提一口真气,飘身而上,半空中手掌交错,一股内劲狭带着热浪,如风如火,似雷似电,这一招拍出,击向$n,招式平平淡淡,一成不变,但却挡无可挡,避无可避!\n"NOR;		me->add("neili", -10);		me->add("jing", -10);if (ob->query("qi")/2 > damage/5)		ob->receive_wound("qi", damage/5);		ob->receive_wound("qi", damage/3);		p = (int)ob->query("qi")*100/(int)ob->query("max_qi");		msg += "( $n"+eff_status_msg(p)+" )\n";	break;	case 3 :		if ( objectp( me->query_temp("weapon")) ) 			msg += BLU"\n $N长笑一声,剑交左手,蹂身而上,施展「风雷四击」绝技,试图快速击伤$n \n"NOR;		else			msg += YEL "\n$N凝气于指,一式「阳关三叠」点出,但听得嗤嗤声响,一股纯阳的内力直袭$n胸口!\n" NOR;		me->add("neili", -10);		me->add("jing", -10);if (ob->query("qi")/2 > damage/4)		ob->receive_wound("qi", damage/4);		ob->start_busy(1);		p = (int)ob->query("qi")*100/(int)ob->query("max_qi");		msg += "( $n"+eff_status_msg(p)+" )\n";	break;	case 4 :		if ( objectp( me->query_temp("weapon")) ) {			msg += CYN"\n$N使出太极剑法"RED"「缠」"CYN"字诀,一柄"+weapon->name()+CYN"在画着一个个圆圈,每一招均是以弧形刺出,弧形收回。神在剑先,绵绵不绝,便如撒出了一张大网,逐步向$n收紧!\n\n"NOR;			msg += HIY"结果太极剑意散发出的细丝越积越多,似是积成了一团团丝棉,将$n紧紧裹了起来!\n"NOR;if (!ob->is_busy() && random(2)==0)			ob->start_busy(6);		}		else {			msg += CYN"太极之意连绵不断,有如自去行空,一个圆圈未完,第二个圆圈已生,喀喇一响,$p一处骨头被绞断!\n"NOR;			me->add("neili", -10);			me->add("jing", -10);if (ob->query("qi")/2 > damage/3)			ob->receive_wound("qi", damage/3);			p = (int)ob->query("qi")*100/(int)ob->query("max_qi");			msg += "( $n"+eff_status_msg(p)+" )\n";		}	break;	case 5 :		if ( objectp( me->query_temp("weapon")) ) {			if ( me->query("gender") == "男性")				msg += HIC"长啸一声,使出平生绝技,连环三击,正是华山剑宗绝学“"HIY"夺命连环三仙剑"HIC"”!\n"NOR;			else 				msg += HIC"$N突然使出华山绝技,一式“无双无对,宁式一剑”,只见$N挺剑直出,剑式如虹,嗤嗤之声大作,凌厉绝伦,剑力已将$n全身笼罩。\n"NOR;			msg += "$n怎么也想不到$N能使出自己的成名绝技,一时间不知所措。\n"NOR;if (!ob->is_busy()&& random(2)==0)			ob->start_busy(5);		}		else {			msg += MAG"$N使出劈石破玉拳的绝学雷动九天,顿时天空电闪雷鸣!\n"NOR;			me->add("neili", -10);			me->add("jing", -10);if (ob->query("qi")/2 > damage/3)			ob->receive_wound("qi", damage/3);			p = (int)ob->query("qi")*100/(int)ob->query("max_qi");			msg += "( $n"+eff_status_msg(p)+" )\n";		}	break;	case 6 :		if ( objectp( me->query_temp("weapon")) ) {			msg += CYN "$N抽出一只玉箫凑到嘴边,吹得两下,从箫筒里突然射出一道青光,直扑$n。\n";			msg += "$n躲闪不及,正中前胸!\n";		}		else			msg += GRN "$N一声清啸,拳脚齐施,使出桃花「狂风绝技」迅捷无伦地攻向$n!\n"NOR;		me->add("neili", -10);		me->add("jing", -10);if (ob->query("qi")/2 > damage/3)		ob->receive_wound("qi", damage/3);				p = (int)ob->query("qi")*100/(int)ob->query("max_qi");		msg += "( $n"+eff_status_msg(p)+" )\n";	break;				case 7 :		if ( objectp( me->query_temp("weapon")) ) {

⌨️ 快捷键说明

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