// 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("An֬IioӪkNS\n");

	if((int)me->query("mana") < 25 )
		return notify_fail("AkOT\n");

	if((int)me->query("sen") < 10 )
		return notify_fail("A믫SkĶT\n");

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

	if( random(me->query("max_mana")) < 50 ) {
		write("AѤFT\n");
		return 1;
	}

	msg = HIC "$Nfa۩GM@M⤤E_@ΫCgV$nT\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 "Guva@nMCq$pWzӹLMX@bg\n"
					"TV~aUT\n" NOR;
			target->receive_damage("kee", damage, me);
			target->receive_wound("kee", damage/3, me);
			me->improve_skill("necromancy", 1, 1);
		} else
			msg += "Guva@nMCq$pWzӹLMLnLapJaUT\n";
	} else
		msg += "OQ$n}FC\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;
}

