Actor Engineer : PlayerPawn
{
	+NOSKIN
	+NOICEDEATH
	+NODAMAGETHRUST
	+GHOST
	+QUICKTORETALIATE
	+NOTARGET
	Limitedtoteam 0
	Painchance 256
	Player.soundclass "engin"
	Player.displayname "Engineer"
	Player.startitem "AchievementID", 2
	Player.StartItem "SawLauncher"
//	Player.StartItem "Pulverizer"
	Player.StartItem "Wrench", 1
	Player.StartItem "WrenchMode", 1
	Player.StartItem "WrenchAmmo", 150
	Player.StartItem "Nailgun", 1 // NailgunMG
	Player.StartItem "ForceReloadItemEngy", 1
	Player.StartItem "AllowDispenserCreation", 1
	Player.StartItem "AllowSentryCreation", 1
	Player.StartItem "WrenchSentryMode", 1
//	Player.StartItem "PulvCell", 15
	Player.StartItem "SawAmmo", 15
	Player.startitem "ArrowSingle", 35
	Player.StartItem "ClassID", 5
	Player.StartItem "HumanTeam", 1
	Player.ColorRange 112, 127
	Player.scoreicon "ENGINST"
	DamageFactor "GhostbusterTrap", 0.0
	DamageFactor "HunterSuperIceArrowTrail2", 0.0
	DamageFactor "SjasScream", 0.85
	DamageFactor "Drone", 0.0
	DamageFactor "DimmedVision", 0.5
	DamageFactor "GhostbusterExpander", 0.0
	DamageFactor "Poison", 0.0
	DamageFactor "FlaskT2", 0.0
	Species "Human"
	PainChance "Mohoph", 256
	PainChance "MohophRange", 256
	mass 400
	Player.MaxHealth 100
	Health 100
	States
	{
	    Spawn:
			GO99 A 1
			GO99 AAAAAA 3 A_JumpIf (momz!=0, "Spawn")
			GO99 A 1 A_GiveInventory("WrenchAmmo", 10)
			Loop
		See:
			GO99 AB 5
			GO99 A 0 A_SpawnItemEx ("MarineStomp", 0, 0, 0, 0, 0, -20, 0,0, 0) 
			GO99 CD 5
			GO99 A 0 A_SpawnItemEx ("MarineStomp", 0, 0, 0, 0, 0, -20, 0,0, 0) 
			Goto Spawn
		Missile:
			GO99 E 12 
			Goto Spawn
		Melee:
			GO99 F 6
			Goto Missile
		Pain:
			GO99 G 4 A_Pain
			GO99 G 4 
			Goto Spawn
		Pain.Creepstun:
			KNIG G 0 HealThing(1)
			GO99 G 0 A_Pain
			GO99 G 18 ACS_ExecuteAlways(986,0)
			Goto Spawn
		Pain.ChokeAttack:
			GO99 G 1
			GO99 G 0 A_GiveToTarget("ChokePainHealer", 1)
			GO99 G 0 A_GiveToTarget("VomitPoints", 2)
			GO99 G 8 A_Pain
			Goto Spawn
		Pain.CreeperHealBall:
			GO99 G 1
			GO99 G 0 A_GiveToTarget("CreeperHealBallHealer", 1)
			GO99 G 8 A_Pain
			Goto Spawn
	Pain.Impale:
		TNT1 A 0 ThrustThingZ(0,10,0,1)
		Goto Pain
	Pain.DimmedVision:
		TNT1 A 0 A_Pain
		TNT1 A 0 A_GiveInventory("VisionDimmer", 1)
		TNT1 A 0 A_GiveInventory("VisionDimEffect", 1) // ACS_ExecuteAlways(753, 0)
		TNT1 A 0 ACS_ExecuteAlways(754, 0)
		TNT1 A 0 HealThing(1)
		GO99 G 7
		Goto Spawn
	Pain.MorgBat:
		TNT1 A 0 A_giveToTarget("MorgHeal", 3)
		Goto Pain		
	Pain.Mohoph:
		GO99 G 1
		TNT1 A 0 A_GiveToTarget("MohophHeal", 1)
		goto Pain
	Pain.MohophRange:
		GO99 G 1
		TNT1 AAA 0 A_GiveToTarget("MohophHeal", 1)
		Goto Pain
		Death:
		DeathAnim:
			TNT1 A 0 A_KillChildren
			GO99 A 0 A_GiveToTarget("KilledEngineer", 1)
			GO99 A 0 A_GiveToTarget("TotalKillCount", 1)
			GO99 A 0 A_GiveToTarget("HumanKillCount", 1)
			TNT1 A 0 A_GiveToTarget("LowHPKill", 1)
			GO99 A 0 A_GiveToTarget("CheckAchievements", 1)
			TNT1 A 0 ACS_ExecuteAlways(736, 0, tid)
			GO99 H 5 
			GO99 I 5 A_PlayerScream
			GO99 J 5 A_NoBlocking
			GO99 KLM 5
			GO99 N -1
			stop
		GibDeath:
		Death.ImpaleBite:
			GO99 A 0 A_GiveToTarget("ImpaleKill", 1)
			GO99 A 0 A_GiveToTarget("DoubleImpaleKill", 1)
			GO99 A 0 A_GiveToTarget("JitterskullPoints", 1)
			GO99 G 0 A_GiveToTarget("VomitPoints", 10)
			GO99 A 0 A_GiveToTarget("KilledEngineer", 1)
			GO99 A 0 A_GiveToTarget("TotalKillCount", 1)
			GO99 A 0 A_GiveToTarget("HumanKillCount", 1)
			GO99 A 0 A_GiveToTarget("CheckAchievements", 1)
			GO99 A 0 A_GiveToTarget("Crunched",1)
			TNT1 A 0 ACS_ExecuteAlways(736, 0, tid)
			GO99 A 0 A_NoBlocking
			GO99 G 0 A_PlaySound("gibbage/xsplat")
			GO99 A 0 A_SkullPop("Custom_EngineerBloodySkull")
			GO99 A 0 A_PlaySound("gibbage/playergib") 
			GO99 A 0 A_SpawnItemEx("PLAYERBOOT", 0, 0, 11, 0, 0, 27, 33, 160, 0)
			GO99 A 0 A_SpawnItemEx("PLAYERBOOT", 0, 0, 11, 0, 0, 27, -33, 160, 0)
			GO99 A 0 A_SpawnItemEx("SHOTGUYARM", 0, 0, 25, 0, 0, 50, random(0,360), 160, 0)
			GO99 A 0 A_SpawnItemEx("SHOTGUYARM", 0, 0, 36, 0, 0, 32, random(0,360), 160, 0)
			GO99 A 0 A_SpawnItemEx("GIBBER", 0, 0, 0, 0, 0, 0, 0, 160, 0)
			GO99 A 1
			BLAN A -1
			Stop
	Death.CreeperHealBall:
		GO99 G 0 A_GiveToTarget("CreeperHealBallHealer", 1)
		GO99 A 0 A_GiveToTarget("CreepHealKill", 1)
		TNT1 A 0 A_GiveToTarget("HealBallsFired", 1)
		TNT1 A 0 A_GiveToTarget("CreeperMaxCharge", 1)
        Goto DeathAnim
	Death.CreeperMelee:
		GO99 A 0 A_PlaySoundEx("creeperattack", "Body")
		GO99 A 0 A_GiveToTarget("Creeperheal",1)
		TNT1 A 0 A_GiveToTarget("HealBallsFired", 1)
		GO99 A 0 ACS_ExecuteAlways(997,0)
		GO99 A 0 A_SpawnItemEx("SoulSprite", 0, 0, 0, 0, 0, 2)
		GO99 A 0 A_GiveToTarget("CreeperMeleeKill", 1)
		TNT1 A 0 A_GiveToTarget("CreeperMaxCharge", 1)
//		TNT1 A 0 A_GiveToTarget("GhoulAmmo", 1)
		Goto DeathAnim
    Death.SjasScream:
        GO99 A 0 A_GiveToTarget("SjasScreamKill", 1)
        GO99 A 0 A_GiveToTarget("SjasMeleeMulti", 1)
		Goto DeathAnim
    Death.JitterMelee:
        GO99 A 0 A_GiveToTarget("JitterMeleeKill", 1)
        GO99 A 0 A_GiveToTarget("JitterMeleeMulti", 1)
        Goto GibDeath
    Death.CreepStun:
        GO99 A 0 A_GiveToTarget("CreepStunKill", 1)
		TNT1 A 0 A_GiveToTarget("HealBallsFired", 1)
		TNT1 A 0 A_GiveToTarget("CreeperMaxCharge", 1)
        Goto DeathAnim
    Death.ChokeVomit:
        GO99 A 0 A_GiveToTarget("ChokeVomitKill", 1)
        Goto DeathAnim
    Death.ChokeAttack:
        GO99 A 0 A_GiveToTarget("ChokeAttackKill", 1)
		GO99 A 0 A_GiveToTarget("ChokeDeathHealer", 1)
        Goto GibDeath
	Death.ChokeVomit:
		GO99 A 0 A_GiveToTarget("ChokeVomitKill", 1)
		Goto DeathAnim
	Death.ChokeFeast:
		GO99 A 0 A_GiveToTarget("ChokeFeastKill", 1)
		Goto DeathAnim
    Death.ChokeBloodBall:
		TNT1 A 0 A_GiveToTarget("VomitPoints", 15)
        GO99 A 0 A_GiveToTarget("ChokeBloodBallKill", 1)
		GO99 A 0 A_GiveToTarget("ChokeBloodBallMulti", 1)
        Goto DeathAnim
    Death.FrostbiteMelee:
        GO99 A 0 A_GiveToTarget("FrostbiteMeleeKill", 1)
        Goto GibDeath
	Death.FrostbiteMortar:
		TNT1 A 0 A_GiveToTarget("FrostyMortarKill", 1)
		Goto DeathAnim		
    Death.FrostbiteIceBreath:
        GO99 A 0 A_NoBlocking
		GO99 H 0 A_PlayerScream
		HUNT A 0 A_GiveToTarget("FrostyBreathMulti", 1)
		GO99 H 0 A_GiveToTarget("FrostbiteIceBreathKill", 1)
		GO99 A 0 A_GiveToTarget("TotalKillCount", 1)
		GO99 A 0 A_GiveToTarget("HumanKillCount", 1)
		GO99 A 0 A_GiveToTarget("KilledEngineer", 1)
		GO99 A 0 A_GiveToTarget("CheckAchievements", 1)
		GO99 H 0 A_SpawnItemEx("EngineerIceDeath", 0, 0, 0, 0, 0, 0)
		GO99 H 1
		BLAN A -1
		Stop
    Death.Impale:
        TNT1 A 0 A_GiveToTarget("ImpaleKill", 1)
		TNT1 A 0 A_GiveToTarget("DoubleImpaleKill", 1)
        Goto DeathAnim
    Death.IceFiendMelee:
		TNT1 A 0 A_GiveToTarget("NightmareMeleeKill", 1)
	Death.DimmedVision:
	DimVisionDeath:
		TNT1 A 0 A_JumpIfInventory("VisionDimmer", 1, 1)
		Goto FadeDeath
		TNT1 A 0 A_GiveToTarget("NightmareHealer", 1)
		TNT1 A 0 A_GiveToTarget("DimDurationEffect", 2)
		TNT1 A 0 A_GiveToTarget("InvisibleCounter", 0)
		TNT1 A 0 A_GiveToTarget("DimmedMeleeKill", 1)
		TNT1 A 0 A_Jump(192, 3)
		TNT1 AA 0 A_PlaySoundEx("IcefiendBackstab1", 5, 0, 1)
		Goto FadeDeath
		TNT1 A 0 A_Jump(192, 3)
		TNT1 AA 0 A_PlaySoundEx("IcefiendBackstab2", 5, 0, 1)
		Goto FadeDeath
		TNT1 A 0 A_Jump(192, 3)
		TNT1 AA 0 A_PlaySoundEx("IcefiendBackstab3", 5, 0, 1)
		Goto FadeDeath
		TNT1 AA 0 A_PlaySoundEx("IcefiendBackstab4", 5, 0, 1)
	    Goto FadeDeath
	Death.NightmareCleave:
		TNT1 A 0 A_GiveToTarget("CleaveKill", 1)
		TNT1 A 0 A_JumpIfInventory("VisionDimmer", 1, "DimVisionDeath")
	    Goto FadeDeath
	FadeDeath:
	    TNT1 A 0 A_GiveToTarget("InvisibleCounter", 8)
		TNT1 A 0 A_GiveInventory("RocketAmmo", 1)
		TNT1 A 0 A_GiveToTarget("KilledEngineer", 1)
		TNT1 A 0 A_GiveToTarget("TotalKillCount", 1)
		TNT1 A 0 A_GiveToTarget("HumanKillCount", 1)
		TNT1 A 0 A_GiveToTarget("LowHPKill", 1)
		TNT1 A 0 A_GiveToTarget("CheckAchievements", 1)
		GO99 G 1
		TNT1 A 0 A_SpawnItemEx("FadeEngineer", 0, 0, 0, 0, 0, 0, 0, SXF_TRANSFERTRANSLATION)
		BLAN A -1
	Stop
	Death.MohophRange:
	Death.Mohoph:
		PLAY A 0 A_GiveToTarget("TransEngineer",1)
		TNT1 A 0 A_GiveToTarget("MorphAmmo", 1)
		PLAY A 0 A_PlaySoundEx("MohophKill","Body")
		TNT1 A 0 A_GiveToTarget("MohophProtect", 1)
		TNT1 A 0 A_GiveToTarget("MohophProtectText", 1)
		TNT1 A 0 A_GiveToTarget("MohophKill", 1)
		TNT1 A 0 A_GiveToTarget("KilledEngineer2", 1)
		TNT1 A 0 A_JumpIfInTargetInventory("MohophJustMorphed", 1, 2)
		TNT1 A 0 A_Jump(256, 2)
		TNT1 A 0 A_GiveToTarget("JustMorphedKill", 1)		
		TNT1 A 0 ACS_ExecuteAlways(514, 0, 5)
		PLAY A 0 ACS_ExecuteAlways(976,0)
		TNT1 A 0 A_JumpIfInTargetInventory("MohophWarlockCheck", 1, 1)
		Goto DeathAnim
		TNT1 A 0 A_GiveToTarget("MorphAmmo", 1)
		Goto DeathAnim
	Death.MorgMelee:
		TNT1 A 0 A_GiveToTarget("MorgBatAmmo", 2)
		TNT1 A 0 A_GiveToTarget("MorgMeleeKill", 1)
		TNT1 A 0 A_GiveToTarget("MorgMulti", 1)
		Goto DeathAnim
	Death.MorgBat:
		TNT1 A 0 A_GiveToTarget("MorgBatKill", 1)
		Goto DeathAnim			
	}
}

Actor Custom_EngineerBloodySkull : Custom_BloodySkull
{
	States
	{
    Spawn:
        GO99 Z 0 ThrustThingZ (0, 45, 0, 1)
        goto See 
    See:
	    GO99 Z 0 A_GiveInventory("RocketAmmo",1)
        GO99 Z 5 A_Custommissile("Blood", -5,0,0)
        GO99 ZZZ 5 
        GO99 ZZZZ 5 
        loop
    Death:
		GO99 Z 0 A_Jump (16,4)
        GO99 Z 0 A_Jump (32,4)
        GO99 Z 0 A_Jump (64,4)
        GO99 Z 0 A_Jump (128,4)
        GO99 Z -1 A_CheckPlayerDone
        Wait
        GO99 Z -1 A_CheckPlayerDone
        Wait
        GO99 Z -1 A_CheckPlayerDone
        Wait
        GO99 Z -1 A_CheckPlayerDone
	}
}

/*
==== THE PULVERIZER ====
*/

Actor Pulverizer : Weapon
{
  Weapon.SlotNumber 2
  weapon.selectionorder 10
  weapon.kickback 100
  obituary "%o was reconstructed by %k's pulverizer."
  inventory.icon "PULVA0"
  weapon.ammouse 1
  weapon.ammogive 1
  weapon.ammotype "PulvCell"
  // Weapon.AmmoUse2 0
  +INVENTORY.UNDROPPABLE
  +WEAPON.ALT_AMMO_OPTIONAL
  +WEAPON.NOAUTOAIM
  states
  {
  Spawn:
    TNT1 A 400
    stop
  Ready:
    TNT1 A 0 A_TakeInventory("DetonationMark", 1)
    SSWH A 1 A_WeaponReady
    loop
  Deselect: 
    SSWH A 1 A_Lower
	TNT1 A 0 A_Lower
    loop
  Select:
    TNT1 A 0 ACS_ExecuteAlways(700, 0, WM_ENG_PULV)
    SSWH A 1 A_Raise
	TNT1 A 0 A_Raise
    Goto Select+1
  Fire:
	  SSWH A 1 A_TakeInventory("DetonationMark", 1)
	  TNT1 A 0 A_JumpIfInventory("BallReturn", 900, "Clean")
	  TNT1 A 0 A_JumpIfInventory("BallReturn", 1, "Ready") 
	  TNT1 A 0 A_GiveInventory("BallReturn", 5)
	  SSWH BCDEFGHI 2
	  TNT1 AA 0 A_PlaySoundEx("Engineer/PulvFire", 5)
	  TNT1 A 0 A_FireCustomMissile("PulverizeBall", 0, 1, 0, 8)
	  SSWH JKLM 3
      Goto Ready
	Flash:
	  TNT1 A 4 bright A_Light1
	  TNT1 A 3 bright A_Light2
	  TNT1 A 0 bright A_Light0
	  stop
	AltFire:
	  SSWH A 1
	  TNT1 A 0 A_JumpIfInventory("BallReturn", 5, 1)
	Goto Ready
	  TNT1 A 0 A_PlaySound("Engineer/Detonate")
	  SSWH A 10 A_GiveInventory("DetonationMark", 1)
	Goto Ready
	Clean:
	  TNT1 A 0 A_TakeInventory("BallReturn", 999)
	Goto Ready
    }
}

Actor PulvCell : Ammo {
    inventory.maxamount 1
	inventory.icon "PLVMA0"
}

Actor PulvRecoverStack : Inventory {
    inventory.maxamount 0xFF
}

Actor PulverizeBall
{
	PROJECTILE
	Radius 8
	Height 8
	scale 0.75
	damage (3)
	+DONTSPLASH
	+DOOMBOUNCE
	+RIPPER
	+DONTBLAST
	+NOTARGETSWITCH
	+SKYEXPLODE
//	+THRUSPECIES
	+THRUGHOST
	-BLOODSPLATTER
	+BLOODLESSIMPACT
	Species "Human"
	meleerange 14
	reactiontime 48
	//+FLOAT
	damagetype "Pulverizer"
	speed 22
	FloatSpeed 16
	bouncefactor 1.0
	wallbouncefactor 1.0
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_JumpIfInTargetInventory("DetonationMark", 1, "Death")
		TNT1 A 0 A_JumpIfInTargetInventory("BallReturn", 999, "Death")
		SRBL AAAA 1 Bright A_SpawnItemEx("BallDamager",0,0,0,2,0,0)
		TNT1 A 0 A_JumpIfInTargetInventory("DetonationMark", 1, "Death")
		SRBL BBBB 1 Bright A_SpawnItemEx("BallDamager",0,0,0,2,0,0)
		TNT1 A 0 A_JumpIfInTargetInventory("DetonationMark", 1, "Death")
		SRBL CCCC 1 Bright A_SpawnItemEx("BallDamager",0,0,0,2,0,0)
		TNT1 A 0 A_JumpIfInTargetInventory("DetonationMark", 1, "Death")
		SRBL DDDD 1 Bright A_SpawnItemEx("BallDamager",0,0,0,2,0,0)
		TNT1 A 0 A_JumpIfInTargetInventory("DetonationMark", 1, "Death")
		SRBL EEEE 1 Bright A_SpawnItemEx("BallDamager",0,0,0,2,0,0)
		TNT1 A 0 A_JumpIfInTargetInventory("DetonationMark", 1, "Death")
		TNT1 A 0 A_JumpIfInTargetInventory("BallReturn",999,"Death")
		SRBL AAAA 1 Bright A_SpawnItemEx("BallDamager",0,0,0,2,0,0)
		TNT1 A 0 A_JumpIfInTargetInventory("DetonationMark", 1, "Death")
		SRBL BBBB 1 Bright A_SpawnItemEx("BallDamager",0,0,0,2,0,0)
		TNT1 A 0 A_JumpIfInTargetInventory("DetonationMark", 1, "Death")
		SRBL CCCC 1 Bright A_SpawnItemEx("BallDamager",0,0,0,2,0,0)
		TNT1 A 0 A_JumpIfInTargetInventory("DetonationMark", 1, "Death")
		SRBL DDDD 1 Bright A_SpawnItemEx("BallDamager",0,0,0,2,0,0)
		TNT1 A 0 A_JumpIfInTargetInventory("DetonationMark", 1, "Death")
		SRBL EEEE 1 Bright A_SpawnItemEx("BallDamager",0,0,0,2,0,0)
		TNT1 A 0 A_JumpIfInTargetInventory("DetonationMark", 1, "Death")
		TNT1 A 0 A_CustomMissile("ReturnPulverizeBall",0,0,0,0)
	stop
	Death:
		VORT A 1 
		TNT1 A 0 A_SpawnItemEx("PulverizerExplosion", 0, 0, 0, 0, 0, 0, 0, SXF_CLIENTSIDE | SXF_NOCHECKPOSITION)
		TNT1 A 0 A_Stop
		TNT1 AAAA 4 A_Explode(32, 128, 0, 0, 32)
		TNT1 A 0 A_GiveToTarget("BallReturn",999)
	stop
	}
}

actor ReturnPulverizeBall : PulverizeBall
{
	radius 0
	height 0
	speed 32
	damagetype "Pulverizer"
	damage (3)
	+DONTSPLASH
	+NOINTERACTION
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_FaceTarget
		TNT1 A 0 A_JumpIfCloser(60,"Death2")
		SRBL EEEE 1 Bright A_SpawnItemEx("BallDamager",0,0,0,2,0,0)
		TNT1 A 0 A_JumpIfInTargetInventory("DetonationMark", 1, "Death")
		TNT1 A 0 A_JumpIfInTargetInventory("BallReturn",999,"Death")
		TNT1 A 0 A_FaceTarget
		TNT1 A 0 A_JumpIfCloser(60,"Death2")
		SRBL DDDD 1 Bright A_SpawnItemEx("BallDamager",0,0,0,2,0,0)
		TNT1 A 0 A_Countdown
		TNT1 A 0 A_JumpIfInTargetInventory("DetonationMark", 1, "Death")
		TNT1 A 0 A_JumpIfInTargetInventory("BallReturn",999,"Death")
		TNT1 A 0 A_FaceTarget
		TNT1 A 0 A_JumpIfCloser(60,"Death2")
		SRBL CCCC 1 Bright A_SpawnItemEx("BallDamager",0,0,0,2,0,0)
		TNT1 A 0 A_JumpIfInTargetInventory("DetonationMark", 1, "Death")
		TNT1 A 0 A_JumpIfInTargetInventory("BallReturn",999,"Death")
		TNT1 A 0 A_FaceTarget
		TNT1 A 0 A_JumpIfCloser(60,"Death2")
		SRBL BBBB 1 Bright A_SpawnItemEx("BallDamager",0,0,0,2,0,0)
		TNT1 A 0 A_JumpIfInTargetInventory("DetonationMark", 1, "Death")
		TNT1 A 0 A_JumpIfInTargetInventory("BallReturn",999,"Death")
		TNT1 A 0 A_CustomMissile("ReturnPulverizeBall",0,0,0,0)
	stop
	Death2:
		TNT1 A 0 A_GiveToTarget("BallReturn",999)
	stop	
	}
}

Actor PulverizerExplosion
{
	Scale 1.0
	Alpha 1.0
	Renderstyle Translucent
	Height 1
	Radius 1
	+NOINTERACTION
	+CLIENTSIDEONLY
	States
	{
		Spawn:
			TNT1 AA 0 A_PlaySound("weapons/rocklx")
			VORT ABCDEFGHIJKLMNOPQRSTUVWXY 1 Bright A_FadeOut(0.02)
		Stop
	}
}

actor BallDamager
{
	PROJECTILE
	damagetype "Pulverizer"
	+THRUSPECIES
	Species "Human"
	+RIPPER
	+BLOODLESSIMPACT
	damage (0)
	radius 12
	height 12
	Renderstyle translucent
	Scale 0.5
	Alpha 0.333
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 AAA 0 A_SpawnItemEx("PulverizerTrail", random(-4, 4), random(-4, 4), random(-4, 4), random(-4, 4), random(-4, 4), random(-4, 4), random(0, 359))
		TNT1 A 2 A_Explode(9, 78, 0, 0, 24)
	stop
	}
}

Actor PulverizerTrail
{
	Alpha 0.8
	Renderstyle Add
	Scale 0.5
	-SOLID
	+NOGRAVITY
	+CLIENTSIDEONLY
	
	States
	{
		Spawn:
			STRL ABCD 3 Bright A_FadeOut(0.1)
		Loop
	}
}

Actor BallReturn : Inventory
{
	inventory.amount 1
	inventory.maxamount 999
}

Actor DetonationMark : Inventory
{
	inventory.amount 1
	inventory.maxamount 1
}

// Originally by WildWeasel
Actor Wrench : Weapon
{
	Radius 20
	Height 12
	Weapon.SelectionOrder 4000
	Weapon.SlotNumber 3
	Weapon.AmmoType "WrenchAmmo"
	Weapon.AmmoUse 0
	DamageType "EngineerWrench"
	Inventory.PickupMessage "You find an Engineer Wrench!"
	inventory.icon "WRENICO"
	+WEAPON.NOAUTOFIRE
	+WEAPON.NO_AUTO_SWITCH
	States
	{
	Spawn:
		TNT1 A 1
		Stop
	Select:
	    TNT1 A 0 ACS_ExecuteAlways(700, 0, WM_ENG_WRENCH)
		PIPW A 1 A_Raise
		TNT1 A 0 A_Raise
		Goto Select+1
	Deselect:
		PIPW A 1 A_Lower
		TNT1 A 0 A_Lower
		Loop
	Ready:
		PIPW AAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("WrenchMode", 3, "ShowDrone")
		PIPW A 1 A_WeaponReady
		PIPW A 0 A_JumpIfInventory("WrenchMode", 2, "ShowDispenser")
		PIPW A 1 A_WeaponReady
		PIPW A 0 A_JumpIfInventory("WrenchMode", 1, 1)
		Loop
		PIPW A 0 A_JumpIfInventory("TotalKillCount", 5, "ShowSentry3")
		PIPW A 0 A_JumpIfInventory("TotalKillCount", 3, "ShowSentry2")
		Goto ShowSentry
	ShowDrone:
		PIPW A 0 A_FireCustomMissile("DronePlacerMissile")
		Goto Ready
	ShowSentry:
		PIPW A 0 A_FireCustomMissile("SentryPlacerMissile")
		Goto Ready
	ShowSentry2:
		PIPW A 0 A_FireCustomMissile("SentryPlacerMissile2")
		Goto Ready
	ShowSentry3:
		PIPW A 0 A_FireCustomMissile("SentryPlacerMissile3")
		Goto Ready
	ShowDispenser:
		PIPW A 0 A_FireCustomMissile("DispenserPlacerMissile")
		Goto Ready
	Fire:
		PIPW A 1
		PIPW A 0 A_JumpIfInventory("WrenchMode", 3, "FireDrone")
	    PIPW A 0 A_JumpIfInventory("WrenchMode", 2, "FireDispenser")
		PIPW A 0 A_JumpIfInventory("WrenchMode", 1, "FireSentry")
		Goto Ready
	AltFire:
		PIPW A 1 ACS_ExecuteAlways(764, 0, 0)
		TNT1 A 0 A_GiveInventory("WrenchMode", 1)
		TNT1 A 0 A_JumpIfInventory("WrenchMode", 4, 2)
		PIPW A 1
		Goto Ready
		PIPW A 1 A_TakeInventory("WrenchMode", 5)
		Goto Ready
	CheckStuff:
		TNT1 A 0 A_JumpIfInventory("Igot2Drones", 1, "Failed")
		TNT1 A 0 A_JumpIfInventory("DroneCapacity", 0, 1)
		Goto PutDrone
		TNT1 A 0 A_GiveInventory("Igot2Drones", 1)
		Goto PutDrone
	FireDrone:
		PIPW A 1
		PIPW A 0 A_JumpIfInventory("WrenchAmmo", 50, 2)	
		TNT1 A 0 ACS_ExecuteAlways(764, 0, 1)
		Goto Ready
		PIPW A 1
		TNT1 A 0 A_JumpIfInventory("CanOneMoreDrone", 1, "CheckStuff")
		PIPW A 1
	    TNT1 A 0 A_JumpIfInventory("DroneCapacity", 0, "Failed")
	PutDrone:
		PIPW BC 1
		TNT1 A 5
		PIPW DEF 1
		PIPW G 0 A_PlaySound("PipeMiss")
		TNT1 A 0 A_SpawnItemEx("EngyDrone", 64, 0, 16, 0, 0, 0, 0, SXF_TRANSFERTRANSLATION | SXF_SETMASTER)
		TNT1 A 0 A_GiveInventory("DroneCapacity", 1)
		PIPW G 0 A_TakeInventory("WrenchAmmo", 50)
		PIPW H 1
		TNT1 A 0 ACS_ExecuteAlways(978, 0)
		PIPW I 1
		TNT1 A 10 ACS_ExecuteAlways(766, 0, 2)
		PIPW CB 1
		PIPW A 10
		TNT1 A 0 ACS_ExecuteAlways(770, 0, tid, 3)
		TNT1 A 0 A_JumpIfInventory("TotalKillCount", 5, "GiveLevel2")
		TNT1 A 0 A_JumpIfInventory("TotalKillCount", 3, "GiveLevel")
		Goto Ready
	GiveLevel:
		TNT1 A 0 ACS_ExecuteAlways(504, 0, 1)
		Goto Ready
	GiveLevel2:
		TNT1 AA 0 ACS_ExecuteAlways(504, 0, 2)
		Goto Ready		
	Failed:
		PIPW A 1 ACS_ExecuteAlways(764, 0, 4)
	Goto Ready
	FireSentry:
		PIPW A 0 A_JumpIfInventory("AllowSentryCreation", 1, 2)
		PIPW A 1 ACS_ExecuteAlways(764, 0, 5)
		Goto Ready
		PIPW A 0 A_JumpIfInventory("WrenchAmmo", 200, 2)
		PIPW A 1 ACS_ExecuteAlways(764, 0, 3)
		Goto Ready
		PIPW BC 1
		TNT1 A 5
		PIPW DEF 1
		TNT1 A 0 A_PlaySound("PipeMiss")
		TNT1 A 0 A_JumpIfInventory("TotalKillCount", 5, 4)
		TNT1 A 0 A_JumpIfInventory("TotalKillCount", 3, 2)
		PIPW G 1 A_FireCustomMissile("SentrySpawnerMissile")
		Goto FinishSentry
		PIPW G 1 A_FireCustomMissile("Sentry2Spawner")
		Goto FinishSentry
		PIPW G 1 A_FireCustomMissile("Sentry3Spawner")
	FinishSentry:
		PIPW G 0 A_TakeInventory("WrenchAmmo", 200)
		PIPW G 0 A_TakeInventory("AllowSentryCreation", 1)
		PIPW H 1
//		TNT1 A 0 ACS_ExecuteAlways(978, 0, 0)
		PIPW I 1
		TNT1 A 10
		PIPW CB 1
		PIPW A 20
		PIPW A 1 ACS_ExecuteAlways(770, 0, tid, 2)
		Goto Ready
	FireDispenser:
		PIPW A 0 A_JumpIfInventory("AllowDispenserCreation", 1, 2)
		PIPW A 0 ACS_ExecuteAlways(764, 0, 6)
		Goto Ready
		PIPW A 0 A_JumpIfInventory("WrenchAmmo", 100, 2)
		PIPW A 1 ACS_ExecuteAlways(764, 0, 2)
		Goto Ready
		PIPW BC 1
		TNT1 A 5
		PIPW DEF 1
		PIPW G 0 A_PlaySound("PipeMiss")
		PIPW G 1 A_FireCustomMissile("DispenserSpawnerMissile")
		PIPW G 0 A_TakeInventory("WrenchAmmo", 100)
		PIPW G 0 A_TakeInventory("AllowDispenserCreation", 1)
		PIPW H 1
//		TNT1 A 0 ACS_ExecuteAlways(978, 0, 1)
		PIPW I 1
		TNT1 A 10
		PIPW CB 1
		PIPW A 20 // 35
		PIPW A 1 ACS_ExecuteAlways(770, 0, tid, 1)
		Goto Ready
	}
}

Actor WrenchMode : Ammo
{
	Inventory.Amount 1
	Inventory.MaxAmount 5
	+IGNORESKILL
}

Actor WrenchAmmo : Ammo
{
	Inventory.Amount 1
	Inventory.MaxAmount 200
	Inventory.Icon "AEPCA0"
	+IGNORESKILL
}

Actor DroneCapacity : Ammo
{
	inventory.amount 1
	inventory.maxamount 1
	+IGNORESKILL
}

Actor AllowDispenserCreation : Inventory
{
	Inventory.Amount 1
	Inventory.MaxAmount 1
}

Actor AllowSentryCreation : Inventory
{
	Inventory.Amount 1
	Inventory.MaxAmount 1
}

Actor WrenchAttack
{
	Height 5
	Radius 4
	Speed 40
	Obituary "%o's face was hammered in by %k." 
	Damage (25)
	DamageType "EngineerWrench"
	PROJECTILE
	+NOEXTREMEDEATH
	+DONTREFLECT
	States
	{
	Spawn:
		TNT1 A 2
		Stop
	}
}

// Dispenser
////////////////////////////////////////////////////////////////////////////////
Actor Dispenser
{
	Radius 16
	Height 48
	Health 300
	Mass 0x7FFFFFFF
	XScale 0.55
	YScale 0.35
	PainChance 256
	BloodType "SparkBlood"
	Species "EngineerBuilding"
	DamageFactor "GravityObject", 0.0
	DamageFactor "SentryShoot", 0.0
	DamageFactor "Railgun", 0.0
	DamageFactor "ChokeAttack", 0.6
	DamageFactor "DefilerCloudBall", 0.0
	DamageFactor "IcefiendIcePath", 0.6
	DamageFactor "CreeperMelee", 0.3
	DamageFactor "MarinePistol", 0.0
	DamageFactor "MarineShotgun", 0.0
	DamageFactor "MarineMachineGun", 0.0	
	DamageFactor "MarineGrenade", 0.0
	DamageFactor "MarineSuicideGrenade", 0.0
	DamageFactor "HunterLightningRail", 0.0
	DamageFactor "HunterIceArrow", 0.0
	DamageFactor "HunterRegularArrow", 0.0
	DamageFactor "HunterSuperIceArrow", 0.0
	DamageFactor "HunterSuperRegularArrow", 0.0
	DamageFactor "HunterSuperLightningRail", 0.0
	DamageFactor "HunterSuperFireArrow", 0.0
	DamageFactor "CyborgPlasma", 0.0
	DamageFactor "CyborgCrapPlasma", 0.0
	DamageFactor "CyborgJetpackFire", 0.0
	DamageFactor "GhostbusterProton", 0.0
	DamageFactor "GhostbusterBlood", 0.0
	DamageFactor "GhostbusterEcho", 0.0
	DamageFactor "GhostbusterSoul", 0.0
	DamageFactor "GhostbusterIceFall", 0.0
	DamageFactor "GhostbusterIceBall", 0.0
	DamageFactor "GhostbusterDefilerBall", 0.0
	DamageFactor "GhostbusterHorror", 0.0
	DamageFactor "GhostbusterExpander", 0.0
	DamageFactor "GhostbusterTrap", 0.0
	DamageFactor "WitchLaser", 0.0
	DamageFactor "DeathDart", 0.0
	DamageFactor "HeartSeeker", 0.0
	DamageFactor "FlaskT1", 0.0
	DamageFactor "FlaskT2", 0.0
	DamageFactor "FlaskT3", 0.0
	DamageFactor "EngineerNail", 0.0
	DamageFactor "SawBlade", 0.0
	DamageFactor "WarlockFireball", 0.0
	DamageFactor "WarlockBigFireball", 0.0
	DamageFactor "WarlockIceShards", 0.0
	DamageFactor "WarlockLightning", 0.0
	DamageFactor "WarlockMagmaSmall", 0.0
	DamageFactor "WarlockNova", 0.0
	DamageFactor "HunterNormalMagic", 0.0
	DamageFactor "HunterIceSpike", 0.0
	DamageFactor "HunterLightningMagic", 0.0
	DamageFactor "HunterFireMagic", 0.0	
	DamageFactor "PurpleMagic", 0.0
	DamageFactor "Maledict", 0.0	
	DamageFactor "ShadowBlast", 0.0
	DamageFactor "Pulverizer", 0.0
	DamageFactor "PlaneShotgun", 0.0
	DamageFactor "PlaneVortex", 0.0
	DamageFactor "PlaneBlade", 0.0
	DamageFactor "Drone", 0.0
	DamageFactor "ProtectorMissile", 0.0
	DamageFactor "ProtectorPlasma", 0.0
	DamageFactor "ProtectorLightning", 0.0
	MONSTER
	Species "EngineerShit"
	+THRUSPECIES
	-SOLID
	+USESPECIAL
	+THRUGHOST
	+GHOST
	+NOTARGET
	+NOINFIGHTING
	+DONTREFLECT
	+DONTBLAST
	-PUSHABLE
	-TELESTOMP
	-FRIENDLY
	States
	{
	Spawn:
		DISP A 0
		DISP A 1 A_GiveInventory("HumanTeam", 1)
		DISP AAAAAAAAAAAAAAAAAAAAAAAAAA 4 ACS_ExecuteAlways(701, 0, 0, tid)
		DISP A 1 A_PlaySound("DispenserIdle")
		Goto Spawn+2
	Pain:
		DISP A 2 A_SpawnItemEx("SparkBlood", 0, 0, 32, random(-5,5), random(-5,5), random(-5,5))
		Goto Spawn+5
	Death:
		DISP A 0 Thing_SetSpecial(0, 0, 0, 0, 0)
		TNT1 A 0 ACS_ExecuteAlways(992, 0, tid, 1)
		DISP A 1 A_PlaySound("DispenserBlowup")
		DISP AAAAAAAAAAAAAAAAA 1 A_SpawnItemEx("CyborgExplosion", 0, 0, 32, random(-10,10), random(-10,10), random(-10,10))
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("RandomCyborgChunk", 0, 0, 36, random(-35,35), random(-35,35), random(-10,30))
		TNT1 AAAAAAAAAAAAA 0 A_SpawnItemEx("CyborgExplosion", 0, 0, 32, random(-5,5), random(-5,5), random(-5,5))
		TNT1 A 1
		Stop
	}
}

