Actor HellFrostBite
{ //Scripted (Can break the spooky spawn limit as well as the dice removing the enemy)
//Creator: High Councilor & Fluffy
//Origin: Nexus Infinity, GVH
//Sprite: FROB
//Title: "Hell Frostbite"
  Health 13000
  Mass 9000
  speed 18
  Monster
  Height 56
  Radius 20
  Scale 0.25
  PainChance 25
  bloodtype "IceChunkFrostBite"
  DropItem "BossLifeEssence" 128 25
  DropItem "BossArmorBonusMax" 128 1
  DropItem "BigDustMana" 128 100
  DropItem "DustMana" 256 30
  DropItem "DustMana" 256 30
  DropItem "FantasyStaff" 50
  RadiusDamageFactor 0.25
  MeleeRange 350
  Damagefactor "Ice", 0.0
  DamageFactor "FreezerBurn", 0.0
  Damagefactor "Fire", 0.05
  Damagefactor "PlayerPyro", 0.1
  DamageFactor 1 //0.65
  DamageFactor "NobleComet", 0.0
  DamageFactor "CadaverRocket", 0.0
  DamageFactor "Vilesfire", 0.0
  DamageFactor "Hell", 0.0
  DamageFactor "Legendary", 0.5
  DamageFactor "PlayerLegendary", 0.25
  DamageFactor "PlayerNemesisPlasma", 0.5
  DamageFactor "BFGSplash", 0.25
  DamageFactor "PDTBFG", 0.2
  DamageFactor "PDTBFGTracer", 0.2
  DamageFactor "MechStep", 0.2
  DamageFactor "Iodsa", 0.0
  +DROPOFF
  +DONTBLAST
  +LOOKALLAROUND
  +DONTMORPH
  +NOICEDEATH
  +BOSS
  +FULLVOLDEATH
  +FLOORCLIP
  +AVOIDMELEE
  Species "Viles"
  SeeSound "Frosttaunt"
  ActiveSound ""
  PainSound ""
  DeathSound "Frostdie"
  Tag "\c[o7]HellFrostBite"
  Obituary "%o got the chills from HellFrostBite's frozen wind."
  var int user_missile;
  var int user_breathsound;
  var int user_music;
  var int user_terror;
  var int user_terrordelay;
  States
  {
  Idle:
    TNT1 A 0 A_Changeflag(NOCLIP,0)
	TNT1 A 0 A_Changeflag(NOPAIN,0)
	TNT1 A 0 A_Stop
	TNT1 A 0 A_SetShootable
	TNT1 A 0 A_SetTranslucent(1)
  Spawn:
    FROB AAA 2 A_Look
	TNT1 A 0 A_SpawnItemEx("FrostBiteTwinkle",0,random(-40,40),random(-40,90),0,0,0,0,32)
    Loop
  SeeStop:
    TNT1 A 0 A_Stop
  See:
	TNT1 A 0 A_JumpIf(user_music == 1,4)
	TNT1 A 0 ACS_NamedExecuteAlways("TimeToGetFrosty",0)
	TNT1 A 0 ACS_NamedExecuteAlways("InfinityMusic",0,2132,2002) //Corrupt
	//TNT1 A 0 ACS_NamedExecuteAlways("StartMonsterMusic",0,2132)
	TNT1 A 0 A_SetUserVar("user_music",1)
	TNT1 A 0 A_Warp(AAPTR_DEFAULT,0,0,0,0,WARPF_TESTONLY,1)
	Goto TerrorBegin2
	TNT1 A 0 A_Jump(64,"TerrorBegin") //16 64
    TNT1 A 0 A_SetTranslucent(0.50,0)
    FROB A 2 A_Chase
    TNT1 A 0 A_SetTranslucent(0.55,0)
    FROB A 2 A_Chase
    TNT1 A 0 A_SetTranslucent(0.60,0)
    FROB A 2 A_Chase
	TNT1 A 0 A_SpawnItemEx("FrostBiteTwinkle",0,random(-40,40),random(-40,90),0,0,0,0,32)
	TNT1 A 0 A_SetUserVar("user_terrordelay",user_terrordelay+1)
    TNT1 A 0 A_SetTranslucent(0.65,0)
    FROB A 2 A_Chase
    TNT1 A 0 A_SetTranslucent(0.70,0)
    FROB A 2 A_Chase
    TNT1 A 0 A_SetTranslucent(0.75,0)
    FROB A 2 A_Chase
	TNT1 A 0 A_SpawnItemEx("FrostBiteTwinkle",0,random(-40,40),random(-40,90),0,0,0,0,32)
	TNT1 A 0 A_SetUserVar("user_terrordelay",user_terrordelay+1)
    TNT1 A 0 A_SetTranslucent(0.80,0)
    FROB A 2 A_Chase
    TNT1 A 0 A_SetTranslucent(0.85,0)
    FROB A 2 A_Chase
    TNT1 A 0 A_SetTranslucent(0.90,0)
    FROB A 2 A_Chase
	TNT1 A 0 A_SpawnItemEx("FrostBiteTwinkle",0,random(-40,40),random(-40,90),0,0,0,0,32)
	TNT1 A 0 A_SetUserVar("user_terrordelay",user_terrordelay+1)
    TNT1 A 0 A_SetTranslucent(0.95,0)
    FROB A 2 A_Chase
    TNT1 A 0 A_SetTranslucent(1.0,0)
    FROB A 2 A_Chase
    TNT1 A 0 A_SetTranslucent(0.95,0)
    FROB A 2 A_Chase
	TNT1 A 0 A_SpawnItemEx("FrostBiteTwinkle",0,random(-40,40),random(-40,90),0,0,0,0,32)
	TNT1 A 0 A_SetUserVar("user_terrordelay",user_terrordelay+1)
    TNT1 A 0 A_SetTranslucent(0.90,0)
    FROB A 2 A_Chase
    TNT1 A 0 A_SetTranslucent(0.85,0)
    FROB A 2 A_Chase
    TNT1 A 0 A_SetTranslucent(0.80,0)
    FROB A 2 A_Chase
	TNT1 A 0 A_SpawnItemEx("FrostBiteTwinkle",0,random(-40,40),random(-40,90),0,0,0,0,32)
	TNT1 A 0 A_SetUserVar("user_terrordelay",user_terrordelay+1)
    TNT1 A 0 A_SetTranslucent(0.75,0)
    FROB A 2 A_Chase
    TNT1 A 0 A_SetTranslucent(0.70,0)
    FROB A 2 A_Chase
    TNT1 A 0 A_SetTranslucent(0.65,0)
    FROB A 2 A_Chase
	TNT1 A 0 A_SpawnItemEx("FrostBiteTwinkle",0,random(-40,40),random(-40,90),0,0,0,0,32)
	TNT1 A 0 A_SetUserVar("user_terrordelay",user_terrordelay+1)
    TNT1 A 0 A_SetTranslucent(0.60,0)
    FROB A 2 A_Chase
    TNT1 A 0 A_SetTranslucent(0.55,0)
    FROB A 2 A_Chase
    TNT1 A 0 A_SetTranslucent(0.50,0)
    FROB A 2 A_Chase
	TNT1 A 0 A_SpawnItemEx("FrostBiteTwinkle",0,random(-40,40),random(-40,90),0,0,0,0,32)
	TNT1 A 0 A_SetUserVar("user_terrordelay",user_terrordelay+1)
    Loop
  TerrorBegin:
    TNT1 A 0 A_JumpIf(user_terrordelay <= Random(0,50),"See")
  TerrorBegin2:
	TNT1 A 0 A_SetUserVar("user_terrordelay",0)
	TNT1 A 0 A_Changeflag(NOCLIP,1)
	TNT1 A 0 A_Changeflag(NOPAIN,1)
	//TNT1 A 0 A_Changeflag(NODROPOFF,1)
	TNT1 A 0 A_SetUserVar("user_terror",0)
	//TNT1 A 0 A_PlayWeaponSound("phaseimp/teleport")
	FROB A 1 A_UnSetShootable
	FROB AAAAAAAAAA 1 A_FadeOut(0.1,0)
  TerrorSeek:
	TNT1 A 0 A_JumpIf(user_terror >= 400, "TerrorSeek2")
	TNT1 A 0 A_SetUserVar("user_terror",user_terror+random(1,2))
	FROB A 1 A_ExtChase(0,0,FALSE)
    TNT1 A 0 A_Jump(1,1)
	Loop
	TNT1 A 0 A_SpawnItemEx("FrostBiteTwinkle",0,random(-40,40),random(-40,90),0,0,0,0,32)
	Loop
  TerrorSeek2:
    TNT1 A 0 A_SetUserVar("user_terror",Random(50,100))
	TNT1 A 0 A_PlaySound("Frosttaunt",CHAN_VOICE)
  Terrorseek2Loop:
	TNT1 A 0 A_JumpIf(user_terror >= 400,"TerrorAttack")
	TNT1 A 0 A_SetUserVar("user_terror",user_terror+random(1,2))
	FROB A 1 A_ExtChase("TerrorAttack",0,FALSE)
    TNT1 A 0 A_Jump(1,1)
	Loop
	TNT1 A 0 A_SpawnItemEx("FrostBiteTwinkle",0,random(-40,40),random(-40,90),0,0,0,0,32)
	Loop
  TerrorAttack:
	TNT1 A 0 A_Changeflag(NOCLIP,0)
	TNT1 A 0 A_Changeflag(NOPAIN,0)
	TNT1 A 0 A_SetUserVar("user_terror",0)
	FROB B 1 A_FaceTarget
	FROB B 1 A_SetShootable
	FROB BBBBBBBBBB 1 A_FadeIn(0.1)
	FROB C 1 A_FaceTarget
	TNT1 A 0 A_JumpIftargetInLOS("Bite")
	Goto See
  ScaryWarp:
    TNT1 A 0 A_SetUserVar("user_missile",0)
	TNT1 A 0 A_FaceTarget
    TNT1 A 0 A_Recoil(-200)
  ScaryWarpLoop:
	FROB A 1 A_JumpIfTargetInsideMeleeRange("SeeStop")
	TNT1 A 0 A_JumpIf(user_missile >= 10,"SeeStop")
    TNT1 A 0 A_SetUserVar("user_missile",user_missile+1)
    Loop
  Missile:
    TNT1 A 0 A_JumpIfCloser(500,1)
	Goto ScaryWarp
	TNT1 A 0 A_Jump(35,"TerrorBegin")
    TNT1 A 0 A_jump(96,2)
	TNT1 A 0 A_JumpIfCloser(300,"Bite")
    //TNT1 A 0 A_jump(128,"FrostComet")
  FrostBreath:
    TNT1 A 0 A_PlaySoundEx("FrostBreathStart","Weapon")
	FROB DDDD 4 bright A_Chase("","")
    TNT1 A 0 A_SetUserVar("user_missile",0)
    TNT1 A 0 A_SetUserVar("user_breathsound",0)
  FrostBreathLoop:
    TNT1 A 0 A_JumpIf(user_missile >= Random(10,50),"FrostBreathEnd")
    TNT1 A 0 A_SetUserVar("user_missile",user_missile+1)
    TNT1 A 0 A_JumpIf(user_breathsound >= 5,"FrostBreathSound")
    TNT1 A 0 A_SetUserVar("user_breathsound",user_breathsound+1)
    TNT1 A 0 A_FaceTarget
    TNT1 A 0 A_CustomMissile("FrostBiteBreath",32,0,Random(15,-15))
	FROB C 2 bright A_GiveInventory("HEMCommandoStrafing",1) //A_Chase("","")
    TNT1 A 0 A_FaceTarget
    TNT1 A 0 A_CustomMissile("FrostBiteBreath",32,0,Random(15,-15))
	FROB B 2 bright A_GiveInventory("HEMCommandoStrafing",1) //A_Chase("","")
    TNT1 A 0 A_MonsterRefire(64,"FrostBreathEnd")
    Loop
  FrostBreathSound:
    TNT1 A 0 A_PlaySoundEx("FrostBreathMid","Weapon")
    TNT1 A 0 A_SetUserVar("user_breathsound",0)
    Goto FrostBreathLoop
  FrostBreathEnd:
	FROB A 16 A_PlaySoundEx("FrostBreathFail","Weapon")
    FROB A 4
	Goto See
  Bite:
    TNT1 A 0 A_Playweaponsound("FrostChomp")
	TNT1 A 0 A_Recoil(-30)
    FROB BBCCDD 2 A_FaceTarget
	TNT1 A 0 A_Stop
	TNT1 A 0 A_SpawnItemEx("IceChunkFrostBite",0,random(-22,22),random(2,15),momx,momy,random(8,12),random(-8,8),40)
	TNT1 A 0 A_Playweaponsound("FrostTeeth")
    FROB E 3 A_CustomMissile("FrostBiteAttack",32,0,0)
	TNT1 A 0 A_SpawnItemEx("IceChunkFrostBite",0,random(-22,22),random(2,15),momx,momy,random(8,12),random(-8,8),40)
    FROB F 3 A_CustomMissile("FrostBiteAttack",32,0,0)
	TNT1 A 0 A_SpawnItemEx("IceChunkFrostBite",0,random(-22,22),random(2,15),momx,momy,random(8,12),random(-8,8),40)
    FROB E 3 A_CustomMissile("FrostBiteAttack",32,0,0)
	TNT1 A 0 A_SpawnItemEx("IceChunkFrostBite",0,random(-22,22),random(2,15),momx,momy,random(8,12),random(-8,8),40)
	FROB F 3 A_Jump(35,"TerrorBegin2")
    TNT1 A 0 A_jump(128,2)
	TNT1 A 0 A_JumpIfCloser(200,"Bite")
	FROB A 3
	Goto See
  Pain:
    TNT1 A 0 A_Jump(16,"TerrorBegin2")
    FROB A 1 A_PlaySound("FrostBreathMid")
    FROB AAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile("FrostBiteBreath",40,0,random(0,360),2)
    goto see
  Death:
	TNT1 A 0 A_NoBlocking
	TNT1 A 0 A_ChangeFlag(TELESTOMP,0)
	TNT1 A 0 A_PlaySoundEx("FrostDeath","Body")
	TNT1 A 0 A_Fall
	TNT1 A 0 A_SpawnItemEx("FBLargeBurst",0,0,0,0,0,0,0,32)
	TNT1 AAAAAA 0 A_SpawnItemEx("WeaponEnhancerModuleSpawner",0,0,32,frandom(-10,10),frandom(-10,10),frandom(3,6),random(0,360)) //Infinity
	TNT1 A 0 A_SpawnItemEx("SignetOfNecromancy",0,0,8,random(0,8),random(0,8),2,random(0,360),0,200) //Infinity
	FROB ZZZZZZ 6 A_SpawnItemEx("FrostBiteDeathFX",0,0,32,1,0,2,random(0,360),32)
    FROB Z -1
    Stop
	}
}

