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

📄 dagou-bang.c

📁 C实现的MUD,对大家基本入门网络游戏很有帮助!
💻 C
字号:
// dagou-bang.c 打狗棒法#include <ansi.h>;inherit SKILL;#include "/kungfu/skill/eff_msg.h";string *order = ({""HIY"", ""HIG"", ""RED"", ""MAG"", ""YEL"", ""HIC"", ""HIW"", ""HIR"",""HIB"", ""CYN"",""WHT"",""HIM"",""BLU""});string *xue_name = ({ "强间穴","风府穴","大雅穴","灵台穴","悬枢穴",}); string  *msg = ({"$N举起$w,居高临下使一招"+(order[random(13)])+"「打草惊蛇」"NOR"敲向$n的$l","$N手中$w左右晃动,一招"+(order[random(13)])+"「拨草寻蛇」"NOR"向$n的$l攻去","$N施出"+(order[random(13)])+"「拨狗朝天」"NOR",$w由下往上向$n撩去","$N使出一招"+(order[random(13)])+"「棒打双犬」"NOR",听得棒声飒然,横扫$n的$l","$N倏地伸出$w,棒头搭在$n的$l上,一招"+(order[random(13)])+"「压肩狗背」"NOR",轻轻向下按落","$N手中$w高高扬起,一招"+(order[random(13)])+"「立地劈狗」"NOR",打向$n的$l","$N手中$w横扫左右,一招"+(order[random(13)])+"「扫地赶狗」"NOR",舞起一片杖影","$N手臂一伸,反手$w向$n打出,好一招"+(order[random(13)])+"「关门打狗」"NOR"", "$N$w从旁递出,一招"+(order[random(13)])+"「恶狗拦路」"NOR",竹棒侧抖旁缠,向外斜甩","$N一招"+(order[random(13)])+"「风驰电闪」"NOR",手中$w化作两道青光砸向$n的$l",});int valid_enable(string usage) { return (usage == "staff") || (usage == "parry"); }int valid_learn(object me){    if ((int)me->query_skill("staff", 1) < 30)                return notify_fail("你的基本棒法太差, 还领会不了打狗棒法。\n");if ((int)me->query_skill("huntian-qigong",1) < 120)                return notify_fail("你的混天气功修为不够。\n");       if (((int)me->query_skill("liuhe-zhang", 1)+200) < (int)me->query_skill("dagou-bang", 1))               return notify_fail("你的六合掌法太低了。\n");       if (((int)me->query_skill("fengmo-zhang", 1)+100) < (int)me->query_skill("dagou-bang", 1))               return notify_fail("你的疯魔杖法太低了。\n");       if (((int)me->query_skill("xiaoyaoyou", 1)+300) < (int)me->query_skill("dagou-bang", 1))               return notify_fail("你的逍遥游太低了。\n");        if ((int)me->query("max_neili") < 1000)                return notify_fail("你的内力不够。\n");            if ((me->query_skill("dagou-bang",1)>20) && (me->query_skill("begging",1)<101))        if (me->query_skill("dagou-bang", 1) > me->query_skill("begging", 1)+20)        return notify_fail("打狗棒法需要相应等级的叫花绝活。\n");    return 1;}mapping query_action(object me, object weapon){        int i, level;                i=me->query_skill("begging",1);                level=me->query_skill("dagou-bang",1);        if (i>140) i=140+i/10;                if (level>140) level=140+level/10;        if ( random(10) > 6        &&      ( (int)me->query_skill("staff", 1) >= 120 )         &&      ( (int)me->query_skill("dagou-bang", 1) >= 120 )        &&      ( (int)me->query_skill("force",1) >= 120 )        &&      ( (int)me->query("neili") >= 500 )         ) {                me->add("neili", -50);                return ([                "action": HIG"$N眼中射出一道青芒,手中$w使出"RED""+(order[random(13)])+"「天下无狗」"NOR""HIG",劈天盖地般攻向$n"NOR,                "damage": 500,                "dodge":50,                "parry":80,                "force": 600,                "damage_type": "内伤"]);        }return ([                "action":msg[random(sizeof(msg))],                "damage":random(50)+i/2+level/2+90,                "parry":random(i/8)+50+random(level/8),                                "dodge":random(i/5)+60,                "force":level+i/2+60+random(50),                "damage_type": "挫伤",        ]);       }int practice_skill(object me){        object weapon;     if (!objectp(weapon = me->query_temp("weapon"))        || (string)weapon->query("skill_type") != "staff")                return notify_fail("你使用的武器不对。\n");        if ((int)me->query("jing") < 40)                return notify_fail("你的体力不够练打狗棒法。\n");          if ((int)me->query("neili") < 140)                return notify_fail("你的内力不够练打狗棒法。\n");  if ((int)me->query_skill("huntian-qigong",1) < 120)                return notify_fail("你的混天气功修为不够。\n");       if (((int)me->query_skill("liuhe-zhang", 1)+200) < (int)me->query_skill("dagou-bang", 1))               return notify_fail("你的六合掌法太低了。\n");       if (((int)me->query_skill("fengmo-zhang", 1)+100) < (int)me->query_skill("dagou-bang", 1))               return notify_fail("你的疯魔杖法太低了。\n");       if (((int)me->query_skill("xiaoyaoyou", 1)+300) < (int)me->query_skill("dagou-bang", 1))               return notify_fail("你的逍遥游太低了。\n");        me->receive_damage("jing",30);        me->add("neili", -35);          return 1;}string perform_action_file(string action){        return __DIR__"dagou-bang/" + action;}mixed hit_ob(object me, object victim, int damage_bonus){    string msg,name;    int i,j,damage,a,p;    object weapon, weapon1;              name = xue_name[random(sizeof(xue_name))];    weapon = me->query_temp("weapon");    weapon1 = victim->query_temp("weapon");    i = me->query_skill("begging", 1);    j = me->query_skill("dagou-bang", 1);a=me->query("combat_exp", 1);p=victim->query("combat_exp", 1);    if( damage_bonus < 10 ) return 0;if (me->query_skill_mapped("force") != "huntian-qigong")return 0; if (!objectp(weapon = me->query_temp("weapon"))        || (string)weapon->query("skill_type") != "staff")return 0; if (!victim) return;    if(j > 100 &&       me->query_skill_mapped("parry") == "dagou-bang" &&       me->query("neili") > 400 && me->query("max_neili") > 1000        &&  random(j) > 150        && random(a) > random(p)/3 ){       if (random(4)>1){              switch(random(4)){            case 0 :               message_vision(HIG"$N"+weapon->name()+"挥出,以“绊”字诀着地扫去,一绊不中,二绊续至,连环钩盘,绵绵而不绝。\n"NOR,me, victim);               if (!victim->is_busy()) victim->start_busy(3);                           if (!random(2))                           message_vision(HIR"$n纵身稍慢,被"+weapon->name()+"在左胫上一拨,右踝上一钩,扑地倒了。\n"NOR,me, victim);                            else                           message_vision(HIR"$n尚未落地,被"+weapon->name()+"又是一挑一打,$n立足不住,仰天一交摔倒。\n"NOR,me, victim);                            break;            case 1 :                message_vision(HIG"$N使出“劈”字诀,挥舞起手中"+weapon->name()+"如狂风暴雨般的打去!\n"NOR,me, victim);                damage = damage_bonus/10 + random(damage_bonus)/4;if (victim->query("qi") >damage/4){                victim->receive_danage("qi",damage/4);                                victim->receive_wound("qi", damage/4);}                me->add("neili", -damage/6);                            break;                        case 2 :              message_vision( HIG"$N使出“戳”字诀,手中"+weapon->name()+"直上直下,点东打西,招招向$n的要害戳去!\n"NOR,me, victim);                damage = damage_bonus/5 + random(damage_bonus)/10;                if (victim->query("qi") > damage/2)                victim->receive_wound("qi", damage/2);                me->add("neili", -damage/4);              break;            case 3 :             message_vision( HIG"$N棒法再变,使出了“转”字诀。但见"+weapon->name()+"化成了一团碧影,猛点$n后心各大要穴。\n"NOR,me, victim);                           if((!random(5)))                                {                                if (!victim->is_busy()) victim->start_busy(3);                                me->add("neili",-40);                               if (victim->query("qi") > me->query_skill("dagou-bang",1)/5+damage_bonus/5){                                victim->receive_damage("qi", me->query_skill("dagou-bang",1)/5+damage_bonus/4);                                victim->receive_wound("qi", me->query_skill("dagou-bang",1)/5+damage_bonus/4);       }                                 message_vision(HIR"$n被"+weapon->name()+"点中"RED+name+HIR",受了点伤!\n" NOR,me, victim);                        }                                break;            }           } else if (weapon1 && random(20)<7)                    {             switch(random(2)){            case 0 :                           if (random(2)!=1){                 message_vision( HIG"$N"+weapon->name()+"疾翻,搭在"+weapon1->name()+"尺许之处,运起“引”字诀,顺势向外牵引! \n"NOR,me, victim);               } else {              message_vision( HIG"$N"+weapon->name()+"缩回,使起“挑”字诀,搭住"+weapon1->name()+"向上甩出,将$n疾奔的力道传到"+weapon1->name()+"上! \n"NOR,me, victim);                           }                           if (!victim->is_busy()) victim->start_busy(3);                           if (!random(4)){                         message_vision( HIR"$n只感"+weapon1->name()+"似欲脱手飞出,一个把握不住,手中兵器被对方夺了过去。\n"NOR,me, victim);                           weapon1->unequip();               weapon1->move(environment(victim));                           }                           break;            case 1 :              message_vision( HIG"$N使个“缠”字诀,"+weapon1->name()+"挥到东,"+weapon->name()+"跟向东,"+weapon1->name()+"打到西,"+weapon->name()+"随到西,如影随形,借力制敌。\n"NOR,me, victim);               damage = damage_bonus/10 + random(damage_bonus)/5;                                if ((int)victim->query("jing")<=damage)                                  { victim->set("jing",0); }                                 else {if (victim->query("jing") >damage)                 victim->receive_damage("jing", damage);                                  }                if (!victim->is_busy()) victim->start_busy(3);                me->add("neili", -damage);                               break;                          }                  }           }        if (random(5)==0)        {                victim->receive_wound("qi", (damage_bonus - 50) / 2, me);return HIY "只听「碰」一声,"+victim->name()+"被无数的棒影扫倒在地!\n" NOR;        }}int ob_hit(object ob, object me, int damage){        object wp,wp1,weapon;        int j,neili,neili1,skill,skill1,a,p;                wp = me->query_temp("weapon");        wp1 = ob->query_temp("weapon");        neili = me->query("neili");        neili1 = ob->query("neili");        skill = me->query_skill("dagou-bang",1);        skill1 = me->query_skill("xianglong-zhang",1);a=me->query("combat_exp", 1);p=ob->query("combat_exp", 1);if (me->query_skill_mapped("force") != "huntian-qigong")return damage; if (!objectp(weapon = me->query_temp("weapon"))        || (string)weapon->query("skill_type") != "staff")return damage;         if( living(me)          && random(skill)+20 > 180         && skill > 100          && neili > 500          && random(a) > random(p)/3         && me->query_skill_mapped("parry") == "dagou-bang"         && living(ob)         && wp          && random(20)>12){            me->add("neili", -(random(50)));         if(wp1){                                message_vision( HIG "$N一招甫出,但见$n使个“封”字诀,棒影飘飘,登时将自己\n"                + "身前数尺之地尽数封住了。$N无奈之下,只有后退一步,静观变化。\n" NOR,ob,me);         if( me->is_busy()){            me->start_busy(1);if (!ob->is_busy())            ob->start_busy(3);         }         j = -damage;        }                   else{           message_vision( HIG "$N的手指刚要碰到$n手腕,突然青影闪动,"                   + wp->name() + HBGRN "一势“封”字诀,来势神妙无方,\n"                   + "手腕已被重重地敲了一下。$N慌忙后退两步,变色斜睨,背上惊出了一阵冷汗。\n" NOR,ob,me );           if( me->is_busy()){                 me->start_busy(1);if (!ob->is_busy())                 ob->start_busy(3);            }            else                 if (!ob->is_busy())                 ob->start_busy(3);if (ob->query("qi") > damage/2){                 ob->receive_damage("qi", damage/2 > 0?damage/2:10, me);                 ob->receive_wound("qi", damage/6 > 0?damage/10:2, me);}                 j = -damage;                    }        return j;    }          }

⌨️ 快捷键说明

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