//Ammo Spawners
Actor BD_EWM_ClipSpawner Replaces Clip
{
    States
    {
	Spawn:
		TNT1 A 0
		MARN A 0 ACS_NamedExecuteAlways("BDDisableNewGuns", 0, 0, 0, 0)//Check if advanced decorations are disabled.
		TNT1 A 1
		TNT1 A 0 A_Jump(2, "Spawn4") // CompactMG Silencer
		TNT1 A 0 A_Jump(4, "Spawn3") // Magnum Ammo
		TNT1 A 0 A_Jump(16, "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
	
	Spawn3:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx ("AmmoMagnum",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG ,0)
		TNT1 A 1
		TNT1 A -1
		Stop
	
	Spawn4:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx ("SilencerSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG ,0)
		TNT1 A 1
		TNT1 A -1
		Stop
    }
}

Actor BD_EWM_ClipBoxSpawner Replaces Clipbox
{
    States
    {
	Spawn:
		TNT1 A 0
		MARN A 0 ACS_NamedExecuteAlways("BDDisableNewGuns", 0, 0, 0, 0)//Check if advanced decorations are disabled.
		TNT1 A 1
		TNT1 A 0 A_Jump(4, "Spawn3") // Magnum Ammo Box
		TNT1 A 0 A_Jump(16, "Spawn2") //Pistol Ammo Box
		
	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
	
	 Spawn3:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx ("AmmoMagnumBox",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG ,0)
		TNT1 A 1
		TNT1 A -1
		Stop
    }
}

Actor BD_EWM_AmmoShellBoxSpawner Replaces ShellBox
{
	States
	{
	Spawn:
		TNT1 A 0
		MARN A 0 ACS_NamedExecuteAlways("BDDisableNewGuns", 0, 0, 0, 0)//Check if advanced decorations are disabled.
		TNT1 A 1
		TNT1 A 0 A_Jump(4, "Spawn2") // SlugRounds upgrade for shotguns
		
	Vanilla:	
	Spawn1:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx ("AmmoShellBox",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 ("SlugRounds",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:
		TNT1 A 0
		MARN A 0 ACS_NamedExecuteAlways("BDDisableNewGuns", 0, 0, 0, 0)//Check if advanced decorations are disabled.
		TNT1 A 2
		TNT1 A 0 A_Jump(9, "Spawn3")
		TNT1 A 0 A_Jump(48, "Spawn2")
		
	Vanilla:	
	Spawn1:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx ("SSGSpawner",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 ("AssaultShotgun",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_ChaingunSpawnerReplacer : BasicWeaponPickup Replaces Chaingun
{
    States
    {
	Spawn:
		TNT1 A 0
		MARN A 0 ACS_NamedExecuteAlways("BDDisableNewGuns", 0, 0, 0, 0)//Check if advanced decorations are disabled.
		TNT1 A 2
		TNT1 A 0 A_Jump(16, "Spawn4", "Spawn5")
		TNT1 A 0 A_Jump(64, "Spawn2", "Spawn3")
		
	Vanilla:	
	Spawn1:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx ("ChaingunSpawner",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 ("SMGSpawner",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 ("MachinegunSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG ,0)
		TNT1 A 1
		TNT1 A -1
		Stop
		
	Spawn4:
		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
		
	Spawn5:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx ("MP40Spawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG ,0)
		TNT1 A 1
		TNT1 A -1
		Stop
	}
}
//Spawner for RiotShield
actor BD_EWM_LightArmorSpawnerReplacer : BasicArmorPickup Replaces GreenArmor
{
    States
    {

	 Spawn:
		TNT1 A 0
		MARN A 0 ACS_NamedExecuteAlways("BDDisableNewGuns", 0, 0, 0, 0)//Check if advanced decorations are disabled.
		TNT1 A 2
		TNT1 A 0 A_Jump(4, "Spawn2")// RiotShield Spawner
		
	Vanilla:	
	Spawn1:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx ("LightArmor",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 ("RiotShieldSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG ,0)
		TNT1 A 1
		TNT1 A -1
		Stop
	}
}
// Spawners for New Weapons
ACTOR CMGSpawner: CustomInventory
{
 scale 0.8
 radius 24
 height 24
 +THRUACTORS +FORCEXYBILLBOARD
 Inventory.PickupSound "CMGSEL"
 Inventory.PickupMessage "You picked up the Compact Machinegun! (Slot 2)"
 Mass 1
    States
    {

	 Spawn:
		TNT1 A 0
		TNT1 A 1
		TNT1 A 0 A_ChangeFlag("THRUACTORS", 0)
	Stay:
		TNT1 A 0
		TNT1 A 0 A_SpawnItem("FakeSMGSprite")
		TNT1 A 0 A_SpawnItem("FakeCMGSprite")
		TNT1 A 2
		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", 1)
		TNT1 A 0 A_GiveInventory("Clip2", 20)
		Stop
    }
}

Actor SilencerSpawner : CustomInventory
{
  Game Doom
  Radius 20
  +COUNTITEM +THRUACTORS +FORCEXYBILLBOARD
  Inventory.PickupMessage "You picked up a silencer for the CompactMG!"
  Inventory.PickupSound "CMGATCH"
  VisibleToPlayerClass BDoomer, Doomer2, TacticalDoomer
  Inventory.ForbiddenTo Purist
  States
  {
  Spawn:
		TNT1 A 0
		TNT1 A 1
		TNT1 A 0 A_ChangeFlag("THRUACTORS", 0)
	Stay:
		TNT1 A 0
		TNT1 A 0 A_SpawnItem("FakeSilencerSprite")
		TNT1 A 0 A_SpawnItem("FakeClip1Sprite")
		TNT1 A 2
		Loop
	Pickup:
		TNT1 A 0 A_JumpIfInventory("SilencerUpgrade", 1, "AmmoOnly")
		TNT1 A 0 A_GiveInventory("CompactMGSilencer", 1)
		TNT1 A 0 A_GiveInventory("Clip1", 10)
		Stop
	AmmoOnly:
		TNT1 A 0 A_GiveInventory("Clip1", 10)
		Stop
  }
}

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

 Inventory.PickupSound "CLIPINSS"
 Inventory.PickupMessage "You picked up the Quad-Barrel Shotgun! (Slot 3)"
 Mass 1
    States
    {
	 Spawn:
		TNT1 A 0
		TNT1 A 1
		TNT1 A 0 A_ChangeFlag("THRUACTORS", 0)
	Stay:
		TNT1 A 0
		TNT1 A 0 A_SpawnItem("FakeSSGSprite")
		TNT1 A 0 A_SpawnItem("FakeQSSGSprite")
		TTN1 A 2
		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", 8)
		Stop
	Purist:
		TNT1 A 0 A_GiveInventory("ClassicSSG", 1)
		TNT1 A 0 A_GiveInventory("AmmoShell", 8)
		Stop
    }
}

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

	Spawn:
		TNT1 A 0
		TNT1 A 1
		TNT1 A 0 A_ChangeFlag("THRUACTORS", 0)
	Stay:
		TNT1 A 0
		TNT1 A 0 A_SpawnItem("FakePistolSprite")
		TNT1 A 0 A_SpawnItem("FakeShieldSprite")
		TNT1 A 2
		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 picked up a Riot Shield! (Slot 2)"
    Inventory.PickupSound "CLIPIN"
    Mass 1
    States
    {
	Spawn:
		5L1D I 1
		5L1D I -1
		TNT1 A 0 A_ChangeFlag("THRUACTORS", 0)
		Stop
	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("ArmorShardDroped", 1)
		Stop
    }
}

// Fake Sprites
ACTOR FakeCMGSprite: CustomInventory
{
 Scale 0.8
 VisibleToPlayerClass BDoomer, Doomer2, TacticalDoomer
 States
    {

	 Spawn:
		CMGI A 0
		CMGI A 2
		Stop
    }
}

ACTOR FakeSMGSprite: CustomInventory
{
 scale 1.0
 VisibleToPlayerClass Purist
 States
    {

	 Spawn:
		SMGZ A 0
		SMGZ A 2
		Stop
    }
}

ACTOR FakeSSGSprite: CustomInventory
{
 Scale 0.8
 VisibleToPlayerClass Purist
 States
    {

	 Spawn:
		SGN2 A 0
		SGN2 A 2
		Stop
    }
}

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

	 Spawn:
		QGN2 A 0
		QGN2 A 2
		Stop
    }
}

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

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

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

	 Spawn:
		PIST G 0
		PIST G 2
		Stop
    }
}

ACTOR FakeClip1Sprite: CustomInventory
{
Scale 0.9
VisibleToPlayerClass BDoomer, Doomer2, TacticalDoomer
	States
	{
		Spawn:
			CLIP B 0
			CLIP B 2
			Stop
	}
}

ACTOR FakeSilencerSprite : CustomInventory
{
Scale 0.5
VisibleToPlayerClass BDoomer, Doomer2, TacticalDoomer
	States
	{
		Spawn:
			CMGI B 0
			CMGI B 2
			Stop
	}
}