po.c

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

C
155
字号
#include <ansi.h>#include <combat.h>#include "/kungfu/skill/eff_msg.h";inherit F_SSERVER;#define PO "「" HIC "乘风破浪" NOR "」"int perform(object me){        object *obs;        string msg;        int damage;        int ap, dp;        int flag;        int i;        int p;        me->clean_up_enemy();        if (! me->is_fighting())                return notify_fail(PO "只能对战斗中的对手使用。\n");        if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))                return notify_fail(PO "只能空手施展。\n");                        if (me->query("max_neili") < 8500)                return notify_fail("你的内力的修为不够,现在无法使用" PO "。\n");        if (me->query_skill("taixuan-gong", 1) < 260)                return notify_fail("你的太玄功还不够娴熟,难以施展" PO "。\n");        if (me->query_skill_mapped("force") != "taixuan-gong")                return notify_fail("你现在没有激发太玄功为内功,难以施展" PO "。\n");        if (me->query_skill_mapped("unarmed") != "taixuan-gong")                return notify_fail("你现在没有准备使用太玄功,难以施展" PO "。\n");        if ((int)me->query_skill("literate", 1)> 5 )                return notify_fail("你觉得太玄神功深奥之极,一时间难以领会。\n");        obs = me->query_enemy();        if ((int)me->query("neili") < sizeof(obs) * 220)                return notify_fail("你的真气不够,无法运用" PO "。\n");       msg = HIW "只见$N" HIW"仰望天际,心中思绪万千。忽然间,$N" HIW "一声长叹,"              "\n随即双掌不停地拍出,侠客岛石壁上的太玄图谱已一幅幅涌上心头,"              "\n霎那间四周狂风骤起,尘土飞扬,气势如虹。这正是太玄功绝招\n「"               NOR + HIC "乘风破浪" NOR + HIW "」。转眼间,$N" HIW "双掌越发"              "凌厉,已不知不觉地将四周笼罩!\n 当真令人胆战心惊。\n" NOR;        message_vision(msg, me);        me->start_busy(3);        ap = me->query_skill("force", 1) +             me->query_skill("unarmed", 1) +             me->query_skill("dodge", 1) +             me->query_skill("taixuan-gong", 1) +             me->query("con") * 10;          me->add("neili", -(sizeof(obs) * 220));        for (flag = 0, i = 0; i < sizeof(obs); i++)        {                dp = obs[i]->query_skill("force") * 2 +                     obs[i]->query_skill("unarmed", 1) +                     obs[i]->query("con") * 10;                if (ap * 2 / 3 + random(ap) > dp)                {                        switch (random(2))                        {                        case 0:                                tell_object(obs[i], HIR "你只觉眼前风沙飞扬,周围风声萧萧,"                                                    "一股内劲已经穿体而过。\n" NOR);                                break;                        default:                                tell_object(obs[i], HIR "你只觉眼前风沙飞扬,周围风沙狂舞,"                                                    "猛然间只觉千万股内劲已穿体而过。\n" NOR);                                break;                        }                        damage = ap / 3 + random(ap / 2);                        obs[i]->receive_damage("qi", damage, me);                        obs[i]->receive_wound("qi", damage * 2 / 3 , me);                        if (userp(obs[i]))                        obs[i]->receive_damage("jing", damage / 4, me);                        if (userp(obs[i]))                        obs[i]->receive_wound("jing", damage / 6, me);	                p = (int)obs[i]->query("qi") * 100 / (int)obs[i]->query("max_qi");                        switch (random(5))                        {                        case 0:                                msg = HIR "只听" + obs[i]->name() +                                      HIR "一声惨嚎,接连退了数步,“"                                      "哇”的呕出一大口鲜血。\n" NOR;			        msg += "( " + obs[i]->name() + eff_status_msg(p) + " )\n\n";                                break;                        case 1:                                msg = HIR "只见" + obs[i]->name() +                                      HIR "向后飞出丈远,重重的跌落在"                                      "地上,衣衫破烂,再也无法站起来"                                      "。\n" NOR;			        msg += "( " + obs[i]->name() + eff_status_msg(p) + " )\n\n";                                break;                        case 2:                                msg = HIR "只见" + obs[i]->name() +                                      HIR "歪歪斜斜倒退几步,伏倒"                                      "在地,痛苦不堪。"                                      "。\n" NOR;			        msg += "( " + obs[i]->name() + eff_status_msg(p) + " )\n\n";                                break;                        case 3:                                msg = HIR "狂风卷过," + obs[i]->name() +                                      HIR "只见,飞沙狂舞,却动也动不了"                                      "忽然间,却瘫软在地。\n" NOR;			        msg += "( " + obs[i]->name() + eff_status_msg(p) + " )\n\n";                                break;                        default:                                msg = HIR + obs[i]->name() +                                      HIR "急忙飞身而起,却猛然坠地,伤痕遍体,鲜"                                      "血不止。\n" NOR;			        msg += "( " + obs[i]->name() + eff_status_msg(p) + " )\n\n";                                break;                        }                        obs[i]->start_busy(1);                        message("vision", msg, environment(me), ({ obs[i] }));                        obs[i]->add("neili", -500);                        flag = 1;                } else                {                        tell_object(obs[i], HIY "你只觉风沙狂起,顿时运力抵抗,方才挡"                                    "住这招。\n" NOR);                }                if (obs[i]->query("neili") < 0)                        obs[i]->set("neili", 0);        }        if (! flag)                 message_vision(HIY "风沙骤停,却没有任何人受伤。\n\n" NOR, me, 0, obs);        return 1;}

⌨️ 快捷键说明

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