Actor FrostBiteDeathFX
{
  -SOLID
  +NOGRAVITY
  +CLIENTSIDEONLY
  //+NOINTERACTION
  renderstyle add
  alpha 0.9
  scale 2.5
  States
  {
  Spawn:
    PUF6 JKLMNOP 5 A_FadeOut(0.05)
    PUF6 QRSTUVWX 4 A_FadeOut(0.05)
    stop
  }
}

Actor FBLargeBurst
{
Radius 40
Height 80
-SOLID
+NOGRAVITY
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_PlaySound("FrostBurst")
TNT1 A 1 A_Burst("IceChunkFrostBite2") 
stop
}
}

Actor FrostBiteAttack
{
  +NOGRAVITY
  +THRUGHOST
  +FORCERADIUSDMG
  +DONTBLAST
  +NOTELEPORT
  +RIPPER
  Speed 10
  Radius 2
  Height 2
  Obituary "%o got frost bite from %k."
  damagetype "Iodsa"
  damage 0
  States
  {
  Spawn:
    TNT1 A 0
    TNT1 A 1
    Goto Death
  Death:
    TNT1 A 1 A_Explode(90,110,0)
    Stop
	}
}

Actor FrostBiteBreath
{
  PROJECTILE
  Damage 2
  Speed 21
  Radius 12
  RenderStyle add
  Damagetype "VilesFire"
  Obituary "%o got the chills from %k's frozen wind."
  Alpha 0.8
  Scale 2.0
  Height 20
  +RIPPER
  +DOOMBOUNCE
  +BLOODLESSIMPACT
  States
  {
  Spawn:
    PUF6 J 5 A_FadeOut(0.05)
    PUF6 K 5 A_FadeOut(0.05)
    PUF6 L 5 A_FadeOut(0.05)
    PUF6 M 5 A_FadeOut(0.05)
    PUF6 N 5 A_FadeOut(0.05)
    PUF6 O 5 A_FadeOut(0.05)
    PUF6 P 5 A_FadeOut(0.05)
    PUF6 Q 5 A_FadeOut(0.05)
    PUF6 R 5 A_FadeOut(0.05)
    PUF6 S 5 A_FadeOut(0.05)
    PUF6 T 5 A_FadeOut(0.05)
    PUF6 U 5 A_FadeOut(0.05)
    PUF6 V 5 A_FadeOut(0.05)
    PUF6 W 5 A_FadeOut(0.05)
    PUF6 X 5 A_FadeOut(0.05)
    stop
  Death:
    PUF6 X 0
    stop
}
}

