
// CYBERDEMON
//
ACTOR RLCyberdemon : RLCyberdemonBase 16416
{
  Health 4000
  
  PainSound "cyberdemon/pain"
  
  Obituary "%o was pasted across the walls by a Cyberdemon."
  HitObituary "%o was crushed into paste by a Cyberdemon."
  Tag "Cyberdemon"
    //$category "MP Standard"
  
	// Guncaster compatibility
	DropItem "TreasureChest"
  States
  {
  Spawn:
    VCYB C Random(9,10) A_Look
    Goto Spawn
	
  See:
    "####" "#" 0 A_JumpIfInventory ("RLLegendaryAttackCooldown", 1, "SeeNoAttack")
    TNT1 A 0 A_ChangeFlag("QUICKTORETALIATE", 1)
    VCYB DD 4 A_Chase ("Melee", "Missile")
    TNT1 A 0 A_PlaySound("cyber/hoof", 5, 1, 0, 0.7)
	TNT1 A 0 A_JumpIf(CallACS("DRLA_MonsterQuake") == 0, 2)
    TNT1 A 0 A_Quake(2, 6, 0, 512, "")
    VCYB AA 4 A_Chase ("Melee", "", CHF_DONTMOVE)
    TNT1 A 0 A_PlaySound("spider/walk", 5, 1, 0, 0.7)
    VCYB BB 4 A_Chase ("Melee", "Missile")
    TNT1 A 0 A_PlaySound("rlmonsters/metalhoof", 5, 0.7, 0, 0.7)
	TNT1 A 0 A_JumpIf(CallACS("DRLA_MonsterQuake") == 0, 2)
    TNT1 A 0 A_Quake(2, 6, 0, 512, "")
    VCYB CC 4 A_Chase ("Melee", "Missile", CHF_DONTMOVE)
    Goto See
  SeeNoAttack: // Legendary ranged attack cooldown
    "####" "#" 0 A_JumpIfInventory ("RLLegendaryAttackCooldown", 1, 1)
    Goto See
    TNT1 A 0 A_ChangeFlag("QUICKTORETALIATE", 1)
    VCYB DD 4 A_Chase ("Melee", "")
    TNT1 A 0 A_PlaySound("cyber/hoof", 5, 1, 0, 0.7)
	TNT1 A 0 A_JumpIf(CallACS("DRLA_MonsterQuake") == 0, 2)
    TNT1 A 0 A_Quake(2, 6, 0, 512, "")
    "####" "#" 0 A_JumpIfInventory ("RLLegendaryAttackCooldown", 1, 1)
    Goto See
    VCYB AA 4 A_Chase ("Melee", "", CHF_DONTMOVE)
    TNT1 A 0 A_PlaySound("spider/walk", 5, 1, 0, 0.7)
    VCYB BB 4 A_Chase ("Melee", "")
    TNT1 A 0 A_PlaySound("rlmonsters/metalhoof", 5, 0.7, 0, 0.7)
	TNT1 A 0 A_JumpIf(CallACS("DRLA_MonsterQuake") == 0, 2)
    TNT1 A 0 A_Quake(2, 6, 0, 512, "")
    "####" "#" 0 A_JumpIfInventory ("RLLegendaryAttackCooldown", 1, 1)
    Goto See
    VCYB CC 4 A_Chase ("Melee", "", CHF_DONTMOVE)
    Goto See
	
  MeleeProper:
    TNT1 A 0 A_JumpIfInTargetInventory("RLTacticalSetBonusActive", 1, "MeleeAOECheck")
    TNT1 A 0 A_JumpIfInTargetInventory("RLFireangelPerk", 1, "MeleeAOECheck")
    TNT1 A 0 A_CheckFlag("NORADIUSDMG", "Missile", AAPTR_TARGET)
    TNT1 A 0 A_CheckFlag("BOSS", "Missile", AAPTR_TARGET)
  MeleeCheckComplete:
    TNT1 A 0 A_ChangeFlag("QUICKTORETALIATE", 0)
    VCYB Q 12 A_FaceTarget
    TNT1 A 0 A_PlaySound("rlmonsters/stomp", 5, 2, 0, 0.6)
	TNT1 A 0 A_JumpIf(CallACS("DRLA_MonsterQuake") == 0, 3)
    TNT1 A 0 A_Quake(3, 12, 0, 1024, "")
    TNT1 A 0 A_Quake(9, 12, 0, 512, "")
    TNT1 A 0 A_CustomMissile("RLStompSmoke", 10, 20, 0)
    TNT1 A 0 A_JumpIfCloser(72, 1)
    Goto MeleeContinue
    TNT1 A 0 A_CustomMeleeAttack (512 * random(1, 2), "", "", "Melee")
  MeleeContinue:
    TNT1 A 0 A_CustomMissile("RLCyberStompShockwave",5,0)
    VCYB R 12 A_RadiusThrust(512, 164, RTF_NOIMPACTDAMAGE | RTF_NOTMISSILE)
    VCYB C 12 A_FaceTarget
    Goto See
  MeleeAOECheck:
    TNT1 A 0 A_JumpIfCloser(72, 1)
    Goto Missile
    TNT1 A 0
    Goto MeleeCheckComplete
	
  MissileProper:
    TNT1 A 0 A_ChangeFlag("QUICKTORETALIATE", 0)
    TNT1 A 0 A_JumpIfInTargetInventory("RLInquisitorsSetBonusActive", 1, "FireproofMissile")
    VCYB E 6 A_FaceTarget
	TNT1 A 0 A_FaceTarget
    TNT1 A 0 A_CheckFlag ("FRIENDLY", "SummonMissile") // Friendly monsters do not harm you
    VCYB F 12 Bright A_CustomMissile("RLCyberdemonRocket", 49, -21, frandom(1,-1), CMF_OFFSETPITCH, frandom(1,-1))
    VCYB E 12 A_FaceTarget
	TNT1 A 0 A_FaceTarget
    VCYB F 12 Bright A_CustomMissile("RLCyberdemonRocket", 49, -21, frandom(1,-1), CMF_OFFSETPITCH, frandom(1,-1))
    VCYB E 12 A_FaceTarget
	TNT1 A 0 A_FaceTarget
    VCYB F 12 Bright A_CustomMissile("RLCyberdemonRocket", 49, -21, frandom(1,-1), CMF_OFFSETPITCH, frandom(1,-1))
    VCYB E 6 A_FaceTarget
    Goto See
	
  FireproofMissile: // Attacks for if you have Fire immunity. Because you're a jerk.
    VCYB E 6 A_FaceTarget
    TNT1 A 0 A_Jump(128, "FireproofMissile2")
    VCYB F 12 Bright A_CustomMissile("RLCyberdemonRocket", 49, -21, frandom(5,2), CMF_OFFSETPITCH, frandom(1,-1))
    VCYB E 12 A_FaceTarget
    Goto See
  FireproofMissile2:
    VCYB F 12 Bright A_CustomMissile("RLCyberdemonRocket", 49, -21, frandom(-5,-2), CMF_OFFSETPITCH, frandom(1,-1))
    VCYB E 12 A_FaceTarget
    Goto See
	
  SummonMissile: // Attack for a summoned Cyberdemon.
    VCYB F 12 Bright A_CustomMissile("RLSummonCyberdemonRocket", 49, -21, 0)
    VCYB E 12 A_FaceTarget
	TNT1 A 0 A_FaceTarget
    VCYB F 12 Bright A_CustomMissile("RLSummonCyberdemonRocket", 49, -21, 0)
    VCYB E 12 A_FaceTarget
	TNT1 A 0 A_FaceTarget
    VCYB F 12 Bright A_CustomMissile("RLSummonCyberdemonRocket", 49, -21, 0)
    VCYB E 6 A_FaceTarget
    Goto See
	
  PainMain:
    VCYB G 2
    VCYB G 0 A_ChangeFlag("QUICKTORETALIATE", 0)
    VCYB G 0 ACS_NamedExecuteAlways("DRLA_BossPainCheck", 0)
    VCYB G 8 A_Pain
    Goto See
  Pain.CyberDisruptor:
    VCYB G 2
    VCYB G 6 A_Pain
    VCYB G 6
    VCYB G 6 A_Pain
    VCYB G 6
    VCYB G 6 A_Pain
    VCYB G 6
    VCYB G 6 A_Pain
    Goto See
	
  DeathMain:
    TNT1 A 0 A_GiveInventory ("RLCyberdemonKillIncrementer", 1, AAPTR_PLAYER1) // Used for tallying total kills and bestiary info
    TNT1 A 0 A_JumpIfInventory("DRPGShadowAuraToken", 1, "SelfDestruct")
    TNT1 A 0 A_JumpIfInventory("LDLegendaryMonsterTransformed", 1, "SelfDestruct")
    VCYB H 10
	TNT1 A 0 A_JumpIf(CallACS("DRLA_MonsterQuake") == 0, 2)
    TNT1 A 0 A_Quake(7, 40, 0, 1024, "")
    VCYB I 10 Bright A_Scream
    TNT1 A 0 A_SpawnItemEx ("RLGibber", 0,0,0, VelX,VelY,VelZ, 0, SXF_ABSOLUTEMOMENTUM | SXF_USEBLOODCOLOR | SXF_NOCHECKPOSITION)
    VCYB JKL 10 Bright
    TNT1 A 0 A_SpawnItemEx ("RLGibber", 0,0,0, VelX,VelY,VelZ, 0, SXF_ABSOLUTEMOMENTUM | SXF_USEBLOODCOLOR | SXF_NOCHECKPOSITION)
	TNT1 A 0 A_JumpIf(CallACS("DRLA_MonsterQuake") == 0, 2)
    TNT1 A 0 A_Quake(4, 20, 0, 1024, "")
    VCYB M 10 Bright A_NoBlocking
    VCYB NO 10
    VCYB P 30
    VCYB P 0 A_BossDeath
    "####" "#" 0 A_Jump(256, "DeathEnd")
    Goto DeathEnd
  DeathFrame:
    VCYB P 0 A_BossDeath
    "####" "#" 0 A_Jump(256, "DeathEnd")
    Goto DeathEnd
	
	//Ice
  GenericFreezeDeath:
	"####" "#" 0 A_GiveInventory ("RLCyberdemonKillIncrementer", 1, AAPTR_PLAYER1) // Used for tallying total kills and bestiary info
    "####" "#" 0 A_Jump(256, "GenericFreezeMana")
    Goto GenericFreezeMana
	
  CrushDRLA:
    TNT1 A 30 A_SpawnItemEx("RLCrushedLarge",0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION)
    "####" "#" 0 A_BossDeath
    "####" "#" 0 A_Jump(256, "CrushEnd")
    Goto CrushEnd
//==============================================================================
//					--	DOOMRL ARSENAL STUFF  --
//==============================================================================
  Pain.RigelBlast:
    TNT1 A 0 A_PlaySound("weapons/dn2gunhit", CHAN_BODY)
    D2F1 R 2 Bright
    Goto See
  Pain.NeuralStun:
    D2F1 R 2 Bright
    Goto See
  Pain.CyberDisruptor:
    TNT1 A 0
    Goto Pain.LightningBlue
	
  Death.NeuralStun:
    TNT1 A 0
    Goto Death
  XDeath.RigelBlast:
  Death.RigelBlast:
    TNT1 A 0 A_GiveInventory ("RLDuke2Score", 10000, AAPTR_TARGET)
    TNT1 A 0 A_GiveInventory ("RLCyberdemonKillIncrementer", 1, AAPTR_PLAYER1) // Used for tallying total kills and bestiary info
    TNT1 A 0 A_PlaySound("weapons/dn2gunbigexplosion", 7, 1, 0, 0.3)
    TNT1 A 0 A_NoBlocking
    TNT1 A 0 A_SetUserVar("user_dn2bossexplosiontimer", 80)
  DN2BossExplosionLoop:
    TNT1 A 0 A_JumpIf (user_dn2bossexplosiontimer <= 0, "DN2BossExplosionFinish")
    TNT1 A 0 A_Jump(190, 2)
    TNT1 A 0 A_RadiusGive ("RLDN2BossFlash", 768, RGF_PLAYERS, 1)
	TNT1 A 0 A_JumpIf(CallACS("DRLA_MonsterQuake") == 0, 2)
    TNT1 A 0 A_Quake(4, 2, 0, 768, "")
    VCYB H 1 Bright
    TNT1 A 0 A_Jump(150, 2)
    TNT1 A 0 A_PlaySound("weapons/dn2gunbigexplosion", 7, 1, 0, 0.3)
    TNT1 A 0 A_Jump(100, 2)
    TNT1 A 0 A_SpawnItemEx ("RLDuke2RandomExplosion", frandom(-64,64),frandom(-64,64),frandom(4,90), 0,0,0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 1
    TNT1 A 0 A_SpawnItemEx ("RLDuke2RandomExplosion", frandom(-64,64),frandom(-64,64),frandom(4,90), 0,0,0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 0 A_SetUserVar("user_dn2bossexplosiontimer", user_dn2bossexplosiontimer - 1)
    Goto DN2BossExplosionLoop
  DN2BossExplosionFinish:
    TNT1 A 0 A_RadiusGive ("RLDN2BossFlash2", 1560, RGF_PLAYERS, 1)
	TNT1 A 0 A_JumpIf(CallACS("DRLA_MonsterQuake") == 0, 2)
    TNT1 A 0 A_Quake(9, 15, 0, 1560, "")
    TNT1 A 0 A_FaceTarget
    TNT1 A 0 A_PlaySound("weapons/dn2gunbigexplosion", 7, 1, 0, 0)
//    TNT1 A 0 A_SpawnItemEx ("RLDuke2BossExplosion", 0,0,48, 0,0,0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 0 A_SpawnItemEx ("RLDuke2ShockwaveLeft", 0,12,48, 0,14,0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 0 A_SpawnItemEx ("RLDuke2ShockwaveRight", 0,-12,48, 0,-14,0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 35
    TNT1 A 0 A_BossDeath
	Stop
	
//==============================================================================
//					--	Special Monster Attacks  --
//==============================================================================
  ShadowAuraMissileAttack:
    VCYB E 6 A_FaceTarget
    VCYB F 6 Bright A_CustomMissile("RLCyberdemonShadowFireblast", 53, -20, frandom(-1,1), CMF_OFFSETPITCH, frandom(-1,1))
    VCYB E 6 A_FaceTarget
    VCYB F 6 Bright A_CustomMissile("RLCyberdemonShadowFireblast", 53, -20, frandom(-1,1), CMF_OFFSETPITCH, frandom(-1,1))
    VCYB E 6 A_FaceTarget
    VCYB F 6 Bright A_CustomMissile("RLCyberdemonShadowFireblast", 53, -20, frandom(-1,1), CMF_OFFSETPITCH, frandom(-1,1))
    VCYB E 6 A_FaceTarget
    TNT1 A 0 A_Jump (220, "See")
    TNT1 A 0 A_GiveInventory ("RLLegendaryAttackCooldown", 1)
    Goto See
	
  SelfDestruct:
    TNT1 A 0 A_PlaySound("cyberdemon/pain", CHAN_VOICE, 1, 0, 0.8)
    VCYB G 10
    TNT1 A 0 A_SetUserVar("user_cyberdemonbombtimer", 0)
    TNT1 A 0 A_PlaySound("cyberdemon/bombcountdown", 7, 1, 0, 0.2)
  OHMYGODJCABOMB:
    TNT1 A 0 A_JumpIf (user_cyberdemonbombtimer >= 300, "ABOMB")
	TNT1 A 0 A_JumpIf(CallACS("DRLA_MonsterQuake") == 0, 2)
    TNT1 A 0 A_Quake(user_cyberdemonbombtimer/35, 1, 0, (user_cyberdemonbombtimer/35)*128, "")
    TNT1 AA 0 A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 45, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), user_cyberdemonbombtimer*frandom(0.2,0.4), 1, 0.2, 0, "None", frandom(40,50))
    VCYB G 1 Bright A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 45, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), user_cyberdemonbombtimer*frandom(0.2,0.4), 1, 0.2, 0, "None", frandom(40,50))
    TNT1 A 0 A_SetUserVar("user_cyberdemonbombtimer", user_cyberdemonbombtimer + 1)
	Goto OHMYGODJCABOMB
  ABOMB:
    TNT1 A 0 A_PlaySound("cyberdemon/bombdeath", CHAN_VOICE, 1, 0, 0.3)
  GETOUTOFTHERE:
    TNT1 A 0 A_JumpIf (user_cyberdemonbombtimer >= 340, "Kersplodo")
	TNT1 A 0 A_JumpIf(CallACS("DRLA_MonsterQuake") == 0, 2)
    TNT1 A 0 A_Quake(user_cyberdemonbombtimer/35, 1, 0, (user_cyberdemonbombtimer/35)*128, "")
    TNT1 AAAA 0 A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 45, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), user_cyberdemonbombtimer*frandom(1.2,1.7), 1, 0.2, 0, "None", frandom(40,50))
    VCYB G 1 Bright A_CustomRailgun (0, 0, "None", "LightBlue", RGF_SILENT | RGF_FULLBRIGHT, 0, 45, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), user_cyberdemonbombtimer*frandom(1.2,1.7), 1, 0.2, 0, "None", frandom(40,50))
    TNT1 A 0 A_SetUserVar("user_cyberdemonbombtimer", user_cyberdemonbombtimer + 1)
	Goto GETOUTOFTHERE
  Kersplodo:
    TNT1 A 0 A_StopSound(CHAN_VOICE)
    TNT1 A 0 A_StopSound(7)
	TNT1 A 0 A_JumpIf(CallACS("DRLA_MonsterQuake") == 0, 2)
    TNT1 A 0 A_Quake(9, 40, 0, 4096, "")
    TNT1 A 0 A_NoBlocking
    TNT1 A 0 A_RadiusGive("RLCyberdemonBombFlash",4096, RGF_PLAYERS | RGF_NOSIGHT, 1)
    TNT1 A 0 A_CustomMissile("RLCyberdemonBombExplosion",0,0)
    TNT1 AA 0 A_SpawnItemEx ("RLGibber", 0,0,0, VelX,VelY,VelZ, 0, SXF_ABSOLUTEMOMENTUM | SXF_USEBLOODCOLOR | SXF_NOCHECKPOSITION)
    VCYB IJKLMNOP 1 Bright
    VCYB P 30
    VCYB P -1 A_BossDeath
    Stop
	
