feilong.c
来自「C实现的MUD,对大家基本入门网络游戏很有帮助!」· C语言 代码 · 共 137 行
C
137 行
#include <ansi.h>#include <combat.h> #include "/kungfu/skill/eff_msg.h";inherit F_SSERVER;void attack_1();void attack_2();void attack_3();void finish();void attack(int n);int perform(object me, object target){ string msg; 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_skill("yinlong-bian",1) < 150 ) || (me->query_skill("jiuyin-zhengong",1) < 150 ) ) return notify_fail("你的功夫还不够娴熟,不会使用飞龙。\n"); if( !weapon || weapon->query("skill_type") != "whip" || me->query_skill_mapped("whip") != "yinlong-bian" ) return notify_fail("你现在无法使用飞龙。\n"); if( me->query("neili") < 1500 ) return notify_fail("你的内力不够。\n"); me->start_perform(8,"飞龙"); msg = HIG "$N使出九阴银龙鞭的「飞龙」,将一条鞭子使的滴水不漏。\n"NOR; me->add_temp("apply/dodge",300);// busy 在各个 callout 连续增加 me->start_busy(2); message_vision(msg, me, target); call_out("attack_1",3); me->add("neili", -1000); return 1;}void attack_1(){ object me = this_player(); object target = offensive_target(me); if (me->is_fighting()) { attack(3); me->start_busy(2); call_out("attack_2",3); } else call_out("finish",1);}void attack_2(){ object me = this_player(); object target = offensive_target(me); if (me->is_fighting()) { attack(4); me->start_busy(2); call_out("attack_3",3);} else call_out("finish",1);}void attack_3(){ object me = this_player(); object target = offensive_target(me); if (me->is_fighting()) { attack(5); me->start_busy(1); call_out("finish",1);} else call_out("finish",1);}void finish(){ object me = this_player(); message_vision(HIY"\n$N力气不济,鞭法缓了下来。\n"NOR, me); me->add_temp("apply/dodge",-300);}void attack(int n){ object me = this_player(); object target = offensive_target(me); int damage = me->query_skill("yinlong-bian", 1), p; object weapon = me->query_temp("weapon"); string msg, dodge_skill; if( !weapon || weapon->query("skill_type") != "whip" || me->query_skill_mapped("whip") != "yinlong-bian" ) return; message_vision(HIY"\n$N突然抽空挥鞭向$n攻去!\n"NOR, me, target); if (userp(target)){ if ( random(me->query("combat_exp")) > target->query("combat_exp")/3 ) { message_vision(HIR"但见飞舞的"+weapon->name()+"从天而下和$n缠在一起,一股排山倒海的内劲无声息的向$n胸口撞去!\n"NOR, me, target); damage = damage * n + random(damage); target->receive_damage("qi", damage); target->receive_wound("qi", random(damage)); p = (int)target->query("qi")*100/(int)target->query("max_qi"); msg = damage_msg(damage, "拉伤"); msg += "( $n"+eff_status_msg(p)+" )\n"; message_vision(msg, me, target); } else { dodge_skill = target->query_skill_mapped("dodge"); if( !dodge_skill ) dodge_skill = "dodge"; msg = SKILL_D(dodge_skill)->query_dodge_msg(target, 1); message_vision(msg, me, target); }}else{ if ( random(me->query_skill("yinlong-bian", 1)) > target->query_skill("dodge", 1)/3 ) { message_vision(HIR"但见飞舞的"+weapon->name()+"从天而下和$n缠在一起,一股排山倒海的内劲无声息的向$n胸口撞去!\n"NOR, me, target); damage = damage * n + random(damage); target->receive_damage("qi", damage); target->receive_wound("qi", random(damage)); p = (int)target->query("qi")*100/(int)target->query("max_qi"); msg = damage_msg(damage, "拉伤"); msg += "( $n"+eff_status_msg(p)+" )\n"; message_vision(msg, me, target); } else { dodge_skill = target->query_skill_mapped("dodge"); if( !dodge_skill ) dodge_skill = "dodge"; msg = SKILL_D(dodge_skill)->query_dodge_msg(target, 1); message_vision(msg, me, target); }}}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?