
ACTOR UpgradeBot: SwitchableDecoration Replaces NightVision
{
    Radius 24
	Height 60
	+SOLID
	+USESPECIAL
	MONSTER
	-COUNTKILL
	+SHOOTABLE
	+LOOKALLAROUND
	-THRUACTORS
	+NOINFIGHTING
	MaxTargetRange 120
	+NOBLOOD
	Activation THINGSPEC_Activate | THINGSPEC_ThingTargets | THINGSPEC_NoDeathSpecial
	Mass 999999
	Speed 0
	health 1000
	+FLOATBOB
	+NOGRAVITY
	DamageFactor "DestroyUpgradeStation", 9999.0
	Scale 1.0
    States
    {
    Spawn:
	    UABB AB 2 BRIGHT
		Loop
	Spawn2:
		UABB CD 2 BRIGHT
		Loop
	
	Active:
		UABB A 1 
		TNT1 A 0 A_JumpIfInTargetInventory("IsD4Weapon", 1, 1)
		Goto CantUpgrade
		UABB A 1
		TNT1 A 0 A_JumpIfInTargetInventory("D4ShotgunSelected", 1, "UpgradeShotgun")
		TNT1 A 0 A_JumpIfInTargetInventory("D4MachinegunSelected", 1, "UpgradeMachinegun")
		UABB B 2
		Goto CantUpgrade
		Stop
	
	UpgradeShotgun:
		UABB A 1
		TNT1 A 0 A_JumpIfInTargetInventory("ShotgunUpgrade", 2, "MaxUpgrade")
		TNT1 A 0 A_GiveToTarget("ShotgunUpgrade", 1)
		TNT1 A 0 A_GiveToTarget("IsUpgradingWeapons", 1)
		UABB ABABABAB 2 BRIGHT
		Goto Spawn2
	
	UpgradeMachinegun:
		UABB A 1
		TNT1 A 0 A_JumpIfInTargetInventory("MachinegunUpgrade", 2, "MaxUpgrade")
		TNT1 A 0 A_GiveToTarget("MachinegunUpgrade", 1)
		TNT1 A 0 A_GiveToTarget("IsUpgradingWeapons", 1)
		UABB ABABABAB 2 BRIGHT
		Goto Spawn2
		
	CantUpgrade:
		TNT1 A 0
		TNT1 A 0 A_Print("This weapon can't be upgraded.", 2)
		TNT1 A 0 A_Noblocking
		TNT1 A 0 A_ChangeFlag("USESPECIAL", 0)
		TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
		TNT1 A 0 A_ChangeFlag("NOGRAVITY", 0)
		TNT1 A 0 A_ChangeFlag("FLOATBOB", 0)
		TNT1 A 0 A_SpawnItemEx ("UpgradeBot", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
		TNT1 A 1
		TNT1 A -1
		Goto Spawn
		
	MaxUpgrade:
		TNT1 A 0
		TNT1 A 0 A_Print("This weapon already has all possible upgrades.", 2)
		TNT1 A 0 A_Noblocking
		TNT1 A 0 A_ChangeFlag("USESPECIAL", 0)
		TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
		TNT1 A 0 A_ChangeFlag("NOGRAVITY", 0)
		TNT1 A 0 A_ChangeFlag("FLOATBOB", 0)
		TNT1 A 0 A_SpawnItem("UpgradeBot")
		TNT1 A 1
		TNT1 A -1
		Goto Spawn	
	
	Death:	
		UABB E 1
		TNT1 A 0 A_PlaySound("weapons/explode")
		TNT1 A 0 A_Scream
		TNT1 A 0 A_NoBlocking
		TNT1 AA 0 A_CustomMissile ("XJunk1", 55, 0, random (0, 360), 2, random (40, 150))
		TNT1 AA 0 A_CustomMissile ("XJunk2", 55, 0, random (0, 360), 2, random (40, 150))
		TNT1 AAAA 0 A_CustomMissile ("XJunk3", 55, 0, random (0, 360), 2, random (40, 150))
		TNT1 AAAAAAAAA 0 A_CustomMissile ("ExplosionParticleHeavy", 50, 0, random (0, 360), 2, random (0, 180))
        TNT1 AAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("ExplosionParticleHeavy", 50, 0, random (0, 360), 2, random (0, 360))
		TNT1 AAAAAAAAA 0 A_CustomMissile ("ExplosionParticleVeryFast", 50, 0, random (0, 360), 2, random (0, 360))
        TNT1 AAAAA 0 A_CustomMissile ("MediumExplosionFlames", 50, 0, random (0, 360), 2, random (0, 360))
        EXPL AAAAA 0 A_CustomMissile ("ExplosionSmokeFast22", 50, 0, random (0, 360), 2, random (0, 360))
		UABB E 1 A_FaceTarget
		TNT1 A 0 A_ChangeFlag("USESPECIAL", 0)
		TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
		TNT1 A 0 A_ChangeFlag("NOGRAVITY", 0)
		TNT1 A 0 A_ChangeFlag("FLOATBOB", 0)
		TNT1 A 0 ThrustThingZ(0,25,0,1)
		UABB E 8 A_Recoil(3)
		UABB F -1
		Stop	
	}
}