//==============================================================================
//					--	Final Doomer Compatibility Stuff  --
//==============================================================================
  DeathXSparkFrame:
    "####" "#" 0 A_JumpIfInTargetInventory("Mana",0,2)
    "####" "#" 0 A_DropItem("MajorManaPod",-1,54)
    VCYB G 0 A_BossDeath
    "####" "#" 0 A_Jump(256, "DeathXSpark")
	Goto DeathXSpark
	
//==============================================================================
//					--	Guncaster Compatibility Stuff  --
//==============================================================================
	MidasFrame1:
		VCYB G 0 A_SpawnItemEx("Midas_Statue_Cyberdemon", 0,0,0, 0,0,0, 0,SXF_TRANSFERPOINTERS|SXF_TRANSFERSPRITEFRAME)
		TNT1 A 0 A_JumpIf(1, "DestroyedEnd")
		Goto DestroyedEnd
	MidasFrame2:
		VCYB G 0 A_SpawnItemEx("Midas_Statue_Cyberdemon", 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:
		VCYB G 0 A_SpawnItemEx("Midas_Statue_Cyberdemon", 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:
		VCYB G 1 A_ChangeFlag("SOLID",0)
		"####" "#" 1 A_Playsound("Gumpop/Expand",5)
		"####" "###################################" 1 A_SetScale(ScaleX+frandom(0.01,0.025))
		"####" "#" 1 A_Playsound("Gumpop/Pop",5)
		"####" "#" 0 A_Jump(256,"XDeathMain")
		Goto XDeathMain
		
	//Thunderstruck
	Pain.Lightning:
		"####" "#" 0 A_Jump(164,1)
		Goto Pain
		VCYB G 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
		VCYB G 0 A_ChangeFlag("NOPAIN",1)
		"####" "#" 0 A_SetUserVar("User_LightningLock", User_LightningLock + 10)
		"####" "#" 0 A_Jump(256,"BlueLightningLock")
		Goto BlueLightningLock
  }
}

