?? lianhuan.c
字號:
//heijian-jindao 連環三刀
//by fqyy
/*
這一刀當頭直砍,招數似乎頗為呆滯,楊過只須稍一側身,便可輕易避過,然而谷主黑
劍所劃劍圈卻籠罩住了他前后左右,令他絕無閃避躲讓之處。楊過只得舉起半截鋼杖,一招
“只手擎天”,硬接了他這招。但聽得當的一聲巨響,刀杖相交,只爆得火花四濺,楊過雙
臂只感一陣酸麻。公孫谷主第二刀連著又上,招法與第一刀一模一樣。楊過武學所涉既廣,
臨敵時又是機靈異常,但竟無法破解他這笨拙鈍重的一招,除了同法硬架之外,更無善策。
刀杖二度相交,楊過雙臂酸麻更甚,心想只要再給他這般砍上幾刀,我手臂上的筋絡也要給
震壞了。思念未定,谷主第三刀又砍了過來。再接數刀,楊過手中的半截鋼杖已給金刀砍起
累累缺口,右手虎口上也震出血來。
公孫谷主見他危急之中仍是臉帶微笑,左手一刀砍過,右手黑劍□地往他小腹上刺去。
楊過此時已給他逼在廳角,眼見劍尖刺到,忙伸手平掌一擋,劍尖刺中他掌心,劍刃彎成弧
形,彈了回來。原來小龍女的掌套甚是堅密,黑劍雖利,卻也傷它不得。
*/
#include <ansi.h>
inherit F_SSERVER;
#include "/kungfu/skill/eff_msg.h";
void next1(object me, object target, int i);
void next2(object me, object target, int i);
int perform(object me,object target)
{
int i;
string msg;
object *inv;
object weapon2;
object weapon = me->query_temp("weapon");
if( !target ) target = offensive_target(me);
if( !target
|| !target->is_character()
|| !me->is_fighting(target) )
return notify_fail("連環三擊只能對戰斗中的對手使用。\n");
if( me->query("neili") <= 1000 )
return notify_fail("你的內力不夠使用連環三擊!\n");
if( me->query("jing") <= 500 )
return notify_fail("你的精力不夠使用連環三擊!\n");
if( me->query_skill("heijian-jindao",1) < 60 )
return notify_fail("你黑劍金刀未到爐火純青之境!\n");
if (!weapon)
return notify_fail("你手中無劍怎能使用連環三擊?!\n");
if (!me->query_temp("heijian-jindao/luanren",1)||!me->query_temp("heijian-jindao/nizhuan",1))
return notify_fail("你不使用“陰陽倒亂刃法”怎么能用連環三擊封住敵人行動!\n");
if ( me->query_skill_mapped("sword") != "heijian-jindao"
|| me->query_skill_mapped("parry") != "heijian-jindao"
|| me->query_skill_mapped("blade") != "heijian-jindao"
&& userp(me))
return notify_fail("你必須先將黑劍金刀相互配合。\n");
inv = all_inventory(me);
for(i=0; i<sizeof(inv); i++) {
if( inv[i]->query("equipped") || weapon == inv[i] ) continue;
if (weapon->query("skill_type") == "blade") {
if( inv[i]->query("skill_type") == "sword" )
{
weapon2 = inv[i];
i = 3;
break;
}
}
if (weapon->query("skill_type") == "sword") {
if( inv[i]->query("skill_type") == "blade" )
{
weapon2 = inv[i];
i = 2;
break;
}
}
}
if (!objectp(weapon2)) return notify_fail("你只有一種兵器就想連環三擊?\n");
msg = HIM"$N這一刀當頭直砍,招數似乎頗為呆滯,$n只須稍一側身,便可輕易避過,\n"+
"然而$N所劃劍圈卻籠罩住了他前后左右,令$n絕無閃避躲讓之處。\n"NOR;
me->start_perform(5,"「連環三擊」");
if((random(me->query_skill("heijian-jindao",1)) + me->query_int()) >
(target->query_skill("dodge",1)/3 + target->query_int())) {
msg = msg + HIR "$n只得一招“只手擎天”,硬接了$N這招。\n" NOR;
target->add_busy(random(i*5) + 2);
}
else {
msg = msg + HIW "可是$n看破了$N的企圖,飛快的向后退去。\n" NOR;
me->start_busy(2);
}
message_vision(msg, me, target);
next1(me, target, i);
return 1;
}
void next1(object me, object target, int i)
{
string msg;
int damage;
object weapon;
if (!me) return ;
weapon = me->query_temp("weapon");
if (!weapon || !target || !living(me) || !me->is_fighting(target)) {
return ;
}
msg = HIG"\n$N第二刀連著又上,招法與第一刀一模一樣。\n"+
"$n武學所涉既廣,臨敵時又是機靈異常,但竟無法破解他這笨拙鈍重的一招,除了同法硬架之外,更無善策。\n"NOR;
if((random(me->query("max_neili")) + me->query_skill("force",1)) >
(target->query("max_neili") + target->query_skill("force",1))/3 ||(target->is_busy()&&random(2))){
msg = msg + HIR"$N$n二度相拼,$n雙臂酸麻更甚,只要再給$N這般砍上幾刀,$n手臂上的筋絡也要給震傷。\n"NOR;
damage = me->query_skill("heijian-jindao",1);
damage += me->query_skill("blade",1);
damage += random(damage);
if (!target->is_busy()) target->start_busy(damage/500);
target->add("neili",-(500+random(150)));
target->receive_damage("qi", damage);
target->receive_wound("qi", damage/3);
msg += damage_msg(damage, "震傷");
msg = replace_string(msg, "$w", weapon->name());
msg = replace_string(msg, "$l", "手臂");
message_vision(msg, me, target);
COMBAT_D->report_status(target, random(2));
me->add("neili",-300);
me->start_busy(2);
me->add("jing",-100);
} else {
msg = msg + CYN"$n內力深厚硬生生接下了這一招。\n"NOR;
message_vision(msg, me, target);
me->start_busy(1+random(2));
target->start_busy(1+random(2));
}
next2(me, target, i);
}
void next2(object me, object target, int i)
{
string msg;
int damage;
object weapon;
if( !me ) return ;
weapon = me->query_temp("weapon");
if (!weapon || !target || !living(me) || !me->is_fighting(target)) {
return ;
}
msg = HIC "\n$n思念未定,$N第三刀又砍了過來。左手一刀砍過,右手劍法突地往$n小腹上刺去。\n"NOR;
if((random(me->query("combat_exp")) + me->query_str()) >
(target->query("combat_exp") + target->query_str())/3 ||(target->is_busy()&&random(2))){
msg = msg + HIW "$n此時已給$N逼在廳角,眼見劍尖刺到,忙伸手平掌一擋,劍尖刺中$n掌心!\n"NOR;
damage = me->query_skill("heijian-jindao",1);
damage += me->query_skill("sword",1);
damage += random(damage);
if (!target->is_busy()) target->start_busy(damage/500);
target->add_temp("apply/attack", -100);
target->add_temp("apply/dodge", -100);
target->add_temp("apply/parry", -100);
target->receive_damage("qi", damage);
target->receive_wound("qi", damage/3);
msg += damage_msg(damage, "刺傷");
msg = replace_string(msg, "$w", weapon->name());
msg = replace_string(msg, "$l", "手心");
message_vision(msg, me, target);
COMBAT_D->report_status(target, random(2));
me->add("neili",-300);
me->add("jing",-50);
call_out("back", 5 + random(me->query("jiali") / 20), target);
} else {
msg = msg + HIW "$n此時已給他逼在廳角,眼見劍尖刺到,忙伸手平掌一擋,劍尖刺中他掌心,\n$n內力深厚使得劍刃彎成弧形,彈了回來。\n" NOR;
message_vision(msg, me, target);
me->start_busy(2);
target->start_busy(1+random(2));
}
}
void back(object target)
{
if (!target) return;
target->add_temp("apply/attack", 100);
target->add_temp("apply/dodge", 100);
target->add_temp("apply/parry", 100);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -