Actor SentryGun
{
  obituary "%o was ventilated by an auto-sentry."
  health 300
  radius 20
  height 56
  mass 100000
  speed 0
  DamageFactor "Blood", 0.0 DamageFactor "BlueBlood", 0.0 DamageFactor "GreenBlood", 0.0
  DamageFactor "BlueBloodSplasher", 0.0
  DamageFactor "BlueSuperBloodSplasher", 0.0
  DamageFactor "bloodsplasher", 0.0    DamageFactor "tinybloodsplasher", 0.0    DamageFactor "superbloodsplasher", 0.0    DamageFactor "smallbloodsplasher", 0.0
  DamageFactor "Fatality", 5.0
  DamageFactor "Shrapnel", 0.4
  MaxTargetRange 2048
  MONSTER
  +FLOORCLIP
  +FRIENDLY
  +NOBLOOD
  +USESPECIAL
  Activation THINGSPEC_Activate
  +QUICKTORETALIATE
  +MISSILEMORE
  +MISSILEEVENMORE
  +LOOKALLAROUND
  +NEVERRESPAWN
  +STANDSTILL
  states
  {
  Spawn:
    TNT1 A 0 A_GiveInventory("TargetIsAMarine", 1)
    SENT AAAAAAAAAAAAAAAA 1 A_Look
    TNT1 A 0 A_SetAngle(angle + 45)
    SENT A 0 A_PlaySound ("Sentry/Active")
    SENT AAAAAAAAAA 1 A_Look
    TNT1 A 0 A_SetAngle(angle - 45)
    SENT AAAAAAAAAA 1 A_Look
    TNT1 A 0 A_SetAngle(angle - 45)
    SENT A 0 A_PlaySound ("Sentry/Active")
    SENT AAAAAAAAAA 1 A_Look
	TNT1 A 0 A_SetAngle(angle + 45)
    loop
  ForgetTarget:
    TNT1 A 0 A_ClearTarget
  See:
    SENT AAAAAAAAAAAAAAAA 1 A_Chase
    SENT A 0 A_PlaySound ("Sentry/Active")
    loop
  Active:
    TNT1 A 2
    TNT1 A 0 A_NoBlocking
    TNT1 A 0 A_ChangeFLag ("SHOOTABLE", 0)
    TNT1 A 0 A_ChangeFLag ("SOLID", 0)
    TNT1 A 0 A_SpawnItemEx ("SentryBox",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
    TNT1 A 0
    Stop
  Missile:
    SENT A 0 A_PlaySound ("CHAINSTA", 2)
    SENT AAAAAAAAAAAA 1 A_FaceTarget
  MissileContinue:
    TNT1 A 0 A_JumpIfInTargetInventory("TargetIsAMarine", 1, "ForgetTarget")

    SENT A 2 A_FaceTarget
    TNT1 AA 0 A_CustomMissile("HeavyMachinegunFlash",40, 10)
    TNT1 A 0 A_PlaySound("TANKMG", 1)
    SENT B 2 bright A_CustomMissile("HeavyMachinegunProjectileEnemy",40, 10)

    SENT A 2 A_FaceTarget
    TNT1 AA 0 A_CustomMissile("HeavyMachinegunFlash",40, 10)
    TNT1 A 0 A_PlaySound("TANKMG", 1)
    SENT B 2 bright A_CustomMissile("HeavyMachinegunProjectileEnemy",40, 10)

    SENT A 2 A_FaceTarget
    TNT1 AA 0 A_CustomMissile("HeavyMachinegunFlash",40, 10)
    TNT1 A 0 A_PlaySound("TANKMG", 1)
    SENT B 2 bright A_CustomMissile("HeavyMachinegunProjectileEnemy",40, 10)

    SENT A 2 A_FaceTarget
    TNT1 AA 0 A_CustomMissile("HeavyMachinegunFlash",40, 10)
    TNT1 A 0 A_PlaySound("TANKMG", 1)
    SENT B 2 bright A_CustomMissile("HeavyMachinegunProjectileEnemy",40, 10)

    SENT A 2 A_FaceTarget
    TNT1 AA 0 A_CustomMissile("HeavyMachinegunFlash",40, 10)
    TNT1 A 0 A_PlaySound("TANKMG", 1)
    SENT B 2 bright A_CustomMissile("HeavyMachinegunProjectileEnemy",40, 10)

    SENT A 2 A_FaceTarget
    TNT1 AA 0 A_CustomMissile("HeavyMachinegunFlash",40, 10)
    TNT1 A 0 A_PlaySound("TANKMG", 1)
    SENT B 2 bright A_CustomMissile("HeavyMachinegunProjectileEnemy",40, 10)

    SENT A 2 A_FaceTarget
    TNT1 AA 0 A_CustomMissile("HeavyMachinegunFlash",40, 10)
    TNT1 A 0 A_PlaySound("TANKMG", 1)
    SENT B 2 bright A_CustomMissile("HeavyMachinegunProjectileEnemy",40, 10)

    SENT A 2 A_FaceTarget
    TNT1 AA 0 A_CustomMissile("HeavyMachinegunFlash",40, 10)
    TNT1 A 0 A_PlaySound("TANKMG", 1)
    SENT B 2 bright A_CustomMissile("HeavyMachinegunProjectileEnemy",40, 10)

    SENT A 0 A_MonsterRefire(32, "See")
    goto MissileContinue
  Death:
    SENT C 1 A_PlaySoundEx ("Sentry/Death", "SoundSlot5")
    TNT1 A 0 A_NoBlocking
    TNT1 A 0 A_ChangeFlag("USESPECIAL", 0)
    SENT C 0 A_PlaySoundEx ("weapons/rocklx", "SoundSlot6")EXPL A 0 Radius_Quake (3, 8, 0, 15, 0)//(intensity, duration, damrad, tremrad, tid)
		TNT1 A 0 A_CustomMissile("ExplosionSplashSpawner")
        TNT1 A 0 A_SpawnItemEx ("DetectFloorCrater",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
	    TNT1 A 0 A_SpawnItemEx ("DetectCeilCrater",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
	    TNT1 A 0 A_SpawnItemEx ("UnderwaterExplosion",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
        TNT1 A 0 A_SpawnItemEx ("ExplosionFlareSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
        TNT1 AAA 0 A_CustomMissile ("BDExplosionparticles", 0, 0, random (0, 360), 2, random (40, 90))
		TNT1 AA 0 A_CustomMissile ("BDExplosionparticles2", 0, 0, random (0, 360), 2, random (40, 90))
		TNT1 AA 0 A_CustomMissile ("BDExplosionparticles3", 10, 0, random (0, 360), 2, random (40, 90))
		TNT1 AAA 0 A_CustomMissile ("MediumExplosionFlames", 0, 0, random (0, 360), 2, random (0, 360))
        EXPL A 0 A_CustomMissile ("BigNeoSmoke", 0, 0, random (0, 360), 2, random (0, 360))
		TNT1 A 0 A_SpawnItemEx ("RocketExplosion",0,0,13,0,0,0,0,SXF_NOCHECKPOSITION,0)
		//TNT1 A 0 A_SpawnItemEx ("RocketPenetrator",cos(-pitch)*42,0,0+(sin(pitch)*42),cos(-pitch)*40,0,sin(pitch)*40,0,SXF_TRANSFERPITCH)
		//TNT1 AA 0 A_SpawnItem("SuperExpensiveParticleSpawner")
		TNT1 A 2
		TNT1 A 0 A_SpawnItemEx ("LiquidExplosionEffectSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
		TNT1 A 0 A_PlaySound("FAREXPL", 3)
    SENT CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 8 A_CustomMissile ("PlasmaSmoke", 24, 0, random (0, 180), 2, random (0, 180))
    SENT C 200
    loop
  }
}

ACTOR SentryBox : CustomInventory
{
  +COUNTITEM
  +INVENTORY.INVBAR
  Inventory.InterHubAmount 2
  Inventory.MaxAmount 2
  Inventory.Icon "SENBB0"
  Inventory.PickupMessage "You picked up a sentry gun!"
  States
  {
  Spawn:
    SENB A -1
    Stop
  Use:
    TNT1 A 1 A_SpawnItemEx ("SentryGun", 56, 0, 8, 0, 0, 0, 0, 1)
    Stop
  }
}
