ACTOR EmergencyAmmoSatchel : CustomInventory
{
Scale 0.8
Inventory.Amount 1
Inventory.MaxAmount 5
Inventory.InterHubAmount 5
Inventory.PickupSound "pickups/iammosatchel"
Inventory.UseSound "ammosatchel/use	"
Inventory.Pickupmessage "You found an Emergency Ammo Satchel."
Tag "Ammo Satchel"
Inventory.Icon "INASA0"
+INVENTORY.INVBAR
States
{
Spawn:
      ASAT A 1
      Loop
Use:
		TNT1 A 0 A_GiveInventory("ClipBoxMapPickup", 1)
		TNT1 A 0 A_GiveInventory("ShellBoxMapPickup", 1)
		TNT1 A 0 A_GiveInventory("RocketBoxMapPickup", 1)
		TNT1 A 0 A_GiveInventory("CellBoxMapPickup", 1)
	  Stop
      } 
}

Actor PortableArmorSet : CustomInventory 
{
  +Inventory.INVBAR
  Inventory.Icon "APAIA0"
  Inventory.Amount 1
  Inventory.MaxAmount 5
  Inventory.InterHubAmount 5
  Inventory.Pickupmessage "You found yourself an armor set. Restocks Type 1 and Type 2 with a bit of armor."
  Tag "Portable Armor Set"
  States
  {
  Spawn:
    APAC A 1
	APAC B 1 
    loop
  Use:
    TNT1 A 0 A_GiveInventory ("ShellBoxMapPickup", 1)
    TNT1 A 0 A_GiveInventory ("ClipBoxMapPickup", 1)
	TNT1 A 0 A_GiveInventory ("ArmorPlate")
	stop
  }
}

ACTOR MissilePod : CustomInventory
{
   Inventory.Amount 1
   Inventory.InterHubAmount 5
   Inventory.MaxAmount 5
   Inventory.PickupSound "MPODPUP"
   Inventory.PickupMessage "Picked up a Missile Pod. Fires armor-piercing homing missiles periodically."
   Inventory.Icon "MSPDI"
   Tag "Missile Pod"
   +Inventory.INVBAR
   +FLOORCLIP
   States
   {
   Spawn:
      MSPD C 1
      Loop
   Use:
      TNT1 A 0 A_FireCustomMissile("MissilePodSet",0,0,0,0,0)
      Stop
   } 
}

ACTOR MissilePodSet
{
   Radius 3
   Height 8
   Speed 22
   +MISSILE
   +DROPOFF
   +CANBOUNCEWATER
   DONTHURTSHOOTER
   States
   {
   Spawn:
      MSPD A 1 Bright		
	  Loop
   Death:
      MSPD A 1 Bright
      MSPD A 0 A_SpawnItemEx("MissilePodEngage", 1, 0, 0, 0, 0, 0, 0, SXF_TRANSFERPOINTERS)	  
      Stop
   } 
}

ACTOR MissilePodEngage
{
   Radius 3
   Height 8
   Health 100
   Mass 25
   +FRIENDLY
   -SHOOTABLE
   +NOBLOOD
   +QUICKTORETALIATE
   +INVULNERABLE
   +NOTARGET
   +LOOKALLAROUND
   +FOILINVUL
   +DONTREFLECT
   +FORCERADIUSDMG
   +BRIGHT
   Species "Player"
   ExplosionDamage 60
   ExplosionRadius 80
   States
   {
   Spawn:
      MSPD A 10
      Goto See
   See:
      MSPD A 60
	  TNT1 A 0 A_AlertMonsters
	  MSPD B 2
	  TNT1 A 0 A_PlaySound("VRKTLNCH")
	  TNT1 A 0 A_SpawnItemEx("VerticalPodMissile", 0, 0, 36, 0, 0, 0, 0, SXF_TRANSFERPOINTERS)
	  MSPD A 6 
	  MSPD B 2
	  TNT1 A 0 A_PlaySound("VRKTLNCH")
	  TNT1 A 0 A_SpawnItemEx("VerticalPodMissile", 0, 0, 36, 0, 0, 0, 0, SXF_TRANSFERPOINTERS)
	  MSPD A 6 
	  MSPD B 2
	  TNT1 A 0 A_PlaySound("VRKTLNCH")
	  TNT1 A 0 A_SpawnItemEx("VerticalPodMissile", 0, 0, 36, 0, 0, 0, 0, SXF_TRANSFERPOINTERS)  
	  MSPD A 50
	  MSPD B 2
	  TNT1 A 0 A_PlaySound("VRKTLNCH")
	  TNT1 A 0 A_SpawnItemEx("VerticalPodMissile", 0, 0, 36, 0, 0, 0, 0, SXF_TRANSFERPOINTERS)
	  MSPD A 6 
	  MSPD B 2
	  TNT1 A 0 A_PlaySound("VRKTLNCH")
	  TNT1 A 0 A_SpawnItemEx("VerticalPodMissile", 0, 0, 36, 0, 0, 0, 0, SXF_TRANSFERPOINTERS)
	  MSPD A 6 
	  MSPD B 2
	  TNT1 A 0 A_PlaySound("VRKTLNCH")
	  TNT1 A 0 A_SpawnItemEx("VerticalPodMissile", 0, 0, 36, 0, 0, 0, 0, SXF_TRANSFERPOINTERS)	  
	  MSPD A 50
	  MSPD B 2
	  TNT1 A 0 A_PlaySound("VRKTLNCH")
	  TNT1 A 0 A_SpawnItemEx("VerticalPodMissile", 0, 0, 36, 0, 0, 0, 0, SXF_TRANSFERPOINTERS)
	  MSPD A 6 
	  MSPD B 2
	  TNT1 A 0 A_PlaySound("VRKTLNCH")
	  TNT1 A 0 A_SpawnItemEx("VerticalPodMissile", 0, 0, 36, 0, 0, 0, 0, SXF_TRANSFERPOINTERS)
	  MSPD A 6 
	  MSPD B 2
	  TNT1 A 0 A_PlaySound("VRKTLNCH")
	  TNT1 A 0 A_SpawnItemEx("VerticalPodMissile", 0, 0, 36, 0, 0, 0, 0, SXF_TRANSFERPOINTERS)	  
	  MSPD A 50
	  MSPD B 2
	  TNT1 A 0 A_PlaySound("VRKTLNCH")
	  TNT1 A 0 A_SpawnItemEx("VerticalPodMissile", 0, 0, 36, 0, 0, 0, 0, SXF_TRANSFERPOINTERS)
	  MSPD A 6 
	  MSPD B 2
	  TNT1 A 0 A_PlaySound("VRKTLNCH")
	  TNT1 A 0 A_SpawnItemEx("VerticalPodMissile", 0, 0, 36, 0, 0, 0, 0, SXF_TRANSFERPOINTERS)
	  MSPD A 6 
	  MSPD B 2
	  TNT1 A 0 A_PlaySound("VRKTLNCH")
	  TNT1 A 0 A_SpawnItemEx("VerticalPodMissile", 0, 0, 36, 0, 0, 0, 0, SXF_TRANSFERPOINTERS)	  
	  MSPD A 30	
      Goto Death
   Missile:
      Stop
   Death:
      TNT1 A 0
      TNT1 A 0 A_SpawnItemEx("MPodExplosion",0,0,5,0,0,0,0,32)
	  TNT1 A 0 A_SpawnItemEx("MPodExplosionExtra",0,0,5,0,0,0,0,32) //Extra explosion for a simple, but effective, glow effect.
	  TNT1 A 0 A_SpawnItemEx("ExplosiveGlowBig",0,0,30,0,0,0,0,32)
      Stop
   }
}

ACTOR VerticalPodMissile //Launched from the pod first.
{
    Radius 3
    Height 5
    Speed 0
    Reactiontime 20
    PROJECTILE
    +GRENADETRAIL
    +THRUACTORS
    -SHOOTABLE
	+NOTARGET
	+Friendly
	Species "Player"
   States
   {
   Spawn:   
      PSMS A 1 Bright
	  TNT1 A 0 ThrustThingZ(0,23,0,0)
	  TNT1 A 0 A_CountDown
      Loop
   Death:
      TNT1 A 0
      TNT1 A 0 A_CustomMissile("HomingPodMissile",0,0,0,CMF_AIMDIRECTION)
      Stop
   }
}

ACTOR HomingPodMissile //Created from the vertical missiles.
{
    Radius 6
    Height 6
    Speed 20
	Damage 15
    PROJECTILE
    +ROCKETTRAIL
	+SEEKERMISSILE
    -SHOOTABLE
	+NOTARGET
	+Friendly
	+FOILINVUL
   +DONTREFLECT
   +FORCERADIUSDMG
	Species "Player"
	obituary "%k rained death from above onto %o."
   States
   {
   Spawn:     
      TNT1 A 0
      TNT1 A 0 A_SeekerMissile(10,20,SMF_LOOK,256|SMF_PRECISE)
	  TNT1 A 0 A_SeekerMissile(10,20,SMF_LOOK,256|SMF_PRECISE)
	  TNT1 A 0 A_SeekerMissile(10,20,SMF_LOOK,256|SMF_PRECISE)
	  TNT1 A 0 A_SeekerMissile(10,20,SMF_LOOK,256|SMF_PRECISE)
	  TNT1 A 0 A_SeekerMissile(10,20,SMF_LOOK,256|SMF_PRECISE)
	  TNT1 A 0 A_SeekerMissile(10,20,SMF_LOOK,256|SMF_PRECISE)
      PMSL AAAA 1 Bright
	  TNT1 A 0 A_SpawnItemEx("MissileGlow", 0, 0, 0, 0, 0, 0, 0, 5)
	  TNT1 A 0 A_SpawnItemEx("BulletPuff", 0, 0, 0, 0, 0, 0, 0, 5)
	  TNT1 A 0 A_SeekerMissile(10,20,SMF_LOOK,256|SMF_PRECISE)
      Goto Spawn+8
   Death:
      TNT1 A 0
	  TNT1 A 0 A_SpawnItemEx("PodMissileExplosion",0,0,0,0,0,0,0,32)
	  TNT1 A 0 A_SpawnItemEx("ExplosiveGlowSmall",0,0,5,0,0,0,0,32)
      Stop
   }
}

