actor GroundIcon
{
  Radius 20
  Height 1
  +NOBLOCKMAP
  +MOVEWITHSECTOR
  +FLOORHUGGER
  -SOLID
  +NOCLIP
  renderstyle Translucent//Add
  alpha 0.05
  scale 2.0
  Gravity 2.0//11.0
}

actor AttackIcon : GroundIcon
{
  States
  {
  Spawn:
    IATK A 0 Bright
  Crash:
  Death:
    IATK A 0 //A_ChangeVelocity(0,0,-2000,CVF_REPLACE)
	IATK AABBCCDDEEFFGG 1 Bright A_FadeIn(0.05)
	IATK HHHHHHHHHHHHHHHHH 1 Bright A_FadeOut(0.06)
    Stop
  }
}
actor DefendIcon : GroundIcon
{
  renderstyle Add
  alpha 1.0
  scale 6.0
  States
  {
  Spawn:
    IDEF A 0 Bright
  Crash:
  Death:
    IATK A 0 //A_ChangeVelocity(0,0,-2000,CVF_REPLACE)
	IDEF ABCDEFGHHII 1 Bright A_FadeOut(0.09)
    Stop
  }
}

actor AttackIconSpawner //: GroundIcon
{
  //+ISMONSTER
  //+spawnceiling
  -SOLID
  -SHOOTABLE
  +NOBLOCKMAP
  States
  {
  Spawn:
    TNT1 A 0 Bright
	TNT1 A 0 A_SpawnItemEx("AttackIcon",0,0,-4096,0,0,0,0, 160,0,7775)
	Stop
  }
}
actor DefendIconSpawner : GroundIcon
{
  States
  {
  Spawn:
    TNT1 A 0 Bright
	TNT1 A 0 A_SpawnItemEx("DefendIcon",0,0,-4096,0,0,0,0, 160,0,7775)
	//TNT1 A 0 A_CustomBulletAttack(0,90,1,0,"DefendIcon",0, CBAF_AIMFACING|CBAF_NORANDOMPUFFZ|CBAF_NOPITCH|CBAF_EXPLICITANGLE)
	Stop
  }
}

actor Waypoint : MapSpot
{
	MONSTER
	-COUNTKILL
	-SOLID
	-SHOOTABLE
	+FRIENDLY
	renderstyle NONE
	-NOTELEPORT
	-NOBLOCKMAP
	-ISMONSTER
	-NOSECTOR
	+NOTELESTOMP
    States
    {
        Spawn:
        TNT1 A 0
        TROO AA 35
		Loop
        //Stop
    }
}
actor Waypoint2 : Waypoint
{
    States
    {
      Spawn:
        SARG AA 1
		SARG A 35
		//SARG AAAAAAA 5 //A_CheckProximity("Death","DoomPlayer",16)
        Stop
	  Death:
		TNT1 A 1
		Stop
    }
}

actor GuardGiver
{
	Renderstyle none
	+NOCLIP
	+NOGRAVITY
    States
    {
        Spawn:
        TNT1 A 0
        TNT1 A 1 A_RadiusGive("GuardChecker",256, RGF_MONSTERS)
        Stop
    }
}
actor GuardTaker : GuardGiver
{
    States
    {
        Spawn:
        TNT1 A 0
        TNT1 A 1 //A_RadiusTake("GuardChecker",256, RGF_MONSTERS)
        Stop
    }
}
actor GuardToggler : GuardGiver
{
    States
    {
        Spawn:
        TNT1 A 0
        TNT1 A 1 A_RadiusGive("GuardToggle",256, RGF_MONSTERS)
        Stop
    }
}
actor BotPauser : GuardGiver
{
	Renderstyle none
	+NOCLIP
	+NOGRAVITY
    States
    {
        Spawn:
        TNT1 A 0
        TNT1 A 1 A_RadiusGive("HoldUp",96, RGF_MONSTERS)
        Stop
    }
}

actor GuardChecker : Inventory
{
Inventory.MaxAmount 1
+INVENTORY.UNDROPPABLE
}
actor GuardToggle : GuardChecker
{
}
actor HoldUp : GuardChecker
{
}

Actor AllyPuff : BulletPuff
{
//+ALLOWTHRUFLAGS
+THRUSPECIES
+MTHRUSPECIES
+THRUGHOST
Species "DoomPlayer"
DamageType "Ally"
}



