//Ammo Spawners
Actor BD_EWM_AmmoSpawner : BasicWeaponPickup Replaces Clip
{
    States
    {
	Spawn:
		TNT1 A 0
		MARN A 0 ACS_ExecuteAlways(791, 0, 0, 0, 0)//Check if advanced decorations are disabled.
		TNT1 A 1
		TNT1 A 0 A_Jump(28, "Spawn2") // Pistol Ammo
		
	Vanilla:	
	Spawn1:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx ("Clip2",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG ,0)
		TNT1 A 1
		TNT1 A -1
		Stop
	
	 Spawn2:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx ("Clip1",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG ,0)
		TNT1 A 1
		TNT1 A -1
		Stop
    }
}

Actor BD_EWM_AmmoBoxSpawner : BasicWeaponPickup Replaces Clipbox
{
    States
    {
	Spawn:
		TNT1 A 0
		MARN A 0 ACS_ExecuteAlways(791, 0, 0, 0, 0)//Check if advanced decorations are disabled.
		TNT1 A 1
		TNT1 A 0 A_Jump(10, "Spawn2") // Pistol Ammo Box, Very Rare
		
	Vanilla:	
	Spawn1:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx ("ClipBox2",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG ,0)
		TNT1 A 1
		TNT1 A -1
		Stop
	
	 Spawn2:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx ("PistolAmmoBox",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG ,0)
		TNT1 A 1
		TNT1 A -1
		Stop
    }
}
//New Replacers
Actor BD_EWM_SSGSpawnerReplacer: BasicWeaponPickup Replaces  SuperShotgun
{
    States
    {

	 Spawn:
		SGN2 A 0
		MARN A 0 ACS_ExecuteAlways(791, 0, 0, 0, 0)//Check if advanced decorations are disabled.
		SGN2 A 2
		TNT1 A 0 A_Jump(16, "Spawn3") // Quad Shotgun Preset
		TNT1 A 0 A_Jump(46, "Spawn2") // Assault Shotgun Preset
		
	Vanilla:	
	Spawn1:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx ("SSGSpawner2",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG ,0)
		TNT1 A 1
		TNT1 A -1
		Stop
	
	 Spawn2:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx ("AssaultShotgunSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG ,0)
		TNT1 A 1
		TNT1 A -1
		Stop
		
	 Spawn3:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx ("QSSGSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG ,0)
		TNT1 A 1
		TNT1 A -1
		Stop
	}
}

actor BD_EWM_ShotgunSpawnerReplacer : BasicWeaponPickup Replaces Shotgun
{
    States
    {

	 Spawn:
		TNT1 A 0
		MARN A 0 ACS_ExecuteAlways(791, 0, 0, 0, 0)//Check if advanced decorations are disabled.
		TNT1 A 1
		TNT1 A 0 A_Jump(2, "SlugUpgrade") // Less dispersion, single bullet, more precision, more damage
		TNT1 A 0 A_Jump(12, "Spawn2")
		
	Vanilla:	
	Spawn1:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx ("ShotgunSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG ,0)
		TNT1 A 1
		TNT1 A -1
		Stop
		
	Spawn2:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx ("CMGSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG ,0)
		TNT1 A 1
		TNT1 A -1
		Stop	
		
	SlugUpgrade:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx ("SlugRounds",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG ,0)
		TNT1 A 1
		TNT1 A -1
		Stop	
    }
}
// Spawners for New Weapons
ACTOR AssaultShotgunSpawner: CustomInventory
{
 scale 0.8
 radius 24
 height 24
 +THRUACTORS +FORCEXYBILLBOARD

 Inventory.PickupMessage "You got the Assault Shotgun! (Slot 3)"
 Inventory.PickupSound "CLIPIN"
 Mass 1
    States
    {

	 Spawn:
		TNT1 A 0
		TNT1 A 2
		TNT1 A 0 A_ChangeFlag("THRUACTORS", 0)
		TNT1 A 0 A_SpawnItem("FakeOldSGSprite")
		TNT1 A 0 A_SpawnItem("FakeAA12Sprite")
		Loop
	Pickup:
	    TNT1 A 0
		TNT1 A 0 A_JumpIfInventory("IsPlayingAsPurist", 1, "Purist")
		TNT1 A 0 A_GiveInventory("AssaultShotgun", 1)
		TNT1 A 0 A_GiveInventory("AmmoShell", 10)
		Stop
	Purist:
	    TNT1 A 0 A_GiveInventory("ClassicShotgun", 1)
		TNT1 A 0 A_GiveInventory("AmmoShell", 10)
		Stop
    }
}

ACTOR CMGSpawner: CustomInventory 18005
{
 scale 0.8
 radius 24
 height 24
 +THRUACTORS +FORCEXYBILLBOARD

 Inventory.PickupSound "CMGSEL"
 Inventory.PickupMessage "You got a Compact Machine Gun! (Slot 2)"
 Mass 1
    States
    {

	 Spawn:
		TNT1 A 0
		TNT1 A 2
		TNT1 A 0 A_ChangeFlag("THRUACTORS", 0)
		TNT1 A 0 A_SpawnItem("FakeSMGSprite")
		TNT1 A 0 A_SpawnItem("FakeCMGSprite")
		Loop
	Pickup:
	    TNT1 A 0
		TNT1 A 0 A_JumpIfInventory("IsPlayingAsPurist", 1, "Purist")
		TNT1 A 0 A_GiveInventory("CompactMG", 1)
		TNT1 A 0 A_GiveInventory("Clip1", 20)
		Stop
	Purist:
		TNT1 A 0 A_GiveInventory("ClassicSMG", 3)
		TNT1 A 0 A_GiveInventory("Clip2", 20)
		Stop
    }
}

ACTOR QSSGSpawner: CustomInventory 6668
{
 scale 0.8
 radius 24
 height 24
 +THRUACTORS +FORCEXYBILLBOARD

 Inventory.PickupSound "CLIPINSS"
 Inventory.PickupMessage "You got a Quad-Barreled Super Shotgun! (Slot 3)"
 Mass 1
    States
    {
	 Spawn:
		TNT1 A 0
		TNT1 A 2
		TNT1 A 0 A_ChangeFlag("THRUACTORS", 0)
		TNT1 A 0 A_SpawnItem("FakeClassicSSGSprite")
		TNT1 A 0 A_SpawnItem("FakeQSSGSprite")
		Loop
	Pickup:
	    TNT1 A 0
		TNT1 A 0 A_JumpIfInventory("IsPlayingAsPurist", 1, "Purist")
		TNT1 A 0 A_GiveInventory("Quad_Shotgun", 1)
		TNT1 A 0 A_GiveInventory("AmmoShell", 4)
		Stop
	Purist:
		TNT1 A 0 A_GiveInventory("ClassicSSG", 1)
		TNT1 A 0 A_GiveInventory("AmmoShell", 2)
		Stop
    }
}

ACTOR RiotShieldSpawner: CustomInventory
{
 scale 0.8
 radius 24
 height 24
 +THRUACTORS +FORCEXYBILLBOARD
 Inventory.PickupMessage "You got a Riot Shield! (Slot 9)"
 Inventory.PickupSound "CLIPIN"
 Mass 1
    States
    {

	Spawn:
		TNT1 A 0
		TNT1 A 2
		TNT1 A 0 A_ChangeFlag("THRUACTORS", 0)
		TNT1 A 0 A_SpawnItem("FakePistolSprite")
		TNT1 A 0 A_SpawnItem("FakeShieldSprite")
		Loop
	Pickup:
	    TNT1 A 0
		TNT1 A 0 A_JumpIfInventory("IsPlayingAsPurist", 1, "Purist") // Purist Players can't use Riot Shield
		TNT1 A 0 A_JumpIfInventory("DualPistols", 1, "PickupShield") // Detects if you have two pistols
		TNT1 A 0 A_JumpIfInventory("BrutalPistol", 1, "DualPistol") // Detect if you have one pistol
	PickupNormal:	
		TNT1 A 0 A_GiveInventory("RiotShield", 1)
		TNT1 A 0 A_GiveInventory("BrutalPistol", 1)
		TNT1 A 0 A_GiveInventory("Clip1", 10)
		Stop
	PickupShield:
		TNT1 A 0 A_GiveInventory("RiotShield", 1)
		TNT1 A 0 A_GiveInventory("Clip1", 10)
		Stop
	Purist:
	    	TNT1 A 0 A_GiveInventory("Clip2", 10)
		Stop
	DualPistol:
		TNT1 A 0 A_GiveInventory("RiotShield", 1)
		TNT1 A 0 A_GiveInventory("DualPistols", 1)
		TNT1 A 0 A_GiveInventory("Clip1", 10)
		Stop
    }
}

// Special Spawners for Monster Expansion
ACTOR RiotShieldDrop
{
	Health 1000000000000
	Mass 5
	Radius 4
	Height 2
	+NoTarget
	//+NeverTarget
	+CantSeek
	-CountKill
	+NonShootable
	+NoRadiusDmg
	+DropOff
	+NoTeleport
	+Corpse
	+NotAutoaimed
	+NoBlood
	+Notarget
	+Friendly
	States
	{
	Spawn:
		TNT1 A 0 A_GiveInventory("TargetIsAMarine")
	Fly:
		5L1D ABCDEFGH 3 A_CheckFloor("Ground")
		Loop
	Ground:
		TNT1 A 0 A_PlaySound ("barrel/pain")
		TNT1 A 0 A_SPawnItem("RiotShieldSpawner2")
	Death:
		TNT1 A 1
		Stop
	}
}
ACTOR RiotShieldSpawner2: CustomInventory
{
    scale 0.8
    radius 24
    height 24
    +THRUACTORS +FORCEXYBILLBOARD
    Inventory.PickupMessage "You got a Riot Shield! (Slot 9)"
    Inventory.PickupSound "CLIPIN"
    Mass 1
    States
    {
	 Spawn:
		5L1D I 0
		5L1D I 2
		TNT1 A 0 A_ChangeFlag("THRUACTORS", 0)
		Loop
	 Pickup:
	    	TNT1 A 0
		TNT1 A 0 A_JumpIfInventory("IsPlayingAsPurist", 1, "Purist") // Purist Players can't use Riot Shield
	 PickupNormal:	
		TNT1 A 0 A_GiveInventory("RiotShield", 1)
		Stop
	 Purist:
	    	TNT1 A 0 A_GiveInventory("ArmorShard", 5)
		Stop
    }
}

// Updated Current Spawners
ACTOR MachinegunSpawner2: CustomInventory replaces MachinegunSpawner
{
 scale 1.0
 radius 24
 height 24
 +THRUACTORS +FORCEXYBILLBOARD

 Inventory.PickupSound "CBOXPKUP"
	Inventory.PickupMessage "You got the Machine Gun! (Slot 4)"
 Mass 1
    States
    {

	 Spawn:
		TNT1 A 0
		TNT1 A 2
		TNT1 A 0 A_ChangeFlag("THRUACTORS", 0)
		TNT1 A 0 A_SpawnItem("FakeSMGSprite")
		TNT1 A 0 A_SpawnItem("FakeMachinegunSprite")
		Loop
	Pickup:
	    TNT1 A 0
		TNT1 A 0 A_JumpIfInventory("IsPlayingAsPurist", 1, "Purist")
		TNT1 A 0 A_JumpIfInventory("Machinegun", 1, "PickupNormal") //Fixing the fuckin Indicator
		TNT1 A 0 A_GiveInventory("FiredMGGrenade", 1)

	PickupNormal:
		TNT1 A 0 A_GiveInventory("Machinegun", 1)
		TNT1 A 0 A_GiveInventory("Clip2", 50)
		Stop

	Purist:
	    TNT1 A 0 A_GiveInventory("ClassicSMG", 1)
		TNT1 A 0 A_GiveInventory("Clip2", 50)
		Stop
    }
}

ACTOR SSGSpawner2: CustomInventory replaces SSGSpawner
{
 scale 0.8
 radius 24
 height 24
 +THRUACTORS +FORCEXYBILLBOARD

 Inventory.PickupMessage "$GOTSHOTGUN2"
 Inventory.PickupSound "CLIPINSS"
 Mass 1
    States
    {

	 Spawn:
	 Spawn:
		TNT1 A 0
		TNT1 A 2
		TNT1 A 0 A_ChangeFlag("THRUACTORS", 0)
		TNT1 A 0 A_SpawnItem("FakeClassicSSGSprite")
		TNT1 A 0 A_SpawnItem("FakeModernSSGSprite")
		Loop
	Pickup:
	    TNT1 A 0
		TNT1 A 0 A_JumpIfInventory("IsPlayingAsPurist", 1, "Purist")
		TNT1 A 0 A_GiveInventory("SSG", 1)
		TNT1 A 0 A_GiveInventory("AmmoShell", 8)
		Stop
	Purist:
	    TNT1 A 0 A_GiveInventory("ClassicSSG", 1)
		TNT1 A 0 A_GiveInventory("AmmoShell", 8)
		Stop
    }
}

//Proper axe droping for Lab Guy
Actor NewBloodyAxe replaces BloodyAxe
{
bouncefactor 0.1
speed 5
seesound ""
 	VisibleToPlayerClass BDoomer, Doomer2, TacticalDoomer
	+DOOMBOUNCE
	+MISSILE
    +MOVEWITHSECTOR
    +NOBLOCKMAP
    +NOTELEPORT
	+THRUACTORS
	-SOLID
	states
	{
	Spawn:
	AXE1 A 6
	loop
	Death:
	 AXE1 A 1
	 TNT1 A 0 A_SpawnItem("BloodyAxeDroped")
     stop
	}
}

ACTOR BloodyAxeDroped : CustomInventory
{
	Inventory.PickupMessage "You got the Axe!"
	Inventory.PickupSound "AXEDRAW"
 	VisibleToPlayerClass BDoomer, Doomer2, TacticalDoomer
 	Inventory.ForbiddenTo Purist
	Scale 0.9
	States
	{
	Spawn:
		AXE1 A 1
		Loop
	Pickup:
        	TNT1 A 0 A_GiveInventory ("BrutalAxe")
		Stop
	}
}

// Fake Sprites
ACTOR FakeMachinegunSprite: RifleSpawner
{
 Scale 1.0
 VisibleToPlayerClass BDoomer, Doomer2, TacticalDoomer
 States
    {

	 Spawn:
		MGN1 Z 0
		MGN1 Z 2
		Stop
    }
}
ACTOR FakeCMGSprite: RifleSpawner
{
 Scale 0.8
 VisibleToPlayerClass BDoomer, Doomer2, TacticalDoomer
 States
    {

	 Spawn:
		CMGI A 0
		CMGI A 2
		Stop
    }
}

ACTOR FakeSMGSprite: RifleSpawner
{
 scale 1.0
 VisibleToPlayerClass Purist
 States
    {

	 Spawn:
		SMGZ A 0
		SMGZ A 2
		Stop
    }
}

ACTOR FakeQSSGSprite: RifleSpawner
{
 Scale 0.8
 VisibleToPlayerClass BDoomer, Doomer2, TacticalDoomer
 States
    {

	 Spawn:
		QGN2 A 0
		QGN2 A 2
		Stop
    }
}

ACTOR FakeClassicSSGSprite: RifleSpawner
{
 Scale 0.8
 VisibleToPlayerClass Purist
 States
    {

	 Spawn:
		SGN3 A 0
		SGN3 A 2
		Stop
    }
}

ACTOR FakeModernSSGSprite: RifleSpawner
{
 Scale 0.8
 VisibleToPlayerClass BDoomer, Doomer2, TacticalDoomer
 States
    {

	 Spawn:
		SGN2 A 0
		SGN2 A 2
		Stop
    }
}

ACTOR FakeShieldSprite: RifleSpawner
{
 Scale 1.0
 VisibleToPlayerClass BDoomer, Doomer2, TacticalDoomer
 States
    {

	 Spawn:
		5L1D J 0
		5L1D J 2
		Stop
    }
}

ACTOR FakePistolSprite: RifleSpawner
{
 Scale 0.8
 VisibleToPlayerClass BDoomer, Doomer2, TacticalDoomer, Purist
 States
    {

	 Spawn:
		PIST G 0
		PIST G 2
		Stop
    }
}

ACTOR FakeAA12Sprite: RifleSpawner
{
 Scale 0.8
 VisibleToPlayerClass BDoomer, Doomer2, TacticalDoomer
 States
    {

	 Spawn:
		A12P A 0
		A12P A 2
		Stop
    }
}