
#include MARINES_evil.txt


ACTOR EvilMarineSpawner Replaces WolfensteinSS
{
	//***Che radius, height and maxdropoffheight (n/a for flying ones) MUST be kept consistent with FBD_TrySpawn in FBD_CORE.acs!
	
	//$category "FBD Chaos Marines"
	
	MONSTER
	-COUNTKILL
	Radius 14
	Height 56
	Health 120
	+INVULNERABLE
	States
	{
		Spawn:
			SSWV A 0 NODELAY ACS_NamedExecuteAlways("FBD_WolfensteinCheck", 0, 0, 0, 0)
			TNT1 A 5 // give it 3 tics to run its course
			
			//***Che: fixed sript 177 ruining TIDs and thus scripted maps
			// the fixed script does not break TID but runs longer, with delays
			
			// deciding whom to spawn:
			
			//***Che: I have no idea who this is and which megawad he belongs to
			TNT1 A 0 A_JumpIf(y == 1824, "IsMrX") 
			
			//***Che this is activated by any of them spawning on floor texture "FL0" (see the ACS script)
			//  I have no idea what this is about
			TNT1 A 0 A_JumpIfInventory("AltEasyMarineVerification", 1, "ISEasyMarine")
			
			//***Che a more robust check for MAP29 of the "Going Down" megawad
			//TNT1 A 0 A_JumpIf(x == -2560, "ReplaceGoingDown")
			TNT1 A 0 A_JumpIf(x == -2560 && y == 384, "ReplaceGoingDown")
			
			//***Che: no idea again
			TNT1 A 0 A_JumpIf(x == -160 || x == -96 || x == 992 || x == 1056, "IsANazi")
		
			TNT1 A 0 A_JumpIfInventory("Epic2AlienVerification", 1, "ISEpic2Alien")
			TNT1 A 0 A_JumpIfInventory("NaziVerificate2", 1, "IsANazi") //"NaziVerificate1", 1, "VerificateNazi")
			TNT1 A 0 A_JumpIfInventory("AltEasyMarineVerification", 1, "ISEasyMarine")
			
		IsRegularZombie:
			TNT1 A 3 //PLAY A 3
			TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
			TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
			TNT1 A 0 A_ChangeFlag("NOTARGET", 1)
			TNT1 A 0 A_ChangeFlag("NOBLOCKMAP", 1)
			TNT1 A 1 A_Jump(8, "SpawnStrongMofo")
			Wait // Zandronum client trap
			TNT1 A 1 A_Jump(256, "SpawnRifle", "SpawnRifle", "SpawnRifle", "SpawnRifle", "SpawnShotgun")
			Wait // Zandronum client trap
		SpawnRifle:
			TNT1 A 0
			//***Che: fixing flags (all similar lines below modified without commenting)
			//TNT1 A 0 A_SpawnItemEx ("EvilMarineRifle",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG | SXF_CLEARCALLERTID,0, 27)
			TNT1 A 0 A_SpawnItemEx ("ChaosMarineRifle",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG | SXF_TRANSFERPOINTERS | SXF_TRANSFERSPECIAL | SXF_CLEARCALLERSPECIAL | SXF_CLEARCALLERTID  ,0, tid)
			Stop
		SpawnShotgun:
			TNT1 A 0
			//***Che: fixing flags (all similar lines below modified without commenting)
			//TNT1 A 0 A_SpawnItemEx ("EvilMarineRifle",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG | SXF_CLEARCALLERTID,0, 27)
			TNT1 A 0 A_SpawnItemEx ("ChaosMarineShotgun",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG | SXF_TRANSFERPOINTERS | SXF_TRANSFERSPECIAL | SXF_CLEARCALLERSPECIAL | SXF_CLEARCALLERTID  ,0, tid)
			Stop			
		SpawnStrongMofo:
			TNT1 A 0 A_Jump(2, "MakeSurePlayerIsFucked") // one with bfg 9000 :D -- 1/4096th chance
			TNT1 A 1 A_Jump(256, "SpawnPlasma", "SpawnPlasma", "SpawnPlasma", "SpawnPlasma", "SpawnPlasma", "SpawnMinigun", "SpawnSSG", "SpawnRocket", "SpawnRailgun") 
			Wait // Zandronum client trap
		SpawnPlasma:
			TNT1 A 0
			TNT1 A 0 A_SpawnItemEx ("ChaosMarinePlasma",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG |  SXF_TRANSFERPOINTERS | SXF_TRANSFERSPECIAL | SXF_CLEARCALLERSPECIAL | SXF_CLEARCALLERTID  ,0, tid)
			Stop
		SpawnMinigun:
			TNT1 A 0
			TNT1 A 0 A_SpawnItemEx ("ChaosMarinePlasma",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG |  SXF_TRANSFERPOINTERS | SXF_TRANSFERSPECIAL | SXF_CLEARCALLERSPECIAL | SXF_CLEARCALLERTID  ,0, tid)
			Stop
		SpawnSSG:
			TNT1 A 0
			TNT1 A 0 A_SpawnItemEx ("ChaosMarineSSG",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG |  SXF_TRANSFERPOINTERS | SXF_TRANSFERSPECIAL | SXF_CLEARCALLERSPECIAL | SXF_CLEARCALLERTID  ,0, tid)
			Stop			
		SpawnRocket:
			TNT1 A 0
			TNT1 A 0 A_SpawnItemEx ("ChaosMarineRocketLauncher",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG |  SXF_TRANSFERPOINTERS | SXF_TRANSFERSPECIAL | SXF_CLEARCALLERSPECIAL | SXF_CLEARCALLERTID  ,0, tid)
			Stop			
		SpawnRailgun:
			TNT1 A 0
			TNT1 A 0 A_SpawnItemEx ("ChaosMarineRailgun",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG |  SXF_TRANSFERPOINTERS | SXF_TRANSFERSPECIAL | SXF_CLEARCALLERSPECIAL | SXF_CLEARCALLERTID  ,0, tid)
			Stop			
		MakeSurePlayerIsFucked: // bfg 9000, bro
			TNT1 A 0
			TNT1 A 0 A_SpawnItemEx ("ChaosMarineBFG",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG |  SXF_TRANSFERPOINTERS | SXF_TRANSFERSPECIAL | SXF_CLEARCALLERSPECIAL | SXF_CLEARCALLERTID  ,0, tid)
			Stop	
				
		ISANazi:
			TNT1 A 0
			TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
			TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
			TNT1 A 0 A_ChangeFlag("NOTARGET", 1)
			TNT1 A 0 A_ChangeFlag("NOBLOCKMAP", 1)
			//TNT1 A 0 A_JUmp(32, "Ubersoldat")
			
			//***Che
			TNT1 A 0 A_SpawnItemEx("Nazi",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG |  SXF_TRANSFERPOINTERS | SXF_TRANSFERSPECIAL | SXF_CLEARCALLERSPECIAL | SXF_CLEARCALLERTID  ,0, tid)
			Stop
			
	//***Che: totally unfinished, not going to bother with.
	/*	
		Ubersoldat:
			TNT1 A 0
			//***Che
			//TNT1 A 0 A_SpawnItemEx("Ubersoldat", 0, 0, 28, 0, 0, 0, 0, SXF_TRANSFERPOINTERS | SXF_TRANSFERAMBUSHFLAG)
			TNT1 A 0 A_SpawnItemEx("Ubersoldat", 0, 0, 28, 0, 0, 0, 0, SXF_TRANSFERPOINTERS | SXF_TRANSFERAMBUSHFLAG | SXF_TRANSFERSPECIAL)
			Stop	
	*/		
		ReplaceGoingDown: ///***Che: a 2014 cacowards megawad, https://doomwiki.org/wiki/Going_Down
			TNT1 A 0
			TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
			TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
			TNT1 A 0 A_ChangeFlag("NOTARGET", 1)
			TNT1 A 0 A_ChangeFlag("NOBLOCKMAP", 1)
			
			//***Che: this, in theory, makes all barrels in the map explode stronger...
			// Except, in the current BD version they clear this token during their regular standing around.
			TNT1 A 0 A_RadiusGive("BarrelExpMeasure", 10000, RGF_GIVESELF | RGF_MONSTERS | RGF_CORPSES, 10)
			
			//***Che
			//TNT1 A 0 A_SpawnItemEx("MOtherdemon", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERPOINTERS | SXF_TRANSFERAMBUSHFLAG)
			TNT1 A 0 A_SpawnItemEx("MOtherdemon",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG |  SXF_TRANSFERPOINTERS | SXF_TRANSFERSPECIAL | SXF_CLEARCALLERSPECIAL | SXF_CLEARCALLERTID  ,0, tid)
			
			//***Che: TODO: make it be replaced with a special lazer mastermind (unmaker only, no bfg)
			
			Stop	
			
		ISEpic2Alien: //***Che: a 2010 cacowards megawad, https://doomwiki.org/wiki/Epic_2
			TNT1 A 0
			TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
			TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
			TNT1 A 0 A_ChangeFlag("NOTARGET", 1)
			TNT1 A 0 A_ChangeFlag("NOBLOCKMAP", 1)
			//***Che
			TNT1 A 0 A_SpawnItemEx("Epic2Alien",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG |  SXF_TRANSFERPOINTERS | SXF_TRANSFERSPECIAL | SXF_CLEARCALLERSPECIAL | SXF_CLEARCALLERTID  ,0, tid)
			Stop
		
		ISEasyMarine:
			TNT1 A 0
			TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
			TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
			TNT1 A 0 A_ChangeFlag("NOTARGET", 1)
			TNT1 A 0 A_ChangeFlag("NOBLOCKMAP", 1)
			//***Che
			TNT1 A 0 A_SpawnItemEx("EasyMarineRifleAlive",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG |  SXF_TRANSFERPOINTERS | SXF_TRANSFERSPECIAL | SXF_CLEARCALLERSPECIAL | SXF_CLEARCALLERTID  ,0, tid)
			Stop
			
		IsMrX: //***Che: who *is* this? (a clone of ChaosMarinePlasma with 400 health)
			TNT1 A 0
			TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
			TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
			TNT1 A 0 A_ChangeFlag("NOTARGET", 1)
			TNT1 A 0 A_ChangeFlag("NOBLOCKMAP", 1)
			//***Che
			TNT1 A 0 A_SpawnItemEx("MrX",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG |  SXF_TRANSFERPOINTERS | SXF_TRANSFERSPECIAL | SXF_CLEARCALLERSPECIAL | SXF_CLEARCALLERTID  ,0, tid)
			Stop	
	}
}



ACTOR WeakFistsTraitor: ChaosMarineWeak 17921
{
	//***Che: cross-mod hardening: see ACTOR EvmFist: WeakFistsTraitor replaces MarineFist {} // native class doomed num 9101  in Doom_Replacements.txt
	Health 80
	DropItem None
	Tag "$CHAOS_MARINE" // the same tag as regular evil marines
	Obituary "$BERSERK_MARINE_O" // but berserk's obituary
	States
	{
		Spawn:
			PLA1 J 0 NODELAY ACS_NamedExecuteWithResult("FBD_RunMonster", 6) // chaos marine headbox
			"----" A 0 A_SetUserVar("user_default_weapon", 1) // punch
			"----" A 0 A_SetUserVar("user_melee_weapon", 1) // punch			
			Goto SetupDefaults
	}		
}

ACTOR ChaosMarineBerserk: ChaosMarineAbstract 17922
{
	//***Che: cross-mod hardening: see ACTOR EvmBerserk: ChaosMarineBerserk replaces MarineBerserk {} // native class doomed num 9102  in Doom_Replacements.txt

	DropItem None
	Tag "$BERSERK_MARINE"
	Obituary "$BERSERK_MARINE_O"
	States
	{
		Spawn:
			PVPF E 0 NODELAY ACS_NamedExecuteWithResult("FBD_RunMonster", 6) // chaos marine headbox
			"----" A 0 A_SetUserVar("user_default_weapon", 2) // berserk punch
			"----" A 0 A_SetUserVar("user_melee_weapon", 2) // berserk punch			
			Goto SetupDefaults
	}			
}


ACTOR ChaosMarineChainsaw: ChaosMarineAbstract 17923

{
	//***Che: cross-mod hardening: see ACTOR EvmChainsaw: ChaosMarineChainsaw replaces MarineChainsaw {} // native class doomed num 9103  in Doom_Replacements.txt

	SeeSound "weapons/chainsaw/draw"
	DropItem "Chain_saw"
	// uses default evil marine tag "Traitor Marine"
	Obituary "$CHAINSAW_MARINE_O"
	States
	{
		Spawn:
			MAR1 Y 0 NODELAY ACS_NamedExecuteWithResult("FBD_RunMonster", 6) // chaos marine headbox
			"----" A 0 A_SetUserVar("user_default_weapon", 3) // chainsaw
			"----" A 0 A_SetUserVar("user_melee_weapon", 3) // chainsaw
			Goto SetupDefaults
	}			
}

ACTOR WeakChainsawTraitor: ChaosMarineWeak 17934
{
	SeeSound "weapons/chainsaw/draw"
	DropItem "Chain_saw"
	// uses default evil marine tag "Traitor Marine"
	Obituary "$CHAINSAW_MARINE_O"
	States
	{
		Spawn:
			MAR1 Y 0 NODELAY ACS_NamedExecuteWithResult("FBD_RunMonster", 6) // chaos marine headbox
			"----" A 0 A_SetUserVar("user_default_weapon", 3) // chainsaw
			"----" A 0 A_SetUserVar("user_melee_weapon", 3) // chainsaw
			Goto SetupDefaults
	}			
}


ACTOR ChaosMarineAxe: ChaosMarineChainsaw 17938
{
	// a stub, will implement when animation ready
}

ACTOR WeakAxeTraitor: WeakChainsawTraitor 17937
{
	// a stub, will implement when animation ready
}

ACTOR ChaosMarineAxeClone: ChaosMarineAxe 17750 {} // incorrect doomen number already in use


// endemic to EDAY map 313:
// Actor ChainsawSatanist: WeakChainsawTraitor 17849
//Actor AxeMurderSatanist: WeakAxeTraitor 17848
// - see in eday313actors.txt in Chebskies-EDAY


ACTOR ChaosMarineRifle: ChaosMarineAbstract 17924
{
	DropItem "RifleDrop"
	States
	{
		Spawn:
			MAR2 A 0 NODELAY ACS_NamedExecuteWithResult("FBD_RunMonster", 6) // chaos marine headbox
			"----" A 0 A_SetUserVar("user_default_weapon", 4) // assault rifle
			"----" A 0 A_SetUserVar("user_melee_weapon", 1) // punch
			Goto SetupDefaults
	}
}

ACTOR WeakRifleTraitor: ChaosMarineWeak 17920
{
	//***Che: cross-mod hardening: see ACTOR EvmRifle: ChaosMarineRifleWeak Replaces MarinePistol {} // pre-defined class doomed num = 9104   in Doom_Replacements.txt
	DropItem "RifleDrop"
	States
	{
		Spawn:
			MAR2 A 0 NODELAY ACS_NamedExecuteWithResult("FBD_RunMonster", 6) // chaos marine headbox
			"----" A 0 A_SetUserVar("user_default_weapon", 4) // assault rifle
			"----" A 0 A_SetUserVar("user_melee_weapon", 1) // punch
			Goto SetupDefaults
	}
}

Actor ChaosMarineRifleClone: WeakRifleTraitor 17647
{
	// old doomed number may still be in use by Chebskies-EDAY maps
}

//***Che I got NO idea where those should be used. Simply disable jumping by reducing their jumping power to 0.
ACTOR EasyMarineRifleAlive: WeakRifleTraitor
{
	Health 60
	Obituary "%o is no longer a stone in the shoes of the UAC."
	DropItem "RifleDrop"
	Translation "112:127=99:111"
	MaxStepHeight 16
	MaxDropoffHeight 16
	States
	{
		Spawn:
			// jumping power of 1 effectively makes jumping do nothing
			MAR2 A 0 NODELAY ACS_NamedExecuteWithResult("FBD_RunMonster", 6) // chaos marine headbox
			"----" A 0 A_SetUserVar("user_default_weapon", 4) // assault rifle
			"----" A 0 A_SetUserVar("user_melee_weapon", 1) // punch
			"----" A 0 A_GiveInventory("TargetIsAChaosMarine", 1)
			"----" A 0 A_SetUserVar("user_jump_power", 1) 
			"----" A 7
			"----" A 0 A_ChangeFlag("NOPAIN", 0)
			Goto WeaponSwitch // will proceed to Stand
	}	
}

// - see in eday313actors.txt in Chebskies-EDAY


ACTOR ChaosMarineShotgun: ChaosMarineAbstract 17925
{
	DropItem "ShotgunSpawnerDroped"
	Tag "$CHAOS_MARINE" // the same tag as the rifle marine. This trash ain't elite.
	Obituary "$SHOTGUN_MARINE_O" // "%o was gunned down by a traitor." / "%o был застрелен крысой, недостойной имени морпеха."
	States
	{
		Spawn:
			MAR3 A 0 NODELAY ACS_NamedExecuteWithResult("FBD_RunMonster", 6) // chaos marine headbox
			"----" A 0 A_SetUserVar("user_default_weapon", 5) // shotgun
			"----" A 0 A_SetUserVar("user_melee_weapon", 1) // punch
			Goto SetupDefaults
	}
}
	


ACTOR WeakShotgunTraitor: ChaosMarineWeak 17935
{
	//***Che: cross-mod hardening: see ACTOR EvmShotgun: WeakShotgunTraitor Replaces MarineShotgun {} // native class doomed num 9105   in Doom_Replacements.txt	
	
	DropItem "ShotgunSpawnerDroped"
	Tag "$CHAOS_MARINE" // the same tag as the rifle marine. This trash ain't elite.
	Obituary "$SHOTGUN_MARINE_O" // "%o was gunned down by a traitor." / "%o был застрелен крысой, недостойной имени морпеха."
	States
	{
		Spawn:
			MAR3 A 0 NODELAY ACS_NamedExecuteWithResult("FBD_RunMonster", 6) // chaos marine headbox
			"----" A 0 A_SetUserVar("user_default_weapon", 5) // shotgun
			"----" A 0 A_SetUserVar("user_melee_weapon", 1) // punch
			Goto SetupDefaults
	}
}


ACTOR ChaosMarineSSG: ChaosMarineAbstract 17926 
{
	//***Che: cross-mod hardening: see ACTOR EvMarineSSG : ChaosMarineSSG Replaces MarineSSG {} // native class doomed num 9106 in Doom_Replacements.txt
	
	DropItem "SSGSpawner" //"SSG"
	Obituary "$SSG_MARINE_O" // "%o was blown apart by a super shotgun wielding elite traitor." / "%o был расплёскан двустволкой элитного предателя."
	
	States
	{
		Spawn:
			MSSG J 0 NODELAY ACS_NamedExecuteWithResult("FBD_RunMonster", 6) // chaos marine headbox
			"----" A 0 A_SetUserVar("user_default_weapon", 6) //ssg
			"----" A 0 A_SetUserVar("user_melee_weapon", 1) // punch
			Goto SetupDefaults
	}
}


ACTOR WeakMinigunTraitor: ChaosMarineWeak 17927 
//***Che only a veak version is available 
// because extensive playtesting showed the minigun synth marines cannot be strong: 
// they have to interrupt their firing when they dodge-roll so their overal rate of fire
// (and average damage dealt) stay pathetically BELOW those of the rifle variant!
// So that at least had to be patched out by taking away their dodge-roll while firing
//  (sthey circle-strafe instead)...
//  Which makes them weak by design!
{
	
	//***Che: cross-mod hardening: see ACTOR EvmMinigun: WeakMinigunTraitor replaces MarineChaingun {} // native class doomed num 9107   in Doom_Replacements.txt
	
	DropItem "ChaingunSpawner" //"MiniGun"
	Obituary "$CHAINGUN_MARINE_O" // "%o got cut in half by trator's minigun" / "%o был располовинен миниганом предателя."
	States
	{
		Spawn:
			MAR4 A 0 NODELAY ACS_NamedExecuteWithResult("FBD_RunMonster", 6) // chaos marine headbox
			"----" A 0 A_SetUserVar("user_default_weapon", 7) // minigun
			"----" A 0 A_SetUserVar("user_melee_weapon", 1) // punch			
			Goto SetupDefaults
	}
}

ACTOR ChaosMarineRocketLauncher: ChaosMarineAbstract 17928  
{
	//***Che: cross-mod hardening: see ACTOR EvmRocket : ChaosMarineRocketLauncher Replaces MarineRocket {} // native class doomed num 9108 in Doom_Replacements.txt
	
	DropItem "RocketLauncherSpawner" //"Rocket_Launcher"
	Obituary "$RL_MARINE_O" //"%o ate a traitor's rocket" / "%o сожрал ракету предателя"
	States
	{
		Spawn:
			PL5S A 0 NODELAY ACS_NamedExecuteWithResult("FBD_RunMonster", 6) // chaos marine headbox
			"----" A 0 A_SetUserVar("user_default_weapon", 8) // rocket launcher
			"----" A 0 A_SetUserVar("user_melee_weapon", 1) // punch			
			"----" A 0 A_GiveInventory("TargetIsAMiniBoss", 1)
			Goto SetupDefaults
	}
}


ACTOR ChaosMarinePlasma: ChaosMarineAbstract 17929  
{
	//***Che: cross-mod hardening: see ACTOR EvmPlasma : ChaosMarinePlasma Replaces MarinePlasma {} // pre-defined class doomed num = 9109  in Doom_Replacements.txt
	
	DropItem "PLasmagunSpawner" //"PLasmaRifle"
	
	Tag "$CHAOS_MARINE_P"
	Obituary "$CHAOS_MARINE_P_O"
	
	States
	{
		Spawn:
			MAR6 A 0 NODELAY ACS_NamedExecuteWithResult("FBD_RunMonster", 6) // chaos marine headbox
			"----" A 0 A_SetUserVar("user_default_weapon", 9) // plasma
			"----" A 0 A_SetUserVar("user_melee_weapon", 1) // punch
			Goto SetupDefaults
	}
}

ACTOR ChaosMarinePlasmaClone: ChaosMarinePlasma 17648
{
	// old doomed number may still be in use by Chebskies-EDAY maps
}


ACTOR WeakPlasmaTraitor: ChaosMarineWeak 17936
{
	DropItem "PLasmagunSpawner"
	
	//Tag "$CHAOS_MARINE_P"
	Obituary "$CHAOS_MARINE_P_O"
	
	States
	{
		Spawn:
			MAR6 A 0 NODELAY ACS_NamedExecuteWithResult("FBD_RunMonster", 6) // chaos marine headbox
			"----" A 0 A_SetUserVar("user_default_weapon", 9) // plasma
			"----" A 0 A_SetUserVar("user_melee_weapon", 1) // punch
			Goto SetupDefaults
	}
}


//***Che I got NO idea who is this and if I converthed him right
ACTOR MrX : ChaosMarinePlasma 
{
	Health 400
	Obituary "%o had a heated encounter with Mr. X."
	Translation "112:127=32:47", "128:143=107:111", "144:151=109:111", "152:159=104:108"
	Speed 6
	MaxStepHeight 16
	MaxDropOffHeight 16
	States
	{
		Triumph:
			TNT1 A 0 A_FaceTarget
			TNT1 A 0 A_PlaySound("EVMRLAUG")
			PLAY G 30
			Goto Idle
	}	
}