ACTOR RLCyberdemonRocket : Rocket
{
   +NOTIMEFREEZE
   +THRUGHOST
   +DONTHARMSPECIES
   +BLOODSPLATTER
   Decal "Scorch"
   DamageType "Fire"
   PainType "Explosion"
   DeathType "Explosion"
   DeathSound ""
  States
  {
  Spawn:
    TNT1 A 0
    MISL A 1 Bright
    Goto Spawn
  NanoRocket: // Unused right now
    MROX B 1 Bright
    TNT1 A 0 A_SpawnItemEx ("RLCyberneticRevenantMissileTrail", 16,0,0, 0,0,0, 180, SXF_NOCHECKPOSITION)
    Goto Spawn
  Death:
    TNT1 A 0 A_SetTranslucent (0.95, 1)
    TNT1 A 0 A_Explode (128,128,0)
	TNT1 A 0 A_JumpIf(CallACS("DRLA_MonsterQuake") == 0, 3)
    TNT1 A 0 A_Quake (1, 8, 0, 1024, "")
    TNT1 A 0 A_Quake (6, 8, 0, 512, "")
	TNT1 A 0 A_JumpIf(CallACS("GnuCustardCheck"), "GuncasterImpact")
    TNT1 A 0 A_PlaySound ("weapons/rocklx", 7, 1, 0, 0.5)
    TNT1 A 0 A_PlaySound("weapons/rocklx", CHAN_ITEM, 0.05, 0, 0.05)
	Goto DeathAnimation
  DeathAnimation:
    MEXP A 4 Bright
    MEXP B 4 Bright
    MEXP C 3 Bright
    MEXP D 3 Bright
    MEXP E 2 Bright
    MEXP F 2 Bright
    Stop
	
  GuncasterImpact:
    TNT1 A 0 A_PlaySound("Matriarch/Hit", 5, 0.8)
    TNT1 A 0 A_PlaySound("Matriarch/Exp", 6, 1.0)
    TNT1 A 0 A_PlaySound("Matriarch/Exp", CHAN_ITEM, 0.05, 0, 0.05)
    TNT1 A 0 A_SpawnItemEx("RLGuncasterMonsterExplosion", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION)
    Stop
  }
}

