📄 douzhuan-xingyi.c
字号:
// douzhuan-xingyi 斗转星移// 1997-2-14#include <ansi.h>#include <weapon.h>#include <combat.h>inherit SKILL;#include "/kungfu/skill/eff_msg.h";int douzhuan(object me, object victim);string *parry_msg = ({YEL"蓦地里一股力道飞来,将$N一引一带,$N身子轻轻越起,身行落在一旁"NOR,BLU"$N当下一股内力冲向$n,$n击向$N的$n的招数莫名奇妙的溜滑向一旁"NOR,HIW"$N双手前探,左臂搭上$n右臂,右臂使出$n的招数将$n此招化去"NOR,HIY"$N星移斗转,$n这招莫名其妙的在中途转了方向,直奔自己袭来"NOR,YEL"$N作壁上观,双手与对方相交数掌,谈笑间竟使出$n成名技艺,使得$n不知如何是好"NOR,BLU"$N凝神运气向$n猛攻快打,使出的招数好似$n的成名绝技,把$n的招数化于无行"NOR,HIW"只见$N身如飘风,恰似漫天星移,诡异地一式,双掌动向无定不可捉摸地拍向$n"NOR,HIY"$N身行飘忽不定,在星移斗转之间反用$n的招数击向$n,却令人$n百思不得其解"NOR,});int valid_enable(string usage){ return usage == "parry";}string query_parry_msg(object weapon){ return parry_msg[random(sizeof(parry_msg))] + "。\n";}int valid_learn(object me){ return notify_fail("斗转星移只能通过领悟来提高。\n");}int practice_skill(object me){ return notify_fail("斗转星移只能通过领悟来提高,无法通过练习来提高。\n");}string perform_action_file(string action){ return __DIR__"douzhuan-xingyi/" + action;}int ob_hit(object ob, object me, int damage){ string msg; int i,p,j,skill, neili, neili1, exp, exp1; int hurt; object randomtarget, *rob; rob = all_inventory(environment(me)); i = random(sizeof(rob)); randomtarget = rob[i]; hurt = damage; if ( me->query_temp("mr_bishen", 1) > (random(2)+2) && me->query_skill_mapped("force") == "shenyuan-gong" ) { me->delete_temp("mr_bishen"); if( !ob || !ob->is_character() || !me->is_fighting(ob) ) return 0; call_out("bishen", 0, me, ob); } damage = hurt; me->add_temp("mr_bishen", 1); skill = me->query_skill("douzhuan-xingyi", 1); neili = me->query("neili"); neili1 = ob->query("neili"); exp = me->query("combat_exp"); exp1 = ob->query("combat_exp");if (me->query_skill("shenyuan-gong",1) < 50) return damage; if(!living(ob)) return damage; if(neili < 300) return damage; if ( damage > 0 ) { if ( rob[i] && living(rob[i]) && rob[i] != me && rob[i]->is_fighting(me) && me->query_skill_mapped("force") == "shenyuan-gong" ) { if (me->query_skill("douzhuan-xingyi", 1) > 150 && me->query("max_neili") > 2500 && me->query("neili") > 1000 && random(me->query("combat_exp")) > me->query("combat_exp")/3 && random(skill)> 100) { msg = HIC+BBLU+"$N使出慕容武功精随,$n的招式莫明其妙地击中"+rob[i]->query("name")+HIC+BBLU+"\n"NOR; tell_object(rob[i], HIR"突然之间,你居然莫明其妙地被击中。\n"NOR); damage = damage * 2 / 3;if (ob->query("qi")/2 > damage) rob[i]->receive_wound("qi", damage); p = rob[i]->query("qi")*100/rob[i]->query("max_qi"); msg += "( "+rob[i]->query("name") + eff_status_msg(p)+" )\n"; message_vision(msg, me, ob); if ( random(rob[i]->query("int")) > me->query("int")*2/3 ) rob[i]->kill_ob(me); return -damage; } } else { if ( (random(me->query("combat_exp")) > ob->query("combat_exp")/3) && (random(me->query("str", 1)) > ob->query("str", 1)/2) && (random(me->query("dex", 1)) > ob->query("dex", 1)/2) && (me->query_skill("douzhuan-xingyi", 1)>300) ) { msg = HIC"$N使出慕容武功精随,斗转星移间$n被自己的成名绝技击中。\n"NOR; damage =damage/2+random(damage/3); if (ob->query("qi")/2 > damage) ob->receive_wound("qi", damage); p = ob->query("qi")*100/ob->query("max_qi"); msg += "( $n"+eff_status_msg(p)+" )\n"; message_vision(msg, me, ob); return -damage; } else if ( random(me->query("combat_exp")) > ob->query("combat_exp")/3 && (random(me->query("dex", 1)) > ob->query("dex", 1)/2) && (me->query_skill("douzhuan-xingyi", 1)>240) ) { msg = HIY"突然间$n的招势在中途转向,击中了自己。\n"NOR; if (ob->query("qi")/2 > damage/3) ob->receive_damage("qi", damage/3); p = ob->query("qi")*100/ob->query("max_qi"); msg += "( $n"+eff_status_msg(p)+" )\n"; message_vision(msg, me, ob); return -damage; } if ( random(me->query("combat_exp")) > ob->query("combat_exp")/3 && (me->query_skill("douzhuan-xingyi", 1)>120) ) { msg = MAG"$n的招势在$N的带引下中途转向,化为无形。\n"NOR; message_vision(msg, me, ob); return damage/8; } }}if (damage <10){damage=10; }if (me->query_skill("shenyuan-gong",1) <100){ me->delete_temp("dzxy"); return 1;} if(me->query_temp("dzxy")){ me->delete_temp("dzxy"); return 1; } if(me->query("jiali") && random(skill)+20 > random(ob->query_skill("parry", 1)) && exp > exp1/3 && skill > 150 && neili > 300 && living(ob)){ message_vision(HIG"$N立时旁拨侧挑,推气引劲,试图把$n的攻击转向$n自己身上!\n"NOR,me, ob); if(neili >= neili1+random(neili1)+damage){ message_vision(HIY"结果$n看破了$N的意图,招式忽变,$N这一招却未成功!\n"NOR,me, ob); return damage; }else{ message_vision(HIR"$n只觉似乎双手不听使唤,招式被$N一带一引,直向$n自己反击过来!\n"NOR,me,ob); msg = ""; if(random(2)==1) me->add_temp("dzxy", 1); if (ob->query("qi")/2 > damage) ob->receive_damage("qi", damage);if (ob->query("eff_qi") > damage/3) ob->receive_wound("qi", damage/3); p = ob->query("qi")*100/ob->query("max_qi"); msg += "( $n"+eff_status_msg(p)+" )\n"; j = -(damage*2+skill); } }else{ msg = parry_msg[random(sizeof(parry_msg))]; if(neili >= random(neili1)+damage){ msg += HIR"\n果基本上卸掉了$n的力道。\n"NOR; j = -(damage+skill); } else{ j = damage/2+random(damage/2); if(j<damage/2) msg += HIC"\n结果卸掉了一些$n的力道。\n"NOR; else msg += HIB"\n结果卸掉了$n一半的力道。\n"NOR; j = -j; } } message_vision(msg, me, ob); return j; }void bishen (object me, object ob){ int damage, p,ran; object weapon; string msg, menpai;if (!me) return;if (!ob) return;if (!living(ob))return;if (me->query("neili") <500) return;if (me->query("jing") <100) return; damage = (int)me->query_skill("douzhuan-xingyi", 1); damage += damage + random (damage); menpai = ob->query("family/family_name"); weapon = me->query_temp("weapon");ran=random(24)+1; msg = HIW"\n以彼之道,还施彼身。突然之间,$N使出一招绝技。\n\n"NOR; switch ( ran ) { case 1 : if ( objectp( me->query_temp("weapon")) ) { msg += BLU"\n突然$N大喝一声:「雷动九天」,面色唰的变得通红,须发皆飞,真气溶入" + weapon->name() + BLU"当中,“嗡”的一声,发出"HIW"闪闪光亮"BLU"!\n" NOR; me->add("neili", -10); me->add("jing", -10);if (ob->query("qi")/2 > damage/2) ob->receive_damage("qi", damage/2); p = (int)ob->query("qi")*100/(int)ob->query("max_qi"); msg += "( $n"+eff_status_msg(p)+" )\n"; } else { msg += "$N忽然跃起,左脚一勾一弹,霎时之间踢出一招「"HIY"如"NOR"」字诀的穿心腿,直袭$n前胸!\n"; me->add("neili", -10); me->add("jing", -10);if (ob->query("qi")/2 > damage/3) ob->receive_damage("qi", damage/3); p = (int)ob->query("qi")*100/(int)ob->query("max_qi"); msg += "( $n"+eff_status_msg(p)+" )\n"; msg += "\n紧接着$N左腿勾回,将腰身一扭,那右腿的一招「"HIY"影"NOR"」字诀便紧随而至,飞向$n!\n"; me->add("neili", -10); me->add("jing", -10);if (ob->query("qi")/2 > damage/3) ob->receive_damage("qi", damage/3); ob->receive_wound("qi", damage/3); p = (int)ob->query("qi")*100/(int)ob->query("max_qi"); msg += "( $n"+eff_status_msg(p)+" )\n"; msg += "\n只见$N右脚劲力未消,便凌空一转,左腿顺势扫出一招「"HIY"随"NOR"」字诀,如影而至!\n"; me->add("neili", -10); me->add("jing", -10);if (ob->query("qi")/2 > damage/3) ob->receive_damage("qi", damage/3); ob->receive_wound("qi", damage/2); p = (int)ob->query("qi")*100/(int)ob->query("max_qi"); msg += "( $n"+eff_status_msg(p)+" )\n"; msg += "\n半空中$N脚未后撤,已经运起「"HIY"形"NOR"」字诀,内劲直透脚尖,在$n胸腹处连点了数十下!\n"; me->add("neili", -10); me->add("jing", -10);if (ob->query("qi")/2 > damage/3) ob->receive_damage("qi", damage/3); p = (int)ob->query("qi")*100/(int)ob->query("max_qi"); msg += "( $n"+eff_status_msg(p)+" )\n"; } break; case 2 : if ( objectp( me->query_temp("weapon")) ) msg += HIW "\n$N飘身而起,使出峨嵋绝技「灭剑」心法,顿时剑意空灵飘逸,似万千柳絮飞舞,又如和风阵阵拂过。$n惊骇之下,顿时出招散乱,无从招架!\n\n" NOR; else msg += MAG "\n只见$N面显庄严,一式「"HIY"佛光普照"MAG"」,提一口真气,飘身而上,半空中手掌交错,一股内劲狭带着热浪,如风如火,似雷似电,这一招拍出,击向$n,招式平平淡淡,一成不变,但却挡无可挡,避无可避!\n"NOR; me->add("neili", -10); me->add("jing", -10);if (ob->query("qi")/2 > damage/5) ob->receive_wound("qi", damage/5); ob->receive_wound("qi", damage/3); p = (int)ob->query("qi")*100/(int)ob->query("max_qi"); msg += "( $n"+eff_status_msg(p)+" )\n"; break; case 3 : if ( objectp( me->query_temp("weapon")) ) msg += BLU"\n $N长笑一声,剑交左手,蹂身而上,施展「风雷四击」绝技,试图快速击伤$n \n"NOR; else msg += YEL "\n$N凝气于指,一式「阳关三叠」点出,但听得嗤嗤声响,一股纯阳的内力直袭$n胸口!\n" NOR; me->add("neili", -10); me->add("jing", -10);if (ob->query("qi")/2 > damage/4) ob->receive_wound("qi", damage/4); ob->start_busy(1); p = (int)ob->query("qi")*100/(int)ob->query("max_qi"); msg += "( $n"+eff_status_msg(p)+" )\n"; break; case 4 : if ( objectp( me->query_temp("weapon")) ) { msg += CYN"\n$N使出太极剑法"RED"「缠」"CYN"字诀,一柄"+weapon->name()+CYN"在画着一个个圆圈,每一招均是以弧形刺出,弧形收回。神在剑先,绵绵不绝,便如撒出了一张大网,逐步向$n收紧!\n\n"NOR; msg += HIY"结果太极剑意散发出的细丝越积越多,似是积成了一团团丝棉,将$n紧紧裹了起来!\n"NOR;if (!ob->is_busy() && random(2)==0) ob->start_busy(6); } else { msg += CYN"太极之意连绵不断,有如自去行空,一个圆圈未完,第二个圆圈已生,喀喇一响,$p一处骨头被绞断!\n"NOR; me->add("neili", -10); me->add("jing", -10);if (ob->query("qi")/2 > damage/3) ob->receive_wound("qi", damage/3); p = (int)ob->query("qi")*100/(int)ob->query("max_qi"); msg += "( $n"+eff_status_msg(p)+" )\n"; } break; case 5 : if ( objectp( me->query_temp("weapon")) ) { if ( me->query("gender") == "男性") msg += HIC"长啸一声,使出平生绝技,连环三击,正是华山剑宗绝学“"HIY"夺命连环三仙剑"HIC"”!\n"NOR; else msg += HIC"$N突然使出华山绝技,一式“无双无对,宁式一剑”,只见$N挺剑直出,剑式如虹,嗤嗤之声大作,凌厉绝伦,剑力已将$n全身笼罩。\n"NOR; msg += "$n怎么也想不到$N能使出自己的成名绝技,一时间不知所措。\n"NOR;if (!ob->is_busy()&& random(2)==0) ob->start_busy(5); } else { msg += MAG"$N使出劈石破玉拳的绝学雷动九天,顿时天空电闪雷鸣!\n"NOR; me->add("neili", -10); me->add("jing", -10);if (ob->query("qi")/2 > damage/3) ob->receive_wound("qi", damage/3); p = (int)ob->query("qi")*100/(int)ob->query("max_qi"); msg += "( $n"+eff_status_msg(p)+" )\n"; } break; case 6 : if ( objectp( me->query_temp("weapon")) ) { msg += CYN "$N抽出一只玉箫凑到嘴边,吹得两下,从箫筒里突然射出一道青光,直扑$n。\n"; msg += "$n躲闪不及,正中前胸!\n"; } else msg += GRN "$N一声清啸,拳脚齐施,使出桃花「狂风绝技」迅捷无伦地攻向$n!\n"NOR; me->add("neili", -10); me->add("jing", -10);if (ob->query("qi")/2 > damage/3) ob->receive_wound("qi", damage/3); p = (int)ob->query("qi")*100/(int)ob->query("max_qi"); msg += "( $n"+eff_status_msg(p)+" )\n"; break; case 7 : if ( objectp( me->query_temp("weapon")) ) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -