// --------------------------------------------------------------------------
//
//	Weapon replacers
//
// --------------------------------------------------------------------------



//45% SSG, 35% Assaultshotgun or 20% QuadShotgun. //SpawnNewWeapon2
ACTOR SuperShotgunReplacer : CustomInventory Replaces SuperShotgun
{
	States
	{
	Spawn:
TNT1 A 0
		TNT1 A 3
		TNT1 A 0 
		TNT1 A 0 A_Jump(145,"SpawnNewWeapon")
		TNT1 A 0 A_SpawnItem("SSG")
		Stop
	SpawnNewWeapon:
		TNT1 A 0 A_Jump(92,"SpawnNewWeapon2")
		TNT1 A 0 A_SpawnItem("U_assaultshotgun")
		Stop
SpawnNewWeapon2:
		TNT1 A 0 A_SpawnItem("Quad_Shotgun")
		Stop
	DM:
		TNT1 A 0 A_SpawnItem("SSG")
		TNT1 A -1
	Pickup:
		TNT1 A 0 A_GiveInventory("DummyToken",1)
		Stop
	}
}

//Spawn 60% Plasma Rifle, 40% Railgun.

ACTOR U_PlasmaRifleReplacer : CustomInventory Replaces PlasmaRifle
{
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 3
		TNT1 A 0 
		TNT1 A 0 A_Jump(102,"SpawnNewWeapon")
		PLAS A 0
		TNT1 A 0 A_SpawnItem("U_PlasmagunSpawner")
		TNT1 A 1 
		TNT1 A -1
		Stop
	SpawnNewWeapon:
		TNT1 A 0 A_SpawnItem("U_Railgun")
		Stop
	DM:
		TNT1 A 0 A_SpawnItem("Plasma_Gun")
		TNT1 A -1
	Pickup:
		TNT1 A 0 A_GiveInventory("DummyToken",1) 
	TNT1 A 0 A_PlaySound("PLSDRAW")
		Stop
	}
}


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

	 Spawn:
		TNT1 A 0
		TNT1 A 2
		TNT1 A 0 A_ChangeFlag("THRUACTORS", 0)
		TNT1 A 0 A_SpawnItem("FakeBFGSprite")
		TNT1 A 0 A_SpawnItem("FakeOldBFGSprite")
		Loop
	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("BIG_FUCKING_GUN", 1)
TNT1 A 0 A_GiveInventory("U_BFG9000", 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
    }
}




//Spawn 70% BFG 9000, 30% BFG 10000.
Actor U_BFGReplacer : CustomInventory Replaces BFG9000
{
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 3
		TNT1 A 0 
		TNT1 A 0 A_Jump(77,"SpawnNewWeapon")
		TNT1 A 0 A_SpawnItem("U_BFG9000")
		Stop
	SpawnNewWeapon:
		TNT1 A 0 A_SpawnItem("U_BFG10k") //bfg10000
		Stop
	Nazi:
		TNT1 A 0 A_SpawnItem("HitlersBuzzsaw")
		Stop
	DM:
		TNT1 A 0 A_SpawnItem("BFG9000")
		TNT1 A -1
	Pickup:
		TNT1 A 0 A_GiveInventory("DummyToken",1)
		Stop
	}
}

//33% Autoshotgun
ACTOR U_Assualtshotgun : CustomInventory Replaces Assaultshotgun

{
	States
	{
	Spawn:
		TNT1 A 0 
		TNT1 A 0 A_Jump(77,"SpawnNewWeapon")
		TNT1 A 0 A_SpawnItem("U_assaultshotgun")
		Stop
	SpawnNewWeapon:
		TNT1 A 0 A_SpawnItem("AutoShotgun")
		Stop
		DM:
		TNT1 A 0 A_SpawnItem("U_assaultshotgun")
		TNT1 A -1
	Pickup:
	TNT1 A 0 A_GiveInventory("DummyToken",1)
		Stop
	}
}

