ACTOR SuperiorFiend : BullFiend
{
//Creator: Titanium
//Origin: Nexus Infinity
//Sprite: ACYF
//Title: "Superior Fiend" 
    Health 800 
    Speed 12 
	Radius 26
	Height 52
    Mass 800
	Scale 1.2
	PainChance 35
    Meleedamage 12
	MeleeRange 84
	Damagefactor 0.8
	MaxTargetRange 2048
	+QUICKTORETALIATE
	+MISSILEMORE 
	+MISSILEEVENMORE
	+DONTHARMSPECIES
	+DONTHARMCLASS
	Species "Fiends"
	DamageFactor "FiendFire", 0.0
	DamageFactor "DTFiendEx", 0.0
	DropItem "LifeEssence", 180, 5
	DropItem "HEMArmorBonusMax5", 180
	DropItem "BossLifeEssence", 125, 15
	DropItem "HEMBossArmorBonusMax25", 125
	DropItem "DustMana" 150 30
	DropItem "BulletMag" 150 20
	DropItem "BulletMag" 150 20
	DropItem "Explosive Minigun" 25
    SeeSound "CyberFiend/sight"
    PainSound "CyberFiend/pain"
    DeathSound "CyberFiend/death"
    ActiveSound "CyberFiend/active"
    HitObituary "%o Became the Superior Fiend's Dinner." 
    Obituary "The Superior Fiend Puked on %o"
	Tag "\c[j5]Superior \c[i7]Fiend\c-"
	var int user_mode;
    States 
    { 
    Spawn: 
	   TNT1 A 0 A_JumpIf(user_mode == 1,"Spawn.Chaingun")
	   TNT1 A 0 A_Jump(127,"ChangeModeStay")
	Spawn2:
       ACYF A 7 A_Look
	   ACYF A 7 A_Look
       Loop 
    Spawn.Chaingun:
       ACY2 A 7 A_Look
	   ACY2 A 7 A_Look
       Loop 
    See: 
	   TNT1 A 0 A_ChangeFlag(NOPAIN,0)
	   TNT1 A 0 A_JumpIf(user_mode == 1,"See.Chaingun")
       ACYF A 0 A_PlaySound("CyberFiend/walk")
       ACYF AABB 2 A_Chase
       ACYF C 0 A_PlaySound("CyberFiend/walk")
       ACYF CCDD 2 A_Chase
	   TNT1 A 0 A_Jump(32,"ChangeMode")
       Loop 
    See.Chaingun: 
       ACY2 A 0 A_PlaySound("CyberFiend/walk")
       ACY2 AABB 2 A_Chase
       ACY2 C 0 A_PlaySound("CyberFiend/walk")
       ACY2 CCDD 2 A_Chase
	   TNT1 A 0 A_Jump(32,"ChangeMode2")
       Loop 
	ChangeMode:
		TNT1 A 0 A_ChangeFlag(NOPAIN,1)
		TNT1 A 0 A_PlaySound("NemesisMinigun/up",2)
		TNT1 A 0 A_JumpIf(user_mode == 1,"ChangeMode2")
		ACYF H 20 A_FaceTarget
		TNT1 A 0 A_SetUserVar("user_mode",1)
		ACY2 H 10 A_FaceTarget
		Goto See
	ChangeModeStay:
		TNT1 A 0 A_ChangeFlag(NOPAIN,1)
		TNT1 A 0 A_PlaySound("NemesisMinigun/up",2)
		TNT1 A 0 A_JumpIf(user_mode == 1,"ChangeMode2")
		ACYF H 20 A_FaceTarget
		TNT1 A 0 A_SetUserVar("user_mode",1)
		ACY2 H 10 A_FaceTarget
		Goto Spawn.Chaingun
	ChangeMode2:
		TNT1 A 0 A_ChangeFlag(NOPAIN,1)
		TNT1 A 0 A_PlaySound("NemesisMinigun/change",2)
		ACY2 H 20 A_FaceTarget
		TNT1 A 0 A_PlaySound("Weapon/FLAKSNAP",3)
		TNT1 A 0 A_SetUserVar("user_mode",0)
		ACYF H 10 A_FaceTarget
		Goto See
    Missile:
	   TNT1 A 0 A_JumpIf(user_mode == 1,"Missile.Chaingun")
	   TNT1 A 0 A_Jump(128,"TripleShot","3Shots","FuelBall")
	   Goto Normal
    Missile.Chaingun:
	   Goto ExMinigun
	Normal:		
		ACY2 IJ 7 A_FaceTarget
		ACYF G 7 A_CustomMissile("SCyberFiendBall",32,0,0)
		Goto See	
	3Shots:		
		ACY2 IJ 7 Bright A_FaceTarget
		ACYF G 7 A_CustomMissile("SCyberFiendBall",32,0,0)
		ACY2 IJ 6 Bright A_FaceTarget
		ACYF G 6 A_CustomMissile("SCyberFiendBall",32,0,0)	
		ACY2 IJ 5 Bright A_FaceTarget
		ACYF G 5 A_CustomMissile("SCyberFiendBall",32,0,0)	
		ACYF E 2 A_FaceTarget
		Goto See	
    TripleShot:
		ACY2 I 0 A_PlaySound("CyberFiend/Attack")
		ACY2 IIJJ 6 Bright A_FaceTarget
		ACYF G 0 A_CustomMissile("SCyberFiendBall",32,0,0)
		ACYF G 0 A_CustomMissile("SCyberFiendBall",32,0,10)
		ACYF G 8 A_CustomMissile("SCyberFiendBall",32,0,-10)
		Goto See  
	FuelBall:		
		ACY2 IJ 8 Bright A_FaceTarget
		ACYF G 8 A_CustomMissile("SCyberFiendBigBall",32,0,0)
		Goto See
	ExMinigun:
		ACY2 EE 5 A_FaceTarget
	Refire:
		TNT1 A 0 A_PlaySound("sentient/fire")
		TNT1 K 0 A_CustomMissile("SCyberFiendExTracer",32,0,FRandom(-8,8),0)
		ACY2 E 3 Bright A_FaceTarget
		TNT1 A 0 A_PlaySound("sentient/fire")
		TNT1 K 0 A_CustomMissile("SCyberFiendExTracer",32,0,FRandom(-8,8),0)
		ACY2 F 3 Bright A_FaceTarget
		TNT1 A 0 A_Jump(16,"Pause")
		TNT1 A 0 A_SpidRefire
		Loop
	Pause:
		TNT1 A 0
		ACY2 EE 5
		Goto See  
    Melee: 
	   TNT1 A 0 A_JumpIf(user_mode == 1,"Missile.Chaingun")
       ACYF E 0 A_PlaySound("CyberFiend/Attack")
       ACYF EF 5 A_FaceTarget
	   TNT1 A 0 A_MeleeAttack
       ACYF G 4 A_MeleeAttack
       Goto See 
    Pain: 
	   TNT1 A 0 A_JumpIf(user_mode == 1,"Pain.Chaingun")
       ACYF H 2
       ACYF H 2 A_Pain
	   TNT1 A 0 A_Jump(87,"Missile")
       Goto See
    Pain.Chaingun: 
       ACY2 H 2
       ACY2 H 2 A_Pain
	   TNT1 A 0 A_Jump(87,"Missile")
       Goto See
	XDeath:
    Death: 
       ACYF I 5
	   TNT1 AA 0 A_CustomMissile("RedBloodCloud", random(30,60),0,random(0,360),CMF_AIMDIRECTION,random(0,360))
	   ACYF J 0 A_SpawnItemEx("SuperiorCyberFiendArm",10,0,32,0,Random(6,8),0,0,SXF_CLIENTSIDE,0)
       ACYF J 5 A_Scream
       ACYF K 4 
       ACYF L 4 A_NoBlocking
       ACYF M 4 A_SpawnItem("BodyCrash",0,0,0,0)
       ACYF N -1 
       Stop 
    Raise: 
	   TNT1 A 0
	   TNT1 A 0 A_SpawnItemEx("VileHealEffect",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
       ACYF NMLKJI 5 
       Goto See 
    } 
}

Actor SCyberFiendExTracer : BabySentientExplosiveTracer
{
DamageType "DTFiendEx"
Decal DoomImpScorch
}

ACTOR SCyberFiendBall
{
   Radius 8
   Height 8
   Speed 25
   FastSpeed 35
   Damage 10
   Damagetype "FiendFire"
   SpawnID 250
   Scale 1.0
   PROJECTILE
   RENDERSTYLE ADD
   DECAL DoomImpScorch
   ALPHA 0.95
   SeeSound "monsters/newfireshoot"
   DeathSound "monsters/newfireexplode"
   States
   {
   Spawn: 
      BRTB AAABBB 1 Bright A_SpawnItemEx("SCyberFiendBallTrail")
      Loop
   Death:
	  TNT1 A 0
	  TNT1 A 0 A_Explode(12,64)
	  TNT1 A 0 A_SpawnItemEx("GreenParticleSpawner") 
	  TNT1 AAA 0 A_CustomMissile("Kaboom7",0,0,random(0,360),2,random(0,360))
	  TNT1 AAA 0 A_CustomMissile("SmokeFX4",0,0,random(0,360),2,random(0,360))
      BRTB CDE 5 Bright
      Stop
   }
}

Actor SCyberFiendBallTrail
{       
   	PROJECTILE
   	+NOCLIP
	+CLIENTSIDEONLY
    +NOTIMEFREEZE
    Scale 1
    Renderstyle ADD
	Alpha 0.6
	Scale 0.8
	States
	{   
	Spawn:
	    TNT1 A 0
		TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
	    BRTB AAABBB 1 Bright A_FadeOut(0.05)
	    Stop
	Toaster:
		TNT1 A 0
		Stop	
	}
}

ACTOR SCyberFiendBigBall : NemesisFiendBall
{
  Speed 30
  Damage 10
  Scale 1.2
  SeeSound "comet/launch"
  DeathSound "comet/explosion"
  +FORCERADIUSDMG
  States
  {
  Spawn: 
	ACY3 AAABBBCCCDDDEEEFFF 1 Bright A_SpawnItemEx("SCyberFiendBigBallTrail")
	Loop
  Death:
	TNT1 A 0 A_Explode(24,120,0)
	TNT1 A 0 A_SpawnItemEx("GreenParticleSpawner",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0) 
	TNT1 AAA 0 A_CustomMissile("SmokeFX4",0,0,random(0,360),CMF_AIMDIRECTION,random(0,360))
    TNT1 A 0 A_CustomMissile("SCyberFiendHellBoom",0,0,0,6)
    TNT1 A 0 A_CustomMissile("SCyberFiendHellBoom",0,0,45,6)
    TNT1 A 0 A_CustomMissile("SCyberFiendHellBoom",0,0,90,6)
    TNT1 A 0 A_CustomMissile("SCyberFiendHellBoom",0,0,135,6)
    TNT1 A 0 A_CustomMissile("SCyberFiendHellBoom",0,0,180,6)
    TNT1 A 0 A_CustomMissile("SCyberFiendHellBoom",0,0,225,6)
    TNT1 A 0 A_CustomMissile("SCyberFiendHellBoom",0,0,270,6)
    TNT1 A 0 A_CustomMissile("SCyberFiendHellBoom",0,0,315,6)
	ACY3 GHI 5 Bright
	stop
  }
}

Actor SCyberFiendBigBallTrail : NemesisFiendBallTrail
{	  
  Scale 1.2
  States
  {  
  Spawn:
	TNT1 A 0
	TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1,"NULL")
	ACY3 AAABBBCCCDDDEEEFFF 1 Bright Bright A_FadeOut(0.05)
	Stop	
	}
}

ACTOR SCyberFiendHellBoom : HellBoom
{
  States
  {
  Spawn:
	TNT1 AAAAA 3 A_SpawnItem("SCyberFiendHellFX",0,0)
	Stop
  }
}

ACTOR SCyberFiendHellFX : HellFX
{     States
  {
  Spawn:
	ACY4 A 3 Bright
	ACY4 B 3 Bright A_Explode(6,96)
	ACY4 CDEFGHIJ 3 Bright
	stop
  }
}

ACTOR SuperiorCyberFiendArm : DTFiendArm
{
	Scale 1.2
    States
	{
	Spawn:
         ACY1 ABCDEFGH 3 A_SpawnItemEx("NewFlyingBlood",0,0,0,Random(-4,4),Random(-4,4),Random(-4,4),0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
         Loop
	Death:
	Crash:
		ACY1 I 150
		ACY1 I 5 A_FadeOut(0.1,1)
		Wait
	}
}