#include "Actors/Weapons/NewWeapons/Deagle.dec"
#include "Actors/Weapons/NewWeapons/DualDeagles.dec"
#include "Actors/Weapons/NewWeapons/DeagleSpawner.dec"
#include "Actors/MISC/DeagleFly.dec"
#include "Actors/MISC/DroppedDeagle.dec"
#include "Actors/MISC/ShotgunSlugCasing.dec"

#include "Actors/Weapons/NewWeapons/RiotShield.dec"
#include "Actors/Weapons/NewWeapons/Carbine.dec"
#include "actors/Weapons/NewWeapons/LMG.dec"
#include "Actors/Weapons/NewWeapons/MGL.dec"
#include "actors/Weapons/NewWeapons/PlasmaBlaster.dec"
#include "actors/Weapons/NewWeapons/PlasmaMK2.dec"

#include "Actors/Weapons/NewWeapons/SuppressedPistol.dec"
#include "Actors/Weapons/NewWeapons/SuppressedDualPistol.dec"

Actor CantUseScopes : IsTacticalClass {}

Actor BackpackNoAmmo : CustomInventory
{
	Game Doom
	Height 26
	Inventory.PickupMessage "Found a backpack with no extra ammo"
	Inventory.PickupSound "BACKPACK"
	
	States
	{
		Spawn:
			TNT1 A 0
			BPAK A -1
			Stop
		Pickup:
			TNT1 A 1 ACS_NamedExecuteAlways("DOD_backpackNoExtraAmmo", 0)
			Stop
	}
}

// --- Weapon Spawners --------------------------------------------------------

ACTOR PistolSpawner2 : PistolSpawner replaces PistolSpawner
{
	//$Category Weapons
	//$Sprite P3STKA0
	//$Title "Pistol spawner"
	Inventory.PickupMessage "$GOTPISTOL"
	Inventory.PickupSound "Pistol/Draw"
	States
	{
	Spawn:
		P3ST A 0
		P3ST A 1
		P3ST A 0 A_ChangeFlag("THRUACTORS", 0)
	Stay:
		P3ST K -1
		Stop

	Pickup:
		P3ST A 0
		P3ST A 0 A_JumpIfInventory("PuristPistol", 1, "AmmoOnly")
		P3ST A 0 A_JumpIfInventory("BrutalPistol", 1, "DualPistol")
		P3ST A 0 A_JumpIfInventory("SuppressedBrutalPistol", 1, "DualPistol")
		P3ST A 0 A_JumpIfInventory("DualPistols", 1, "AmmoOnly")
		P3ST A 0 A_JumpIfInventory("SuppressedDualPistols", 1, "AmmoOnly")
	PickupNormal:
		P3ST A 0 A_GiveInventory("BrutalPistol", 1)
		P3ST A 0 A_GiveInventory("Clip1", 10)
		Stop

	DualPistol:
		P3ST A 0
		P3ST A 0 A_GiveInventory("HasDualPistol", 1)
		P3ST A 0 A_GiveInventory("Clip1", 10)
		Stop

	AmmoOnly:
		P3ST A 0
		P3ST A 0 A_GiveInventory("Clip1", 10)
		Stop
	}
}

// ------ Fake weapons (visual only)

Actor FakeWeaponPickup {
	// VisibleToPlayerClass Purist, BDoomer, Doomer2, Doomer3, TacticalDoomer, TacticalMarksman, TacticalCQC
	Scale 0.9
	+FORCEXYBILLBOARD
}

// ------ Slot 3

Actor FakeSniper : FakeWeaponPickup { // Spawn where SSG spawn, so slot 3
	VisibleToPlayerClass Doomer2, TacticalMarksman
	States {
		Spawn:
			TNT1 A 0
			WM14 B 5
			Stop
	}
}

Actor FakeShotgun : FakeWeaponPickup {
	VisibleToPlayerClass Purist, BDoomer, Doomer2, TacticalDoomer, TacticalMarksman
	States {
		Spawn:
			TNT1 A 0
			SHTC A 5
			Stop
	}
}

