ACTOR Exetior : GenericBoss //I AM GOD
{ //Scripted (Can break the spooky spawn limit as well as the dice removing the enemy)
//Creator: Dr. Sticky & Fluffy
//Origin: Nexus Infinity
//Sprite: EXE_
//Title: "Exetior"
  Health 6666
  Radius 20
  Height 56
  Mass 0x7FFFFFFF
  Speed 4
  FloatSpeed 7
  PainChance 30
  Monster
  MeleeDamage 40
  DamageFactor 0.2
  DamageFactor "Legendary", 0.1
  DamageFactor "Legendary1", 0.0
  DamageFactor "LegendaryPlayer", 0.3
  DamageFactor "LegendaryGuru", 0.1
  DamageFactor "LegendaryGuruPlayer", 0.3
  DamageFactor "PDTBFG", 0.25
  DamageFactor "PDTBFGTracer", 0.25
  DamageFactor "PlayerDevBall", 0.125
  DamageFactor "PlayerDevBall2", 0.125
  DamageFactor "PlayerDTBFGRailgunSlug", 0.125
  DamageFactor "PlayerDevTracer", 0.125
  DamageFactor "DBFG10K2", 0.65
  DamageFactor "PlayerDBFG10K2", 0.65
  DamageFactor "DBFG2", 0.65
  DamageFactor "PlayerDBFG2", 0.65
  DamageFactor "PlayerDTRG", 0.5
  DamageFactor "PyroShot", 0.2
  DamageFactor "Hell", 0.0
  DropItem "BossLifeEssence" 256
  DropItem "BossArmorBonusMax" 256
  Species "Hell"
  -FLOORCLIP
  +NOCLIP
  +QUICKTORETALIATE
  +NOTIMEFREEZE
  +SEEINVISIBLE
  +NOFEAR
  +NOICEDEATH //Noice death
  SeeSound "Exetior/hello"
  PainSound "Exetior/pain"
  DeathSound "Exetior/death"
  ActiveSound "Exetior/active"
  BloodColor "Red"
  MeleeSound "Exetior/melee"
  Tag "\c[b2]Exetior\c-"
  Obituary "\c[d4]I AM GOD I AM GOD I AM GOD I AM GOD I AM GOD I AM GOD I AM GOD I AM GOD I AM GOD I AM GOD I AM GOD I AM GOD I AM GOD I AM GOD I AM GOD I AM GOD I AM GOD I AM GOD I AM GOD I AM GOD I AM GOD I AM GOD I AM GOD I AM GOD I AM GOD\c-"
  var int user_music;
  var int user_secondmusic;
  var int user_speed;
  var int user_startspeed;
  var int user_realstartspeed;
  var int user_aurascript;
  var int user_seecounter;
  var int user_speedcounter;
  var int user_cloaked;
  States
  {
  Spawn:
    TNT1 A 0
	TNT1 A 0 A_SetUserVar("user_startspeed",ACS_NamedExecuteWithResult("Hem_GetCurrentSpeed"))
	TNT1 A 0 A_ChangeFlag(FLOATBOB,1)
	TNT1 A 0 ThrustThingZ(0,2,0,1)
	TNT1 A 0 A_JumpIf(user_aurascript == 1,3)
	TNT1 A 0 ACS_NamedExecuteAlways("ExetiorAura",0)
	TNT1 A 0 A_SetUserVar("user_aurascript",1)
	TNT1 A 0 A_SetUserVar("user_realstartspeed",ACS_NamedExecuteWithResult("Hem_GetCurrentSpeed"))
	TNT1 A 0 A_PlaySound("Exetior/horror",5,1.0,TRUE)
	EXE_ AAAAAA 5 Bright A_Look
	TNT1 A 0 A_Stop
  SpawnLoop:
    EXE_ A 5 Bright A_Look
	Loop
  Idle:
    TNT1 A 0 A_JumpIfInventory("MarineKilled",1,"Rekt")
	TNT1 A 0 A_SetUserVar("user_speedcounter",0)
	TNT1 A 0 A_SetUserVar("user_startspeed",user_realstartspeed*2)
	TNT1 A 0 A_ChangeFlag(FLOATBOB,1)
	TNT1 A 0 ThrustThingZ(0,2,0,1)
	EXE_ AAAAAA 5 Bright A_Look
	TNT1 A 0 A_Stop
  IdleLoop:
    EXE_ A 5 Bright A_Look
	Loop
  See:
    TNT1 A 0 ACS_NamedExecuteAlways("Hem_SetSpeed",0,user_startspeed)
	TNT1 A 0 A_ChangeFlag(FLOATBOB,0)
	TNT1 A 0 A_ChangeFlag(FLOAT,1)
	TNT1 A 0 A_ChangeFlag(NOGRAVITY,1)
	TNT1 A 0 A_ChangeFlag(NOCLIP,1)
	TNT1 A 0 A_Stop
  Seeloop:
    TNT1 A 0 A_JumpIf(user_music == 1,3)
    TNT1 A 0 ACS_NamedExecuteAlways("InfinityMusic",0,2096,2007)
	TNT1 A 0 A_SetUserVar("user_music",1)
    EXE_ BBB 1 Bright A_Chase("Melee","")
	EXE_ B 1 Bright A_Chase
	TNT1 A 0 A_JumpIfTargetInLOS("TryMove",10,JLOSF_TARGETLOS) //KEEP.... LOOKING
	EXE_ BBB 1 Bright A_Chase("Melee","")
	EXE_ B 1 Bright A_Chase
	TNT1 A 0 A_JumpIfTargetInLOS("TryMove",10,JLOSF_TARGETLOS)
	EXE_ BBB 1 Bright A_Chase("Melee","")
	EXE_ B 1 Bright A_Chase
	TNT1 A 0 A_JumpIfTargetInLOS("TryMove",10,JLOSF_TARGETLOS)
	TNT1 A 0 A_SetUserVar("user_seecounter",user_seecounter+Random(1,2))
	Loop
  TryMove:
    TNT1 A 0 A_JumpIf(user_seecounter >= 90,"Teleport")
	TNT1 A 0 A_JumpIfCloser(350,"ChargeMelee")
	TNT1 A 0 A_SetUserVar("user_seecounter",user_seecounter+Random(1,2))
    TNT1 A 0 A_Jump(256,"Rush","SpeedAttack","Airdodge")
  AirDodge:
	EXE_ I 0 A_Jump(255,"Right","Left","Back","BackLeftRange","BackRightRange")
	Goto See
  Right:
	EXE_ I 0
	EXE_ I 0 ThrustThing(angle*256/360+64,150,0,0)
	EXE_ III 3 Bright A_Chase
	Goto See
  Left:
	EXE_ I 0
	EXE_ I 0 ThrustThing(angle*256/360+192,150,0,0)
	EXE_ III 3 Bright A_Chase
	Goto See
  Back:
	EXE_ I 0
	EXE_ I 0 ThrustThing(angle*256/360+128,150,0,0)
	EXE_ III 3 Bright A_Chase
	Goto See
  BackLeftRange:
	EXE_ I 0
	EXE_ I 0 ThrustThing(angle*256/360+random(133,187),150,0,0)
	EXE_ III 3 Bright A_Chase
	Goto See
  BackRightRange:
	EXE_ I 0
	EXE_ I 0 ThrustThing(angle*256/360+random(69,123),150,0,0)
	EXE_ III 3 Bright A_Chase
	Goto See
  ChargeMelee:
	TNT1 A 0 A_PlaySound("Exetior/dash",6)
	TNT1 A 0 A_Stop
	TNT1 A 0 A_Jump(60,"Rush","SpeedAttack","Airdodge")
	TNT1 A 0 A_ChangeFlag(NOCLIP,0)
	TNT1 A 0 A_ChangeFlag(FLOAT,0)
	TNT1 A 0 A_ChangeFlag(NOGRAVITY,0)
	EXE_ A 1 Bright A_FaceTarget
	TNT1 A 0 ThrustThingZ(0,20,1,1)
	TNT1 A 0 A_Recoil(-40)
  Melee:
    EXE_ A 4 Bright A_FaceTarget
    EXE_ KL 3 Bright
	TNT1 A 0 A_CustomMeleeAttack(random(110,250),"singenjitsu/melee","none","Exectior")
	EXE_ M 3 Bright A_GiveToTarget("ExetiorFuckery",1)
	TNT1 A 0 A_JumpIfInventory("MarineKilled",1,"Rekt2")
	Goto See
  Missile:
    TNT1 A 0 A_SetShootable
    TNT1 A 0 A_UnsetInvulnerable
    TNT1 A 0 A_SetTranslucent(1)
	TNT1 A 0 A_JumpIfCloser(350,"ChargeMelee")
	TNT1 A 0 A_JumpIfInventory("MarineKilled",1,"Rekt")
    TNT1 A 0 A_Jump(32,"Super")
    TNT1 A 0 A_Jump(64,"Seeker")
  Normal:
    EXE_ B 9 Bright A_FaceTarget
	TNT1 A 0 A_CustomMissile("LegSoulBall", 28, 0, 0)
	TNT1 A 0 A_CustomMissile("LegSoulBall", 28, 0, -5)
	TNT1 A 0 A_CustomMissile("LegSoulBall", 28, 0, 5)
	TNT1 A 0 A_CustomMissile("LegSoulBall", 28, 0, -10)
	TNT1 A 0 A_CustomMissile("LegSoulBall", 28, 0, 10)
	TNT1 A 0 A_Jump(88,"Seeker")
	TNT1 A 0 A_JumpIfInventory("MarineKilled",1,"Rekt")
	Goto See
  Seeker:
	EXE_ BB 10 Bright A_FaceTarget
	TNT1 A 0 A_PlaySound("ground/hoofslam", 4)
	TNT1 A 0 A_Custommissile("NemesisImpBallSeek",16,0,0,0)
	TNT1 A 0 A_Custommissile("NemesisImpBallSeek",16,0,15,0)
	TNT1 A 0 A_Custommissile("NemesisImpBallSeek",16,0,-15,0)
	TNT1 A 0 A_JumpIfInventory("MarineKilled",1,"Rekt")
	Goto See
  Super:
	TNT1 A 0 A_JumpIfCloser(200,"Normal")
	TNT1 A 0 A_PlaySound("legimp/chargingsound")
	TNT1 A 0 A_SetInvulnerable
	EXE_ J 0 A_FaceTarget
	EXE_ JJJJJ 2 Bright A_SpawnItem("LegImpLineSpawner",0,0,0,0)
	EXE_ J 0 A_FaceTarget
	EXE_ JJJJJ 2 Bright A_SpawnItem("LegImpLineSpawner",0,0,0,0)
	EXE_ J 0 A_FaceTarget
	EXE_ JJJJJ 2 Bright A_SpawnItem("LegImpLineSpawner",0,0,0,0)
	EXE_ J 0 A_FaceTarget
	EXE_ JJJJJ 2 Bright A_SpawnItem("LegImpLineSpawner",0,0,0,0)
	EXE_ J 0 A_FaceTarget
	EXE_ JJJJJ 2 Bright A_SpawnItem("LegImpLineSpawner",0,0,0,0)
	EXE_ J 0 A_FaceTarget
	EXE_ JJJJJ 2 Bright A_SpawnItem("LegImpLineSpawner",0,0,0,0)
	EXE_ J 0 A_FaceTarget
	EXE_ JJJJJ 2 Bright A_SpawnItem("LegImpLineSpawner",0,0,0,0)
	EXE_ J 0 A_FaceTarget
    TNT1 A 0 A_SpawnItem("BHellionSmokeSpawner",0,0,0,0)
	TNT1 A 0 A_playSound("legimp/fiyabetch")
	EXE_ I 10 Bright A_CustomMissile ("LegendaryImpBlueBallExe",28,0,0,0)
	TNT1 A 0 A_UnsetInvulnerable
	TNT1 A 0 A_JumpIfInventory("MarineKilled",1,"Rekt")
	Goto See
  Speedattack:
    TNT1 A 0 A_JumpIfInventory("MarineKilled",1,"Rekt")
	TNT1 A 0 A_ChangeFlag(FLOAT,0)
	TNT1 A 0 A_ChangeFlag(NOGRAVITY,0)
	TNT1 A 0 A_ChangeFlag(NOCLIP,0)
	EXE_ A 0 ThrustThingZ(0,40,0,0)
	EXE_ WVWVWV 2 Bright
	EXE_ A 0 A_FaceTarget
	EXE_ A 0 A_PlaySound("Exetior/dash",7)
	TNT1 A 0 A_JumpIf(user_speedcounter >= 10,2)
	TNT1 A 0 ACS_NamedExecuteAlways("Hem_SetSpeed",0,user_startspeed*25)
  SpeedattackRush:
    TNT1 A 0 A_ChangeFlag(FLOAT,1)
	TNT1 A 0 A_ChangeFlag(NOGRAVITY,1)
    TNT1 A 0 A_SpawnItemEx("ExetiorBallGhostA")	
	EXE_ W 1 Bright A_Wander
	TNT1 A 0 A_SpawnItemEx("ExetiorBallGhostB")	
	EXE_ V 1 Bright A_Wander
	TNT1 A 0 A_SpawnItemEx("ExetiorBallGhostA")	
	EXE_ W 1 Bright A_Wander
	TNT1 A 0 A_SpawnItemEx("ExetiorBallGhostB")	
	EXE_ V 1 Bright A_Wander
	TNT1 A 0 A_SpawnItemEx("ExetiorBallGhostA")	
	EXE_ W 1 Bright A_Wander
	TNT1 A 0 A_SpawnItemEx("ExetiorBallGhostB")	
	EXE_ V 1 Bright A_Wander
	TNT1 A 0 A_SpawnItemEx("ExetiorBallGhostA")	
	EXE_ W 1 Bright A_Wander
	TNT1 A 0 A_SpawnItemEx("ExetiorBallGhostB")	
	EXE_ V 1 Bright A_Wander
	TNT1 A 0 A_Jump(80,"See")
	Goto SpeedattackRush+2
  Rush:
    TNT1 A 0 A_JumpIf(user_speedcounter >= 10,2)
	TNT1 A 0 ACS_NamedExecuteAlways("Hem_SetSpeed",0,user_startspeed*10)
	TNT1 A 0 A_SpawnItemEx("ExetiorGhost")	
	EXE_ A 1 Bright A_Wander
	TNT1 A 0 A_SpawnItemEx("ExetiorGhost")	
	EXE_ A 1 Bright A_Wander
	TNT1 A 0 A_SpawnItemEx("ExetiorGhost")	
	EXE_ A 1 Bright A_Wander
	TNT1 A 0 A_SpawnItemEx("ExetiorGhost")	
	EXE_ A 1 Bright A_Wander
	TNT1 A 0 A_SpawnItemEx("ExetiorGhost")	
	EXE_ A 1 Bright A_Wander
	TNT1 A 0 A_SpawnItemEx("ExetiorGhost")	
	EXE_ A 1 Bright A_Wander
	TNT1 A 0 A_SpawnItemEx("ExetiorGhost")	
	EXE_ A 1 Bright A_Wander
	TNT1 A 0 A_SpawnItemEx("ExetiorGhost")	
	EXE_ A 1 Bright A_Wander
	TNT1 A 0 A_Jump(80,"See")
	Goto Rush+1
  Teleport:
	EXE_ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_Wander
	EXE_ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_Wander
    EXE_ G 1 Bright A_PlaySound("Exetior/teleport",CHAN_VOICE,1.0,0,ATTN_NONE)
	TNT1 A 0 A_JumpIf(user_speedcounter >= 15,3)
    TNT1 A 0 A_SetUserVar("user_startspeed",ACS_NamedExecuteWithResult("Hem_GetCurrentSpeed")*1.2)
	TNT1 A 0 ACS_NamedExecuteAlways("Hem_SetSpeed",0,user_startspeed)
	TNT1 A 0 A_StopSound(5)
	TNT1 AAA 1
	TNT1 A 0 A_SetUserVar("user_speedcounter",user_speedcounter+1)
	TNT1 A 0 A_SetUserVar("user_cloaked",1)
	TNT1 A 1 A_UnSetShootable
	TNT1 A 0 A_SetUserVar("user_seecounter",0)
	TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_Wander
	TNT1 A 1 A_PlaySound("Exetior/sight",CHAN_VOICE,1.0,0,ATTN_NONE)
	TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_Wander
	TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_Wander
	TNT1 A 0 A_SetUserVar("user_cloaked",0)
	TNT1 A 1 A_SetShootable
	TNT1 A 0 A_PlaySound("Exetior/horror",5,1.0,TRUE)
    Goto See
  Rekt: 
    TNT1 AAA 0 A_StopSound
	TNT1 A 0 A_PlaySound("Exetior/spawn",CHAN_VOICE,0.8,0,ATTN_NONE)
	TNT1 A 0 A_TakeInventory("MarineKilled",1)
	EXE_ DE 10 Bright A_Look
	Goto See
  Rekt2:
    TNT1 AAA 0 A_StopSound
	TNT1 A 0 A_PlaySound("Exetior/spawn",CHAN_VOICE,0.8,0,ATTN_NONE)
	TNT1 A 0 A_TakeInventory("MarineKilled",1)
	TNT1 A 0 A_JumpIf(user_secondmusic == 1,3)
	TNT1 A 0 ACS_NamedExecuteAlways("InfinityMusic",0,2097,2008) //TNT1 A 0 ACS_NamedExecuteAlways("ExetiorMusic")
	TNT1 A 0 A_SetUserVar("user_secondmusic",1)
	EXE_ DE 10 Bright A_Look
	Goto See
  Pain:
    EXE_ F 2 Bright
	EXE_ F 4 Bright A_Pain
	TNT1 A 0 A_SetUserVar("user_seecounter",user_seecounter+Random(1,2))
	TNT1 A 0 A_Jump(50,"Missile")
	Goto See
  Death:
    TNT1 A 0 A_StopSound(6)
	EXE_ F 8 A_StopSound(5)
    EXE_ F 8 A_Scream
    EXE_ Q 6
    EXE_ Q 6 A_NoBlocking
	TNT1 A 0 A_SpawnItemEx("SignetOfNecromancy",0,0,8,random(0,8),random(0,8),2,random(0,360),0,200)
	TNT1 AAAA 0 A_SpawnItemEx("DiceOfReset",0,0,8,random(0,8),random(0,8),2,random(0,360),0,100)
	TNT1 AAAAAAAAAAAA 0 A_SpawnItemEx("BlueArmor",0,0,8,random(0,8),random(0,8),2,random(0,360),0,128)
	TNT1 AAAAAAAAAAAA 0 A_SpawnItemEx("SoulSphere",0,0,8,random(0,8),random(0,8),2,random(0,360),0,128)
	TNT1 AAAAAAA 0 A_SpawnItemEx("LifeSphere",0,0,8,random(0,8),random(0,8),2,random(0,360),0,128)
    EXE_ S 1
    EXE_ T -1
	Stop
  }
}

