class ACTION_DamagePawnX extends ACTION_DamagePawn;


var(Action) int MaxVictims;


function bool InitActionFor(ScriptedController C)
{
	local Actor A;
	local Pawn Victim, Instigator;
	local int Damage, count;

	switch ( DamageInstigator ) {
		case DMG_Instigator: 	Instigator = C.Instigator; 		    break;
		case DMG_Myself: 		Instigator = C.Pawn; 				break;
	}
	
	ForEach C.DynamicActors(VictimClass, A, VictimTag) {
		Victim = Pawn(A);
        if ( Victim.Health <= 0 || Victim.bDeleteMe )
            continue;
        
		if ( DamageInstigator == DMG_Himself )
			Instigator = Victim;
			
		switch ( DamageCalculation )
		{
			case DCALC_Amount: 			Damage = RandRange(MinDamageAmount, MaxDamageAmount); break;
			case DCALC_HealthPct: 		Damage = Victim.Health * ( MinDamagePct + frand()*(MaxDamagePct - MinDamagePct) ); break;
			case DCALC_HealthMaxPct:	Damage = Victim.HealthMax * ( MinDamagePct + frand()*(MaxDamagePct - MinDamagePct) ); break;
		}
		
		Victim.TakeDamage(Damage, Instigator, Victim.Location, vect(0,0,0), DamageType);
        if ( ++count >= MaxVictims )
            break;
	}

	return false;
}

function string GetActionString()
{
	return ActionString @ GetItemName(String(VictimClass)) @ VictimTag;
}

defaultproperties
{
     MaxVictims=1
     DamageType=Class'Engine.Suicided'
}