Actor MAKEDISP : CustomInventory
{
	inventory.maxamount 1
	
	States
	{
		Pickup:
		Use:
			TNT1 A 0 ACS_ExecuteAlways(765, 0, 0)
		Stop
	}
}

Actor MAKESENTRY : CustomInventory
{
	inventory.maxamount 1
	
	States
	{
		Pickup:
		Use:
			TNT1 A 0 ACS_ExecuteAlways(765, 0, 1)
		Stop
	}
}

// Player numbered dispensers
Actor Dispenser0 : Dispenser
{
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 Thing_SetSpecial(0, 226, 763, 0, 0)
		TNT1 A 0 Thing_ChangeTid(0, 1100)
		DISP A 1
		Goto Super::Spawn
	}
}

// Spawner missiles
Actor DispenserSpawnerMissile
{
	Radius 16
	Height 32
	Speed 15
	Damage (0)
	PROJECTILE
	-NOGRAVITY
	States
	{
	Death:
		TNT1 A 1 A_SpawnItemEx("Dispenser0")
		TNT1 A 1
		TNT1 A 0 A_GiveToTarget("MAKEDISP", 1)
		Stop
	}
}

// Missiles
Actor DispenserPlacerMissile
{
	Radius 16
	Height 16
	Speed 35
	Damage (0)
	PROJECTILE
	+FLOORHUGGER
	States
	{
	Spawn:
		TNT1 A 2
		Goto Death
	Death:
		TNT1 A 1 A_SpawnItemEx("DispenserHologram")
		Stop
	}
}

// Shows the green placer
Actor DispenserHologram
{
	Radius 32
	Height 64
	Speed 0
	XScale 0.6
	YScale 0.4
	RenderStyle Translucent
	Alpha 0.8
	Translation "0:255=112:127"
	States
	{
	Spawn:
		DISP AAAAAAAAAAAA 2 A_FadeOut(0.1)
		Goto Death
	Death:
		TNT1 A 1
		Stop
	}
}

Actor DispenserHudData : CustomInventory
{	
	Inventory.Amount 1
	Inventory.MaxAmount 1
	+INVENTORY.AUTOACTIVATE
	States
	{
	Spawn:
		TNT1 A 1
		Stop
	Use:
		TNT1 A 1 ACS_ExecuteAlways(766, 0, 0)
		Stop
	}
}

// Missiles
Actor DronePlacerMissile
{
	Radius 16
	Height 16
	Speed 35
	Damage (0)
	PROJECTILE
	+FLOORHUGGER
	States
	{
	Spawn:
		TNT1 A 2
		Goto Death
	Death:
		TNT1 A 1 A_SpawnItemEx("DroneHologram")
		Stop
	}
}

// Shows the green placer
Actor DroneHologram
{
	Radius 8
	Height 12
	Speed 0
	RenderStyle Translucent
	Alpha 0.8
	Translation "0:255=112:127"
	States
	{
	Spawn:
		DRON AAAAAAAAAAAA 2 A_FadeOut(0.1)
		Goto Death
	Death:
		TNT1 A 1
		Stop
	}
}

// Sentry
////////////////////////////////////////////////////////////////////////////////
Actor NoMoreLevel : Inventory
{
	inventory.amount 1
	inventory.maxamount 1
}

Actor Upgrading : Inventory 
{ 
	inventory.amount 1
	inventory.maxamount 1
}

Actor LvL2Upgrade : Inventory
{ 
	inventory.amount 1
	inventory.maxamount 1
}

Actor PlayerNumX : Inventory
{
	inventory.amount 1
	inventory.maxamount 32
}

Actor Sentry
{
	Radius 16
	Height 64
	Health 250
	Speed 0
	Mass 0x7FFFFFFF
	XScale 0.6
	YScale 0.35
	PainChance 200
	BloodType "SparkBlood"
	Species "EngineerBuilding"
	DamageFactor "GravityObject", 0.0
	DamageFactor "SentryShoot", 0.0
	DamageFactor "Railgun", 0.0
	DamageFactor "ChokeAttack", 0.6
	DamageFactor "DefilerCloudBall", 0.0
	DamageFactor "IcefiendIcePath", 0.6
	DamageFactor "CreeperMelee", 0.3
	DamageFactor "MarinePistol", 0.0
	DamageFactor "MarineShotgun", 0.0
	DamageFactor "MarineMachineGun", 0.0
	DamageFactor "MarineGrenade", 0.0
	DamageFactor "MarineSuicideGrenade", 0.0
	DamageFactor "HunterLightningRail", 0.0
	DamageFactor "HunterIceArrow", 0.0
	DamageFactor "HunterRegularArrow", 0.0
	DamageFactor "HunterSuperIceArrow", 0.0
	DamageFactor "HunterSuperRegularArrow", 0.0
	DamageFactor "HunterSuperLightningRail", 0.0
	DamageFactor "HunterSuperFireArrow", 0.0
	DamageFactor "CyborgPlasma", 0.0
	DamageFactor "CyborgCrapPlasma", 0.0
	DamageFactor "CyborgJetpackFire", 0.0
	DamageFactor "GhostbusterProton", 0.0
	DamageFactor "GhostbusterBlood", 0.0
	DamageFactor "GhostbusterEcho", 0.0
	DamageFactor "GhostbusterSoul", 0.0
	DamageFactor "GhostbusterIceFall", 0.0
	DamageFactor "GhostbusterIceBall", 0.0
	DamageFactor "GhostbusterDefilerBall", 0.0
	DamageFactor "GhostbusterHorror", 0.0
	DamageFactor "GhostbusterExpander", 0.0
	DamageFactor "GhostbusterTrap", 0.0
	DamageFactor "WitchLaser", 0.0
	DamageFactor "DeathDart", 0.0
	DamageFactor "HeartSeeker", 0.0
	DamageFactor "FlaskT1", 0.0
	DamageFactor "FlaskT2", 0.0
	DamageFactor "FlaskT3", 0.0	
	DamageFactor "EngineerNail", 0.0
	DamageFactor "SawBlade", 0.0
	DamageFactor "WarlockFireball", 0.0
	DamageFactor "WarlockBigFireball", 0.0
	DamageFactor "WarlockIceShards", 0.0
	DamageFactor "WarlockLightning", 0.0
	DamageFactor "WarlockMagmaSmall", 0.0
	DamageFactor "WarlockNova", 0.0
	DamageFactor "PurpleMagic", 0.0
	DamageFactor "HunterNormalMagic", 0.0
	DamageFactor "HunterIceSpike", 0.0
	DamageFactor "HunterLightningMagic", 0.0
	DamageFactor "HunterFireMagic", 0.0
	DamageFactor "Maledict", 0.0
	DamageFactor "ShadowBlast", 0.0
	DamageFactor "SjasScream", 1.8
	DamageFactor "Pulverizer", 0.0
	DamageFactor "PlaneShotgun", 0.0
	DamageFactor "PlaneVortex", 0.0
	DamageFactor "PlaneBlade", 0.0	
	DamageFactor "Drone", 0.0
	DamageFactor "ProtectorMissile", 0.0
	DamageFactor "ProtectorPlasma", 0.0
	DamageFactor "ProtectorLightning", 0.0
	DamageFactor "FrostbiteIceBreath", 0.0
	DamageFactor "FrostbiteMortar", 0.0
	MONSTER
	+FLOORCLIP
	+NOBLOOD
	+NOICEDEATH
	-NOTARGET // +
	+NEVERRESPAWN
	-NOINFIGHTING // +
	+USESPECIAL
	+LOOKALLAROUND
	+DONTREFLECT
	+DONTBLAST
	-PUSHABLE
	-TELESTOMP
	-SOLID
	-DONTMORPH
	+FRIENDLY
	-COUNTKILL
	States
	{
	Spawn:
		STRY AAAA 6 A_Look
		TNT1 A 0 ACS_ExecuteAlways(701, 0, 1, tid)
		STRY A 6 A_Look
		TNT1 A 0 ACS_ExecuteAlways(701, 0, 1, tid)
		STRY A 6 A_Look
		TNT1 A 0 ACS_ExecuteAlways(701, 0, 1, tid)
		goto Spawn+3
	See:
		STRY A 0 A_GiveInventory("HumanTeam", 1)
		STRY A 2 //  A_ChangeFlag("FRIENDLY", 0)
		STRY A 8 
		STRY A 2 A_JumpIfTargetInLOS("Missile")
		STRY A 2 A_ClearTarget
		goto Spawn+3
	Pain:
		STRY A 1 A_SpawnItemEx("SparkBlood", 0, 0, 32, random(-5,5), random(-5,5), random(-5,5))
		Goto Spawn+3	
	See2:
		STRY A 2 A_ClearTarget
		goto See		
	See3:
		STRY AA 1 A_JumpIfInTargetInventory("HumanTeam", 1, "See2")
//		STRY A 0 A_Jump(16,"MissileGo")
//		STRY A 0 A_JumpIfCloser(128,"MissileGo")
		goto See	
	MissileCheck:
		STRY AA 0 A_JumpIfInTargetInventory("HumanTeam", 1, "See2")
		STRY A 0 A_Chase("", "", CHF_DONTMOVE)
		STRY A 0 
		goto MissileGo+2		
	Missile:
		STRY A 0 
		STRY AA 1 A_JumpIfInTargetInventory("HumanTeam",1,"See2")
		STRY A 0 A_JumpIfInTargetInventory("IcefiendInvisible", 1, "See3")
		STRY A 0 A_JumpIfInTargetInventory("IsCreeper", 1, "See3")
		STRY A 1 A_JumpIfCloser(2048,"MissileGo")
		STRY A 0 
		goto See2
	MissileGo:
		STRY A 7 A_FaceTarget
		STRY A 0 A_CPosRefire
		STRY A 4 Bright A_CustomMissile("SentryBullet", 50)
		TNT1 A 0 A_PlaySound("SentryShoot")
		STRY A 0 A_FaceTarget
		STRY A 3 // A_ChangeFlag("FRIENDLY",0)
		STRY A 0 A_CPosRefire
		goto MissileCheck	
	Death:
		DISP A 0 Thing_SetSpecial(0, 0, 0, 0, 0)
		TNT1 A 0 ACS_ExecuteAlways(992, 0, tid, 0)
		STRY A 1 A_PlaySound("SentryBlowup")
		STRY AAAAAAAAAAAAAAA 1 A_SpawnItemEx("CyborgExplosion", 0, 0, 32, random(-10,10), random(-10,10), random(-10,10))
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("RandomCyborgChunk", 0, 0, 36, random(-35,35), random(-35,35), random(-10,30))
		TNT1 AAAAAAAAAAA 0 A_SpawnItemEx("CyborgExplosion", 0, 0, 32, random(-5,5), random(-5,5), random(-5,5))
		TNT1 A 1
		Stop
	Levelup:
	    TNT1 A 0 ACS_ExecuteAlways(974, 0, tid)
		TNT1 A 0 A_SpawnItem("Sntry0")
		Stop
	}
}