Actor IceChunkFrostBite
{
  Radius 3
  Height 4
  +CLIENTSIDEONLY
  -SOLID
  -NOGRAVITY
  States
  {
  Spawn:
    ICEC A 0
    ICEC A 0 A_Recoil(-5)
    ICEC AAAABCD 3
    Stop
	}
}

Actor IceChunkFrostBite2 : IceChunkFrostBite
{
+LOWGRAVITY
  States
  {
  Spawn:
    ICEC A 0
    ICEC A 0 ThrustThingZ(0,random(1,15),0,0)
    ICEC ABCD 30
    Stop
	}
}

Actor IceChunkFrostBite3 : IceChunkFrostBite
{
  States
  {
  Spawn:
    ICEC A 0
    ICEC A 0 ThrustThingZ(0,random(1,15),0,0)
    ICEC A 0 ThrustThing(random(0,256),random(1,8))
    ICEC ABCD 4
    Stop
	}
}

Actor FrostBiteTwinkle
{
Radius 3
Height 3
RenderStyle add
+NOGRAVITY
+NOINTERACTION
+CLIENTSIDEONLY
-SOLID
States
  {
  Spawn:
    TGLT F 0 bright
    TGLT F 0 bright A_PlaySound("FrostTwinkle")
    TGLT FGHIFGHIFGHIFGHI 2 bright A_FadeOut(0.02)
    stop
	}
}