Actor FakeSSG : FakeWeaponPickup {
	VisibleToPlayerClass Purist, BDoomer, TacticalDoomer
	States {
		Spawn:
			TNT1 A 0
			SGN2 A 5
			Stop
	}
}

Actor FakeASG : FakeWeaponPickup {
	VisibleToPlayerClass Doomer3, TacticalCQC
	States {
		Spawn:
			TNT1 A 0
			A12P A 5
			Stop
	}
}

Actor FakeRevolver : FakeWeaponPickup {
	VisibleToPlayerClass Doomer3, TacticalCQC
	States {
		Spawn:
			TNT1 A 0
			REVP A 5
			Stop
	}
}

// ------ Slot 4

Actor FakeChaingun : FakeWeaponPickup {
	VisibleToPlayerClass Purist, BDoomer, Doomer3, TacticalDoomer, TacticalCQC
	States {
		Spawn:
			TNT1 A 0
			MGUN A 5
			Stop
	}
}

Actor FakeSMG : FakeWeaponPickup {
	VisibleToPlayerClass Doomer2, TacticalMarksman
	States {
		Spawn:
			TNT1 A 0
			SMGZ A 5
			Stop
	}
}

// ------ Slot 5

Actor FakeRL : FakeWeaponPickup {
	VisibleToPlayerClass Purist, BDoomer, Doomer2, TacticalDoomer, TacticalMarksman
	States {
		Spawn:
			TNT1 A 0
			RLAU A 5
			Stop
	}
}

Actor FakeGL : FakeWeaponPickup {
	VisibleToPlayerClass Purist, BDoomer, TacticalDoomer
	States {
		Spawn:
			TNT1 A 0
			GLAP A 5
			Stop
	}
}

Actor FakeMGL : FakeWeaponPickup {
	VisibleToPlayerClass Doomer3, TacticalCQC
	States {
		Spawn:
			TNT1 A 0
			SGL0 Z 5
			Stop
	}
}

Actor FakeM202 : FakeWeaponPickup {
	VisibleToPlayerClass Doomer2, TacticalMarksman
	States {
		Spawn:
			TNT1 A 0
			W202 A 5
			Stop
	}
}

// ------ Slot 6

Actor FakePlasmaRifle : FakeWeaponPickup {
	VisibleToPlayerClass Purist, BDoomer, TacticalDoomer
	States {
		Spawn:
			TNT1 A 0
			PRAS C 5
			Stop
	}
}

Actor FakeRailgun : FakeWeaponPickup {
	VisibleToPlayerClass Purist, BDoomer, Doomer2, TacticalDoomer, TacticalMarksman
	States {
		Spawn:
			TNT1 A 0
			SRCG A 5
			Stop
	}
}


Actor FakeMK2 : FakeWeaponPickup {
	VisibleToPlayerClass Doomer2, TacticalMarksman
	States {
		Spawn:
			TNT1 A 0
			M2PR B 5
			Stop
	}
}

Actor FakePlasmaBlaster : FakeWeaponPickup {
	VisibleToPlayerClass Doomer3, TacticalCQC
	States {
		Spawn:
			TNT1 A 0
			PLSG B 5
			Stop
	}
}

// ------------ For M202 laser rangefinder
Actor InvisiblePuff
{
	Mass 0
	Radius 1
	Height 2
	Speed 0
	+NOBLOCKMAP
	+NOGRAVITY
	+BLOODLESSIMPACT
	+GHOST
	+SPECTRAL
	+NOTONAUTOMAP
	+DONTSPLASH
	+FORCEXYBILLBOARD
	+NOTAUTOAIMED
	+NOTIMEFREEZE
	+THRUACTORS
	+ALWAYSPUFF
	+PUFFONACTORS
	
	States
	{
		// Use this instead when the tid arg of LineAttack (ACS) works in Zandronum
		/*Spawn:
			TNT1 A 1
			Stop*/
			
		Spawn:
			TNT1 A 0
			TNT1 A 1 ACS_NamedExecuteAlways("ChangeTID",0)
			TNT1 AAAAAAA 1
			Stop
	}
}
