// tuwu.c 金蛇吐雾
// Modified by xuanyuan 8/2001

#include <ansi.h>

inherit F_DBASE;
inherit F_SSERVER;

int perform(object me, object target)
{
	object weapon, weapon1, weapon2;
	int i, num, tqi, amount;

	weapon1 = me->query_temp("weapon");

	if( !target && me->is_fighting() ) target = offensive_target(me);

	if( !target || !target->is_character() || target->query("race") != "人类" )
		return notify_fail("你要偷袭谁？\n");

	if( environment(target)->query("no_fight") && !wizardp(me) )
		return notify_fail("在这里你不能施展「金蛇吐雾」使用暗器偷袭！\n");

	if ( !objectp(weapon = present("jinshe zhui", me))  )
		return notify_fail("你身上没有金蛇锥，如何施展「金蛇吐雾」！\n");

	if( weapon->query_amount() < 5 ) 
		return notify_fail("你所剩余的暗器数目不够施展「金蛇吐雾」！\n");

	if( me->query_skill("jinshe-jianfa") < 150 )
		return notify_fail("你在金蛇剑法修为还不够，不能施展「金蛇吐雾」使用暗器偷袭！\n");

	if( me->query_skill("jinshe-zhuifa") < 100 )
		return notify_fail("你在金蛇锥法修为还不够，不能施展「金蛇吐雾」使用暗器偷袭！\n");

	if( me->query_skill("force") < 100 )
		return notify_fail("你的内功修为火候未到，劲力不足以施展「金蛇吐雾」发射暗器偷袭！\n");

	if( me->query("max_neili") <= 800 )
		return notify_fail("你的内力修为不足，劲力不足以施展「金蛇吐雾」发射暗器偷袭！\n");

	if( me->query("neili") <= 600 )
		return notify_fail("你的内力不够，劲力不足以施展「金蛇吐雾」发射暗器偷袭！\n");

	message_vision(HIR "\n\n突然间$N挺身对着$n刺出一剑，同时扬手施展「金蛇吐雾」，数\n"
			"枚"+weapon->name()+"无声无息地电闪飞至$n身前！\n" NOR, me, target);

	tell_object(target, "你突然发现"+me->name()+"发出"+weapon->name()+"向你偷袭！\n");

	me->set_temp("jingshe/tuwu", 1);

	amount = me->query_skill("sword") / 10;

	if ( amount < 40 ) amount = 40;
	if ( amount > 80 ) amount = 80;

	me->add_temp("apply/damage", amount);
	me->add_temp("apply/attack", amount*2);
	me->add_temp("apply/dodge", amount*2);
	COMBAT_D->do_attack(me, target, me->query_temp("weapon"));
	me->add_temp("apply/damage", -amount);
	me->add_temp("apply/attack", -amount*2);
	me->add_temp("apply/dodge", -amount*2);

	tqi = target->query("max_qi");

	if( objectp(weapon2 = target->query_temp("weapon")) ) {
	    if (me->query_str() >= target->query_str()) {
		switch ( random(2) ) {
		   case 0:
			message_vision("$N射出的"+weapon->name()+"撞击上$n的"+weapon2->name()+"，擦出点点火星。\n", me, target);
			message_vision("$N猛然觉得虎口大震，手中的"+weapon2->name()+"脱手飞上半空！\n", target);
			weapon->add_amount(-1);
			weapon2->move(environment(me));
			break;
		   case 1:
			weapon->throw_ob(me, target);
			break;
		}
	    }			
	    else weapon->throw_ob(me, target);
	}
	else weapon->throw_ob(me, target);

	num = 2 + random(2);
	for (i=1; i<num+1; i++) {
		weapon->throw_ob(me, target);
                me->reset_action();
	}
	if( target->query("qi")*100 / tqi <= 80 ) target->kill_ob(me);
        else if( !target->is_fighting(me) ) target->fight_ob(me);

	me->add("neili", - (300 + amount*3));
	me->start_busy(1+random(3));
	me->delete_temp("jingshe/tuwu");

	return 1;
}