ACTOR ChaosMarineRailgun: ChaosMarineAbstract 17930
{
	//***Che: cross-mod hardening: see ACTOR EvmRail : ChaosMarineRailgun Replaces MarineRailgun {} // native class doomed num 9110  in Doom_Replacements.txt	
	
	DropItem "RailgunSpawner" //"Railgun"
	Obituary "$RAIL_MARINE_O" // "%o got %p innards blown out by a traitor's railgun."; //%p = his/her / "потроха %o разлетелись, пробитые рейлганом."
	States
	{
		Spawn:
			MRRG A 0 NODELAY ACS_NamedExecuteWithResult("FBD_RunMonster", 6) // chaos marine headbox
			"----" A 0 A_SetUserVar("user_default_weapon", 10) // railgun
			"----" A 0 A_SetUserVar("user_melee_weapon", 1) // punch
			"----" A 0 A_GiveInventory("TargetIsAMiniBoss", 1)
			"----" A 0 A_GiveInventory("TargetIsABoss", 1)
			Goto SetupDefaults
	}
}


ACTOR ChaosMarineBFG: ChaosMarineAbstract 17931 
{
	//***Che: cross-mod hardening: see ACTOR EvmBFG : ChaosMarineBFG Replaces MarineBFG {} // native class doomed num 9111    in Doom_Replacements.txt	
	DropItem "BFG9000Spawner" //"BIG_FUCKING_GUN"
	Obituary "$BFG_MARINE_O" // "%o splattered under the might of BFG 9000." / "ошмётки %o разметало мощью ОБП 9000."
	States
	{
		Spawn:
			PLA7 A 0 NODELAY ACS_NamedExecuteWithResult("FBD_RunMonster", 6) // chaos marine headbox
			"----" A 0 A_SetUserVar("user_default_weapon", 11) // bfg
			"----" A 0 A_SetUserVar("user_melee_weapon", 2) // doesnt matter, would never switch to melee
			"----" A 0 A_GiveInventory("TargetIsAMiniBoss", 1)
			"----" A 0 A_GiveInventory("TargetIsABoss", 1)
			Goto SetupDefaults
	}
}

ACTOR ChaosMarine10K: ChaosMarineAbstract 17932
{
	DropItem "BFG10KSpawner"
	Obituary "$BFG10K_MARINE_O" // "%o perished under BFG 10k barrage." / "%o полёг под обстрелом из ОБП 10тысяч."
	States
	{
		Spawn:
			M10K A 0 NODELAY ACS_NamedExecuteWithResult("FBD_RunMonster", 6) // chaos marine headbox
			"----" A 0 A_SetUserVar("user_default_weapon", 12) // bfg 10k
			"----" A 0 A_SetUserVar("user_melee_weapon", 6) // super shotgun 0_o;
			"----" A 0 A_GiveInventory("TargetIsAMiniBoss", 1)
			"----" A 0 A_GiveInventory("TargetIsABoss", 1)
			Goto SetupDefaults
	}
}

ACTOR ChaosMarine10KClone: ChaosMarine10K 17712 {} // incorrect doomed number already in use

ACTOR ChaosMarineUnmaker: ChaosMarineAbstract 17933 //17713
{
	DropItem "UnmakerSpawner"
	Obituary "$UNMAKER_MARINE_O" // "%o was unmade." / "%o был изничтожен."
	// elite ones are bright shiny red
	Translation "112:124=168:187", "125:127=[91,0,0]:[21,0,0]", "152:159=16:47", "9:12=[61,12,12]:[13,0,0]", "128:143=168:186"
	States
	{
		Spawn:
			P7UM A 0 NODELAY ACS_NamedExecuteWithResult("FBD_RunMonster", 6) // chaos marine headbox
			"----" A 0 A_SetUserVar("user_default_weapon", 13) // unmaker
			"----" A 0 A_SetUserVar("user_melee_weapon", 2) // doesnt matter, would never switch to melee. Getting close is suicide anyway.
			"----" A 0 A_GiveInventory("TargetIsAMiniBoss", 1)
			"----" A 0 A_GiveInventory("TargetIsABoss", 1)
			Goto SetupDefaults
	}
}

ACTOR ChaosMarineUnmakerClone: ChaosMarineUnmaker 17713 {} // incorrect doomed number already in use

