Actor IsPlayer : Inventory //sarge marge time
{
inventory.maxamount 1
}

Actor TargetIsAMarine : Inventory
{
inventory.maxamount 1
}

Actor IsHoldingPosition : Inventory
{
inventory.maxamount 1
}

ACTOR MarineSpawnChecker
{
MONSTER
-COUNTKILL
+FRIENDLY
Health 1
Radius 24
Height 52
Damagetype "SpawnMarine"
	States
	{
	Spawn:
	    TNT1 A 0
		TNT1 A 0 A_GiveInventory("TargetIsAMarine", 1)
	    TNT1 A 0
		TNT1 A 0 A_Explode(1100, 32)
		Stop
	Death:
	TNT1 A 1
	Stop
}
}







Actor OrderTitle1
{
  Height 1
  Radius 1
  Mass 0
  +Missile
  +NoBlockMap
  +NoGravity
  +DontSplash
  +FORCEXYBILLBOARD
  +CLIENTSIDEONLY
  +THRUACTORS
  +GHOST
  +THRUGHOST
  RenderStyle Add
  Scale 0.2
  Speed 1
  States
  {
  Spawn:
    CMMN A 2 BRIGHT
	CMMN AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 Bright A_FadeOut(0.04)
    Stop
  }
}


Actor OrderTitle2: OrderTitle1
{
  States
  {
  Spawn:
    CMMN B 2 BRIGHT
	CMMN BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB 1 Bright A_FadeOut(0.04)
    Stop
  }
}


