spattack.c

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

C
246
字号
// spattack.c#include <ansi.h>inherit F_CLEAN_UP;mapping weapon_name = ([        "sword" : "剑",        "blade" : "刀",        "staff" : "杖",        "whip"  : "鞭",        "club"  : "棍",]);void do_remote_fight(object me, object couple, object target, int n);void do_here_fight(object me, object couple, object target, int n);int main(object me, string arg){        int same_place;        string couple_id;        string couple_name;        object couple;        object target;        if (environment(me)->query("no_fight"))                return notify_fail("这里不能战斗。\n");        if (! arg)        {                me->clean_up_enemy();                target = me->select_opponent();        } else                target = present(arg, environment(me));        if (! target || ! me->is_fighting(target))                return notify_fail("会心一击只能对战斗中的对手使用。\n");        if (! stringp(couple_id = me->query("couple/couple_id")))                return notify_fail("你还没有伴侣,使什么会心一击?\n");        couple_name = me->query("couple/couple_name");        if (! objectp(couple = find_player(couple_id)))                return notify_fail(couple_name + "不在这个世界上,无法给与你力量。\n");        if (couple->is_ghost())                return notify_fail(couple_name + "现在是鬼魂一个,无"                                   "法穿越灵界给与你力量。\n");        if (! living(couple))                return notify_fail("你的心灵现在无法和" + couple_name + "沟通。\n");        if (target == couple)                return notify_fail("你有病啊!\n");        same_place = (environment(couple) == environment(me));        if (! same_place)                do_remote_fight(me, couple, target, me->query("sex/" + couple->name(1)));        else                do_here_fight(me, couple, target, me->query("sex/" + couple->name(1)));        return 1;}void do_remote_fight(object me, object couple, object target, int n){        object weapon;        string chinese_type;        int need, cost;        int enhance, count;        string msg;        if (n > 500) n = 500;        need = 300 - n / 2;        cost = 300 - n / 3;        if (me->query("neili") < need)        {                write("你试图和你的伴侣进行心灵上的沟通,但是"                      "一时觉得内力不济,难以联系。\n");                return;        }        if (couple->query("neili") < need)        {                write("你隐隐约约的感觉到你伴侣"                      "的灵力,但是非常微弱,很难捕捉到。\n");                return;        }	if (me->is_busy())        {		write("( 你上一个动作还没有完成,不能施展会心一击。)\n");                return;        }        if (random(2))                tell_object(me, HIM "你心中默默的念着" + couple->name(1) +                            HIM "的名字,隐隐感到那若即若离的"                            "灵觉,穿透了无尽的虚空,和你心心相连。\n\n" NOR);        else                tell_object(me, HIM "穿过了缥缈的虚空,你仿佛看到" + couple->name(1) +                            HIM ",给予你无上的鼓舞和无尽的力量。\n\n" NOR);        if (random(2))                tell_object(couple, HIM "你似乎感觉到" + me->name(1) +                            HIM "在你心灵深处呼唤你的名字,两人之"                            "间有如心有灵犀,你默默的为" +                            gender_pronoun(me->query("gender")) +                            "祝福:去吧,我的爱人!\n" NOR);        else                tell_object(couple, HIM "冥冥你感到了" + me->name(1) +                            HIM "对你的呼唤,这一刹那,你们在心灵上"                            "全然相通,让你把无形的力量注入给对方,鼓舞着" +                            gender_pronoun(me->query("gender")) + "。\n" NOR);        me->add("neili", -cost);        couple->add("neili", -cost);        weapon = me->query_temp("weapon");        if (weapon && (chinese_type = weapon_name[weapon->query("skill_type")]))        {                if (me->query("gender") == "女性")                        msg = HIG "$N" HIG "弹" + chinese_type +                              "轻吟,宛若黄莺出谷,飘身而进,手中的" +                              weapon->name() + HIG "化作流星夜雨,披向$n"                              HIG "。\n" NOR;                else                        msg = HIC "$N持" + chinese_type + "而进,竟然视$n" HIC "有若无物,手中" +                              weapon->name() + HIC "挥洒自如,荡起层层" +                              chinese_type + "影,将$p" HIC "困在当中。\n" NOR;        } else        {                if (me->query("gender") == "女性")                        msg = HIG "$N" HIG "轻声浅笑,飘然而进,身法惊艳"                              "绝伦,有若九天玄女踏足红尘,举手投足之间没有任何破绽。\n" NOR;                else                        msg = HIC "$N" HIC "纵声长啸,一股杀气凛然而起,天"                              "地登时色变,$N" HIC "挟风雷万钧之势,压向$n"                              HIC "。\n" NOR;        }        message_combatd(msg, me, target);        enhance = ((int)couple->query_skill("force") + n / 10) / 5;        count = 1 + random(3 + n / 100);        if (count > 3)                count = 3;        me->add_temp("apply/attack", enhance);        me->add_temp("apply/damage", enhance);        while (count--)        {                if (! me->is_fighting(target))                        break;                COMBAT_D->do_attack(me, target, me->query_temp("weapon"), 0);                COMBAT_D->do_attack(me, target, me->query_temp("weapon"), 0);        }        me->add_temp("apply/attack", -enhance);        me->add_temp("apply/damage", -enhance);        me->start_busy(2);        return;}void do_here_fight(object me, object couple, object target, int n){        int need, cost;        int enhance1, enhance2, count;        string msg;        if (n > 500) n = 500;        need = 300 - n / 2;        cost = 300 - n / 3;	if (me->is_busy())        {		write("( 你上一个动作还没有完成,不能施展会心一击。)\n");                return;        }        if (couple->is_busy())        {                write("你的伴侣现在正忙,无法配合你进行会心一击。\n");                return;        }        if (! couple->is_fighting(target))                couple->fight_ob(target);        message_combatd(HIY "$N" HIY "和$n" HIY "两人眼神一交,心意已"                        "然相通,不由的会心一笑,只见二人身形一错,霎时\n"                        "已经向" + target->name() + "攻出数招!\n" NOR,                        me, couple);        enhance1 = ((int)couple->query_skill("force") + n / 10) / 5;        enhance2 = ((int)me->query_skill("force") + n / 10) / 5;        count = 2 + random(5 + n / 50);        if (count > 6)                count = 6;        me->add_temp("apply/attack", enhance1);        couple->add_temp("apply/attack", enhance2);        me->add_temp("apply/damage", enhance1);        couple->add_temp("apply/damage", enhance2);        while (count--)        {                if (me->is_fighting(target) && (count % 2) == 0){                        COMBAT_D->do_attack(me, target, me->query_temp("weapon"), 0);                        COMBAT_D->do_attack(me, target, me->query_temp("weapon"), 0);}                else                if (couple->is_fighting(target)){                        COMBAT_D->do_attack(couple, target, couple->query_temp("weapon"), 0);                        COMBAT_D->do_attack(couple, target, couple->query_temp("weapon"), 0);}                else                        break;        }        me->start_busy(2);        couple->start_busy(2);        me->add_temp("apply/attack", -enhance1);        couple->add_temp("apply/attack", -enhance2);        me->add_temp("apply/damage", -enhance1);        couple->add_temp("apply/damage", -enhance2);        return;}int help (object me){        write(@HELP指令格式:spattack [<施用对象>]如果你结婚了,就可以使用会心一击,联手打击对你正在攻击的对手,即使你的伴侣不在你的身边,也可以运用灵力穿过遥远的时空给与你支持,当然这需要耗费内力,两个人灵肉结合的次数越多,耗费的内力就越少。如果你的伴侣就在你的身边,则可以一起施展招数攻击对手,不需要耗费内力,招数的威力与两的人灵肉结合的次数于伴侣的内功等级相关。HELP );        return 1;}

⌨️ 快捷键说明

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