//33% Shotgun, 45% Revolver, 28% Automatic Shotgun
ACTOR SGReplacer : CustomInventory Replaces Shotgun
{
	States
	{
	Spawn:
TNT1 A 0
		TNT1 A 3
	TNT1 A 0 
		TNT1 A 0 A_Jump(171,"SpawnNewWeapon")
		TNT1 A 0 A_SpawnItem("ShotgunSpawner")
		Stop
	SpawnNewWeapon:
		TNT1 A 0 A_Jump(112,"SpawnNewWeapon2")
		TNT1 A 0 A_SpawnItem("Revolverspawner")
		Stop
SpawnNewWeapon2:
		TNT1 A 0 A_SpawnItem("Autoshotgun")
		Stop
	DM:
		TNT1 A 0 A_SpawnItem("Shot_gun")
		TNT1 A -1
	Pickup:
		TNT1 A 0 A_GiveInventory("DummyToken",1)
		Stop
	}
}




//Spawn 35% Minigun, 25% Machinegun, 20% Buzzsaw, 20% minigunupgrade
actor 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.
		MGUN A 1
		TNT1 A 0 A_Jump(52, "Spawn4")
		TNT1 A 0 A_Jump(92, "Spawn1")
TNT1 A 0 A_Jump(128, "Spawn3")
TNT1 A 0 A_Jump(255, "Spawn2")
		
	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 ("HitlersBuzzsaw",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

	Spawn4:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx ("Minigunupgrade",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION | SXF_TRANSFERAMBUSHFLAG ,0)
		TNT1 A 1
		TNT1 A -1

		Stop	
}}



//Spawn 65% Rocket Launcher, 35% AutoGrenadelauncher

ACTOR U_RocketlauncherReplacer : CustomInventory Replaces Rocketlauncher
{
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 3
		TNT1 A 0 
//TNT1 A 0 A_JumpIfInventory("Rocket_Launcher","SpawnNewWeapon")
//	SpawnNoNewWeapon:
TNT1 A 0 A_Jump(89,"SpawnNewWeapon")
		TNT1 A 0
		TNT1 A 0 A_SpawnItem("RLSpawnerReplacer")
		TNT1 A 1 
		TNT1 A -1
		Stop
	SpawnNewWeapon:
//TNT1 A 0 A_Jump(180,"SpawnNoNewWeapon")
		TNT1 A 0 A_SpawnItem("AutoGrenadeLauncher")
		Stop
	DM:
		TNT1 A 0 A_SpawnItem("RLSpawnerReplacer")
		TNT1 A -1
	Pickup:
		TNT1 A 0 A_GiveInventory("DummyToken",1) 
		//TNT1 A 0 A_PlaySound("ROCKPKUP")
		Stop
	}
}



// --------------------------------------------------------------------------
//
//	Weapon spawners
//
// --------------------------------------------------------------------------



ACTOR RevolverSpawner: CustomInventory replaces revolver
{
	+FORCEXYBILLBOARD
	Scale 0.55 //0.7
	Inventory.Pickupmessage "You got the Revolver!"
	Inventory.PickupSound "revolver/draw"
	States
	{
	Spawn:
		RVIC A -1
		Stop
	Pickup:
		TNT1 A 0 A_GiveInventory("TE_Revolver",1)
		TNT1 A 0 A_GiveInventory("TE_Revolvers",1)
		Stop
	}
}




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

	 Spawn:
		TNT1 A 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 U_MinigunSpawner : CustomInventory Replaces ChaingunSpawner
 {
 scale 0.8
 radius 24
 height 24
 +THRUACTORS +FORCEXYBILLBOARD

 Inventory.PickupSound "CBOXPKUP"
	Inventory.PickupMessage "$GOTCHAINGUN"
 Mass 1
    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_SpawnItem("FakeChaingunSprite")
		TNT1 A 0 A_SpawnItem("FakeMinigunSprite")
		TNT1 A 2
		Loop
	Pickup:
	    TNT1 A 0
		TNT1 A 0 A_JumpIfInventory("IsPlayingAsPurist", 1, "Purist")
		TNT1 A 0 A_GiveInventory("Minigun", 1)
		TNT1 A 0 A_GiveInventory("Minigunammo", 20)
CHAG A 0 A_PlaySound("CHGNPKUP")
		Stop
	Purist:
	    TNT1 A 0 A_GiveInventory("ClassicChaingun", 1)
		TNT1 A 0 A_GiveInventory("Clip1", 20)
		TNT1 A 1
		TNT1 A -1
		Stop
    }
}