Actor SentryLvl2
{
	Radius 16
	Height 64
	Health 375
	Speed 0
	Mass 0x7FFFFFFF
	XScale 0.6
	YScale 0.35
	PainChance 200
	BloodType "SparkBlood"
	Species "EngineerBuilding"
	DamageFactor "GravityObject", 0.0
	DamageFactor "SentryShoot", 0.0
	DamageFactor "Railgun", 0.0
	DamageFactor "ChokeAttack", 0.6
	DamageFactor "DefilerCloudBall", 0.0
	DamageFactor "IcefiendIcePath", 0.6
	DamageFactor "CreeperMelee", 0.3
	DamageFactor "MarinePistol", 0.0
	DamageFactor "MarineShotgun", 0.0
	DamageFactor "MarineMachineGun", 0.0
	DamageFactor "MarineGrenade", 0.0
	DamageFactor "MarineSuicideGrenade", 0.0
	DamageFactor "HunterLightningRail", 0.0
	DamageFactor "HunterIceArrow", 0.0
	DamageFactor "HunterRegularArrow", 0.0
	DamageFactor "HunterSuperIceArrow", 0.0
	DamageFactor "HunterSuperRegularArrow", 0.0
	DamageFactor "HunterSuperLightningRail", 0.0
	DamageFactor "HunterSuperFireArrow", 0.0
	DamageFactor "CyborgPlasma", 0.0
	DamageFactor "CyborgCrapPlasma", 0.0
	DamageFactor "CyborgJetpackFire", 0.0
	DamageFactor "GhostbusterProton", 0.0
	DamageFactor "GhostbusterBlood", 0.0
	DamageFactor "GhostbusterEcho", 0.0
	DamageFactor "GhostbusterSoul", 0.0
	DamageFactor "GhostbusterIceFall", 0.0
	DamageFactor "GhostbusterIceBall", 0.0
	DamageFactor "GhostbusterDefilerBall", 0.0
	DamageFactor "GhostbusterHorror", 0.0
	DamageFactor "GhostbusterExpander", 0.0
	DamageFactor "GhostbusterTrap", 0.0
	DamageFactor "EngineerNail", 0.0
	DamageFactor "SawBlade", 0.0
	DamageFactor "SantaHollyAir", 0.0
	DamageFactor "SantaHollyGround", 0.0
	DamageFactor "SantaStarProjectile", 0.0
	DamageFactor "SantaFallingStar", 0.0
	DamageFactor "SantaSnowball", 0.0
	DamageFactor "SantaPresent", 0.0
	DamageFactor "WarlockFireball", 0.0
	DamageFactor "WarlockBigFireball", 0.0
	DamageFactor "WarlockIceShards", 0.0
	DamageFactor "WarlockLightning", 0.0
	DamageFactor "WarlockMagmaSmall", 0.0
	DamageFactor "WarlockNova", 0.0
	DamageFactor "PurpleMagic", 0.0
	DamageFactor "HunterNormalMagic", 0.0
	DamageFactor "HunterIceSpike", 0.0
	DamageFactor "HunterLightningMagic", 0.0
	DamageFactor "HunterFireMagic", 0.0
	DamageFactor "Maledict", 0.0
	DamageFactor "ShadowBlast", 0.0
	DamageFactor "SjasScream", 1.5
	DamageFactor "Pulverizer", 0.0
	DamageFactor "PlaneShotgun", 0.0
	DamageFactor "PlaneVortex", 0.0
	DamageFactor "PlaneBlade", 0.0	
	DamageFactor "Drone", 0.0
	DamageFactor "ProtectorMissile", 0.0
	DamageFactor "ProtectorPlasma", 0.0
	DamageFactor "ProtectorLightning", 0.0	
	MONSTER
	+FLOORCLIP
	+NOBLOOD
	+NOICEDEATH
	-NOTARGET // +
	+NEVERRESPAWN
	-NOINFIGHTING // +
	+USESPECIAL
	+LOOKALLAROUND
	+DONTREFLECT
	+DONTBLAST
	-PUSHABLE
	-TELESTOMP
	-SOLID
	-DONTMORPH
	+FRIENDLY
	-COUNTKILL
	States
	{
	Spawn:
		SRY2 AAA 6 A_look
		TNT1 A 0 ACS_ExecuteAlways(701, 0, 1, tid)
		SRY2 A 6 A_look
		TNT1 A 0 ACS_ExecuteAlways(701, 0, 1, tid)
		SRY2 A 6 A_Look
		TNT1 A 0 ACS_ExecuteAlways(701, 0, 1, tid)
		goto Spawn+3
	See:
		TNT1 A 0 A_GiveInventory("HumanTeam", 1)
		SRY2 A 2 // A_ChangeFlag("FRIENDLY", 0)
		SRY2 A 8 
		SRY2 A 2 A_JumpIfTargetInLOS("Missile")
		SRY2 A 2 A_ClearTarget
		goto Spawn+3
	Pain:
		SRY2 A 1 A_SpawnItemEx("SparkBlood", 0, 0, 32, random(-5,5), random(-5,5), random(-5,5))
		Goto Spawn+3
	See2:
		SRY2 A 2 A_ClearTarget
		goto See
	See3:
		SRY2 AA 1 A_JumpIfInTargetInventory("HumanTeam", 1, "See2")
//		TNT1 A 0 A_Jump(16,"MissileGo")
//		TNT1 A 0 A_JumpIfCloser(128,"MissileGo")
		goto See
	MissileCheck:
		TNT1 AA 0 A_JumpIfInTargetInventory("HumanTeam", 1, "See2")
		TNT1 A 0 A_Chase("", "", CHF_DONTMOVE)
		TNT1 A 0 
		goto MissileGo+2
	Missile: // This can detect creepers, but fails to find icefiends.
		TNT1 A 0 
		TNT1 A 0 A_PlaySound("SentrySit")
		SRY2 AA 1 A_JumpIfInTargetInventory("HumanTeam",1,"See2")
		TNT1 A 0 A_JumpIfInTargetInventory("IcefiendInvisible", 1, "See3")
		SRY2 A 1 A_JumpIfCloser(3072,"MissileGo")
		TNT1 A 0 
		goto See2
	MissileGo: // Also faster
		SRY2 A 4 A_FaceTarget
		TNT1 A 0 A_CPosRefire
		SRY2 A 4 Bright
		TNT1 A 0 A_CustomMissile("SentryBullet2", 40)
		TNT1 A 0 A_PlaySound("SentryShoot2")
		TNT1 A 0 A_FaceTarget
		TNT1 A 0 A_CustomMissile("SentryBullet2", 56)
		TNT1 A 0 A_PlaySound("SentryShoot2")
		SRY2 A 2 // A_ChangeFlag("FRIENDLY",0)
		TNT1 A 0 A_CPosRefire
		goto MissileCheck
	Death:
		TNT1 A 0 Thing_SetSpecial(0, 0, 0, 0, 0)
		TNT1 A 0 ACS_ExecuteAlways(992, 0, tid, 0)
		SRY2 A 1 A_PlaySound("SentryBlowup")
		SRY2 AAAAAAAAAAAAAAA 1 A_SpawnItemEx("CyborgExplosion", 0, 0, 32, random(-10,10), random(-10,10), random(-10,10))
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("RandomCyborgChunk", 0, 0, 36, random(-35,35), random(-35,35), random(-10,30))
		TNT1 AAAAAAAAAAA 0 A_SpawnItemEx("CyborgExplosion", 0, 0, 32, random(-5,5), random(-5,5), random(-5,5))
		TNT1 A 1
		Stop
	Levelup2:
	    TNT1 A 0 ACS_ExecuteAlways(974, 0, tid)
		TNT1 A 0 A_SpawnItem("Stry0")
		Stop		
	}
}

Actor RocketCounter : Inventory
{
	inventory.amount 1
	inventory.maxamount 10
}

Actor SentryRocketExploder
{
	Speed 0
	Height 4
	Radius 4
	Damage (0)
	PROJECTILE
	+BLOODLESSIMPACT
	+RIPPER
	DamageType "SentryRocket"
	Obituary "%o fell victim to heavy rockets of %k's sentry."
	States
	{
		Spawn:
			TNT1 A 0
		Goto Death
		Death:
			TNT1 A 0 A_PlaySound("SentryMissileBoom")
			TNT1 A 1 A_Explode(24, 96)
			TNT1 A 1
		Stop
	}
}

Actor SentryRocket
{
	Height 8
	Radius 6
	Speed 52
	Damage (random(16, 24))
	DamageType "SentryRocket"
	Obituary "%o fell victim to heavy rockets of %k's sentry."
	SeeSound "SentryMissile"
	Projectile
	+ROCKETTRAIL
	States
	{
		Spawn:
			HMIS A 8 Bright
		Loop
		Death:
			TNT1 A 0 A_SpawnItem("SentryRocketExploder")
			MACX ABCDEFGHIJ 3 Bright
		Stop
	}
}

Actor SentryLvl3
{
	Radius 16
	Height 64
	Health 500
	Speed 0
	Mass 0x7FFFFFFF
	XScale 0.6
	YScale 0.35
	PainChance 200
	BloodType "SparkBlood"
	Species "EngineerBuilding"
	DamageFactor "GravityObject", 0.0
	DamageFactor "SentryShoot", 0.0
	DamageFactor "Railgun", 0.0
	DamageFactor "ChokeAttack", 0.6
	DamageFactor "DefilerCloudBall", 0.0
	DamageFactor "IcefiendIcePath", 0.6
	DamageFactor "CreeperMelee", 0.3
	DamageFactor "MarinePistol", 0.0
	DamageFactor "MarineShotgun", 0.0
	DamageFactor "MarineMachineGun", 0.0
	DamageFactor "MarineGrenade", 0.0
	DamageFactor "MarineSuicideGrenade", 0.0
	DamageFactor "HunterLightningRail", 0.0
	DamageFactor "HunterIceArrow", 0.0
	DamageFactor "HunterRegularArrow", 0.0
	DamageFactor "HunterSuperIceArrow", 0.0
	DamageFactor "HunterSuperRegularArrow", 0.0
	DamageFactor "HunterSuperLightningRail", 0.0
	DamageFactor "HunterSuperFireArrow", 0.0
	DamageFactor "CyborgPlasma", 0.0
	DamageFactor "CyborgCrapPlasma", 0.0
	DamageFactor "CyborgJetpackFire", 0.0
	DamageFactor "GhostbusterProton", 0.0
	DamageFactor "GhostbusterBlood", 0.0
	DamageFactor "GhostbusterEcho", 0.0
	DamageFactor "GhostbusterSoul", 0.0
	DamageFactor "GhostbusterIceFall", 0.0
	DamageFactor "GhostbusterIceBall", 0.0
	DamageFactor "GhostbusterDefilerBall", 0.0
	DamageFactor "GhostbusterHorror", 0.0
	DamageFactor "GhostbusterExpander", 0.0
	DamageFactor "GhostbusterTrap", 0.0
	DamageFactor "EngineerNail", 0.0
	DamageFactor "SawBlade", 0.0
	DamageFactor "SantaHollyAir", 0.0
	DamageFactor "SantaHollyGround", 0.0
	DamageFactor "SantaStarProjectile", 0.0
	DamageFactor "SantaFallingStar", 0.0
	DamageFactor "SantaSnowball", 0.0
	DamageFactor "SantaPresent", 0.0
	DamageFactor "WarlockFireball", 0.0
	DamageFactor "WarlockBigFireball", 0.0
	DamageFactor "WarlockIceShards", 0.0
	DamageFactor "WarlockLightning", 0.0
	DamageFactor "WarlockMagmaSmall", 0.0
	DamageFactor "WarlockNova", 0.0
	DamageFactor "PurpleMagic", 0.0
	DamageFactor "HunterNormalMagic", 0.0
	DamageFactor "HunterIceSpike", 0.0
	DamageFactor "HunterLightningMagic", 0.0
	DamageFactor "HunterFireMagic", 0.0
	DamageFactor "Maledict", 0.0
	DamageFactor "ShadowBlast", 0.0
	DamageFactor "Pulverizer", 0.0
	DamageFactor "PlaneShotgun", 0.0
	DamageFactor "PlaneVortex", 0.0
	DamageFactor "PlaneBlade", 0.0	
	DamageFactor "Drone", 0.0
	DamageFactor "ProtectorMissile", 0.0
	DamageFactor "ProtectorPlasma", 0.0
	DamageFactor "ProtectorLightning", 0.0	
	MONSTER
	+FLOORCLIP
	+NOBLOOD
	+NOICEDEATH
	-NOTARGET // +
	+NEVERRESPAWN
	-NOINFIGHTING // +
	+USESPECIAL
	+LOOKALLAROUND
	+DONTREFLECT
	+DONTBLAST
	-PUSHABLE
	-TELESTOMP
	-SOLID
	-DONTMORPH
	+FRIENDLY
	-COUNTKILL
	States
	{
	Spawn:
		SRY3 AAA 4 A_look
		TNT1 A 0 ACS_ExecuteAlways(701, 0, 1, tid)
		SRY3 A 4 A_look
		TNT1 A 0 ACS_ExecuteAlways(701, 0, 1, tid)
		SRY3 A 4 A_Look
		TNT1 A 0 ACS_ExecuteAlways(701, 0, 1, tid)
		goto Spawn+3
	See:
		TNT1 A 0 A_GiveInventory("HumanTeam", 1)
		SRY3 A 2 // A_ChangeFlag("FRIENDLY", 0)
		SRY3 A 8 
		SRY3 A 2 A_JumpIfTargetInLOS("Missile")
		SRY3 A 2 A_ClearTarget
		goto Spawn+3
	Pain:
		SRY3 A 2 A_SpawnItemEx("SparkBlood", 0, 0, 32, random(-5,5), random(-5,5), random(-5,5))
		Goto Spawn+3
	See2:
		SRY3 A 2 A_ClearTarget
		goto See
	See3:
		SRY3 AA 1 A_JumpIfInTargetInventory("HumanTeam", 1, "See2")
		TNT1 A 0 A_Jump(16,"MissileGo")
		TNT1 A 0 A_JumpIfCloser(128,"MissileGo")
		goto See
	MissileCheck:
		TNT1 AA 0 A_JumpIfInTargetInventory("HumanTeam", 1, "See2")
		TNT1 A 0 A_Chase("", "", CHF_DONTMOVE)
		TNT1 A 0 
		goto MissileGo+2
	Missile: // Can find icefiends too
		TNT1 A 0 
		SRY3 AA 1 A_JumpIfInTargetInventory("HumanTeam",1,"See2")
//		TNT1 A 0 A_JumpIfInTargetInventory("IcefiendInvisible", 1, "See3")
		TNT1 A 0 A_Playsound("SentrySit")
		SRY3 A 1 A_JumpIfCloser(4096,"MissileGo")
		TNT1 A 0 
		goto See2
	MissileGo: // Also faster
		SRY3 A 4 A_FaceTarget
		TNT1 A 0 A_CPosRefire
		SRY3 A 4 Bright
		TNT1 A 0 A_GiveInventory("RocketCounter", 1)
		TNT1 A 0 A_CustomMissile("SentryBullet3", 40, -16)
		TNT1 A 0 A_PlaySound("SentryShoot2")
		TNT1 A 0 A_FaceTarget
		TNT1 A 0 A_CustomMissile("SentryBullet3", 40, 16)
		TNT1 A 0 A_PlaySound("SentryShoot2")
		SRY3 A 1 // A_ChangeFlag("FRIENDLY",0)
		TNT1 A 0 A_JumpIfInventory("RocketCounter", 8, "LaunchRockets")
		TNT1 A 0 A_CPosRefire
		goto MissileCheck
	LaunchRockets:
		TNT1 A 0 A_FaceTarget
		TNT1 A 0 A_CustomMissile("SentryRocket", 48, -16)
		TNT1 A 0 A_CustomMissile("SentryRocket", 48, 16)
		TNT1 A 0 A_TakeInventory("RocketCounter", 10)
		Goto MissileGo
	Death:
		TNT1 A 0 Thing_SetSpecial(0, 0, 0, 0, 0)
		TNT1 A 0 ACS_ExecuteAlways(992, 0, tid, 0)
		SRY3 A 1 A_PlaySound("SentryBlowup")
		SRY3 AAAAAAAAAAAAAAA 1 A_SpawnItemEx("CyborgExplosion", 0, 0, 32, random(-10,10), random(-10,10), random(-10,10))
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("RandomCyborgChunk", 0, 0, 36, random(-35,35), random(-35,35), random(-10,30))
		TNT1 AAAAAAAAAAA 0 A_SpawnItemEx("CyborgExplosion", 0, 0, 32, random(-5,5), random(-5,5), random(-5,5))
		TNT1 A 1
		Stop
	}
}

