//枯骨三式 design by forsky 9/12/2000
//kugu.c
//update by sadboy 4/24/2001 
#include <ansi.h>

inherit SSERVER;

int perform(object me, object target)
{       
        string msg;
        int damage, ap, dp;

        if( !target ) target = offensive_target(me);

        if( !target
        ||      !target->is_character()
        ||      target->is_corpse()
        ||      target==me
        ||      !me->is_fighting(target)
        ||      !living(target))
                return notify_fail("你要对谁施展这一招"HIR"「枯骨三式」"NOR"？\n");        

        if( (int)me->query_skill("blade", 1) < 300 
        ||  (int)me->query_skill("huntian-qigong", 1) < 250 
        ||  (int)me->query_skill("kugu-blade", 1) < 300)
                return notify_fail("你有的功夫还不够娴熟，不会使用"HIR"「枯骨三式」"NOR"。\n");
                
        if( (int)me->query("max_force") < 2000 )
                return notify_fail("以你现在的内功修为还使不出「枯骨三式」。\n");
                
        if( (int)me->query("force") < 2000 )
                return notify_fail("你的真气不够！\n");
                
                if((string)me->query("family/family_name")!="陷空山无底洞")
                return notify_fail("这招是陷空山无底洞不传之秘，你不能用！");

        me->start_busy(1);

        me->add("force", -100-(int)me->query("force_factor"));
        me->receive_damage("kee", 30);
        msg = HIC "\n$N突然脸上黑气一现，仰天怪笑几声，使出无底洞绝技「枯骨三式」！\n" NOR;

        ap = me->query_skill("kugu-blade") + me->query_skill("blade");
        ap = ( ap * ap * ap / (32 * 400) ) + (int)me->query("kee");
  //      ap = ap*2500 + (int)me->query("combat_exp");
        dp = target->query_skill("parry")+ target->query_skill("dodge");
        dp = ( dp * dp * dp / (32 * 400) ) + (int)target->query("kee");
 //       dp = dp*2500 + target->query("combat_exp");
//        if( random(ap + dp) > dp )
           if( ap > (dp + random(dp))/2 )
        {           call_out("perform3", 0, me, target);
                    call_out("perform2", 0, me, target);
                    call_out("perform1", 0, me, target);
        }        
          else
                msg += HIR "\n$N突然觉得对方的劲力如气墙般压来，招式竟使不出来！\n" NOR;
                me->start_busy(3);
                
                message_vision(msg, me, target);
                if( damage > 0 ) 
                COMBAT_D->report_status(target);
      
                if( !target->is_fighting(me) ) 
                {
                        if( living(target) ) 
                        {
                                if( userp(target) ) target->fight_ob(me);
                                else target->kill_ob(me);
                        }
                }
                return 1;
}

//第一式
int perform1(object me, object target)
{
        int damage;
        string msg;
        
        msg = HIY "[枯骨三式] 第一式！\n"NOR;
        damage = (int)me->query("max_force") / 5 + random((int)me->query("eff_kee") /10);
        damage = damage - (int)target->query("max_force") / 10 - random((int)target->query("eff_kee") / 15);
        damage+=(int)me->query("force_factor")-random((int)target->query("force_factor"));
            if( damage > 0 )
            {
                msg += HIC "$N手腕一沉，一刀向$n的下三路撩了过来！\n" NOR;
                msg += HIC "$n没想到招式如此之怪，突然愣住了。\n" NOR;
                msg += HIC "只听见「哧」的一声，$n的右腿被划了一条深可见骨的伤口。\n" NOR;
                    target->receive_damage("sen", damage, me);
                    target->receive_wound("sen", damage/4, me);
                    target->receive_damage("kee", damage, me);
                    target->receive_wound("kee", damage/4, me);
                    me->improve_skill("kugu-blade", 1, 1);

            }
            else
            {
                    msg += HIR "$n大笑几声，就你这点微末技俩，也能伤我？\n" NOR;
                    msg += HIR "$n运起轻功，躲开了。\n" NOR;
                    me->improve_skill("blade", 1, 1);
            }
                 
        message_vision(msg, me, target);
        if( damage > 0 ) COMBAT_D->report_status(target);

        return 1;
}

// 第二式
int perform2(object me, object target)
{
        int damage;
        string msg;

        
        msg = HIY "[枯骨三式]第二式！\n"NOR;
        if (random(5)>2)
                msg += HIC"\n但见$N刀交左手，募的砍向$n的中路，$n惊惶失措！\n"NOR;
        else
        msg += HIC"\n但见$N刀交左手，突然冲进$n的怀中，刀势凌厉，$n早已吓慌了手脚！\n"NOR;

       if (me->query("combat_exp") > random(target->query("combat_exp")))
        {
                msg += HIC "$n惊骇之下，顿时出招散乱，无从招架！\n" NOR;
                msg += HIC "谁知$N出的竟是虚招，刀锋急转，砍向$n的左腿！\n" NOR;
                msg += HIC "$n躲闪不及，哇地一声惨呼，左腿几乎被砍断！\n" NOR;

                me->add("force", -300);
                damage = (int)me->query_skill("kugu-blade", 1);
                damage = damage+(int)me->query_skill("blade", 1);
                damage = damage*2;
                damage = random(damage - (int)target->query_skill("parry", 1) - (int)target->query_skill("dodge", 1));
                target->receive_damage("kee", damage);
                target->receive_wound("kee", damage/4);
                me->improve_skill("kugu-blade", 1, 1);
                

        }
        else 
        {
                msg += HIR "$n强忍伤痛，向旁边跳了过去，躲过了这一招。\n"NOR;
                me->improve_skill("blade", 1, 1);
        }
                 
        message_vision(msg, me, target);
        if( damage > 0 ) COMBAT_D->report_status(target);

        return 1;
}

//第三式
int perform3(object me, object target)
{
        int damage;
        string msg;
        
        msg = HIY "[枯骨三式] 第三式！\n"NOR;
        if (random(5)>2)
        {
                msg += HIC "\n$N仰天狞笑，兵器竟然脱手飞出，破空射向$n的心窝！\n"NOR;
                msg += HIC "$n大吃一惊，但见$N空手猱身而上，双手擒拿点拍，攻势凌厉之极！\n"NOR;
        }
        else
        msg += HIC "\n$N仰天狞笑，一刀挟风雷之威砍向$n的心窝！\n"NOR;

if (me->query_skill("kugu-blade",1) > random(target->query_skill("dodge",1)+target->query_skill("parry",1))/2)
        {
                msg += HIC "$n慌乱中已经躲闪不及,$N手中的刀已经砍在$n的胸口。\n" NOR;

                me->add("force", -500);
                damage = (int)me->query_skill("kugu-blade", 1);
                damage = damage+(int)me->query_skill("blade", 1);
                damage = random(damage*2);
                target->receive_damage("kee", damage);
                target->receive_wound("kee", damage/3);
                me->improve_skill("kugu-blade", 1, 1);
        }
        else 
        {
                msg += HIR "$n使尽全身的力气向旁边滚了过去，虽然躲过了这一招，但已狼狈不堪。\n"NOR;
                me->add("force", -400);
        }
        
        message_vision(msg, me, target);
        if( damage > 0 ) COMBAT_D->report_status(target);
        
        me->start_busy(2+random(2));
        return 1;
}