Actor LegendaryImpBlueBallExe : LegendaryImpBlueBall2
{
+HEXENBOUNCE
+EXPLODEONWATER
+NOBOUNCESOUND
ReactionTime 40
BounceCount 4
States
{
  Bounce:
    TNT1 A 0
    TNT1 A 0 A_PlaySound("ball/bounce",7)
    Goto Fly
  Spawn:
	TNT1 A 0 NoDelay A_PlaySound("legball/fly",6,1.0,1)
	LIBB A 1
	TNT1 A 0 A_ChangeFlag(USEBOUNCESTATE,1)
	Goto Fly
  Fly:
	LIBB A 3 Bright A_CustomMissile("LegBallAttackEXE",random(-1,1),random(-2,2),0,CMF_AIMDIRECTION|CMF_TRACKOWNER)
	TNT1 A 0 A_SpawnItemEx("BlueBallTrailA")
	TNT1 A 0 A_SpawnItemEx("BlueBallTrailB")
	TNT1 A 0 A_SpawnItemEx("BlueBallTrailC")
	LIBB B 3 Bright A_CustomMissile("LegBallAttackEXE",random(-1,1),random(-2,2),0,CMF_AIMDIRECTION|CMF_TRACKOWNER)
	TNT1 A 0 A_SpawnItemEx("BlueBallTrailA")
	TNT1 A 0 A_SpawnItemEx("BlueBallTrailB")
	TNT1 A 0 A_SpawnItemEx("BlueBallTrailC")
	LIBB C 3 Bright A_CustomMissile("LegBallAttackEXE",random(-1,1),random(-2,2),0,CMF_AIMDIRECTION|CMF_TRACKOWNER)
	TNT1 A 0 A_SpawnItemEx("BlueBallTrailA")
	TNT1 A 0 A_SpawnItemEx("BlueBallTrailB")
	TNT1 A 0 A_SpawnItemEx("BlueBallTrailC")
	LIBB D 3 Bright A_CustomMissile("LegBallAttackEXE",random(-1,1),random(-2,2),0,CMF_AIMDIRECTION|CMF_TRACKOWNER)
	TNT1 A 0 A_SpawnItemEx("BlueBallTrailA")
	TNT1 A 0 A_SpawnItemEx("BlueBallTrailB")
	TNT1 A 0 A_SpawnItemEx("BlueBallTrailC")
	TNT1 A 0 A_Countdown
	Loop
   }
}