ACTOR FBD_Maradeur: ChaosMarineAbstract 17709
{
	Tag "$FBD_MARADEUR" // "Maradeur" / "Мародёр"
	Obituary "$FBD_MARADEUR_O" // "%o fell in battle against %p dark reflection." / "%o пал в бою со своим тёмным отражением."
	health 800 //999
	Translation "112:122=250:254", "123:124=190:191", "125:127=0:0", "48:66=168:176", "67:74=177:187", "75:79=35:47", "128:143=194:203", "152:159=196:204"
	DropItem "DemonRuneMix", 10
	
	damagefactor "SSG", 2.0 //  80 damage from that central hitscan
	
	SeeSound "maradeur/2/sight"
	ActiveSound None //"maradeur/2/act"  // do NOT use ActiveSound, replaced with a better custom mechanism - see the Nag state
	PainSound "maradeur/2/pain"
	DeathSound "maradeur/2/death"	
	
	States
	{
		OnDeath:
			"----" A 0 A_KillChildren // kill the summoned hellhounds
			"----" A 1 ACS_NamedExecuteAlways("DropFatalityBonuses", 0, 12 * user_maradeur, 12 * user_maradeur, 0)
			"----" A -1
			Stop
		Idle:
			// a fix for the infinitesimal probability of landing here from dodge-rolling backward or forward
			// if we lose target in the process (those rolls are based on fast chase)
			"----" A 0 A_CheckFlag("SHOOTABLE", 3, AAPTR_DEFAULT) // do not set if already shootable
			"----" A 0 A_ChangeFlag("SHOOTABLE", 1)
			"----" A 0 A_ChangeFlag("INVULNERABLE", 0)		
		
			"----" AAAAAAAAAA 0 A_Look // try acquiring another target right away

			"----" A 0 A_KillChildren // unsummon all summons: no targets left
			
			// maradeur does *not* switch weapons on losing target
			
			Goto IdleLoop
		Spawn:
			PVP2 E 0 NODELAY ACS_NamedExecuteWithResult("FBD_RunMonster", 6) // chaos marine headbox
			"----" A 0 A_SetUserVar("user_maradeur", 2) // medium sttrength
			"----" A 0 A_GiveInventory("TargetIsAMiniBoss", 1)
			"----" A 0 A_GiveInventory("TargetIsABoss", 1)
			// default weapon is only used in the initial setup. Maradeurs have custom weapon switch logic.
			"----" A 0 A_SetUserVar("user_default_weapon", 6) // super shotgun
			"----" A 0 A_SetUserVar("user_melee_weapon", 3) // chainsaw
			"----" A 0 A_SetUserVar("user_voice_set", CHE_MARADEUR_2)
			Goto SetupDefaults
		SetupDefaults:
			"----" A 0 A_GiveInventory("TargetIsAChaosMarine", 1)
			//"----" A 0 A_SetUserVar("user_jump_power", 50)
			"----" A 0 A_SetUserVar("user_ddgrll_chance", 0) // means 256 *and* ignore cooldown
			"----" A 0 A_SetUserVar("user_head_type", 6) // 6 - evil marine headbox
			"----" A 0 A_SetUserVar("user_summon_cooldown", 150) // 5 seconds initially
			"----" A 0 A_SetUserVar("user_nag_period", 180) // make active sound every 3..6 seconds
			"----" A 0 A_SetUserVar("user_speed_limit", 12 + 2 * user_maradeur)
			
			PLAY A 2
			"----" A 0 A_SetUserVar("user_jump_power", CallAcs("AdjustJumpPowerForEDAYMarsChapter", 50))
			"----" A 0 A_ChangeFlag("NOPAIN", 0)
			Goto WeaponSwitch // will proceed to Stand
// maradeur taunt voice integrated into base chaos marine class
//		Triumph:
//			// (don't stop to gloat, keeps moving)
//			"----" A 0 A_PlaySound("maradeur/2/triumph", CHAN_VOICE)
//			Goto Idle

/* P.S. Integrated this into the state machine as weapon #15				
		SummonHellhounds:
			"----" A 0 A_JumpIf(user_maradeur < 2, "SummonGoesIntoCooldown")
			// alive summons limit:
			"----" A 0 A_JumpIfInventory("SummonsCount", user_maradeur == 3 ? 5 : 2, "SummonGoesIntoCooldown") // 1 => none, 2 => 2, 3 => 5
			
			// pkik abc - he summons the dogs by kicking them. They yelp
			
			"----" A 0 
			PLA1 A 6 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", 5, 0, 41)
			PKIK A 6 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", 2, 0, 39)
			PKIK B 4 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", 5, 0, 42)
			
			// spawn it inside himself but at a height of 20 with a hefty forward velocity.
			// this way, no chance to fail due to not enough space
			// the hellhound has EvilMarines species +THRUSPECIES
			"----" A 0 A_SpawnItemEx("HellHoundSummon",0,0,20, 10,0,0, 0,SXF_SETMASTER | SXF_NOCHECKPOSITION,0)
			// HellhoundSummon increases its masters' SummonsCount on spawn 
			//   and decreases it on death.
			// So, he is always aware how many summons he has out
			
			PKIK C 6 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", 3, 0, 41)
			PLA1 A 6 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", 5, 0, 41)
			Loop
			
		SummonGoesIntoCooldown:
			"----" A 0 A_SetUserVar("user_summon_cooldown", 350) // 10 seconds
			Goto See
*/
		
		// making *ALL* deaths non-explosive, useing regular scream
		Death.Eat:
			"----" A 0
			Goto Death_AltEat // an arm bitten off
			
		Death.Cut:
		Death.Saw:
		Death.Desintegrate:
		Death.SniperBullet:
		Death.Bullet792:		
		Death.Minigun:
		Death.Rip: // imp regular attack
		Death.Massacre:
		Death.Explosives:
		Death.Bfg10k: 
		XDeath:
		Death.FriendlyExplosion:
		Death.ExplosiveImpact:	
		Death.Shotgun:
		Death.SSG:
		Death.Blast:
		Death.SuperPunch:
		Death.ExtremePunches: // player's berserk kick.
			"----" A 0
			"----" A 0 A_Jump(128, "Death_Arm")
			Goto Death.Bullet
			
		Death.Fire:	
		Death.Flames:
		Death.GreenFire:
		Death.plasma:
		Death.Electric:
		Death.HeadPlasma:
			"----" A 0
			Goto Death.burn // imp fireball
			
		
			

	}
}

ACTOR FBD_Maradeur_Lite: FBD_Maradeur 17708
{
	Tag "$FBD_MARADEUR1" // "Wannabe Maradeur" / "Мародёр-дешёвка"
	Obituary "$FBD_MARADEUR1_O" // "%o was killed by a wannabe edgelord." / "%o был убит напыщенным ЧСВшником."
	health 666
	Translation "80:111=16:47", "9:12=191:191", "112:122=250:254", "123:124=190:191", "125:127=0:0", "128:134=250:254", "135:143=181:191", "152:157=250:254", "158:159=188:191"
	DropItem "DemonRuneMix", 5
	SeeSound "maradeur/1/sight"
	ActiveSound None //"maradeur/1/act"  // do NOT use ActiveSound, replaced with a better custom mechanism - see the Nag state
	PainSound "maradeur/1/pain"
	DeathSound "maradeur/1/death"
	States
	{
		Spawn:
			FTYZ J 0 NODELAY ACS_NamedExecuteWithResult("FBD_RunMonster", 6) // chaos marine headbox
			"----" A 0 A_SetUserVar("user_maradeur", 1) // weak
			"----" A 0 A_GiveInventory("TargetIsAMiniBoss", 1)
			// default weapon is only used in the initial setup. Maradeurs have custom weapon switch logic.
			"----" A 0 A_SetUserVar("user_default_weapon", 8) // rocket launcher
			"----" A 0 A_SetUserVar("user_melee_weapon", 3) // chainsaw
			"----" A 0 A_SetUserVar("user_voice_set", CHE_MARADEUR_1)
			Goto SetupDefaults
// maradeur taunt voice integrated into base chaos marine class			
//		Triumph:
//			// (don't stop to gloat, keeps moving)
//			"----" A 0 A_PlaySound("maradeur/1/triumph", CHAN_VOICE)
//			Goto Idle	
	}
}

