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

📄 jm.c

📁 C实现的MUD,对大家基本入门网络游戏很有帮助!
💻 C
字号:
// jianmang.c #include <ansi.h>inherit F_DBASE;inherit F_SSERVER;                                        void check_fight(object me, object target, int improve);private int remove_effect(object me, int improve);string *name1 = ({ "玉堂穴", "大横穴", "幽门穴", "章门穴", "晴明穴", "紫宫穴",                   "风池穴", "太阳穴", "会阴穴", "长强穴", "灵台穴" });int perform(object me){               string msg, name, name2;        int damage;        object target;        object weapon = me->query_temp("weapon");        if( !target ) target = offensive_target(me);        if( me->is_busy())                return notify_fail("你现在正忙着呢。\n");         if( !me->is_fighting() )                return notify_fail("「剑芒」只能在战斗中使用。\n");        if( !target || !target->is_character() ||!me->is_fighting(target) )                return notify_fail("「剑芒」只能在战斗中对对手使用。\n");        if( target->query("qi") <= 50 && me->is_fighting(target) )                return notify_fail("你现在没有必要用「剑芒」攻击敌人了。\n");        if (!weapon || weapon->query("skill_type") != "sword"        || me->query_skill_mapped("sword") != "huashan-sword")             return notify_fail("你现在无法使用「剑芒」攻击敌人。\n");        if(  me->query_temp("perform")         ||   me->query_temp("perform2")        ||   me->query_temp("perform3") )             return notify_fail("你现在正用着「剑芒」呢。\n");        if( (int)me->query_skill("huashan-sword", 1) < 90 ||            (int)me->query_skill("sword", 1) < 90 ||            (int)me->query_str() < 25   ||            (int)me->query_dex() < 25)                  return notify_fail("你有的功夫还不够娴熟,不会使用「剑芒」。\n");         if((int)me->query_skill("zixia-shengong", 1) < 80)            return notify_fail("你的紫霞功修为不够,无法领悟「剑芒」的精髓。\n");        if( (int)me->query("max_neili") < 500 )                return notify_fail("你的内力太弱,无法使用出「剑芒」!\n");                if( (int)me->query("neili") < 200 )                return notify_fail("你的真气不够!\n");                        name = name1[random(sizeof(name1))];            name2 = weapon->query("name");        msg =  HIC"\n$N右手剑锋一转,手中"+name2+"直斗,顿时使$N被一片剑辉所笼罩,其中一支剑芒奔向$n的"+name+"。\n" NOR;                if (random(me->query_skill("dodge")) > target->query_skill("dodge") / 3)        {                                msg += HIR "结果一剑刺中,$n只觉得全身气脉通道阻塞,真气立受干挠!\n"NOR;                   target->start_busy(2);                me->add("neili", -200);                me->set_temp("perform", 1);                if( (int)me->query_skill("huashan-sword", 1) > 110                &&  (int)me->query("neili") > 300                  &&  me->is_fighting(target)                 &&  me->query_skill_mapped("sword") == "huashan-sword"                &&  (string)weapon->query("skill_type") == "sword" )                 {                        call_out("perform2", 0, me);                    }                else                 {                        me->delete_temp("perform");                }        }         else         {                me->start_busy(2);                me->add("neili", -100);                me->delete_temp("perform");                target->add("neili", -50);                target->start_busy(1);                msg += HIY"\n$p大叫一声不好,全身用力一纵,顺势跳了开去。\n" NOR;        }        message_vision(msg, me, target);        return 1;}                                                          int perform2(object me){        string msg, name, name2;        int damage;           object target;        object weapon = me->query_temp("weapon");if (!me)  return notify_fail("你已经不在了。\n");        if (!weapon){      me->delete_temp("perform");                                                          me->delete_temp("perform2");                                                          me->delete_temp("perform3");                                                     return notify_fail("你没有武器。\n");}        name2 = weapon->query("name");                if( !target ) target = offensive_target(me);           name = name1[random(sizeof(name1))];        if (!target){      me->delete_temp("perform");                                                          me->delete_temp("perform2");                                                          me->delete_temp("perform3");                                                     return notify_fail("敌人已经不在了。\n");}               msg = MAG"\n接着$N踏前一步,"+name2+"发出的第二支剑芒隔空点向$n的"+name+",认穴竟无厘毫之差!\n"NOR;                        if (me->query("combat_exp")> target->query("combat_exp")/3 )        {                me->start_busy(1);                target->start_busy(1);                me->delete_temp("perform");                damage = (int)me->query_skill("huashan-sword", 1);                damage = (int)me->query_skill("sword", 1) +damage;                damage = (int)me->query_skill("zixia-shengong", 1) +damage;                damage = damage + random(damage/2);                                target->receive_damage("qi", damage);                target->receive_wound("qi", damage/3);                me->add("neili", -300);                me->set_temp("perform2", 1);                if( damage < 300 ) msg += HIY"结果「噗」地一声刺入了$n"+name+"寸许!\n"NOR;                else if( damage < 400 ) msg += HIY"结果「噗」地一声刺进$n的"+name+",使$p不由自主地退了几步!\n"NOR;                else if( damage < 500 ) msg += HIY"结果「噗嗤」地一声,"+name2+"已在$n"+name+"刺出一个血肉模糊的血窟窿!\n"NOR;                else msg += HIR"结果只听见$n一声惨嚎,"+name2+"已在$p的"+name+"对穿而出,鲜血溅得满地!!\n"NOR;                if(  (int)me->query_skill("huashan-sword", 1) > 135                && (int)me->query("neili", 1) > 300                &&  me->is_fighting(target)                 &&  me->query_skill_mapped("sword") == "huashan-sword"                &&  (string)weapon->query("skill_type") == "sword")                                {                        call_out("perform3", 0, me);                                                  }                else                 {                        me->delete_temp("perform");                         me->delete_temp("perform2");                }        }         else         {       me->start_busy(2);                me->add("neili", -150);                                me->delete_temp("perform");                me->delete_temp("perform2");                                          target->start_busy(1);                msg += HIY"可是$p一个巧云翻身,远远的躲了开去。\n"NOR;        }        message_vision(msg, me, target);        return 1;}                                                       int perform3(object me){        int skill;        string msg, name, name2;        object weapon = me->query_temp("weapon");        object target;if (!me)  return notify_fail("你已经不在了。\n");        if (!weapon){      me->delete_temp("perform");                                                          me->delete_temp("perform2");                                                          me->delete_temp("perform3");                                                     return notify_fail("你没有武器。\n");}        name2 = weapon->query("name");        skill = (int)me->query_skill("huashan-sword", 1);                        skill = skill/10;        if( !target ) target = offensive_target(me);        name = name1[random(sizeof(name1))];        if (!target){      me->delete_temp("perform");                                                          me->delete_temp("perform2");                                                          me->delete_temp("perform3");                                                     return notify_fail("敌人已经不在了。\n");}               msg = HIW "\n紧跟着$N手中"+name2+"发出第三支剑芒,只见一道光芒直奔$n,剑辉扫向$n的"+name+"!\n"NOR;                if (random(me->query_skill("force")) > target->query_skill("force") / 2)        {                                                                                       call_out("check_fight", 1, me, target);                                                 me->add("neili", -300);                me->delete_temp("perform2");                              me->set_temp("perform3");                msg += HIR "$n只觉体内奇经八脉中内息为之一怠,全身气力竟然提不起来了!\n" NOR;                me->add_temp("apply/attack", skill);                me->add_temp("apply/dodge",  skill);                me->add_temp("apply/parry",  skill);                  target->start_busy(1);                me->start_busy(3);                target->add("neili", -300);                         }        else         {                me->start_busy(2);                me->add("neili", -250);                me->delete_temp("perform2");                        target->start_busy(2);                msg += HIY"\n$p喘息未定,见$P手中发出的剑芒如狂风般点来,连忙又跃开数尺,狼狈地避开。\n" NOR;        }        message_vision(msg, me, target);        return 1;}void check_fight(object me, object target, int improve) {         object weapon;              if (!me){ return notify_fail("你已经不在了。\n");}        if (!target){      me->delete_temp("perform");                                                          me->delete_temp("perform2");                                                          me->delete_temp("perform3");                                                    remove_effect(me, improve); return notify_fail("敌人已经不在了。\n");}        if( target->query("qi") <= 50 && me->is_fighting(target) )                 {                 remove_effect(me, improve);                 tell_object(me, HIY"对方已经渐渐适应了你的套路,攻守自如多了。\n"NOR);                        }                 else if (!present(target->query("id"), environment(me))         &&  me->is_fighting(target) )         {                 remove_effect(me, improve);                tell_object(me, HIY"对方已经渐渐适应了你的套路,攻守自如多了。\n"NOR);                        }                                                                else if( !living(target) || !present(target->query("id"),environment(me)) )         {                 remove_effect(me, improve);                                                           tell_object(me, HIY"对方已经渐渐适应了你的套路,攻守自如多了。\n"NOR);        }                 else if( !me->is_fighting() || !living(me) || me->is_ghost() )         {                 remove_effect(me, improve);                                                                           tell_object(target, HIY"你已经渐渐适应了对方的套路,攻守自如多了。\n"NOR);                                  }                 else if( !objectp(weapon = me->query_temp("weapon"))         || me->query_skill_mapped("sword") != "huashan-sword"        || (string)weapon->query("skill_type") != "sword" )         {                 remove_effect(me, improve);                             tell_object(target, HIY"你已经渐渐适应了对方的套路,攻守自如多了。\n"NOR);                                tell_object(me, HIY"对方已经渐渐适应了你的套路,攻守自如多了。\n"NOR);        }         else call_out("check_fight", 1, me, target, improve);          }private int remove_effect(object me, int skill){           skill = (int)me->query_skill("huashan-sword", 1)/10;                      me->add_temp("apply/attack", -skill);      me->add_temp("apply/dodge",  -skill);      me->add_temp("apply/parry",  -skill);        me->delete_temp("perform3");                                                          tell_object(me, HIY"对方已经渐渐适应了你的套路,攻守自如多了。\n"NOR);            return 0;}

⌨️ 快捷键说明

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