📄 taiji-jian.c
字号:
// taiji-jian.c 太极剑// cleansword 2/15/96// Marz 5/21/96#include <ansi.h>inherit SKILL;#include "/kungfu/skill/eff_msg.h";string *dir = ({"上盘","下盘","左侧","右侧","後心",});mapping *action = ({([ "action" : "$N虚步提腰,一招「"+HIM+"蜻蜓点水"+NOR+"」,手中$w轻轻颤动,一剑剑点向$n的$l", "force" : 60, "lvl" : 0, "damage_type" : "刺伤"]),([ "action" : "$N向前跨上一步,左手剑诀,右手$w使出一式「"+YEL+"指南针"+NOR+"」直刺$n的$l", "force" : 70, "lvl" : 10, "damage_type" : "刺伤"]),([ "action" : "$N身形往右一挫,左手剑诀,右手$w使出一式「"+WHT+"大魁星"+NOR+"」刺向$n的$l", "force" : 80, "lvl" : 15, "damage_type" : "刺伤"]),([ "action" : "$N双膝下沉,右手$w使出一式「"+BLU+"探海式"+NOR+"」,由下而上疾刺$n的$l", "force" : 90, "lvl" : 26, "damage_type" : "刺伤"]),([ "action" : "$N一招「"+HIW+"燕子掠波"+NOR+"」,$w自上而下划出一个大弧,平平地向$n的$l挥去", "force" : 100, "lvl" : 37, "damage_type" : "刺伤"]),([ "action" : "$N上身往左侧一拧,一招「"+BLK+"乌龙摆尾"+NOR+"」,右手$w反手向$n的$l挥去", "force" : 110, "lvl" : 48, "damage_type" : "刺伤"]),([ "action" : "$N一招「"+RED+"右"+NOR+"拦扫」,一招「"+RED+"左"+NOR+"拦扫」,剑锋平指,一气呵成横扫$n的$l", "force" : 120, "lvl" : 50, "damage_type" : "刺伤"]),([ "action" : "$N左腿提膝,手中$w斜指,一招「"+HIC+"宿鸟投林"+NOR+"」刺向$n的$l", "force" : 130, "lvl" : 60, "damage_type" : "刺伤"]),([ "action" : "$N一招「"+CYN+"青龙出水"+NOR+"」,$w自下而上划出一个大弧,平平地挥向$n的$l", "force" : 140, "lvl" : 70, "damage_type" : "刺伤"]),([ "action" : "$N使出「"+RED+"三"+NOR+"环套"+HIW+"月"+NOR+"」,$w划出三个圆圈,剑锋直出,绵绵不断划向$n的$l", "force" : 150, "lvl" : 80, "damage_type" : "刺伤"]),([ "action" : "$N一招「"+MAG+"风卷荷叶"+NOR+"」,$w轻灵地划出几个圆弧,迅速地向$n的$l挥去", "force" : 160, "lvl" : 100, "damage_type" : "刺伤"]),([ "action" : "$N一招「"+YEL+"虎抱头"+NOR+"」,$w划出一个左低右高的大弧,斜斜地斩向$n的$l", "force" : 170, "lvl" : 120, "damage_type" : "刺伤"]),([ "action" : "$N使出「"+HIR+"狮子摇头"+NOR+"」,$w由右向左划出一个大8字,将$n圈在其中", "force" : 180, "lvl" : 141, "damage_type" : "刺伤"]),([ "action" : "$N左脚踏实,右脚虚点,一招「"+HIW+"仙人指路"+NOR+"」,右手$w带着一团剑花,逼向$n的$l", "force" : 190, "lvl" : 162, "damage_type" : "刺伤"]),([ "action" : "$N轻轻跃起,一招「"+CYN+"野马跳涧"+NOR+"」,$w在半空中化为一圈银芒,落向$n的$l", "force" : 200, "lvl" : 184, "damage_type" : "刺伤"]),([ "action" : "$N两腿前箭后弓,一招「"+HIR+"射雁式"+NOR+"」,右手$w直刺$n的$l", "force" : 210, "lvl" : 205, "damage_type" : "刺伤"]),([ "action" : "$N一招「"+WHT+"小魁星"+NOR+"」,身形往左一挫,左手剑诀,右手$w平平地向$n的$l挥去", "force" : 220, "lvl" : 210, "damage_type" : "刺伤"]),([ "action" : "$N猱身扑上,一招「"+HIW+"白猿献果"+NOR+"」,手中$w斜斜地向$n的$l挥去", "force" : 230, "lvl" : 220, "damage_type" : "刺伤"]),([ "action" : "$N一招「"+RED+"迎风掸尘"+NOR+"」,$w看似随意地一挥,$n却陡觉一股劲气迎面袭来。", "force" : 240, "lvl" : 225, "damage_type" : "刺伤"]),([ "action" : "$N一招「"+YEL+"顺水推舟"+NOR+"」,$w自上而下划出一个大弧,平平地向$n的$l挥去。", "force" : 250, "lvl" : 230, "damage_type" : "刺伤"]),([ "action" : "$N一招「"+WHT+"流星赶月"+NOR+"」,$w疾刺$n的$l", "force" : 260, "lvl" : 235, "damage_type" : "刺伤"]),([ "action" : "$N突然盘蹲下身来,一招「"+BLU+"海底捞月"+NOR+"」,$w自下而上地向$n的$l挥去", "force" : 270, "lvl" : 240, "damage_type" : "刺伤"]),([ "action" : "$N一招「"+HIG+"挑帘式"+NOR+"」,$w自下而上徐徐划出一个大弧,平平地向$n的$l挥去", "force" : 300, "lvl" : 245, "damage_type" : "刺伤"]),([ "action" : "$N一招「"+YEL+"黄蜂入洞"+NOR+"」,$w自上而下划出一个大弧,平平地向$n的$l挥去", "force" : 320, "lvl" : 250, "damage_type" : "刺伤"]),([ "action" : "$N一招「"+WHT+"大鹏展翅"+NOR+"」,身形跃起,右手$w刺向$n的$l", "force" : 330, "lvl" : 255, "damage_type" : "刺伤"]),([ "action" : "$N一招「"+BLK+"车轮剑"+NOR+"」,$w化作一片银盘,平平地向$n的$l卷去", "force" : 350, "lvl" : 260, "damage_type" : "刺伤"]),([ "action" : "$N左脚轻点地面,身形往前一扑,一招「"+BLU+"天马行空"+NOR+"」,$w向$n的$l挥去", "force" : 360, "lvl" : 265, "damage_type" : "刺伤"]),([ "action" : "$N一招「"+WHT+"风扫梅花"+NOR+"」,身体跃在半空,手中$w扫向$n的$l", "force" : 380, "lvl" : 260, "damage_type" : "刺伤"]),([ "action" : "$N一招「"+HIC+"却步抽剑"+NOR+"」,左脚跃步落地,$w回抽,反手勾向$n的$l", "force" : 400, "lvl" : 270, "damage_type" : "刺伤"]),([ "action" : "$N右腿半屈般蹲,一招「"+WHT+"如封似闭"+NOR+"」,剑尖虚指,转身撩向$n的$l", "force" : 420, "lvl" : 280, "damage_type" : "刺伤"]),([ "action" : "$N回身拧腰,右手虚抱,一招「"+HIY+"拨云瞻日"+NOR+"」,$w中宫直进,刺向$n的$l", "force" : 450, "lvl" : 300, "damage_type" : "刺伤"]),});int valid_enable(string usage){ return (usage == "sword") || (usage == "parry"); }int valid_learn(object me){ if ((int)me->query("max_neili") < 100) return notify_fail("你的内力不够。\n"); if ((int)me->query_skill("taiji-shengong", 1) < 20) return notify_fail("你的「太极神功」火候太浅。\n"); if ((int)me->query_skill("taiji-quan", 1) < 20) return notify_fail("你的「太极拳」火候太浅。\n"); return 1;}mapping query_action(object me, object weapon){ mapping a_action; int i, level; int j, damage; string str; i = random(me->query_skill("force"))+50; if(i<100) i = 100; if(i>300) i = 300; j = random(40)-10; damage = (random(6)+1)*35; if(damage < 50) damage =50;// 绕指柔剑 if(me->query_temp("tjj/raozhi") && random(10) > 5){ switch(random(3)) { case 0: str = HIR"$N将内力灌注于剑上,向$n"+dir[random(sizeof(dir))]+"攻去!突然间$N的剑尖由"+dir[random(sizeof(dir))]+"圈转回来,攻向$n的$l!\n"NOR; break; case 1: str = HIR"$N手中剑尖连点$n" + dir[random(sizeof(dir))] + "的要穴!$n连忙守备,却见$N剑身一弯,转而攻向$n 的$l!\n"NOR; break; case 2: str = HIR"$N$w急舞,剑尖乱颤,陡然出一剑向$n的檀中大穴攻去!剑未及$n半尺,突然又转向$n的" + dir[random(sizeof(dir))]+"!\n"NOR; break; } if(objectp(weapon)) str = replace_string(str, "$w", weapon->name()+HIR); return ([ "action":str, "damage":damage*2, "damage_type": "刺伤", "dodge": (j+11)*10, "force": i+random(i/2), ]); } if(me->query_temp("tjj/sanhuan")){ switch(me->query_temp("tjj/sanhuan")){ case 3: str = HIC"$N使出「三环套月」,招式一变,左手抚剑把,右手托剑,剑尖青光闪动,以一个圆弧将$w"HIC"向$n轻轻挑出"NOR; break; case 2: str = HIC"然后$N移进一步,右手左招,左手右招,同样一剑接着挥出,上下连续,不着一点停顿的痕迹"NOR; break; case 1: str = HIC"剑光紧接,$N手中的$w"HIC"又一次挥出急点$n$l,这三剑剑势相联,剑气相叠,剑意相同,正合道家三清之属"NOR; break; default: str = HIC"$N使出「三环套月」,招式一变,左手抚剑把,右手托剑,剑尖青光闪动,以一个圆弧将$w"HIC"向$n轻轻挑出"NOR; break; } me->add_temp("tjj/sanhuan", -1); return ([ "action":str, "damage":damage*2, "damage_type": "刺伤", "dodge": j+10, "force": i+random(i/2), ]); } level = (int) me->query_skill("taiji-jian", 1); for(i = sizeof(action); i > 0; i--) if(level > action[i-1]["lvl"]){ a_action = action[NewRandom(i, 20, level/5)]; break; }if (level>50){// a_action["dodge"] = level/5;// a_action["parry"] = level/5; a_action["attack"] = level; a_action["damage"] = level/2;} return a_action;}int practice_skill(object me){ object weapon; if (!objectp(weapon = me->query_temp("weapon")) || (string)weapon->query("skill_type") != "sword") return notify_fail("你使用的武器不对。\n"); if ((int)me->query("qi") < 50) return notify_fail("你的体力不够练太极剑法。\n"); me->receive_damage("qi", 30); return 1;}string perform_action_file(string action){ return __DIR__"taiji-jian/" + action;}mixed hit_ob(object me, object victim, int damage_bonus, int factor){ object weapon, weapon1; weapon = me->query_temp("weapon"); weapon1= victim->query_temp("weapon"); if (random(me->query_skill("taiji-jian",1)) < 100 || me->query_skill("force",1) < 150 ) return 0; if (random(me->query_skill("taiji-jian",1)) > 200 && random(me->query_skill("sword",1))>180 && me->query_skill("force",1) > 220){ me->add("neili", -50); if( !victim->is_busy() ){ victim->start_busy(random(3));} return HIY"$n手忙脚乱,慌乱不堪!\n"NOR;} if (random(me->query_skill("taiji-jian",1)) > 150 && random(me->query_skill("sword",1))>150 && me->query_skill("force",1) > 180 ) { victim->add("neili", -400); return HIW"$n使出浑身解数才脱出太级剑的剑圈!\n"NOR;} if (random(me->query_skill("taiji-jian",1)) > 120 && random(me->query_skill("sword",1))>100 && me->query_skill("force",1) > 150 ) { if( !victim->is_busy() ){ victim->start_busy(random(2));} return HIG"$n顿时手足无措,不知如何是好!\n"NOR; } if(weapon1 && me->query_skill("taiji-jian", 1) > 150 && me->query("jiali") && me->query("max_neili") > 800 && me->query("neili") > 800 && random(10) >= 7 && random(me->query_int()) > 25 && me->query_skill_mapped("parry") == "taiji-jian" && me->query("combat_exp") > victim->query("combat_exp")){ message_vision(HIM"$N左手剑诀斜引,"+weapon->name()+HIM"画个半圆,平搭在$n"+weapon1->name()+HIM"背脊上,劲力传出,"+weapon1->name()+HIM"登时一沉!\n"NOR, me,victim); if(random(me->query("str")) > victim->query("str")/2 && random(10)>6) { me->add("neili", -50); message_vision(HIR"\n$N招式渐见涩滞,只觉得手中"+weapon1->name()+HIR"倒似不断的在增加重量,一个把持不定,脱手飞出!\n"NOR, victim); weapon1->unequip(); weapon1->move(environment(victim)); } else{ message_vision(HIY"$N一招使出,真力运得不足,被"+weapon->name()+HIY"带着连转几个圈子,手中"+weapon1->name()+HIY"一震,险些脱手!\n"NOR, victim); if( !victim->is_busy() ){ victim->start_busy(2);} } }}int ob_hit(object ob, object me, int damage){ object wp,wp1; string msg; int p,j,skill, neili, neili1; wp = me->query_temp("weapon"); wp1 = ob->query_temp("weapon"); skill = me->query_skill("taiji-jian", 1); neili = me->query("neili"); neili1 = ob->query("neili"); if(me->query("jiali") && random(skill) > random(ob->query_skill("parry", 1)) && me->query("combat_exp") > ob->query("combat_exp")/2 && me->query_skill_mapped("parry") == "taiji-jian" && me->query_skill("taiji-shengong", 1) > 50 && neili > 300 && skill > 50 && living(me) && objectp(wp) && wp->query("skill_type")== "sword" && !ob->query("env/invisibility")) { if(random(2)==1) me->add_temp("fanzhen", 1); if(objectp(wp1)) msg = "$N手中"+wp->name()+"斜指,太极圆圈在$n的"+wp1->name()+"上一搭,"; else msg = "只见$N使出四两拨千斤之巧劲,剑锋斜引,"; if(neili >= neili1+random(neili1)+damage){ if (damage <10 )damage=10; msg += "结果$n的力道被借力打力反击回来!\n", ob->receive_damage("qi", damage/2, 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){ msg += "结果$n的力道被卸在一旁!\n", j = -8000; } else if(neili < random(neili1)+damage && neili*2 > random(neili1)+damage){ msg += "结果$n的力道被卸掉了一半!\n", j = -damage/2; } else{ msg += "结果$n的力道只被卸掉了一小半!\n", j = -damage/3; } message_vision(msg, me, ob); return j; } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -