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

📄 diezhang.c

📁 C实现的MUD,对大家基本入门网络游戏很有帮助!
💻 C
字号:
//diezhang.c 叠掌 
//csy 1999.05.29
#include <ansi.h>

inherit F_DBASE;
inherit F_SSERVER;

void check_fight(object me, object target, object victim, int amount);
int remove_effect(object me, object target, int amount);

int perform(object me, object target)
{
        int skill, skill1, skill2;
        object victim = offensive_target(me);

        if( !target )
                return notify_fail("你想与谁进行叠掌?\n");
        if( target->query("id") == me->query("id") )
                return notify_fail("你想与自己进行叠掌?\n");
        if( !victim || victim->query("id") == target->query("id") )
                return notify_fail("不能与你的对手进行叠掌。\n");

        if( !victim->is_character() || !me->is_fighting(victim) )
                return notify_fail("只能对你正在战斗中的对手使用叠掌。\n");
        if( !target->is_fighting(victim) )
                return notify_fail("你的同伴不在与对手战斗中。\n");
        if( target->query_skill_mapped("unarmed") != "kongming-quan" )
                return notify_fail("你的同伴没有在使用空明拳。\n");
        if( (int)target->query_temp("diezhang") )
                return notify_fail("你的同伴已经在使用叠掌了。\n");
        if( (int)me->query_temp("diezhang") )
                return notify_fail("你已经在使用叠掌了。\n");
        if((int)me->query("neili") < 100 )
                return notify_fail("你的内力不够!\n");
        if((int)me->query("qi") < 80 )
                return notify_fail("你的气血不足,没法子施用外功!\n");
        if((int)target->query("neili") < 100 )
                return notify_fail("你的同伴内力不够!\n");
        if((int)target->query("qi") < 80 )
                return notify_fail("你的同伴气血不足,没法子施用外功!\n");

        if( !(int)target->query_temp("diezhang_request") ) {
                me->set_temp("diezhang_request", 1);
                tell_object(target, me->query("name")+"向你发出叠掌请求。\n");
                return 1;
        }
        target->delete_temp("diezhang_request");

        me->add("neili", -50);
        target->add("neili", -50);
        me->receive_damage("qi", 100);
        target->receive_damage("qi", 100);

        skill1 = me->query_skill("kongming-quan");
        skill2 = target->query_skill("kongming-quan");
        skill = (skill1 + skill2)/8;
message_vision(HIY"$N与$n双掌一拍,攻击顿时变得十分犀利,防守也老到了许多。\n"NOR, me, target);
        me->add_temp("apply/attack", skill);
        me->add_temp("apply/dodge",  skill);
        me->set_temp("diezhang", 1);
        target->add_temp("apply/attack", skill);
        target->add_temp("apply/dodge",  skill);
        target->set_temp("diezhang", 1);

        me->start_call_out( (: call_other, __FILE__, "check_fight", me, target, victim, skill:), 1);
        return 1;
}

void check_fight(object me, object target, object victim, int amount)
{
//        object weapon;

        if( !living(victim) || !present(victim->query("id"), environment(me)) ) 
                remove_effect(me, target, amount);

        else if( (!present(victim->query("id"), environment(me)) 
                  && target->is_fighting(victim))
                || (!present(target->query("id"), environment(me)) 
                    && me->is_fighting(victim)) ) 
                remove_effect(me, target, amount);

        else if( !present(target->query("id"), environment(me))
                || !target->is_fighting() || !me->is_fighting() 
                || !living(target) )
                remove_effect(me, target, amount);

        else if( target->query_skill_mapped("unarmed") != "kongming-quan" )
                remove_effect(me, target, amount);

        else if( me->query_skill_mapped("unarmed") != "kongming-quan" )
                remove_effect(me, target, amount);

        else call_out("check_fight", 1, me, target, victim, amount);
}

int remove_effect(object me, object target, int amount)
{
        me->add_temp("apply/attack", -amount);
        me->add_temp("apply/dodge", -amount);
        target->add_temp("apply/attack", -amount);
        target->add_temp("apply/dodge", -amount);
        me->delete_temp("diezhang");
        target->delete_temp("diezhang");
        message_vision(GRN"$N和$n的叠掌不再发挥功效,周围的人也都松了一口气。\n"NOR, me, target);
        return 0;
}

on(GRN"$N和$n的叠掌不再发挥功效,周围的人也都松了一口气。\n"NOR, me, target);
        return 0;
}

⌨️ 快捷键说明

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