ACTOR NoirCaco : Cacodemon
{
//Creator: NaturalxCF
//Origin: Nexus Infinity
//Sprite: NOIR
//Title: "Noir Cacodemon" 
Health 1200
Speed 16
PainChance 50
+MISSILEMORE
+SEEINVISIBLE
+CANTSEEK
+DONTHURTSPECIES
Species "CacoDemon"
DamageFactor "SatanGuard", 0.0
DamageFactor "CacoLich", 0.0
DamageFactor "PhazoDemon", 0.0
DamageFactor "CacoComet", 0.0
DamageFactor "CurseComet", 0.0
DamageFactor "HelementalComet", 0.0
Damagefactor "BloodSkull", 0.0
DamageFactor "SoulToxic", 0.0
DamageFactor "BombBreath", 0.0
Damagefactor "EleSouls", 0.0
MissileType "NoirSkull"
MissileHeight 24
SeeSound "NoirCaco/Sight"
ActiveSound "NoirCaco/Active"
PainSound "NoirCaco/Pain"
DeathSound "NoirCaco/Death"
DropItem "BossLifeEssence" 160
DropItem "BossArmorBonusMax" 160
DropItem "HellStaff" 50
DropItem "DustMana" 200 30
DropItem "DustMana" 200 30
BloodColor "5E 5E 5E"
Obituary "%o's life was sucked of of %p body by a Noir Cacodemon."
Tag "\c[t6]Noir Cacodemon\c-"
states
{
  Spawn:
	NOIR A 10 A_Look
	Loop
  See:
	NOIR A 3 A_Chase
	Loop
  Missile:
	NOIR A 0 A_Jump(256,"Fireballs","Tracers","Skull")
  Fireballs:
	NOIR BC 5 A_FaceTarget
	NOIR D 0 A_CustomMissile("NoirCacoBall",24,0,-8)
	NOIR D 0 A_CustomMissile("NoirCacoBall",24,0,8)
	NOIR D 5 A_CustomMissile("NoirCacoBall",24,0,0)
	NOIR BC 5 A_FaceTarget
	NOIR D 0 A_CustomMissile("NoirCacoBall",24,0,-4)
	NOIR D 5 A_CustomMissile("NoirCacoBall",24,0,4)
	Goto See
  Tracers:
	NOIR BC 5 A_FaceTarget
	NOIR D 0 A_CustomMissile("NoirCacoTracer",24,0,-16)
	NOIR D 5 A_CustomMissile("NoirCacoTracer",24,0,16)
	Goto See
  Skull:
	NOIR BC 5 A_FaceTarget
	NOIR D 5 A_MissileAttack
	Goto See
  Pain:
	NOIR E 3
	NOIR E 3 A_Pain
	NOIR F 6
	Goto See
  Death:
	NOIR G 8
	NOIR H 8 A_Scream
	NOIR IJ 8 A_SpawnItemEx("BlackGibbedGenerator",0,0,0,0,0,0,0,128,0)
	NOIR K 8 A_NoBlocking
	NOIR L -1 A_SetFloorClip
	Stop
  Raise:
	NOIR L 8 A_UnSetFloorClip
	NOIR KJIHG 8
	Goto See
	}
}

ACTOR NoirCacoBall : CacodemonBall
{
	Speed 20
	FastSpeed 40
	Damage 10
	SeeSound "NoirCaco/Fireball"
	DeathSound "NoirCaco/Impact"
	Damagetype "CacoComet"
	states
	{
Spawn:
	NBAL A 2 Bright
	NBAL A 0 A_SpawnItemEX("NoirCacoBallTail1")
	NBAL A 2 Bright
	NBAL A 0 A_SpawnItemEX("NoirCacoBallTail1")
	NBAL B 2 Bright
	NBAL B 0 A_SpawnItemEX("NoirCacoBallTail2")
	NBAL B 2 Bright
	NBAL B 0 A_SpawnItemEX("NoirCacoBallTail2")
	Loop
Death:
	NBAL CCCC 0 A_SpawnItemEX("NoirCacoBallTail1",random(-1,1),random(-1,1),random(-1,1),random(-4,4),random(-4,4),random(-4,4),random(0,360),0,0,0)
	NBAL CCCC 0 A_SpawnItemEX("NoirCacoBallTail2",random(-1,1),random(-1,1),random(-1,1),random(-4,4),random(-4,4),random(-4,4),random(0,360),0,0,0)
	NBAL CDE 6 Bright
	Stop
	}
}