// Holograms
Actor SentryPlacerMissile
{
	Radius 32
	Height 64
	Speed 35
	Damage (0)
	PROJECTILE
	+FLOORHUGGER
	States
	{
	Spawn:
		TNT1 A 2
		Goto Death
	Death:
		TNT1 A 1 A_SpawnItemEx("SentryPlacer")
		Stop
	}
}

Actor SentryPlacerMissile2
{
	Radius 32
	Height 64
	Speed 35
	Damage (0)
	PROJECTILE
	+FLOORHUGGER
	States
	{
	Spawn:
		TNT1 A 2
		Goto Death
	Death:
		TNT1 A 1 A_SpawnItemEx("SentryPlacer2")
		Stop
	}
}

Actor SentryPlacerMissile3
{
	Radius 32
	Height 64
	Speed 35
	Damage (0)
	PROJECTILE
	+FLOORHUGGER
	States
	{
	Spawn:
		TNT1 A 2
		Goto Death
	Death:
		TNT1 A 1 A_SpawnItemEx("SentryPlacer3")
		Stop
	}
}

Actor SentryPlacer
{
	Radius 32
	Height 64
	Speed 0
	XScale 0.6
	YScale 0.4
	RenderStyle Translucent
	Alpha 0.8
	Translation "0:255=112:127"
	States
	{
	Spawn:
		STRY AAAAAAAAAAAA 2 A_FadeOut(0.1)
		Goto Death
	Death:
		TNT1 A 1
		Stop
	}
}

Actor SentryPlacer2
{
	Radius 32
	Height 64
	Speed 0
	XScale 0.6
	YScale 0.4
	RenderStyle Translucent
	Alpha 0.8
	Translation "0:255=112:127"
	States
	{
		Spawn:
			SRY2 AAAAAAAAAAAA 2 A_FadeOut(0.1)
		Goto Death
		Death:
			TNT1 A 1
		Stop		
	}
}

Actor SentryPlacer3
{
	Radius 32
	Height 64
	Speed 0
	XScale 0.6
	YScale 0.4
	RenderStyle Translucent
	Alpha 0.8
	Translation "0:255=112:127"
	States
	{
		Spawn:
			SRY3 AAAAAAAAAAAA 2 A_FadeOut(0.1)
		Goto Death
		Death:
			TNT1 A 1
		Stop		
	}
}

// Sentry missiles
Actor SentrySpawnerMissile
{
	Radius 16
	Height 32
	Speed 15
	Damage (0)
	PROJECTILE
	-NOGRAVITY
	States
	{
	Death:
		TNT1 A 1 A_SpawnItem("Sentry0")
		TNT1 A 1
		TNT1 A 0 A_GiveToTarget("MAKESENTRY", 1)
		Stop
	}
}

// Level 2

Actor Sentry2Spawner : SentrySpawnerMissile
{
	States
	{
	Death:
		TNT1 A 1 A_SpawnItem("Sntry0")
		TNT1 A 1
		TNT1 A 0 A_GiveToTarget("MAKESENTRY", 1)		
		Stop
	}
}

// Level 3

Actor Sentry3Spawner : SentrySpawnerMissile
{
	States
	{
	Death:
		TNT1 A 1 A_SpawnItem("Stry0")
		TNT1 A 1
		TNT1 A 0 A_GiveToTarget("MAKESENTRY", 1)		
		Stop
	}
}

// Player sentries
Actor Sentry0 : Sentry
{
	States
	{
		Spawn:
			TNT1 A 0 
			TNT1 A 0 Thing_ChangeTid(0, 1200)
			STRY A 1
		Goto Super::Spawn
	}
}

// Level 2

Actor Sntry0 : SentryLvL2
{
	States
	{
		Spawn:
			TNT1 A 0
			TNT1 A 0 Thing_ChangeTid(0, 1200)
			SRY2 A 1
		Goto Super::Spawn
	}
}

// Level 3

Actor Stry0 : SentryLvL3
{
	States
	{
		Spawn:
			TNT1 A 0
			TNT1 A 0 Thing_ChangeTid(0, 1200)
			SRY3 A 1
		Goto Super::Spawn
	}
}

Actor SentryHudData : CustomInventory
{	
	Inventory.Amount 1
	Inventory.MaxAmount 1
	+INVENTORY.AUTOACTIVATE
	States
	{
	Spawn:
		TNT1 A 1
		Stop
	Use:
		TNT1 A 1 ACS_ExecuteAlways(766, 0, 1)
		Stop
	}
}

// Sentry actors
Actor SentryBullet
{
	Radius 2
	Height 4
	Damage (8)
	Speed 44
	DamageType "SentryShoot"
	Obituary "%o was shot down by a sentry."
	PROJECTILE
	-BLOODLESSIMPACT
	States
	{
	Spawn:
		TRAC A 1
		Loop
	Death:
		TNT1 A 1 A_SpawnItemEx("BulletPuff")
		Stop
	}
}

Actor SentryBullet2 : SentryBullet
{
	Damage (10)
	Speed 52
}

Actor SentryBullet3 : SentryBullet
{
	Damage (12)
	Speed 58
}

// ShellCasing: Taken from Monster's "Zombie Survival" mod
Actor SentryCasing
{
	Height 12
	Radius 9
	Speed 4
	Scale 0.66
	PROJECTILE
	+DOOMBOUNCE
	-NOGRAVITY
	//SeeSound "splat/Shell"
	States
	{
	Spawn:
		CASE A 1
		CASE A 1 A_JumpIf(momx + momy == 0, "Remove")
		CASE ACBHEGFD 1
		Goto Spawn+1
	Death:
		CASE A 0 A_Jump(32,8)
		CASE A 0 A_Jump(37,8)
		CASE A 0 A_Jump(43,8)
		CASE A 0 A_Jump(51,8)
		CASE A 0 A_Jump(64,8)
		CASE A 0 A_Jump(85,8)
		CASE A 0 A_Jump(128,8)
		CASE A 70
		Stop
		CASE B 70
		Stop
		CASE C 70
		Stop
		CASE D 70
		Stop
		CASE E 70
		Stop
		CASE F 70
		Stop
		CASE G 70
		Stop
		CASE H 70
		Stop
	Remove:
		CASE A 1
		Stop
	}
}

Actor SentryLevelupEffect
{
	Radius 1
	Height 1
	Alpha 0.1
	Renderstyle Add
	+NOGRAVITY
	+NOINTERACTION
	States
	{
		Spawn:
			TNT1 A 0 A_PlaySound("SentryLevelUp")
			X013 ABCDEFGHIJKL 2 A_FadeIn(0.05)
			X013 MNOPQRSTUVWXYZ 2 A_FadeOut(0.04)
		Stop
	}
}
			

Actor EngineerBuilding : Inventory
{
	Inventory.Amount 1
	Inventory.MaxAmount 1
}

////////////////////////////////////////////////////////////////////////////////

Actor SparkBlood
{
	+NOBLOCKMAP
	+NOGRAVITY
	+ALLOWPARTICLES
	+RANDOMIZE
	-TELESTOMP
	+CLIENTSIDEONLY
	RenderStyle Translucent
	Alpha 0.5
	VSpeed 1
	Mass 5
	States
	{
	Spawn:
		PUFF A 0
		PUFF A 0 //A_PlaySoundEx("jitpain", "Body")
		PUFF A 0 A_SpawnItemEx("SparkEmit",0,0,0,0,0,0,0,1,0)
		PUFF A 4 bright
		PUFF B 4
		Goto Melee
	Melee:
		PUFF CD 4
		Stop
	}
}

Actor SparkEmit
{
	+NOBLOCKMAP
	+ALLOWPARTICLES
	+RANDOMIZE
	+CLIENTSIDEONLY
	-TELESTOMP
	RenderStyle Translucent
	Alpha 0.8
	States
	{
	Spawn:
		FX57 ABCDEFGHIJ 2
		Stop
	}
}

// NEW NAILGUN \\

Actor NailReload : Ammo
{
	Inventory.Amount 1
	Inventory.MaxAmount 18
	+IGNORESKILL
}

Actor NailReload2 : Ammo
{
	Inventory.Amount 1
	Inventory.MaxAmount 24
	+IGNORESKILL
}

