ACTOR Infernalist : Diabolist 17582 //inheritance bad))))
{
//$Category Monsters/DUST
//$Sprite IFLIA1D1
//$Title "Infernalist"
  Health 1300
  Scale 1
  BloodColor "Black"
  DropItem "BossLifeEssence" 128 25
  DropItem "BossArmorBonusMax" 128 1
  Obituary "%o was charred by an Infernalist."
  //SeeSound "Monster/diasit" 
  //ActiveSound "Monster/diaact" 
  //DeathSound "avile/death"
  States 
  { 
  Spawn: 
    IFLI A 10 A_Look 	
    Loop 
  See:
	TNT1 A 0 A_Jump(64,"Rush")
    IFLI A 0 A_SpawnItem("HumanishStep",0,0,0,0)
	TNT1 A 0 A_SpawnItem("InfernalistWalkFire")
    IFLI AAB 2 A_VileChase
	TNT1 A 0 A_SpawnItem("InfernalistWalkFire")
	IFLI BCC 2 A_VileChase
    TNT1 A 0 A_SpawnItem("HumanishStep",0,0,0,0)
	TNT1 A 0 A_SpawnItem("InfernalistWalkFire")
    IFLI DDE 2 A_VileChase
	TNT1 A 0 A_SpawnItem("InfernalistWalkFire")
	IFLI EFF 2 A_VileChase
    Loop
  Rush:
    TNT1 A 0 A_SpawnItem("InfernalistGhost",0,0)
	TNT1 A 0 A_SpawnItem("InfernalistWalkFire")
    IFLI A 1 A_VileChase
    TNT1 A 0 A_SpawnItem("InfernalistGhost",0,0)
    IFLI A 1 A_VileChase
    TNT1 A 0 A_SpawnItem("InfernalistGhost",0,0)
	TNT1 A 0 A_SpawnItem("InfernalistWalkFire")
    IFLI B 1 A_VileChase
    TNT1 A 0 A_SpawnItem("InfernalistGhost",0,0)
    IFLI B 1 A_VileChase
    TNT1 A 0 A_SpawnItem("InfernalistGhost",0,0)
	TNT1 A 0 A_SpawnItem("InfernalistWalkFire")
    IFLI C 1 A_VileChase
    TNT1 A 0 A_SpawnItem("InfernalistGhost",0,0)
    IFLI C 1 A_VileChase
    TNT1 A 0 A_SpawnItem("InfernalistGhost",0,0)
	TNT1 A 0 A_SpawnItem("InfernalistWalkFire")
    IFLI D 1 A_VileChase
    TNT1 A 0 A_SpawnItem("InfernalistGhost",0,0)
    IFLI D 1 A_VileChase
    TNT1 A 0 A_SpawnItem("InfernalistGhost",0,0)
	TNT1 A 0 A_SpawnItem("InfernalistWalkFire")
    IFLI E 1 A_VileChase
    TNT1 A 0 A_SpawnItem("InfernalistGhost",0,0)
    IFLI E 1 A_VileChase
    TNT1 A 0 A_SpawnItem("InfernalistGhost",0,0)
	TNT1 A 0 A_SpawnItem("InfernalistWalkFire")
    IFLI F 1 A_VileChase
    TNT1 A 0 A_SpawnItem("InfernalistGhost",0,0)
    IFLI F 1 A_VileChase
    TNT1 A 0 A_SpawnItem("InfernalistGhost",0,0)
	TNT1 A 0 A_SpawnItem("InfernalistWalkFire")
    IFLI A 1 A_VileChase
    TNT1 A 0 A_SpawnItem("InfernalistGhost",0,0)
    IFLI A 1 A_VileChase
    TNT1 A 0 A_SpawnItem("InfernalistGhost",0,0)
	TNT1 A 0 A_SpawnItem("InfernalistWalkFire")
    IFLI B 1 A_VileChase
    TNT1 A 0 A_SpawnItem("InfernalistGhost",0,0)
    IFLI B 1 A_VileChase
    TNT1 A 0 A_SpawnItem("InfernalistGhost",0,0)
	TNT1 A 0 A_SpawnItem("InfernalistWalkFire")
    IFLI C 1 A_VileChase
    TNT1 A 0 A_SpawnItem("InfernalistGhost",0,0)
    IFLI C 1 A_VileChase
    TNT1 A 0 A_SpawnItem("InfernalistGhost",0,0)
	TNT1 A 0 A_SpawnItem("InfernalistWalkFire")
    IFLI D 1 A_VileChase
    TNT1 A 0 A_SpawnItem("InfernalistGhost",0,0)
    IFLI D 1 A_VileChase
    TNT1 A 0 A_SpawnItem("InfernalistGhost",0,0)
	TNT1 A 0 A_SpawnItem("InfernalistWalkFire")
    IFLI E 1 A_VileChase
    TNT1 A 0 A_SpawnItem("InfernalistGhost",0,0)
    IFLI E 1 A_VileChase
    TNT1 A 0 A_SpawnItem("InfernalistGhost",0,0)
	TNT1 A 0 A_SpawnItem("InfernalistWalkFire")
    IFLI F 1 A_VileChase
    TNT1 A 0 A_SpawnItem("InfernalistGhost",0,0)
    IFLI F 1 A_VileChase
    TNT1 A 0 A_Jump(128,"See")
    Loop
  Missile:
	TNT1 A 0 A_Jump(160,"FloorTracers","Comets","FloorTracer2")
    TNT1 A 0 A_FaceTarget
	TNT1 A 0 A_ChangeFlag("NOPAIN",1)
    IFLI G 10 Bright A_VileStart
    IFLI H 8 Bright A_VileTarget("InfernalistFireFX")
    IFLI IHIHIHIHIHIHIHIHIHIH 4 Bright A_FaceTarget
	TNT1 A 0 A_ChangeFlag("NOPAIN",0)
    Goto See
  FloorTracers:
    IFL2 AABB 5 Bright A_FaceTarget 
    IFL2 C 0 Bright A_CustomMissile("InfernalistFloorFire",40,0,15)
    IFL2 C 0 Bright A_CustomMissile("InfernalistFloorFire",40,0,-15)
    IFL2 C 10 Bright A_CustomMissile("InfernalistFloorFire",40,0,0)
    Goto See
  Comets:
	TNT1 A 0 A_SpawnItemEx("InfernalistCometFireSpawner")
	IFL2 A 4 Bright A_FaceTarget
	TNT1 A 0 A_SpawnItemEx("InfernalistCometFireSpawner")
	IFL2 B 4 Bright A_FaceTarget
	TNT1 A 0 A_SpawnItemEx("InfernalistCometFireSpawner")
	IFL2 C 4 Bright A_FaceTarget
	TNT1 A 0 A_SpawnItemEx("InfernalistCometFireSpawner")
    IFLI G 4 Bright A_FaceTarget 
	TNT1 A 0 A_SpawnItemEx("InfernalistCometFireSpawner")
    IFLI H 4 Bright A_FaceTarget 
	TNT1 A 0 A_SpawnItemEx("InfernalistCometFireSpawner")
    IFLI I 4 Bright A_FaceTarget 
	TNT1 A 0 A_SpawnItemEx("InfernalistCometFireSpawner")
    IFLI J 4 Bright A_FaceTarget 
	TNT1 A 0 A_SpawnItemEx("InfernalistCometFireSpawner")
    IFLI K 4 Bright A_FaceTarget 
	TNT1 A 0 A_SpawnItemEx("InfernalistCometFireSpawner")
    IFLI L 4 Bright A_FaceTarget 
	TNT1 A 0 A_SpawnItemEx("InfernalistCometFireSpawner")
    IFLI M 4 Bright A_FaceTarget 
	TNT1 A 0 A_SpawnItemEx("InfernalistCometFireSpawner")
    IFLI N 4 Bright A_FaceTarget 
    TNT1 AA 0 A_CustomMissile("InfernalistComet",40,0,random(-4,4))
    IFLI O 4 Bright A_CustomMissile("InfernalistComet",40,0,0)
    TNT1 A 0 A_CustomMissile("InfernalistComet",40,0,random(-8,8))
    IFLI P 4 Bright A_CustomMissile("InfernalistComet",40,0,random(-8,8))
  FloorTracer2:
	TNT1 A 0 A_Playsound("brain/spit",7)
    IFLI GHIJKLMN 2 Bright A_FaceTarget 
    IFLI O 5 Bright A_CustomMissile("InfernalistFireSpawner",40,0,0)
    IFLI P 5 Bright 
    Goto See
  Pain: 
    IFLI Q 10 A_Pain 
	Goto See
  Heal:
	IFL2 A 8 Bright
	TNT1 A 0 A_RadiusGive("InfernalistResurrect",128,RGF_MONSTERS,1)
    IFL2 BC 8 Bright
    Goto See
  XDeath:
  Death:
    IFLI Q 6
    IFLI R 5 A_Scream
	IFLI S 5 A_Fall
    IFLI TUV 5
	IFLI W 4 A_SpawnItem("BodyCrash",0,0,0,0)
    IFLI XY 4
    IFLI Z -1
    Stop   
    }
}

