Actor DarkCacoLich
{
MONSTER
Health 850
Height 56
Radius 30
Mass 1200
Speed 5
FloatSpeed 5
BloodColor "Green"
Meleedamage 8
Painchance "Mine", 128
Painchance "SatanGuard", 0
PainChance 25
+FLOAT
+NOGRAVITY
+MISSILEMORE
+MissileEvenMore
+DontHurtSpecies
+DontHarmSpecies
+DontHarmClass
Species "Cacodemon"
DamageType "CacoLich"
Damagefactor "Acid", 0.25
//No Infighting
DamageFactor "CacoLich", 0.0
DamageFactor "PhazoDemon", 0.0
DamageFactor "CacoComet", 0.0
DamageFactor "HelementalComet", 0.0
Damagefactor "BloodSkull", 0.0
Damagefactor "BloodElemental", 0.0
DamageFactor "SoulToxic", 0.0
DamageFactor "BombBreath", 0.0
Damagefactor "EleSouls", 0.0
DropItem "BossLifeEssence", 180, 10
DropItem "HEMArmorBonusMax10", 180
SeeSound "Lich/sight"
ActiveSound "Lich/active"
MeleeSound "caco/melee"
PainSound "Lich/pain"
DeathSound "Lich/death"
Obituary "%o got drown by a Dark Cacolich's poisonous blasts."
HitObituary "%o was eaten alive by a Dark Cacolich." 
Tag "Dark CacoLich"
States
	{
	Spawn:
		CLIC A 10 A_Look
		Loop
	See:
		TNT1 A 0 A_SetSolid
		CLIC AAAAAAAAA 1 A_Chase
		TNT1 A 0 A_JumpIfInTargetLOS("Dodge",30,JLOSF_DEADNOJUMP,500)
		CLIC A 0 A_Jump(68,"Dodge")
		Loop
	Dodge:
		CLIC A 0 A_Jump(256,"Right","Left","Back","BackLeftRange","BackRightRange")
		GoTo See
	Right:
		CLIC A 0
		CLIC A 0 ThrustThing(angle*256/360+64,30,0,0)
		CLIC A 5
		GoTo See
	Left:
		CLIC A 0
		CLIC A 0 ThrustThing(angle*256/360+192,30,0,0)
		CLIC A 5
		GoTo See
	Back:
		CLIC A 0
		CLIC A 0 ThrustThing(angle*256/360+128,30,0,0)
		CLIC A 5
		GoTo See
	BackLeftRange:
		CLIC A 0
		CLIC A 0 ThrustThing(angle*256/360+random(133,187),30,0,0)
		CLIC A 5
		GoTo See
	BackRightRange:
		CLIC A 0
		CLIC A 0 ThrustThing(angle*256/360+random(69,123),30,0,0)
		CLIC A 5
		GoTo See
	Missile:
		TNT1 A 0
		TNT1 A 0 A_SetSolid
		TNT1 A 0 A_Stop
		CLIC A 0 A_JumpIfCloser(500,"Normal")
		CLIC A 0 A_JumpIfCloser(800,"Comet")
		CLIC A 0 A_JumpIfCloser(1000,"Tracers")
		CLIC A 0 A_Jump(128,"SuperLaser")
		CLIC A 0 A_Jump(128,"Rush")
	Normal:
		CLIC BBBBDDDD 1 A_FaceTarget
		CLIC C 1 A_FaceTarget
		TNT1 A 0 A_CustomMissile("CacoLichLaser",30,0,0)
		CLIC C 1 A_FaceTarget
		TNT1 A 0 A_CustomMissile("CacoLichLaser",30,0,0)
		CLIC C 1 A_FaceTarget
		TNT1 A 0 A_CustomMissile("CacoLichLaser",30,0,0)
		CLIC C 1 A_FaceTarget
		TNT1 A 0 A_CustomMissile("CacoLichLaser",30,0,0)
		CLIC DB 4
		GoTo See
	SuperLaser:
		CLIC BBBBDDDD 1 A_FaceTarget
		TNT1 A 0 A_CustomMissile("CacoLichLaser",30,0,0)
		CLIC C 1 A_FaceTarget
		TNT1 A 0 A_CustomMissile("CacoLichLaser",30,0,0)
		CLIC C 1 A_FaceTarget
		TNT1 A 0 A_CustomMissile("CacoLichLaser",30,0,0)
		CLIC C 1 A_FaceTarget
		TNT1 A 0 A_CustomMissile("CacoLichLaser",30,0,0)
		CLIC C 1 A_FaceTarget
		TNT1 A 0 A_CustomMissile("CacoLichLaser",30,0,0)
		CLIC C 1 A_FaceTarget
		TNT1 A 0 A_CustomMissile("CacoLichLaser",30,0,0)
		CLIC C 1 A_FaceTarget
		TNT1 A 0 A_CustomMissile("CacoLichLaser",30,0,0)
		CLIC C 1 A_FaceTarget
		TNT1 A 0 A_CustomMissile("CacoLichLaser",30,0,0)
		CLIC C 1 A_FaceTarget
		TNT1 A 0 A_CustomMissile("CacoLichLaser",30,0,0)
		CLIC C 1 A_FaceTarget
		TNT1 A 0 A_CustomMissile("CacoLichLaser",30,0,0)
		CLIC C 1 A_FaceTarget
		TNT1 A 0 A_CustomMissile("CacoLichLaser",30,0,0)
		CLIC C 1 A_FaceTarget
		TNT1 A 0 A_CustomMissile("CacoLichLaser",30,0,0)
		CLIC C 1 A_FaceTarget
		TNT1 A 0 A_CustomMissile("CacoLichLaser",30,0,0)
		CLIC C 1 A_FaceTarget
		TNT1 A 0 A_CustomMissile("CacoLichLaser",30,0,0)
		CLIC C 1 A_FaceTarget
		TNT1 A 0 A_CustomMissile("CacoLichLaser",30,0,0)
		CLIC C 1 A_FaceTarget
		TNT1 A 0 A_CustomMissile("CacoLichLaser",30,0,0)
		CLIC C 1 A_FaceTarget
		TNT1 A 0 A_CustomMissile("CacoLichLaser",30,0,0)
		CLIC C 1 A_FaceTarget
		TNT1 A 0 A_CustomMissile("CacoLichLaser",30,0,0)
		CLIC C 1 A_FaceTarget
		TNT1 A 0 A_CustomMissile("CacoLichLaser",30,0,0)
		CLIC C 1 A_FaceTarget
		TNT1 A 0 A_CustomMissile("CacoLichLaser",30,0,0)
		CLIC C 1 A_FaceTarget
		TNT1 A 0 A_CustomMissile("CacoLichLaser",30,0,0)
		CLIC C 1 A_FaceTarget
		TNT1 A 0 A_CustomMissile("CacoLichLaser",30,0,0)
		CLIC DB 4
		GoTo Comet
	Comet:
		CLIC EEEEFFFF 1 A_FaceTarget
		CLIC GGGG 1 A_FaceTarget
		CLIC G 1 Bright A_CustomMissile("CacoLichComet",24,0,0)
		CLIC FE 4
		GoTo See
	Tracers:
		CLIC EF 4 A_FaceTarget
		CLIC G 2 A_FaceTarget
		TNT1 A 0 A_CustomMissile("CacoLichTracer",24,0,0)
		CLIC G 2 A_FaceTarget
		TNT1 A 0 A_CustomMissile("CacoLichTracer",24,0,0)
		CLIC G 2 A_FaceTarget
		TNT1 A 0 A_CustomMissile("CacoLichTracer",24,0,0)
		CLIC FE 4 A_FaceTarget
		GoTo See
	Rush:
		CLIC A 1 A_Chase("","")
		TNT1 AA 0 A_Chase("","")
		TNT1 A 0 A_SpawnItemEx("CacoLichTrail")
		TNT1 A 0 A_SpawnItemEx("GreenRushPulse")
		TNT1 A 0 A_JumpIfInTargetLOS("Dodge",30,JLOSF_DEADNOJUMP,500)
		CLIC A 1 A_Chase("","")
		TNT1 AA 0 A_Chase("","")
		TNT1 A 0 A_SpawnItemEx("CacoLichTrail")
		TNT1 A 0 A_SpawnItemEx("GreenRushPulse")
		TNT1 A 0 A_JumpIfInTargetLOS("Dodge",30,JLOSF_DEADNOJUMP,500)
		CLIC A 1 A_Chase("","")
		TNT1 AA 0 A_Chase("","")
		TNT1 A 0 A_SpawnItemEx("CacoLichTrail")
		TNT1 A 0 A_SpawnItemEx("GreenRushPulse")
		TNT1 A 0 A_JumpIfInTargetLOS("Dodge",30,JLOSF_DEADNOJUMP,500)
		TNT1 A 0 A_Jump(5,"See")
		Loop
	Pain.Cacobribe:
		TNT1 A 0 HealThing(1)
		TNT1 A 0
		GoTo Missile
	Pain.CacoBribe2:
		TNT1 A 0 A_ClearTarget
		TNT1 A 0 HealThing(8)
		GoTo Dodge
	Pain:
		TNT1 A 0 A_Jump(24,"Missile")
		CLIC H 5 A_Pain
		TNT1 A 0 A_Jump(128,"Dodge")
		GoTo See
	Melee:
		TNT1 A 0 A_SetSolid
		CLIC EFG 4 A_FaceTarget
		TNT1 A 0 A_MeleeAttack
		CLIC FE 4 A_FaceTarget
		GoTo See
	XDeath:
	Death:
		TNT1 A 0
		CLIC J 8 A_Scream
		TNT1 AAAAAAAA 0 A_SpawnItemEx("CacoLichPoison",0,0,10,Random(5,-5),Random(5,-5),Random(6,-3))
		TNT1 A 0 A_SpawnItemEx("GreenGibbedGenerator",0,0,0,0,0,0,0,128,0)
		CLIC K 8 A_Fall
		TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(298) == 1, "AlwaysDrop")
		TNT1 A 0 A_SpawnItemEx("AcidWorm",0,0,8,random(0,8),random(0,8),2,random(0,360),0,192)
		TNT1 A 0 A_SpawnItemEx("AcidAmmoBundle",0,0,8,random(0,8),random(0,8),2,random(0,360),0,160)
		TNT1 A 0 A_SpawnItemEx("AcidAmmo",0,0,8,random(0,8),random(0,8),2,random(0,360),0,128)
		Goto EndDrop
	AlwaysDrop:
		TNT1 A 0 A_SpawnItemEx("AcidWorm",0,0,8,random(0,8),random(0,8),2,random(0,360),0,0)
		TNT1 A 0 A_SpawnItemEx("AcidAmmoBundle",0,0,8,random(0,8),random(0,8),2,random(0,360),0,192)
		TNT1 A 0 A_SpawnItemEx("AcidAmmo",0,0,8,random(0,8),random(0,8),2,random(0,360),0,160)
		Goto EndDrop
	EndDrop:
		CLIC LM 4
		TNT1 A 0 A_ChangeFlag(SOLID,0)
		TNT1 A 0 A_ChangeFlag(THRUACTORS,1)
		TNT1 A 0 A_TakeInventory("Tic",999999)
	Fall:
		CLIC N 1 A_CheckFloor("Land")
		TNT1 A 0 A_JumpIfInventory("Tic",525,"Land")
		TNT1 A 0 A_GiveInventory("Tic",1)
		Loop
	Land:
		TNT1 A 0
		TNT1 A 0 A_TakeInventory("Tic",999999)
		TNT1 A 0 A_ChangeFlag(CORPSE,1)
		CLIC OPQR 3
		TNT1 A 0 A_ChangeFlag(SOLID,0)
		TNT1 A 0 A_ChangeFlag(THRUACTORS,0)
		TNT1 A 0 A_ChangeFlag(MOVEWITHSECTOR,1)
		CLIC S 63000 CanRaise
		Stop
	Raise:
		TNT1 A 0
		TNT1 A 0 A_ChangeFlag(MOVEWITHSECTOR,0)
		TNT1 A 0 A_SpawnItemEx("VileHealEffect",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
		CLIC SRQPONMLKJI 4
		Goto See         
	}
}

