Actor Catharsi //The original Catharsi, a true classic
{
//Creator: "pdxbla's "VDP-MonsterRandomizer" & ElAnexo
//Origin: Realm667
//Sprite: SDDM
//Title: "Catharsi"
  Obituary "%o was blasted by a catharsi."
  Species "Imps"
  Health 210
  Radius 20
  Height 56
  Mass 100
  Speed 10
  PainChance 60
  DamageFactor 0.85
  DamageFactor "ImpComet", 0.0
  DamageFactor "Cyber10K", 0.5
  DamageFactor "PDTBFG", 0.6
  DamageFactor "PDTBFGTracer", 0.9
  SeeSound "catharsi/sit"
  PainSound "catharsi/pain"
  DeathSound "catharsi/death"
  ActiveSound "imp/active"
  DropItem "LifeEssence" 256
  DropItem "ArmorBonusMax" 256
  DropItem "Rocket Launcher", 80, 1
  DropItem "Missile" 256
  DropItem "MissileBox" 128
  DropItem "MineAmmo", 123, 1
  Monster
  +FloorClip
  +MISSILEMORE
  +MISSILEEVENMORE
  tag "Catharsi"
  var int user_sweep;
  States
  {
  Spawn:
    SDDM AB 10 A_Look
    Loop
  See:
    SDDM AABBCCDD 3 A_Chase
    Loop
  Missile:
    SDDM E 4 A_SetUserVar("user_sweep", (random(0, 1) * 2) - 1) //== Randompick(1,-1)
    SDDM E 10 A_FaceTarget
    SDDM F 2 Bright A_CustomMissile("CatharsiBall", 30, 8, -4 * user_sweep)
    SDDM E 2
    SDDM F 2 Bright A_CustomMissile("CatharsiBall", 30, 8, 0)
    SDDM E 2
    SDDM F 2 Bright A_CustomMissile("CatharsiBall", 30, 8, 4 * user_sweep)
    SDDM E 2
    SDDM F 2 Bright A_CustomMissile("CatharsiBall", 30, 8, 8 * user_sweep)
    SDDM E 2
    SDDM F 2 Bright A_CustomMissile("CatharsiBall", 30, 8, 12 * user_sweep)
    SDDM E 2
    SDDM F 2 Bright A_CustomMissile("CatharsiBall", 30, 8, 16 * user_sweep)
    SDDM E 2
    Goto See
  Pain:
    SDDM G 3
    SDDM G 3 A_Pain
    Goto See
  Death:
    SDDM H 0 A_Jump(32, "DeathS")
	SDDM H 0 A_Jump(32, "DeathF")
	SDDM H 5
    SDDM I 5 A_Scream
    SDDM J 5 A_NoBlocking
    SDDM J 0 A_SpawnItem("CatharsiDetonator", 0, 30)
    SDDM KLM 5
    SDDM N -1
    Stop
  DeathS:
    SDDM H 5
    SDDM I 5 A_Scream
    SDDM J 5 A_NoBlocking
    SDDM J 0 A_SpawnItem("CatharsiDetonatorSlow", 0, 30)
    SDDM KLM 5
    SDDM N -1
    Stop
  DeathF:
    SDDM H 5
    SDDM I 5 A_Scream
    SDDM J 5 A_NoBlocking
    SDDM J 0 A_SpawnItem("CatharsiDetonatorFast", 0, 30)
    SDDM KLM 5
    SDDM N -1
    Stop
  XDeath:
    SDDM O 5
    SDDM P 4 A_XScream
	SDDM P 1 A_NoBlocking
	TNT1 A 0 A_CustomMissile("SuicideBomb",24,0,0,CMF_AIMDIRECTION)
    TNT1 A 0 A_SpawnItemEx("OrangeParticleSpawner",0,0,24,0,0,0,0,128) 
    TNT1 AAA 0 A_CustomMissile("Kaboom3",24,0,random(0,360),2,random(0,360))
	TNT1 AAA 0 A_CustomMissile("SmokeFX2",24,0,random(0,360),2,random(0,360))
    TNT1 AAAA 0 A_SpawnItemEx("Debris",0,0,24,Random(4,-4),Random(4,-4),Random(4,8),0,128)
    TNT1 A 0 A_SpawnItem("RocketEx",0,24)
	TNT1 A 0 A_PlaySound("weapons/rocklx",CHAN_BODY)
    SDDM Q 5 A_SpawnItemEx("GibbedGenerator",0,0,0,0,0,0,0,128,0)
	SDDM R 5
    SDDM STUV 5
    SDDM W -1
    Stop
  Raise:
    TNT1 A 0
	TNT1 A 0 A_SpawnItemEx("VileHealEffect",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
    SDDM NMLKJIH 5
    Goto See
  }
}

Actor CatharsiBall
{
  Radius 6
  Height 8
  Speed 15
  Damage 3
  RenderStyle "Add"
  SeeSound "catharsi/shotsit"
  DeathSound "catharsi/shotdth"
  Projectile
  +Randomize
  Decal "PlasmaScorchLower"
  States
  {
  Spawn:
    SDFB A 4 Bright
    Loop
  Death:
    SDFB BCDE 6 Bright
    Stop
  }
}

Actor CatharsiDetonator
{
  Obituary "%o was blasted by a catharsi's detonator."
  Radius 6
  Height 8
  DeathSound "catharsi/shotdth"
  +Shootable
  +Solid
  +IsMonster
  +FloatBob
  +Randomize
  +NoGravity
  +NoBlood
  +DontFall
  States
  {
  Spawn:
    THRM A 4 A_PlaySound("catharsi/thermtick")
    THRM B 16
    THRM A 4 A_PlaySound("catharsi/thermtick")
    THRM B 16
    THRM A 4 A_PlaySound("catharsi/thermtick")
    THRM B 16
    THRM A 4 A_PlaySound("catharsi/thermtick")
    THRM B 16
    THRM A 4 A_PlaySound("catharsi/thermtick")
    THRM B 16
    SDFB B 0 A_CustomMissile("CatharsiBall", 4, 2, 0)
    SDFB B 0 A_CustomMissile("CatharsiBall", 4, 2, 20)
    SDFB B 0 A_CustomMissile("CatharsiBall", 4, 2, 40)
    SDFB B 0 A_CustomMissile("CatharsiBall", 4, 2, 60)
    SDFB B 0 A_CustomMissile("CatharsiBall", 4, 2, 80)
    SDFB B 0 A_CustomMissile("CatharsiBall", 4, 2, 100)
    SDFB B 0 A_CustomMissile("CatharsiBall", 4, 2, 120)
    SDFB B 0 A_CustomMissile("CatharsiBall", 4, 2, 140)
    SDFB B 0 A_CustomMissile("CatharsiBall", 4, 2, 160)
    SDFB B 0 A_CustomMissile("CatharsiBall", 4, 2, 180)
    SDFB B 0 A_CustomMissile("CatharsiBall", 4, 2, 200)
    SDFB B 0 A_CustomMissile("CatharsiBall", 4, 2, 220)
    SDFB B 0 A_CustomMissile("CatharsiBall", 4, 2, 240)
    SDFB B 0 A_CustomMissile("CatharsiBall", 4, 2, 260)
    SDFB B 0 A_CustomMissile("CatharsiBall", 4, 2, 280)
    SDFB B 0 A_CustomMissile("CatharsiBall", 4, 2, 300)
    SDFB B 0 A_CustomMissile("CatharsiBall", 4, 2, 320)
    SDFB B 0 A_CustomMissile("CatharsiBall", 4, 2, 340)
    SDFB B 0 A_Die
  Death:
    SDFB B 0 A_ChangeFlag("FLOATBOB", FALSE)
    SDFB B 6 Bright A_Scream
    SDFB CDE 6 Bright
    Stop
  }
}

Actor CatharsiDetonatorFast : CatharsiDetonator
{
  States
  {
  Spawn:
    THRM A 4 A_PlaySound("catharsi/thermtick")
    THRM B 8
    THRM A 4 A_PlaySound("catharsi/thermtick")
    THRM B 8
    THRM A 4 A_PlaySound("catharsi/thermtick")
    THRM B 8
    THRM A 4 A_PlaySound("catharsi/thermtick")
    THRM B 8
    THRM A 4 A_PlaySound("catharsi/thermtick")
    THRM B 8
    SDFB B 0 A_CustomMissile("CatharsiBall", 4, 2, 0)
    SDFB B 0 A_CustomMissile("CatharsiBall", 4, 2, 20)
    SDFB B 0 A_CustomMissile("CatharsiBall", 4, 2, 40)
    SDFB B 0 A_CustomMissile("CatharsiBall", 4, 2, 60)
    SDFB B 0 A_CustomMissile("CatharsiBall", 4, 2, 80)
    SDFB B 0 A_CustomMissile("CatharsiBall", 4, 2, 100)
    SDFB B 0 A_CustomMissile("CatharsiBall", 4, 2, 120)
    SDFB B 0 A_CustomMissile("CatharsiBall", 4, 2, 140)
    SDFB B 0 A_CustomMissile("CatharsiBall", 4, 2, 160)
    SDFB B 0 A_CustomMissile("CatharsiBall", 4, 2, 180)
    SDFB B 0 A_CustomMissile("CatharsiBall", 4, 2, 200)
    SDFB B 0 A_CustomMissile("CatharsiBall", 4, 2, 220)
    SDFB B 0 A_CustomMissile("CatharsiBall", 4, 2, 240)
    SDFB B 0 A_CustomMissile("CatharsiBall", 4, 2, 260)
    SDFB B 0 A_CustomMissile("CatharsiBall", 4, 2, 280)
    SDFB B 0 A_CustomMissile("CatharsiBall", 4, 2, 300)
    SDFB B 0 A_CustomMissile("CatharsiBall", 4, 2, 320)
    SDFB B 0 A_CustomMissile("CatharsiBall", 4, 2, 340)
    SDFB B 0 A_Die
  }
}

Actor CatharsiDetonatorSlow : CatharsiDetonator
{
  States
  {
  Spawn:
    THRM A 4 A_PlaySound("catharsi/thermtick")
    THRM B 32
    THRM A 4 A_PlaySound("catharsi/thermtick")
    THRM B 32
    THRM A 4 A_PlaySound("catharsi/thermtick")
    THRM B 32
    THRM A 4 A_PlaySound("catharsi/thermtick")
    THRM B 32
    THRM A 4 A_PlaySound("catharsi/thermtick")
    THRM B 32
    SDFB B 0 A_CustomMissile("CatharsiBall", 4, 2, 0)
    SDFB B 0 A_CustomMissile("CatharsiBall", 4, 2, 20)
    SDFB B 0 A_CustomMissile("CatharsiBall", 4, 2, 40)
    SDFB B 0 A_CustomMissile("CatharsiBall", 4, 2, 60)
    SDFB B 0 A_CustomMissile("CatharsiBall", 4, 2, 80)
    SDFB B 0 A_CustomMissile("CatharsiBall", 4, 2, 100)
    SDFB B 0 A_CustomMissile("CatharsiBall", 4, 2, 120)
    SDFB B 0 A_CustomMissile("CatharsiBall", 4, 2, 140)
    SDFB B 0 A_CustomMissile("CatharsiBall", 4, 2, 160)
    SDFB B 0 A_CustomMissile("CatharsiBall", 4, 2, 180)
    SDFB B 0 A_CustomMissile("CatharsiBall", 4, 2, 200)
    SDFB B 0 A_CustomMissile("CatharsiBall", 4, 2, 220)
    SDFB B 0 A_CustomMissile("CatharsiBall", 4, 2, 240)
    SDFB B 0 A_CustomMissile("CatharsiBall", 4, 2, 260)
    SDFB B 0 A_CustomMissile("CatharsiBall", 4, 2, 280)
    SDFB B 0 A_CustomMissile("CatharsiBall", 4, 2, 300)
    SDFB B 0 A_CustomMissile("CatharsiBall", 4, 2, 320)
    SDFB B 0 A_CustomMissile("CatharsiBall", 4, 2, 340)
    SDFB B 0 A_Die
  }
}