
// CACOBYSS
/*
*/
ACTOR RLArmageddonCacodemon : RLCacodemonBase 16560
{
  Health 500
  GibHealth -60
  Mass 1500
  Bloodcolor "Blue"
  
  MeleeThreshold 148
  MeleeRange 96
  
  PainChance "Plasma", 0
  PainChance "Lightning", 0
  PainChance "LightningBlue", 0
  
  DamageFactor "Bullet", 0.9
  DamageFactor "Melee", 0.9
  DamageFactor "Plasma", 0
  DamageFactor "Maser", 0.9 // Final Doomer Damagetype
  
  SeeSound "cacobyss/sight"
  ActiveSound "cacobyss/sight"
  PainSound "cacobyss/pain"
  DeathSound "cacobyss/death"
  
  +DONTFALL
  +NOBLOOD
  +NOICEDEATH
  -DONTCORPSE
  
  Obituary "%o was unable to stop a Cacobyss."
  HitObituary "%o was smelted down by a Cacobyss."
  Tag "Cacobyss"
    //$category "MP Armageddon"
  States
  {
  Spawn:
    TNT1 A 0 NoDelay A_JumpIfInventory ("RLMonsterInitializerToken", 1, "SpawnLoop")
    TNT1 A 0 A_GiveInventory ("RLMonsterInitializerToken", 1)
    TNT1 A 0 A_SpawnItemEx ("RLCacobyssOrb", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION | SXF_SETMASTER) 
  SpawnLoop:
    TNT1 A 0 A_PlaySound("cacobyss/loop", 6, 1, 1, 1.7)
    ACAC ABCD Random(3,4) A_Look
    Goto SpawnLoop
	
  See:
    TNT1 A 0 A_JumpIfInventory ("RLMonsterInitializerToken", 1, "SeeLoop")
    TNT1 A 0 A_GiveInventory ("RLMonsterInitializerToken", 1)
    TNT1 A 0 A_SpawnItemEx ("RLCacobyssOrb", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION | SXF_SETMASTER) 
  SeeLoop:
    TNT1 A 0 A_PlaySound("cacobyss/loop", 6, 1, 1, 1.7)
    TNT1 A 0 A_JumpIfHealthLower (0, 8, AAPTR_TARGET)
    TNT1 A 0 A_JumpIfInventory ("PowerRLCacobyssMeleeCharge", 1, "MeleeCharge")
    TNT1 A 0 A_JumpIfInventory ("PowerRLCacobyssMeleeCooldown", 1, 5)
    TNT1 A 0 A_JumpIfInTargetInventory ("RLEnergyShieldArmorToken", 1, "MeleeCharge")
    TNT1 A 0 A_JumpIfInTargetInventory ("RLPlasmaShieldArmorToken", 1, "MeleeCharge")
    TNT1 A 0 A_JumpIfInTargetInventory ("RLRechargeableEnergyShieldArmorToken", 1, "MeleeCharge")
    TNT1 A 0 A_JumpIfInTargetInventory ("RLKyleTeslaboltArmorToken", 1, "MeleeCharge")
    TNT1 A 0 A_JumpIfCloser (128, "MeleeCharge")
    ACAC A 3 A_Chase
    TNT1 A 0 A_JumpIfHealthLower (0, 7, AAPTR_TARGET)
    TNT1 A 0 A_JumpIfInventory ("PowerRLCacobyssMeleeCooldown", 1, 5)
    TNT1 A 0 A_JumpIfInTargetInventory ("RLEnergyShieldArmorToken", 1, "MeleeCharge")
    TNT1 A 0 A_JumpIfInTargetInventory ("RLPlasmaShieldArmorToken", 1, "MeleeCharge")
    TNT1 A 0 A_JumpIfInTargetInventory ("RLRechargeableEnergyShieldArmorToken", 1, "MeleeCharge")
    TNT1 A 0 A_JumpIfInTargetInventory ("RLKyleTeslaboltArmorToken", 1, "MeleeCharge")
    TNT1 A 0 A_JumpIfCloser (128, "MeleeCharge")
    ACAC B 3 A_Chase
    TNT1 A 0 A_JumpIfHealthLower (0, 7, AAPTR_TARGET)
    TNT1 A 0 A_JumpIfInventory ("PowerRLCacobyssMeleeCooldown", 1, 5)
    TNT1 A 0 A_JumpIfInTargetInventory ("RLEnergyShieldArmorToken", 1, "MeleeCharge")
    TNT1 A 0 A_JumpIfInTargetInventory ("RLPlasmaShieldArmorToken", 1, "MeleeCharge")
    TNT1 A 0 A_JumpIfInTargetInventory ("RLRechargeableEnergyShieldArmorToken", 1, "MeleeCharge")
    TNT1 A 0 A_JumpIfInTargetInventory ("RLKyleTeslaboltArmorToken", 1, "MeleeCharge")
    TNT1 A 0 A_JumpIfCloser (128, "MeleeCharge")
    ACAC C 3 A_Chase
    TNT1 A 0 A_JumpIfHealthLower (0, 7, AAPTR_TARGET)
    TNT1 A 0 A_JumpIfInventory ("PowerRLCacobyssMeleeCooldown", 1, 5)
    TNT1 A 0 A_JumpIfInTargetInventory ("RLEnergyShieldArmorToken", 1, "MeleeCharge")
    TNT1 A 0 A_JumpIfInTargetInventory ("RLPlasmaShieldArmorToken", 1, "MeleeCharge")
    TNT1 A 0 A_JumpIfInTargetInventory ("RLRechargeableEnergyShieldArmorToken", 1, "MeleeCharge")
    TNT1 A 0 A_JumpIfInTargetInventory ("RLKyleTeslaboltArmorToken", 1, "MeleeCharge")
    TNT1 A 0 A_JumpIfCloser (128, "MeleeCharge")
    ACAC D 3 A_Chase
    Loop
	
  MissileHatredOnUniqueEffect: // [incoherent tantrum sounds]
    "####" "#" 0 A_PlaySound ("cacobyss/sight", CHAN_VOICE)
    "####" "#" 0 A_Jump (256, "MissileHatredOnUniqueDone")
	Goto MissileHatredOnUniqueDone
  MeleeHatredOnUniqueEffect: // [incoherent tantrum sounds]
    "####" "#" 0 A_PlaySound ("cacobyss/sight", CHAN_VOICE)
    "####" "#" 0 A_Jump (256, "MeleeHatredOnUniqueDone")
	Goto MeleeHatredOnUniqueDone
	
  MeleeCharge:
    TNT1 A 0 A_JumpIfInventory ("PowerRLCacobyssMeleeCharge", 1, "SuperMeleeCharge")
    TNT1 A 0 A_FaceTarget
    TNT1 A 0 ThrustThing(angle*256/360, 25, 0, 0)
    ACAC E 1 A_JumpIfTargetInsideMeleeRange ("Melee")
    TNT1 A 0 A_FaceTarget
    ACAC E 1 A_JumpIfTargetInsideMeleeRange ("Melee")
    TNT1 A 0 A_FaceTarget
    ACAC F 1 A_JumpIfTargetInsideMeleeRange ("MeleeSkip")
    TNT1 A 0 A_FaceTarget
    ACAC F 1 A_JumpIfTargetInsideMeleeRange ("MeleeSkip")
    TNT1 A 0 A_FaceTarget
    ACAC GGGGGGG 1 A_JumpIfTargetInsideMeleeRange ("MeleeChargeQuickChomp")
    TNT1 A 0 A_GiveInventory ("PowerRLCacobyssMeleeCooldown", 1)
    TNT1 A 0 A_Stop
    TNT1 A 0 ThrustThing(angle*256/360, 5, 0, 0)
    Goto MeleeChargeQuickChomp+1
  MeleeChargeQuickChomp:
    TNT1 A 0 A_FaceTarget
    ACAC F 1 A_CustomMeleeAttack (10 * random(1, 10), "rlmonsters/bite", "None", "Melee")
    ACAC E 6
    Goto See
	
  MeleeProper:
    TNT1 A 0 ThrustThing(angle*256/360, 5, 0, 0)
    ACAC E 3 A_FaceTarget
  MeleeSkip:
    TNT1 A 0 ThrustThing(angle*256/360, 5, 0, 0)
    ACAC F 3 A_FaceTarget
    TNT1 A 0 ThrustThing(angle*256/360, 5, 0, 0)
    ACAC G 3 A_FaceTarget
    TNT1 A 0 ThrustThing(angle*256/360, 5, 0, 0)
    ACAC F 1 A_CustomMeleeAttack (10 * random(1, 10), "rlmonsters/bite", "None", "Melee")
    ACAC E 1 A_Chase ("None", "")
    Goto See
  SuperMeleeCharge:
    TNT1 A 0 A_PlaySound ("cacobyss/sight", CHAN_VOICE)
    TNT1 A 0 A_FaceTarget
    TNT1 A 0 ThrustThing(angle*256/360, 5, 0, 0)
    ACAC E 1 A_Chase ("", "None", CHF_DONTMOVE | CHF_NOPLAYACTIVE)
    TNT1 A 0 A_FaceTarget
    ACAC E 1 A_Chase ("", "None", CHF_DONTMOVE | CHF_NOPLAYACTIVE)
    TNT1 A 0 A_FaceTarget
    ACAC F 1 A_Chase ("", "None", CHF_DONTMOVE | CHF_NOPLAYACTIVE)
    TNT1 A 0 A_FaceTarget
    ACAC F 1 A_Chase ("", "None", CHF_DONTMOVE | CHF_NOPLAYACTIVE)
    TNT1 A 0 A_FaceTarget
    ACAC G 1 A_Chase ("SuperMelee", "None", CHF_DONTMOVE | CHF_NOPLAYACTIVE)
    TNT1 A 0 A_FaceTarget
    ACAC G 1 A_Chase ("SuperMelee", "None", CHF_DONTMOVE | CHF_NOPLAYACTIVE)
    TNT1 A 0 A_FaceTarget
    ACAC G 1 A_Chase ("SuperMelee", "None", CHF_DONTMOVE | CHF_NOPLAYACTIVE)
    TNT1 A 0 A_FaceTarget
    ACAC G 1 A_Chase ("SuperMelee", "None", CHF_DONTMOVE | CHF_NOPLAYACTIVE)
    TNT1 A 0 A_FaceTarget
    ACAC G 1 A_Chase ("SuperMelee", "None", CHF_DONTMOVE | CHF_NOPLAYACTIVE)
    TNT1 A 0 A_FaceTarget
    ACAC G 1 A_Chase ("SuperMelee", "None", CHF_DONTMOVE | CHF_NOPLAYACTIVE)
    TNT1 A 0 A_FaceTarget
    ACAC G 1 A_Chase ("SuperMelee", "None", CHF_DONTMOVE | CHF_NOPLAYACTIVE)
    TNT1 A 0 A_FaceTarget
    ACAC G 1 A_Chase ("SuperMelee", "None", CHF_DONTMOVE | CHF_NOPLAYACTIVE)
    TNT1 A 0 A_FaceTarget
    ACAC G 1 A_Chase ("SuperMelee", "None", CHF_DONTMOVE | CHF_NOPLAYACTIVE)
    TNT1 A 0 A_FaceTarget
    ACAC G 1 A_Chase ("SuperMelee", "None", CHF_DONTMOVE | CHF_NOPLAYACTIVE)
    TNT1 A 0 A_Stop
    TNT1 A 0 A_JumpIfInventory ("PowerRLCacobyssMeleeCharge", 1, "SuperMeleeCharge")
    Goto See
  SuperMelee:
    TNT1 A 0 ThrustThing(angle*256/360, 5, 0, 0)
    TNT1 A 0 A_FaceTarget
    ACAC F 1 A_CustomMeleeAttack (10 * random(1, 10), "rlmonsters/bite", "None", "Melee")
    TNT1 A 0 ThrustThing(angle*256/360, 5, 0, 0)
    ACAC E 1 A_FaceTarget
    TNT1 A 0 A_JumpIfInventory ("PowerRLCacobyssMeleeCharge", 1, "SuperMeleeCharge")
    Goto See
	
  MissileProper:
    TNT1 A 0 A_JumpIfInventory ("PowerRLCacobyssCharge", 1, "MissileCharged")
    TNT1 A 0 A_JumpIfInventory ("RLCacobyssSuperCooldown", 1, 2)
    TNT1 A 0 A_JumpIfInventory("RLCacoByssOrbDead", 1, "SuperMissile")
    ACAC HI 5 A_FaceTarget
    ACAC J 5 Bright A_CustomMissile("RLCacobyssPlasmaBall", 24, 0, 0)
    ACAC IH 3 A_Chase ("None", "")
    Goto See
  MissileCharged:
    ACAC HI 8 A_FaceTarget
  MissileChargedContinue:
    TNT1 A 0 A_JumpIfInventory ("PowerRLCacobyssCharge", 1, 1)
	Goto MissileChargedEnd
    TNT1 A 0 A_CustomMissile("RLCacobyssPlasmaBall", 24, 0, -15+frandom(-5,5), CMF_OFFSETPITCH, frandom(-5,5))
    TNT1 A 0 A_CustomMissile("RLCacobyssPlasmaBall", 24, 0, 15+frandom(-5,5), CMF_OFFSETPITCH, frandom(-5,5))
    ACAC J 1 Bright A_CustomMissile("RLCacobyssPlasmaBall", 24, 0, frandom(-5,5), CMF_OFFSETPITCH, frandom(-5,5))
    TNT1 AAAA 0 A_CustomRailgun (3, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff", frandom(-30,30), frandom(-30,30), random(64,256), 1, 0.2, 0, "None", 24)
    ACAC J 1 Bright
    TNT1 AAA 0 A_CustomRailgun (3, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff", frandom(-30,30), frandom(-30,30), random(64,256), 1, 0.2, 0, "None", 24)
    ACAC J 1 Bright
    TNT1 AA 0 A_CustomRailgun (3, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff", frandom(-30,30), frandom(-30,30), random(64,256), 1, 0.2, 0, "None", 24)
	Goto MissileChargedEnd
  MissileChargedEnd:
    TNT1 A 0 A_TakeInventory ("PowerRLCacobyssCharge", 1)
    ACAC IH 3 A_Chase ("None", "")
    Goto See
	
  SuperMissile:
    TNT1 A 0 A_GiveInventory ("RLCacobyssSuperCooldown", 1)
    ACAC HI 8 A_FaceTarget
    ACAC J 15 Bright A_CustomMissile("RLCacobyssSuperBall", 24, 0)
    ACAC IH 3 A_Chase ("None", "")
    Goto See
	
  PainMain:
    TNT1 A 0 A_GiveToChildren ("PowerRLCacobyssRetaliation", 1)
    TNT1 A 0 A_Stop
    ACAC K 3
    ACAC K 3 A_Pain
    ACAC K 6
    Goto See
	
  DeathMain:
    TNT1 A 0 A_Stop
    ACAC K 8
    TNT1 A 0 A_StopSound (6)
    TNT1 A 0 A_ChangeFlag ("NOBLOCKMAP", 1)
    TNT1 A 0 A_ChangeFlag ("NOGRAVITY", 1)
	TNT1 A 0 A_JumpIf(CallACS("DRLA_MonsterQuake") == 0, 3)
    TNT1 A 0 A_Quake(1, 24, 0, 512, "")
    TNT1 A 0 A_Quake(5, 16, 0, 256, "")
    ACAC L 8 Bright
    TNT1 A 0 A_SpawnItemEx ("RLCacobyssExplosion", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION | SXF_SETTARGET)
    ACAC M 8 Bright A_Scream
    ACAC N 8 Bright
    ACAC O 8 Bright
    ACAC P 8 A_NoBlocking
    ACAC Q 8
  DeathLoop:
    TNT1 A 5 CanRaise
    TNT1 A 0 A_Jump (190, "Deathloop")
    TNT1 A 0 A_GiveToChildren ("RLCacobyssRevival", 1)
    TNT1 A 0 A_JumpIfInventory("RLCacoByssOrbDead", 1, "DeathForeverRipInPieces")
    Loop
  DeathForeverRipInPieces:
    TNT1 A 0 A_DropItem ("RLLithiumScoreCacodemon", 1) // Dropped manually so they only appear on true death
    TNT1 A 0 A_DropItem ("Amber", 1) // ditto
    TNT1 A 0 A_DropItem ("Ruby", 1)
    TNT1 A 0 A_GiveInventory ("RLDuke2Score", 2500, AAPTR_TARGET)
    TNT1 A 0 A_GiveInventory ("RLArmageddonCacodemonKillIncrementer", 1, AAPTR_PLAYER1) // Used for tallying total kills and bestiary info
    "####" "#" 0 A_Jump(256, "DestroyedEnd")
    Goto DestroyedEnd
  DeathFrame:
    TNT1 A 0 A_KillChildren ("Massacre")
    "####" "#" 0 A_Jump(256, "DestroyedEnd")
    Goto DestroyedEnd
	
	//Ice
  GenericFreezeDeath:
	"####" "#" 0 A_GiveInventory ("RLArmageddonCacodemonKillIncrementer", 1, AAPTR_PLAYER1) // Used for tallying total kills and bestiary info
    "####" "#" 0 A_Jump(256, "GenericFreezeMana")
    Goto GenericFreezeMana
	
  Raise:
	TNT1 A 0 ACS_NamedExecuteAlways("DRLA_Normalization") // Removes any palette abnormalities
	TNT1 A 0 A_SetScale(1) // resets altered enemies to default, make sure to match the scale factor in properties here!
    TNT1 A 0 A_ChangeFlag ("ALWAYSFAST", 1)
    TNT1 A 0 A_ChangeFlag ("NOPAIN", 1)
    TNT1 A 0 A_ChangeFlag ("SHOOTABLE", 0)
    TNT1 A 0 A_PlaySound ("cacobyss/revive", CHAN_BODY, 1, 0, 0.7)
    TNT1 A 0 A_TakeFromChildren ("RLCacobyssRevival", 1)
    TNT1 A 2
    TNT1 A 0 A_SpawnItemEx ("RLCacobyssResurrectLightning", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 45
  RaiseContinue:
    TNT1 A 0 A_ChangeFlag ("NOBLOCKMAP", 0)
    TNT1 A 0 A_ChangeFlag ("SHOOTABLE", 1)
	TNT1 A 0 A_JumpIf(CallACS("DRLA_MonsterQuake") == 0, 2)
    TNT1 A 0 A_Quake(1, 24, 0, 512, "")
    ACAC QQPP 4 A_RadiusThrust (-1000, 256, RTF_NOIMPACTDAMAGE | RTF_NOTMISSILE)
	TNT1 A 0 A_JumpIf(CallACS("DRLA_MonsterQuake") == 0, 2)
    TNT1 A 0 A_Quake(5, 16, 0, 256, "")
    ACAC OONNMM 4 Bright A_RadiusThrust (-1000, 256, RTF_NOIMPACTDAMAGE | RTF_NOTMISSILE)
    ACAC LL 4 Bright
    TNT1 A 0 A_ChangeFlag ("NOPAIN", 0)
    Goto See
	
  Crush:
    TNT1 A 0 A_GiveInventory ("RLArmageddonCacodemonKillIncrementer", 1, AAPTR_PLAYER1) // Used for tallying total kills and bestiary info
    TNT1 A 1 A_SpawnItem("RLCrushedMediumBlue",0,0,0,0)
    Stop
//==============================================================================
//					--	DOOMRL ARSENAL STUFF  --
//==============================================================================
  Pain.RigelBlast:
    TNT1 A 0 A_PlaySound("weapons/dn2gunhit", CHAN_BODY)
    D2F2 U 2 Bright
    Goto See
  Pain.NeuralStun:
    D2F2 U 2 Bright
    Goto See
	
  Death.NeuralStun:
    TNT1 A 0
    Goto Death
  XDeath.RigelBlast:
  Death.RigelBlast:
    TNT1 A 0 A_StopSound (6)
    TNT1 A 0 A_ChangeFlag ("NOBLOCKMAP", 1)
    TNT1 A 0 A_ChangeFlag ("NOGRAVITY", 1)
    TNT1 A 0 A_PlaySound("weapons/dn2gunexplosion", CHAN_BODY)
    TNT1 A 0 A_NoBlocking
    TNT1 A 0 A_SpawnItemEx ("RLDuke2AdvancedEnemyExplosions", 0,0,32, 0,0,0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 35
    Goto DeathLoop
	
//==============================================================================
//					--	Special Monster Attacks  --
//==============================================================================

  ShadowAuraMissileAttack:
    ACAC HI 5 A_FaceTarget
    ACAC J 5 Bright A_CustomMissile("RLCacobyssSuperBall", 24, 0, 0)
    ACAC IH 3 A_Chase ("None", "")
    Goto See
//==============================================================================
//					--	Final Doomer Compatibility Stuff  --
//==============================================================================
  DeathXSparkFrame:
    "####" "#" 0 A_JumpIfInTargetInventory("Mana",0,2)
    "####" "#" 0 A_DropItem("MajorManaPod",-1,54)
    ACAC K 0
    "####" "#" 0 A_Jump(256, "DeathXSpark")
	Goto DeathXSpark
	
//==============================================================================
//					--	Guncaster Compatibility Stuff  --
//==============================================================================
	MidasFrame1:
		ACAC K 0 A_SpawnItemEx("Midas_Statue_Cacodemon", 0,0,0, 0,0,0, 0,SXF_TRANSFERPOINTERS|SXF_TRANSFERSPRITEFRAME)
		TNT1 A 0 A_JumpIf(1, "DestroyedEnd")
		Goto DestroyedEnd
	MidasFrame2:
		ACAC K 0 A_SpawnItemEx("Midas_Statue_Cacodemon", 0,0,0, frandom(-10.0,-12.0),0,frandom(1.0,3.0), 0,SXF_TRANSFERPOINTERS|SXF_SETMASTER|SXF_TRANSFERSPRITEFRAME)
		TNT1 A 10 A_KillChildren
		TNT1 A 0 A_JumpIf(1, "DestroyedEnd")
		Goto DestroyedEnd
	MidasFrame3:
		ACAC K 0 A_SpawnItemEx("Midas_Statue_Cacodemon", 0,0,0, frandom(-15.0,-20.0),0,frandom(10.0,15.0), 0,SXF_TRANSFERPOINTERS|SXF_SETMASTER|SXF_TRANSFERSPRITEFRAME)
		TNT1 A 10 A_KillChildren
		TNT1 A 0 A_JumpIf(1, "DestroyedEnd")
		Goto DestroyedEnd
		
	//Gumpop
    Death.Acid:    //So I did mention about meltdown death once...
        "####" "#" 0 A_JumpIfInTargetInventory("Mana",0,2)
        "####" "#" 0 A_DropItem("MinorManaPod",-1,24)
        "####" "#" 0 ACS_NamedExecuteAlways("Toxic Avenger")
        "####" "#" 0 A_NoBlocking
        "####" "#" 0 A_Scream
    AcidDeathLoop:
        "####" "#" 0 A_JumpIf(ScaleY <= 0, "DestroyedEnd")
        "####" "#" 0 A_FadeOut(0.03)
        ACAC K 1 A_SetScale(ScaleX + 0.03, ScaleY - 0.03)
        Loop
		
	//Thunderstruck
	Pain.Lightning:
		"####" "#" 0// A_Jump(164,1)
		Goto Pain
		ACAC K 0 A_ChangeFlag("NOPAIN",1)
		"####" "#" 0 A_SetUserVar("User_LightningLock", User_LightningLock + 10)
		"####" "#" 0 A_Jump(256,"LightningLock")
		Goto LightningLock
		
	//Cauterizer
	Pain.LightningBlue:
		"####" "#" 0// A_Jump(48,1)
		Goto Pain
		ACAC K 0 A_ChangeFlag("NOPAIN",1)
		"####" "#" 0 A_SetUserVar("User_LightningLock", User_LightningLock + 10)
		"####" "#" 0 A_Jump(256,"BlueLightningLock")
		Goto BlueLightningLock
		
		// Overwrite these for monsters that do not leave corpses behind
	//Dreadful
	Death.Tiberium:
		"####" "#" 0 A_Jump(256, "Death")
		Goto Death
	Death.BlueTiberium:
		"####" "#" 0 A_Jump(256, "Death")
		Goto Death
	//Fire and Lightning
	Death.Fire:
		"####" "#" 0 A_Jump(256,"Death")
		Goto Death
  }
}

ACTOR RLCacobyssExplosion : Rocket
{
   Radius 1
   Height 1
   +THRUGHOST
   +MTHRUSPECIES
   +NOTIMEFREEZE
   +BLOODSPLATTER
   -RANDOMIZE
   -DEHEXPLOSION
   -ROCKETTRAIL
   DamageType "Plasma"
   PainType "PlasmaExplosion"
   DeathType "PlasmaExplosion"
   Speed 0
   Damage 0
   SeeSound ""
   DeathSound ""
   Obituary "%o got too close to a Cacobyss."
  States
  {
  Spawn:
    TNT1 A 0 NoDelay A_Explode (128, 192, 0)
    TNT1 A 8
    Stop
  }
}

ACTOR RLCacobyssOrb
{
  Radius 9
  Height 14
  Speed 10
  Health 70
  RenderStyle Add
  BloodType "RlCacobyssOrbSpark"
  Alpha 1
  Scale 0.3
  SeeSound ""
  DeathSound "caco/shotx"
  Species "RLCacoybyssAttacks"
  
  RadiusDamageFactor 0.1
  DamageFactor "Plasma", 0
  DamageFactor "Crush", 10
  DamageFactor "AntiAir", 3 // LegenDoom Damagetype
  Tag "Abyss Spark"
  Obituary "%o now hates the Cacobyss's little amigo."
  
  +THRUSPECIES
  +SHOOTABLE
  +NOGRAVITY
  +NOCLIP
  +NOTELEPORT
  +NOTELESTOMP
  +NEVERTARGET
  +NOINFIGHTING
  +NOTIMEFREEZE
  +NOFEAR
  +CANTSEEK
  +NOPAIN
  +DONTFALL
  +DONTBLAST
  +DONTMORPH
  +DONTSQUASH
  +NOTELEOTHER
  +DONTHARMSPECIES
  +DONTRIP
  +NOTELEFRAG
  +DONTDRAIN
  +NOBLOODDECALS
  +DONTGIB
  +NOICEDEATH
  -COUNTKILL //It's not even a monster, but whatever, it doesn't hurt to put it there.
//  +REFLECTIVE
//  +AIMREFLECT
  
  var int user_retaliationtimer;
  var int user_revivetimer;
  var int user_revivetimerdelay;
  var int user_angle;
  States
  {
  Spawn:
    ACA1 A 0
    ACA1 A 1 Bright A_Warp(AAPTR_MASTER, 48, 0, 32, user_angle, WARPF_ABSOLUTEANGLE | WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    "####" "#" 0 A_SetUserVar("user_angle", user_angle + 4)
    "####" "#" 0 A_SpawnItemEx ("RLCacobyssOrbTrail", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERSPRITEFRAME) 
    "####" "#" 0 A_JumpIfInventory("PowerRLCacobyssRetaliation", 1, "Retaliation")
    "####" "#" 0 A_JumpIfInventory("RLCacobyssRevival", 1, "Revival")
	"####" "#" 0 A_CheckFlag ("ISMONSTER", "SpawnB", AAPTR_MASTER)
	Goto Death.Massacre
  SpawnB:
    ACA1 A 1 Bright A_Warp(AAPTR_MASTER, 48, 0, 32, user_angle, WARPF_ABSOLUTEANGLE | WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    "####" "#" 0 A_SetUserVar("user_angle", user_angle + 4)
    "####" "#" 0 A_SpawnItemEx ("RLCacobyssOrbTrail", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERSPRITEFRAME) 
    "####" "#" 0 A_JumpIfInventory("PowerRLCacobyssRetaliation", 1, "Retaliation")
    "####" "#" 0 A_JumpIfInventory("RLCacobyssRevival", 1, "Revival")
	"####" "#" 0 A_CheckFlag ("ISMONSTER", "SpawnC", AAPTR_MASTER)
	Goto Death.Massacre
  SpawnC:
    ACA1 B 1 Bright A_Warp(AAPTR_MASTER, 48, 0, 32, user_angle, WARPF_ABSOLUTEANGLE | WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    "####" "#" 0 A_SetUserVar("user_angle", user_angle + 4)
    "####" "#" 0 A_SpawnItemEx ("RLCacobyssOrbTrail", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERSPRITEFRAME) 
    "####" "#" 0 A_JumpIfInventory("PowerRLCacobyssRetaliation", 1, "Retaliation")
    "####" "#" 0 A_JumpIfInventory("RLCacobyssRevival", 1, "Revival")
	"####" "#" 0 A_CheckFlag ("ISMONSTER", "SpawnD", AAPTR_MASTER)
	Goto Death.Massacre
  SpawnD:
    ACA1 B 1 Bright A_Warp(AAPTR_MASTER, 48, 0, 32, user_angle, WARPF_ABSOLUTEANGLE | WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    "####" "#" 0 A_SetUserVar("user_angle", user_angle + 4)
    "####" "#" 0 A_SpawnItemEx ("RLCacobyssOrbTrail", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERSPRITEFRAME) 
    "####" "#" 0 A_JumpIfInventory("PowerRLCacobyssRetaliation", 1, "Retaliation")
    "####" "#" 0 A_JumpIfInventory("RLCacobyssRevival", 1, "Revival")
	"####" "#" 0 A_CheckFlag ("ISMONSTER", "SpawnE", AAPTR_MASTER)
	Goto Death.Massacre
  SpawnE:
    ACA1 C 1 Bright A_Warp(AAPTR_MASTER, 48, 0, 32, user_angle, WARPF_ABSOLUTEANGLE | WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    "####" "#" 0 A_SetUserVar("user_angle", user_angle + 4)
    "####" "#" 0 A_SpawnItemEx ("RLCacobyssOrbTrail", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERSPRITEFRAME) 
    "####" "#" 0 A_JumpIfInventory("PowerRLCacobyssRetaliation", 1, "Retaliation")
    "####" "#" 0 A_JumpIfInventory("RLCacobyssRevival", 1, "Revival")
	"####" "#" 0 A_CheckFlag ("ISMONSTER", "SpawnF", AAPTR_MASTER)
	Goto Death.Massacre
  SpawnF:
    ACA1 C 1 Bright A_Warp(AAPTR_MASTER, 48, 0, 32, user_angle, WARPF_ABSOLUTEANGLE | WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    "####" "#" 0 A_SetUserVar("user_angle", user_angle + 4)
    "####" "#" 0 A_SpawnItemEx ("RLCacobyssOrbTrail", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERSPRITEFRAME) 
    "####" "#" 0 A_JumpIfInventory("PowerRLCacobyssRetaliation", 1, "Retaliation")
    "####" "#" 0 A_JumpIfInventory("RLCacobyssRevival", 1, "Revival")
	"####" "#" 0 A_CheckFlag ("ISMONSTER", "SpawnG", AAPTR_MASTER)
	Goto Death.Massacre
  SpawnG:
    ACA1 D 1 Bright A_Warp(AAPTR_MASTER, 48, 0, 32, user_angle, WARPF_ABSOLUTEANGLE | WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    "####" "#" 0 A_SetUserVar("user_angle", user_angle + 4)
    "####" "#" 0 A_SpawnItemEx ("RLCacobyssOrbTrail", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERSPRITEFRAME) 
    "####" "#" 0 A_JumpIfInventory("PowerRLCacobyssRetaliation", 1, "Retaliation")
    "####" "#" 0 A_JumpIfInventory("RLCacobyssRevival", 1, "Revival")
	"####" "#" 0 A_CheckFlag ("ISMONSTER", "SpawnH", AAPTR_MASTER)
	Goto Death.Massacre
  SpawnH:
    ACA1 D 1 Bright A_Warp(AAPTR_MASTER, 48, 0, 32, user_angle, WARPF_ABSOLUTEANGLE | WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    "####" "#" 0 A_SetUserVar("user_angle", user_angle + 4)
    "####" "#" 0 A_SpawnItemEx ("RLCacobyssOrbTrail", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERSPRITEFRAME) 
    "####" "#" 0 A_JumpIfInventory("PowerRLCacobyssRetaliation", 1, "Retaliation")
    "####" "#" 0 A_JumpIfInventory("RLCacobyssRevival", 1, "Revival")
	"####" "#" 0 A_CheckFlag ("ISMONSTER", "SpawnI", AAPTR_MASTER)
	Goto Death.Massacre
  SpawnI:
    ACA1 E 1 Bright A_Warp(AAPTR_MASTER, 48, 0, 32, user_angle, WARPF_ABSOLUTEANGLE | WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    "####" "#" 0 A_SetUserVar("user_angle", user_angle + 4)
    "####" "#" 0 A_SpawnItemEx ("RLCacobyssOrbTrail", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERSPRITEFRAME) 
    "####" "#" 0 A_JumpIfInventory("PowerRLCacobyssRetaliation", 1, "Retaliation")
    "####" "#" 0 A_JumpIfInventory("RLCacobyssRevival", 1, "Revival")
	"####" "#" 0 A_CheckFlag ("ISMONSTER", "SpawnJ", AAPTR_MASTER)
	Goto Death.Massacre
  SpawnJ:
    ACA1 E 1 Bright A_Warp(AAPTR_MASTER, 48, 0, 32, user_angle, WARPF_ABSOLUTEANGLE | WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    "####" "#" 0 A_SetUserVar("user_angle", user_angle + 4)
    "####" "#" 0 A_SpawnItemEx ("RLCacobyssOrbTrail", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERSPRITEFRAME) 
    "####" "#" 0 A_JumpIfInventory("PowerRLCacobyssRetaliation", 1, "Retaliation")
    "####" "#" 0 A_JumpIfInventory("RLCacobyssRevival", 1, "Revival")
	"####" "#" 0 A_CheckFlag ("ISMONSTER", "Spawn", AAPTR_MASTER)
	Goto Death.Massacre
  Revival:
    "####" "#" 0 A_PlaySound("cacobyss/ballrevive", CHAN_BODY, 1, 0, 0.5)
    "####" "#" 0 A_Warp(AAPTR_MASTER, 48, 0, 32, user_angle, WARPF_ABSOLUTEANGLE | WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    "####" "#" 0 A_SpawnItemEx ("RLCacobyssOrbTrailFlash", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERSPRITEFRAME)
    ACA2 A 1 Bright A_RaiseMaster
    "####" "#" 0 A_Warp(AAPTR_MASTER, 48, 0, 32, user_angle, WARPF_ABSOLUTEANGLE | WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    "####" "#" 0 A_SpawnItemEx ("RLCacobyssOrbTrailFlash", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERSPRITEFRAME)
    ACA2 A 1 Bright
    "####" "#" 0 A_JumpIfInventory("RLCacobyssRevival", 1, "RevivalFail")
	Goto RevivalSuccess
  RevivalFail:
    "####" "#" 0 A_Warp(AAPTR_MASTER, 48, 0, 32, user_angle, WARPF_ABSOLUTEANGLE | WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    ACA1 A 1 Bright A_SpawnItemEx ("RLCacobyssOrbTrail", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERSPRITEFRAME)
    "####" "#" 0 A_Warp(AAPTR_MASTER, 48, 0, 32, user_angle, WARPF_ABSOLUTEANGLE | WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    ACA1 A 1 Bright A_SpawnItemEx ("RLCacobyssOrbTrail", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERSPRITEFRAME)
    "####" "#" 0 A_Warp(AAPTR_MASTER, 48, 0, 32, user_angle, WARPF_ABSOLUTEANGLE | WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    ACA1 B 1 Bright A_SpawnItemEx ("RLCacobyssOrbTrail", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERSPRITEFRAME)
    "####" "#" 0 A_Warp(AAPTR_MASTER, 48, 0, 32, user_angle, WARPF_ABSOLUTEANGLE | WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    ACA1 B 1 Bright A_SpawnItemEx ("RLCacobyssOrbTrail", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERSPRITEFRAME)
    "####" "#" 0 A_Warp(AAPTR_MASTER, 48, 0, 32, user_angle, WARPF_ABSOLUTEANGLE | WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    ACA1 C 1 Bright A_SpawnItemEx ("RLCacobyssOrbTrail", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERSPRITEFRAME)
    "####" "#" 0 A_Warp(AAPTR_MASTER, 48, 0, 32, user_angle, WARPF_ABSOLUTEANGLE | WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    ACA1 C 1 Bright A_SpawnItemEx ("RLCacobyssOrbTrail", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERSPRITEFRAME)
    "####" "#" 0 A_Warp(AAPTR_MASTER, 48, 0, 32, user_angle, WARPF_ABSOLUTEANGLE | WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    ACA1 D 1 Bright A_SpawnItemEx ("RLCacobyssOrbTrail", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERSPRITEFRAME)
    "####" "#" 0 A_Warp(AAPTR_MASTER, 48, 0, 32, user_angle, WARPF_ABSOLUTEANGLE | WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    ACA1 D 1 Bright A_SpawnItemEx ("RLCacobyssOrbTrail", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERSPRITEFRAME)
    "####" "#" 0 A_Warp(AAPTR_MASTER, 48, 0, 32, user_angle, WARPF_ABSOLUTEANGLE | WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    ACA1 E 1 Bright A_SpawnItemEx ("RLCacobyssOrbTrail", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERSPRITEFRAME)
    "####" "#" 0 A_Warp(AAPTR_MASTER, 48, 0, 32, user_angle, WARPF_ABSOLUTEANGLE | WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    ACA1 E 1 Bright A_SpawnItemEx ("RLCacobyssOrbTrail", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERSPRITEFRAME)
	Goto Revival
  RevivalSuccess:
    "####" "#" 0 A_SetUserVar("user_revivetimer", 9)
	Goto RevivalLoop
  RevivalLoop:
    "####" "#" 0 A_JumpIf (user_revivetimer <= 0, "Spawn")
    "####" "#" 0 A_Warp(AAPTR_MASTER, 48, 0, 32, user_angle, WARPF_ABSOLUTEANGLE | WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    ACA1 A 1 Bright A_SpawnItemEx ("RLCacobyssOrbTrail", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERSPRITEFRAME)
    "####" "#" 0 A_Warp(AAPTR_MASTER, 48, 0, 32, user_angle, WARPF_ABSOLUTEANGLE | WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    ACA1 B 1 Bright A_SpawnItemEx ("RLCacobyssOrbTrail", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERSPRITEFRAME)
    "####" "#" 0 A_Warp(AAPTR_MASTER, 48, 0, 32, user_angle, WARPF_ABSOLUTEANGLE | WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    ACA1 C 1 Bright A_SpawnItemEx ("RLCacobyssOrbTrail", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERSPRITEFRAME)
    "####" "#" 0 A_Warp(AAPTR_MASTER, 48, 0, 32, user_angle, WARPF_ABSOLUTEANGLE | WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    ACA1 D 1 Bright A_SpawnItemEx ("RLCacobyssOrbTrail", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERSPRITEFRAME)
    "####" "#" 0 A_Warp(AAPTR_MASTER, 48, 0, 32, user_angle, WARPF_ABSOLUTEANGLE | WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    ACA1 E 1 Bright A_SpawnItemEx ("RLCacobyssOrbTrail", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERSPRITEFRAME)
    "####" "#" 0 A_SetUserVar("user_revivetimer", user_revivetimer - 1)
   Goto Spawn
  Retaliation:
    "####" "#" 0 A_TransferPointer (AAPTR_MASTER, AAPTR_DEFAULT, AAPTR_TARGET, AAPTR_TARGET)
    "####" "#" 0 A_SetUserVar("user_retaliationtimer", 3)
	Goto RetaliationLoop
  RetaliationLoop:
    "####" "#" 0 A_JumpIf (user_retaliationtimer <= 0, "Spawn")
    "####" "#" 0 A_Warp(AAPTR_MASTER, 48, 0, 32, user_angle, WARPF_ABSOLUTEANGLE | WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    ACA2 A 0 Bright A_SpawnItemEx ("RLCacobyssOrbTrailFlash", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERSPRITEFRAME)
    ACA2 A 1 Bright A_CustomMissile("RLCacobyssOrbShot", 0, 0, frandom(3,-3))
    "####" "#" 0 A_Warp(AAPTR_MASTER, 48, 0, 32, user_angle, WARPF_ABSOLUTEANGLE | WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    ACA2 A 1 Bright A_SpawnItemEx ("RLCacobyssOrbTrailFlash", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERSPRITEFRAME)
    "####" "#" 0 A_Warp(AAPTR_MASTER, 48, 0, 32, user_angle, WARPF_ABSOLUTEANGLE | WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    ACA1 A 1 Bright A_SpawnItemEx ("RLCacobyssOrbTrail", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERSPRITEFRAME)
    "####" "#" 0 A_Warp(AAPTR_MASTER, 48, 0, 32, user_angle, WARPF_ABSOLUTEANGLE | WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    ACA1 B 1 Bright A_SpawnItemEx ("RLCacobyssOrbTrail", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERSPRITEFRAME)
    "####" "#" 0 A_Warp(AAPTR_MASTER, 48, 0, 32, user_angle, WARPF_ABSOLUTEANGLE | WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    ACA1 C 1 Bright A_SpawnItemEx ("RLCacobyssOrbTrail", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERSPRITEFRAME)
    "####" "#" 0 A_Warp(AAPTR_MASTER, 48, 0, 32, user_angle, WARPF_ABSOLUTEANGLE | WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    ACA1 D 1 Bright A_SpawnItemEx ("RLCacobyssOrbTrail", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERSPRITEFRAME)
    "####" "#" 0 A_Warp(AAPTR_MASTER, 48, 0, 32, user_angle, WARPF_ABSOLUTEANGLE | WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    ACA1 E 1 Bright A_SpawnItemEx ("RLCacobyssOrbTrail", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERSPRITEFRAME)
    "####" "#" 0 A_SetUserVar("user_retaliationtimer", user_retaliationtimer - 1)
   Loop
  Death:
    "####" "#" 0 A_ChangeFlag ("NOGRAVITY", 1)
    "####" "#" 0 A_Stop
    "####" "#" 0 A_SetScale (0.9)
    "####" "#" 0 A_GiveInventory("RLCacoByssOrbDead", 1, AAPTR_MASTER)
    "####" "#" 0 A_PlaySound("weapons/bfgx", CHAN_BODY, 1, 0, 0.6)
    AFX4 IJKLMN 3 Bright
   Stop
//==============================================================================
//					--	DOOMRL ARSENAL STUFF  --
//==============================================================================
  Death.Massacre:
    "####" "#" 0 A_NoBlocking
    "####" "#" 0 A_Stop
    Stop
  XDeath.RigelBlast:
  Death.RigelBlast:
    "####" "#" 0 A_ChangeFlag ("NOGRAVITY", 1)
    "####" "#" 0 A_Stop
    "####" "#" 0 A_PlaySound("weapons/dn2gunexplosion", CHAN_BODY)
    "####" "#" 0 A_NoBlocking
    "####" "#" 0 A_GiveInventory("RLCacoByssOrbDead", 1, AAPTR_MASTER)
    "####" "#" 0 A_SpawnItemEx ("RLDuke2MediumExplosion", 0,0,8, 0,0,0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 35
    Stop
  }
}

ACTOR RLCacobyssOrbTrail
{
  Radius 9
  Height 14
  +NOGRAVITY
  +NOINTERACTION
  +NOCLIP
  +NOTIMEFREEZE
  RenderStyle Add
  Alpha 0.8
  Scale 0.3
  States
  {
  Spawn:
    "####" "#" 1 Bright A_FadeTo(0, 0.06, 1)
    Loop
  }
}

ACTOR RLCacobyssOrbTrailFlash : RlCacobyssOrbTrail
{
  Alpha 0.98
  States
  {
  Spawn:
    "####" "#" 1 Bright A_FadeTo(0, 0.02, 1)
    Loop
  }
}

ACTOR RLCacobyssOrbShot
{
  Radius 4
  Height 6
  Speed 25
  FastSpeed 40
  Damage (4 * random(2,3))
  DamageType "Plasma"
  Scale 0.5
  Projectile
  +RANDOMIZE
  +NOTIMEFREEZE
  +BLOODSPLATTER
  RenderStyle Add
  Alpha 0.98
  SeeSound "cacobyss/pulse"
  DeathSound "caco/shotx"
  States
  {
  Spawn:
    ACA4 ABCD 3 Bright
    Loop
  Death:
    ACA4 EFGHIJ 2 Bright
   Stop
  }
}

ACTOR RLCacobyssOrbSpark
{
  Radius 2
  Height 2
  +NOGRAVITY
  +NOINTERACTION
  +NOCLIP
  +NOTIMEFREEZE
  RenderStyle Add
  Alpha 0.98
  Scale 0.8
  States
  {
  Spawn:
    TNT1 A 0 NoDelay A_PlaySound("cacobyss/ballspark", CHAN_BODY)
    ACA3 ABCDE 6 Bright A_Stop
    Stop
  }
}

ACTOR RLCacobyssPlasmaBall : CacodemonBall
{
   +THRUGHOST
   +HITTRACER
   +THRUSPECIES
   +NOTIMEFREEZE
   +BLOODSPLATTER
   RenderStyle Add
   Damage (3)
   Alpha 0.75
   Scale 0.8
   Decal ""
   DamageType "Plasma"
   PainType "LightningBlue"
   DeathType "LightningBlue"
   SeeSound "cacobyss/ball"
   DeathSound ""
   Species "RLCacoybyssAttacks"
   
    var int user_cacobysscharge;
  States
  {
  Spawn:
    TNT1 A 0
    TNT1 A 0 A_PlaySound("cacobyss/ballloop", 6, 1, 1, 1.3)
    ACAX ABCDE 1 Bright
    Goto Spawn
  Death:
    TNT1 A 0 A_StopSound(6)
    TNT1 A 0 A_JumpIf(CheckClass("RLArmageddonCacodemon", AAPTR_TRACER), "CacobyssCharge")
    TNT1 A 0 A_PlaySound("cacobyss/ballimpact", CHAN_BODY)
    TNT1 A 0 A_Warp(AAPTR_TRACER, 3, 0, 32, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_WARPINTERPOLATION | WARPF_COPYINTERPOLATION)
    TNT1 A 0 A_PlaySound("cacobyss/electrocuted", 7, 1, 0, 1.8)
    TNT1 A 0 A_Warp(AAPTR_TRACER, 3, 0, 32, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_WARPINTERPOLATION | WARPF_COPYINTERPOLATION)
    TNT1 AAAAAAA 0 A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", -9)
    TNT1 A 1 A_CustomRailgun (3, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", -9)
    TNT1 A 0 A_Warp(AAPTR_TRACER, 3, 0, 32, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_WARPINTERPOLATION | WARPF_COPYINTERPOLATION)
    ACA2 A 1 Bright A_CustomRailgun (3, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", -9)
    TNT1 A 0 A_Warp(AAPTR_TRACER, 3, 0, 32, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_WARPINTERPOLATION | WARPF_COPYINTERPOLATION)
    TNT1 AAAA 0 A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", -9)
    TNT1 A 1 A_CustomRailgun (3, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", -9)
    TNT1 A 0 A_Warp(AAPTR_TRACER, 3, 0, 32, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_WARPINTERPOLATION | WARPF_COPYINTERPOLATION)
    ACA2 A 1 Bright A_CustomRailgun (3, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", -9)
    TNT1 A 0 A_Warp(AAPTR_TRACER, 3, 0, 32, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_WARPINTERPOLATION | WARPF_COPYINTERPOLATION)
    TNT1 AAAAAA 0 A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", -9)
    TNT1 A 1 A_CustomRailgun (3, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", -9)
    TNT1 A 0 A_Warp(AAPTR_TRACER, 3, 0, 32, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_WARPINTERPOLATION | WARPF_COPYINTERPOLATION)
    ACA2 A 1 Bright A_CustomRailgun (3, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", -9)
    TNT1 A 0 A_Warp(AAPTR_TRACER, 3, 0, 32, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_WARPINTERPOLATION | WARPF_COPYINTERPOLATION)
    TNT1 AAA 0 A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", -9)
    TNT1 A 1 A_CustomRailgun (3, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", -9)
    TNT1 A 0 A_Warp(AAPTR_TRACER, 3, 0, 32, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_WARPINTERPOLATION | WARPF_COPYINTERPOLATION)
    ACA2 A 1 Bright A_CustomRailgun (3, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", -9)
    TNT1 A 0 A_Warp(AAPTR_TRACER, 3, 0, 32, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_WARPINTERPOLATION | WARPF_COPYINTERPOLATION)
    TNT1 AA 0 A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", -9)
    TNT1 A 1 A_CustomRailgun (3, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", -9)
    TNT1 A 0 A_Warp(AAPTR_TRACER, 3, 0, 32, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_WARPINTERPOLATION | WARPF_COPYINTERPOLATION)
    ACA2 B 1 Bright A_CustomRailgun (3, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", -9)
    TNT1 A 0 A_Warp(AAPTR_TRACER, 3, 0, 32, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_WARPINTERPOLATION | WARPF_COPYINTERPOLATION)
    TNT1 AAA 0 A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", -9)
    TNT1 A 1 A_CustomRailgun (3, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", -9)
    TNT1 A 0 A_Warp(AAPTR_TRACER, 3, 0, 32, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_WARPINTERPOLATION | WARPF_COPYINTERPOLATION)
    ACA2 B 1 Bright A_CustomRailgun (3, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", -9)
    TNT1 A 0 A_Warp(AAPTR_TRACER, 3, 0, 32, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_WARPINTERPOLATION | WARPF_COPYINTERPOLATION)
    TNT1 AA 0 A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", -9)
    TNT1 A 1 A_CustomRailgun (3, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", -9)
    TNT1 A 0 A_Warp(AAPTR_TRACER, 3, 0, 32, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_WARPINTERPOLATION | WARPF_COPYINTERPOLATION)
    ACA2 B 1 Bright A_CustomRailgun (3, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", -9)
    TNT1 A 0 A_Warp(AAPTR_TRACER, 3, 0, 32, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_WARPINTERPOLATION | WARPF_COPYINTERPOLATION)
    TNT1 AAAA 0 A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", -9)
    TNT1 A 1 A_CustomRailgun (3, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", -9)
    TNT1 A 0 A_Warp(AAPTR_TRACER, 3, 0, 32, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_WARPINTERPOLATION | WARPF_COPYINTERPOLATION)
    ACA2 B 1 Bright A_CustomRailgun (3, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", -9)
    TNT1 A 0 A_Warp(AAPTR_TRACER, 3, 0, 32, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_WARPINTERPOLATION | WARPF_COPYINTERPOLATION)
    TNT1 AA 0 A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", -9)
    TNT1 A 1 A_CustomRailgun (3, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", -9)
    TNT1 A 0 A_Warp(AAPTR_TRACER, 3, 0, 32, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_WARPINTERPOLATION | WARPF_COPYINTERPOLATION)
    ACA2 C 1 Bright A_CustomRailgun (3, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", -9)
    TNT1 A 0 A_Warp(AAPTR_TRACER, 3, 0, 32, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_WARPINTERPOLATION | WARPF_COPYINTERPOLATION)
    TNT1 AA 0 A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", -9)
    TNT1 A 1 A_CustomRailgun (3, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", -9)
    TNT1 A 0 A_Warp(AAPTR_TRACER, 3, 0, 32, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_WARPINTERPOLATION | WARPF_COPYINTERPOLATION)
    ACA2 C 1 Bright A_CustomRailgun (3, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", -9)
    TNT1 A 0 A_Warp(AAPTR_TRACER, 3, 0, 32, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_WARPINTERPOLATION | WARPF_COPYINTERPOLATION)
    TNT1 A 0 A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", -9)
    TNT1 A 1 A_CustomRailgun (3, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", -9)
    TNT1 A 0 A_Warp(AAPTR_TRACER, 3, 0, 32, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_WARPINTERPOLATION | WARPF_COPYINTERPOLATION)
    ACA2 C 1 Bright A_CustomRailgun (3, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", -9)
    TNT1 A 0 A_Warp(AAPTR_TRACER, 3, 0, 32, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_WARPINTERPOLATION | WARPF_COPYINTERPOLATION)
    TNT1 A 1 A_CustomRailgun (3, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", -9)
    TNT1 A 0 A_Warp(AAPTR_TRACER, 3, 0, 32, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_WARPINTERPOLATION | WARPF_COPYINTERPOLATION)
    ACA2 C 1 Bright A_CustomRailgun (3, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", -9)
    TNT1 A 0 A_Warp(AAPTR_TRACER, 3, 0, 32, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_WARPINTERPOLATION | WARPF_COPYINTERPOLATION)
    TNT1 AAA 1 A_CustomRailgun (3, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", -9)
    TNT1 A 4 A_Warp(AAPTR_TRACER, 3, 0, 32, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_WARPINTERPOLATION | WARPF_COPYINTERPOLATION)
    TNT1 A 0 A_Warp(AAPTR_TRACER, 3, 0, 32, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_WARPINTERPOLATION | WARPF_COPYINTERPOLATION)
    TNT1 A 1 A_CustomRailgun (3, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", -9)
    TNT1 A 9 A_Warp(AAPTR_TRACER, 3, 0, 32, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_WARPINTERPOLATION | WARPF_COPYINTERPOLATION)
    TNT1 A 0 A_Warp(AAPTR_TRACER, 3, 0, 32, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_WARPINTERPOLATION | WARPF_COPYINTERPOLATION)
    TNT1 A 1 A_CustomRailgun (3, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", -9)
    TNT1 A 8 A_Warp(AAPTR_TRACER, 3, 0, 32, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_WARPINTERPOLATION | WARPF_COPYINTERPOLATION)
    TNT1 A 0 A_Warp(AAPTR_TRACER, 3, 0, 32, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_WARPINTERPOLATION | WARPF_COPYINTERPOLATION)
    TNT1 A 1 A_CustomRailgun (3, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", -9)
    TNT1 A 15 A_Warp(AAPTR_TRACER, 3, 0, 32, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_WARPINTERPOLATION | WARPF_COPYINTERPOLATION)
    TNT1 A 0 A_Warp(AAPTR_TRACER, 3, 0, 32, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_WARPINTERPOLATION | WARPF_COPYINTERPOLATION)
    TNT1 A 1 A_CustomRailgun (3, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", -9)
    Stop
  CacobyssCharge:
    TNT1 A 0 A_StopSound(6)
    TNT1 A 0 A_PlaySound("cacobyss/supercharge", CHAN_BODY)
    TNT1 A 0 A_SpawnItemEx ("RLCacobyssResurrectLightning", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 0 A_JumpIfInventory ("RLCacoByssOrbDead", 1, "CacobyssChargeLesser", AAPTR_TRACER)
    TNT1 A 0 A_GiveInventory ("RLCacobyssSupercharger", 1, AAPTR_TRACER)
    TNT1 A 0 A_SetUserVar ("user_cacobysscharge", 140)
	Goto CacobyssChargeLoop
  CacobyssChargeLesser:
    TNT1 A 0 A_GiveInventory ("RLCacobyssMinorCharge", 1, AAPTR_TRACER)
    TNT1 A 0 A_SetUserVar ("user_cacobysscharge", 25)
	Goto CacobyssChargeLoop
  CacobyssChargeLoop:
    TNT1 A 0 A_JumpIf (user_cacobysscharge <= 0, "CacobyssChargeFinish")
    TNT1 A 0 A_Warp(AAPTR_TRACER, 0, 0, 32, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    TNT1 AAA 0 A_CustomRailgun (5, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", -32)
    TNT1 A 1 A_CustomRailgun (5, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", -32)
    TNT1 A 0 A_SetUserVar ("user_cacobysscharge", user_cacobysscharge - 1)
	Loop
  CacobyssChargeFinish:
    TNT1 A 0
	Stop
  }
}

ACTOR RLCacobyssSupercharger : CustomInventory
{
  -COUNTITEM
  +INVENTORY.ALWAYSPICKUP
  Inventory.PickupMessage ""
  Inventory.PickupSound ""
  States
  {
  Spawn:
    TNT1 A 1
    Stop
  Pickup:
    TNT1 A 0 
    TNT1 A 0 HealThing(health*1.5)
    TNT1 A 0 A_GiveInventory("PowerRLCacoByssCharge", 1)
    Stop
  }
}

ACTOR RLCacobyssMinorCharge : CustomInventory
{
  -COUNTITEM
  +INVENTORY.ALWAYSPICKUP
  Inventory.PickupMessage ""
  Inventory.PickupSound ""
  States
  {
  Spawn:
    TNT1 A 1
    Stop
  Pickup:
    TNT1 A 0 
    TNT1 A 0 HealThing(health*1.05)
    TNT1 A 0 A_GiveInventory("PowerRLCacoByssMeleeCharge", 1)
    Stop
  }
}

ACTOR RLCacobyssLightningChargeImpact
{
  Radius 2
  Height 2
  +NOGRAVITY
  +NOINTERACTION
  +NOCLIP
  +NOTIMEFREEZE
  States
  {
  Spawn:
    ACA2 ABC 4 Bright
    Stop
  }
}

ACTOR RLCacobyssResurrectLightning
{
  Radius 2
  Height 2
  +NOGRAVITY
  +NOINTERACTION
  +NOCLIP
  +NOTIMEFREEZE
  States
  {
  Spawn:
    TNT1 A 0 A_Warp(AAPTR_MASTER, -3, 0, 52, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    TNT1 A 1 A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", 0)
    TNT1 A 0 A_Warp(AAPTR_MASTER, -3, 0, 52, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    TNT1 A 1 A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", 0)
    TNT1 A 0 A_Warp(AAPTR_MASTER, -3, 0, 52, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    TNT1 A 1 A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", 0)
    TNT1 A 0 A_Warp(AAPTR_MASTER, -3, 0, 52, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    TNT1 A 1 A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", 0)
    TNT1 A 0 A_Warp(AAPTR_MASTER, -3, 0, 52, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    TNT1 A 1 A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", 0)
    TNT1 A 0 A_Warp(AAPTR_MASTER, -3, 0, 52, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    TNT1 A 1 A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", 0)
    TNT1 A 0 A_Warp(AAPTR_MASTER, -3, 0, 52, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    TNT1 A 1 A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", 0)
    TNT1 A 0 A_Warp(AAPTR_MASTER, -3, 0, 52, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    TNT1 A 1 A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", 0)
    TNT1 A 0 A_Warp(AAPTR_MASTER, -3, 0, 52, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    TNT1 A 1 A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", 0)
    TNT1 A 0 A_Warp(AAPTR_MASTER, -3, 0, 52, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    TNT1 A 1 A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", 0)
    TNT1 A 0 A_Warp(AAPTR_MASTER, -3, 0, 52, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    TNT1 A 1 A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", 0)
    TNT1 A 0 A_Warp(AAPTR_MASTER, -3, 0, 52, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    TNT1 A 1 A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", 0)
    TNT1 A 0 A_Warp(AAPTR_MASTER, -3, 0, 52, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    TNT1 A 1 A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", 0)
    TNT1 A 0 A_Warp(AAPTR_MASTER, -3, 0, 52, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    TNT1 A 1 A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", 0)
    TNT1 A 0 A_Warp(AAPTR_MASTER, -3, 0, 52, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    TNT1 A 1 A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", 0)
    TNT1 A 0 A_Warp(AAPTR_MASTER, -3, 0, 52, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    TNT1 A 1 A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", 0)
    TNT1 A 0 A_Warp(AAPTR_MASTER, -3, 0, 52, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    TNT1 A 1 A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", 0)
    TNT1 A 0 A_Warp(AAPTR_MASTER, -3, 0, 52, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    TNT1 A 1 A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", 0)
    TNT1 A 0 A_Warp(AAPTR_MASTER, -3, 0, 52, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    TNT1 A 1 A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", 0)
    TNT1 A 0 A_Warp(AAPTR_MASTER, -3, 0, 52, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    TNT1 A 1 A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", 0)
    TNT1 A 0 A_Warp(AAPTR_MASTER, -3, 0, 52, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    TNT1 A 1 A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", 0)
    TNT1 A 0 A_Warp(AAPTR_MASTER, -3, 0, 52, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    TNT1 A 1 A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", 0)
    TNT1 A 0 A_Warp(AAPTR_MASTER, -3, 0, 52, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    TNT1 A 1 A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", 0)
    TNT1 A 0 A_Warp(AAPTR_MASTER, -3, 0, 52, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    TNT1 A 1 A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", 0)
    TNT1 A 0 A_Warp(AAPTR_MASTER, -3, 0, 52, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    TNT1 A 1 A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", 0)
    TNT1 A 0 A_Warp(AAPTR_MASTER, -3, 0, 52, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    TNT1 A 1 A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", 0)
    TNT1 A 0 A_Warp(AAPTR_MASTER, -3, 0, 52, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    TNT1 A 1 A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", 0)
    TNT1 A 0 A_Warp(AAPTR_MASTER, -3, 0, 52, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    TNT1 A 1 A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", 0)
    TNT1 A 0 A_Warp(AAPTR_MASTER, -3, 0, 52, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    TNT1 A 1 A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", 0)
    TNT1 A 0 A_Warp(AAPTR_MASTER, -3, 0, 52, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    TNT1 A 1 A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", 0)
    TNT1 A 0 A_Warp(AAPTR_MASTER, -3, 0, 52, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    TNT1 A 1 A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", 0)
    TNT1 A 0 A_Warp(AAPTR_MASTER, -3, 0, 52, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    TNT1 A 1 A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", 0)
    TNT1 A 0 A_Warp(AAPTR_MASTER, -3, 0, 52, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    TNT1 A 1 A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", 0)
    TNT1 A 0 A_Warp(AAPTR_MASTER, -3, 0, 52, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    TNT1 A 1 A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", 0)
    TNT1 A 0 A_Warp(AAPTR_MASTER, -3, 0, 52, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    TNT1 A 1 A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", 0)
    TNT1 A 0 A_Warp(AAPTR_MASTER, -3, 0, 52, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    TNT1 A 1 A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", 0)
    TNT1 A 0 A_Warp(AAPTR_MASTER, -3, 0, 52, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    TNT1 A 1 A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", 0)
    TNT1 A 0 A_Warp(AAPTR_MASTER, -3, 0, 52, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    TNT1 A 1 A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", 0)
    TNT1 A 0 A_Warp(AAPTR_MASTER, -3, 0, 52, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    TNT1 A 1 A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", 0)
    TNT1 A 0 A_Warp(AAPTR_MASTER, -3, 0, 52, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    TNT1 A 1 A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", 0)
    TNT1 A 0 A_Warp(AAPTR_MASTER, -3, 0, 52, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    TNT1 A 1 A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", 0)
    TNT1 A 0 A_Warp(AAPTR_MASTER, -3, 0, 52, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    TNT1 A 1 A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", 0)
    TNT1 A 0 A_Warp(AAPTR_MASTER, -3, 0, 52, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    TNT1 A 1 A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", 0)
    TNT1 A 0 A_Warp(AAPTR_MASTER, -3, 0, 52, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    TNT1 A 1 A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", 0)
    TNT1 A 0 A_Warp(AAPTR_MASTER, -3, 0, 52, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    TNT1 A 1 A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", 0)
    Stop
  }
}

ACTOR PowerRLCacobyssCharge : Powerup
{
	Powerup.Duration 140
   +INVENTORY.UNTOSSABLE
}

ACTOR PowerRLCacobyssMeleeCharge : Powerup
{
	Powerup.Duration 25
   +INVENTORY.UNTOSSABLE
}

ACTOR PowerRLCacobyssMeleeCooldown : Powerup
{
	Powerup.Duration 30
   +INVENTORY.UNTOSSABLE
}

ACTOR PowerRLCacobyssRetaliation : Powerup
{
	Powerup.Duration 6
   +INVENTORY.UNTOSSABLE
}

Actor RLCacobyssRevival : Inventory
{
inventory.maxamount 1
   +INVENTORY.UNTOSSABLE
}

Actor RLCacobyssOrbDead : Inventory
{
inventory.maxamount 1
   +INVENTORY.UNTOSSABLE
}

ACTOR RLCacobyssSuperCooldown : Powerup
{
	Powerup.Duration -20
   +INVENTORY.UNTOSSABLE
}

ACTOR RLCacobyssLightningPuff : BulletPuff
{
  -ALLOWPARTICLES
  -RANDOMIZE
  +PUFFONACTORS
  +ALWAYSPUFF
  +PUFFGETSOWNER
  +THRUGHOST
  +MTHRUSPECIES
  +BLOODLESSIMPACT
  VSpeed 0
  Mass 5
  Damagetype "Plasma"
  PainType "LightningBlue"
  DeathType "LightningBlue"
  Decal ""
  Species "RLCacodemon"
  States
  {
  Spawn:
    TNT1 A 1
	Stop
  Melee:
    Goto Spawn
  }
}

ACTOR RLCacobyssLightningPuff2 : RLCacobyssLightningPuff
{
  +PAINLESS
  Damagetype "NullDamage"
  Decal ""
}

ACTOR RLCacobyssSuperBall : CacodemonBall
{
   +NOTIMEFREEZE
   +THRUGHOST
   +BLOODSPLATTER
   Damage (40)
   Speed 45
   RenderStyle Add
   Alpha 0.95
   Scale 0.55
   Decal "EnemyBlueBFGLightning"
   DamageType "Plasma"
   PainType "LightningBlue"
   DeathType "LightningBlue"
   SeeSound "nightmarecacodemon/ball"
   DeathSound "nightmarecacodemon/ballimpact"
  States
  {
  Spawn:
    TNT1 A 0
    TNT1 A 0 A_PlaySound("nightmarecacodemon/ballloop", 7, 1, 1, 1.3)
    TNT1 A 0 A_SetScale (frandom(0.45,0.55))
    TNT1 AAA 0 A_CustomRailgun (3, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", -9)
    ACA2 A 1 Bright A_SpawnItemEx ("RLCacobyssSuperBallTrail", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERSPRITEFRAME | SXF_TRANSFERSCALE)
    Goto Spawn
  Death:
    TNT1 A 0 A_StopSound(7)
    TNT1 A 0 A_Explode (32, 128)
    TNT1 A 0 A_SetScale (1.5)
    TNT1 AAAAAA 0 A_CustomRailgun (3, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", -9)
    AFX4 IJKLMN 5 Bright A_CustomRailgun (3, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLCacobyssLightningPuff", frandom(0,359), frandom(-90,90), random(64,256), 1, 0.2, 0, "None", -9)
    Stop
  }
}

ACTOR RLCacobyssSuperBallTrail
{
   Radius 4
   Height 4
   RenderStyle Add
   Alpha 0.95
   +NOGRAVITY
   +NOCLIP
   +NOINTERACTION
   +NOTONAUTOMAP
   +NOTIMEFREEZE
   States
   {
   Spawn:
    "####" "#" 1 Bright A_FadeTo (0, 0.04, 1)
    Loop
   }
}

ACTOR RLCCArmageddonCacodemon : RLArmageddonCacodemon
{
  -DONTCORPSE
  +TOUCHY
  States
  {
  Spawn:
    ACAC ABCD 3 A_Look
    Loop
  See:
    ACAC ABCD 3
    Loop
  Missile:
    ACAC HI 5
    ACAC J 5 Bright
    ACAC IH 3
    Goto See
  Melee:
    ACAC EFG 3
    ACAC FE 1
    Goto See
  Death:
    ACAC L 8 Bright
    ACAC M 8 Bright A_Scream
    ACAC N 8 Bright
    ACAC O 8 Bright
    ACAC P 8 A_NoBlocking
    ACAC Q 8
    Stop
  }
}