ACTOR NoirCacoBallTail1
{
	Radius 1
	Height 1
	Speed 0
	Damage 0
	Projectile
	+RANDOMIZE
	+THRUGHOST
	Renderstyle Add
	Alpha 1
	states
	{
Spawn:
	TNT1 A 2 Bright
	NBAL A 1 Bright A_FadeOut(0.1)
	Goto Spawn+1
	}
}

ACTOR NoirCacoBallTail2 : NoirCacoBallTail1
{
	states
	{
Spawn:
	TNT1 A 2 Bright
	NBAL A 1 Bright A_FadeOut(0.1)
	Goto Spawn+1
	}
}

ACTOR NoirCacoTracer : RevenantTracer
{
	Speed 18
	Damage 15
	SeeSound "NoirCaco/Tracer"
	DeathSound "NoirCaco/Impact"
	Damagetype "CacoComet"
	states
	{
Spawn:
	NSEK A 2 Bright A_SeekerMissile(3,6)
	NSEK A 0 A_SpawnItemEX("NoirCacoTracerTail1")
	NSEK A 2 Bright A_SeekerMissile(3,6)
	NSEK A 0 A_SpawnItemEX("NoirCacoTracerTail1")
	NSEK B 2 Bright A_SeekerMissile(3,6)
	NSEK B 0 A_SpawnItemEX("NoirCacoTracerTail2")
	NSEK B 2 Bright A_SeekerMissile(3,6)
	NSEK B 0 A_SpawnItemEX("NoirCacoTracerTail2")
	Loop
Death:
	NSEK CCCC 0 A_SpawnItemEX("NoirCacoBallTail1",random(-1,1),random(-1,1),random(-1,1),random(-4,4),random(-4,4),random(-4,4),random(0,360),0,0,0)
	NSEK CCCC 0 A_SpawnItemEX("NoirCacoBallTail2",random(-1,1),random(-1,1),random(-1,1),random(-4,4),random(-4,4),random(-4,4),random(0,360),0,0,0)
	NSEK C 8 Bright
	NSEK D 6 Bright
	NSEK E 4 Bright
	Stop
	}
}

ACTOR NoirCacoTracerTail1 : NoirCacoBallTail1
{
	states
	{
Spawn:
	TNT1 A 2 Bright
	NSEK A 1 Bright A_FadeOut(0.1)
	Goto Spawn+1
	}
}

ACTOR NoirCacoTracerTail2 : NoirCacoBallTail1
{
	states
	{
Spawn:
	TNT1 A 2 Bright
	NSEK B 1 Bright A_FadeOut(0.1)
	Goto Spawn+1
	}
}

ACTOR NoirSkull
{
	Radius 16
	Height 16
	Speed 20
	Damage 20
	Projectile
	Renderstyle Add
	Alpha 1
	SeeSound "NoirCaco/Skull"
	DeathSound "NoirCaco/SkullImpact"
	Damagetype "CacoComet"
	states
	{
Spawn:
	NSKL AB 4 Bright
	Loop
Death:
	NBAL CCCCCCCC 0 A_CustomMissile("NoirCacoBall",random(-2,2),random(-2,2),random(0,360),CMF_AIMDIRECTION,random(-16,16))
	NBAL C 6 Bright A_Explode
	NBAL DE 6 Bright
	Stop
	}
}
