ACTOR JitterSkull //OM NOM NOM
{ //Scripted (Can break the spooky spawn limit as well as the dice removing the enemy)
//Creator: Fluffy
//Origin: Ghoul's Forest
//Sprite: JSKL
//Title: "Jitter Skull"           
   Health 15000
   PainChance 15
   Speed 40 
   Radius 20
   Height 56
   Scale 0.24
   Mass 999999
   Monster
   MeleeRange 400
   SeeSound "skultaunt" 
   PainSound "jitpain" 
   DeathSound "skulldie" 
   ActiveSound "skultaunt" 
   BloodType "jitterchip"
   Translation "112:127=80:95"
   Species "Hell"
   DamageFactor "Hell", 0.0 
   RadiusDamageFactor 0.2
   +NOTIMEFREEZE
   +DONTHARMSPECIES
   +QUICKTORETALIATE
   +LOOKALLAROUND
   +FLOORCLIP 
   +BOSS
   +NOTARGET
   +NOINFIGHTING
   +NOICEDEATH
   //No Infighting
   DamageFactor "Legendary1", 0.0
   DamageFactor "UltimateLegendary", 0.0
   DamageFactor "LegendaryZombie", 0.0
   DamageFactor "LACGrenade", 0.0
   DamageFactor "SoapOpera", 0.0
   DamageFactor "ZombieDev", 0.0
   DamageFactor "GeneralTracer", 0.0
   DamageFactor "SatanGuard", 0.0
   DamageFactor "CurseComet", 0.0
   DamageFactor "DementedTerminator", 0.0
   DamageFactor "Terminator", 0.0
   DamageFactor "Commander", 0.0
   DamageFactor "CerChainguns", 0.0	
   DamageFactor "CerEnergyBall", 0.0
   DamageFactor "HFCyber", 0.0
   DamageFactor "DBFG2", 0.0
   DamageFactor "DBFG10K2", 0.0
   DamageFactor "DBFGSplash2", 0.0
   DamageFactor "NobleComet", 0.0
   DamageFactor "Cyber10k", 0.0
   DamageFactor "SS", 0.0
   Obituary "%o was crunched by a jitterskull."
   Tag "\c[v2]Jitter Skull\c-"
   var int user_music;
   var int user_phase;
   States 
   {
   Idle:
      TNT1 A 0 A_JumpIf(user_phase == 1,"StopPhaseWalkingIdle")
	  TNT1 A 0
   Spawn: 
      JSKL A 10 A_Look 
      Loop 
   See:
      TNT1 A 0 A_JumpIf(user_music == 1,3)
	  TNT1 A 0 ACS_NamedExecuteAlways("InfinityMusic",0,2041,2001)
	  TNT1 A 0 A_SetUserVar("user_music",1)
	  TNT1 A 0 A_Warp(AAPTR_DEFAULT,0,0,0,0,WARPF_TESTONLY,1)
	  Goto PhaseWalk
      JSKL A 0 A_PlaysoundEx("skullact","Body")
      JSKL A 0 A_Chase
      JSKL ABCBABCABCABCABC 1
      JSKL A 0 A_FaceTarget
      JSKL A 1 A_Recoil(-255)
      JSKL A 1 A_Stop
	  TNT1 A 0 A_Jump(5,"PhaseWalk")
      Loop
   PhaseWalk:
	  TNT1 A 0 A_PlaySound("phaseimp/teleport")
	  JSKL A 2 A_FaceTarget
	  TNT1 A 0 A_Changeflag(NOCLIP,1)
	  //TNT1 A 0 A_Changeflag(NODROPOFF,1)
	  TNT1 A 0 A_Changeflag(NOPAIN,1)
	  TNT1 A 0 A_SetUserVar("user_phase",1)
	  TNT1 A 0 A_SpawnItem("TrueNemesisHellionSmokeSpawner",0,0,0,0)
	  JSKL A 1 A_SetTranslucent(0.75)
	  TNT1 A 0 A_SpawnItem("TrueNemesisHellionSmokeSpawner",0,0,0,0)
	  JSKL A 1 A_SetTranslucent(0.55)
	  TNT1 A 0 A_SpawnItem("TrueNemesisHellionSmokeSpawner",0,0,0,0)
	  JSKL A 1 A_SetTranslucent(0.35)
	  TNT1 A 0 A_SpawnItem("TrueNemesisHellionSmokeSpawner",0,0,0,0)
	  JSKL A 1 A_SetTranslucent(0.15)
	  TNT1 A 0 A_Changeflag(NOPAIN,0)
	  TNT1 A 0 A_SpawnItem("TrueNemesisHellionSmokeSpawner",0,0,0,0)
	  Goto PhaseWalking
   PhaseWalking:
	  JSKL AAAAAAAAAAAAAAAA 1 A_ExtChase(0,0)
	  JSKL AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_Chase("StopPhaseWalking","StopPhaseWalking")
	  TNT1 A 0 A_JumpIfCloser(270,"StopPhaseWalking")
	  Goto PhaseWalking+32
   StopPhaseWalking:
      TNT1 A 0 A_PlaySound("phaseimp/teleport")
	  TNT1 A 0 A_Changeflag(NOCLIP,0)
	  //TNT1 A 0 A_Changeflag(NODROPOFF,0)
	  TNT1 A 0 A_Changeflag(NOPAIN,1)
	  TNT1 A 0 A_SetUserVar("user_phase",0)
	  TNT1 A 0 A_SpawnItem("TrueNemesisHellionSmokeSpawner",0,0,0,0)
	  JSKL A 1 A_SetTranslucent(0.15)
	  TNT1 A 0 A_SpawnItem("TrueNemesisHellionSmokeSpawner",0,0,0,0)
	  JSKL A 1 A_SetTranslucent(0.35)
	  TNT1 A 0 A_SpawnItem("TrueNemesisHellionSmokeSpawner",0,0,0,0)
	  JSKL A 1 A_SetTranslucent(0.55)
	  TNT1 A 0 A_SpawnItem("TrueNemesisHellionSmokeSpawner",0,0,0,0)
	  JSKL A 1 A_SetTranslucent(0.75)
	  TNT1 A 0 A_SpawnItem("TrueNemesisHellionSmokeSpawner",0,0,0,0)
	  TNT1 A 0 A_SetTranslucent(1)
	  TNT1 A 0 A_Changeflag(NOPAIN,0)
	  JSKL A 2 A_FaceTarget	
      Goto See
   StopPhaseWalkingIdle:
      TNT1 A 0 A_PlaySound("phaseimp/teleport")
	  TNT1 A 0 A_Changeflag(NOCLIP,0)
	  //TNT1 A 0 A_Changeflag(NODROPOFF,0)
	  TNT1 A 0 A_Changeflag(NOPAIN,1)
	  TNT1 A 0 A_SetUserVar("user_phase",0)
	  TNT1 A 0 A_SpawnItem("TrueNemesisHellionSmokeSpawner",0,0,0,0)
	  JSKL A 1 A_SetTranslucent(0.15)
	  TNT1 A 0 A_SpawnItem("TrueNemesisHellionSmokeSpawner",0,0,0,0)
	  JSKL A 1 A_SetTranslucent(0.35)
	  TNT1 A 0 A_SpawnItem("TrueNemesisHellionSmokeSpawner",0,0,0,0)
	  JSKL A 1 A_SetTranslucent(0.55)
	  TNT1 A 0 A_SpawnItem("TrueNemesisHellionSmokeSpawner",0,0,0,0)
	  JSKL A 1 A_SetTranslucent(0.75)
	  TNT1 A 0 A_Changeflag(NOPAIN,0)
	  TNT1 A 0 A_SpawnItem("TrueNemesisHellionSmokeSpawner",0,0,0,0)
	  TNT1 A 0 A_SetTranslucent(1)	
      Goto Idle
   Melee: 
      TNT1 A 0 A_JumpIf(user_phase == 1,"StopPhaseWalking")
      JSKL A 0 A_ChangeFlag("NOPAIN",1)
      JSKL A 1 A_FaceTarget
      JSKL A 0 A_PlaysoundEx("skullattack","Body")
      JSKL D 0 A_Recoil(-57)
      JSKL D 0 A_CustomMissile("JittAttack",0,0,0,2,0)
      JSKL DDD 1
      JSKL D 0 A_CustomMissile("JittAttack",0,0,0,2,0)
      JSKL DDD 1
      JSKL D 0 A_CustomMissile("JittAttack",0,0,0,2,0)
      JSKL DDD 1
      JSKL D 0 A_CustomMissile("JittAttack",0,0,0,2,0)
      JSKL DDD 1
      JSKL D 0 A_CustomMissile("JittAttack",0,0,0,2,0)
      JSKL DDD 1
      JSKL D 0 A_CustomMissile("JittAttack",0,0,0,2,0)
      JSKL DDD 1
      JSKL D 0 A_CustomMissile("JittAttack",0,0,0,2,0)
      JSKL DDD 1
      JSKL D 0 A_CustomMissile("JittAttack",0,0,0,2,0)
      JSKL DDD 1
      JSKL D 0 A_CustomMissile("JittAttack",0,0,0,2,0)
      JSKL DDD 1
      JSKL D 0 A_CustomMissile("JittAttack",0,0,0,2,0)
      JSKL DDD 1
      JSKL A 10
      JSKL A 1 A_ChangeFlag("NOPAIN",0)
      Goto See    
   Pain:
      TNT1 A 0 A_JumpIf(user_phase == 1,"StopPhaseWalking")
      JSKL A 2 
      JSKL B 2 A_Pain 
      Goto See 
   Death: 
      JSKL A 1 A_StopSoundEx("Voice")
      JSKL D 1 A_PlaySoundEx("skulldie", "Voice")
      JSKL D 1 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 AAAAAA 0 A_SpawnItemEx("UniversalChestSpawner",0,0,32,frandom(-10,10),frandom(-10,10),frandom(3,6),random(0,360))
	  TNT1 A 0 A_GiveInventory("SpecOpsStrafing",1)
      JSKL DD 1 BRIGHT A_CustomMissile("ArchvileFirex",2,0,random(0,360),2,0)
	  TNT1 A 0 A_GiveInventory("SpecOpsStrafing",1)
      JSKL DD 1 BRIGHT A_CustomMissile("ArchvileFirex",2,0,random(0,360),2,0)
	  TNT1 A 0 A_GiveInventory("SpecOpsStrafing",1)
      JSKL DD 1 BRIGHT A_CustomMissile("ArchvileFirex",2,0,random(0,360),2,0)
	  TNT1 A 0 A_GiveInventory("SpecOpsStrafing",1)
      JSKL DD 1 BRIGHT A_CustomMissile("ArchvileFirex",2,0,random(0,360),2,0)
	  TNT1 A 0 A_GiveInventory("SpecOpsStrafing",1)
      JSKL DD 1 BRIGHT A_CustomMissile("ArchvileFirex",2,0,random(0,360),2,0)
	  TNT1 A 0 A_GiveInventory("SpecOpsStrafing",1)
      JSKL DD 1 BRIGHT A_CustomMissile("ArchvileFirex",2,0,random(0,360),2,0)
	  TNT1 A 0 A_GiveInventory("SpecOpsStrafing",1)
      JSKL DD 1 BRIGHT A_CustomMissile("ArchvileFirex",2,0,random(0,360),2,0)
	  TNT1 A 0 A_GiveInventory("SpecOpsStrafing",1)
      JSKL DD 1 BRIGHT A_CustomMissile("ArchvileFirex",2,0,random(0,360),2,0)
	  TNT1 A 0 A_GiveInventory("SpecOpsStrafing",1)
      JSKL DD 1 BRIGHT A_CustomMissile("ArchvileFirex",2,0,random(0,360),2,0)
	  TNT1 A 0 A_GiveInventory("SpecOpsStrafing",1)
      JSKL DD 1 BRIGHT A_CustomMissile("ArchvileFirex",2,0,random(0,360),2,0)
	  TNT1 A 0 A_GiveInventory("SpecOpsStrafing",1)
      JSKL DD 1 BRIGHT A_CustomMissile("ArchvileFirex",2,0,random(0,360),2,0)
	  TNT1 A 0 A_GiveInventory("SpecOpsStrafing",1)
      JSKL DD 1 BRIGHT A_CustomMissile("ArchvileFirex",2,0,random(0,360),2,0)
	  TNT1 A 0 A_GiveInventory("SpecOpsStrafing",1)
      JSKL DD 1 BRIGHT A_CustomMissile("ArchvileFirex",2,0,random(0,360),2,0)
	  TNT1 A 0 A_GiveInventory("SpecOpsStrafing",1)
      JSKL DD 1 BRIGHT A_CustomMissile("ArchvileFirex",2,0,random(0,360),2,0)
	  TNT1 A 0 A_GiveInventory("SpecOpsStrafing",1)
      JSKL DD 1 BRIGHT A_CustomMissile("ArchvileFirex",2,0,random(0,360),2,0)
	  TNT1 A 0 A_GiveInventory("SpecOpsStrafing",1)
      JSKL DD 1 BRIGHT A_CustomMissile("ArchvileFirex",2,0,random(0,360),2,0)
	  TNT1 A 0 A_GiveInventory("SpecOpsStrafing",1)
      JSKL DD 1 BRIGHT A_CustomMissile("ArchvileFirex",2,0,random(0,360),2,0)
	  TNT1 A 0 A_GiveInventory("SpecOpsStrafing",1)
      JSKL DD 1 BRIGHT A_CustomMissile("ArchvileFirex",2,0,random(0,360),2,0)
	  TNT1 A 0 A_GiveInventory("SpecOpsStrafing",1)
      JSKL DD 1 BRIGHT A_CustomMissile("ArchvileFirex",2,0,random(0,360),2,0)
	  TNT1 A 0 A_GiveInventory("SpecOpsStrafing",1)
      JSKL DD 1 BRIGHT A_CustomMissile("ArchvileFirex",2,0,random(0,360),2,0)
	  TNT1 A 0 A_GiveInventory("SpecOpsStrafing",1)
      JSKL DD 1 BRIGHT A_CustomMissile("ArchvileFirex",2,0,random(0,360),2,0)
	  TNT1 A 0 A_GiveInventory("SpecOpsStrafing",1)
      JSKL DD 1 BRIGHT A_CustomMissile("ArchvileFirex",2,0,random(0,360),2,0)
	  TNT1 A 0 A_GiveInventory("SpecOpsStrafing",1)
      JSKL DD 1 BRIGHT A_CustomMissile("ArchvileFirex",2,0,random(0,360),2,0)
	  TNT1 A 0 A_GiveInventory("SpecOpsStrafing",1)
      JSKL DD 1 BRIGHT A_CustomMissile("ArchvileFirex",2,0,random(0,360),2,0)
	  TNT1 A 0 A_GiveInventory("SpecOpsStrafing",1)
      JSKL DD 1 BRIGHT A_CustomMissile("ArchvileFirex",2,0,random(0,360),2,0)
	  TNT1 A 0 A_GiveInventory("SpecOpsStrafing",1)
      JSKL DD 1 BRIGHT A_CustomMissile("ArchvileFirex",2,0,random(0,360),2,0)
	  TNT1 A 0 A_GiveInventory("SpecOpsStrafing",1)
      JSKL DD 1 BRIGHT A_CustomMissile("ArchvileFirex",2,0,random(0,360),2,0)
      JSKL Z 2000
      Stop
   } 
} 