ACTOR FBD_MaradeurElite: FBD_Maradeur 17710
{
	Tag "$FBD_MARADEUR3" // "Elite Maradeur" / "Элитный мародёр"
	Obituary "$FBD_MARADEUR3_O" // "The abyss stared back at %o." / "Бездна взглянула на %o в ответ."
	health 999 //1800
	Translation "112:115=168:170", "116:122=250:254", "123:127=240:247", "48:66=168:176", "67:74=177:191", "75:79=41:47", "128:143=160:167", "80:90=224:231", "91:103=160:167", "104:111=186:191", "152:159=160:167"
	DropItem "DemonRuneMix", 15
	SeeSound "maradeur/3/sight"
	ActiveSound None //"maradeur/3/act"  // do NOT use ActiveSound, replaced with a better custom mechanism - see the Nag state
	PainSound "maradeur/3/pain"
	DeathSound "maradeur/3/death"	
	
	// subscribed to player railgun alerter -- dodges fiercely if you point your railgun in his direction!
	PainChance "RailAvoid", 255
	DamageFactor "RailAvoid", 1.0
	States
	{
		Spawn:
			PVP1 B 0 NODELAY ACS_NamedExecuteWithResult("FBD_RunMonster", 6) // chaos marine headbox
			"----" A 0 A_SetUserVar("user_maradeur", 3) // mighty
			"----" A 0 A_GiveInventory("TargetIsAMiniBoss", 1)
			"----" A 0 A_GiveInventory("TargetIsABoss", 1)			
			"----" A 0 A_GiveInventory("TargetIsAGreatTerribleBoss", 1)
			// default weapon is only used in the initial setup. Maradeurs have custom weapon switch logic.
			"----" A 0 A_SetUserVar("user_default_weapon", 6) // super shotgun
			"----" A 0 A_SetUserVar("user_melee_weapon", 3) // chainsaw
			"----" A 0 A_SetUserVar("user_voice_set", CHE_MARADEUR_3)
			Goto SetupDefaults
// maradeur taunt voice integrated into base chaos marine class			
//		Triumph:
//			// (don't stop to gloat, keeps moving)
//			"----" A 0 A_PlaySound("maradeur/3/triumph", CHAN_VOICE)
//			Goto Idle				
	}
}


Actor HellHoundBossCubeSpawner: AbstractBossCubeSpawner
{
	Radius 12
	Height 28	
	States
	{
		DoSummon:	
			TNT1 A 0 A_GiveInventory("SummonsCount", 1, AAPTR_TRACER)
			TNT1 A 0 A_SpawnItemEx("TeleportationFog")
			TNT1 A 1 A_SpawnItemEx("HellHound",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0,user_stid)
			Stop
	}
}