ACTOR RLCyberdemonShadowFireblast
{
   Radius 8
   Height 12
   Speed 35
   Damage 15
   PROJECTILE
   RENDERSTYLE ADD
   Alpha 0.85
   +THRUGHOST
   +DONTHARMSPECIES
   +NOTIMEFREEZE
   +BLOODSPLATTER
   Decal "RevenantScorch"
   DamageType "Fire"
   PainType "Explosion"
   DeathType "Explosion"
   SeeSound "volacubus/fire"
   DeathSound ""
   States
   {
   Spawn: 
      EBXX A 1 Bright
      Loop
   Death:
      TNT1 A 0 A_Explode (128,78,0)
	  TNT1 A 0 A_JumpIf(CallACS("DRLA_MonsterQuake") == 0, 3)
      TNT1 A 0 A_Quake (1, 8, 0, 1024, "")
      TNT1 A 0 A_Quake (6, 8, 0, 512, "")
      TNT1 A 0 A_PlaySound ("rlmonsters/smallexp", 7, 1, 0, 0.5)
      TNT1 A 0 A_PlaySound("rlmonsters/smallexp", CHAN_ITEM, 0.05, 0, 0.05)
      EBXX B 6 Bright
      EBXX CDEFGHIJKL 3 Bright
      Stop
   }
}

