// zuijiu.c 醉酒

#include <ansi.h>
#include <combat.h>

inherit F_SSERVER;

int perform(object me, object target)
{
      string msg;                                   
      int limit, damage;
      object weapon = me->query_temp("weapon");
      limit = (me->query("con") + (int)me->query("max_neili") / 50) * 2;
      
      if( !target ) target = offensive_target(me);
     
      if( !target || !me->is_fighting(target) )
      return notify_fail("「八仙醉打」只能在战斗中对对手使用。\n");

      if (!weapon || weapon->query("skill_type") != "club"
        || me->query_skill_mapped("club") != "zui-gun")
                return notify_fail("你现在无法使用「八仙醉打」。\n");
                     
      if( (int)me->query_skill("zui-gun",1) < 100 )
      return notify_fail("你的醉棍不够娴熟，不会使用「八仙醉打」！\n");
      
      if( me->query_skill_mapped("force") != "hunyuan-yiqi" )
                return notify_fail("你现在无法使用「八仙醉打」。\n");

      if( (int)me->query_skill("hunyuan-yiqi",1) < 100 )
      return notify_fail("你的混元一气功等级不够，不能使用「八仙醉打」！\n");  
       
      if( (int)me->query_str() < 25 )
      return notify_fail("你的臂力不够强，不能使用「八仙醉打」！\n");
      
      if( (int)me->query("max_neili") < 800 )
      return notify_fail("你的内力太弱，不能使用「八仙醉打」！\n");
      
      if( (int)me->query("neili") < 250 )
      return notify_fail("你的内力太少了，无法使用出「八仙醉打」！\n");   
                                                                                 
      if(userp(me) && (int)me->query_condition("drunk", 1) > limit/2 )
      return notify_fail("你连醉意都没有，怎么能使出八仙醉打的功夫？\n");

      msg = HIY"$N突然一个醉嗝向$n打去，顿时熏的$n不知所措，$N借着酒劲顿时醉棍威力大增！\n"NOR;

      if( random(10) > 6 && (int)me->query("combat_exp") > random((int)target->query("combat_exp"))/ 3)
      {
      me->start_busy(1);
      target->start_busy(1);

      damage = (int)me->query_skill("zui-gun", 1);
      damage = (int)me->query_skill("hunyuan-yiqi", 1) +damage;
      damage = (int)me->query_skill("buddhism", 1) +damage;
      damage = damage + random(damage/2);
             
      target->receive_damage("qi", damage);
      target->receive_wound("qi", damage/3);

      me->add("neili", -150);
      if( damage < 300 ) msg += HIY"结果$n脸色变得惨白，踉踉跄跄退了好几步！\n"NOR;
      else if( damage < 400 ) msg += HIY"结果重重地击中，$n「哇」地一声吐出一口鲜血！\n"NOR;
      else if( damage < 500 ) msg += HIR"结果「轰」地一声，$n全身气血倒流，口中鲜血狂喷而出！\n"NOR;
      else msg += HIR"\n结果只听见几声喀喀轻响，$n一声惨叫，像滩软泥般塌了下去！！\n"NOR;
      me->start_busy(1);
        } else 
        {       me->start_busy(random(3));
                me->add("neili", -100);                
                msg += HIY"可是$p一个腾挪，远远的躲了开去。\n"NOR;
        }

                message_vision(msg, me, target);
        return 1;
}