Actor NailGunMG : Weapon
{
  Weapon.KickBack 40
  Weapon.Slotnumber 1
  Weapon.Selectionorder 20
  Weapon.AmmoType "NailReload2"
//  +WEAPON.AMMO_OPTIONAL
  +WEAPON.NOAUTOAIM
  Inventory.PickupMessage "You got the NailGun!"
  Obituary "%o tasted Nine Inch Nails of %k."
  inventory.icon "NAILGG"
  States
  {
  Spawn:
    NLMG H -1
    Loop
  Select:
    TNT1 A 0 ACS_ExecuteAlways(700, 0, WM_ENG_NAIL)
    NLMG A 1 A_Raise
	TNT1 A 0 A_Raise
    Goto Select+1
  Deselect:
    NLMG A 1 A_Lower
	TNT1 A 0 A_Lower
    Loop
  Ready:
    NLMG A 0 A_JumpIfInventory("ForceReload", 1, "Reload")
    NLMG A 1 A_WeaponReady
    Loop
  Fire:
    NLMG B 0 A_PlayWeaponSound("Weapons/NailMGFire")
    NLMG B 2 Bright A_FireCustomMissile("MGNail", 0, 0, -4, 0, 0)
	NLMG B 0 Bright A_Light2
	NLMG B 0 A_GiveInventory("NailReload2", 1)
    NLMG CA 1
	NLMG A 0 A_JumpIfInventory("NailReload2", 24, "Reload")
    NLMG D 0 A_PlayWeaponSound("Weapons/NailMGFire")
    NLMG D 2 Bright A_FireCustomMissile("MGNail", 0, 0, 5, 0, 0)
    NLMG D 0 Bright A_Light2
	NLMG B 0 A_GiveInventory("NailReload2", 1)
    NLMG EA 1
	NLMG A 0 A_JumpIfInventory("ForceReload", 1, "Reload")
	NLMG A 0 A_JumpIfInventory("NailReload2", 24, "Reload")
	NLMG A 0 A_TakeInventory("ForceReload", 1)
    NLMG E 0 A_Light0
    Goto Ready
  Reload:
      NLMG E 0 A_Light0
	  NLMG A 1 offset (6, 40)
	  NLMG A 1 offset (12, 50)
	  NLMG A 1 offset (18, 60)
	  NLMG A 1 offset (24, 70)
	  NLMG A 1 offset (30, 80)
	  NLMG A 1 offset (36, 90)
	  NLMG A 1 offset (42, 100)
	  NLMG A 1 offset (48, 110)
	  NLMG A 1 offset (54, 120)
	  NLMG A 35 Offset(54, 120) A_PlaySound("Weapons/NailReload", CHAN_WEAPON)
	  NLMG A 0 Offset(54, 120) A_TakeInventory("NailReload2", 24)
	  NLMG A 0 offset(54,120) A_TakeInventory("ForceReload", 1)
	  NLMG A 1 Offset(48, 120)
	  NLMG A 1 Offset(42, 110)
	  NLMG A 1 Offset(36, 100)
	  NLMG A 1 Offset(30, 90)
	  NLMG A 1 Offset(24, 80)
	  NLMG A 1 Offset(18, 70)
	  NLMG A 1 Offset(12, 60)
	  NLMG A 1 Offset(6, 50)
	  NLMG A 1 Offset(0, 40)
  Goto Ready
  AltFire:
    NLMG BB 0 A_PlayWeaponSound("Weapons/NailMGFire")
	NLMG I 3
    NLMG B 0 A_FireCustomMissile("MGNailFast", 0, 0, -4)
    NLMG B 0 A_FireCustomMissile("MGNailFast", 0, 0, 6) // 4   
	NLMG F 2 Bright
	NLMG B 0 A_Light2
	NLMG B 0 A_GiveInventory("NailReload2", 2)
	NLMG G 2 Bright
	NLMG I 3
	NLMG A 0 A_JumpIfInventory("ForceReload", 1, "Reload")
	NLMG A 0 A_JumpIfInventory("NailReload2", 24, "Reload")
	NLMG A 0 A_TakeInventory("ForceReload", 1)
    NLMG E 0 A_Light0
  Goto Ready
  }
}

Actor MGNail
{
  Projectile
  Radius 3
  Height 3
  Speed 60
  Damage (14)
  DamageType "EngineerNail"
  Scale 0.5
  +BloodSplatter
  SeeSound ""
  DeathSound ""
  Obituary "%o tasted Nine Inch Nails of %k."
  Decal BulletChip
  States
  {
  Spawn:
    NLPJ A 1 A_SpawnItemEx("NailBlur", 0, 0, 0, 1, 0, 0, 180, 128)
    NLPJ A 0 A_PlaySound("Weapons/NailFlight")
    Loop
  Death:
    NLPJ A 0 A_PlaySound("NailHit")
	NLPJ BCDEFG 2
    Stop
  }
}

Actor NailBlur       
{
  Height 8
  Radius 1
  Damage 0
  Scale 0.6
  Speed 0.2
  RenderStyle Translucent
  Alpha 0.75
  +NoGravity
  +DropOff
  +NoTeleport
  States
  {
  Spawn:
    NLPJ A 1 A_FadeOut(0.35)
    Loop
  }
}

Actor NailBlurFast : NailBlur
{
	Speed 0.5
}

Actor MGNailFast : MGNail
{
	Speed 70
	Damage (12)
	States
	{
	  Spawn:
		NLPJ A 1 A_SpawnItemEx("NailBlurFast", 0, 0, 0, 1, 0, 0, 180, 128)
		NLPJ A 0 A_PlaySound("Weapons/NailFlight")
		Loop
	}
}

actor NailGun : Weapon
{
  obituary "%o was pummeled by %k's Nail Gun."
  radius 20
  height 16
  Weapon.SlotNumber 1
  decal "BulletChip"
  inventory.pickupmessage "You got the Nail Gun!"
  weapon.selectionorder 21
  weapon.kickback 100
  +INVENTORY.UNDROPPABLE
  inventory.icon "NAILGG"
  +WEAPON.NOAUTOAIM
//  +WEAPON.DONTBOB
  states
  {
  Spawn:
    TNT1 A 400
    stop
  Ready:
    NLMG A 0 A_JumpIfInventory("ForceReload", 1, "Reload")
    LIBG A 1 A_WeaponReady
    loop
  Deselect: 
    LIBG A 1 A_Lower
	TNT1 A 0 A_Lower
    loop
  Select:
    TNT1 A 0 ACS_ExecuteAlways(700, 0, WM_ENG_NAIL2)
    LIBG A 1 A_Raise
	TNT1 A 0 A_Raise
    Goto Select+1
  Fire:
    LIBG D 0 A_PlayWeaponSound("EngineerNail")
    LIBG A 1 A_FireCustomMissile("Nail", random(-1,1), 0, 10, 2)
	TNT1 A 0 A_GiveInventory("NailReload", 1)
	LIBG E 1//2
	LIBG D 1//2
	LIBG C 2//2
	LIBG B 2//2
    LIBG A 2//1
	NLMG A 0 A_JumpIfInventory("ForceReload", 1, "Reload")
	NLMG A 0 A_JumpIfInventory("NailReload", 18, "Reload")
	NLMG A 0 A_TakeInventory("ForceReload", 1)
	LIBG A 1 A_ReFire
    goto Ready
  Altfire:
    LIBG D 0 A_PlayWeaponSound("EngineerNail")
	TNT1 A 0 A_GiveInventory("NailReload", 1)
    LIBG D 1 offset(12,-16) A_FireCustomMissile("Nail2", 0, 0, 10, 2, 1, 8)
	NLMG A 0 A_JumpIfInventory("ForceReload", 1, "Reload")
	NLMG A 0 A_JumpIfInventory("NailReload", 18, "Reload")
	NLMG A 0 A_TakeInventory("ForceReload", 1)
	LIBG E 1 offset(8,-6)
	LIBG D 0 A_PlayWeaponSound("EngineerNail")
	TNT1 A 0 A_GiveInventory("NailReload", 1)
	LIBG D 1 offset(4,-4) A_FireCustomMissile("Nail2", 0, 0, 10, 2, 1, 3)
	NLMG A 0 A_JumpIfInventory("ForceReload", 1, "Reload")
	NLMG A 0 A_JumpIfInventory("NailReload", 18, "Reload")
	NLMG A 0 A_TakeInventory("ForceReload", 1)
	LIBG E 1 offset(0,6)
	LIBG D 0 A_PlayWeaponSound("EngineerNail")
	TNT1 A 0 A_GiveInventory("NailReload", 1)
	LIBG D 1 offset(4,16) A_FireCustomMissile("Nail2", 0, 0, 10, 2, 1, -3)
	NLMG A 0 A_JumpIfInventory("ForceReload", 1, "Reload")
	NLMG A 0 A_JumpIfInventory("NailReload", 18, "Reload")
	NLMG A 0 A_TakeInventory("ForceReload", 1)
	LIBG E 1 offset(8,36)
	LIBG D 0 A_PlayWeaponSound("EngineerNail")
	TNT1 A 0 A_GiveInventory("NailReload", 1)
	LIBG D 1 offset(12,56) A_FireCustomMissile("Nail2", 0, 0, 10, 2, 1, -8)
	NLMG A 0 A_JumpIfInventory("ForceReload", 1, "Reload")
	NLMG A 0 A_JumpIfInventory("NailReload", 18, "Reload")
	NLMG A 0 A_TakeInventory("ForceReload", 1)
	LIBG E 18 offset(12,56)//18
	LIBG D 2 offset(10,50)
	LIBG C 2 offset(8,44)
	LIBG B 2 offset(6,38)
    LIBG B 2 offset(4,32) A_ReFire
    goto Ready
  Reload:
      NLMG E 0 A_Light0
	  LIBG A 1 offset (6, 40)
	  LIBG A 1 offset (12, 50)
	  LIBG A 1 offset (18, 60)
	  LIBG A 1 offset (24, 70)
	  LIBG A 1 offset (30, 80)
	  LIBG A 1 offset (36, 90)
	  LIBG A 1 offset (42, 100)
	  LIBG A 1 offset (48, 110)
	  LIBG A 1 offset (54, 120)
	  LIBG A 35 Offset(54, 120) A_PlaySound("Weapons/NailReload", CHAN_WEAPON)
	  NLMG A 0 Offset(54, 120) A_TakeInventory("NailReload", 18)
	  NLMG A 0 offset(54,120) A_TakeInventory("ForceReload", 1)
	  LIBG A 1 Offset(48, 120)
	  LIBG A 1 Offset(42, 110)
	  LIBG A 1 Offset(36, 100)
	  LIBG A 1 Offset(30, 90)
	  LIBG A 1 Offset(24, 80)
	  LIBG A 1 Offset(18, 70)
	  LIBG A 1 Offset(12, 60)
	  LIBG A 1 Offset(6, 50)
	  LIBG A 1 Offset(0, 40)
  Goto Ready
  }
}


actor Nail : FastProjectile
{
	translation "168:191=80:95"
	PROJECTILE
	Speed 45
	scale 0.8
	decal "BulletChip"
	damagetype "EngineerNail"
	Radius 8
	Height 4
	Damage (22)//26
	States
	{
		Spawn:
		TNT1 A 1
		NAIL A 1
		Goto Spawn+1
		Death:
		TNT1 A 1
		stop
	}
}

actor Nail2 : Nail
{
	Damage (18)//26
	Speed 75
}

actor SawLauncher : Weapon
{
  obituary "%o was ripped to shreds by %k's Buzz Saws."
  radius 20
  height 16
  //decal "BulletChip"
  inventory.pickupmessage "You got the Buzz Saw Launcher!"
  weapon.selectionorder 11
  weapon.kickback 100
  weapon.ammotype "SawAmmo"
  weapon.ammouse1 1
  weapon.ammotype2 "SawAmmo"
  weapon.ammouse2 1
  weapon.ammogive 8
  Weapon.SlotNumber 2
  +INVENTORY.UNDROPPABLE
  //Weapon.AmmoUse2 1
  //Weapon.AmmoType2 "HollyAmmo"
  inventory.icon "BLADL"
  +WEAPON.NOAUTOAIM
//  +WEAPON.DONTBOB
  states
  {
  Spawn:
    TNT1 A 400
    stop
  Ready:
    METB A 1 A_WeaponReady
    loop
  Deselect: 
	METB A 1 A_Lower
	TNT1 A 0 A_Lower
	Loop
  Select:
    TNT1 A 0 ACS_ExecuteAlways(700, 0, WM_ENG_SAW)
    METB A 1 A_Raise 
	TNT1 A 0 A_Raise
    Goto Select+1
  Fire:
   METB ABC 3
   METB D 3 A_PlayWeaponSound("SawClick")
   Goto Hold
Altfire:
    METB ABC 3
	METB D 3 A_PlayWeaponSound("SawClick")
	METB A 10  A_FireCustomMissile("BuzzSawThrown2", 0, 1, 6, 0)
    goto Ready
  Hold:
   METB D 1 
   METB D 0 A_Refire
   METB D 0 A_PlayWeaponSound("SawThrow")
   METB A 10 A_FireCustomMissile("BuzzSawThrown", 0, 1, 6, 0)
   goto Ready
  }
}

