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

📄 magic-unarmed.c

📁 C实现的MUD,对大家基本入门网络游戏很有帮助!
💻 C
字号:
//npc武功,不开放!!#include <ansi.h>inherit SKILL;  #include <ansi.h>#include <combat.h>//inherit F_SSERVER;#include "/kungfu/skill/eff_msg.h";string *order = ({""HIY"", ""HIG"", ""RED"", ""MAG"", ""YEL"", ""HIC"", ""HIW"", ""HIR"",""HIB"", ""CYN"",""WHT"",""HIM"",""BLU""});mapping *action = ({([  "action" : "\n$N一记勾拳,勾向$n的$l。\n",        "force" : 420,        "dodge" : 100,        "damage": 600,        "damage_type" : "抓伤",]),([      "action" : "$N一记直拳,直捣$n的$l。",        "force" : 420,        "dodge" : 300,        "damage": 600,        "damage_type" : "瘀伤"]),([      "action" : "$N一记摆拳,直摆$n的$l。",        "force" : 420,        "dodge" : 100,        "damage": 600,        "damage_type" : "瘀伤"]),([      "action" : "\n$N一记重拳,击向$n的$l。",        "force" : 420,        "dodge" : 100,        "damage": 600,                "damage_type" : "内伤"]),([      "action" : "$N一套组合拳,直攻$n的要害部位。",        "force" : 620,        "dodge" : 100,        "damage": 600,        "damage_type" : "瘀伤",]),});int valid_enable(string usage) { return usage=="unarmed" ||  usage=="parry"|| usage=="hand"; }int valid_learn(object me){        if (me->query_temp("weapon") || me->query_temp("secondary_weapon"))                return notify_fail("练拳击必须空手。\n");        if ((int)me->query("max_force") < 200)                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){        int i, level;        level = (int)me->query_skill("magic-unarmed", 1);        for(i = sizeof(action); i > 0; i--)                if(level > action[i-1]["lvl"])                        return action[NewRandom(i, 20, level/5)];}int practice_skill(object me){        if ((int)me->query("qi") < 300)                return notify_fail("你的体力太低了。\n");        if ((int)me->query("neili") < 300)                return notify_fail("你的内力不够练拳击。\n");        me->receive_damage("qi", 300);        me->add("neili", -300);        return 1;}mixed hit_ob(object me, object victim,int damage_bonus)        {	        int i, level;        object target;object weapon;        level   = (int) me->query_skill("magic-unarmed",1);//        target = me->select_opponent();        weapon = me->query_temp("weapon");	if( random(4)==1 && random(level) > 260)	{        if (userp(victim))        victim->start_busy(3+random(2));else    victim->start_busy(2);        return HIC "「冰晶术!!」!$N突然念咒,用了一个魔法,$n被冰冻住暂时不能动了!!\n" NOR;	}  	if( random(4)==1 && random(level) > 200)	{        if (userp(victim) && victim->query("eff_qi") > 50        && victim->query("qi") > 50){if (victim->query("qi")/15 > 20)        victim->add("qi",-victim->query("qi")/15);if (victim->query("eff_qi")/15 > 20)        victim->add("eff_qi",-victim->query("eff_qi")/25);}else {        victim->add("qi",-100);        victim->add("eff_qi",-100);}        return HIB "「暗黑核融术!!」!$N突然念咒,用了一个魔法,$n被炸得飞了起来!!\n" NOR;	} 	if( random(4)==1 && random(level) > 150)	{        if (userp(victim) && victim->query("jing") > 50        && victim->query("eff_jing") > 50){if (victim->query("jing")/20 > 20)        victim->add("jing",-victim->query("jing")/20);if (victim->query("eff_jing")/20 > 20)        victim->add("eff_jing",-victim->query("eff_jing")/30);}else {        victim->add("jing",-100);        victim->add("eff_jing",-100);}        return HIW "「流星光矢!!」!$N突然念咒,用了一个魔法,$n被打中后觉得头痛无比!!\n" NOR;	}if (damage_bonus < 10) damage_bonus=10;        if( damage_bonus > 100 ) {        victim->receive_wound("qi", damage_bonus );	        victim->receive_wound("qi", damage_bonus );        return HIR "勾拳!!一阵拳影!!!一股鲜血从$n的身子喷出\n" NOR;	}        if( damage_bonus < 75 ) {        victim->receive_wound("qi", damage_bonus );	        victim->receive_wound("qi", damage_bonus );	        return YEL "直拳!!一阵拳影!!!$n闷哼一声,身子晃了两晃!\n" NOR;}else{               victim->receive_wound("qi", damage_bonus );	        victim->receive_wound("qi", damage_bonus );	        return HIM "冲拳!!一阵拳影!!!你听到「嗤啦」一声轻响,脸上竟溅到一些血滴!\n" NOR;}}int ob_hit(object ob, object me, int damage){	object weapon = me->query_temp("weapon");        string msg,dodge_skill,*limbs;        int i, j, level, p, q;                limbs = ob->query("limbs");        level = me->query_skill("magic-unarmed", 1);//        if( me->is_busy()) return 1;        if( damage < 100 ) return 1;        if (  random(level) > 150  && random(level) > 250   ){         msg = RED"$N面对$n的攻势。身形一闪,突然施放魔法!!!。\n"NOR;            message_vision(msg, me, ob);            if ( random(4) == 0 && random(level) > 250){         msg = YEL"「 地精附身! 」。$N突然念咒,用了一个魔法,$n感觉被大地吸住不能动了!!。\n"NOR;//             if (!ob->is_busy())        if (userp(ob) && ob->query("qi") > 50 && ob->query("jing") > 50        && ob->query("eff_qi") > 50 && ob->query("eff_jing") > 50){             ob->start_busy(3+random(2));if (ob->query("qi")/20 > 20)             ob->add("qi",-ob->query("qi")/20);if (ob->query("eff_qi")/20 > 20)             ob->add("eff_qi",-ob->query("eff_qi")/30);}else{             ob->start_busy(3);             ob->add("qi",-100);             ob->add("eff_qi",-100);}msg += damage_msg(damage, "瘀伤");            }else  if (random(4)==1&& random(level) > 200){         msg = HIR"「火炎球!」。$N突然念咒,用了一个魔法,$n被一个火球打中了!!\n"NOR;        if (userp(ob) && ob->query("qi") > 50         && ob->query("eff_qi") > 50){if (ob->query("qi")/15 > 20)             ob->add("qi",-ob->query("qi")/15);if (ob->query("eff_qi")/15 > 20)             ob->add("eff_qi",-ob->query("eff_qi")/25);}else {             ob->add("qi",-200);             ob->add("eff_qi",-200);}msg += damage_msg(damage, "瘀伤");            }else  if (random(4)==2&& random(level) > 150){         msg = HIC"「霹雳闪电!」。$N突然念咒,用了一个魔法,$n被一个闪电打中了!!\n"NOR;        if (userp(ob) && ob->query("qi") > 50        && ob->query("jing") > 50        && ob->query("eff_qi") > 50        && ob->query("eff_jing") > 50){if (ob->query("qi")/30 > 20)             ob->add("qi",-ob->query("qi")/30);if (ob->query("eff_qi")/30 > 20)             ob->add("eff_qi",-ob->query("eff_qi")/30);if (ob->query("jing")/30 > 20)             ob->add("jing",-ob->query("jing")/30);if (ob->query("eff_jing")/30 > 20)             ob->add("eff_jing",-ob->query("eff_jing")/30);}else{             ob->add("qi",-100);             ob->add("eff_qi",-100);             ob->add("jing",-100);             ob->add("eff_jing",-100);}msg += damage_msg(damage, "瘀伤");            }else           msg = HIG"$n抢先出招,使$N的念咒失败了!。\n"NOR;            message_vision(msg, me, ob);            return damage;        }}

⌨️ 快捷键说明

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