ACTOR SyntheticMarine : DoomPlayer
{
  translation 0
  Health 500
  Radius 20
  Height 56
  Mass 1000
  Speed 4
  PainChance 170
  Monster
  +FLOORCLIP
  +FRIENDLY
  +NOBLOCKMONST
  -COUNTKILL
  //+USESPECIAL
  -SOLID
  //+THRUACTORS
  +LOOKALLAROUND
  //+AVOIDHAZARDS
  //+STANDSTILL
  //+BLOCKASPLAYER
  -ACTIVATEMCROSS
  +NOBLOCKMONST
  +CANUSEWALLS
  +NOTELESTOMP
  +GHOST
  MeleeRange 512
  MaxTargetRange 2048
  Bloodcolor "00 00 AA"
  Species "DoomPlayer"
  DamageFactor "Ally", 0.0
  +THRUSPECIES
  SeeSound ""
  PainSound "killbot/pain"
  DeathSound "killbot/death"
  ActiveSound "killbot/guarding"
  AttackSound "killbot/laser"
  Obituary "%o was accidentally killed by a synthetic marine."
  Dropitem "Stimpack"
  Dropitem "ClipBox"
  States
  {
  Spawn:
    1337 X 10 A_Look
    Goto Idle
  ToggleGuard:
	1337 A 0 A_JumpIfInventory("GuardChecker",1,"Unguard1")
	1337 A 0 
	Goto Guard1
  Unguard1:
	1337 A 0 A_TakeInventory("GuardToggle",1)
  Unguard:
	1337 D 0
	//1337 A 0 A_changeflag("STANDSTILL", 0)
	//1337 A 0 A_changeflag("DONTFOLLOWPLAYERS", 0)
	1337 A 0 A_TakeInventory("GuardChecker",1)
	1337 A 0 A_Playsound("killbot/guardoff")
	Goto Spawn
  Guard1:
	1337 A 0 A_TakeInventory("GuardToggle",1)
  Guard:
	1337 D 0
	//1337 A 0 A_changeflag("STANDSTILL", 1)
	//1337 A 0 A_changeflag("DONTFOLLOWPLAYERS", 1)
	1337 A 0 A_GiveInventory("GuardChecker",1)
	1337 A 0 A_Playsound("killbot/guardon")
	Goto Spawn
  Idle2:
	1337 A 0 A_ClearTarget
	1337 A 0 A_TakeInventory("HoldUp",1)
  Idle:
	1337 A 0 A_JumpIfInventory("GuardToggle",1,"ToggleGuard")
	1337 A 0 A_JumpIfInventory("GuardChecker",1,"GuardIdle")
	//1337 A 0 A_changeflag("STANDSTILL", 0)
	1337 AABBCCDD 2 A_Wander
	1337 A 0 A_Look
	Loop
  Follow2:
	1337 A 0 A_Playsound("killbot/guardoff")
	1337 A 0 A_TakeInventory("HoldUp",1)
	1337 A 0 A_TakeInventory("GuardChecker",1)
  Follow:
	1337 X 0 A_JumpIfInventory("GuardToggle",1,"ToggleGuard")
	1337 X 0 A_JumpIfInventory("HoldUp",1,"FollowWait")
	1337 X 1
  FollowLoop:
	1337 X 0 A_JumpIfInventory("GuardToggle",1,"ToggleGuard")
	1337 X 0 A_JumpIfInventory("HoldUp",1,"FollowWait")
	1337 A 1 A_Wander
    1337 A 0 A_Recoil(-0.5)
	
	1337 A 0 A_JumpIfInventory("HoldUp",1,"FollowWait")
	1337 A 1 A_Wander
    1337 A 0 A_Recoil(-0.5)
	
	1337 A 0 A_JumpIfInventory("HoldUp",1,"FollowWait")
	1337 B 1 A_Wander
    1337 A 0 A_Recoil(-0.5)
	
	1337 A 0 A_JumpIfInventory("HoldUp",1,"FollowWait")
	1337 B 1 A_Wander
    1337 A 0 A_Recoil(-0.5)
	
	1337 A 0 A_JumpIfInventory("HoldUp",1,"FollowWait")
	1337 C 1 A_Wander
    1337 A 0 A_Recoil(-0.5)
	
	1337 A 0 A_JumpIfInventory("HoldUp",1,"FollowWait")
	1337 C 1 A_Wander
    1337 A 0 A_Recoil(-0.5)
	
	1337 A 0 A_JumpIfInventory("HoldUp",1,"FollowWait")
	1337 D 1 A_Wander
    1337 A 0 A_Recoil(-0.5)
	
	1337 A 0 A_JumpIfInventory("HoldUp",1,"FollowWait")
	1337 D 1 A_Wander
    1337 A 0 A_Recoil(-0.5)
	Loop
  FollowWait:
	1337 X 0 A_TakeInventory("HoldUp",1)
	1337 X 10
	Goto Follow
  GuardIdle:
	1337 A 0 A_JumpIfInventory("GuardToggle",1,"ToggleGuard")
	1337 XXXXXXXX 2 A_SetAngle(angle+15)
	1337 A 0 A_JumpIfInventory("GuardToggle",1,"ToggleGuard")
	1337 XXXXXXX 10 A_Look
	1337 A 0 A_JumpIfInventory("GuardToggle",1,"ToggleGuard")
	1337 XXXXXXXX 2 A_SetAngle(angle-15)
	1337 A 0 A_JumpIfInventory("GuardToggle",1,"ToggleGuard")
	1337 XXXXXXX 10 A_Look
	
	1337 A 0 A_JumpIfInventory("GuardToggle",1,"ToggleGuard")
	1337 XXXXXXXX 2 A_SetAngle(angle-15)
	1337 A 0 A_JumpIfInventory("GuardToggle",1,"ToggleGuard")
	1337 XXXXXXX 10 A_Look
	1337 A 0 A_JumpIfInventory("GuardToggle",1,"ToggleGuard")
	1337 XXXXXXXX 2 A_SetAngle(angle+15)
	1337 A 0 A_JumpIfInventory("GuardToggle",1,"ToggleGuard")
	1337 XXXXXXX 10 A_Look
	1337 A 0 A_JumpIfInventory("GuardToggle",1,"ToggleGuard")
	Loop
  GuardSee:
	1337 A 0 A_JumpIfInventory("GuardToggle",1,"ToggleGuard")
	1337 X 4 A_Chase("GuardAttack","GuardAttack", CHF_DONTMOVE)
	Loop
  See:
	1337 A 0 A_JumpIfInventory("GuardToggle",1,"ToggleGuard")
	1337 A 0 A_JumpIfInventory("GuardChecker",1,"GuardSee")
	1337 A 0 A_JumpIfTargetInLOS("FastChase")
	1337 A 1 A_Chase("Missile2","Missile")
	1337 A 0 A_Chase("Missile2","Missile")
	1337 A 1 A_Chase("Missile2","Missile")
	1337 A 0 A_Chase("Missile2","Missile")
	1337 A 1 A_Chase("Missile2","Missile")
	1337 A 0 A_Chase("Missile2","Missile")
	1337 B 1 A_Chase("Missile2","Missile")
	1337 B 0 A_Chase("Missile2","Missile")
	1337 B 1 A_Chase("Missile2","Missile")
	1337 B 0 A_Chase("Missile2","Missile")
	1337 B 1 A_Chase("Missile2","Missile")
	1337 B 0 A_Chase("Missile2","Missile")
	1337 C 1 A_Chase("Missile2","Missile")
	1337 C 0 A_Chase("Missile2","Missile")
	1337 C 1 A_Chase("Missile2","Missile")
	1337 C 0 A_Chase("Missile2","Missile")
	1337 C 1 A_Chase("Missile2","Missile")
	1337 C 0 A_Chase("Missile2","Missile")
	1337 D 1 A_Chase("Missile2","Missile")
	1337 D 0 A_Chase("Missile2","Missile")
	1337 D 1 A_Chase("Missile2","Missile")
	1337 D 0 A_Chase("Missile2","Missile")
	1337 D 1 A_Chase("Missile2","Missile")
	1337 D 0 A_Chase("Missile2","Missile")
    Loop
  FastChase:
	1337 A 0 A_JumpIfCloser(512,"See2")
    1337 E 0 A_FaceTarget
    1337 A 0 A_Recoil(-3)
    1337 AAABBB 1 A_Chase("Missile2","Missile")
    1337 E 0 A_FaceTarget
    1337 A 0 A_Recoil(-3)
    1337 CCCDDD 1 A_Chase("Missile2","Missile")
	
	1337 A 0 A_JumpIfCloser(512,"See2")
    1337 E 0 A_FaceTarget
    1337 A 0 A_Recoil(-3)
    1337 AAABBB 1 A_Chase("Missile2","Missile", CHF_NOPLAYACTIVE)
    1337 E 0 A_FaceTarget
    1337 A 0 A_Recoil(-3)
    1337 CCCDDD 1 A_Chase("Missile2","Missile", CHF_NOPLAYACTIVE)
	
	1337 A 0 A_JumpIfCloser(512,"See2")
    1337 E 0 A_FaceTarget
    1337 A 0 A_Recoil(-3)
    1337 AAABBB 1 A_Chase("Missile2","Missile", CHF_NOPLAYACTIVE)
    1337 E 0 A_FaceTarget
    1337 A 0 A_Recoil(-3)
    1337 CCCDDD 1 A_Chase("Missile2","Missile", CHF_NOPLAYACTIVE)
	
	//1337 A 0 A_ClearTarget
    Loop
  See2:
	1337 A 0 A_JumpIfInventory("GuardToggle",1,"ToggleGuard")
	1337 A 0 A_JumpIfInventory("GuardChecker",1,"GuardSee")
    1337 AAABBBCCCDDD 1 A_Chase("Missile2","Missile", CHF_FASTCHASE)
    Loop
  Missile:
    1337 E 3 A_FaceTarget
  MissileLoop:
	1337 A 0 A_JumpIfInventory("GuardToggle",1,"ToggleGuard")
    1337 F 2 Bright A_CustomRailgun(6, 0,"none","green",RGF_NOPIERCING|RGF_FULLBRIGHT,1,1,"AllyPuff",2,1,0,15,0.5,0.5)
    1337 E 0 A_FaceTarget
    1337 E 2 A_Recoil(-2)
    1337 F 2 Bright A_CustomRailgun(6, 0,"none","green",RGF_NOPIERCING|RGF_FULLBRIGHT,1,1,"AllyPuff",4,2,0,15,0.5,0.5)
    1337 E 0 A_FaceTarget
    1337 E 2 A_Recoil(-2)
	
    1337 F 0 A_Chase("Missile2Loop","MissileLoop", CHF_NOPLAYACTIVE)
    1337 E 0 A_FaceTarget
    Goto See
  Missile2:
    1337 E 3 A_FaceTarget
    //1337 E 0 A_Recoil(2)
  Missile2Loop:
	1337 A 0 A_JumpIfInventory("GuardToggle",1,"ToggleGuard")
    1337 F 2 Bright A_CustomRailgun(6, 0,"none","green",RGF_NOPIERCING|RGF_FULLBRIGHT,1,1,"AllyPuff",5,4,0,15,0.5,0.5)
    1337 E 0 A_FaceTarget
    1337 E 2 A_Recoil(-2)
    1337 F 0 A_Chase("Missile2Loop","MissileLoop", CHF_FASTCHASE | CHF_NOPLAYACTIVE)
    Goto See
  GuardAttack:
    1337 E 3 A_FaceTarget
  GuardAttackLoop:
    1337 F 2 Bright A_CustomRailgun(6, 0,"none","green",RGF_NOPIERCING|RGF_FULLBRIGHT,1,1,"AllyPuff",1,1,0,15,0.5,0.5)
    1337 E 0 A_FaceTarget
    1337 E 2
    1337 F 0 A_Chase("GuardAttackLoop","GuardAttackLoop", CHF_DONTMOVE | CHF_NOPLAYACTIVE)
    Goto GuardSee
  Pain:
    1337 G 3 A_Pain
    Goto See
  Death:
    1337 H 5
    1337 I 5 A_Scream
    1337 J 5 A_NoBlocking
    1337 KLM 5
    1337 N -1
    Stop
  XDeath:
    1337 O 5 
    1337 P 5 A_XScream
    1337 Q 5 A_NoBlocking
    1337 RSTUV 5
    1337 W -1
    Stop
  Raise:
    1337 N 5
    1337 MLKJIH 5
    Goto See
  }
}