
// *** MODIFIED BY CHEBMASTER
// I mark most important places modified by me with //***Che -- unless I forget to.

//***Che I assign doomed numbers from the chebskies-EDAY range (17xxx) 
//    to some spawners, I want some pickups in some maps be non-variable.

//***Che In my enlightened opinion spamming short-lived sprite actors
//   every 2 tics is not the way to do it
//   (required to make the same picup look different for purist)
// Let's create a *permanent* fake sprite and make it follow 
//    the pickup -- this time without raping the garbage collector
//    and without getting funny visual glitches with the weapon 
//    doubling and tripling when it moves vertically

ACTOR BasicWeaponPickup : Health
{
	scale 0.8
	radius 24
	height 24
	+FORCEXYBILLBOARD
	-COUNTITEM
	+INVENTORY.ALWAYSPICKUP
	Inventory.Amount 0
	Inventory.MaxAmount 99999
	Inventory.PickupMessage ""
	Inventory.PickupSound "none"
}
 
ACTOR RifleSpawner: CustomInventory Replaces Pistol 17718
{
	scale 0.8
	radius 24
	height 24
	+THRUACTORS +FORCEXYBILLBOARD
	Inventory.PickupMessage "$GOTRIFLE"
	Inventory.PickupSound "CLIPIN"
	Mass 1
    States
    {

		Spawn:
			RIFL A 0
			TNT1 A 1
			TNT1 A 0 A_ChangeFlag("THRUACTORS", 0)
			TNT1 A 0
		Stay:
			TNT1 A 0 A_JumpIf(CallACS("GetCannotUseFakeSprites"), "StayNoFake")
			TNT1 A 0 A_SpawnItemEx("FakeClipSpriteMkII",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			TNT1 A 0 A_SpawnItemEx("FakeRifleSpriteMkII",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			TNT1 A -1
			//TNT1 A 2
			//Loop
		StayNoFake:
			RIFL A -1
		Pickup:
			TNT1 A 0
			TNT1 A 0 A_JumpIfInventory("IsPlayingAsPurist", 1, "Purist")
			TNT1 A 0 A_JumpIfInventory("Rifle", 1, "DualRifle")
		PickupNormal:	
			TNT1 A 0 A_GiveInventory("Rifle", 1)
			TNT1 A 0 A_GiveInventory("Clip2", 10)
			Stop
		Purist:
			TNT1 A 0 A_GiveInventory("Clip2", 10)
			Stop
		DualRifle:
			TNT1 A 0 A_GiveInventory("DualRifles", 1)
			TNT1 A 0 A_GiveInventory("Clip2", 10)
			Stop
    }
}

ACTOR AbstractFakeSpiteMkII
{
	Scale 0.8
	+NOGRAVITY +FLOAT +NOCLIP +NOINTERACTION
	+FORCEXYBILLBOARD
	States
	{
		Spawn:
			TNT1 A 2
			// will keep following the actor who spawned it until it disappears
			TNT1 A 0 A_Warp(AAPTR_TARGET, 0,0,0, 0,WARPF_NOCHECKPOSITION,"Spawn")
			Stop
	}
}

ACTOR FakeClipSpriteMkII: AbstractFakeSpiteMkII //FakeClipSprite: RifleSpawner
{
	VisibleToPlayerClass Purist
	States
    {
		Spawn:
			CLIP A 2
			CLIP A 0 A_Warp(AAPTR_TARGET, 0,0,0, 0,WARPF_NOCHECKPOSITION,"Spawn")
			Stop
    }
}


ACTOR FakeRifleSpriteMkII: AbstractFakeSpiteMkII //FakeRifleSprite: RifleSpawner
{
	VisibleToPlayerClass FBDoomer, FBDoomer2, TacticalFBDoomer, FBD_Doomgal, FBD_Doomgal2, FBD_TacticalDoomgal, FBD_Nostalgia, FBD_NostalgiaFem, FBD_Mortal, FBD_MortalFem
	States
    {
		Spawn:
			RIFL A 2
			RIFL A 0 A_Warp(AAPTR_TARGET, 0,0,0, 0,WARPF_NOCHECKPOSITION,"Spawn")
			Stop
    }
}




ACTOR PistolSpawner: CustomInventory 17707 //***Che
{
	scale 0.8
	radius 24
	height 24
	+THRUACTORS +FORCEXYBILLBOARD
	Inventory.PickupMessage "$GOTPISTOL"
	Inventory.PickupSound "CLIPIN"
	Mass 1
    States
    {

		Spawn:
			PIST G 0
			TNT1 A 1
			TNT1 A 0 
			TNT1 A 0 A_ChangeFlag("THRUACTORS", 0)
			TNT1 A 0
		Stay:
			PIST G 1
			PIST G -1
			Stop
		Pickup:
			TNT1 A 0
			TNT1 A 0 A_JumpIfInventory("IsPlayingAsPurist", 1, "Purist")
			TNT1 A 0 A_JumpIfInventory("BrutalPistol", 1, "DualPistol")
		PickupNormal:	
			TNT1 A 0 A_GiveInventory("BrutalPistol", 1)
			TNT1 A 0 A_GiveInventory("Clip1", 10)
			Stop
		Purist:
			TNT1 A 0 A_GiveInventory("Clip2", 10)
			Stop
		DualPistol:
			TNT1 A 0
			TNT1 A 0 A_GiveInventory("DualPistols", 1)
			TNT1 A 0 A_GiveInventory("Clip1", 10)
			Stop
    }
}



ACTOR MP40Spawner: CustomInventory 17706 //***Che
{
	scale 0.8
	radius 24
	height 24
	+THRUACTORS +FORCEXYBILLBOARD
	Inventory.PickupMessage "You got the Mp-40"
	Inventory.PickupSound "CLIPIN"
	Mass 1
    States
    {
		Spawn:
			MP40 I 0
			TNT1 A 1
			TNT1 A 0 A_ChangeFlag("THRUACTORS", 0)
			TNT1 A 0
		Stay:
			TNT1 A 0 A_JumpIf(CallACS("GetCannotUseFakeSprites"), "StayNoFake")
			TNT1 A 0 A_SpawnItemEx("FakeClipSpriteMkII",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			TNT1 A 0 A_SpawnItemEx("FakeMP40SpriteMkII",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			TNT1 A 2
			TNT1 A -1
			//Loop
		StayNoFake:
			MP40 I -1
		Pickup:
			TNT1 A 0
			TNT1 A 0 A_JumpIfInventory("IsPlayingAsPurist", 1, "Purist")
			TNT1 A 0 A_JumpIfInventory("MP40", 1, "Dual")
		PickupNormal:	
			TNT1 A 0 A_GiveInventory("MP40", 1)
			TNT1 A 0 A_GiveInventory("Clip1", 30) //"Mauser9mm", 30)
			Stop
		Purist:
			TNT1 A 0 A_GiveInventory("Clip2", 20)
			Stop
		Dual:
			TNT1 A 0 A_GiveInventory("DualMP40", 1)
			TNT1 A 0 A_GiveInventory("Clip1", 10) //"Mauser9mm", 10)
			Stop
    }
}


ACTOR FakeMP40SpriteMkII: AbstractFakeSpiteMkII //FakeMP40Sprite: RifleSpawner
{
	VisibleToPlayerClass FBDoomer, FBDoomer2, TacticalFBDoomer, FBD_Doomgal, FBD_Doomgal2, FBD_TacticalDoomgal, FBD_Nostalgia, FBD_NostalgiaFem, FBD_Mortal, FBD_MortalFem
	States
    {
		Spawn:
			MP40 I 2
			MP40 I 0 A_Warp(AAPTR_TARGET, 0,0,0, 0,WARPF_NOCHECKPOSITION,"Spawn")
			Stop
    }
}



ACTOR ShotgunSpawner: CustomInventory Replaces Shotgun
{
	scale 0.8
	radius 24
	height 24
	+THRUACTORS +FORCEXYBILLBOARD

	Inventory.PickupMessage "$GOTSHOTGUN"
	Inventory.PickupSound "weapons/sgpump"
	Mass 1
    States
    {
		Spawn:
			SHTC A 0
			SHTC A 2
			TNT1 A 0 A_ChangeFlag("THRUACTORS", 0)
			TNT1 A 0 A_JumpIf(CallACS("GetCannotUseFakeSprites"), "StayNoFake")

			TNT1 A 0 A_SpawnItemEx("FakeOldSGSpriteMkII",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			TNT1 A 0 A_SpawnItemEx("FakeNewSGSpriteMkII",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			TNT1 A -1
			//Loop
		StayNoFake:
			SHTC A -1
		Pickup:
			TNT1 A 0
			TNT1 A 0 A_JumpIfInventory("IsPlayingAsPurist", 1, "Purist")
			TNT1 A 0 A_GiveInventory("Shot_Gun", 1)
			TNT1 A 0 A_GiveInventory("AmmoShell", 8)
			Stop
		Purist:
			TNT1 A 0 A_GiveInventory("ClassicShotgun", 1)
			TNT1 A 0 A_GiveInventory("AmmoShell", 8)
			Stop
    }
}



ACTOR ShotgunSpawnerDroped: ShotgunSpawner
{
    States
    {
		Spawn:
			TNT1 A 0
			SHTC A 2
			TNT1 A 0 A_ChangeFlag("THRUACTORS", 0)
			TNT1 A 0 A_JumpIf(CallACS("GetCannotUseFakeSprites"), "StayNoFake")
			TNT1 A 0 A_SpawnItemEx("FakeOldSGSpriteMkII",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			TNT1 A 0 A_SpawnItemEx("FakeNewSGSpriteMkII",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			TNT1 A -1
			Loop
		StayNoFake:
			SHTC A -1			
		Pickup:
			TNT1 A 0
			TNT1 A 0 A_JumpIfInventory("IsPlayingAsPurist", 1, "Purist")
			TNT1 A 0 A_GiveInventory("Shot_Gun", 1)
			TNT1 A 0 A_GiveInventory("AmmoShell", 2)
			Stop
		Purist:
			TNT1 A 0 A_GiveInventory("ClassicShotgun", 1)
			TNT1 A 0 A_GiveInventory("AmmoShell", 2)
			Stop
    }
}

ACTOR FakeOldSGSpriteMkII: AbstractFakeSpiteMkII //FakeOldSGSprite: RifleSpawner
{
	VisibleToPlayerClass Purist
	States
    {
		Spawn:
			SHTC B 2
			SHTC B 0 A_Warp(AAPTR_TARGET, 0,0,0, 0,WARPF_NOCHECKPOSITION,"Spawn")
			Stop
    }
}


ACTOR FakeNewSGSpriteMkII: AbstractFakeSpiteMkII //FakeNewSGSprite: RifleSpawner
{
	VisibleToPlayerClass FBDoomer, FBDoomer2, TacticalFBDoomer, FBD_Doomgal, FBD_Doomgal2, FBD_TacticalDoomgal, FBD_Nostalgia, FBD_NostalgiaFem, FBD_Mortal, FBD_MortalFem
	States
    {
		Spawn:
			SHTC A 2
			SHTC A 0 A_Warp(AAPTR_TARGET, 0,0,0, 0,WARPF_NOCHECKPOSITION,"Spawn")
			Stop
    }
}




ACTOR SSGSpawner: CustomInventory 17705 //***Che
{
	scale 0.8
	radius 24
	height 24
	+THRUACTORS +FORCEXYBILLBOARD

	Inventory.PickupMessage "$GOTSHOTGUN2"
	Inventory.PickupSound "CLIPINSS"
	Mass 1
    States
    {
		Spawn:
			SGN2 A 0
			SGN2 A 10
			TNT1 A 0 A_ChangeFlag("THRUACTORS", 0)
			SGN2 A -1
			Stop
		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
    }
}

ACTOR SSGSpawnerReplacer: BasicWeaponPickup Replaces  SuperShotgun
{
    States
    {
		Spawn:
			SGN2 A 0
			MARN A 0 ACS_NamedExecuteAlways("BDDisableNewGuns", 0, 0, 0, 0)//Check if advanced decorations are disabled.
			SGN2 A 2
			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 ("AssaultShotgunSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG ,0)
			TNT1 A 1
			TNT1 A -1
			Stop
	}
}

ACTOR ChaingunSpawner: CustomInventory 17704 //***Che
{
	scale 0.8
	radius 24
	height 24
	+THRUACTORS 
	+FORCEXYBILLBOARD
	Inventory.PickupSound "CBOXPKUP"
	Inventory.PickupMessage "$GOTCHAINGUN"
	Mass 1
    States
    {
		Spawn:
			MGUN A 0
			TNT1 A 10
			TNT1 A 0 A_ChangeFlag("THRUACTORS", 0)
			TNT1 A 0
		Stay:
			TNT1 A 0 A_JumpIf(CallACS("GetCannotUseFakeSprites"), "StayNoFake")
			TNT1 A 0 A_SpawnItemEx("FakeChaingunSpriteMkII",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			TNT1 A 0 A_SpawnItemEx("FakeMinigunSpriteMkII",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			TNT1 A -1 //2
			Loop
		StayNoFake:
			MGUN A -1	
		Pickup:
			TNT1 A 0
			TNT1 A 0 A_JumpIfInventory("IsPlayingAsPurist", 1, "Purist")
			TNT1 A 0 A_GiveInventory("Minigun", 1)
			TNT1 A 0 A_GiveInventory("Clip2", 20)
			Stop
		Purist:
			TNT1 A 0 A_GiveInventory("ClassicChaingun", 1)
			TNT1 A 0 A_GiveInventory("Clip1", 20)
			TNT1 A 1
			TNT1 A -1
			Stop
    }
}

ACTOR SMGSpawner: CustomInventory 17703 //***Che
{
	scale 1.0
	radius 24
	height 24
	+THRUACTORS +FORCEXYBILLBOARD

	Inventory.PickupSound "CBOXPKUP"
	Inventory.PickupMessage "You got the Sub-machinegun!"
	Mass 1
    States
    {
		Spawn:
			SMGZ A 0
			TNT1 A 10
			TNT1 A 0 A_ChangeFlag("THRUACTORS", 0)
			TNT1 A 0
		Stay:
			SMGZ A 1
			SMGZ A -1
			Loop
		Pickup:
			TNT1 A 0
			TNT1 A 0 A_JumpIfInventory("IsPlayingAsPurist", 1, "Purist")
			TNT1 A 0 A_JumpIfInventory("BrutalSMG", 1, "Dual")
		PickupNormal:	
			TNT1 A 0 A_GiveInventory("BrutalSMG", 1)
			TNT1 A 0 A_GiveInventory("Clip1", 20)
			Stop
		Dual:
			TNT1 A 0
			TNT1 A 0 A_GiveInventory("DualSMG", 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 MachinegunSpawner: CustomInventory 17702 //***Che
{
	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:
			MGN1 Z 0
			TNT1 A 10
			TNT1 A 0 A_ChangeFlag("THRUACTORS", 0)
			TNT1 A 0
			//TNT1 A 0 A_SpawnItemEx("FakeChaingunSpriteMkII",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			//TNT1 A 0 A_SpawnItemEx("FakeMachinegunSpriteMkII",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			TNT1 A 75
			TNT1 A 0 A_JumpIf(CallACS("GetIsEDAY") || CallACS("GetDoesAnyPlayerHaveWeaponFor792UAC"), "Stay")
			TNT1 A 0 A_CustomMissile("792UacAmmoBoxAdder", 32, 0, Random(-180, 180), CMF_AIMOFFSET | CMF_ABSOLUTEPITCH, 0)			
		Stay:
			TNT1 A 1
			MGN1 Z -1
			Loop
		Pickup:
			TNT1 A 0
			TNT1 A 0 A_JumpIfInventory("IsPlayingAsPurist", 1, "Purist")
			TNT1 A 0 A_GiveInventory("Machinegun", 1)
			TNT1 A 0 A_GiveInventory("792UAC", 75) //A_GiveInventory("Clip2", 50)
			Stop

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

ACTOR FakeMachinegunSpriteMkII: AbstractFakeSpiteMkII //FakeOldSGSprite: RifleSpawner
{
	VisibleToPlayerClass FBDoomer, FBDoomer2, TacticalFBDoomer, FBD_Doomgal, FBD_Doomgal2, FBD_TacticalDoomgal, FBD_Nostalgia, FBD_NostalgiaFem, FBD_Mortal, FBD_MortalFem
	States
    {
		Spawn:
			MGN1 Z 2
			MGN1 Z 0 A_Warp(AAPTR_TARGET, 0,0,0, 0,WARPF_NOCHECKPOSITION,"Spawn")
			Stop
    }
} 

actor ChaingunSpawnerReplacer : BasicWeaponPickup Replaces Chaingun
{
    States
    {
		Spawn:
			MGUN A 0
			MGUN A 0 ACS_NamedExecuteAlways("BDDisableNewGuns", 0, 0, 0, 0)//Check if advanced decorations are disabled.
			MGUN A 2
			//***Che: because the fucking SMG uses different ammo - ruining single map runs 
			//  by denying you a weapon that fires regular bullets
			//  -- that you have HEAPS of, but no gun.
			//  While smg runs out of ammo and that's that.
			//TNT1 A 0 A_Jump(64, "Spawn2", "Spawn3")
			TNT1 A 0 A_JumpIf(CallACS("GetIsEDAY"), "Spawn1") 
			TNT1 A 0 A_Jump(32, "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: // never!
			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	
	}
}


ACTOR FakeChaingunSpriteMkII: AbstractFakeSpiteMkII //FakeChaingunSprite: RifleSpawner
{
	VisibleToPlayerClass Purist
	States
    {
		Spawn:
			MGUN B 2
			MGUN B 0 A_Warp(AAPTR_TARGET, 0,0,0, 0,WARPF_NOCHECKPOSITION,"Spawn")
			Stop
    }
}



ACTOR FakeMinigunSpriteMkII: AbstractFakeSpiteMkII //FakeMinigunSprite: RifleSpawner
{
	VisibleToPlayerClass FBDoomer, FBDoomer2, TacticalFBDoomer, FBD_Doomgal, FBD_Doomgal2, FBD_TacticalDoomgal, FBD_Nostalgia, FBD_NostalgiaFem, FBD_Mortal, FBD_MortalFem
	States
    {
		Spawn:
			MGUN A 2
			MGUN A 0 A_Warp(AAPTR_TARGET, 0,0,0, 0,WARPF_NOCHECKPOSITION,"Spawn")
			Stop
    }
}

ACTOR DropedChaingunSpawner: ChaingunSpawner
{
    States
    {

		Spawn:
			TNT1 A 0
			TNT1 A 10
			TNT1 A 0 A_ChangeFlag("THRUACTORS", 0)
			TNT1 A 0
		Stay:
			TNT1 A 0
			TNT1 A 0 A_JumpIf(CallACS("GetCannotUseFakeSprites"), "StayNoFake")
			TNT1 A 0 A_SpawnItemEx("FakeChaingunSpriteMkII",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			TNT1 A 0 A_SpawnItemEx("FakeMinigunSpriteMkII",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			TNT1 A -1 //2
			Loop
		StayNoFake:
			MGUN A 1
			MGUN A -1
		Pickup:
			TNT1 A 0
			TNT1 A 0 A_JumpIfInventory("IsPlayingAsPurist", 1, "Purist")
			TNT1 A 0 A_GiveInventory("Minigun", 1)
			TNT1 A 0 A_GiveInventory("Clip2", 10)
			Stop
		Purist:
			TNT1 A 0 A_GiveInventory("ClassicChaingun", 1)
			TNT1 A 0 A_GiveInventory("Clip2", 10)
			Stop
    }
}



ACTOR RocketLauncherSpawner : CustomInventory 17701 ///***Che
{
	scale 0.8
	radius 24
	height 24
	+THRUACTORS +FORCEXYBILLBOARD
	Inventory.PickupSound "ROCKPKUP"
	Inventory.PickupMessage "$GOTLAUNCHER" 
	Mass 1
    States
    {
		Spawn:
			RLAU B 0
			TNT1 A 10
			TNT1 A 0 A_ChangeFlag("THRUACTORS", 0)
			TNT1 A 0
		Stay:
			TNT1 A 0 A_JumpIf(CallACS("GetCannotUseFakeSprites"), "StayNoFake")
			TNT1 A 0 A_SpawnItemEx("FakeRocketLauncherSpriteMkII",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			TNT1 A 0 A_SpawnItemEx("FakeRL2SpriteMkII",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			TNT1 A -1 //2
			Loop
		StayNoFake:
			RLAU B -1
		Pickup:
			TNT1 A 0
			TNT1 A 0 A_JumpIfInventory("IsPlayingAsPurist", 1, "Purist")
			TNT1 A 0 A_GiveInventory("AmmoRocket", 2)
			TNT1 A 0 A_GiveInventory("Rocket_Launcher", 1)
			Stop
		Purist:
			TNT1 A 0
			TNT1 A 0 A_GiveInventory("AmmoRocket", 2)
			TNT1 A 0 A_GiveInventory("ClassicRocketLauncher", 1)
			Stop
    }
}


ACTOR GrenadeLauncherSpawner: CustomInventory 2551
{
	scale 0.8
	radius 24
	height 24
	+THRUACTORS +FORCEXYBILLBOARD
	//$category Weapons
	Inventory.PickupSound "ROCKPKUP"
	Inventory.PickupMessage "You got the Grenade Launcher!"
	Mass 1
    States
    {
		Spawn:
			GLAP A 0
			GLAP A 10
			TNT1 A 0 A_ChangeFlag("THRUACTORS", 0)
			TNT1 A 0
		Stay:
			TNT1 A 0 A_JumpIf(CallACS("GetCannotUseFakeSprites"), "StayNoFake")
			TNT1 A 0 A_SpawnItemEx("FakeRocketLauncherSpriteMkII",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			TNT1 A 0 A_SpawnItemEx("FakeGLSpriteMkII",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			TNT1 A -1 //2
			Loop
		StayNoFake:
			GLAP A -1
		Pickup:
			TNT1 A 0
			TNT1 A 0 A_JumpIfInventory("IsPlayingAsPurist", 1, "Purist")
			TNT1 A 0 A_GiveInventory("GrenadeLauncher", 1)
			TNT1 A 0 A_GiveInventory("AmmoRocket", 2)
			
			//***Che: I had fucking ENUFF of maps played from a fresh start RUINED
			//  because they are designed for a RL 
			//  while GL does zilch against bosses!
			// An ugly hack? Yes.
			// Solves the ugly problem? FUCK YES.
			TNT1 A 0 A_JumpIfInventory("Rocket_Launcher", 1, 2)
			TNT1 A 0 A_GiveInventory("Rocket_Launcher", 1)
			TNT1 A 0
			Stop
		Purist:
			TNT1 A 0 A_GiveInventory("ClassicRocketLauncher", 1)
			TNT1 A 0 A_GiveInventory("AmmoRocket", 2)
			Stop
    }
}



actor RLSpawnerReplacer  : BasicWeaponPickup Replaces RocketLauncher
{
    States
    {

		Spawn:
			LAUN A 0
			MARN A 0 ACS_NamedExecuteAlways("BDDisableNewGuns", 0, 0, 0, 0)//Check if advanced decorations are disabled.
			LAUN A 2
			TNT1 A 0 A_JumpIf(CallACS("GetIsEDAY"), "Spawn1") 
			TNT1 A 0 A_Jump(48, "Spawn2")
			
		Vanilla:	
		Spawn1:
			TNT1 A 0
			TNT1 A 0 A_SpawnItemEx ("RocketLauncherSpawner",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 ("GrenadeLauncherSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG ,0)
			TNT1 A 1
			TNT1 A -1
			Stop
	}
}


ACTOR FakeRocketLauncherSpriteMkII: AbstractFakeSpiteMkII 
{
	VisibleToPlayerClass FBDoomer, FBDoomer2, TacticalFBDoomer, FBD_Doomgal, FBD_Doomgal2, FBD_TacticalDoomgal, FBD_Nostalgia, FBD_NostalgiaFem, FBD_Mortal, FBD_MortalFem
	States
    {
		Spawn:
			RLAU B 2
			RLAU B 0 A_Warp(AAPTR_TARGET, 0,0,0, 0,WARPF_NOCHECKPOSITION,"Spawn")
			Stop
    }
}

ACTOR FakeRL2SpriteMkII: AbstractFakeSpiteMkII 
{
	VisibleToPlayerClass Purist
	States
    {
		Spawn:
			RLAU A 2
			RLAU A 0 A_Warp(AAPTR_TARGET, 0,0,0, 0,WARPF_NOCHECKPOSITION,"Spawn")
			Stop
    }
}

ACTOR FakeGLSpriteMkII: AbstractFakeSpiteMkII 
{
	VisibleToPlayerClass FBDoomer, FBDoomer2, TacticalFBDoomer, FBD_Doomgal, FBD_Doomgal2, FBD_TacticalDoomgal, FBD_Nostalgia, FBD_NostalgiaFem, FBD_Mortal, FBD_MortalFem
	States
    {
		Spawn:
			GLAP A 2
			GLAP A 0 A_Warp(AAPTR_TARGET, 0,0,0, 0,WARPF_NOCHECKPOSITION,"Spawn")
			Stop
    }
}



ACTOR PLasmagunSpawner: CustomInventory 17700 //***Che giving it a doomed num
{
	scale 0.8
	radius 24
	height 24
	+THRUACTORS +FORCEXYBILLBOARD

	Inventory.PickupSound "PLSDRAW"
	Inventory.PickupMessage "$GOTPLASMA"
	Mass 1
    States
    {
		Spawn:
			PLAS A 0
			PLAS A 10
			TNT1 A 0 A_ChangeFlag("THRUACTORS", 0)
			PLAS A -1
			Stop
		Pickup:
			TNT1 A 0
			TNT1 A 0 A_JumpIfInventory("IsPlayingAsPurist", 1, "Purist")
			TNT1 A 0 A_JumpIfInventory("Plasma_Gun", 1, "DualPlasma")
		PickupNormal:	
			TNT1 A 0 A_GiveInventory("Plasma_Gun", 1)
			TNT1 A 0 A_GiveInventory("AmmoCell", 50)
			Stop
		Purist:
			TNT1 A 0 A_GiveInventory("ClassicPlasmaRifle", 1)
			TNT1 A 0 A_GiveInventory("AmmoCell", 50)
			Stop
		DualPlasma:
			TNT1 A 0
			TNT1 A 0 A_GiveInventory("DUalPlasmaRifles", 1)
			TNT1 A 0 A_GiveInventory("AmmoCell", 50)
			Stop	
    }
}

actor PlasmagunReplacer : BasicWeaponPickup Replaces PLasmaRifle
{
    States
    {

		Spawn:
			PLAS A 0
			MARN A 0 ACS_NamedExecuteAlways("BDDisableNewGuns", 0, 0, 0, 0)//Check if advanced decorations are disabled.
			PLAS A 2
			TNT1 A 0 A_JumpIf(CallACS("GetIsEDAY"), "Spawn1") 
			TNT1 A 0 A_Jump(48, "Spawn2")
			
		Vanilla:	
		Spawn1:
			PLAS A 0
			TNT1 A 0 A_SpawnItemEx ("PLasmagunSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG ,0)
			TNT1 A 1
			TNT1 A -1
			Stop
		
		Spawn2:
			PLAS A 0
			TNT1 A 0 A_SpawnItemEx ("RandomRailgunSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG ,0)
			TNT1 A 1
			TNT1 A -1
			Stop
	}
}


ACTOR RandomRailgunSpawner: CustomInventory
{
	scale 0.8
	radius 24
	height 24
	//$category "Weapons"
	+THRUACTORS +FORCEXYBILLBOARD
	Inventory.PickupSound "PLSDRAW"
	Inventory.PickupMessage "You got the Railgun!"
	Mass 1
    States
    {
		Spawn:
			SRCG A 0
			SRCG A 2
			TNT1 A 0 A_ChangeFlag("THRUACTORS", 0)
			TNT1 A 0 A_JumpIf(CallACS("GetCannotUseFakeSprites"), "StayNoFake")
			TNT1 A 0 A_SpawnItemEx("FakePlasmagunSpriteMkII",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			TNT1 A 0 A_SpawnItemEx("FakeRailgunSpriteMkII",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			TNT1 A -1
			Loop
		StayNoFake:
			SRCG A -1
		Pickup:
			TNT1 A 0
			TNT1 A 0 A_JumpIfInventory("IsPlayingAsPurist", 1, "Purist")
			TNT1 A 0 A_GiveInventory("Railgun", 1)
			TNT1 A 0 A_GiveInventory("AmmoCell", 50)
			Stop
		Purist:
			TNT1 A 0 A_GiveInventory("ClassicPlasmaRifle", 1)
			TNT1 A 0 A_GiveInventory("AmmoCell", 50)
			Stop
    }
}


ACTOR RailgunSpawner: RandomRailgunSpawner 2552
{
    States
    {
		Spawn:
			SRCG A 0
			SRCG A 2
			TNT1 A 0 A_ChangeFlag("THRUACTORS", 0)
			SRCG A -1
			Loop
		Pickup:
			TNT1 A 0
			TNT1 A 0 A_JumpIfInventory("IsPlayingAsPurist", 1, "Purist")
			TNT1 A 0 A_GiveInventory("Railgun", 1)
			TNT1 A 0 A_GiveInventory("AmmoCell", 50)
			Stop
		Purist:
			TNT1 A 0 A_GiveInventory("ClassicRailgun", 1)
			TNT1 A 0 A_GiveInventory("AmmoCell", 50)
			Stop
    }
}

ACTOR FakeRailgunSpriteMkII: AbstractFakeSpiteMkII 
{
	VisibleToPlayerClass FBDoomer, FBDoomer2, TacticalFBDoomer, FBD_Doomgal, FBD_Doomgal2, FBD_TacticalDoomgal, FBD_Nostalgia, FBD_NostalgiaFem, FBD_Mortal, FBD_MortalFem
	States
    {
		Spawn:
			SRCG A 2
			SRCG A 0 A_Warp(AAPTR_TARGET, 0,0,0, 0,WARPF_NOCHECKPOSITION,"Spawn")
			Stop
    }
}

ACTOR FakePlasmagunSpriteMkII: AbstractFakeSpiteMkII 
{
	VisibleToPlayerClass Purist
	States
    {
		Spawn:
			PLAS A 2
			PLAS A 0 A_Warp(AAPTR_TARGET, 0,0,0, 0,WARPF_NOCHECKPOSITION,"Spawn")
			Stop
    }
}

ACTOR DropedPlasmaGun: PlasmagunSpawner // do NOT replace with railgun
{
    States
    {
		Spawn:
			PLAS A 0
			PLAS A 2
			TNT1 A 0 A_ChangeFlag("THRUACTORS", 0)
			PLAS A -1
		Pickup:
			TNT1 A 0
			TNT1 A 0 A_JumpIfInventory("IsPlayingAsPurist", 1, "Purist")
			TNT1 A 0 A_JumpIfInventory("Plasma_Gun", 1, "DualPlasma")
			TNT1 A 0 A_GiveInventory("Plasma_Gun", 1)
			Stop
		Purist:
			TNT1 A 0 A_GiveInventory("ClassicPlasmaRifle", 1)
			Stop
		DualPlasma:
			TNT1 A 0 A_GiveInventory("DUalPlasmaRifles", 1)
			Stop
    }
}





actor BFGReplacer : BasicWeaponPickup Replaces BFG9000
{
    States
    {

		Spawn:
			BFUG A 0 //NODELAY ACS_NamedExecuteAlways("FBD_WolfensteinCheck")
			//BFUG A 0 Thing_ChangeTID(0,736)
			MARN A 0 ACS_NamedExecuteAlways("BDDisableNewGuns", 0, 0, 0, 0)//Check if advanced decorations are disabled.
			BFUG A 7 //3
			
			//TNT1 A 0 A_JumpIfInventory("NaziVerificate1", 1, "MG42")
			//TNT1 A 0 A_JumpIfInventory("NaziVerificate2", 1, "MG42")
			
			//***Che FUCKING FINALLY, on the third day chieftain Eagle Eye 
			//    noticed that the prison lacked one of its walls.
			// Mark-sensei had -- OBVIOUSLY -- discovered this treasure somewhere between BD21 and BD22test3.
			// But did this Cheb pay attention...? Nooooo. Kept crying but chewing the cactus of asynchronous ACS.
			
			TNT1 A 0 A_JumpIf(CallACS("FBD_WolfensteinRead"), "MG42")
			
			TNT1 A 0 A_Jump(48, "BFG10K")
			TNT1 A 0 A_JumpIf(CallACS("GetIsEDAY"), "Spawn1") 
			TNT1 A 0 A_Jump(4, "Unmaker")
			
		Vanilla:	
		Spawn1:
			TNT1 A 1
			TNT1 A 0 A_SpawnItemEx ("BFG9000Spawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG ,0)
			TNT1 A 1
			TNT1 A -1
			Stop
		
		BFG10K:
			TNT1 A 1
			TNT1 A 0 A_SpawnItemEx ("RandomBFG10KSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG ,0)
			TNT1 A 1
			TNT1 A -1
			Stop
			
		Unmaker:
			TNT1 A 1
			TNT1 A 0 A_SpawnItemEx ("RandomUnmakerSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG ,0)
			TNT1 A 1
			TNT1 A -1
			Stop
			
		Flamethrower:
			TNT1 A 1
			TNT1 A 0 A_SpawnItemEx ("Flamethrower2",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG ,0)
			TNT1 A 1
			TNT1 A -1
			Stop	

		MG42:
			TNT1 A 1
			TNT1 A 0 A_SpawnItemEx ("MG42Spawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG ,0)
			TNT1 A 1
			TNT1 A -1
			Stop		
	}
}


ACTOR BFG9000Spawner: CustomInventory 17699 //***Che
{
	scale 0.8
	radius 24
	height 24
	+THRUACTORS +FORCEXYBILLBOARD
	Inventory.PickupSound "BFGREADY"
	Inventory.PickupMessage "$GOTBFG9000"
	Mass 1
    States
    {

		Spawn:
			BFUG A 0
			TNT1 A 2
			TNT1 A 0 A_ChangeFlag("THRUACTORS", 0)
			TNT1 A 0 A_JumpIf(CallACS("GetCannotUseFakeSprites"), "StayNoFake")
			TNT1 A 0 A_SpawnItemEx("FakeBFGSpriteMkII",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			TNT1 A 0 A_SpawnItemEx("FakeOldBFGSpriteMkII",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			TNT1 A -1
			Loop
		StayNoFake:
			BFUG A -1
		Pickup:
			TNT1 A 0
			TNT1 A 0 A_JumpIfInventory("IsPlayingAsPurist", 1, "Purist")
			TNT1 A 0 A_GiveInventory("BIG_FUCKING_GUN", 1)
			TNT1 A 0 A_GiveInventory("AmmoCell", 100)
			Stop
		Purist:
			TNT1 A 0 A_GiveInventory("VanillaBFG9000", 1)
			TNT1 A 0 A_GiveInventory("AmmoCell", 100)
			Stop
    }
}


ACTOR RandomBFG10KSpawner: CustomInventory
{
	scale 0.8
	radius 24
	height 24
	//$category "Weapons"
	+THRUACTORS +FORCEXYBILLBOARD
	Inventory.PickupSound "BFGREADY"
	Inventory.PickupMessage "You got the BFG 10K! Holy Shit!"
	Mass 1
    States
    {
		Spawn:
			BFG2 A 0
			TNT1 A 2
			TNT1 A 0 A_ChangeFlag("THRUACTORS", 0)
			TNT1 A 0 A_JumpIf(CallACS("GetCannotUseFakeSprites"), "StayNoFake")
			TNT1 A 0 A_SpawnItemEx("FakeBFG10KSpriteMkII",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			TNT1 A 0 A_SpawnItemEx("FakeOldBFGSpriteMkII",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			TNT1 A -1
			Loop
		StayNoFake:
			BFG2 A -1
		Pickup:
			TNT1 A 0
			TNT1 A 0 A_JumpIfInventory("IsPlayingAsPurist", 1, "Purist")
			TNT1 A 0 A_GiveInventory("BFG10K", 1)
			TNT1 A 0 A_GiveInventory("AmmoCell", 100)
			Stop
		Purist:
			TNT1 A 0 A_GiveInventory("VanillaBFG9000", 1)
			TNT1 A 0 A_GiveInventory("AmmoCell", 100)
			Stop
    }
}

ACTOR BFG10KSpawner: RandomBFG10KSpawner 2553
{
    States
    {
		Spawn:
			BFG2 A 0
			TNT1 A 2
			TNT1 A 0 A_ChangeFlag("THRUACTORS", 0)
			BFG2 A -1
			Loop
		Pickup:
			TNT1 A 0
			TNT1 A 0 A_JumpIfInventory("IsPlayingAsPurist", 1, "Purist")
			TNT1 A 0 A_GiveInventory("BFG10K", 1)
			TNT1 A 0 A_GiveInventory("AmmoCell", 100)
			Stop
		Purist:
			TNT1 A 0 A_GiveInventory("ClassicBFG10K", 1)
			TNT1 A 0 A_GiveInventory("AmmoCell", 100)
			Stop			
    }
}	
	

ACTOR RandomUnmakerSpawner: CustomInventory //8845
{
	//$category "Weapons"
	
	// as a random chance, no it is NOT available to purists
	scale 0.8
	radius 24
	height 24
	+THRUACTORS +FORCEXYBILLBOARD
	Inventory.PickupSound "UNMREADY"
	Inventory.PickupMessage "You got the sinister Unmaker, the power of hell itself. (Slot 8)"
	Mass 1

    States
    {
		Spawn:
			UNHW A 0
			TNT1 A 2
			TNT1 A 0 A_ChangeFlag("THRUACTORS", 0)
			TNT1 A 0 A_JumpIf(CallACS("GetCannotUseFakeSprites"), "StayNoFake")
			TNT1 A 0 A_SpawnItemEx("FakeUnmakerSpriteMkII",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			TNT1 A 0 A_SpawnItemEx("FakeOldBFGSpriteMkII",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			TNT1 A -1
			Loop
		StayNoFake:
			UNHW A -1
		Pickup:
			TNT1 A 0
			TNT1 A 0 A_JumpIfInventory("IsPlayingAsPurist", 1, "Purist")
			TNT1 A 0 A_GiveInventory("Unmaker", 1)
			TNT1 A 0 A_GiveInventory("SoulAmmo", 15)
			Stop
		Purist:
			TNT1 A 0 A_GiveInventory("VanillaBFG9000", 1)
			TNT1 A 0 A_GiveInventory("AmmoCell", 100)
			Stop
    }
}


ACTOR UnmakerSpawner: RandomUnmakerSpawner 8845
{
	// placed by the editor, it is available to purists as well
    States
    {
		Spawn:
			UNHW A 0
			UNHW A 10
			TNT1 A 0 A_ChangeFlag("THRUACTORS", 0)
			UNHW A -1
			Loop
		Pickup:
			TNT1 A 0
			TNT1 A 0 A_JumpIfInventory("IsPlayingAsPurist", 1, "Purist")
			TNT1 A 0 A_GiveInventory("Unmaker", 1)
			TNT1 A 0 A_GiveInventory("SoulAmmo", 15)
			Stop
		Purist:
			TNT1 A 0 A_GiveInventory("ClassicUnmaker", 1)
			TNT1 A 0 A_GiveInventory("SoulAmmo", 15)
			Stop			
			
    }
}


ACTOR FakeBFG10KSpriteMkII: AbstractFakeSpiteMkII //FakeBFG10KSprite: RifleSpawner
{
	VisibleToPlayerClass FBDoomer, FBDoomer2, TacticalFBDoomer, FBD_Doomgal, FBD_Doomgal2, FBD_TacticalDoomgal, FBD_Nostalgia, FBD_NostalgiaFem, FBD_Mortal, FBD_MortalFem
	States
    {
		Spawn:
			BFG2 A 2
			BFG2 A 0 A_Warp(AAPTR_TARGET, 0,0,0, 0,WARPF_NOCHECKPOSITION,"Spawn")
			Stop
    }
}


ACTOR FakeUnmakerSpriteMkII: AbstractFakeSpiteMkII //FakeUnmakerSprite: RifleSpawner
{
	VisibleToPlayerClass FBDoomer, FBDoomer2, TacticalFBDoomer, FBD_Doomgal, FBD_Doomgal2, FBD_TacticalDoomgal, FBD_Nostalgia, FBD_NostalgiaFem, FBD_Mortal, FBD_MortalFem
	States
	{
		Spawn:
			UNHW A 2
			UNHW A 0 A_Warp(AAPTR_TARGET, 0,0,0, 0,WARPF_NOCHECKPOSITION,"Spawn")
			Stop
    }
}

ACTOR FakeBFGSpriteMkII: AbstractFakeSpiteMkII //FakeBFGSprite: RifleSpawner
{
	VisibleToPlayerClass FBDoomer, FBDoomer2, TacticalFBDoomer, FBD_Doomgal, FBD_Doomgal2, FBD_TacticalDoomgal, FBD_Nostalgia, FBD_NostalgiaFem, FBD_Mortal, FBD_MortalFem
	States
    {
		Spawn:
			BFUG A 2
			BFUG A 0 A_Warp(AAPTR_TARGET, 0,0,0, 0,WARPF_NOCHECKPOSITION,"Spawn")
			Stop
    }
}


ACTOR FakeOLDBFGSpriteMkII: AbstractFakeSpiteMkII //FakeOLDBFGSprite: RifleSpawner 
{
	VisibleToPlayerClass Purist
	States
    {
		Spawn:
			BFUG B 2
			BFUG B 0 A_Warp(AAPTR_TARGET, 0,0,0, 0,WARPF_NOCHECKPOSITION,"Spawn")
			Stop
    }
}


ACTOR ChainsawSpawner: CustomInventory Replaces Chainsaw
{
	//$category "Weapons"
	scale 0.8
	radius 24
	height 24
	+THRUACTORS +FORCEXYBILLBOARD
	inventory.pickupsound "weapons/chainsaw/draw"
	Inventory.PickupMessage "$GOTCHAINSAW"
	Mass 1
    States
    {
		Spawn:
			CSAW A 0
			//***Che my investigation showed this is a probe used by the BD map enhancement system
			//  to detect certain maps by finding certain things in certain positions
			TNT1 A 0 A_SpawnItemEx("EvidenceCheckerChainsaw", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
			CSAW A 10
			TNT1 A 0 A_ChangeFlag("THRUACTORS", 0)
			CSAW A -1
			Stop
		Pickup:
			TNT1 A 0
			TNT1 A 0 A_JumpIfInventory("IsPlayingAsPurist", 1, "Purist")
			TNT1 A 0 A_GiveInventory("Chain_Saw", 1)
			Stop
		Purist:
			TNT1 A 0 A_GiveInventory("ClassicSaw", 1)
			Stop
    }
}

//***Che used as a super-secret weapon in Chebskies-EDAY maps 42 and 27
ACTOR MG42Spawner: CustomInventory 17563
{
	//$category "Weapons"
	scale 0.4
	radius 24
	height 24
	+THRUACTORS +FORCEXYBILLBOARD
	Inventory.PickupSound "CBOXPKUP"
	Inventory.PickupMessage "$GOTMG42" // "Ты взял qпилу Гитлера, MG-42! (слот 8)" / "You got the Hitler's Buzzsaw, MG42! (Slot 8)"
	Mass 1
    States
    {
		Spawn:
			HBUS Y 10
			TNT1 A 0 A_ChangeFlag("THRUACTORS", 0)
			HBUS Y -1
			Stop
		Pickup:
			TNT1 A 0
			TNT1 A 0 A_GiveInventory("792UAC", 50)
			TNT1 A 0 A_JumpIfInventory("IsPlayingAsPurist", 1, "Purist")
			
			TNT1 A 0 A_JumpIfInventory("HitlersBuzzsaw", 1, 2) 
			TNT1 A 0 A_GiveInventory("FBD_Hbus_Drum", 50) // only the first time you pick it up, fill the drum with ammo
			TNT1 A 0 A_GiveInventory("HitlersBuzzsaw", 1) 
			Stop
		Purist:
			TNT1 A 0 A_GiveInventory("ClassicHitlersBuzzsaw", 1)
			Stop
    }
}


//***Che used in Chebskies-EDAY maps 59 and 312
ACTOR DragonslayerSpawner: CustomInventory 17676
{
	//$category "Weapons"
	scale 0.8
	radius 24
	height 24
	+THRUACTORS +FORCEXYBILLBOARD
	Inventory.PickupSound "AXEDRAW"
	Inventory.PickupMessage "$GOTDSWEAP" // "You got something that looks too big to be called a sword!" / "Ты взял здоровенную дуру - её вообще мечом называть можно?"
	Mass 1
    States
    {
		Spawn:
			DSLC P 10
			TNT1 A 0 A_ChangeFlag("THRUACTORS", 0)
			DSLC P -1
			Stop
		Pickup:
			TNT1 A 0
			TNT1 A 0 A_JumpIfInventory("IsPlayingAsPurist", 1, "Purist")
			TNT1 A 0 A_GiveInventory("DSweap", 1)
			Stop
		Purist:
			TNT1 A 0 A_GiveInventory("ClassicDSweap", 1)
			Stop			
			
    }
}


//***Che added this one just because
ACTOR AssaultShotgunSpawner: CustomInventory 17714
{
	//$category "Weapons"
	scale 0.8
	radius 24
	height 24
	+THRUACTORS +FORCEXYBILLBOARD

	Inventory.PickupMessage "$GOTSHOTGUN"
	Inventory.PickupSound "weapons/sgpump"
	Mass 1
    States
    {
		Spawn:
			A12P A 0
			A12P A 2
			TNT1 A 0 A_ChangeFlag("THRUACTORS", 0)
			TNT1 A 0 A_JumpIf(CallACS("GetCannotUseFakeSprites"), "StayNoFake")
			TNT1 A 0 A_SpawnItemEx("FakeAssaultShotgunSpriteMkII",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			TNT1 A 0 A_SpawnItemEx("FakeSSGSpriteMkII",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			TNT1 A -1
			//Loop
		StayNoFake:
			A12P A -1
		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", 20)
			Stop
		Purist:
			TNT1 A 0 A_GiveInventory("ClassicSSG", 1)
			TNT1 A 0 A_GiveInventory("AmmoShell", 8)
			Stop
    }
}


ACTOR FakeAssaultShotgunSpriteMkII: AbstractFakeSpiteMkII 
{
	VisibleToPlayerClass FBDoomer, FBDoomer2, TacticalFBDoomer, FBD_Doomgal, FBD_Doomgal2, FBD_TacticalDoomgal, FBD_Nostalgia, FBD_NostalgiaFem, FBD_Mortal, FBD_MortalFem
	States
    {
		Spawn:
			A12P A 2
			A12P A 0 A_Warp(AAPTR_TARGET, 0,0,0, 0,WARPF_NOCHECKPOSITION,"Spawn")
			Stop
    }
}

ACTOR FakeSSGSpriteMkII: AbstractFakeSpiteMkII 
{
	VisibleToPlayerClass Purist
	States
    {
		Spawn:
			SGN2 A 2
			SGN2 A 0 A_Warp(AAPTR_TARGET, 0,0,0, 0,WARPF_NOCHECKPOSITION,"Spawn")
			Stop
    }
}

ACTOR FakeNuggetSpriteMkII: AbstractFakeSpiteMkII 
{
	VisibleToPlayerClass FBDoomer, FBDoomer2, TacticalFBDoomer, FBD_Doomgal, FBD_Doomgal2, FBD_TacticalDoomgal, FBD_Nostalgia, FBD_NostalgiaFem, FBD_Mortal, FBD_MortalFem
	States
    {
		Spawn:
			WNUG Y 2
			SGN2 A 0 A_Warp(AAPTR_TARGET, 0,0,0, 0,WARPF_NOCHECKPOSITION,"Spawn")
			Stop
    }
}

/*
ACTOR NuggetSpawner: CustomInventory 17725 //***Che
{
	scale 1.0
	radius 24
	height 24
	+THRUACTORS +FORCEXYBILLBOARD

	Inventory.PickupSound "CBOXPKUP"
	Inventory.PickupMessage "You got the Mosin-Nagant! (Slot 8)"
	Mass 1
    States
    {
		Spawn:
			WNUG Y 0
			TNT1 A 10
			TNT1 A 0 A_ChangeFlag("THRUACTORS", 0)
			TNT1 A 0
			
			TNT1 A 0 A_JumpIf(CallACS("GetCannotUseFakeSprites"), 3)
			TNT1 A 0 A_SpawnItemEx("FakeChaingunSpriteMkII",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			TNT1 A 0 A_SpawnItemEx("FakeNuggetSpriteMkII",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
			TNT1 A 70
			TNT1 A 0 A_JumpIf(CallACS("GetIsEDAY") ||  CallACS("GetDoesAnyPlayerHaveWeaponFor792UAC"), 2)
			TNT1 A 0 A_CustomMissile("792UacAmmoBoxAdder", 32, 0, Random(-180, 180), CMF_AIMOFFSET)
			TNT1 A 0 A_JumpIf(CallACS("GetCannotUseFakeSprites"), "StayNoFake")
		StayNoFake:
			WNUG Y -1
		Stay:
			TNT1 A 1
			TNT1 A -1
			Loop
		Pickup:
			TNT1 A 0
			TNT1 A 0 A_JumpIfInventory("IsPlayingAsPurist", 1, "Purist")
			TNT1 A 0 A_GiveInventory("Nugget", 1)
			TNT1 A 0 A_GiveInventory("792UAC", 5) //A_GiveInventory("Clip2", 50)
			Stop

		Purist:
			TNT1 A 0 A_GiveInventory("ClassicChaingun", 1) //ClassicSMG", 1)
			TNT1 A 0 A_GiveInventory("Clip2", 10)
			Stop
    }
}
*/


ACTOR Gewehr98Spawner: CustomInventory 17726 //***Che
{
	scale 1.0
	radius 24
	height 24
	+THRUACTORS +FORCEXYBILLBOARD

	Inventory.PickupSound "CBOXPKUP"
	Inventory.PickupMessage "You got the Gewehr 98! (Slot 8)"
	Mass 1
    States
    {
		Spawn:
			WNUG Y 0
			TNT1 A 10
			TNT1 A 0 A_ChangeFlag("THRUACTORS", 0)
			TNT1 A 0
		Stay:
			WNUG Y 1
			WNUG Y -1
			Loop
		Pickup:
			TNT1 A 0
			TNT1 A 0 A_JumpIfInventory("IsPlayingAsPurist", 1, "Purist")
			TNT1 A 0 A_GiveInventory("Gewehr98", 1)
			TNT1 A 0 A_GiveInventory("792UAC", 5) //A_GiveInventory("Clip2", 50)
			Stop

		Purist:
			TNT1 A 0 A_GiveInventory("ClassicGewehr98", 1) //ClassicSMG", 1)
			TNT1 A 0 A_GiveInventory("792UAC", 5)
			Stop
    }
}

ACTOR Gewehr98SpawnerVertical: Gewehr98Spawner 17730
	// to be used in EDAY map 17 secret instead of the shotolver
{
	States
	{
		Spawn:
			WNUG X 0
			TNT1 A 10
			TNT1 A 0 A_ChangeFlag("THRUACTORS", 0)
			TNT1 A 0
		Stay:
			WNUG X 1
			WNUG X -1
			Loop	
	}
}

ACTOR ShotolverSpawner: CustomInventory 5874 //***Che
{
	scale 1.0
	radius 24
	height 24
	+THRUACTORS +FORCEXYBILLBOARD

	Inventory.PickupMessage "You got the Shotvolver! Say farewell to your wrists."
    Inventory.PickupSound "REVOFIRpump"
	Mass 1
    States
    {
		Spawn:
			REVP A 0
			TNT1 A 10
			TNT1 A 0 A_ChangeFlag("THRUACTORS", 0)
			TNT1 A 0
		Stay:
			REVP A 1
			REVP A -1
			Loop
		Pickup:
			TNT1 A 0
			// does not support purist
			TNT1 A 0 A_JumpIfInventory("Revolver", 1, "Dual")
			TNT1 A 0 A_JumpIfInventory("Revolver2", 1, "Dual")
		PickupNormal:	
			TNT1 A 0 A_GiveInventory("Revolver", 1)
			TNT1 A 0 A_GiveInventory("RevolverAmmo", 6)
			Stop
		Dual:
			TNT1 A 0
			TNT1 A 0 A_GiveInventory("AmmoShell", 6)
			Stop	
		Purist:
			TNT1 A 0 A_GiveInventory("ClassicSMG", 1)
			TNT1 A 0 A_GiveInventory("Clip2", 20)
			Stop
    }
}	

ACTOR Fake762BoxSpriteMkII: AbstractFakeSpiteMkII //FakeChaingunSprite: RifleSpawner
{
	VisibleToPlayerClass FBDoomer, FBDoomer2, TacticalFBDoomer, FBD_Doomgal, FBD_Doomgal2, FBD_TacticalDoomgal, FBD_Nostalgia, FBD_NostalgiaFem, FBD_Mortal, FBD_MortalFem
	States
    {
		Spawn:
			AMMO F 2
			AMMO F 0 A_Warp(AAPTR_TARGET, 0,0,0, 0,WARPF_NOCHECKPOSITION,"Spawn")
			Stop
    }
}

/*
ACTOR 792UACAmmoBox: CustomInventory 17727
{
	scale 1.0
	radius 24
	height 24
	+THRUACTORS +FORCEXYBILLBOARD

	Inventory.PickupSound "CBOXPKUP"
	Inventory.PickupMessage "Picked up a box of 7.62×51mm rifle rounds."
	Mass 1
    States
    {
		Spawn:
			AMMO F 0
			TNT1 A 10
			TNT1 A 0 A_ChangeFlag("THRUACTORS", 0)
			TNT1 A 0
			TNT1 A 0 A_JumpIf(CallACS("GetCannotUseFakeSprites"), "StayNoFake")
			TNT1 A 0 A_SpawnItemEx("Fake762BoxSpriteMkII",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION,0)
		Stay:
			TNT1 A 1
			TNT1 A -1
			Loop
		StayNoFake:
			AMMO F -1
		Pickup:
			TNT1 A 0
			TNT1 A 0 A_JumpIfInventory("IsPlayingAsPurist", 1, "Purist")
			TNT1 A 0 A_GiveInventory("792UAC", 75)
			Stop
		Purist:
			TNT1 A 0 
			Fail
    }
}
*/
ACTOR 792UacAmmoBoxAdder: AbstractItemAdder
{
	States
	{
		AddItem:
//tnt1 A 0 A_Log("792 ammo box added")
			TNT1 A 0 A_SpawnItemEx("792UAC", 0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION)
			Stop
	}
}


/* no spawners

FlameCannon : BrutalWeapon 17716

Flamethrower2 : BrutalWeapon 17717

BrutalAxe : BrutalWeapon 17715

HellishMissileLauncher : BrutalWeapon 17719

NukeLauncher : BrutalWeapon 7452

*/

ACTOR NukeLauncherSpawner: CustomInventory 7452
{
	scale 1.0
	radius 24
	height 24
	+THRUACTORS +FORCEXYBILLBOARD

	Inventory.PickupSound "CBOXPKUP"
	Inventory.PickupMessage "You got the Gewehr 98! (Slot 8)"
	Mass 1
    States
    {
		Spawn:
			NKLG D 0
			TNT1 A 10
			TNT1 A 0 A_ChangeFlag("THRUACTORS", 0)
			TNT1 A 0
		Stay:
			NKLG D 1
			NKLG D -1
			Loop
		Pickup:
			TNT1 A 0
			TNT1 A 0 A_Giveinventory("Token_ActualNukeLauncherAmmo", 1)
			TNT1 A 0 A_GiveInventory("NukeLauncher", 1)
			Stop
    }
}