ACTOR BaseMarine : SwitchableDecoration
{
	Scale 1.0
	Health 100
	Radius 16
	Height 56
	GibHealth 50
	Mass 400
	MONSTER
	MaxTargetRange 3000
	DropItem "HealthFlask" 40
	DropItem "ArmorCharge" 40
	DropItem "AmmoPack" 20
	DropItem "HandGrenadeAmmo" 50 1
	DropItem "MineAmmo" 25 1
	Speed 3
	FastSpeed 20
	AttackSound "weapons/12gaugefire"
	DeathSound "cpm/death"
	PainSound "*pain50"
	PainChance 250
	Species "Player"
	DamageFactor 0.2
	DamageFactor "Player", 0.0
	DamageFactor "Players", 0.0
	DamageFactor "PlayerDevBall", 0.0
	DamageFactor "PlayerDevBall2", 0.0
	DamageFactor "PlayerDevTracer", 0.0
	DamageFactor "PlayerExplosive", 0.0
	DamageFactor "PlayerDTRG", 0.0
	DamageFactor "PDTBFG", 0.0
	DamageFactor "PDTBFGTracer", 0.0
	DamageFactor "LegendaryPlayer", 0.0
	DamageFactor "LegendaryGuruPlayer", 0.0
	+QUICKTORETALIATE
	+LOOKALLAROUND
	+PUSHABLE
	+NOTELESTOMP
	+SLIDESONWALLS
	+FLOORCLIP
	-FASTER
	+MTHRUSPECIES
	+THRUSPECIES
	+DONTHURTSPECIES
	+NOBLOCKMONST 
	+USESPECIAL
	-CANNOTPUSH
	-COUNTKILL
	-THRUACTORS
	Activation THINGSPEC_Switch
	Damage 6
	MaxStepHeight 48
	MaxDropOffHeight 48
	MeleeDamage 4
	var int user_guarding;
	States
	{
	Spawn:
		PLA3 A 1
		"####" A 0 A_GiveInventory("TargetIsAMarine")
		PLA3 A 1 A_Look
		Loop
	ForgetTarget:
		"####" A 0 A_ClearTarget
		Goto See
	See2:
		"####" A 0 A_ClearTarget
		"####" EEEEEEEEE 2 A_Chase("Missile","Missile",CHF_DONTMOVE)
		"####" A 0 A_FaceTarget
		Loop
	Idle:	
	See:
		"####" A 0 A_JumpIf(user_guarding == 1,"See2")
		"####" A 0 A_ChangeFlag("NODROPOFF", 0)	
		"####" A 0 A_ChangeFLag("FRIENDLY", 1)
		"####" A 0 A_JumpIfInTargetInventory("TargetIsAMarine", 1, "FollowPlayer")
		"####" A 0 A_ChangeFlag("MISSILEMORE", 1)
		"####" A 0 A_ChangeFlag("MISSILEEVENMORE", 1)
		"####" A 0 A_Recoil(-1)
		"####" A 0 A_JumpIfInTargetInventory("TargetIsAMarine", 1, "FollowPlayer")
		"####" AA 1 A_Chase
		"####" A 0 A_ChangeFlag("FASTER", 0)
		"####" A 0 A_Recoil(-1)
		"####" A 0 A_JumpIfInTargetInventory("TargetIsAMarine", 1, "FollowPlayer")
		"####" A 0 A_JumpIfInTargetInventory("IsPlayer", 1, "FollowPlayer")
		"####" BB 1 A_Chase
		"####" A 0 
		"####" A 0 A_Recoil(-1)
		"####" A 0 A_JumpIfInTargetInventory("TargetIsAMarine", 1, "FollowPlayer")
		"####" BB 1 A_Chase
		"####" A 0 A_ChangeFLag("FRIENDLY", 0)
		"####" A 0 A_Recoil(-1)
		"####" A 0 A_JumpIfInTargetInventory("TargetIsAMarine", 1, "FollowPlayer")
		"####" CC 1 A_Chase
		"####" A 0 
		"####" A 0 A_ChangeFLag("FRIENDLY", 1)
		"####" A 0 A_Recoil(-1)
		"####" A 0 A_JumpIfInTargetInventory("TargetIsAMarine", 1, "FollowPlayer")
		"####" CC 1 A_Chase
		"####" A 0 A_Recoil(-1)
		"####" A 0 A_JumpIfInTargetInventory("TargetIsAMarine", 1, "FollowPlayer")
		"####" DD 1 A_Chase
		
		"####" A 0 A_Recoil(-1)
		"####" A 0 A_JumpIfInTargetInventory("TargetIsAMarine", 1, "FollowPlayer")
		"####" DD 1 A_Chase
		"####" A 0 A_Recoil(-1)
		"####" A 0 A_CheckSight("ForgetTarget")
		"####" A 0 A_JumpIfInTargetInventory("TargetIsAMarine", 1, "FollowPlayer")
		"####" A 0 A_CheckSight("FollowPlayer")
		"####" A 0 A_ChangeFLag("FRIENDLY", 0)
		"####" A 0 A_ChangeFlag("SHOOTABLE", 0)
		"####" AA 1 A_Chase
		"####" A 0 
		"####" A 0 A_Recoil(-1)
		"####" A 0 A_JumpIfCloser(200, "Waits")
		"####" A 0 A_CheckSight("CheckIfPlayerSee")
		"####" BB 1 A_Chase
		"####" A 0 A_Recoil(-1)
		"####" A 0 A_JumpIfInTargetInventory("IsPlayer", 1, "FollowPlayer")
		"####" A 0 A_JumpIfCloser(200, "Waits")
		"####" A 0 A_CheckSight("CheckIfPlayerSee")
		"####" CC 1 A_Chase
		"####" A 0 
		"####" A 0 A_Recoil(-1)
		"####" A 0 A_JumpIfInTargetInventory("IsPlayer", 1, "FollowPlayer")
		"####" A 0 A_JumpIfCloser(200, "Waits")
		"####" A 0 A_CheckSight("CheckIfPlayerSee")
		"####" DD 1 A_Chase
		"####" A 0 A_Recoil(-1)
		"####" A 0 A_JumpIfInTargetInventory("IsPlayer", 1, "FollowPlayer")
		"####" A 0 A_JumpIfCloser(200, "Waits")
		"####" A 0 A_CheckSight("CheckIfPlayerSee")
		"####" A 0 A_JumpIfCloser(200, "Waits")
		"####" A 0 A_JumpIfInTargetInventory("IsPlayer", 1, "FollowPlayer")
		"####" A 0 A_Jump(128,11)
		Goto See
	FollowPlayer:
	    "####" A 0 A_ChangeFlag("FRIENDLY", 0)
		"####" A 0 A_ChangeFlag("FASTER", 1)
		"####" A 0 A_ChangeFlag("SHOOTABLE", 0)
	    "####" A 0 A_JumpIfCloser(150, "Waits")
		"####" A 0 A_ChangeFlag("MISSILEMORE", 0)
		"####" A 0 A_ChangeFlag("MISSILEEVENMORE", 0)
		"####" A 1 A_Chase
		"####" A 0 A_Recoil(-1)
		"####" A 0 A_Recoil(-1)
		"####" AA 1 A_Chase
		"####" A 0 A_Recoil(-1)
		"####" BB 1 A_Chase
		"####" A 0 A_CheckSight("CheckIfPlayerSee")
		"####" A 0 
		"####" A 0 A_Recoil(-1)
		"####" BB 1 A_Chase
		"####" A 0 A_Recoil(-1)
		"####" CC 1 A_Chase
		"####" A 0 
		"####" A 0 A_Recoil(-1)
		"####" CC 1 A_Chase
		"####" A 0 A_Recoil(-1)
		"####" DD 1 A_Chase
		"####" A 0 A_Recoil(-1)
		"####" DD 1 A_Chase
		"####" A 0 A_CheckSight("CheckIfPlayerSee")
		"####" A 0 A_Recoil(-1)
		"####" AA 1 A_Chase
		"####" A 0 A_Recoil(-1)
		"####" A 0 
		"####" BB 1 A_Chase
		"####" A 0 A_Recoil(-1)
		"####" BB 1 A_Chase
		"####" A 0 
		"####" A 0 A_Recoil(-1)
		"####" CC 1 A_Chase
		"####" A 0 A_CheckSight("CheckIfPlayerSee")
		"####" A 0 A_Recoil(-1)
		"####" CC 1 A_Chase
		"####" A 0 A_Recoil(-1)
		"####" DD 1 A_Chase
		"####" A 0 A_Recoil(-1)
		"####" DD 1 A_Chase
		"####" A 0 
		"####" A 0 A_Recoil(-1)
		"####" A 0 A_ChangeFlag("FRIENDLY", 1)
		"####" A 0 A_JumpIfTargetInLOS("See")
		"####" A 0 A_ChangeFlag("FRIENDLY", 0)
		"####" A 0 A_CheckSight("CheckIfPlayerSee")
		Loop
	CheckRangeToWait:
		"####" A 0
		"####" A 0 A_JumpIfCloser(150, "Waits")
		Goto FollowPlayer
	CheckIfPlayerSee:
		"####" A 0
		"####" AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_FastChase
		"####" A 0 A_ChangeFlag("SHOOTABLE", 0)
		"####" A 0 A_ChangeFLag("FRIENDLY", 0)
		"####" A 0 A_JumpIfCloser(1000, 2)
		Goto Pathfind
		"####" AAA 0
		Goto FollowPlayer
	Pathfind:
		"####" A 0
		"####" A 0 A_ChangeFLag("FRIENDLY",0)
		"####" A 0 A_JumpIFInTargetInventory("IsPlayer", 1, 1)
		Goto FollowPlayer
		"####" A 0 A_SetTranslucent(0.0)
		"####" A 0 A_ChangeFlag("SHOOTABLE",0)
		"####" A 0 A_ChangeFlag("NOCLIP",1)
		"####" A 0 A_ChangeFlag("SOLID",0)
		"####" A 0 A_Warp(AAPTR_TARGET)
		"####" A 0 A_SetTranslucent(1.0)
		"####" A 0 A_ChangeFlag("SHOOTABLE",1)
		"####" A 0 A_ChangeFlag("NOCLIP",0)
		"####" A 0 A_ChangeFlag("SOLID",1)
		"####" A 0 A_ChangeFLag("FRIENDLY",1)
		Goto FollowPlayer
	BecomeEnemy23:
		"####" E 1
		"####" A 0 A_ClearTarget
		"####" A 0 A_ChangeFlag("SHOOTABLE", 0)
		"####" A 0 A_ChangeFLag("FRIENDLY", 0)
		Goto FollowPlayer
	Waits:
		"####" E 1
		"####" A 0 A_JumpIfInTargetInventory("IsPlayer", 1, 2)
		"####" A 0 A_ClearTarget
		Goto See
		"####" A 0 A_ChangeFlag("FRIENDLY", 0)
		"####" A 0 A_ChangeFlag("MISSILEMORE", 1)
		"####" A 0 A_ChangeFlag("MISSILEEVENMORE", 1)
		"####" A 0 A_ChangeFlag("SHOOTABLE", 0)
		"####" A 0 A_ChangeFlag("SOLID", 0)
		"####" A 0 A_JumpIfInTargetInventory("TargetIsAMarine", 1, "BecomeEnemy23")
		"####" A 0 A_Jump(32, "Waits2")
		"####" A 0 A_Jump(32, "Waits3")
		"####" E 4 A_Stop
		"####" E 4 A_Stop
		"####" A 0 A_Stop
		"####" A 0 A_CheckSight("FollowPlayer")
		"####" A 0 A_ChangeFLag("FRIENDLY", 1)
		"####" A 0 A_ClearTarget
		"####" A 0 A_ChangeFlag("SHOOTABLE", 1)
		"####" E 0 A_Look
		"####" A 0 A_ChangeFLag("FRIENDLY", 0)
		"####" A 0 A_ChangeFlag("SHOOTABLE", 0)
		"####" E 1 A_LookEx(0, 0, 0, 0, 0, "FollowPlayer")
		"####" A 0 A_CheckSIght("FollowPlayer")
		"####" A 0 A_ChangeFlag("SHOOTABLE", 1)
		"####" A 0 A_JumpIfCloser(200, "Waits")
		Goto FollowPlayer
	Waits2:
		"####" A 0 A_SetAngle(random(90, -90) + angle)
		"####" E 6 A_Stop
		"####" E 6 A_Stop
		"####" A 0 A_CheckSight("FollowPlayer")
		"####" A 0 A_ChangeFLag("FRIENDLY", 1)
		"####" A 0 A_ClearTarget
		"####" A 0 A_ChangeFlag("SHOOTABLE", 1)
		"####" A 0 A_Look
		"####" A 0 A_ChangeFLag("FRIENDLY", 0)
		"####" A 0 A_ChangeFlag("SHOOTABLE", 0)
		"####" E 1 A_LookEx(0, 0, 0, 0, 0, "FollowPlayer")
		"####" A 0 A_CheckSIght("FollowPlayer")
		"####" A 0 A_ChangeFlag("SHOOTABLE", 1)
		"####" A 0 A_JumpIfCloser(300, "Waits")
		Goto FollowPlayer
	Waits3:
		"####" A 0 A_SetAngle(random(90, -90) + angle)
		"####" E 4 A_Stop
		"####" E 4 A_Stop
		"####" A 0 A_CheckSight("FollowPlayer")
		"####" A 0 A_ChangeFLag("FRIENDLY", 1)
		"####" A 0 A_ClearTarget
		"####" A 0 A_ChangeFlag("SHOOTABLE", 1)
		"####" A 0 A_Look
		"####" A 0 A_ChangeFLag("FRIENDLY", 0)
		"####" A 0 A_ChangeFlag("SHOOTABLE", 0)
		"####" E 1 A_LookEx(0, 0, 0, 0, 0, "FollowPlayer")
		"####" A 0 A_CheckSIght("FollowPlayer")
		"####" A 0 A_ChangeFlag("SHOOTABLE", 1)
		"####" A 0 A_JumpIfCloser(300, "Waits")
		Goto FollowPlayer
	Pause:
		"####" E 20
		Goto See
	Missile:
        "####" A 0
        "####" A 0 A_ChangeFlag("NODROPOFF", 1)
		"####" A 0 A_JumpIfInTargetInventory("TargetIsAMarine", 1, "FollowPlayer")
		"####" A 0 A_JumpIfInTargetInventory("IsPlayer", 1, "CheckRangeToWait")
		"####" A 0 A_ChangeFlag("SHOOTABLE", 1)
		"####" A 0 A_ChangeFlag("SOLID", 0)
		"####" A 0 A_JumpIfCloser(200, "Retreat")
		"####" A 0 A_FaceTarget
		"####" A 1 A_Chase ("","")
		"####" A 0 A_JumpIfInTargetInventory("IsPlayer", 1, "CheckRangeToWait")
		Goto Strafe
	Strafe:
		"####" A 0 A_Jump(128, "Attack")
		"####" A 0 ThrustThing(Angle*256/360+64,12,0,0)
		"####" AABBCCDD 2 A_Chase
		"####" A 0 A_Stop
		Goto Attack
	Attack:
		"####" E 10
		Goto See
	Retreat:
		"####" A 0
		"####" A 2 A_Recoil(4)
		"####" A 0 A_FaceTarget
		"####" A 0 
		"####" B 2 A_Recoil(4)
		"####" A 0 A_FaceTarget
		"####" A 0 
		"####" C 2 A_Recoil(4)
		"####" A 0 A_FaceTarget
		"####" D 2 A_Recoil(4)
		"####" A 0 A_FaceTarget
		Goto Attack
	Pain:
		"####" G 2
		"####" G 2 A_Pain
		Goto See+1
	Active:
		"####" A 0 A_CustomMissile ("OrderTitle2", 10, 0, 0, 2, 90)
		"####" A 0 A_SetUserVar(user_guarding,1)
		"####" A 10 A_FaceTarget
		Goto See2
	InActive:
		"####" A 0 A_CustomMissile ("OrderTitle1", 10, 0, 0, 2, 90)
		"####" A 0 A_SetUserVar(user_guarding,0)
		"####" A 10 A_FaceTarget
		Goto See
	Death:
		"####" A 0 A_GiveToTarget("MarineKilled",1)
		"####" A 0 A_StopSound(CHAN_WEAPON)
		"####" A 0 A_ChangeFlag("USESPECIAL", 0)
		"####" A 0 A_Scream
		"####" I 6 A_NoBlocking
		"####" JKLM 6
		"####" M -1
		Stop
	XDeath:
		"####" A 0 A_GiveToTarget("MarineKilled",1)
		"####" A 0 A_ChangeFlag("USESPECIAL", 0)
		"####" Q 3 A_XScream
		"####" R 3 A_SpawnItemEx("GibbedGenerator",0,0,0,0,0,0,0,128)
		"####" S 3 A_NoBlocking
		"####" TUV 3
		"####" W -1
		Stop
		}
}