ACTOR InfernalistComet : Comet
{
  Speed 30
  DamageType "VileFires"
}

ACTOR InfernalistCometFire : AHellionSmoke
{
-NOTIMEFREEZE
Scale 0.4
States
  {
  Spawn:
	TNT1 A 0 Bright
	FIR1 ABCDEFGHIJKL 1 Bright A_FadeOut(0.1,1)
	Stop
  }
}

ACTOR InfernalistCometFireSpawner : LHellionSmokeSpawner
{
-NOTIMEFREEZE
States
  {
  Spawn:
	TNT1 A 0 
	TNT1 AAAA 1 A_SpawnItemEx("InfernalistCometFire",30,0,32,frandom(-3,3),frandom(-3,3),frandom(-3,3),0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
	TNT1 A 1
	Stop	
  }
}

ACTOR InfernalistFireFX : ArchVileFire
{
  RenderStyle Add
  Scale 0.7
  Alpha 1
  +DONTSPLASH
  var int user_vilefire;
  States
  {
  Spawn:
    TNT1 A 0
    TNT1 A 0 A_PlaySoundEx("exile/voidstart","Voice")
  SpawnLoop:
	TNT1 A 0 A_JumpIf(user_vilefire >= 3,"End")	 
	TNT1 A 0 A_SetUserVar("user_vilefire",user_vilefire+1)
	TNT1 A 0 A_SpawnItemEx("InfernalistRainSpawner",0,0,128)
    FERF ABCD 1 Bright A_Fire
	TNT1 A 0 A_SpawnItemEx("InfernalistRainSpawner",0,0,128)
    FERF EFGH 1 Bright A_Fire
	TNT1 A 0 A_SpawnItemEx("InfernalistRainSpawner",0,0,128)
    FERF IJKL 1 Bright A_Fire
	TNT1 A 0 A_SpawnItemEx("InfernalistRainSpawner",0,0,128)
    FERF MNOP 1 Bright A_Fire
	TNT1 A 0 A_SpawnItemEx("InfernalistRainSpawner",0,0,128)
    FERF QRST 1 Bright A_Fire
	TNT1 A 0 A_SpawnItemEx("InfernalistRainSpawner",0,0,128)
    FERF UVWX 1 Bright A_Fire
	TNT1 A 0 A_SpawnItemEx("InfernalistRainSpawner",0,0,128)
    FERF "YZ[\]" 1 Bright A_Fire
	Loop
  End:
	TNT1 A 1 //A_PlaySoundEx("exile/voidend","Voice")
	//TNT1 A 0 A_StopSoundEx("Voice")
    Stop
	}
}

ACTOR InfernalistRainSpawner : RainCometSpawner
{
XScale 1.5
YScale 0.25
-SPAWNCEILING
States
{
Spawn:
    TNT1 A 0 NoDelay A_CustomMissile("InfernalistRain",-8,random(-20,20),random(0,360),2)
	CMRA ABCDEFGHIJ 2 Bright A_FadeOut(0.2)
    Goto Spawn+1
	}
}

Actor InfernalistRain
{
  Radius 8
  Height 8
  Speed 1
  Damage 5
  Projectile
  RenderStyle Add
  DamageType "VileFires"
  Alpha 0.8
  Scale 0.7
  Gravity 1.6
  +SPAWNCEILING
  +DONTSPLASH
  +NODAMAGETHRUST
  -NOGRAVITY
  -FLOAT
  DeathSound "monsters/newfireexplode"
  States
  {
  Spawn:
    TNT1 A 1 A_SpawnItemEx("InfernalistRainTrail")
    Loop
  Death:
	TNT1 A 0 A_SpawnItemEx("OrangeParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
	TNT1 AAA 0 A_CustomMissile("Kaboom9", 0, 0, random(0,360), 2, random(0,360))
	TNT1 AAA 0 A_CustomMissile("SmokeFX4", 0, 0, random(0,360), 2, random(0,360))
    FTR0 K 4 Bright
    FTR0 L 4 Bright A_Explode(32,64)
    FTR0 MNO 3 Bright
    Stop
  }
}

ACTOR InfernalistRainTrail : OrangeFire
{
  Scale 0.15
  States
  {
  Spawn:
	TNT1 A 0
	FIR1 ABCDEFGHIJKL 1 Bright A_FadeOut
	Stop
  }
}

Actor InfernalistFloorFire
{
  Radius 5
  Height 5
  Speed 20
  ReactionTime 175
  Damage 6
  DamageType "VileFires"
  RenderStyle Add
  Alpha 0.8
  Scale 1
  Projectile
  +SEEKERMISSILE
  +FLOORHUGGER
  -NOGRAVITY
  Obituary "%o was charred by an Infernalist."
  Seesound "weapons/diasht"
  DeathSound "weapons/firex3"   
  States
  {
  Spawn:
	TNT1 A 0
    TNT1 A 0 A_PlaySoundEx("monster/ambientfire2",7,1)
    TNT1 A 1 A_CStaffMissileSlither
	TNT1 A 0 A_SeekerMissile(1,1)
    TNT1 A 0 A_Countdown
    TNT1 A 0 A_SpawnItemEx("InfernalistFloorFireTrail")
    Loop
  Death:
    TNT1 A 0 A_SpawnItemEx("RedParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
	TNT1 AAAA 0 A_CustomMissile("Kaboom3", 0, 0, random(0,360), 2, random(0,360))
	TNT1 AAAA 0 A_CustomMissile("SmokeFX2", 0, 0, random(0,360), 2, random(0,360))
    TNT1 A 0 A_StopSound(7)
    FTR0 K 4 Bright
    FTR0 L 4 Bright A_Explode(64, 64)
    FTR0 MNO 3 Bright
    Stop
  }
}

Actor InfernalistFloorFireTrail
{
  Speed 0
  RenderStyle Add
  DamageType "VileFires"
  Alpha 0.8
  Scale 1.3
  Projectile
  +FLOORHUGGER
  -NOGRAVITY
  States
  {
  Spawn:
    FTR0 ABCDEFGHIJ 2 Bright A_Explode(4,50)
    stop
  }
}

ACTOR InfernalistFireSpawner : PyroFireSpawner
{
  Speed 20
  Species "Viles"
  DamageType "VileFires"
  Obituary "%o was charred by an Infernalist."
  Projectile
  MissileType InfernalistFire
  Missileheight 0
  States
  {
  Spawn: 
    TNT1 AA 1 Bright A_CStaffMissileSlither
	TNT1 A 1 Bright A_MissileAttack
    Loop
  Death:  
    TNT1 A 1
    Stop
  }
}

ACTOR InfernalistFire : PyroFire
{
  Obituary "%o was charred by an Infernalist."
  DamageType "VileFires"
  SeeSound "vile/firecrkl"
  +NODAMAGETHRUST
  States
  {
  Spawn:
	TNT1 A 0 A_SpawnItemEx("DiabFireSpawner")
    DFIR AB 2 Bright A_Explode(10,100)
	TNT1 A 0 A_SpawnItemEx("DiabFireSpawner")
    DFIR AB 2 Bright A_Explode(10,100)
	TNT1 A 0 A_SpawnItemEx("DiabFireSpawner")
    DFIR BC 2 Bright A_Explode(10,100)
	TNT1 A 0 A_SpawnItemEx("DiabFireSpawner")
    DFIR BC 2 Bright A_Explode(10,100)
	TNT1 A 0 A_SpawnItemEx("DiabFireSpawner")
    DFIR DE 2 Bright A_Explode(10,100)
	TNT1 A 0 A_SpawnItemEx("DiabFireSpawner")
    DFIR DE 2 Bright A_Explode(10,100)
	TNT1 A 0 A_SpawnItemEx("DiabFireSpawner")
    DFIR FG 2 Bright A_Explode(10,100)
	TNT1 A 0 A_SpawnItemEx("DiabFireSpawner")
    DFIR FG 2 Bright A_Explode(10,100)
	TNT1 A 0 A_SpawnItemEx("DiabFireSpawner")
    DFIR GH 2 Bright A_Explode(10,100)
	TNT1 A 0 A_SpawnItemEx("DiabFireSpawner")
    DFIR GH 2 Bright A_Explode(10,100)
    Stop       
   }
}

Actor InfernalistResurrect : CustomInventory
{
  +NOTIMEFREEZE
  +INVENTORY.ALWAYSPICKUP
  +INVENTORY.AUTOACTIVATE
  +INVENTORY.IGNORESKILL
  Inventory.Amount 1
  Inventory.MaxAmount 1
  States
  {
  Spawn:
	TNT1 A 1
	Stop
  Pickup:
	TNT1 A 1
	TNT1 A 0 A_JumpIfInventory("InfernalistResCheck",1,"Nope")
	TNT1 A 0 A_GiveInventory("InfernalistResCheck")
	TNT1 A 0 ACS_NamedExecuteAlways("InfernalistResFire")
	Stop
  Nope:
	TNT1 A 0
	Stop
  }
}
Actor InfernalistResCheck : Inventory { Inventory.MaxAmount 1 }

Actor InfernalistResExplosion
{
  Projectile
  +FORCERADIUSDMG
  +DONTHARMSPECIES
  +DONTHURTSPECIES
  DeathSound "weapons/rocklx"
  Obituary "%o was blown up by an enemy inbued by an Infernalist."
  States
  {
  Spawn:
  Death:
	TNT1 A 0
	TNT1 A 0 A_CustomMissile("InfernalistFire",0,0,0,CMF_AIMDIRECTION)
	TNT1 A 0 A_SpawnItemEx("OrangeParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128) 
	TNT1 AAA 0 A_CustomMissile("Kaboom3", 0, 0, random(0,360), 2, random(0,360))
	TNT1 A 4 A_SpawnItem("RocketEx")
	TNT1 A 0 A_Explode(128,128)
	Stop
  }
}


ACTOR InfernalistResFire : OrangeFire
{
Scale 0.2
States
  {
  Spawn:
	TNT1 A 0 Bright
	FIR1 ABCDEFGHIJKL 1 Bright A_FadeOut(0.1,1)
	Stop
  }
}

ACTOR InfernalistResFireSpawner : LHellionSmokeSpawner
{
-NOTIMEFREEZE
States
  {
  Spawn:
	TNT1 A 0 Bright
	TNT1 A 0 Bright A_CheckSight("Toaster")
	TNT1 A 0 A_SpawnItemEx("InfernalistResFire",0,0,0,0,0,random(1,3),0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
	TNT1 A 1 Bright
	Stop	
  }
}

ACTOR InfernalistWalkFire : DukeWalkFire
{
  States
  {
  Spawn:
    TNT1 A 0
    TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
    TNT1 A 4
    IFWF ABC 3 Bright
    TNT1 A 0 A_Jump(191,3)
    TNT1 A 0 A_CustomMissile("InfernalistWalkFire", 0, 24, 0)
    TNT1 A 0 A_CustomMissile("InfernalistWalkFire", 0, -24, 0)
    IFWF DEFGHIJKLMNO 3 Bright
    Stop
  Toaster:
    TNT1 A 0
	Stop
    }
}

ACTOR InfernalistGhost : ExileFX
{
Scale 1
States
{
Spawn: 
    TNT1 A 1
	IFLI ABCDEF 2 A_FadeOut(0.18)
    Goto Spawn+1
    }
}