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

📄 taiji-quan.c

📁 C实现的MUD,对大家基本入门网络游戏很有帮助!
💻 C
📖 第 1 页 / 共 2 页
字号:
int valid_enable(string usage) { return usage=="unarmed" || usage=="parry"; }int valid_learn(object me){	if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))		return notify_fail("练太极拳必须空手。\n");	if ((int)me->query_skill("taiji-shengong", 1) < 20)		return notify_fail("你的太极神功火候不够,无法学太极拳。\n");	if ((int)me->query("max_neili") < 100)		return notify_fail("你的内力太弱,无法练太极拳。\n");	return 1;}string query_skill_name(int level){        int i;        for(i = sizeof(action)-1; i >= 0; i--)                if(level >= action[i]["lvl"])                        return action[i]["skill_name"];}/* ----------------mapping query_action(object me, object weapon){	return action[random(sizeof(action))];}-------------------*/mapping query_action(object me, object weapon){	int i, level;	string msg;	level = (int) me->query_skill("taiji-quan",1);msg = random(2)==1?HIW"只见$N虚灵顶劲、涵胸拔背、松腰垂臀、沉肩坠肘,双手抱了个太极式的圆圈,纯以意行太极,已达形神合一,心动气动的境界,\n结果使出了太级拳中的"NOR:HIW"刹时间$N悟到了太极拳旨中“似松非松,将展未展,劲断意不断”的精微奥妙之处,使出一招犹如行云流水,潇洒无比。\n结果使出了太级拳中的"NOR;msg = msg + order[random(13)] + taijin[random(14)] + NOR;        if ( level > 250         && random(level) > 200        && random(10)>5)        	return ([                  	"action" : msg,                	"force" :  500,                	"dodge":   100,                	"damage":   500,                	"parry":   100,                	"damage_type" : random(2)==1?"瘀伤":"内伤",        	]);        	        if (random(me->query_con()) > 25 && random(20) >= 15 &&        level > 200 && me->query("neili") > 600){              me->add("neili", -30);                  return ([                "action": HIW"$N左掌阳,右掌阴,目光凝视$n,两掌向$p慢慢合拢,竟是凝重如山,却又轻灵似羽!"NOR,                "force" : 500,                "dodge" : 200,                "damage" : 250,                "damage_type" : "内伤",                "skill_name" : "阴阳决",                "lvl" : 200,                ]);         }                 if (random(me->query_con()) > 25 && random(20) >= 15 &&        level > 200 && me->query("neili") > 600){              me->add("neili", -30);                  return ([                "action": HIW"$N左掌阳,右掌阴,目光凝视$n,两掌向$p慢慢合拢,竟是凝重如山,却又轻灵似羽!"NOR,                "force" : 500,                "dodge" : 200,                "damage" : 250,                "damage_type" : "内伤",                "skill_name" : "阴阳决",                "lvl" : 200,                ]);         }         	for(i = sizeof(action); i > 0; i--)		if(level > action[i-1]["lvl"])            return action[NewRandom(i, 5, level/5)];}int practice_skill(object me){	if ((int)me->query("qi") < 30)		return notify_fail("你的体力太低了。\n");	if ((int)me->query("neili") < 20)		return notify_fail("你的内力不够练太极拳。\n");	me->receive_damage("qi", 25);	me->add("neili", -10);	return 1;}string perform_action_file(string action){	return __DIR__"taiji-quan/" + action;}int ob_hit(object ob, object me, int damage){        object wp1,weapon;        string msg;        int p,j,skill, neili, neili1;        wp1 = ob->query_temp("weapon");        weapon = ob->query_temp("weapon");        skill = me->query_skill("taiji-quan", 1);        neili = me->query("neili");        neili1 = ob->query("neili");        if( random(me->query("combat_exp")) > ob->query("combat_exp")/3           && !ob->is_busy()           && me->query_skill_mapped("parry") == "taiji-quan"         && me->query_skill_mapped("unarmed") == "taiji-quan"           && skill > 200)            {             msg = HIG"$p只觉上盘各路已全处在$P双掌的笼罩之下,无可闪避,无可抵御,只得运劲于背,硬接他这一掌,同时右臂紧挥,只盼两人各受一招,成个两败俱伤之局。\n"NOR;             if(random(20) >= 13 && me->query("neili") > 600){                   msg += HIR"不料$N双手一圈,如抱太极,一股雄浑无比的力道组成了一个旋涡,只带得$p在原地急转七八下,如转陀螺,如旋纺锤,好容易使出“千斤坠”之力定住身形,却已满脸胀得通红,狼狈万状!\n"NOR;                   ob->receive_damage("qi", me->query_skill("taiji-quan", 1)*2);                   ob->receive_damage("jing", me->query_skill("taiji-quan", 1)/3);  if( !ob->is_busy() ){                   ob->start_busy(2+random(2));}                   me->add("neili", -20);                   }             else {  if( !me->is_busy() ){             me->start_busy(1+random(2));}             msg += HIY"$N但觉气息微窒,当下一招“斜飞势”,将$N力量引偏,自己也退开两步。\n"NOR;}             message_vision(msg, me, ob);             return 1;        }      if(me->query("combat_exp") > ob->query("combat_exp")/2         && me->query_skill_mapped("unarmed") == "taiji-quan"         && me->query_skill_mapped("parry") == "taiji-quan"         && me->query_skill("taiji-shengong", 1) > 50         && neili > 100          && skill > 50          && living(me)         && !ob->query("env/invisibility")         && random(10) >= 3)         {                  if(wp1) msg = "$N双手连划,太极圆圈在$n的"+wp1->name()+"上一绕,";         else msg = "$N双手划弧,连连打出太极圆圈,";if (damage>50){         if(neili >= neili1 + damage){         		if( weapon ) msg = "$N伸手一拍震开了$n的"+weapon->name()+",顺势一转,借力打力一掌按在$p下肋!\n";         		else msg = "$N左手一划,套住$n,右掌顺势一推,借力打力将$p的劲力全数倒翻回去!\n";              msg += "结果$n的力道被太极拳借力打力反击回来!\n",                            ob->receive_damage("qi", damage/2+ob->query("jiali")*2, me);              ob->receive_wound("qi", ob->query("jiali"), me);}              p = ob->query("qi")*100/ob->query("max_qi");              msg += damage_msg(damage/2, "震伤");              msg += "( $n"+eff_status_msg(p)+" )\n";              j = -8000;              }                        else if(neili >= neili1/2+random(neili1/2)+random(damage)){              		if( weapon ) msg = "$N身形一转,一掌以四两拨千斤之巧劲从旁拍开了$n递近身的"+weapon->name()+"!\n";         		else msg = "$N左手一划,右掌一转,以四两拨千斤之巧劲将$n的力道卸在一旁!\n";             msg += "结果$n的力道被太极拳借力打力卸在一旁!\n",               j = -8000;              }           else if(neili > neili1/2+damage){        	if( weapon ) msg = "$N情急之下,四两拨千斤一下拍在$n递近身的"+weapon->name()+"之旁,卸掉了$p一部分劲力!\n";         	else msg = "$N连忙双手一加,以四两拨千斤之巧劲将$n的力道卸掉了一部分!\n";                msg += "结果$n的力道被太极拳借力打力卸掉了一部分!\n",               j = -(damage/3+random(damage));                             }           else{        	if( weapon ) msg = "$N集中生智,用借力打力之法使身体微侧,让"+weapon->name()+"劲力稍减!\n";         	else msg = "$N慌忙用借力打力之法靠上,想要卸掉一部分劲力!\n";                msg += "结果$n的力道被太极拳借力打力卸掉了一小半!\n",               j = -damage/3;               }                      message_vision(msg, me, ob);           return j;       }          }mixed hit_ob(object me, object victim, int damage_bonus){    string msg;    int j,damage;    j = me->query_skill("taiji-quan", 1);       if( damage_bonus < 100 ) return 0;    if(random(20) >= 13 && !victim->is_busy() && j > 120 &&       me->query("neili") > victim->query("neili") &&       me->query_skill_mapped("parry") == "taiji-quan" &&        me->query_skill("taiji-shengong", 1) > 50 &&       me->query_skill_mapped("unarmed") == "taiji-quan" &&       me->query("neili") > 600 && me->query("max_neili") > 1200 &&        j > random(victim->query_skill("dodge",1))){        switch(random(4)){            case 0 :               msg = YEL"$N运起引字诀,粘连粘随,右掌已搭住$n左腕,巧劲随即发出!\n"NOR;                damage = damage_bonus/3 + random(damage_bonus)/4;if (damage < 10) damage=10;                victim->receive_wound("qi", damage/5);                me->add("neili", -damage/10);               break;             case 1 :               msg = YEL"$N运起挤字诀,双手一圈,如抱太极,一股雄浑无比的力道组成了一个旋涡!\n"NOR;                damage = damage_bonus/3 + random(damage_bonus)/4;if (damage < 10) damage=10;                victim->receive_wound("qi", damage/5);                me->add("neili", -damage/10);                break;            case 2 :               msg = YEL"$N运粘起字诀,双手弧划,左圈右围,一个跟着一个,太极圆圈连连发出!\n"NOR;                damage = damage_bonus/4 + random(damage_bonus)/5;                                if ((int)victim->query("jing")<=damage+10)                                  { victim->set("jing",10); }                                 else {                 victim->receive_damage("jing", damage);                                  }           if (!victim->is_busy()){                victim->start_busy(1);  }                me->add("neili", -20);                    break;            case 3 :               msg = YEL"紧接着$N运起太极拳中粘、引、挤、按等招式,想将$n身子带歪!\n"NOR;                damage = damage_bonus/3 + random(damage_bonus)/4;                if (damage < 10) damage=10;                victim->receive_wound("qi", damage/5);                me->add("neili", -damage/10);               break;            }        switch(random(4)){         case 0 : msg += HIR"结果$n身不由主的向前一冲,跨出几步,方始站定。\n"NOR; break;         case 1 : msg += HIR"结果$n身不由主的在原地急转了七八下,如转陀螺,如旋纺锤!\n"NOR; break;         case 2 : msg += HIR"登时便套得$n跌跌撞撞,身不由主的立足不稳,犹如中酒昏迷。\n"NOR; break;         case 3 : msg += HIR"$n想使出千斤坠之力定住身形,却已满脸胀得通红,身不由己,狼狈万状。\n"NOR; break;         }        message_vision(msg, me, victim);        }}	

⌨️ 快捷键说明

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