ACTOR RLSummonCyberdemonRocket : RLCyberdemonRocket
{
   +MTHRUSPECIES
}

ACTOR RLCyberdemonBombExplosion : Rocket
{
   Radius 1
   Height 1
   +THRUGHOST
   +NOTIMEFREEZE
   +BLOODSPLATTER
   -RANDOMIZE
   -DEHEXPLOSION
   -ROCKETTRAIL
   DamageType "Fire"
   PainType "Explosion"
   DeathType "Explosion"
//   Translation "192:196=209:213"
   Scale 12.0
   Speed 0
   Damage 0
   SeeSound ""
   DeathSound ""
   Obituary "OH MY GOD JC A BOMB"
  States
  {
  Spawn:
	TNT1 A 0
	TNT1 A 0 A_JumpIf(CallACS("DRLA_MonsterQuake") == 0, 3)
    TNT1 A 0 A_Quake (1, 48, 0, 16000, "")
    TNT1 A 0 A_Quake (6, 24, 0, 4096, "")
    TNT1 A 0 A_Explode (2000, 2048, 0, 0, 1024)
    TNT1 A 0 A_PlaySound ("rlmonsters/hugeexp", CHAN_WEAPON, 1, 0, 0.3)
    TNT1 A 0 A_PlaySound ("rlmonsters/distantexp", 7, 1, 0, 0)
    MNUK ABCDEFEDCBA 6 Bright
    Stop
  }
}

