Actor "Dark Catharsi"
{
MONSTER
Health 370
Radius 18
Height 56
Mass 100
Speed 6
BloodColor "Green"
Painchance "Mine", 128
Painchance "AdvancedImp", 0
Painchance "Shadow", 0
Painchance "SoulToxic", 0
Painchance "Cacolich", 0
PainChance 30
+NoRadiusDMG
+MissileMore
+MissileEvenMore
+QuickToRetaliate
+FloorClip
+AvoidMelee
+DontHarmSpecies
+DontHurtSpecies
+DONTHARMCLASS
Species "AdvancedImp"
Damagetype "AdvancedImp"
Damagefactor "Fire", 0.7
//No Infighting
Damagefactor "AdvancedImp", 0.0
Damagefactor "Shadow", 0.0
Damagefactor "Catharsi15k", 0.0
Damagefactor "Catharsi10K", 0.0
Damagefactor "Nightshade", 0.0
Damagefactor "HellionFire", 0.0
DamageFactor "SoulToxic", 0.25
DamageFactor "Cacolich", 0.25
DropItem "BossLifeEssence", 196
DropItem "HEMBossArmorBonusMax26", 196
DropItem "NewCell" 256
DropItem "NewCellPack" 128
SEESOUND "catharsi/sit"
PAINSOUND "catharsi/pain"
DEATHSOUND "catharsi/death"
ACTIVESOUND "imp/active"
OBITUARY "%o was reduced to tiny chars by a Dark Catharsi."
Tag "Dark Catharsi"
States
	{
	Spawn:
		DCTH A 10 A_Look
		Loop
	See:
		DCTH AABB 2 A_Chase
		TNT1 A 0 A_SpawnItemEx("HumanishStep2",0,0,2,0,0,-20)
		DCTH CCDD 2 A_Chase
		TNT1 A 0 A_SpawnItemEx("HumanishStep2",0,0,2,0,0,-20)
		TNT1 A 0 A_Jump(62,"Boost")
		Loop
	Boost:
		DCTH A 1 A_Chase
		TNT1 A 0 A_Chase
		TNT1 A 0 A_SpawnItemEx("CatharsiGhostA",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		DCTH A 1 A_Chase
		TNT1 A 0 A_Chase
		TNT1 A 0 A_SpawnItemEx("CatharsiGhostA",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		DCTH B 1 A_Chase
		TNT1 A 0 A_Chase
		TNT1 A 0 A_SpawnItemEx("CatharsiGhostB",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		DCTH B 1 A_Chase
		TNT1 A 0 A_Chase
		TNT1 A 0 A_SpawnItemEx("CatharsiGhostB",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		TNT1 A 0 A_SpawnItemEx("HumanishStep2",0,0,2,0,0,-20)
		DCTH C 1 A_Chase
		TNT1 A 0 A_Chase
		TNT1 A 0 A_SpawnItemEx("CatharsiGhostC",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		DCTH C 1 A_Chase
		TNT1 A 0 A_Chase
		TNT1 A 0 A_SpawnItemEx("CatharsiGhostC",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		DCTH D 1 A_Chase
		TNT1 A 0 A_Chase
		TNT1 A 0 A_SpawnItemEx("CatharsiGhostD",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		DCTH D 1 A_Chase
		TNT1 A 0 A_Chase
		TNT1 A 0 A_SpawnItemEx("CatharsiGhostD",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		TNT1 A 0 A_SpawnItemEx("HumanishStep2",0,0,2,0,0,-20)
		TNT1 A 0 A_Jump(50,"See")
		Loop
	Missile:
		TNT1 A 0
		//TNT1 A 0 A_ChangeFlag(NoTarget,1)
		//TNT1 A 0 A_CustomMissile("BribeCaco",1,0,0,2,-90)
		DCTH E 1 A_Jump(30,"BFG10K")
		DCTH EE 2 A_FaceTarget
		//TNT1 A 0 A_ChangeFlag(NoTarget,0)
	MissileLoop:
		DCTH E 1
		TNT1 A 0 A_PlaySound("weapons/bfg15kfire")
		DCTH F 1 BRIGHT A_CustomMissile("Catharsi15K",30,8,random(4,-8),0)
		DCTH EE 2 A_FaceTarget
		DCTH E 1 A_Jump(12,"Break")
		DCTH E 1 A_CPosRefire
		Loop
	Break:
		DCTH E 15
		GoTo See
	BFG10K:
		TNT1 A 0
		TNT1 A 0 A_PlaySound("weapons/charge15k")
		DCTH EEEE 2 A_FaceTarget
		//TNT1 A 0 A_ChangeFlag(NoTarget,0)
		TNT1 A 0 Bright A_PlaySound("weapons/bfg15kfire")
		DCTH F 1 BRIGHT A_CustomMissile("Catharsi10K",30,8,random(4,-8),0)
		DCTH EEE 2 A_FaceTarget
		TNT1 A 0 Bright A_PlaySound("weapons/bfg15kfire")
		DCTH F 1 BRIGHT A_CustomMissile("Catharsi10K",30,8,random(4,-8),0)
		DCTH EEE 2 A_FaceTarget
		TNT1 A 0 Bright A_PlaySound("weapons/bfg15kfire")
		DCTH F 1 BRIGHT A_CustomMissile("Catharsi10K",30,8,random(4,-8),0)
		DCTH EEE 2 A_FaceTarget
		TNT1 A 0 Bright A_PlaySound("weapons/bfg15kfire")
		DCTH F 1 BRIGHT A_CustomMissile("Catharsi10K",30,8,random(4,-8),0)
		DCTH EEE 2 A_FaceTarget
		TNT1 A 0 Bright A_PlaySound("weapons/bfg15kcooldown")	
		GoTo See
	Pain:
		TNT1 A 0
		DCTH G 3 A_Pain
		GoTo See
	XDeath:
	Death:
		TNT1 A 0
		DCTH GGGG 8 A_PlaySound("monster/homingrockbeep")
		DCTH O 3 A_SpawnItemEx("GreenGibbedGenerator",0,0,0,0,0,0,0,128,0)
		TNT1 A 0 A_Explode(80,300)
		TNT1 A 0 A_CustomMissile("Catharsi10K",30,0,0,2,-90)
		TNT1 AAAAAAA 0 A_CustomMissile("Catharsi10K",30,0,random(0,360),2,random(0,360))
		DCTH P 5 A_XScream
		TNT1 A 0 A_NoBlocking
		DCTH QRSTUV 3
		DCTH W 63000 CanRaise
		Stop
	Raise:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx("VileHealEffect",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
		DCTH WVUTSRQP 4
		DCTH G 5
		GoTo See
	}
}

Actor Catharsi15k : BabyDemo15k
{
Damage 5
ExplosionDamage 20
ExplosionRadius 134
+ThruSpecies
+StrifeDamage
Species ""
Species "AdvancedImp"
Damagetype ""
Damagetype "Catharsi15k"
}

ACTOR Catharsi10K : 10KProjectile
{
+THRUSPECIES
Species ""
Species "AdvancedImp"
DamageType ""
DamageType "Catharsi10K"
Obituary "%o was reduced to chars by a Dark Catharsi."
States
	{
	Death:
	XDeath:  
		TNT1 A 0
		TNT1 A 1 A_SpawnItem("Catharsi10KEx")
		Stop
	}
}

ACTOR Catharsi10KEx : Player10KEx
{
Damage (random(70,80))
+ThruSpecies
Species ""
Species "AdvancedImp"
DamageType ""
DamageType "Catharsi10K"
}

ACTOR CatharsiGhostA
{
Height 56
Radius 2
Alpha 0.7
RENDERSTYLE Translucent
+CLIENTSIDEONLY
+NOINTERACTION
+NONETID
States
	{
	Spawn:
		TNT1 A 0 Bright
		TNT1 A 0 Bright A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
		TNT1 A 1 Bright
		DCTH A 2 A_FadeOut(0.1,1)
		Goto Spawn+3
	Toaster:
		TNT1 A 1 Bright
		Stop
	}
}

Actor CatharsiGhostB : CatharsiGhostA
{
States
	{
	Spawn:
		TNT1 A 0 Bright
		TNT1 A 0 Bright  A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
		TNT1 A 1 Bright
		DCTH B 2 A_FadeOut(0.1,1)
		Goto Spawn+3
	}
}

Actor CatharsiGhostC : CatharsiGhostA
{
States
	{
	Spawn:
		TNT1 A 0 Bright
		TNT1 A 0 Bright A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
		TNT1 A 1 Bright
		DCTH C 2 A_FadeOut(0.1,1)
		Goto Spawn+3
	}
}

Actor CatharsiGhostD : CatharsiGhostA
{
States
	{
	Spawn:
		TNT1 A 0 Bright
		TNT1 A 0 Bright A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
		TNT1 A 1 Bright
		DCTH D 2 A_FadeOut(0.1,1)
		Goto Spawn+3
	}
}