// netherbolt.c

#include <ansi.h>

inherit SSERVER;

int cast(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)
		return notify_fail("璶癸街琁甶硂猭砃\n");

	if((int)me->query("mana") < 25 )
		return notify_fail("猭ぃ镑\n");

	if((int)me->query("sen") < 10 )
		return notify_fail("弘⊿Τ快猭Τ栋い\n");

	me->add("mana", -25);
	me->receive_damage("sen", 10);

	if( random(me->query("max_mana")) < 50 ) {
		write("ア毖\n");
		return 1;
	}

	msg = HIC "$Nい充充搬帝〨ゅオも揣もい籈癬刮獵甮$n\n\n" NOR;

	ap = me->query_skill("spells");
	ap = ( ap * ap * ap / 4 ) * (int)me->query("sen") / 100;
	dp = target->query("combat_exp");
	if( random(ap + dp) > dp ) {
		damage = (int)me->query("max_mana") / 10 + random((int)me->query("eff_sen") / 10);
		damage -= (int)target->query("max_mana") / 30 + random((int)me->query("eff_sen") / 15);
		if( damage > 0 ) {
			msg +=  HIR "挡狦夺羘獵眖$pō硓砰τ筁╈兵﹀絙甮\n"
					"ㄢ\n" NOR;
			target->receive_damage("kee", damage, me);
			target->receive_wound("kee", damage/3, me);
			me->improve_skill("necromancy", 1, 1);
		} else
			msg += "挡狦夺羘獵眖$pō硓砰τ筁礚羘礚苝\n";
	} else
		msg += "琌砆$n跟秨\n";

	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);
		}
		me->kill_ob(target);
	}

	me->start_busy(2);
	return 1;
}