Actor JittAttack
{
PROJECTILE
Speed 0
Scale 0.8
+NOTELEPORT
+EXTREMEDEATH
+FORCERADIUSDMG
Decal "BloodSplat"
Obituary "%o was cruched by a jitterskull." 
Damage 0
Height 5
Radius 6
Damagetype "Hell"
States
{
   Spawn:
    TNT1 A 0
    TNT1 A 1 A_Explode(12,152)
   	TNT1 A 1 A_Explode(150,84)
	Stop
   Death:
    TNT1 A 0
    TNT1 A 1 A_Explode(12,1952)
	TNT1 A 1 A_Explode(150,84)
    TNT1 A 1 
	Stop
}
}

ACTOR ArchvileFirex : ArchVileFire
{
Speed 2
+NOINTERACTION
+NOBLOCKMAP
+NOCLIP
+CLIENTSIDEONLY
  States
  {
  Spawn:
    FIR6 A 2 Bright
    FIR6 BAB 2 Bright
    FIR6 C 2 Bright A_FireCrackle
    FIR6 BCBCDCDCDEDED 2 Bright
    FIR6 E 2 Bright A_FireCrackle
    FIR6 FEFEFGHGHGH 2 Bright
    Stop
  }
}

Actor ArchvileFirexSmall : ArchvileFirex
{
Speed 5
Scale 0.5
-NOGRAVITY
}