ACTOR LegBallAttackEXE : LegBallAttack2
{
Obituary "\c[d4]I AM GOD I AM GOD I AM GOD I AM GOD I AM GOD I AM GOD I AM GOD I AM GOD I AM GOD I AM GOD I AM GOD I AM GOD I AM GOD I AM GOD I AM GOD I AM GOD I AM GOD I AM GOD I AM GOD I AM GOD I AM GOD I AM GOD I AM GOD I AM GOD I AM GOD\c-"
}

actor ExetiorFuckery : kazumi_SGfuckery
{
	States
	{
	Spawn:
		TNT1 A 1
		loop
	pickup:
		TNT1 A 1
		TNT1 A 0 ACS_NamedExecuteAlways("ExetiorJumpscare",0)
		TNT1 A 0 ACS_NamedExecuteAlways("ExetiorJumpscareType",0)
		stop
	}
}

ACTOR ExetiorGhost
{
Scale 1.1
Radius 20
Height 56
Speed 0
Alpha 0.7
PROJECTILE
RENDERSTYLE Translucent
+CLIENTSIDEONLY
+NOTIMEFREEZE
States
{
Spawn:
    TNT1 A 0
    TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
    TNT1 A 1
    EXE_ B 2 A_FadeOut(0.10)
    Goto Spawn+1
  Toaster:
    TNT1 A 0
	Stop		
    }
}

ACTOR ExetiorBallGhostA : ExetiorGhost
{
Scale 0.7
States
{
Spawn:
    TNT1 A 0
    TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
    TNT1 A 1
    EXE_ W 2 Bright A_FadeOut(0.10)
    Goto Spawn+1
  Toaster:
    TNT1 A 0
	Stop		
    }
}

ACTOR ExetiorBallGhostB : ExetiorGhost
{
Scale 0.7
States
{
Spawn:
    TNT1 A 0
    TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
    TNT1 A 1
    EXE_ V 2 Bright A_FadeOut(0.10)
    Goto Spawn+1
  Toaster:
    TNT1 A 0
	Stop		
    }
}

Actor ExetiorEffectSpawner
{
  +NOINTERACTION
  +NOTIMEFREEZE
  +CLIENTSIDEONLY
  var int user_delay;
  States
  {
  Spawn:
    TNT1 A 0
	TNT1 A 0 A_SpawnItemEx("ArmorParticleBlue",Random(-12,12),Random(-12,12),Random(5,15),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),0,128)
	Stop
	}
}