ACTOR U_MachinegunSpawner: 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 10
		TNT1 A 0 A_ChangeFlag("THRUACTORS", 0)
		TNT1 A 0
	Stay:
		MGN1 Z 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("Minigunammo", 20)
		Stop

	Purist:
	    TNT1 A 0 A_GiveInventory("ClassicSMG", 1)
		TNT1 A 0 A_GiveInventory("Clip1", 20)
		Stop
    }
}







// --------------------------------------------------------------------------
//
//	Ammunition spawners
//
// --------------------------------------------------------------------------

ACTOR Clip_Replacer : Randomspawner Replaces Clip
{
	DropItem "U_Clip1", 256, 3
	DropItem "Riflemagazine", 256, 3
	//DropItem "Revolverbullets", 256, 2
	DropItem "MinigunAmmo", 256, 3
}

ACTOR Shell_Replacer : Randomspawner Replaces Shell
{
	DropItem "Ammoshell", 256, 7 //5
	DropItem "Greenshell", 256, 3 //2
	DropItem "Revolverbullets", 256, 3 //xx

}


ACTOR ShellBox_Replacer : CustomInventory Replaces ShellBox
{
	States
	{
	Spawn:
TNT1 A 0
TNT1 A 1
//22.5% GreenShellBox,53.5% ShellBox, 4% sniper, 20% revolver
TNT1 A 0 A_Jump(52,"SpawnRevAmmo")		
TNT1 A 0 A_Jump(77,"SpawnAltAmmo")
		TNT1 A 0 A_Jump(40,"SpawnAltAmmo2")
		TNT1 A 0 A_SpawnItem("AmmoShellBox2")
		Stop
SpawnRevAmmo:
		TNT1 A 0 A_SpawnItem("RevolverBox")
		Stop
SpawnAltAmmo:
		TNT1 A 0 A_SpawnItem("GreenShellBox")
		Stop
SpawnAltAmmo2:	
		TNT1 A 0 A_SpawnItem("SniperAmmoBox")
		Stop
	DM:
		TNT1 A 0 A_SpawnItem("AmmoShellBox2")
		TNT1 A -1
	Pickup:
		TNT1 A 0 A_GiveInventory("DummyToken",1)
		Stop
	}
}

ACTOR ClipBox_Replacer : CustomInventory Replaces ClipBox
{
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 3
		TNT1 A 0 
//25% Rifle, 50% Minigun, 25% pistol, (...15% revolver)
TNT1 A 0 A_Jump(128,"SpawnAltAmmo") //164 35%
TNT1 A 0 A_SpawnItem("MinigunBox")
		Stop
SpawnAltAmmo:
TNT1 A 0 A_Jump(128,"SpawnAltAmmo2") 	//148	
TNT1 A 0 A_SpawnItem("RifleBox")
		Stop
SpawnAltAmmo2:
TNT1 A 0 A_Jump(255,"SpawnAltAmmo3") //128 		
		TNT1 A 0 A_SpawnItem("RevolverBox")
		Stop
SpawnAltAmmo3:	
		TNT1 A 0 A_SpawnItem("PammoBox")
		Stop


	DM:
		TNT1 A 0 A_SpawnItem("MinigunBox")
		TNT1 A -1
	Pickup:
		TNT1 A 0 A_GiveInventory("DummyToken",1)
		Stop
	}
}

ACTOR Cell_Replacer : CustomInventory Replaces Cell
{
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 3
		TNT1 A 0 
//	Randomizer: //20% RailCore,80% Cell
		TNT1 A 0 A_Jump(52,"NewAmmo")
		TNT1 A 0 A_SpawnItem("AmmoCell")
		Stop
NewAmmo:
		TNT1 A 0 A_SpawnItem("RailCore")
		Stop
	DM:
		TNT1 A 0 A_SpawnItem("AmmoCell")
		TNT1 A -1
	Pickup:
		TNT1 A 0 A_GiveInventory("DummyToken",1)
		Stop
	}
}