Actor CacoLichLaser : MageWandMissile
{
Height 6
Radius 3
Renderstyle Add
Speed 120
Scale 0.75
Damage (3*Random(1,4))
-RIPPER
+NODAMAGETHRUST
+NoExplodeFLoor
+DontHurtSpecies
+DontHarmSpecies
MissileType "CacoLichLaserTrail"
SeeSound "baron/attack"
Species ""
Species "Cacodemon"
Damagetype ""
Damagetype "CacoLich"
DeathSound "baron/shotx"
States
	{
	Spawn:
		CLBL ABCB 1 Bright A_Weave(0,4,0,2)
		Loop
	Death:
		TNT1 A 0 Bright
		TNT1 A 0 A_SpawnItemEx("GreenParticleSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		TNT1 AAA 0 A_CustomMissile("SmokeFX2",0,0,random(0,360),2,random(0,360))
		TNT1 AAA 0 A_CustomMissile("Kaboom13",0,0,random(0,360),2,random(0,360))
		TNT1 A 0 A_SpawnItemEx("CacoLichPoison",0,0,10,Random(5,-5),Random(5,-5),Random(6,-3))
		CLBL DDFFGGGGGGG 2 Bright A_FadeOut(0.1,1)
		Stop
	}
}

Actor CacoLichPoison : BarbatosPoison
{
+DontHurtSpecies
+DontHarmSpecies
Species ""
Species "Cacodemon"
Damagetype ""
Damagetype "CacoLich"
}

Actor CacoLichLaserTrail// replaces MageWandSmoke
{
Scale 0.1
Renderstyle Add
+CLIENTSIDEONLY
+NOINTERACTION
States
	{
	Spawn:
		TNT1 A 0 Bright
		TNT1 A 1 Bright A_SpawnItemEx("CacoLichLaserTrail2",0,0,8)
		Stop
	}
}

Actor CacoLichLaserTrail2
{
Scale 0.75
Alpha 0.85
Renderstyle Add
+CLIENTSIDEONLY
+NOINTERACTION
States
	{
	Spawn:
		CLBL AAA 3 Bright 
		CLBL DDFFGGGGGGG 1 Bright A_FadeOut(0.1,1)
		Stop
	}
}

Actor MiniLichLaser : CacoLichLaser
{
Scale 0.375
Height 3
Radius 2
Damagetype "CurseComet"
MissileType "MiniLichLaserTrail"
States
	{
	Spawn:
		CLBL ABCB 1 Bright A_Weave(0,4,0,2)
		Loop
	Death:
		TNT1 A 0 Bright
		TNT1 A 0 A_SpawnItemEx("GreenParticleSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		TNT1 A 0 A_CustomMissile("SmokeFX2",0,0,random(0,360),2,random(0,360))
		TNT1 A 0 A_CustomMissile("Kaboom13",0,0,random(0,360),2,random(0,360))
		CLBL DDFFGGGGGGG 2 Bright A_FadeOut(0.1,1)
		Stop
	}
}

Actor MiniLichLaserTrail
{
Scale 0.375
Alpha 0.85
Renderstyle Add
+Nogravity
States
	{
	Spawn:
		CLBL AAA 3 Bright 
		CLBL DDFFGGGGGGG 1 Bright A_FadeOut(0.1,1)
		Stop
	}
}

Actor CacoLichComet : BarbatosComet
{
+DontHurtSpecies
+DontHarmSpecies
Species ""
Species "Cacodemon"
Damagetype ""
Damagetype "CacoLich"
States
   {
	Death:
		TNT1 A 0 Bright
		TNT1 A 0 A_SpawnItemEx("GreenParticleSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		TNT1 AAA 0 A_CustomMissile("SmokeFX2",0,0,random(0,360),2,random(0,360))
		TNT1 AAA 0 A_CustomMissile("Kaboom13",0,0,random(0,360),2,random(0,360))
		BRTB C 3 Bright A_Explode(random(56,64),128,0)
		BRTB D 3 Bright A_SetTranslucent(0.75,1)
		TNT1 AAAAAA 0 Bright A_SpawnItemEx("CacoLichPoison",0,0,10,Random(5,-5),Random(5,-5),Random(6,-3))
		BRTB EFG 3 Bright
		Stop
	}
}

Actor CacoLichTracer : WatcherTracer
{
+DontHurtSpecies
+DontHarmSpecies
Species ""
Species "Cacodemon"
Damagetype ""
Damagetype "CacoLich"
States
	{
	Spawn:
		TNT1 A 0 A_SpawnItemEx("CacoLichPoison",0,0,10,Random(5,-5),Random(5,-5),Random(6,-3))
		TNT1 A 0 A_SeekerMissile(12,20)
		HEFG AB 2 Bright A_CustomMissile("WatcherTrail",Random(-2,2),Random(-2,2))
		TNT1 A 0 A_SeekerMissile(12,20)
		HEFG AB 2 Bright A_CustomMissile("WatcherTrail",Random(-2,2),Random(-2,2)) 
		TNT1 A 0 A_SeekerMissile(12,20)
		HEFG AB 2 Bright A_CustomMissile("WatcherTrail",Random(-2,2),Random(-2,2)) 
		TNT1 A 0 A_SeekerMissile(12,20)
		HEFG AB 2 Bright A_CustomMissile("WatcherTrail",Random(-2,2),Random(-2,2)) 
		Loop
	Death:
		TNT1 A 0
		TNT1 AAA 0 A_SpawnItemEx("CacoLichPoison",0,0,10,Random(5,-5),Random(5,-5),Random(6,-3))
		TNT1 A 0 A_SpawnItemEx("GreenParticleSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		TNT1 AAAA 0 A_CustomMissile("Kaboom7",0,0,random(0,360),2,random(0,360))
		TNT1 AAAA 0 A_CustomMissile("SmokeFX4",0,0,random(0,360),2,random(0,360))		
		HEFG CD 5 Bright
		HEFG EF 4 Bright
		HEFG GH 3 Bright
		Stop
	}
}

Actor MiniLich : CacoLich
{
Monster
Health 110
Height 28
Radius 15
Scale 0.5
Painchance "SatanGuard", 0
MeleeDamage 3
+DontHurtSpecies
+DontHarmSpecies
+DontHarmClass
Species "EleSouls"
Species "Souls"
//No Infighting
Damagefactor "CacoLich", 0.0
DamageFactor "PhazoDemon", 0.0
Damagefactor "Wicked", 0.0
Damagefactor "BloodSkull", 0.0
Damagefactor "BloodElemental", 0.0
Damagefactor "Broat", 0.0
DamageFactor "SoulToxic", 0.0
DamageFactor "BombBreath", 0.0
Damagefactor "EleSouls", 0.0
DropItem ""
DropItem "LifeEssence", 196, 5
DropItem "HEMArmorBonusMax5", 196
DropItem "AcidAmmo", 64
Obituary "%o was poisoned by a Mini Lich."
HitObituary "%o was stinged by a Mini Lich."
Tag "Mini Lich"
States
	{
	Spawn:
		CLIC A 10 A_Look
		Loop
	See:
		CLIC A 3 A_Chase
		TNT1 A 0 A_Jump(6,"Evade")
		Loop
	Evade:
		TNT1 A 0 A_Jump(128,"Evade2")
		TNT1 A 0 ThrustThing(Angle*256/360+64,14,0,0)
		CLIC AAAA 3 A_Chase
		TNT1 A 0 A_Stop
		Goto See
	Evade2:
		TNT1 A 0 ThrustThing(Angle*256/360+192,14,0,0)		 
		CLIC AAAA 3 A_Chase
		TNT1 A 0 A_Stop
		Goto See
	Melee:
		CLIC EFG 4 A_FaceTarget
		TNT1 A 0 A_MeleeAttack
		CLIC FE 4 A_FaceTarget
		GoTo See
	Missile:
		CLIC BBBBDDDD 1 A_FaceTarget
		CLIC C 1 A_FaceTarget
		TNT1 A 0 A_CustomMissile("MiniLichLaser",15,0,0)
		CLIC C 1 A_FaceTarget
		TNT1 A 0 A_CustomMissile("MiniLichLaser",15,0,0)
		CLIC DB 4
		GoTo See
	Pain:
		TNT1 A 0 A_Jump(70,"PainMissile")
		CLIC H 3
		CLIC I 6 A_Pain
		Goto See
	PainMissile:
		CLIC H 3
		CLIC I 6 A_Pain
		Goto Missile
	Death:
	XDeath:
		TNT1 A 0
		CLIC J 8 A_Scream
		TNT1 AA 0 A_SpawnItemEx("CacoLichPoison",0,0,10,Random(5,-5),Random(5,-5),Random(6,-3))
		TNT1 A 0 A_SpawnItemEx("GreenGibbedGenerator",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE,0)
		CLIC K 8
		CLIC LM 4
		TNT1 A 0 A_Fall
		TNT1 A 0 A_ChangeFlag(SOLID,0)
		TNT1 A 0 A_ChangeFlag(THRUACTORS,1)
		TNT1 A 0 A_TakeInventory("Tic",999999)
		Goto Fall
	Fall:
		CLIC N 1 A_CheckFloor("Land")
		TNT1 A 0 A_JumpIfInventory("Tic",525,"Land")
		TNT1 A 0 A_GiveInventory("Tic",1)
		Loop
	Land:
		TNT1 A 0
		TNT1 A 0 A_TakeInventory("Tic",999999)
		TNT1 A 0 A_ChangeFlag(CORPSE,1)
		CLIC OPQR 3
		TNT1 A 0 A_ChangeFlag(SOLID,0)
		TNT1 A 0 A_ChangeFlag(THRUACTORS,0)
		TNT1 A 0 A_ChangeFlag(MOVEWITHSECTOR,1)
		CLIC S 525
		Goto Fade
	Fade:
		CLIC S 5 A_FadeOut(0.1,1)
		Loop
	Raise:
		Stop
	}
}

Actor CacoLichTrail
{
PROJECTILE
Radius 2
Height 2
Speed 0
Scale 1.1
Alpha 0.7
RENDERSTYLE Translucent
+CLIENTSIDEONLY
+NOINTERACTION
States
	{
	Spawn:
		TNT1 A 1
		CLIC Z 2 A_FadeOut(0.1,1)
		Goto Spawn+1
	}
}

Actor GreenRushPulse
{
+NoDamageThrust
+DontHurtSpecies
+DontHarmSpecies
+ThruSpecies
+Nogravity
Species "Cacodemon"
DamageType "CacoLich"
States
	{
	Spawn:
		TNT1 A 1
		TNT1 A 1 A_Explode(3,120,0)
		Stop
	}
}