ACTOR HellHound 17711
{
	//***Che radius, height and maxdropoffheight (n/a for flying ones) MUST be kept consistent with FBD_TrySpawn in FBD_CORE.acs!
	
	Translation "60:79=172:191", "99:111=26:47", "89:98=160:167", "0:0=191:191", "3:3=39:39", "168:180=224:231", "181:191=160:163"
	+BRIGHT

	 // so that Maradeur can summon them *inside* himself, not bothering with finding empty space!
	Species "EvilMarines"
	+THRUSPECIES
	
	+DONTHURTSPECIES
	
	+NOICEDEATH
	
	damagefactor "TeleportRemover", 0.0
	damagefactor "Flames", 0.0
	damagefactor "Fire", 0.0
	damagefactor "Burn", 0.33
	
	BloodType "FieryBlood", "FieryBloodSaw", "FieryBlood"
	
	Health 80
	Speed 8
	PainChance 0
	PainChance "Kick", 255
	PainChance "Slide", 255
	PainChance "HeavyImpact", 255
	PainChance "Stomp", 255 // cyberdemon melee
	PainChance "BlackHole", 255 // ancient arachnotron
	
	PainChance "ExplosiveImpact", 64 // rocket aoe
	PainChance "FriendlyExplosion", 64 // npc rocket aoe
	PainChance "Explosives", 64 // revenant
	PainChance "Argent", 255
	
	Radius 12
	Height 28
	Mass 100
	Monster
	+JUMPDOWN
	ActiveSound "dog/active"
	AttackSound "dog/attack"
	DeathSound "dog/death"
	PainSound None //"dog/pain"
	SeeSound "dog/sight"
	Obituary "$OB_DOG" // "%o was mauled by a dog."
	Tag "$FBD_HELLHOUND" // "Hellhound";
	MaxTargetRange 150
	MeleeRange 90
	
	MaxStepHeight 32
	MaxDropOffHeight 32


	States
	{
		Spawn:
			DOGS G 0 NODELAY A_GiveInventory("SummonsCount", 1, AAPTR_MASTER) // We may be a Maradeur's summon
			TNT1 A 0 ACS_NamedExecuteWithResult("FBD_RunMonster") // without this, it blocks 
				// other monsters in Advanced Teleporting Monster Closets (tm) in EDAY
				// when used as a pinky swap on the Potpourri skills
			TNT1 AAA 0 A_SpawnItemEx("PerpetualHellHoundParticle",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
		Stand:
			DOGS C 10 A_Look
			Loop
		Idle:
			TNT1 A 0 A_Look
			DOGS AABB 2 A_Wander
			TNT1 A 0 A_Look
			DOGS CCDD 2 A_Wander
			TNT1 A 0 A_SpawnItemEx("RandomTinyBurningPiece",-11,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			Loop
		See: // player backslide
			
			TNT1 A 0 A_JumpIfInTargetLOS(2, 0, JLOSF_CHECKMASTER | JLOSF_NOSIGHT, 128)
			TNT1 A 0 A_ChangeFlag("THRUSPECIES", 0) // turn mutual collision on when far enough from the spawning Marader
			DOGS AABBCCDD 1 A_Chase
			TNT1 A 0 A_SpawnItemEx("RandomTinyBurningPiece",-11,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			Loop
		Missile:
			DOGS E 1 A_FaceTarget
			TNT1 A 0 ThrustThingZ(0,25,0,1)
			TNT1 A 0 A_FaceTarget
			TNT1 A 0 A_Recoil (-12)
			TNT1 A 0 A_PlaySound("dog/attack", CHAN_VOICE)
			DOGS EF 4
			DOGS G 10 A_CustomMissile("HellHoundBite",10,0,angle,CMF_ABSOLUTEANGLE)
			TNT1 A 0 A_SpawnItemEx("RandomTinyBurningPiece",Random(-7,7),Random(-7,7),0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			Goto See
		Melee:
			TNT1 A 0
			TNT1 A 0 A_PlaySound("caco/omnom", CHAN_VOICE)
			DOGS EF 3 A_FaceTarget
			DOGS G 10 A_CustomMissile("HellHoundBite",10,0,0,0)
			TNT1 A 0 A_SpawnItemEx("RandomTinyBurningPiece",Random(-7,7),Random(-7,7),0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			Goto See
		Pain:
			DOGS J 3 A_Pain
			Goto See
		Pain.Argent: // inflicted by ghost souls spawned by super archviles
			TNT1 A 0 A_Pain
			TNT1 A 0 HealThing(60)
			TNT1 A 0 A_JumpIfInventory("IsDown", 1, "PainArgentIsDown")
			TNT1 A 0 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", 0, 3, 42)
			TNT1 A 0 ACS_NamedExecuteWithResult("DisplayArgentDischarge", 20, 25, 0)	
			DOGS GHGH 2
			TNT1 A 0 A_Pain
			DOGS GHG 2
			TNT1 A 0 A_Pain
			DOGS HGH 2
			Goto See
		Pain.Kick:
		Pain.HeavyImpact:
		Pain.Stomp:
		Pain.BlackHole:
		Pain.ExplosiveImpact:
		Pain.FriendlyExplosion:
			DOGS I 1 A_FaceTarget
			TNT1 A 0 A_Stop
			TNT1 A 0 ThrustThingZ(0,25,0,1)
			DOGS I 2 A_Recoil (6)
			DOGS J 3 A_Pain
			DOGS LOP 3
			Goto See
		Pain.Slide: // player backslide
			DOGS I 1 ThrustThingZ(0,50,0,1)
			DOGS I 1 A_FaceTarget
			DOGS I 2 A_Recoil (-6)
			DOGS J 3 A_Pain
			DOGS LOP 3
			Goto See		
		Death:
			DOGS I 0
			DOGS I 4 A_TakeInventory("SummonsCount", 1, 0, AAPTR_MASTER)
			DOGS J 4 A_Scream
			DOGS K 4
			DOGS L 4 A_NoBlocking
			TNT1 AAA 0 A_CustomMissile ("CoolAndNewFlameTrailsLong", 12, 0, random (0, 360), CMF_AIMDIRECTION, random (0, 160))
			EXPL AA 0 A_SpawnItem("ExplosionParticleSpawner")
			TNT1 A 0 A_SpawnItemEx ("ExplosionFlareSpawner",0,0,32,0,0,0,0,SXF_NOCHECKPOSITION,0)
			EXPL AAAAA 0 A_CustomMissile ("FireBallExplosionFlamesMedium", 32, 0, random (0, 360), 2, random (0, 360))
			TNT1 AAAA 0 A_CustomMissile ("PlasmaSmoke", 32, 0, random (0, 360), 2, random (0, 360))
			DOGS MOP 4 A_FadeOut(0.25)
			TNT1 A 30
			Stop
	}
}


ACTOR HellHoundSummon: HellHound
{
	SeeSound None
	States
	{
		Spawn:
			DOGS G 0 NODELAY A_GiveInventory("SummonsCount", 1, AAPTR_MASTER) // We are a Maradeur's summon
			"----" AAA 0 A_SpawnItemEx("PerpetualHellHoundParticle",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			"----" A 0 A_PlaySound("dog/pain", CHAN_VOICE) // yelp: he summons us by kicking us
			"----" A 0 A_SpawnItemEx("TeleportFog",15,0,-20, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			Goto See
	}
}


ACTOR HellHoundBite: ZandronumBaronBall //BaronBall
{
	Radius 24
	Height 16
	DamageType Normal
	Projectile 
	+RANDOMIZE
	+FORCEXYBILLBOARD
    +THRUGHOST
	+THRUSPECIES
	+MTHRUSPECIES
	RenderStyle Add
	Alpha 0.6
    Damage (random(15, 15)) // total damage composition: 15 Rip + 10 AOE Burn
	DamageType "Rip" // imp melee attack
    Speed 42
	SeeSound None
	DeathSound None
	Decal None
	States
	{
		Spawn:
			TNT1 A 2 
			//too long TNT1 A 2 //A_PlaySound("weapons/gswing")
			Goto Death
		XDeath:	
			TNT1 A 0
			TNT1 A 0 A_PlaySound("imp/melee")
			TNT1 A 0 A_SetDamageType("Burn") // imp fireball
			TNT1 A 0 A_Explode(10,30,0) 
			TNT1 A 1
			Stop
		Death:
		Crash:
			TNT1 A 1
			Stop
	}
}

//ACTOR PerpetualHellHoundParticle: PerpeualLSFlameParticle -- moved to LostSoul.txt due to load order