ACTOR CellPack_Replacer : CustomInventory Replaces CellPack
{
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 ACS_NamedExecuteAlways("CheckIfDM")
		TNT1 A 3
	//	Randomizer: //20% RailPack,80% CellPack
		TNT1 A 0 A_Jump(56,"NewAmmo")
		TNT1 A 0 A_SpawnItem("AmmoCellPack")
		Stop
NewAmmo:
		TNT1 A 0 A_SpawnItem("RailPack")
		Stop
	DM:
		TNT1 A 0 A_SpawnItem("AmmoCellPack")
		TNT1 A -1
	Pickup:
		TNT1 A 0 A_GiveInventory("DummyToken",1)
		Stop
	}
}


Actor RocketBoxSpawner: RandomSpawner replaces RocketBox
{
	DropItem "AmmoRocketBox", 256, 4
	DropItem "GrenadeBoxNew", 256, 2
}



// --------------------------------------------------------------------------
//
//	Dropped stuff from monsters and corpses
//
// --------------------------------------------------------------------------

ACTOR U_DropedChaingunSpawner: CustomInventory replaces DropedChaingunSpawner
{
    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_SpawnItem("FakeChaingunSprite")
		TNT1 A 0 A_SpawnItem("FakeMinigunSprite")
		TNT1 A 2
		Loop
	Pickup:
	    TNT1 A 0
		TNT1 A 0 A_JumpIfInventory("IsPlayingAsPurist", 1, "Purist")
		TNT1 A 0 A_GiveInventory("Minigun", 1)
		TNT1 A 0 A_GiveInventory("MinigunAmmo", 20)
		Stop
	Purist:
	    TNT1 A 0 A_GiveInventory("ClassicChaingun", 1)
		TNT1 A 0 A_GiveInventory("Clip2", 10)
		Stop
    }
}




ACTOR U_PlasmagunSpawner: CustomInventory replaces Plasmagunspawner

{
 scale 0.8
 radius 24
 height 24
 +THRUACTORS +FORCEXYBILLBOARD

 Inventory.PickupSound "PLSDRAW"
 Inventory.PickupMessage "$GOTPLASMA"
 Mass 1
    States
    {

	 Spawn:
		TNT1 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", 35)
		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", 35)
		Stop	
    }
}




Actor ShotgunDrop
{
	Radius 0
	Height 0
	+THRUACTORS
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_Jump(128,"Spawn2")
		Goto Spawn1
	Spawn1:	
		TNT1 A 0 A_CustomMissile("DropedShotgun",20,0,0,2,random(30,50))
		stop
	Spawn2:	
		TNT1 A 0 A_CustomMissile("DropedShotgun2",20,0,180,2,random(30,50))
		stop		
	}
}

Actor DropedShotgun 
{
	Scale 0.9
	speed 6
	health 1
	radius 16
	height 4
	damage 0
	+THRUACTORS
	+MISSILE
	+NOTELEPORT
	+NOBLOCKMAP
	+BLOODLESSIMPACT 
	+FORCEXYBILLBOARD
	+NODAMAGETHRUST
	+MOVEWITHSECTOR
	+CORPSE
	-DONTSPLASH
	Mass 1
	States
	{
	Spawn:
		SHOD A 4
		TNT1 A 0 A_ChangeFlag("THRUACTORS",0)
		SHOD BCDEFGH 4
		Loop
	Death:
		TNT1 A 0 A_SpawnItem("ShotgunSpawner")
		Stop
	}
}

Actor DropedShotgun2: DropedShotgun
{
	Scale 0.9
	States
	{
	Spawn:
		SHOD H 4
		TNT1 A 0 A_ChangeFlag("THRUACTORS",0)
		SHOD GFEDCBA 4
		Loop
	}
}



Actor DummyDrop replaces CLIP1Drop
{
	Radius 0
	Height 0
	+THRUACTORS
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 1
		stop		
	}
}


