actor SSUberSoldierExMinigun 21924
{
  Scale 1.25
  Health 2000
  Radius 24
  Height 64
  Mass 5000
  Speed 8
  PainChance 20
  Monster
  +NOBLOOD
  +NOTARGET
  +DONTRIP
  +ALWAYSFAST
  +FLOORCLIP
  +LOOKALLAROUND
  +DONTHARMSPECIES
  +MISSILEMORE
  +MISSILEEVENMORE
  Species "SS"
  DamageFactor "SS", 0.0
  RadiusDamageFactor 0.20
  DropItem "PortableMedCell", 200, 1
  DropItem "PortableMedCellPack", 100, 1
  DropItem "PortableMedkit", 200
  DropItem "ArmorPlate", 200
  DropItem "HandGrenadeAmmo", 200, 1
  DropItem "MineAmmo", 200, 1
  DropItem "AmmoPack", 150
  DropItem "ExtraArmor" 256 1
  DropItem "ExplosiveMinigun", 256
  DropItem "BulletBox", 200, 50
  DropItem "BulletBox", 200, 50
  DropItem "BulletMag", 256, 8
  SeeSound ""
  PainSound "UberSoldat/Pain"
  DeathSound "supersoldier/death"
  ActiveSound "supersoldier/idle"
  Obituary "%o was terminated by a Uber Soldat."
  Tag "$ESSExpMini"
  var int user_attack;
  var int user_lowlag;
  States
  {
	Spawn:
	TNT1 A 0 NoDelay ACS_NamedExecuteAlways("ModifyMonster",0,1)
	Goto Idle
  Idle:
		EMSS A 10 A_Look
		Loop
	Idle:
		TNT1 A 0 A_ChangeFlag("NOPAIN",0)
		TNT1 A 0 HealThing(1)
		EMSS AAAA 3 A_Wander
		TNT1 A 0 A_Look
		EMSS BBBB 3 A_Wander
		TNT1 A 0 A_Look
		TNT1 A 0 A_SpawnItemEx("DeathKnightStep",0,0,5,0,0,-20)
		EMSS CCCC 3 A_Wander
		TNT1 A 0 A_Look
		EMSS DDDD 3 A_Wander
		TNT1 A 0 A_Look
		TNT1 A 0 A_SpawnItemEx("DeathKnightStep",0,0,5,0,0,-20)
		Loop
  See:
	TNT1 A 0 A_JumpIf(user_lowlag == 1,"MoreSee")
	TNT1 A 0 A_JumpIfTargetInLOS("MoreSee",0,0,0,0)
	EMSS ABCD 3 A_Chase
	Loop
  MoreSee:
	TNT1 A 0 A_SetUserVar("user_lowlag",1)
		EMSS H 10 A_PlaySound("UberSoldat/See",CHAN_VOICE,1.0,0,ATTN_IDLE)
		TNT1 A 0 A_Jump(128,2)
		EMSS H 10
		TNT1 A 0 A_SpawnItemEx("DeathKnightStep",0,0,5,0,0,-20)
		Goto SeeLoop
	SeeLoop:
		TNT1 A 0 A_ChangeFlag("NOPAIN",0)
		EMSS AAAABBBB 3 A_Chase
		TNT1 A 0 A_JumpIfInTargetLOS("Avoid",360,JLOSF_DEADNOJUMP,1000)
		TNT1 A 0 A_SpawnItemEx("DeathKnightStep",0,0,5,0,0,-20)
		EMSS CCCCDDDD 3 A_Chase
		TNT1 A 0 A_JumpIfInTargetLOS("Avoid",360,JLOSF_DEADNOJUMP,1000)
		TNT1 A 0 A_SpawnItemEx("DeathKnightStep",0,0,5,0,0,-20)
		Loop
	See2:
		TNT1 A 0
		TNT1 A 0 A_TakeInventory("Tic",999999)
		TNT1 A 0 A_ChangeFlag("NOPAIN",0)
		TNT1 A 0 A_JumpIf(user_attack < 1,"SeeLoop2")
		TNT1 A 0 A_SetUserVar("user_attack",0)
		TNT1 A 0 A_PlaySound("HeavyChaingun/Down",CHAN_WEAPON,1.0,0)
		Goto SeeLoop2
	SeeLoop2:
		EMSS AAAA 2 A_Chase//("Melee","",CHF_NOPLAYACTIVE)
		TNT1 A 0 A_JumpIfTargetInLOS("Missile",90,JLOSF_CLOSENOJUMP|JLOSF_DEADNOJUMP|JLOSF_TARGETLOS,1000,200)
		TNT1 A 0 A_JumpIfInTargetLOS("Avoid",360,JLOSF_DEADNOJUMP,1000)
		EMSS BBBB 2 A_Chase//("Melee","",CHF_NOPLAYACTIVE)
		TNT1 A 0 A_JumpIfTargetInLOS("Missile",90,JLOSF_CLOSENOJUMP|JLOSF_DEADNOJUMP|JLOSF_TARGETLOS,1000,200)
		TNT1 A 0 A_JumpIfInTargetLOS("Avoid",360,JLOSF_DEADNOJUMP,1000)
		TNT1 A 0 A_SpawnItemEx("DeathKnightStep",0,0,5,0,0,-20)
		EMSS CCCC 2 A_Chase//("Melee","",CHF_NOPLAYACTIVE)
		TNT1 A 0 A_JumpIfTargetInLOS("Missile",90,JLOSF_CLOSENOJUMP|JLOSF_DEADNOJUMP|JLOSF_TARGETLOS,1000,200)
		TNT1 A 0 A_JumpIfInTargetLOS("Avoid",360,JLOSF_DEADNOJUMP,1000)
		EMSS DDDD 2 A_Chase//("Melee","",CHF_NOPLAYACTIVE)
		TNT1 A 0 A_JumpIfTargetInLOS("Missile",90,JLOSF_CLOSENOJUMP|JLOSF_DEADNOJUMP|JLOSF_TARGETLOS,1000,200)
		TNT1 A 0 A_JumpIfInTargetLOS("Avoid",360,JLOSF_DEADNOJUMP,1000)
		TNT1 A 0 A_SpawnItemEx("DeathKnightStep",0,0,5,0,0,-20)
		TNT1 A 0 A_GiveInventory("Tic",1)
		TNT1 A 0 A_JumpIfInventory("Tic",10,"SeeLoop")
		Loop
	Missile:
		TNT1 AAA 0 A_ChangeFlag("NOPAIN",1)
		TNT1 A 0 A_TakeInventory("Tic",999999)
		TNT1 A 0 A_SetUserVar("user_attack",1)
		TNT1 A 0 A_PlaySound("weapons/expmgunspinstart",CHAN_WEAPON,1.0,0)
		EMSS EEEE 5 A_FaceTarget(45)
		TNT1 A 0 A_FaceTarget
	Refire:
		TNT1 A 0 A_PlaySound("weapons/expmgunspin",CHAN_WEAPON,1.0,1)
		TNT1 A 0 A_FaceTarget
		TNT1 AAAA 0 A_CustomMissile("MonsterTracer2",Random(36,44),0,Random(-6,6),0)
		TNT1 A 0 A_SpawnItemEx("OrangeShellCasing",10,24,40,Random(2,6),0,Random(1,3),Random(-80,-90),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		TNT1 A 0 A_SpawnItemEx("OrangeShellCasing",10,-24,40,Random(2,6),0,Random(1,3),Random(-80,-90),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		TNT1 A 0 A_PlaySound("sentient/fire",CHAN_BODY,1.0,0)
		TNT1 A 0 Bright A_CustomMissile("SSUberExplosiveTracer",Random(36,44),20,Random(5,-5),0)
		EMSS F 4 Bright A_CustomMissile("SSUberExplosiveTracer",Random(36,44),-20,Random(5,-5),0)
		TNT1 A 0 A_FaceTarget
		TNT1 AAAA 0 A_CustomMissile("MonsterTracer2",Random(36,44),0,Random(-6,6),0)
		TNT1 A 0 A_SpawnItemEx("OrangeShellCasing",10,24,40,Random(2,6),0,Random(1,3),Random(-80,-90),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		TNT1 A 0 A_SpawnItemEx("OrangeShellCasing",10,-24,40,Random(2,6),0,Random(1,3),Random(-80,-90),SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		TNT1 A 0 A_PlaySound("sentient/fire",CHAN_BODY,1.0,0)
		TNT1 A 0 Bright A_CustomMissile("SSUberExplosiveTracer",Random(36,44),20,Random(5,-5),0)
		EMSS G 4 Bright A_CustomMissile("SSUberExplosiveTracer",Random(36,44),-20,Random(5,-5),0)
		TNT1 A 0 A_MonsterRefire(0,"MissileEnd")
		TNT1 A 0 A_Jump(1,"Pause")
		TNT1 A 0 A_GiveInventory("Tic",1)
		TNT1 A 0 A_JumpIfInventory("Tic",50,"Pause")
		Loop
	MissileEnd:
		TNT1 A 0
		TNT1 A 0 A_ChangeFlag("NOPAIN",0)
		TNT1 A 0 A_SetUserVar("user_attack",0)
		TNT1 A 0 A_PlaySound("weapons/expmgunspinstop",CHAN_WEAPON,1.0,0)
		TNT1 A 0 A_Jump(64,2)
		TNT1 A 0 A_PlaySound("UberSoldat/Taunt",6,1.0,0,ATTN_IDLE)
		EMSS EE 3 A_FaceTarget
		Goto SeeLoop
	Pause:
		TNT1 A 0
		TNT1 A 0 A_ChangeFlag("NOPAIN",0)
		TNT1 A 0 A_SetUserVar("user_attack",0)
		TNT1 A 0 A_PlaySound("weapons/expmgunspinstop",CHAN_WEAPON,1.0,0)
		TNT1 A 0 A_Jump(256,1,2,3,4,5)
		EMSS EEEEEEEEEE 3 A_FaceTarget(45)
		Goto See2
	Avoid:
		TNT1 A 0
		TNT1 A 0 A_Jump(256,"AvoidLeft","AvoidRight")
		GoTo AvoidLeft
	AvoidLeft:
		EMSS E 1 A_FaceTarget
		TNT1 A 0 A_PlaySound("DeathKnight/jump",CHAN_BODY,1.0,0)
		TNT1 A 0 ThrustThing(angle*256/360+192,15,0,0)
	    EMSS E 5 A_FaceTarget
		TNT1 A 0 A_CheckSight("SeeLoop2")
		TNT1 A 0 A_JumpIfTargetInLos("Missile",90,JLOSF_DEADNOJUMP|JLOSF_TARGETLOS)
		TNT1 A 0 A_Jump(128,"SeeLoop")
		GoTo Missile
	AvoidRight:
		EMSS E 1 A_FaceTarget
		TNT1 A 0 A_PlaySound("DeathKnight/jump",CHAN_BODY,1.0,0)
		TNT1 A 0 ThrustThing(angle*256/360+64,15,0,0)
		EMSS E 5 A_FaceTarget
		TNT1 A 0 A_CheckSight("SeeLoop2")
		TNT1 A 0 A_JumpIfTargetInLos("Missile",90,JLOSF_DEADNOJUMP|JLOSF_TARGETLOS)
		TNT1 A 0 A_Jump(128,"SeeLoop")
		GoTo Missile
	Pain:
		TNT1 AAA 0 A_ChangeFlag("NOPAIN",1)
		TNT1 A 0 A_JumpIf(user_attack > 0,"WeapodDown")
		EMSS E 6 A_Pain
		Goto Avoid
	WeapodDown:
		TNT1 A 0
		TNT1 A 0 A_SetUserVar("user_attack",0)
		TNT1 A 0 A_PlaySound("weapons/expmgunspinstop",CHAN_WEAPON,1.0,0)
		EMSS E 6 A_Pain
		Goto SeeLoop
	Death:
		TNT1 AAA 0 A_StopSound(CHAN_WEAPON)
		EMSS I 5 A_ScreamAndUnblock
		EMSS J 5 A_SpawnItemEx("GibbedGenerator",0,0,0,0,0,0,0,128,0)
		EMSS K 5 A_PlaySound("DeathKnight/step",5,1.0,0)
		TNT1 A 0 A_BossDeath
		EMSS L -1
		Stop
	Raise:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx("VileHealEffect",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
		EMSS LKJI 5
		Goto See
	}
}

ACTOR SSUberExplosiveTracer : BabySentientExplosiveTracer
{
DamageType "SS"
States
{
Spawn:
    TRAC A 1 Bright
	Loop
Death:
	TNT1 A 0
	TNT1 A 0 A_SetTranslucent(0.75,1)
	TNT1 A 0 A_SpawnItem("SentientExplosiveEffect")
    MISL B 4 Bright A_Explode(Random(3,6)*5,72)
    MISL CD 3 Bright
    Stop
    }
}