ACTOR RLCyberdemonBombFlash : CustomInventory
{
  -COUNTITEM
  +INVENTORY.ALWAYSPICKUP
  Inventory.PickupMessage ""
  Inventory.PickupSound ""
  States
  {
  Spawn:
    TNT1 A 1
    Stop
  Pickup:
    TNT1 A 0 
    TNT1 A 0 A_SetBlend("White", 0.75, 60)
    Stop
  }
}

ACTOR RLCyberStompShockwave : Rocket
{
   Radius 1
   Height 1
   +NOTIMEFREEZE
   +MTHRUSPECIES
   +THRUGHOST
   +BLOODSPLATTER
   -RANDOMIZE
   -DEHEXPLOSION
   -ROCKETTRAIL
   DamageType "Melee"
   PainType "BluntMelee"
   DeathType "BluntMelee"
   Speed 0
   Damage 0
   SeeSound ""
   DeathSound ""
   Obituary "%o was crushed into paste by a Cyberdemon."
  States
  {
  Spawn:
    TNT1 A 0
    TNT1 A 0 A_Explode(128, 128, 0, 0, 128)
    TNT1 A 8
    Stop
  }
}

ACTOR RLStompSmoke
{
   Radius 8
   Height 8
   VSpeed 5
   Scale 0.8
   Damage 0
   RENDERSTYLE ADD
   Alpha 0.25
   +NOINTERACTION
   +NOTONAUTOMAP
   States
   {
   Spawn:
   SMK2 ABCDEFGHIJKLMNOPQ 2 A_FadeTo (0, 0.05, 1)
   Stop
   }
}

