📄 wudang-mianzhang.c
字号:
// wudang-mianzhang.c 武当绵掌// By lius 99/8#include <ansi.h>inherit SKILL;object offensive_target(object me){ int sz; object *enemy; enemy = me->query_enemy(); if( !enemy || !arrayp(enemy) ) return 0; sz = sizeof(enemy);//if (!environment(me)) return 0;//if (!environment(sz)) return 0;//if (environment(me)!= environment(sz)) return 0; if( sz > 4 ) sz = 4; if( sz > 0 ) return enemy[random(sz)]; else return 0;}#include "/kungfu/skill/eff_msg.h";int taiji(object me, object victim);mapping *action = ({([ "action":"$N一个虎纵步,已到$n右肩之侧,左掌一招[划手]向他右腋击去。", "force" : 160, "dodge" : 10, "parry" : 10, "lvl" : 0, "skill_name" : "划手", "damage_type":"割伤"]),([ "action":"$N身形一矮,一个[印掌],掌风飒然,直击$n前襟。", "force" : 180, "dodge" : 50, "parry" : 0, "lvl" : 20, "skill_name" : "印掌", "damage_type":"瘀伤"]),([ "action":"$N脚踏八字,双肩微晃,双掌轻飘飘地,[若有若无]的拍击而出。", "force" : 200, "dodge" : -15, "parry" : 0, "lvl" : 30, "skill_name" : "若有若无", "damage_type":"瘀伤"]),([ "action":"$N左掌斜引,右掌从左肘后托出,翻掌上划,一式[有理有节]直劈$n肩肘关节。", "force" : 210, "dodge" : 5, "parry" : -15, "lvl" : 40, "skill_name" : "有理有节", "damage_type":"劈伤"]),([ "action":"$N左掌曲指成钩,一下钩住$n手腕脉门,借力下带,右掌立掌成刀自上而下划落,却是一招[割袍断义]!!", "force" : 230, "dodge" : 0, "parry" : -15, "lvl" : 60, "skill_name" : "割袍断义", "damage_type":"割伤"]),([ "action":"$N使出[拨云见日],双掌连划数个圆圈,化去$n的劲力,右掌从掌圈突出击向对方前胸,左掌却轻飘的按向对方丹田要穴。", "force" : 270, "dodge" : 55, "parry" : 50, "lvl" : 80, "skill_name" : "拨云见日", "damage_type":"瘀伤"]),([ "action":"$N一式「左右逢源」,双掌左挂右拖,将$n的力道引向一旁,突然扭腰坐跨,双掌上托,以四两拨千斤的手法,将$n硕大的身躯托的飞了出去。", "force" : 290, "dodge" : 0, "parry" : 0, "lvl" : 100, "skill_name" : "左右逢源", "damage_type":"瘀伤"]),([ "action":"$N轻身跃起,衣袖连挥,左掌却悄无声息的劈出数掌,好一式[金风细雨]。$n但觉柔风拂面,潜劲已是汹涌而来。", "force" : 300, "dodge" : 15, "parry" : -10, "lvl" : 110, "skill_name" : "金风细雨", "damage_type":"内伤"]),([ "action":"$N一式「魔消道涨」,双脚弹起,跃过$n头顶,两掌一合,顺势下按,击向对方头顶百汇穴。", "force" : 320, "dodge" : 5, "parry" : -5, "lvl" : 120, "skill_name" : "魔消道涨", "damage_type":"内伤"]),([ "action":"$N步伐散乱,看似[举棋不定],却暗合七星,东一旋,西一掌,招招不离$n周身要害。", "force" : 340, "dodge" : -15, "parry" : -10, "lvl" : 130, "skill_name" : "举棋不定", "damage_type":"瘀伤"]),([ "action":"$N一招[花开并蒂],左手挥掌猛击$n右颊,右手出指疾点他左肩“缺盆穴”。", "force" : 360, "dodge" : 10, "parry" : -5, "lvl" : 140, "skill_name" : "花开并蒂", "damage_type":"瘀伤"]),([ "action":"$N一招[花开并蒂],右手挥掌猛击$n左颊,左手出指疾点他右肩“缺盆穴”。", "force" : 380, "dodge" : -5, "parry" : -5, "lvl" : 145, "skill_name" : "花开并蒂", "damage_type":"瘀伤"]),([ "action":"$N右脚踢出,左脚借势弹起,一晃到了$n身后,轻飘飘的一式[闲云野鹤],右掌按向他背心命门要穴。", "force" : 400, "dodge" : 10, "parry" : 0, "lvl" : 150, "skill_name" : "闲云野鹤", "damage_type":"内伤"]),([ "action":"$N使出[絮飘雪扬],双掌飞舞,有若絮飘雪扬,软绵绵不着力气。", "force" : 420, "dodge" : 0, "parry" : 5, "lvl" : 160, "skill_name" : "絮飘雪扬", "damage_type":"内伤"]),([ "action":"$N突然左右手分别使出[花开并蒂],两招四式,便如暴风骤雨般袭向$n,势道之猛,手法之快,当真非同小可。", "force" : 450, "dodge" : -10, "parry" : 0, "lvl" : 170, "skill_name" : "花开并蒂", "damage_type":"内伤"]),([ "action":"$N突然一反绵掌常态,右掌提气上行,随之长身而起,左掌[一掌乾坤],内劲外吐,猛击$n的$l,这一掌其软如绵,其坚胜铁。", "force" : 480, "dodge" : 0, "parry" : 0, "lvl" : 180, "skill_name" : "一掌乾坤", "damage_type":"内伤"]),});int valid_enable(string usage) { return usage=="strike" || usage=="parry" || usage=="unarmed"; }int valid_learn(object me){ mapping fam = me->query("family"); if (me->query_temp("weapon") || me->query_temp("secondary_weapon")) return notify_fail("练绵掌必须空手。\n"); if ((int)me->query_skill("taiji-shengong", 1) < 80) return notify_fail("你的本门内功火候不够,无法学习绵掌。\n"); if ((int)me->query("max_neili") < 450) 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, j, level; object target; level = (int) me->query_skill("wudang-mianzhang",1); if (random(me->query_con()) > 30 && random(4) == 3 && level > 120 && me->query("neili") > 500){ me->add("neili", -50); return ([ "action": YEL"$N突然化拳为掌,间不容发地插入$n的防线,无声无息拍出一掌,看似轻柔,却是暗劲内蕴,端的非同小可!!"NOR, "damage" : 500, "force" : 500, "dodge" : 10, "damage_type" : "内伤", ]); } for(i = sizeof(action); i > 0; i--) { if(level > action[i-1]["lvl"]) { j = NewRandom(i, 20, level/5); target = offensive_target(me); { return ([ "action" : action[j]["action"], "force" : action[j]["force"], "dodge":action[j]["dodge"], "lvl" : action[j]["lvl"], "damage_type" : action[j]["damage_type"], ]); } return action[j]; } }}int practice_skill(object me){ int lvl = me->query_skill("wudang-mianzhang", 1); int i = sizeof(action); while (i--) if (lvl == action[i]["lvl"]) return 0; if ((int)me->query("jing") < 40) return notify_fail("你精力太差,无法练习绵掌。\n"); if ((int)me->query("neili") < 50) return notify_fail("你的内力不够练绵掌。\n"); me->receive_damage("jing", 30); me->add("neili", -10); return 1;}int ob_hit(object ob, object me, int damage){ object wp1; string msg; int p,j,skill, neili, neili1; wp1 = ob->query_temp("weapon"); skill = me->query_skill("wudang-mianzhang", 1); neili = me->query("neili"); neili1 = ob->query("neili"); if(me->query_temp("fanzhen")){ me->delete_temp("fanzhen"); return 1; } if(me->query("combat_exp") > ob->query("combat_exp")/2 && me->query_skill_mapped("parry") == "wudang-mianzhang" && me->query_skill("taiji-shengong", 1) > 80 && neili > 100 && skill > 50 && living(me) && random(5) >= 2) { if(random(5) < 2 ) me->set_temp("fanzhen", 1); if(wp1) msg = "$N双手不招不架,只是借势在$n的"+wp1->name()+"上一托,一带,"; else msg = "$N虚提真气,双手飞舞,软绵绵不着力道,"; if(neili >= neili1 + damage){ msg += "结果$N一待$n的力道用老,便突发绵劲将$n的力道反击回来!\n", ob->receive_damage("qi", damage/2+ob->query("jiali"), 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)){ msg += "结果$n的力道如击中棉帛,软绵绵毫无着力之处!\n", j = -8000; } else if(neili > neili1/2+damage){ msg += "结果$n的力道被$N使出绵劲绝学卸掉了一部分!\n", j = -(damage/3+random(damage)); } else{ msg += "结果$n的力道被$N使出绵劲绝学卸掉了一小半!\n", j = -damage/3; } message_vision(msg, me, ob); return j; } }string perform_action_file(string action){ return __DIR__"wudang-mianzhang/" + action;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -