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

📄 hama.c

📁 C实现的MUD,对大家基本入门网络游戏很有帮助!
💻 C
字号:
// hama.c 蛤蟆功#include <ansi.h>#include <combat.h>inherit F_SSERVER;#include "/kungfu/skill/eff_msg.h";int perform(object me, object target){        int damage, p; int extra;        string msg, dodge_skill;        if( !target ) target = offensive_target(me);                if( !target || !target->is_character()           || !me->is_fighting(target) || !living(target) )                return notify_fail("蛤蟆功绝招只能对战斗中的对手使用。\n");        if( (int)me->query_skill("hamashengong", 1) < 150 )                return notify_fail("你的蛤蟆神功还不够熟练,不能使用蛤蟆绝招对敌!\n");        if( me->query_temp("weapon") )                return notify_fail("你必须空手才能使用「蛤蟆功」!\n");        if ( me->query_skill_mapped("strike") != "hamashengong")                return notify_fail("你必须先将蛤蟆功运用于掌法之中才行。\n");	if ((int)me->query_skill("hamagong", 1) < 100)		return notify_fail("你的蛤蟆功内功火候不够。\n");        if( (int)me->query("neili") < 2000 )                return notify_fail("你现在内力不足,使不出蛤蟆功的绝招!\n");             if( (int)me->query("neili") < 400 )                return notify_fail("你现在内力不足,使不出蛤蟆功的绝招!\n");             if( (int)me->query_skill("strike", 1) < 100 )                return notify_fail("你的掌法不够娴熟,使不出蛤蟆功的绝招!\n");        if( me->query_temp("hmg_hama") )                return notify_fail("你刚使完「蛤蟆功」绝招,目前气血翻涌,无法再次运用!\n");	extra = me->query_skill("hamagong",1) / 10;	extra += me->query_skill("hamashengong",1) /10;            if( (int)me->query_skill("hamashengong", 1) > 200 )    {        me->add_temp("apply/attack", extra*2);        me->add_temp("apply/damage", extra*4);        msg = HIC "左一推掌!" NOR;        COMBAT_D->do_attack(me,target, me->query_temp("weapon"),TYPE_REGULAR,msg);        msg = HIY "右一推掌" NOR;        COMBAT_D->do_attack(me,target, me->query_temp("weapon"),TYPE_REGULAR,msg);        msg =  HIW "上一推掌" NOR;      	COMBAT_D->do_attack(me,target, me->query_temp("weapon"),TYPE_REGULAR,msg);        msg = CYN "下一推掌" NOR;        COMBAT_D->do_attack(me,target, me->query_temp("weapon"),TYPE_REGULAR,msg);me->add("neili",-150);        me->add_temp("apply/attack", -extra*2);        me->add_temp("apply/damage", -extra*4);}if ((int)me->query_skill("hamashengong", 1) > 250 &&  random(me->query("combat_exp")) > (int)target->query("combat_exp")/3 ){	 msg = RED "蛇毒" NOR;          COMBAT_D->do_attack(me,target, me->query_temp("weapon"),TYPE_REGULAR,msg);	target->apply_condition("snake_poison",10);	 msg = RED "蟾蜍毒" NOR;          COMBAT_D->do_attack(me,target, me->query_temp("weapon"),TYPE_REGULAR,msg);	target->apply_condition("chanchu_poison",10);	 msg = RED "七修蛇毒" NOR;          COMBAT_D->do_attack(me,target, me->query_temp("weapon"),TYPE_REGULAR,msg);	target->apply_condition("qx_snake_poison",20);me->add("neili",-50);}        msg = BLU "\n$N身子蹲下,左掌平推而出,使的正是$N生平最得意的「蛤蟆功」绝招,掌风直逼$n而去!\n"NOR;                                if (random(me->query_skill("force")) > target->query_skill("force") /3         || random(me->query("combat_exp")) > target->query("combat_exp")/2){                                     me->start_busy(1);                target->start_busy(1);                 me->add("neili", -200);                me->add("jing", -10);                damage = (int)me->query_skill("hamashengong", 1);                                damage = damage*2 + random(damage);                if(me->query("neili") > target->query("neili")*2 ) damage += random(damage);                target->receive_damage("qi", damage);                target->receive_wound("qi", damage/2);                p = (int)target->query("qi")*100/(int)target->query("max_qi");                msg += damage_msg(damage, "内伤");                msg += "( $n"+eff_status_msg(p)+" )\n";                call_out("perform2", 0, me, target, p);                    }         else {                me->start_busy(2);                target->start_busy(1);                me->add("neili", -100);                tell_object(target, HIY"你但觉一股微风扑面而来,风势虽然不劲,然已逼得自己呼吸不畅,知道不妙,连忙跃开数尺。\n" NOR);                dodge_skill = target->query_skill_mapped("dodge");	        if( !dodge_skill ) dodge_skill = "dodge";	        msg += SKILL_D(dodge_skill)->query_dodge_msg(target, 1);        }        message_vision(msg, me, target);         return 1;}int perform2(object me, object target, int p){        int damage;        string msg, dodge_skill;        if (!me){        me->delete_temp("hmg_hama"); return notify_fail("你已经断线了。\n");}        if (!target){        me->delete_temp("hmg_hama");         return notify_fail("敌人已经不在了。\n");}        if(!living(target)) {        me->delete_temp("hmg_hama");          return notify_fail("对手已经不能再战斗了。\n");}        if( (int)me->query("neili", 1) < 500 ){        me->delete_temp("hmg_hama");                return notify_fail("你待要再发一掌,却发现自己的内力不够了!\n");     }        msg = BLU "\n$N左掌劲力未消,右掌也跟着推出,功力相叠,「蛤蟆功」掌风排山倒海般涌向$n!\n"NOR;                if (random(me->query_skill("force")) > target->query_skill("force") / 3 &&            me->query_skill("hamagong", 1) > 199 ){                                me->start_busy(1);                target->start_busy(1);                me->add("neili", -200);                me->add("jing", -20);                                damage = (int)me->query_skill("hamashengong", 1);                                damage = damage*3 + random(damage)*2;                if(me->query("neili") > target->query("neili")*2 ) damage += random(damage);                target->receive_damage("qi", damage);                target->receive_wound("qi", damage/2);                p = (int)target->query("qi")*100/(int)target->query("eff_qi");                msg += damage_msg(damage, "内伤");                msg += "( $n"+eff_status_msg(p)+" )\n";                                call_out("perform3", 0, me, target, p);          }         else         {                me->start_busy(2);                me->add("neili", -200);                tell_object(target, HIY"你喘息未定,又觉一股劲风扑面而来,连忙跃开数尺,狼狈地避开。\n" NOR);                dodge_skill = target->query_skill_mapped("dodge");	        if( !dodge_skill ) dodge_skill = "dodge";	        msg += SKILL_D(dodge_skill)->query_dodge_msg(target, 1);        }        message_vision(msg, me, target);         return 1;}int perform3(object me, object target, int p){        int damage;        string msg, dodge_skill;          if (!me){        me->delete_temp("hmg_hama"); return notify_fail("你已经断线了。\n");}        if (!target){        me->delete_temp("hmg_hama");         return notify_fail("敌人已经不在了。\n");}        if(!living(target)){        me->delete_temp("hmg_hama");              return notify_fail("对手已经不能再战斗了。\n");}        if( (int)me->query("neili", 1) < 700 ){        me->delete_temp("hmg_hama");                return notify_fail("你待要再发一掌,却发现自己的内力不够了!\n");     }        msg = BLU "\n$N双腿一登,双掌相并向前猛力推出,$n连同身前方圆三丈全在「蛤蟆功」劲力笼罩之下!\n"NOR;                if (random(me->query_skill("force")) > target->query_skill("force") / 3 &&            me->query_skill("hamashengong", 1) > 249 )        {                me->start_busy(2);                target->start_busy(random(3));                me->add("neili", -300);                me->add("jing", -30);                                damage = (int)me->query_skill("hamashengong", 1);                                damage = damage*5 + random(damage)*2;                if(me->query("neili") > target->query("neili")*2 ) damage += random(damage);                target->receive_damage("qi", damage);                target->receive_wound("qi", damage/2);                p = (int)target->query("qi")*100/(int)target->query("eff_qi");                msg += damage_msg(damage, "瘀伤");                msg += "( $n"+eff_status_msg(p)+" )\n";             } else         {                me->start_busy(4);                target->start_busy(1);                me->add("neili", -300);                target->add("jing", -100);                tell_object(target, HIY"你用尽全身力量向右一纵一滚,摇摇欲倒地站了起来,但总算躲开了这致命的一击!\n" NOR);                dodge_skill = target->query_skill_mapped("dodge");	        if( !dodge_skill ) dodge_skill = "dodge";	        msg += SKILL_D(dodge_skill)->query_dodge_msg(target, 1);        }        message_vision(msg, me, target);         return 1;}

⌨️ 快捷键说明

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