ACTOR MPodExplosion
{
    Projectile
	+BRIGHT
	+FORCERADIUSDMG
	+FOILINVUL
   +DONTREFLECT
    Radius 4
    Height 4
    Speed 0
    RenderStyle Add
    Alpha 0.90
	Scale 0.5
    ExplosionDamage 45
    ExplosionRadius 100
	Species "Player"
	obituary "%k rained death from above onto %o."
   States
   {
   Spawn:
	TNT1 A 0
	Goto Death
   Death:
    TNT1 A 0
    TNT1 A 0 A_PlaySound("MPODXP")
	TNT1 A 0 A_Explode
	MMXP LMNOPQRSTUVWX 2
	MMXP Y 2 A_SetTranslucent(0.4,1)
	MMXP Z 2 A_SetTranslucent(0.2,1)
	Stop
}
}

ACTOR MPodExplosionExtra //Same, but no damage. To achieve glow effect.
{
    Projectile
	+BRIGHT
    Radius 4
    Height 4
    Speed 0
    RenderStyle Add
    Alpha 0.90
	Scale 0.5
   States
   {
   Spawn:
	TNT1 A 0
	Goto Death
   Death:
    TNT1 A 0
    TNT1 A 0
	TNT1 A 0
	MMXP LMNOPQRSTUVWX 2
	MMXP Y 2 A_SetTranslucent(0.4,1)
	MMXP Z 2 A_SetTranslucent(0.2,1)
	Stop
}
}

ACTOR PodMissileExplosion
{
    Projectile
	+BRIGHT
	+FORCERADIUSDMG
    Radius 4
    Height 4
    Speed 0
    RenderStyle Add
    Alpha 0.80
	Scale 1.2
    ExplosionDamage 58
    ExplosionRadius 120
	obituary "%k rained death from above onto %o."
   States
   {
   Spawn:
	TNT1 A 0
	Goto Death
   Death:
    TNT1 A 0
	TNT1 A 0 A_PlaySound("MISSEXP",0)
	TNT1 A 0 A_Explode
	MEXP ABCD 1
	MEXP E 1 A_SetTranslucent(0.4,1)
	MEXP F 1 A_SetTranslucent(0.2,1)
	Stop
}
}

ACTOR MissileGlow  //Aesthetic flare effect for missile flight.
{
    +NOINTERACTION
    RenderStyle Add
    Alpha 0.4
    Scale 0.5
   States
{
   Spawn:
	MGLW A 2 Bright
	Stop
}
}

ACTOR ExplosiveGlowBig  //Aesthetic explosive effect for the pod.
{
    +NOINTERACTION
    RenderStyle Add
    Alpha 0.4
    Scale 0.5
   States
{
   Spawn:
	XGLW AA 2 Bright
	XGLW A 3 A_SetScale(0.6)
    XGLW A 3 A_SetScale(0.7)
    XGLW A 3 A_SetScale(0.8)
	XGLW A 3 A_SetScale(0.9)
	TNT1 A 0 A_SetTranslucent(0.3,1)
	XGLW A 3 A_SetScale(1.1)
	TNT1 A 0 A_SetTranslucent(0.2,1)
	XGLW A 3 A_SetScale(1.10)
	Stop
}
}

ACTOR ExplosiveGlowSmall  //Aesthetic explosive effect for the missiles.
{
    +NOINTERACTION
    RenderStyle Add
    Alpha 0.4
    Scale 0.3
   States
{
   Spawn:
	XGLW AA 2 Bright
	XGLW A 1 Bright A_SetScale(0.4) 
    XGLW A 1 Bright A_SetScale(0.6) 
	Stop
}
}

Actor PortableFieldKit : CustomInventory
{
  Tag "Portable Field Kit"
  Inventory.PickupMessage "You got a field kit! Can be used to overheal past max health!"
  Inventory.PickupSound "Misc/I_PkUp"
  Inventory.UseSound "FieldKit/Use"
  Inventory.Icon "FKITC0"
  Inventory.Amount 1
  Inventory.MaxAmount 15
  Inventory.InterHubAmount 15
  +Inventory.InvBar
  States
  {
  Spawn:
    FKIT AB 10
	Loop
    Use:
	TNT1 A 0 ACS_NamedExecuteWithResult("GiveHealthWithItem",15,0)
	Stop
  }
}

//Marine Supply Pack
Actor SupplyPack : CustomInventory
{
//$Category Powerups
//$Title Marine Supply Pack
 Radius 20
 Height 16
 Inventory.PickupSound "Misc/P_PkUp"
 Inventory.PickupMessage "You found an Emergency Supply Pack! Contains a backpack, a Medikit, and a Large Armor Plate!"
+COUNTITEM
+INVENTORY.ALWAYSPICKUP
Inventory.MaxAmount 0
 States
 {
  Spawn:
  XPAK A 7 Bright
  XPAK B 6
  Loop
  Pickup:
  TNT1 A 0 A_GiveInventory("BackpackMapPickup")
  TNT1 A 0 A_GiveInventory("PackMedikit")
  TNT1 A 0 A_GiveInventory("PackArmor")
  Stop
  }
 }
//Marine Pack Armor
Actor PackArmor : CustomInventory
{
  +INVENTORY.INVBAR
  Tag "Emergency Armor"
  Inventory.UseSound "items/MarineKitArmor"
  Inventory.Icon "PAMIA0"
  Inventory.PickupMessage "You found some Emergency Armor!"
  Inventory.InterHubAmount 5
  Inventory.MaxAmount 5
  States
  {
  Spawn:
    XPAM A 1
    Loop
	Use:
	TNT1 A 0 A_JumpIfInventory("BasicArmor",200,"Full")
	TNT1 A 0 A_GiveInventory("LargeArmorPlate")
	Stop
  Full:
	TNT1 A 0 
	Fail
  }
}
//Marine Pack Medikit
Actor PackMedikit : CustomInventory
{
  Tag "Emergency MediKit"
  +INVENTORY.INVBAR
  Inventory.UseSound "items/MarineKitHealth"
  Inventory.PickupMessage "You found an Emergency MediKit!"
  Inventory.Icon "PMKIA0"
  Inventory.InterHubAmount 5
  Inventory.MaxAmount 5

  States
  {
  Spawn:
    XPMK A 1
    Loop
  Use:
    TNT1 A 0 ACS_NamedExecuteWithResult("GiveHealthWithItem",50,0)
	Stop
  }
}

ACTOR PortShCount : Inventory
{
  Inventory.MaxAmount 400
  Inventory.Amount 1
}

actor PShieldPart
{
  Radius 10
  Height 16
  Scale 0.5
  RenderStyle None
  Alpha 0.25
  Bloodtype "PShieldHit"
  Species "Player"
  -Solid
  +Friendly
  +SHOOTABLE
  +NOGRAVITY
  +NOTELEPORT
  +NODAMAGE
  +NORADIUSDMG
  +DONTRIP
  +NOBLOODDECALS
  +FLOORCLIP
  //+REFLECTIVE
  +GHOST	//Give projectiles that you wish to pass through the shield THRUGHOST flag
  States
  {
  Spawn:
    HEXA A 4 bright
    stop
  Death:
    TNT1 A 2
    stop
  }
}

actor PShieldPartVisual
{
  Radius 8
  Height 8
  Scale 0.5
  RenderStyle Add	//Fuzzy looks great in software mode
  Alpha 0.25
  +NOINTERACTION
  +CLIENTSIDEONLY
  +FLOORCLIP
  States
  {
  Spawn:
    HEXA A 4 bright
    stop
  Death:
    TNT1 A 2
    stop
  }
}