ACTOR ArchvileFirex3 : ArchvileFirex{Translation "160:167=96:111"}

Actor JitterChip
{
  +NOBLOCKMAP
  +NOGRAVITY
  +ALLOWPARTICLES
  +randomIZE
  -TELESTOMP
  +CLIENTSIDEONLY
  RenderStyle Translucent
  Alpha 0.5
  renderstyle none
  VSpeed 1
  Mass 5
  States
  {
 Spawn:
  PUFF A 0
  PUFF A 0 A_PlaySoundEx("jitpain","Body")
  PUFF A 0 A_SpawnItemEx("JitterChip2",0,0,0,0,0,0,0,SXF_TRANSFERTRANSLATION,0)
  PUFF A 4 Bright
  PUFF B 4
 Melee:
  PUFF CD 4
  Stop
  }
}

Actor JitterChip2
{
PROJECTILE
Renderstyle Translucent
Alpha 1.0
Scale 0.4
BounceFactor 0.4
ReactionTime 35
Radius 3
Damage 0
SeeSound "skullchips"
+RIPPER
+DOOMBOUNCE
+BOUNCEONACTORS
+BLOODLESSIMPACT
+CLIENTSIDEONLY
-SOLID
-TELESTOMP
-NOGRAVITY
-NOBLOCKMAP
-NOTELEPORT
States
    {
    Spawn:
        JCHP A 0
        JCHP A 0 ThrustThingZ(0,45,0,1)
        Goto See
    See:
		TNT1 A 0 ThrustThing(random(0,255),6,0,0)
		TNT1 A 0 A_Jump(128,6)
		TNT1 A 0 A_Jump(128,4)
		TNT1 A 0 A_Jump(128,5)
        JCHP A 4 A_JumpIf(waterlevel > 1,"Remove")
        JCHP B 4 ThrustThingZ(0,random(3,9),1,1)
		JCHP CDE 4 A_Countdown
		Goto See+2
    Death:
        JCHP C 0 A_Jump(128,4)
        JCHP C 0 A_Jump(128,6)
        JCHP A 20
		JCHP A 3 A_FadeOut(0.01)
        Goto Death+3
        JCHP B 20
		JCHP B 3 A_FadeOut(0.01)
        Goto Death+5
        JCHP C 20
		JCHP C 3 A_FadeOut(0.01)
        Goto Death+7
	Remove:
		TNT1 A 1
        Stop
    }
}