actor BuzzSawThrown
{
	PROJECTILE
	obituary "%o was ripped to shreds by %k's Buzz Saws."
	+RIPPER
	Damage (22)
	Height 8
	Radius 8
	Speed 50
	damagetype "SawBlade"
	scale 0.55
	Species "EngineerShit"
//	+BLOODLESSIMPACT
	+THRUSPECIES
	+RIPPER
	States
	{
		Spawn:
		METB E 0
		METB E 0 A_PlaySoundEx("SawAir","voice")
		METB EFGHIJKL 2
		loop
		Death:
		TNT1 A 0 A_Explode(15, 72, 0)
		METB L 0 A_SpawnItemEx("SparkBlood", 0, 0, 16, random(-5,5), random(-5,5), random(-5,5))
		stop
	}
}

actor BuzzSawThrown2
{
	PROJECTILE
	obituary "%o was ripped to shreds by %k's Buzz Saws."
	Damage (25)
	Height 8
	Radius 8
	Speed 56
	damagetype "SawBlade"
	scale 0.55
	BounceCount 4
	+BLOODLESSIMPACT
	+DOOMBOUNCE
	Species "EngineerShit"
	+THRUSPECIES
	States
	{
		Spawn:
		METB E 0
		METB E 0 A_PlaySoundEx("SawAir","voice")
		METB EFGHIJKL 2
		loop
		Death:
		TNT1 A 0 A_Explode(15, 72, 0)
		METB L 0 A_SpawnItemEx("SparkBlood", 0, 0, 16, random(-5,5), random(-5,5), random(-5,5))
		stop
	}
}

actor SawAmmo : Ammo
{
	inventory.amount 1
	inventory.maxamount 35
}

Actor AllowUpgrade : Inventory
{
	inventory.maxamount 1
}

Actor AllowSaw : Inventory
{
	inventory.maxamount 1
}

Actor AllowNail : Inventory
{
	inventory.maxamount 1
}

Actor CheckMaster : Inventory
{
	inventory.maxamount 1
}

Actor DLeveledup : Inventory
{
	inventory.maxamount 2
	+IGNORESKILL
}

Actor EngyDroneBase
{
    Health 3
    Radius 8
    Height 12
    Speed 4
    PainChance 32
	Mass 64
    MONSTER 
	SpawnID 156
    +NOGRAVITY
    +FLOATBOB
	+NOBLOOD
	+THRUGHOST
	+NEVERRESPAWN
	+PUSHABLE
	+FRIENDLY
	-COUNTKILL
	-TELESTOMP
    Obituary "%o was blasted by %k's drone!"
	SeeSound "drone/see"
	ActiveSound "drone/idle"
	PainSound "drone/pain" 
	DeathSound "drone/die" 
	Species "EngineerBuilding"
	DamageFactor "GravityObject", 0.0
	DamageFactor "SentryShoot", 0.0
	DamageFactor "Railgun", 0.0
	DamageFactor "ChokeAttack", 0.6
	DamageFactor "DefilerCloudBall", 0.0
	DamageFactor "IcefiendIcePath", 0.6
	DamageFactor "CreeperMelee", 0.3
	DamageFactor "MarinePistol", 0.0
	DamageFactor "MarineShotgun", 0.0
	DamageFactor "MarineMachineGun", 0.0
	DamageFactor "MarineGrenade", 0.0
	DamageFactor "MarineSuicideGrenade", 0.0
	DamageFactor "HunterLightningRail", 0.0
	DamageFactor "HunterIceArrow", 0.0
	DamageFactor "HunterRegularArrow", 0.0
	DamageFactor "HunterSuperIceArrow", 0.0
	DamageFactor "HunterSuperRegularArrow", 0.0
	DamageFactor "HunterSuperLightningRail", 0.0
	DamageFactor "HunterSuperFireArrow", 0.0
	DamageFactor "CyborgPlasma", 0.0
	DamageFactor "CyborgCrapPlasma", 0.0
	DamageFactor "CyborgJetpackFire", 0.0
	DamageFactor "GhostbusterProton", 0.0
	DamageFactor "GhostbusterBlood", 0.0
	DamageFactor "GhostbusterEcho", 0.0
	DamageFactor "GhostbusterSoul", 0.0
	DamageFactor "GhostbusterIceFall", 0.0
	DamageFactor "GhostbusterIceBall", 0.0
	DamageFactor "GhostbusterDefilerBall", 0.0
	DamageFactor "GhostbusterHorror", 0.0
	DamageFactor "GhostbusterExpander", 0.0
	DamageFactor "GhostbusterTrap", 0.0
	DamageFactor "WitchLaser", 0.0
	DamageFactor "DeathDart", 0.0
	DamageFactor "HeartSeeker", 0.0
	DamageFactor "FlaskT1", 0.0
	DamageFactor "FlaskT2", 0.0
	DamageFactor "FlaskT3", 0.0	
	DamageFactor "EngineerNail", 0.0
	DamageFactor "SawBlade", 0.0
	DamageFactor "WarlockFireball", 0.0
	DamageFactor "WarlockBigFireball", 0.0
	DamageFactor "WarlockIceShards", 0.0
	DamageFactor "WarlockLightning", 0.0
	DamageFactor "WarlockMagmaSmall", 0.0
	DamageFactor "WarlockNova", 0.0
	DamageFactor "PurpleMagic", 0.0
	DamageFactor "HunterNormalMagic", 0.0
	DamageFactor "HunterIceSpike", 0.0
	DamageFactor "HunterLightningMagic", 0.0
	DamageFactor "HunterFireMagic", 0.0
	DamageFactor "Maledict", 0.0
	DamageFactor "ShadowBlast", 0.0
	DamageFactor "Pulverizer", 0.0
	DamageFactor "PlaneShotgun", 0.0
	DamageFactor "PlaneVortex", 0.0
	DamageFactor "PlaneBlade", 0.0
	DamageFactor "Drone", 0.0
	DamageFactor "ProtectorMissile", 0.0
	DamageFactor "ProtectorPlasma", 0.0
	DamageFactor "ProtectorLightning", 0.0	
    States
    {
    Spawn:
		TNT1 A 0
		TNT1 A 0 A_JumpIfInventory("DLeveledup", 2, "Spawnlvl3")
		TNT1 A 0 A_JumpIfInventory("DLeveledup", 1, "Spawnlvl2")	
        DRON A 3 bright A_Look
        Loop
	SpawnLvl2:
	SpawnLvl3:
		TNT1 A 0 A_SetTranslucent(0.6)
        DRON A 3 bright A_Look
        Loop	
    See:
		TNT1 A 0 A_JumpIfInventory("DLeveledup", 2, "Seelvl3")
		TNT1 A 0 A_JumpIfInventory("DLeveledup", 1, "Seelvl2")
        DRON AAA 1 bright A_Chase
        Loop
	SeeLvl2:
		TNT1 A 0 A_JumpIfInventory("DLeveledup", 2, "Seelvl3")
		TNT1 A 0 A_SetTranslucent(0.6)
		DRON AAA 1 bright A_Chase
		Loop
	SeeLvl3:
		TNT1 A 0 A_SetTranslucent(0.6)
		TNT1 A 0 A_SpawnItemEx("DroneTrail", 0, 0, 0, 0, 0, 0, 0, SXF_TRANSFERTRANSLATION)
        DRON A 2 bright A_Chase
		TNT1 A 0 A_SpawnItemEx("DroneTrail", 0, 0, 0, 0, 0, 0, 0, SXF_TRANSFERTRANSLATION)
		DRON A 2 bright A_Chase
		TNT1 A 0 A_SpawnItemEx("DroneTrail", 0, 0, 0, 0, 0, 0, 0, SXF_TRANSFERTRANSLATION)
		DRON A 2 bright A_Chase
        Loop
	See2:
		DRON A 3 Bright A_ClearTarget
	Goto See
    Missile:
		TNT1 A 0 A_JumpIfInventory("DLeveledup", 2, "Missilelvl3")
		TNT1 A 0 A_JumpIfInventory("DLeveledup", 1, "Missilelvl2")	
		DRON A 1 Bright
		TNT1 A 0 A_JumpIfInTargetInventory("IcefiendInvisible", 1, "See2")
		TNT1 A 0 A_JumpIfInTargetInventory("IsCreeper", 1, "See2")
        DRON A 3 bright	
	MissileLoop:
        DRON D 0 bright A_CustomMissile("DroneShot",4,-12)
		DRON D 0 bright A_CustomMissile("DroneShot",4,12)
		DRON B 3 bright
    	DRON C 3 bright
		DRON D 3 bright
		DRON D 0 A_Jump(128,1)
    	Goto See
		DRON D 0 A_SpidRefire
		Loop
	MissileLvl2:
		TNT1 A 0 A_JumpIfInventory("DLeveledup", 2, "Missilelvl3")
		TNT1 A 0 A_SetTranslucent(0.6)
		DRON A 1 Bright
		TNT1 A 0 A_JumpIfInTargetInventory("IcefiendInvisible", 1, "See2")
        DRON A 3 bright
	MissileLoopLvl2:
		TNT1 A 0 A_JumpIfInventory("DLeveledup", 2, "Missilelvl3")
        DRON D 0 bright A_CustomMissile("DroneShotLvl2",4,-12)
		DRON D 0 bright A_CustomMissile("DroneShotLvl2",4,12)
		DRON B 3 bright
    	DRON C 3 bright
		DRON D 3 bright
		DRON D 0 A_Jump(128,1)
    	Goto See
		DRON D 0 A_SpidRefire
		Loop
    MissileLvl3:
		TNT1 A 0 A_SetTranslucent(0.6)	
		DRON A 1 Bright
        DRON A 3 bright
	MissileLoopLvl3:
	    TNT1 A 0 A_CustomMissile("DroneShotLvL2",4,-12)
		TNT1 A 0 A_CustomMissile("DroneShotLvL2",4,12)
        TNT1 A 0 A_CustomMissile("DroneShotLvL2",12,-12)
		TNT1 A 0 A_CustomMissile("DroneShotLvL2",12,12)
		DRON B 3 bright
    	DRON C 3 bright
		DRON D 3 bright
		DRON D 0 A_Jump(128,1)
    	Goto See
		DRON D 0 A_SpidRefire
		Loop
    Pain:
        DRON A 3 bright A_Pain
        Goto See
	Levelup:
		TNT1 A 0 A_GiveInventory("DLeveledup", 1)
	Goto See
    Death:
		TNT1 A 0 ACS_ExecuteAlways(990, 0) // Free the capacity
        DRON E 0 bright A_NoBlocking
		DRON E 0 bright A_NoGravity
		DRON E 0 bright A_Scream
		DRON E 6 bright A_SetTranslucent(1.0,0)
		DRON F 6 bright A_SetTranslucent(0.9,0)
		DRON G 6 bright A_SetTranslucent(0.8,0)
		DRON H 6 bright A_SetTranslucent(0.7,0)
		DRON I 6 bright A_SetTranslucent(0.6,0)
		DRON J 6 bright A_SetTranslucent(0.5,0)
		DRON K 6 bright A_SetTranslucent(0.4,0)
        TNT1 A 1
        Stop
    }
}

Actor DroneTrail
{
	Alpha 0.8
	Renderstyle Add
	+NOINTERACTION
	+CLIENTSIDEONLY
	
	States
	{
		Spawn:
			DRON A 1 Bright A_FadeOut(0.1)
		Loop
	}
}

actor EngyDrone : EngyDroneBase
{
	States
	{
		Spawn:
			TNT1 A 0
			TNT1 A 0 Thing_ChangeTID(0, 1500)
		Goto Super::Spawn
	}
}

actor DroneShot
{
  SeeSound "Drone/Fire"
  Speed 32
  Damage (3)
  Scale .5
  Projectile
  Obituary "%o was blasted by %k's drone!"
  DamageType "Drone"
  +THRUGHOST
  States
  {
  Spawn:
    TNT1 A 0
//	TNT1 A 0 ACS_ExecuteAlways(994, 0)
  SpawnLoop:
    DRFX ABAB 3 bright
    Loop
  Death:
    DRFX CDEFGH 4 bright
    Stop
  }
}

Actor DroneShotLvL2 : DroneShot
{
	Damage (5)
	Alpha 0.75
}

Actor GotDispenser : Inventory
{
	inventory.maxamount 1
}

Actor GotSentry : Inventory
{
	inventory.maxamount 1
}

Actor DroneCapacityIncreased : Inventory
{
	inventory.maxamount 1
}

Actor CanOneMoreDrone : Inventory
{
	inventory.maxamount 1
}

Actor Igot2Drones : Inventory // DESYNC PREVENTION THROUGH UGLY BS
{
	inventory.maxamount 1
}