actor PShieldSpawner5up
{
  Radius 1
  Height 1
  +NOGRAVITY
  +NOINTERACTION
  States
  {
  Spawn:
    TNT1 A 0
    TNT1 A 1
    TNT1 A 0 A_SpawnItemEx ("PShieldPart", 0, 0, 0, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("PShieldPart", 0, 0, 16, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("PShieldPart", 0, 0, 32, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("PShieldPart", 0, 0, 48, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("PShieldPart", 0, 0, 64, 0, 0, 0, 0, 32)
    //TNT1 A 0 A_SpawnItemEx ("ShieldPartVisual", 0, 0, 0, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("PShieldPartVisual", 0, 0, 16, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("PShieldPartVisual", 0, 0, 32, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("PShieldPartVisual", 0, 0, 48, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("PShieldPartVisual", 0, 0, 64, 0, 0, 0, 0, 32)
    stop
  }
}

actor PShieldSpawner4up
{
  Radius 1
  Height 1
  +NOGRAVITY
  +NOINTERACTION
  States
  {
  Spawn:
    TNT1 A 0
    TNT1 A 1
    TNT1 A 0 A_SpawnItemEx ("PShieldPart", 0, 0, 8, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("PShieldPart", 0, 0, 24, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("PShieldPart", 0, 0, 40, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("PShieldPart", 0, 0, 56, 0, 0, 0, 0, 32)
    //TNT1 A 0 A_SpawnItemEx ("ShieldPartVisual", 0, 0, 8, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("PShieldPartVisual", 0, 0, 24, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("PShieldPartVisual", 0, 0, 40, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("PShieldPartVisual", 0, 0, 56, 0, 0, 0, 0, 32)
    stop
  }
}

actor PShieldSpawner3up
{
  Radius 1
  Height 1
  +NOGRAVITY
  +NOINTERACTION
  States
  {
  Spawn:
    TNT1 A 0
    TNT1 A 1
    TNT1 A 0 A_SpawnItemEx ("PShieldPart", 0, 0, 16, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("PShieldPart", 0, 0, 32, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("PShieldPart", 0, 0, 48, 0, 0, 0, 0, 32)
    //TNT1 A 0 A_SpawnItemEx ("ShieldPartVisual", 0, 0, 16, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("PShieldPartVisual", 0, 0, 32, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("PShieldPartVisual", 0, 0, 48, 0, 0, 0, 0, 32)
    stop
  }
}

actor PShieldHit
{
  Radius 1
  Height 1
  Scale 0.5
  Renderstyle Add
  +NOGRAVITY
  +NOINTERACTION
  States
  {
  Spawn:
    FHIT A 0 bright
    FHIT A 1 bright A_Stop
    FHIT A 0 bright A_PlaySound ("ForceBarrier/Hit")
    FHIT BCDEFGH 1 bright
    stop
  }
}

//33% red part//

actor RedAPShieldPart
{
  Radius 10
  Height 16
  Scale 0.5
  RenderStyle None
  Alpha 0.25
  Bloodtype "RedAPShieldHit"
  Species "Player"
  -Solid
  +Friendly
  +SHOOTABLE
  +NOGRAVITY
  +NOTELEPORT
  +NODAMAGE
  +NORADIUSDMG
  +DONTRIP
  +NOBLOODDECALS
  +FLOORCLIP
  //+REFLECTIVE
  +GHOST	//Give projectiles that you wish to pass through the shield THRUGHOST flag
  States
  {
  Spawn:
    HEXP A 4 bright
    stop
  Death:
    TNT1 A 2
    stop
  }
}

actor RedAPShieldPartVisual
{
  Radius 8
  Height 8
  Scale 0.5
  RenderStyle Add	//Fuzzy looks great in software mode
  Alpha 0.25
  +NOINTERACTION
  +CLIENTSIDEONLY
  +FLOORCLIP
  States
  {
  Spawn:
    HEXP A 4 bright
    stop
  Death:
    TNT1 A 2
    stop
  }
}

actor RedAPShieldSpawner5up
{
  Radius 1
  Height 1
  +NOGRAVITY
  +NOINTERACTION
  States
  {
  Spawn:
    TNT1 A 0
    TNT1 A 1
    TNT1 A 0 A_SpawnItemEx ("RedAPShieldPart", 0, 0, 0, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("RedAPShieldPart", 0, 0, 16, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("RedAPShieldPart", 0, 0, 32, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("RedAPShieldPart", 0, 0, 48, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("RedAPShieldPart", 0, 0, 64, 0, 0, 0, 0, 32)
    //TNT1 A 0 A_SpawnItemEx ("ShieldPartVisual", 0, 0, 0, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("RedAPShieldPartVisual", 0, 0, 16, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("RedAPShieldPartVisual", 0, 0, 32, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("RedAPShieldPartVisual", 0, 0, 48, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("RedAPShieldPartVisual", 0, 0, 64, 0, 0, 0, 0, 32)
    stop
  }
}

actor RedAPShieldSpawner4up
{
  Radius 1
  Height 1
  +NOGRAVITY
  +NOINTERACTION
  States
  {
  Spawn:
    TNT1 A 0
    TNT1 A 1
    TNT1 A 0 A_SpawnItemEx ("RedAPShieldPart", 0, 0, 8, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("RedAPShieldPart", 0, 0, 24, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("RedAPShieldPart", 0, 0, 40, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("RedAPShieldPart", 0, 0, 56, 0, 0, 0, 0, 32)
    //TNT1 A 0 A_SpawnItemEx ("ShieldPartVisual", 0, 0, 8, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("RedAPShieldPartVisual", 0, 0, 24, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("RedAPShieldPartVisual", 0, 0, 40, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("RedAPShieldPartVisual", 0, 0, 56, 0, 0, 0, 0, 32)
    stop
  }
}

actor RedAPShieldSpawner3up
{
  Radius 1
  Height 1
  +NOGRAVITY
  +NOINTERACTION
  States
  {
  Spawn:
    TNT1 A 0
    TNT1 A 1
    TNT1 A 0 A_SpawnItemEx ("RedAPShieldPart", 0, 0, 16, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("RedAPShieldPart", 0, 0, 32, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("RedAPShieldPart", 0, 0, 48, 0, 0, 0, 0, 32)
    //TNT1 A 0 A_SpawnItemEx ("ShieldPartVisual", 0, 0, 16, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("RedAPShieldPartVisual", 0, 0, 32, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("RedAPShieldPartVisual", 0, 0, 48, 0, 0, 0, 0, 32)
    stop
  }
}

actor RedAPShieldHit
{
  Radius 1
  Height 1
  Scale 0.5
  Renderstyle Add
  +NOGRAVITY
  +NOINTERACTION
  States
  {
  Spawn:
    FHIP A 0 bright
    FHIP A 1 bright A_Stop
    FHIP A 0 bright A_PlaySound ("ForceBarrier/Hit")
    FHIP BCDEFGH 1 bright
    stop
  }
}

//66% red part//

actor RedBPShieldPart
{
  Radius 10
  Height 16
  Scale 0.5
  RenderStyle None
  Alpha 0.25
  Bloodtype "RedBPShieldHit"
  Species "Player"
  -Solid
  +Friendly
  +SHOOTABLE
  +NOGRAVITY
  +NOTELEPORT
  +NODAMAGE
  +NORADIUSDMG
  +DONTRIP
  +NOBLOODDECALS
  +FLOORCLIP
  //+REFLECTIVE
  +GHOST	//Give projectiles that you wish to pass through the shield THRUGHOST flag
  States
  {
  Spawn:
    HEXQ A 4 bright
    stop
  Death:
    TNT1 A 2
    stop
  }
}

actor RedBPShieldPartVisual
{
  Radius 8
  Height 8
  Scale 0.5
  RenderStyle Add	//Fuzzy looks great in software mode
  Alpha 0.25
  +NOINTERACTION
  +CLIENTSIDEONLY
  +FLOORCLIP
  States
  {
  Spawn:
    HEXQ A 4 bright
    stop
  Death:
    TNT1 A 2
    stop
  }
}

actor RedBPShieldSpawner5up
{
  Radius 1
  Height 1
  +NOGRAVITY
  +NOINTERACTION
  States
  {
  Spawn:
    TNT1 A 0
    TNT1 A 1
    TNT1 A 0 A_SpawnItemEx ("RedBPShieldPart", 0, 0, 0, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("RedBPShieldPart", 0, 0, 16, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("RedBPShieldPart", 0, 0, 32, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("RedBPShieldPart", 0, 0, 48, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("RedBPShieldPart", 0, 0, 64, 0, 0, 0, 0, 32)
    //TNT1 A 0 A_SpawnItemEx ("ShieldPartVisual", 0, 0, 0, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("RedBPShieldPartVisual", 0, 0, 16, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("RedBPShieldPartVisual", 0, 0, 32, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("RedBPShieldPartVisual", 0, 0, 48, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("RedBPShieldPartVisual", 0, 0, 64, 0, 0, 0, 0, 32)
    stop
  }
}

actor RedBPShieldSpawner4up
{
  Radius 1
  Height 1
  +NOGRAVITY
  +NOINTERACTION
  States
  {
  Spawn:
    TNT1 A 0
    TNT1 A 1
    TNT1 A 0 A_SpawnItemEx ("RedBPShieldPart", 0, 0, 8, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("RedBPShieldPart", 0, 0, 24, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("RedBPShieldPart", 0, 0, 40, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("RedBPShieldPart", 0, 0, 56, 0, 0, 0, 0, 32)
    //TNT1 A 0 A_SpawnItemEx ("ShieldPartVisual", 0, 0, 8, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("RedBPShieldPartVisual", 0, 0, 24, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("RedBPShieldPartVisual", 0, 0, 40, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("RedBPShieldPartVisual", 0, 0, 56, 0, 0, 0, 0, 32)
    stop
  }
}

actor RedBPShieldSpawner3up
{
  Radius 1
  Height 1
  +NOGRAVITY
  +NOINTERACTION
  States
  {
  Spawn:
    TNT1 A 0
    TNT1 A 1
    TNT1 A 0 A_SpawnItemEx ("RedBPShieldPart", 0, 0, 16, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("RedBPShieldPart", 0, 0, 32, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("RedBPShieldPart", 0, 0, 48, 0, 0, 0, 0, 32)
    //TNT1 A 0 A_SpawnItemEx ("ShieldPartVisual", 0, 0, 16, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("RedBPShieldPartVisual", 0, 0, 32, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("RedBPShieldPartVisual", 0, 0, 48, 0, 0, 0, 0, 32)
    stop
  }
}

actor RedBPShieldHit
{
  Radius 1
  Height 1
  Scale 0.5
  Renderstyle Add
  +NOGRAVITY
  +NOINTERACTION
  States
  {
  Spawn:
    FHIQ A 0 bright
    FHIQ A 1 bright A_Stop
    FHIQ A 0 bright A_PlaySound ("ForceBarrier/Hit")
    FHIQ BCDEFGH 1 bright
    stop
  }
}

//100% red part//

actor RedPShieldPart
{
  Radius 10
  Height 16
  Scale 0.5
  RenderStyle None
  Alpha 0.25
  Bloodtype "RedPShieldHit"
  Species "Player"
 -Solid
  +Friendly
  +SHOOTABLE
  +NOGRAVITY
  +NOTELEPORT
  +NODAMAGE
  +NORADIUSDMG
  +DONTRIP
  +NOBLOODDECALS
  +FLOORCLIP
  //+REFLECTIVE
  +GHOST	//Give projectiles that you wish to pass through the shield THRUGHOST flag
  States
  {
  Spawn:
    HEXR A 4 bright
    stop
  Death:
    TNT1 A 2
    stop
  }
}

actor RedPShieldPartVisual
{
  Radius 8
  Height 8
  Scale 0.5
  RenderStyle Add	//Fuzzy looks great in software mode
  Alpha 0.25
  +NOINTERACTION
  +CLIENTSIDEONLY
  +FLOORCLIP
  States
  {
  Spawn:
    HEXR A 4 bright
    stop
  Death:
    TNT1 A 2
    stop
  }
}

actor RedPShieldSpawner5up
{
  Radius 1
  Height 1
  +NOGRAVITY
  +NOINTERACTION
  States
  {
  Spawn:
    TNT1 A 0
    TNT1 A 1
    TNT1 A 0 A_SpawnItemEx ("RedPShieldPart", 0, 0, 0, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("RedPShieldPart", 0, 0, 16, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("RedPShieldPart", 0, 0, 32, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("RedPShieldPart", 0, 0, 48, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("RedPShieldPart", 0, 0, 64, 0, 0, 0, 0, 32)
    //TNT1 A 0 A_SpawnItemEx ("ShieldPartVisual", 0, 0, 0, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("RedPShieldPartVisual", 0, 0, 16, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("RedPShieldPartVisual", 0, 0, 32, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("RedPShieldPartVisual", 0, 0, 48, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("RedPShieldPartVisual", 0, 0, 64, 0, 0, 0, 0, 32)
    stop
  }
}

actor RedPShieldSpawner4up
{
  Radius 1
  Height 1
  +NOGRAVITY
  +NOINTERACTION
  States
  {
  Spawn:
    TNT1 A 0
    TNT1 A 1
    TNT1 A 0 A_SpawnItemEx ("RedPShieldPart", 0, 0, 8, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("RedPShieldPart", 0, 0, 24, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("RedPShieldPart", 0, 0, 40, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("RedPShieldPart", 0, 0, 56, 0, 0, 0, 0, 32)
    //TNT1 A 0 A_SpawnItemEx ("ShieldPartVisual", 0, 0, 8, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("RedPShieldPartVisual", 0, 0, 24, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("RedPShieldPartVisual", 0, 0, 40, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("RedPShieldPartVisual", 0, 0, 56, 0, 0, 0, 0, 32)
    stop
  }
}

actor RedPShieldSpawner3up
{
  Radius 1
  Height 1
  +NOGRAVITY
  +NOINTERACTION
  States
  {
  Spawn:
    TNT1 A 0
    TNT1 A 1
    TNT1 A 0 A_SpawnItemEx ("RedPShieldPart", 0, 0, 16, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("RedPShieldPart", 0, 0, 32, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("RedPShieldPart", 0, 0, 48, 0, 0, 0, 0, 32)
    //TNT1 A 0 A_SpawnItemEx ("ShieldPartVisual", 0, 0, 16, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("RedPShieldPartVisual", 0, 0, 32, 0, 0, 0, 0, 32)
    TNT1 A 0 A_SpawnItemEx ("RedPShieldPartVisual", 0, 0, 48, 0, 0, 0, 0, 32)
    stop
  }
}

actor RedPShieldHit
{
  Radius 1
  Height 1
  Scale 0.5
  Renderstyle Add
  +NOGRAVITY
  +NOINTERACTION
  States
  {
  Spawn:
    FHIR A 0 bright
    FHIR A 1 bright A_Stop
    FHIR A 0 bright A_PlaySound ("ForceBarrier/Hit")
    FHIR BCDEFGH 1 bright
    stop
  }
}

ACTOR DeployableShield : CustomInventory
{
  +COUNTITEM
  +INVENTORY.INVBAR
  Inventory.Amount 1
  Inventory.MaxAmount 3
  Inventory.InterHubAmount 3
  Inventory.Icon "DEPIA0"
  Tag "Portable Shield"
  Inventory.PickupMessage "You picked up a deployable shield!"
  States
  {
  Spawn:
    DEPS A -1
    Stop
  Use:
    TNT1 A 1 A_SpawnItemEx ("ActiveShield", 56, 0, 8, 0, 0, 0, 0, 1)
    Stop
  }
}

actor ActiveShield
{
  -SOLID
  -SHOOTABLE
  +Friendly
  Species "Player"
  States
  {
  Spawn:
    TNT1 A 1
	TNT1 A 0 A_PlaySound ("ForceBarrier/On")
	DEPS A 26
	DEPS E 3
	DEPS D 3
	DEPS C 3
	goto See
  See:
    DEPS B 1
	TNT1 A 0 A_PlaySound ("ForceBarrier/Loop")
	TNT1 A 0 A_SpawnItemEx ("ShieldSpawner2")
    DEPS B 2
	TNT1 A 0 A_GiveInventory("PortShCount", 1)
	TNT1 A 0 A_JumpIfInventory ("PortShCount", 100, "See2")
    Loop
  See2:
    DEPS C 1
	TNT1 A 0 A_PlaySound ("ForceBarrier/Loop")
	TNT1 A 0 A_SpawnItemEx ("RedAShieldSpawner2")
    DEPS C 2
	TNT1 A 0 A_GiveInventory("PortShCount", 1)
	TNT1 A 0 A_JumpIfInventory ("PortShCount", 200, "See3")
    Loop
  See3:
    DEPS D 1
	TNT1 A 0 A_PlaySound ("ForceBarrier/Loop")
	TNT1 A 0 A_SpawnItemEx ("RedBShieldSpawner2")
    DEPS D 2
	TNT1 A 0 A_GiveInventory("PortShCount", 1)
	TNT1 A 0 A_JumpIfInventory ("PortShCount", 300, "See4")
    Loop
  See4:
    DEPS E 1
	TNT1 A 0 A_PlaySound ("ForceBarrier/Loop")
	TNT1 A 0 A_SpawnItemEx ("RedShieldSpawner2")
    DEPS E 2
	TNT1 A 0 A_GiveInventory("PortShCount", 1)
	TNT1 A 0 A_JumpIfInventory ("PortShCount", 400, "Death")
    Loop
  Death:
    DESP A 0 A_PlaySound ("ForceBarrier/Off")
	DEPS A 70
	DEPS A 3 A_FadeOut (0.05)
    goto Death+2
  }
}

actor ShieldSpawner2
{
  Radius 1
  Height 1
  +NOGRAVITY
  +NOINTERACTION
  +Friendly
  +SHOOTABLE
  +NOGRAVITY
  +NOTELEPORT
  +NODAMAGE
  +DONTRIP
  +NOBLOODDECALS
  +FLOORCLIP
  //+REFLECTIVE
  +GHOST	
  States
  {
  Spawn:
    TNT1 A 1
    TNT1 A 0 A_SpawnItemEx ("PShieldSpawner5up", 8, 0, 0)
    TNT1 A 0 A_SpawnItemEx ("PShieldSpawner4up", 8, 24, 0)
    TNT1 A 0 A_SpawnItemEx ("PShieldSpawner4up", 8, -24, 0)
    TNT1 A 0 A_SpawnItemEx ("PShieldSpawner3up", 8, 48, 0)
    TNT1 A 0 A_SpawnItemEx ("PShieldSpawner3up", 8, -48, 0)
    stop
  }
}

actor RedShieldSpawner2
{
  Radius 1
  Height 1
  +NOGRAVITY
  +NOINTERACTION
  +Friendly
  +SHOOTABLE
  +NOGRAVITY
  +NOTELEPORT
  +NODAMAGE
  +DONTRIP
  +NOBLOODDECALS
  +FLOORCLIP
  //+REFLECTIVE
  +GHOST
  States
  {
  Spawn:
    TNT1 A 1
    TNT1 A 0 A_SpawnItemEx ("RedPShieldSpawner5up", 8, 0, 0)
    TNT1 A 0 A_SpawnItemEx ("RedPShieldSpawner4up", 8, 24, 0)
    TNT1 A 0 A_SpawnItemEx ("RedPShieldSpawner4up", 8, -24, 0)
    TNT1 A 0 A_SpawnItemEx ("RedPShieldSpawner3up", 8, 48, 0)
    TNT1 A 0 A_SpawnItemEx ("RedPShieldSpawner3up", 8, -48, 0)
    stop
  }
}

actor RedAShieldSpawner2
{
  Radius 1
  Height 1
  +NOGRAVITY
  +NOINTERACTION
  +Friendly
  +SHOOTABLE
  +NOGRAVITY
  +NOTELEPORT
  +NODAMAGE
  +DONTRIP
  +NOBLOODDECALS
  +FLOORCLIP
  //+REFLECTIVE
  +GHOST
  States
  {
  Spawn:
    TNT1 A 1
    TNT1 A 0 A_SpawnItemEx ("RedAPShieldSpawner5up", 8, 0, 0)
    TNT1 A 0 A_SpawnItemEx ("RedAPShieldSpawner4up", 8, 24, 0)
    TNT1 A 0 A_SpawnItemEx ("RedAPShieldSpawner4up", 8, -24, 0)
    TNT1 A 0 A_SpawnItemEx ("RedAPShieldSpawner3up", 8, 48, 0)
    TNT1 A 0 A_SpawnItemEx ("RedAPShieldSpawner3up", 8, -48, 0)
    stop
  }
}

actor RedBShieldSpawner2
{
  Radius 1
  Height 1
  +NOGRAVITY
  +NOINTERACTION
  +Friendly
  +SHOOTABLE
  +NOGRAVITY
  +NOTELEPORT
  +NODAMAGE
  +DONTRIP
  +NOBLOODDECALS
  +FLOORCLIP
  //+REFLECTIVE
  +GHOST
  States
  {
  Spawn:
    TNT1 A 1
    TNT1 A 0 A_SpawnItemEx ("RedBPShieldSpawner5up", 8, 0, 0)
    TNT1 A 0 A_SpawnItemEx ("RedBPShieldSpawner4up", 8, 24, 0)
    TNT1 A 0 A_SpawnItemEx ("RedBPShieldSpawner4up", 8, -24, 0)
    TNT1 A 0 A_SpawnItemEx ("RedBPShieldSpawner3up", 8, 48, 0)
    TNT1 A 0 A_SpawnItemEx ("RedBPShieldSpawner3up", 8, -48, 0)
    stop
  }
}

actor DeployableSentryGun
{
  obituary "%o was ventilated by an auto-sentry."
  health 200
  radius 20
  height 56
  mass 100000
  speed 0
  MaxTargetRange 2048
  attacksound "DisposableSentry/Attack"
  Tag "Sentry Gun"
  MONSTER
  -Solid
  +FLOORCLIP
  +FRIENDLY
  +NOBLOOD
  +LOOKALLAROUND
  +NEVERRESPAWN
  +STANDSTILL
  +MissileMore
  +MissileEvenMore
  Species "Player"
  states
  {
  Spawn:
    DSEN AAAAAAAAAAAAAAAA 4 A_Look
    DSEN A 0 A_PlaySound ("DisposableSentry/Active")
    loop
  See:
    DSEN AAAAAAAAAAAAAAAA 4 A_Chase
    DSEN A 0 A_PlaySound ("DisposableSentry/Active")
    loop
  Missile:
    DSEN A 16 A_FaceTarget
    DSEN B 2 bright A_CustomBulletAttack(6.0,3.0,1,15,"DeployableSentryPuff",2048,CBAF_NORANDOM)
    DSEN A 2 A_CposRefire
    goto Missile+1
	DSEN A 1
	Goto See
  Death:
    DSEN C 1 A_PlaySoundEx ("DisposableSentry/Death", "SoundSlot5")
    DSEN C 0 A_PlaySoundEx ("weapons/rocklx", "SoundSlot6")
    DSEN C 0 A_SpawnItem ("DisposableSentryBoom", 0, 48)
    DSEN C 512
  FadeOut:
    DSEN C 2 A_FadeOut (0.1)
    loop
  }
}

Actor DeployableSentryPuff : BulletPuff
{
+THRUSPECIES
+FRIENDLY
+MTHRUSPECIES
Species "Player"
obituary "%o was ventilated by %k's auto-sentry."
}

actor DisposableSentryBoom
{
  radius 2
  height 2
  renderstyle Add
  +NOINTERACTION
  +CLIENTSIDEONLY
  states
  {
  Spawn:
    XPO1 ABCDEF 3 bright
    stop
  }
}

ACTOR DeployableSentryBox : CustomInventory
{
  +INVENTORY.INVBAR
  Inventory.InterHubAmount 3
  Inventory.MaxAmount 3
  Inventory.Icon "SENBB0"
  Inventory.PickupMessage "You picked up a disposable sentry gun!"
  Tag "Disposable Sentry Gun Box"
  States
  {
  Spawn:
    SENB A -1
    Stop
  Use:
    TNT1 A 1 A_SpawnItemEx ("DeployableSentryGun", 56, 0, 8, 0, 0, 0, 0, 1)
    Stop
  }
}

ACTOR MarineReinforcementsBeacon : CustomInventory
{
  +INVENTORY.INVBAR
  +COUNTITEM
  inventory.maxamount 1
  inventory.amount 1
  Inventory.Icon "BCNIA0"
  Tag "Reinforcements Beacon"
  Inventory.PickupMessage "You picked up a Reinforcements Beacon!"

  States
  {
  Spawn:
    BEAC A -1
    Stop
  Use:
	TNT1 A 0 
	TNT1 A 0 
    TNT1 A 0 A_JumpIfInventory("BeaconCooldownTimer", 1, "CooldownActive")
   Goto TrueUse
  TrueUse:
    TNT1 A 0 A_Print("Reinforcements inbound! Cooldown: 60 seconds.",2)
    TNT1 A 0 A_SpawnItemEx("TeleportFog", 96, 0, 8)
    TNT1 A 0 A_SpawnItemEx("MarineMinigunFriend", 96, 0, 8, 0, 0, 0, 0, 1)
    TNT1 A 0 A_SpawnItemEx("TeleportFog", 48, -64, 8)
    TNT1 A 0 A_SpawnItemEx("MarineAutoShotgunFriend", 48, -64, 8, 0, 0, 0, 0, 1)
    TNT1 A 0 A_SpawnItemEx("TeleportFog", 48, 64, 8)
    TNT1 A 0 A_SpawnItemEx("MarineSSGFriend", 48, 64, 8, 0, 0, 0, 0, 1)
    TNT1 A 0 A_SpawnItemEx("TeleportFog", -48, -48, 8)
    TNT1 A 0 A_SpawnItemEx("MarineRocketFriend", -48, -48, 8, 0, 0, 0, 0, 1)
    TNT1 A 0 A_SpawnItemEx("TeleportFog", -48, 48, 8)
    TNT1 A 0 A_SpawnItemEx("MarinePlasmaFriend", -48, 48, 8, 0, 0, 0, 0, 1)
    TNT1 A 0 A_SpawnItemEx("TeleportFog", -84, -84, 8)
    TNT1 A 0 A_SpawnItemEx("MarineAPMissileFriend",-84, -84, 8, 0, 0, 0, 0, 1)
    TNT1 A 0 A_SpawnItemEx("TeleportFog", -84, 84, 8)
    TNT1 A 0 A_SpawnItemEx("MarineRailgunFriend", -84, 84, 8, 0, 0, 0, 0, 1)
    TNT1 A 0 A_SpawnItemEx("TeleportFog", -96, 0, 8)
    TNT1 A 0 A_SpawnItemEx("MarineCommanderFriend", -96, 0, 8, 0, 0, 0, 0, 1)
    TNT1 A 0 A_SpawnItemEx("TeleportFog", -96, -64, 8)
	TNT1 A 0 A_SpawnItemEx("MarineMedicFriend", -96, -64, 8, 0, 0, 0, 0, 1)
    TNT1 A 0 A_SpawnItemEx("TeleportFog", -96, 64, 8)
	TNT1 A 0 A_SpawnItemEx("MarineSupplierFriend", -96, 64, 8, 0, 0, 0, 0, 1)
    TNT1 A 0 A_GiveInventory("BeaconCooldownTimer", 1)
    TNT1 A 0 A_Print("Reinforcements deployed! Cooldown: 60 seconds.",2)
    Fail
  CooldownActive:
    TNT1 A 0 A_Print("Reinforcements Beacon is cooling down...",2)
    Fail
  }
}

Actor BeaconCooldownTimer : Powerup
{
Powerup.Duration -60
Powerup.Color Blue 0.1
}

ACTOR MarineAutoShotgunFriend : MarineShotgun
{
    Health 500
    Species "Player"
    MONSTER
	Speed 20
    -SOLID
	-PUSHABLE
    +MISSILEEVENMORE
	+MissileMore
    +NORADIUSDMG
    +QUICKTORETALIATE
    +FLOORCLIP
    +FRIENDLY
	+THRUSPECIES
	MaxTargetRange 512
    SEESOUND "MarineAlly/Site"
    PAINSOUND "MarineAlly/Pain"
    DEATHSOUND "MarineAlly/Death"
    ACTIVESOUND "MarineAlly/Active"
	ATTACKSOUND "Fire/MarineAutoShotgun"
    Tag "AutoShotgun Marine"
    DropItem "ShotgunNonMapPickup"
    States
    {
    Spawn:
	    ALY5 ABCD 5 A_Wander
	    ALY5 ABCD 0 A_Look
		GOTO SEE
    See:
        ALY5 ABCD 4 A_Chase
        Loop
	Melee:	
		ALY1 E 4 A_FaceTarget
		ALY1 F 4 A_M_Punch(1)
		ALY5 A 9
		ALY5 A 0 A_M_Refire(1)
		Loop
		ALY5 A 5 A_FaceTarget
		Goto See
    Missile:
        ALY5 E 6 A_FaceTarget
        ALY5 F 2 Bright A_CustomBulletAttack(6.0,3.0,6,8,"MarinePuffFriendly",512,CBAF_NORANDOM)
		ALY5 A 0 A_M_Refire
        Goto Missile+1
		Loop
		ALY5 A 0
		Goto See
    Pain:
        ALY5 G 3
        ALY5 G 3 A_Pain
        Goto See
    Death:
        ALY5 H 10
        ALY5 I 10 A_PlayerScream
        ALY5 J 10 A_NoBlocking
        ALY5 KLM 10
        ALY5 N 2100
        ALY5 NNNNNNNNNNNN 1 A_FadeOut(0.1)
        Stop
    XDeath:
        ALY5 O 5
        ALY5 P 5 A_XScream
        ALY5 Q 5 A_NoBlocking
        ALY5 RSTUV 5
        ALY5 W 2100
        ALY5 WWWWWWWWWWWW 1 A_FadeOut(0.1)
        Stop
    }
}

ACTOR MarineSSGFriend : MarineSSG
{
    Health 500
    Species "Player"
    MONSTER
	Speed 20
    -SOLID
	-PUSHABLE
    +MISSILEEVENMORE
	+MissileMore
    +NORADIUSDMG
    +QUICKTORETALIATE
    +FLOORCLIP
    +FRIENDLY
	+THRUSPECIES
	MaxTargetRange 1024
    SEESOUND "MarineAlly/Site"
    PAINSOUND "MarineAlly/Pain"
	ATTACKSOUND "weapons/sshotf"
    DEATHSOUND "MarineAlly/Death"
    ACTIVESOUND "MarineAlly/Active"
    Tag "Super Shotgun Marine"
	DropItem "SuperShotgunMapPickup"
	 States
    {
    Spawn:
        AL11 ABCD 4 A_Wander
        AL11 ABCD 0 A_Look
        GOTO SEE
    See:
        AL11 ABCD 4 A_Chase
        Loop
	Melee:	
		ALY1 E 4 A_FaceTarget
		ALY1 F 4 A_M_Punch(1)
		AL11 A 9
		AL11 A 0 A_M_Refire(1)
		Loop
		AL11 A 5 A_FaceTarget
		Goto See
    Missile:
        AL11 E 6 A_FaceTarget
        AL11 F 8 Bright A_CustomBulletAttack(11.2,7.1,20,5,"MarinePuffFriendly",512,CBAF_NORANDOM)
        Goto See
    Pain:
        AL11 G 3
        AL11 G 3 A_Pain
        Goto See
    Death:
        AL11 H 10
        AL11 I 10 A_PlayerScream
        AL11 J 10 A_NoBlocking
        AL11 KLM 10
        AL11 N 2100
        AL11 NNNNNNNNNNNN 1 A_FadeOut(0.1)
        Stop
    XDeath:
        AL11 O 5
        AL11 P 5 A_XScream
        AL11 Q 5 A_NoBlocking
        AL11 RSTUV 5
        AL11 W 2100
        AL11 WWWWWWWWWWWW 1 A_FadeOut(0.1)
        Stop
    }
}

ACTOR MarineMinigunFriend : MarineChaingun
{
    Health 500
    Species "Player"
    MONSTER
	Speed 20
    -SOLID
	-PUSHABLE
    +MISSILEEVENMORE
	+MissileMore
    +NORADIUSDMG
    +QUICKTORETALIATE
    +FLOORCLIP
    +FRIENDLY
	+THRUSPECIES
	MaxTargetRange 1024
    SEESOUND "MarineAlly/Site"
    ATTACKSOUND "MarineMini/ALMinigun"
    PAINSOUND "MarineAlly/Pain"
    DEATHSOUND "MarineAlly/Death"
    ACTIVESOUND "MarineAlly/Active"
	Tag "Minigun Marine"
	DropItem "ChaingunNonMapPickup"
	States
   {
	  Spawn:
		ALY6 ABCD 5 A_Wander
		ALY6 ABCD 0 A_Look
		GOTO SEE
	  See:
        ALY6 ABCD 4 A_Chase
        Loop
	  Melee:	
		ALY1 E 4 A_FaceTarget
		ALY1 F 4 A_M_Punch(10)
		ALY6 A 9
		ALY6 A 0 A_M_Refire(1)
		Loop
		ALY6 A 5 A_FaceTarget
		Goto See
    Missile:
		ALY6 E 4 A_FaceTarget
		ALY6 FG 1 BRIGHT A_CustomBulletAttack(6.0,3.0,1,10,"MarinePuffFriendly",1024,CBAF_NORANDOM)
		ALY6 FG 1 BRIGHT A_CustomBulletAttack(6.0,3.0,1,10,"MarinePuffFriendly",1024,CBAF_NORANDOM)
		ALY6 A 0 A_M_Refire
		Goto Missile+3
		ALY6 A 0
		Goto See
    Pain:
        ALY6 H 3
        ALY6 H 3 A_Pain
        Goto See
    Death:
        ALY6 H 10
        ALY6 I 10 A_PlayerScream
        ALY6 J 10 A_NoBlocking
        ALY6 KLM 10
        ALY6 N 2100
        ALY6 NNNNNNNNNNNN 1 A_FadeOut(0.1)
        Stop
    XDeath:
        ALY6 O 5
        ALY6 P 5 A_XScream
        ALY6 Q 5 A_NoBlocking
        ALY6 RSTUV 5
        ALY6 W 2100
        ALY6 WWWWWWWWWWWW 1 A_FadeOut(0.1)
        Stop
	}
}

ACTOR MarineRocketFriend : MarineRocket
{
    Health 500
    Species "Player"
    MONSTER
	Speed 20
	MaxTargetRange 2048
    -SOLID
	-PUSHABLE
    +MISSILEEVENMORE
	+MissileMore
    +NORADIUSDMG
    +QUICKTORETALIATE
    +FLOORCLIP
    +FRIENDLY
	+THRUSPECIES
    SEESOUND "MarineAlly/Site"
    PAINSOUND "MarineAlly/Pain"
    DEATHSOUND "MarineAlly/Death"
    ACTIVESOUND "MarineAlly/Active"
	Tag "Rocket Launcher Marine"
	DropItem "RocketLauncherPickup"
	States
   {
   Spawn:
		ALY9 ABCD 5 A_Wander
		ALY9 ABCD 0 A_Look
		GOTO SEE
	See:
        ALY9 ABCD 4 A_Chase
        Loop
   Melee:	
		ALY1 E 4 A_FaceTarget
		ALY1 F 4 A_M_Punch(1)
		ALY9 A 9
		ALY9 A 0 A_M_Refire(1)
		Loop
		ALY9 A 5 A_FaceTarget
		Goto See
    Missile:
        ALY9 E 12 A_FaceTarget
        ALY9 F 6 Bright A_CustomMissile("RocketFriendly", 32)
        ALY9 E 0 A_M_Refire
		Loop
		ALY9 A 0
		Goto See
    Pain:
        ALY9 G 3
        ALY9 G 3 A_Pain
        Goto See
    Death:
        ALY9 H 10
        ALY9 I 10 A_PlayerScream
        ALY9 J 10 A_NoBlocking
        ALY9 KLM 10
        ALY9 N 2100
        ALY9 NNNNNNNNNNNN 1 A_FadeOut(0.1)
        Stop
    XDeath:
        ALY9 P 5
        ALY9 Q 5 A_XScream
        ALY9 R 5 A_NoBlocking
        ALY9 STUV 5
        ALY9 W 2100
        ALY9 WWWWWWWWWWWW 1 A_FadeOut(0.1)
        Stop
	}
}

ACTOR MarinePlasmaFriend : MarinePlasma
{
    Health 500
    Species "Player"
    MONSTER
	Speed 20
    -SOLID
	-PUSHABLE
    +MISSILEEVENMORE
	+MissileMore
    +NORADIUSDMG
    +QUICKTORETALIATE
    +FLOORCLIP
    +FRIENDLY
	+THRUSPECIES
    SEESOUND "MarineAlly/Site"
    PAINSOUND "MarineAlly/Pain"
    DEATHSOUND "MarineAlly/Death"
    ACTIVESOUND "MarineAlly/Active"
	Tag "Plasma Gun Marine"
	DropItem "PlasmaGunPickup"
	States
   {
   Spawn:
		ALY8 ABCD 5 A_Wander
		ALY8 ABCD 0 A_Look
		GOTO SEE
	See:
        ALY8 ABCD 4 A_Chase
        Loop
	Melee:	
		ALY1 E 4 A_FaceTarget
		ALY1 F 4 A_M_Punch(1)
		ALY8 A 9
		ALY8 A 0 A_M_Refire(1)
		Loop
		ALY8 A 5 A_FaceTarget
		Goto See
    Missile:
        ALY8 E 2 A_FaceTarget
        ALY8 E 0 A_FaceTarget
        ALY8 F 2 Bright A_CustomMissile("PlasmaBallFriendly", 32)
        ALY8 A 0 A_M_Refire
        Goto Missile+1
		Loop
		ALY8 A 0
		Goto See
    Pain:
        ALY8 G 3
        ALY8 G 3 A_Pain
        Goto See
    Death:
        ALY8 H 10
        ALY8 I 10 A_PlayerScream
        ALY8 J 10 A_NoBlocking
        ALY8 KLM 10
        ALY8 N 2100
        ALY8 NNNNNNNNNNNN 1 A_FadeOut(0.1)
        Stop
    XDeath:
        ALY8 O 5
        ALY8 P 5 A_XScream
        ALY8 Q 5 A_NoBlocking
        ALY8 RSTUV 5
        ALY8 W 2100
        ALY8 WWWWWWWWWWWW 1 A_FadeOut(0.1)
        Stop
    }
}

ACTOR MarineAPMissileFriend : MarineRocket
{
    Health 500
    Species "Player"
    MONSTER
	Speed 20
    -SOLID
	-PUSHABLE
    +MISSILEEVENMORE
	+MissileMore
    +NORADIUSDMG
    +QUICKTORETALIATE
    +FLOORCLIP
    +FRIENDLY
	+THRUSPECIES
	+AVOIDMELEE
	MaxTargetRange 2048
    SEESOUND "MarineAlly/Site"
    PAINSOUND "MarineAlly/Pain"
    DEATHSOUND "MarineAlly/Death"
    ACTIVESOUND "MarineAlly/Active"
	Tag "Anti-Tank Marine"
	DropItem "RocketLauncherPickup"
	States
   {
   Spawn:
		AL13 ABCD 5 A_Wander
		AL13 ABCD 0 A_Look
		GOTO SEE
	See:
        AL13 ABCD 4 A_Chase
        Loop
   Melee:	
		ALY1 E 4 A_FaceTarget
		ALY1 F 4 A_M_Punch(1)
		AL13 A 9
		AL13 A 0 A_M_Refire(1)
		Loop
		AL13 A 5 A_FaceTarget
		Goto See
  Missile:
		AL13 E 15 A_FaceTarget
		AL13 E 0 A_JumpIfCloser(360,"CancelAttack")
		AL13 E 5 A_PlayWeaponSound ("Ally/SeekerReady")
		AL13 E 5 A_FaceTarget
		AL13 E 0 A_PlayWeaponSound ("Ally/Seeker")
		AL13 F 8 Bright A_CustomMissile("MissileFriendly",32,16)
		AL13 F 0 A_AlertMonsters
		AL13 E 20 A_FaceTarget
		goto See
  CancelAttack:
		AL13 A 0 Fast A_FaceTarget
		AL13 DCBA 4 Fast A_Recoil(6)
		goto See
		Pain:
		AL13 G 5 A_Pain
		AL13 G 3 
		goto See
    Death:
        AL13 H 10
        AL13 I 10 A_PlayerScream
        AL13 J 10 A_NoBlocking
        AL13 KLM 10
        AL13 N 2100
        AL13 NNNNNNNNNNNN 1 A_FadeOut(0.1)
        Stop
    XDeath:
        AL13 O 5
        AL13 P 5 A_XScream
        AL13 Q 5 A_NoBlocking
        AL13 RSTUV 5
        AL13 W 2100
        AL13 WWWWWWWWWWWW 1 A_FadeOut(0.1)
        Stop
  }
 }

Actor MissileTrail
{
  Projectile
  +NoClip
  RenderStyle Add
  Alpha 0.4
  States
  {
  Spawn:
  1APS ABCDE 1 Bright
  Stop
  }
}

ACTOR MarineRailgunFriend : MarinePlasma
{
    Health 500
    Species "Player"
    MONSTER
	Speed 20
    -SOLID
	-PUSHABLE
    +MISSILEEVENMORE
	+MissileMore
    +NORADIUSDMG
    +QUICKTORETALIATE
    +FLOORCLIP
    +FRIENDLY
	+THRUSPECIES
	+AVOIDMELEE
	MaxTargetRange 4096
    SEESOUND "MarineAlly/Site"
    PAINSOUND "MarineAlly/Pain"
	ATTACKSOUND "weapons/railgf"
    DEATHSOUND "MarineAlly/Death"
    ACTIVESOUND "MarineAlly/Active"
	Tag "Railgun Marine"
	DropItem "PlasmaGunPickup"
	States
   {
   Spawn:
		AL12 ABCD 5 A_Wander
		AL12 ABCD 0 A_Look
		GOTO SEE
	See:
        AL12 ABCD 4 A_Chase
        Loop
	Melee:	
		ALY1 E 4 A_FaceTarget
		ALY1 F 4 A_M_Punch(1)
		AL12 A 9
		AL12 A 0 A_M_Refire(1)
		Loop
		AL12 A 5 A_FaceTarget
		Goto See
    Missile: //Note: Default RailAttack damage is 100.
		AL12 E 10 A_FaceTarget
		AL12 E 0 A_JumpIfCloser(320,"CancelAttack")
		AL12 E 10 A_FaceTarget
		AL12 F 0 A_AlertMonsters
		AL12 F 8 Bright A_CustomRailgun (500,0,4B0082,4682B4,0,1,4096,"MarineRailgunPuffFriendly")
		AL12 E 8 A_SpidRefire
	goto Missile+1
		CancelAttack: //Cancels as this is intended to be a Sniper based Marine
		AL12 A 0 Fast A_FaceTarget
		AL12 DCBA 4 Fast A_Recoil(6)
		Goto See
	Pain:
		AL12 G 5 A_Pain
		AL12 G 3
		goto See
    Death:
        AL12 H 10
        AL12 I 10 A_PlayerScream
        AL12 J 10 A_NoBlocking
        AL12 KLM 10
        AL12 N 2100
        AL12 NNNNNNNNNNNN 1 A_FadeOut(0.1)
        Stop
    XDeath:
        AL12 O 5
        AL12 P 5 A_XScream
        AL12 Q 5 A_NoBlocking
        AL12 RSTUV 5
        AL12 W 2100
        AL12 WWWWWWWWWWWW 1 A_FadeOut(0.1)
    }
}

ACTOR MarineMedicFriend : MarinePistol
{
    Health 500
    Species "Player"
    MONSTER
	Speed 20
    -SOLID
	-PUSHABLE
    +NORADIUSDMG
    +QUICKTORETALIATE
    +FLOORCLIP
    +FRIENDLY
	+THRUSPECIES
	+MISSILEEVENMORE
	+MissileMore
	MaxTargetRange 1024
	MeleeRange 44
    SEESOUND "MarineAlly/Site"
    PAINSOUND "MarineAlly/Pain"
    DEATHSOUND "MarineAlly/Death"
    ACTIVESOUND "MarineAlly/Active"
    Tag "Medic Marine"
    DropItem "PackMedikit"
    States
    {
    Spawn:
	    ALYM ABCD 5 A_Wander
	    ALYM A 0 A_Look
		Goto SEE
    See:
        ALYM ABCD 5 A_Chase
		ALYM A 0 A_RadiusGive ("MedicMarineHealth", 512, RGF_PLAYERS, 1)
		ALYM A 0 A_GiveInventory ("Health", 25)
		ALYM A 0 A_RadiusGive ("MedicMarineAllyHealth", 512, RGF_MONSTERS, 1)
        Loop
	Melee:	
		ALYM E 4 A_FaceTarget
        ALYM E 5 Bright A_CustomComboAttack("MarineSyringePuffFriendly",32,10,"AllyMedic/SyringeStab","Poison")
		TNT1 A 0 A_GIVEINVENTORY ("HEALTH",10)
		ALYM A 0 A_M_Refire(1)
		Loop
		ALYM A 5 A_FaceTarget
		Goto See
    Missile:
        ALYM E 6 A_FaceTarget
		ALYM E 0 A_PlayWeaponSound ("weapons/pistol")
        ALYM F 3 Bright A_CustomBulletAttack(5.6,0,1,5,"MarineMedicPuffFriendly",1024,CBAF_NORANDOM)
		ALYM E 8
		goto See
    Pain:
        ALYM G 3
        ALYM G 3 A_Pain
        Goto See
    Death:
        ALYM H 10
        ALYM I 10 A_PlayerScream
        ALYM J 10 A_NoBlocking
        ALYM KLM 10
        ALYM N 2100
        ALYM NNNNNNNNNNNN 1 A_FadeOut(0.1)
        Stop
    XDeath:
        ALYM O 5
        ALYM P 5 A_XScream
        ALYM Q 5 A_NoBlocking
        ALYM RSTUV 5
        ALYM W 2100
        ALYM WWWWWWWWWWWW 1 A_FadeOut(0.1)
        Stop
    }
}

actor MedicMarineHealth : CustomInventory
{
  -COUNTITEM
  +INVENTORY.AUTOACTIVATE
  inventory.pickupmessage "Healing from a nearby Medic Marine!"
  states
  {
	Pickup:
		TNT1 A 0 ACS_NamedExecuteWithResult("GiveHealthWithItem",10,0)
		Goto CheckPickup
	CheckPickup:
		TNT1 A 0 A_JumpIfInventory("PickedUp", 0, "PickedUp")
		Fail
		PickedUp:
		TNT1 A 0 A_PlaySound("Weapons/medkit", 5)
		TNT1 A 0 A_Print("Healing from a nearby Medic Marine!", 2)
		Stop
  }
}

actor MedicMarineAllyHealth : CustomInventory
{
    +INVENTORY.AUTOACTIVATE
    Inventory.MaxAmount 0
    States
    {
    Pickup:
        TNT1 A 0 ACS_NamedExecuteWithResult("FriendlyMonsterMedicFilter", 0)
        Stop
    }
}

ACTOR MarineSupplierFriend : MarineChaingun
{
    Health 500
    Species "Player"
    MONSTER
	Speed 20
    -SOLID
	-PUSHABLE
    +NORADIUSDMG
    +QUICKTORETALIATE
    +FLOORCLIP
    +FRIENDLY
	+THRUSPECIES
	+MISSILEEVENMORE
	+MissileMore
	DamageFactor "Normal", 0.50
	MaxTargetRange 1024
    SEESOUND "MarineAlly/Site"
    ATTACKSOUND "ALMG/Fire"
    PAINSOUND "MarineAlly/Pain"
    DEATHSOUND "MarineAlly/Death"
    ACTIVESOUND "MarineAlly/Active"
	Tag "Supplier Marine"
	DropItem "SupplyPack"
	States
	{
	  Spawn:
		ALYS ABCD 5 A_Wander
		ALYS ABCD 0 A_Look
      Goto SEE
	  See:
        ALYS ABCD 5 A_Chase
		ALYS A 0 A_RADIUSGIVE("SupplierMarineAmmo",512,RGF_PLAYERS,1)
        Loop
	  Melee:	
		ALYS E 4 A_FaceTarget
		ALYS E 4 A_M_Punch(1)
		ALYS A 9
		ALYS A 0 A_M_Refire(1)
		Loop
		ALYS A 5 A_FaceTarget
		Goto See
	Missile:
		ALYS E 4 A_FaceTarget
		ALYS EF 3 BRIGHT A_CustomBulletAttack(4.5,5.5,1,10,"MarinePuffFriendly",1024,CBAF_NORANDOM)
		ALYS EF 3 BRIGHT A_CustomBulletAttack(4.5,5.5,1,10,"MarinePuffFriendly",1024,CBAF_NORANDOM)
		ALYS A 0 A_M_Refire
		Goto Missile+3
		ALYS A 0
		Goto See
	Pain:
		ALYS G 5 A_Pain
		ALYS G 3
		Goto See
    Death:
        ALYS H 10
        ALYS I 10 A_PlayerScream
        ALYS J 10 A_NoBlocking
        ALYS KLM 10
        ALYS N 2100
        ALYS NNNNNNNNNNNN 1 A_FadeOut(0.1)
        Stop
    XDeath:
        ALYS O 5
        ALYS P 5 A_XScream
        ALYS Q 5 A_NoBlocking
        ALYS RSTUV 5
        ALYS W 2100
        ALYS WWWWWWWWWWWW 1 A_FadeOut(0.1)
        Stop
	}
}

actor SupplierMarineAmmo : CustomInventory
{
  -COUNTITEM
  +INVENTORY.AUTOACTIVATE
  inventory.pickupmessage "Restocking from a Supplier Marine!"
  states
  {
	Pickup:
		TNT1 A 0 A_GiveInventory("ClipBoxMapPickup", 1)
		TNT1 A 0 A_GiveInventory("ShellBoxMapPickup", 1)
		TNT1 A 0 A_GiveInventory("RocketBoxMapPickup", 1)
		TNT1 A 0 A_GiveInventory("CellBoxMapPickup", 1)
		TNT1 A 0 A_GiveInventory("SupplierSuperArmor", 1)
		Goto CheckPickup
	CheckPickup:
		TNT1 A 0 A_JumpIfInventory("PickedUp", 0, "PickedUp")
		Fail
		PickedUp:
		TNT1 A 0 A_Print("Restocking from a Supplier Marine!", 2)
		Stop
  }
}

ACTOR MarineCommanderFriend : MarineChaingun
{
    Health 750
    Species "Player"
    MONSTER
	Speed 20
    -SOLID
	-PUSHABLE
    +NORADIUSDMG
    +QUICKTORETALIATE
    +FLOORCLIP
    +FRIENDLY
	+THRUSPECIES
	+MISSILEEVENMORE
	+MissileMore
	DamageFactor "Normal", 0.75
	MaxTargetRange 1024
    SEESOUND "MarineAlly/Site"
    ATTACKSOUND "ALMG/Fire"
    PAINSOUND "MarineAlly/Pain"
    DEATHSOUND "MarineAlly/Death"
    ACTIVESOUND "MarineAlly/Active"
	Tag "Commander Marine"
	DropItem "BackpackMapPickup"
	States
   {
	  Spawn:
		ALCO ABCD 5 A_Wander
		ALCO ABCD 0 A_Look
      Goto SEE
	  See:
        ALCO ABCD 5 A_Chase
		ALCO A 0 A_RADIUSGIVE("CommanderDamageBoost",512,RGF_PLAYERS,1)
		ALCO A 0 A_RADIUSGIVE("CommanderResistanceBoost",512,RGF_PLAYERS,1)
		ALCO A 0 A_RADIUSGIVE("CommanderAllyMonsterBoost",512,RGF_MONSTERS,1)
		ALCO A 0 A_RADIUSGIVE("CommanderBuffNotif",512,RGF_PLAYERS,1)
        Loop
	  Melee:	
		ALCO E 4 A_FaceTarget
		ALCO E 4 A_M_Punch(10)
		ALCO A 9
		ALCO A 0 A_M_Refire(1)
		Loop
		ALCO A 5 A_FaceTarget
		Goto See
    Missile:
		ALCO E 4 A_FaceTarget
		ALCO EF 2 BRIGHT A_CustomBulletAttack(8.0,5.0,1,25,"MarineCommanderPuffFriendly",1024,CBAF_NORANDOM)
		ALCO EF 2 BRIGHT A_CustomBulletAttack(8.0,5.0,1,25,"MarineCommanderPuffFriendly",1024,CBAF_NORANDOM)
		ALCO A 0 A_M_Refire
		Goto Missile+3
		ALCO A 0
		Goto See
	Pain:
		ALCO G 5 A_Pain
		ALCO G 3
		Goto See
	XDeath:
    Death:
        ALCO H 10
        ALCO I 10 A_PlayerScream
        ALCO J 10 A_NoBlocking
        ALCO KLM 10
        ALCO N 2100
        ALCO NNNNNNNNNNNN 1 A_FadeOut(0.1)
        Stop
	}
}


actor CommanderDamagePower : PowerDamage {}

actor CommanderDamageBoost : PowerupGiver
{
	Inventory.MaxAmount 1
	Inventory.InterHubAmount 0
	Inventory.Icon ""
	+Inventory.AUTOACTIVATE
	+Inventory.ALWAYSPICKUP
	+Inventory.UNTOSSABLE
	Powerup.Type "CommanderDamagePower"
	DamageFactor "Normal", 3
	Powerup.Color honeydew 0.1
	Powerup.Duration 350
}

actor CommanderResistancePower : PowerProtection {}

actor CommanderResistanceBoost : PowerupGiver
{
	Inventory.MaxAmount 1
	Inventory.InterHubAmount 0
	Inventory.Icon ""
	+Inventory.AUTOACTIVATE
	+Inventory.ALWAYSPICKUP
	+Inventory.UNTOSSABLE
	Powerup.Type "CommanderResistancePower"
	DamageFactor "Normal", 0.50
	Powerup.Duration 350
}

actor CommanderAllyMonsterBoost : CustomInventory
{
    +INVENTORY.AUTOACTIVATE
    Inventory.MaxAmount 0
    States
    {
    Pickup:
        TNT1 A 0 ACS_NamedExecuteWithResult("FriendlyMonsterCommanderFilter", 0)
        Stop
    }
}

Actor CommanderBuffNotif : CustomInventory
{
	+ALWAYSPICKUP
	-COUNTITEM
	Inventory.PickupSound ""
	Inventory.Pickupmessage ""
	Scale 1
	States
	{
	Spawn:
		TNT1 A 1 
		Loop
	Pickup:
		TNT1 A 0 
		Goto CheckPickup
	CheckPickup:
		TNT1 A 0 A_JumpIfInventory("PickedUp", 0, "PickedUp")
		TNT1 A 0 A_Print("A Commander Marine inspires you to fight harder!", 2)
		Fail
	PickedUp:
		TNT1 A 0 A_GiveInventory("PickupBlend", 1)
		TNT1 A 0 
		stop
	}
}

ACTOR RocketFriendly : Rocket
{
    +THRUSPECIES
	+MTHRUSPECIES
    +FRIENDLY
    Species "Player"
}

ACTOR MissileFriendly : Rocket
{
    +THRUSPECIES
	+MTHRUSPECIES
    +FRIENDLY
	+FOILINVUL
	+DONTREFLECT
	+RANDOMIZE
	+DEHEXPLOSION
	+ROCKETTRAIL
	+FORCERADIUSDMG
	Radius 11
    Height 8
    Projectile
	Speed 75
	Damage 250
    Species "Player"
	SeeSound "Ally/Seeker"
	DeathSound "Seeker/Explode"
	Decal Scorch
	States
	{
	Spawn:
	1APR A -1 A_SpawnItemEx ("MissileTrail", 3, 0, 0, 1)
	loop
	Death:
	APME A 6 bright A_Explode(250,32)
	APME BCDEFGH 4 bright
	stop
	}
}

// Friendly Plasma Bolt
ACTOR PlasmaBallFriendly : PlasmaBall
{
    +THRUSPECIES
	+MTHRUSPECIES
    +FRIENDLY
    Species "Player"
}


ACTOR MarinePuffFriendly : BulletPuff
{
    +THRUSPECIES
	+MTHRUSPECIES
    +FRIENDLY
    Species "Player"
}

ACTOR MarineCommanderPuffFriendly : BulletPuff
{
    +THRUSPECIES
	+MTHRUSPECIES
    +FRIENDLY
	+FOILINVUL
    Species "Player"
}

ACTOR MarineMedicPuffFriendly : BulletPuff
{
    +THRUSPECIES
	+MTHRUSPECIES
    +FRIENDLY
	+POISONALWAYS
	+ADDITIVEPOISONDAMAGE
	+ADDITIVEPOISONDURATION
	+ALLOWPARTICLES
	+ALWAYSPUFF
	POISONDAMAGE 5,20,20
	DamageType "Poison"
    Species "Player"
}

ACTOR MarineSyringePuffFriendly : BulletPuff
{
    +THRUSPECIES
	+MTHRUSPECIES
    +FRIENDLY
	+POISONALWAYS
	+PUFFGETSOWNER
	+ADDITIVEPOISONDAMAGE
	+ADDITIVEPOISONDURATION
	+ALLOWPARTICLES
	+ALWAYSPUFF
	POISONDAMAGE 5,20,20
	DamageType "Poison"
    Species "Player"
}

Actor MarineRailgunPuffFriendly : BulletPuff
{
    +THRUSPECIES
	+MTHRUSPECIES
    +FRIENDLY
	+FOILINVUL
	+CANNOTPUSH
    Species "Player"
	Decal BulletChip
}

ACTOR PowerJetpackBoost : PowerupGiver
{
	Inventory.Amount 1
	powerup.duration -45
	Powerup.Type PowerFlight
	+INVENTORY.AUTOACTIVATE
	+INVENTORY.ALWAYSPICKUP
}

actor ReusableJetpack : CustomInventory
{
  Inventory.PickupMessage "Jet Thruster!"
  Inventory.Amount 1
  Inventory.MaxAmount 1
  Inventory.PickupSound "misc/p_pkup"
  Tag "Jetpack"
  Inventory.Icon ARTIJET
  +INVENTORY.FANCYPICKUPSOUND
  +INVBAR
  states
  {
  Spawn:
    JETT A -1
    Stop
  Use:
	TNT1 A 0 
	TNT1 A 0 
    TNT1 A 0 A_JumpIfInventory("JetpackCooldownTimer", 1, "CooldownActive")
   Goto TrueUse
  TrueUse:
	TNT1 A 0 A_PlaySound("jetpack/jetthrusteractive")
    TNT1 A 0 A_Print("Jetpack active! Cooldown: 15 seconds after flight ends.",2)
	TNT1 A 0 A_GiveInventory("PowerJetpackBoost",1)
    TNT1 A 0 A_GiveInventory("JetpackCooldownTimer", 1)
    Fail
  CooldownActive:
    TNT1 A 0 A_Print("Jetpack is still on cooldown!",2)
    Fail
  }
}

Actor JetpackCooldownTimer : Powerup
{
Powerup.Duration -60
Powerup.Color LightBlue 0.1
}

ACTOR EmpowermentStationDeployer : CustomInventory
{
  +INVENTORY.INVBAR
  +COUNTITEM
  inventory.maxamount 1
  inventory.amount 1
  Inventory.Icon "I_HLSP"
  Tag "Empowerment Station Pack"
  Inventory.PickupMessage "You picked up an Empowerment Station Pack!"

  States
  {
  Spawn:
    HLSP A -1
    Stop
  Use:
	TNT1 A 0 
	TNT1 A 0 
    TNT1 A 0 A_JumpIfInventory("HealingStationBeaconTimer", 1, "CooldownActive")
   Goto TrueUse
  TrueUse:
    TNT1 A 0 A_Print("Empowerment Field Station Deployed! Cooldown: 60 seconds.",2)
    TNT1 A 0 A_SpawnItemEx("TeleportFog", 96, 0, 8)
    TNT1 A 0 A_SpawnItemEx("EmpowermentFieldStation", 96, 0, 8, 0, 0, 0, 0, 1)
	TNT1 A 0 A_GiveInventory("HealingStationBeaconTimer",1)
    Fail
  CooldownActive:
    TNT1 A 0 A_Print("Item is on cooldown.",2)
    Fail
  }
}

Actor HealingStationBeaconTimer : Powerup
{
Powerup.Duration -60
Powerup.Color MistyRose 0.1
}
 
ACTOR EmpowermentFieldStation
{
	Health 10000
	Monster
	Mass 10000000000
	Speed 0
	PainChance 1
	radius 16
	height 110
	+NOPAIN
	+STANDSTILL
    -SOLID
    +FRIENDLY
    +BRIGHT
	+NOBLOOD
	+NORADIUSDMG
	+QUICKTORETALIATE
	+THRUSPECIES
	+FLOORCLIP
	Tag "Empowerment Field Station"
    Species "Player"
   States
   {
    Spawn:
	   HLST A 10 A_Look
	   HLST A 0 A_GiveInventory("HealingStationTimer",1)
	   Goto See
	See:	    
	   HLST A 0 A_JumpIfInventory("HealingStationTimer",1,1)
	   Goto Death
	   HLST A 20
       HLST A 0 A_RADIUSGIVE("HealingZonePlayerHeal",512,RGF_PLAYERS,1)
	   HLST A 0 A_RADIUSGIVE("HealingZoneAllyHealer",512,RGF_MONSTERS,1)
	   HLST A 0 A_RADIUSGIVE("HealingStationDamageBoost",512,RGF_PLAYERS,1)
	   HLST A 0 A_RADIUSGIVE("HealingStationResistancePower",512,RGF_PLAYERS,1)
	   HLST A 0 A_RADIUSGIVE("HealingStationNotif",512,RGF_PLAYERS,1)
       Loop 
  Death:
		HLST A 4
		HLST B 0 A_RADIUSGIVE("HealingStationPowerRegenerationeBoost",512,RGF_PLAYERS|RGF_MONSTERS,1)
		HLST B 4 A_PlaySound ("DisposableSentry/Death",chan_5)
		HLST C 4
		HLST D 4
		HLST E 4
		HLST F 4
		HLST F 1 Thing_Remove (1)
		stop
}
}

actor HealingZonePlayerHeal : CustomInventory
{
  -COUNTITEM
  +INVENTORY.AUTOACTIVATE
  inventory.pickupmessage "Healing from a nearby Healing Station!"
  states
  {
	Pickup:
		TNT1 A 0 ACS_NamedExecuteWithResult("GiveHealthWithItem",10,0)
		Goto CheckPickup
	CheckPickup:
		TNT1 A 0 A_JumpIfInventory("PickedUp", 0, "PickedUp")
		Fail
		PickedUp:
		TNT1 A 0 A_PlaySound("Weapons/medkit", 5)
		TNT1 A 0
		Stop
  }
}

actor HealingZoneAllyHealer : CustomInventory
{
    +INVENTORY.AUTOACTIVATE
    Inventory.MaxAmount 0
    States
    {
    Pickup:
        TNT1 A 0 ACS_NamedExecuteWithResult("FriendlyMonsterFilter", 0)
        Stop
    }
}

actor HealingStationDamagePower : PowerDamage {}

actor HealingStationDamageBoost : PowerupGiver
{
	Inventory.MaxAmount 1
	Inventory.InterHubAmount 0
	Inventory.Icon ""
	+Inventory.AUTOACTIVATE
	+Inventory.ALWAYSPICKUP
	+Inventory.UNTOSSABLE
	Powerup.Type "HealingStationDamagePower"
	DamageFactor "Normal", 3
	Powerup.Color blue 0.1
	Powerup.Duration 350
}

actor HealingStationResistancePower : PowerProtection {}

actor HealingStationResistanceBoost : PowerupGiver
{
	Inventory.MaxAmount 1
	Inventory.InterHubAmount 0
	Inventory.Icon ""
	+Inventory.AUTOACTIVATE
	+Inventory.ALWAYSPICKUP
	+Inventory.UNTOSSABLE
	Powerup.Type "HealingStationResistancePower"
	DamageFactor "Normal", 0.50
	Powerup.Duration 350
}

actor HealingStationPowerRegenerationPower : PowerRegeneration {}

actor HealingStationPowerRegenerationeBoost : PowerupGiver
{
	Inventory.MaxAmount 1
	Inventory.InterHubAmount 0
	Inventory.Icon ""
	+Inventory.AUTOACTIVATE
	+Inventory.ALWAYSPICKUP
	+Inventory.UNTOSSABLE
	Powerup.Type "HealingStationPowerRegenerationPower"
	Powerup.Strength 25
	Powerup.Duration 350
}

Actor HealingStationNotif : CustomInventory
{
	+ALWAYSPICKUP
	-COUNTITEM
	Inventory.PickupSound ""
	Inventory.Pickupmessage ""
	Scale 1
	States
	{
	Spawn:
		TNT1 A 1 
		Loop
	Pickup:
		TNT1 A 0 
		TNT1 A 0 A_Print("An empowerment field supercharges you!", 2)
		Goto CheckPickup
	CheckPickup:
		TNT1 A 0 A_JumpIfInventory("PickedUp", 0, "PickedUp")
		TNT1 A 0 A_Print("An empowerment field supercharges you!", 2)
		Fail
	PickedUp:
		TNT1 A 0 A_Print("An empowerment field supercharges you!", 2)
		TNT1 A 0 
		stop
	}
}


Actor HealingStationTimer : Powerup
{
	Powerup.Duration 1575 // 45 seconds
}


ACTOR SupplierSuperArmor : ArmorBonus
{
Armor.SaveAmount 10
Armor.MaxSaveAmount 300
}

ACTOR ArmorPlate : ArmorBonus
{
Armor.SaveAmount 25
Armor.MaxSaveAmount 200
}

ACTOR LargeArmorPlate : ArmorBonus
{
Armor.SaveAmount 50
Armor.MaxSaveAmount 200
}