class ACTION_KillPawn extends ScriptedAction; /** * Who killed pawn? * KILLER_None - nobody (none) * KILLER_Instigator - ScriptedController.Instigator.Controller * KILLER_Myself - ScriptedController * KILLER_Suicide - Victim's controller */ enum EKiller { KILLER_None, KILLER_Instigator, KILLER_Myself, KILLER_Suicide }; var(Action) class VictimClass; var(Action) name VictimTag; var(Action) class DamageType; var(Action) EKiller Killer; function bool InitActionFor(ScriptedController C) { local Actor A; local Pawn Victim; local Controller KillerController; switch ( Killer ) { case KILLER_Instigator: if ( C.Instigator != none ) KillerController = C.Instigator.Controller; break; case KILLER_Myself: KillerController = C; break; } ForEach C.DynamicActors(VictimClass, A, VictimTag) { Victim = Pawn(A); if ( Killer == KILLER_Suicide ) KillerController = Victim.Controller; Victim.Died(KillerController, DamageType, Victim.Location); } return false; } function string GetActionString() { return ActionString @ GetItemName(String(VictimClass)) @ VictimTag; } defaultproperties { VictimClass=Class'Old2k4.Monster' ActionString="Kill pawn" }