ACTOR RLDRPGSummonedCyberdemon : RLCyberdemon
{
  -COUNTKILL
  +NOBLOCKMONST
  +NOTELESTOMP
  +NOFEAR
  +SEEINVISIBLE
  +DONTDRAIN
  +ALWAYSFAST
  +QUICKTORETALIATE
  +MISSILEMORE
  +THRUSPECIES
  Species "Player"
  States
  {
  Spawn:
	TNT1 A 0 NoDelay ACS_NamedExecuteAlways("MonsterInit", 0)
    TNT1 A 0 A_GiveInventory ("RLMonsterInitializerToken", 1)
    TNT1 A 0 A_GiveInventory ("DRPGDRLASummonedMonsterToken", 1)
	Goto Super::Spawn
	See:
	TNT1 A 0 ACS_NamedExecuteAlways("MonsterInit", 0)
    TNT1 A 0 A_GiveInventory ("RLMonsterInitializerToken", 1)
    TNT1 A 0 A_GiveInventory ("DRPGDRLASummonedMonsterToken", 1)
	Goto Super::See
  }
}

ACTOR RLCCCyberdemon : RLCyberdemon
{
  +TOUCHY
  States
  {
  See:
    VCYB DD 4
    VCYB AA 4
    VCYB BB 4
    VCYB CC 4
    Loop
  Melee:
    VCYB Q 12
    VCYB R 12
    VCYB C 12
    Goto See
  Missile:
    VCYB E 6
    VCYB F 12 Bright
    VCYB E 12
    VCYB F 12 Bright
    VCYB E 12
    VCYB F 12 Bright
    Goto See
  Death:
    VCYB H 10
    VCYB I 10 Bright A_Scream
    VCYB JKL 10 Bright
    VCYB M 10 Bright A_NoBlocking
    VCYB NO 10
    VCYB P 30
    VCYB P -1 A_BossDeath
    Stop
  }
}
