
// REVENIHILATOR
/*
*/
ACTOR RLArmageddonRevenant : RLRevenantBase 16565
{
  Health 500
  GibHealth -100
  Speed 8
  Mass 1500
  
  MeleeThreshold 196
  MeleeRange 196
  PainChance 160
  PainThreshold 25
  PainChance "CyberDisruptor", 256
  
  DamageFactor "Bullet", 0.75
  DamageFactor "Fire", 0.90
  DamageFactor "Plasma", 1.25
  
  MeleeSound ""
  SeeSound "revenihilator/sight"
  ActiveSound "revenihilator/active"
  PainSound "revenihilator/sight"
  DeathSound "revenihilator/death"
  
  +QUICKTORETALIATE
  +NOBLOOD
  +NOTELESTOMP
  
  Obituary "%o found that there was nowhere to run from a Revenihilator."
  HitObituary "%o was exploderated by a Revenihilator."
  Tag "Revenihilator"
    //$category "MP Armageddon"
  
	// Guncaster compatibility
	DropItem "Amber"
	DropItem "Emerald"
  States
  {
  Spawn:
    TNT1 A 0 A_JumpIfInventory("RLRevenihilatorActive", 1, "SpawnHunt")
    TNT1 A 0 A_Jump(100, "Deactivated")
    TNT1 A 0 A_GiveInventory("RLRevenihilatorDroneDeployed", 1)
  Deactivated:
    AREV O 10 A_LookEx (LOF_NOSEESOUND, 16, 2048, 0, 20, "Activate")
    Loop
  Activate:
    TNT1 A 0 A_PlaySound("revenihilator/activate", 5, 1, 0, 1.25)
    AREV O 14
    TNT1 A 0 A_GiveInventory("RLRevenihilatorActive", 1)
    AREV C 4
    TNT1 A 0 A_AlertMonsters(1024)
    TNT1 A 0 A_PlaySound("revenihilator/sight", CHAN_VOICE)
    AREV DD 3 A_Chase ("", "")
    Goto See
  SpawnHunt:
    TNT1 A 0 A_Look
    AREV A 3 A_Wander
    TNT1 A 0 A_Look
    AREV A 3 A_Wander
    TNT1 A 0 A_Look
    AREV B 3 A_Wander
    TNT1 A 0 A_Look
    AREV B 3 A_Wander
    TNT1 A 0 A_Look
    AREV C 3 A_Wander
    TNT1 A 0 A_Look
    AREV C 3 A_Wander
    TNT1 A 0 A_Look
    AREV D 3 A_Wander
    TNT1 A 0 A_Look
    AREV D 3 A_Wander
    Goto See
	
  See:
    TNT1 A 0 A_JumpIfInventory("RLRevenihilatorDroneDeployed", 1, "SeeLoop")
    TNT1 A 0 A_CheckSightOrRange(1536, 1)
	Goto SeeLoop
    TNT1 A 0 A_Jump(128, "LaunchDrone")
  SeeLoop:
    AREV A 3 A_Chase
    TNT1 A 0 A_JumpIfInventory("PowerRLRevenihilatorTeleported", 1, 2)
    TNT1 A 0 A_Teleport("Teleported", "RLRevenihilatorTeleport", "TeleportFog")
    AREV A 3 A_Chase
    TNT1 A 0 A_JumpIfInventory("PowerRLRevenihilatorTeleported", 1, 2)
    TNT1 A 0 A_Teleport("Teleported", "RLRevenihilatorTeleport", "TeleportFog")
    AREV B 3 A_Chase
    TNT1 A 0 A_JumpIfInventory("PowerRLRevenihilatorTeleported", 1, 2)
    TNT1 A 0 A_Teleport("Teleported", "RLRevenihilatorTeleport", "TeleportFog")
    AREV B 3 A_Chase
    TNT1 A 0 A_JumpIfInventory("PowerRLRevenihilatorTeleported", 1, 2)
    TNT1 A 0 A_Teleport("Teleported", "RLRevenihilatorTeleport", "TeleportFog")
    AREV C 3 A_Chase
    TNT1 A 0 A_JumpIfInventory("PowerRLRevenihilatorTeleported", 1, 2)
    TNT1 A 0 A_Teleport("Teleported", "RLRevenihilatorTeleport", "TeleportFog")
    AREV C 3 A_Chase
    TNT1 A 0 A_JumpIfInventory("PowerRLRevenihilatorTeleported", 1, 2)
    TNT1 A 0 A_Teleport("Teleported", "RLRevenihilatorTeleport", "TeleportFog")
    AREV D 3 A_Chase
    TNT1 A 0 A_JumpIfInventory("PowerRLRevenihilatorTeleported", 1, 2)
    TNT1 A 0 A_Teleport("Teleported", "RLRevenihilatorTeleport", "TeleportFog")
    AREV D 3 A_Chase
    TNT1 A 0 A_JumpIfInventory("PowerRLRevenihilatorTeleported", 1, "See")
    TNT1 A 0 A_Teleport("Teleported", "RLRevenihilatorTeleport", "TeleportFog")
    Goto See
  Teleported:
    TNT1 A 0 A_GiveInventory("PowerRLRevenihilatorTeleported", 1)
    AREV AABB 2 A_Chase ("", "", CHF_NIGHTMAREFAST)
    AREV CCDD 2 A_Chase ("", "Missile")
    Goto See
	
  MeleeProper:
    TNT1 A 0 A_PlaySound("revenihilator/vree", 5, 1, 0, 1.25)
    AREV GE 6 A_FaceTarget
  FlakSpam:
    TNT1 A 0 A_FaceTarget
    AREV F 3 Bright A_CustomMissile("RLRevenihilatorFlakNoBlast", 36, 9, frandom(-10,10))
    AREV E 3 A_FaceTarget
    AREV EE 4 A_FaceTarget
    TNT1 A 0 A_JumpIfCloser (196, 1)
    Goto See
    TNT1 A 0 A_MonsterRefire (0, "Overwatch")
    Goto FlakSpam
	
  Overwatch:
    TNT1 A 0 A_JumpIfCloser (1024, 1)
	Goto See
    TNT1 A 0 A_JumpIfInventory("LDLegendaryMonsterTransformed", 1, 2)
    TNT1 A 0 A_JumpIfInventory("DRPGShadowAuraToken", 1, 1)
	Goto OverwatchMain
    TNT1 A 0 A_JumpIfInventory("PowerRLRevenihilatorTeleported2", 1, 2)
    TNT1 A 0 A_JumpIfInTargetLOS("OverwatchTeleport", 15, JLOSF_CLOSENOFOV | JLOSF_DEADNOJUMP, 1024, 256)
  OverwatchMain:
    AREV E 1 A_FaceTarget
    TNT1 A 0 A_Chase ("", "RepeatSpecialAttackCheck", CHF_DONTMOVE | CHF_NOPLAYACTIVE)
    TNT1 A 0 A_Jump (32, "SeeLoop")
	Goto Overwatch
  OverwatchTeleport:
    TNT1 A 0 A_SpawnItemEx ("TeleportFog", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
    TNT1 AAAAAAAA 0 A_Wander
    TNT1 A 0 A_SpawnItemEx ("TeleportFog", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 0 A_GiveInventory("PowerRLRevenihilatorTeleported2", 1)
    Goto Overwatch
	
  LaunchDrone:
    TNT1 A 0 A_PlaySound("revenihilator/vree", 5, 1, 0, 1.25)
    AREV GE 6
    AREV H 3 Bright A_SpawnItemEx("RLRevenihilatorDrone", 12, 48, 32, 0, 5, 5, 0, SXF_SETMASTER | SXF_TRANSFERPOINTERS)
    AREV EG 6
    Goto See
	
  MissileProper:
    TNT1 A 0 A_PlaySound("revenihilator/vree", 5, 1, 0, 1.25)
    AREV GGG 6 A_FaceTarget
  OverwatchAttack:
  RepeatProper:
    TNT1 A 0 A_Jump(256, 1,2,3)
    AREV EEEEEEEE 2 A_FaceTarget
    TNT1 A 0 A_JumpIfHealthLower(250, "HyperBoltCheck")
	
  FlakPulseContinue:
    TNT1 A 0 A_JumpIfInTargetInventory("RLFireangelPerk", 1, "AttackNoBlast")
    TNT1 A 0 A_JumpIfInTargetInventory("RLTacticalSetBonusActive", 1, "AttackNoBlast")
    TNT1 A 0 A_FaceTarget
    AREV F 3 Bright A_CustomMissile("RLRevenihilatorFlak", 36, 9, frandom(-3,3))
    AREV E 3 A_FaceTarget
    AREV EEEEEEEEEE 1 A_FaceTarget
    TNT1 A 0 A_JumpIfInventory("LDLegendaryMonsterTransformed", 1, 2)
    TNT1 A 0 A_JumpIfInventory("DRPGShadowAuraToken", 1, 1)
	Goto FlakPulseContinue2
    TNT1 A 0 A_JumpIfInventory("PowerRLRevenihilatorTeleported2", 1, 2)
    TNT1 A 0 A_JumpIfInTargetLOS("OverwatchTeleport", 15, JLOSF_CLOSENOFOV | JLOSF_DEADNOJUMP, 1024, 256)
  FlakPulseContinue2:
    TNT1 A 0 A_MonsterRefire (0, "Overwatch")
    TNT1 A 0 A_FaceTarget
    AREV F 3 Bright A_CustomMissile("RLRevenihilatorFlak", 36, 9, frandom(-3,3))
    AREV E 3 A_FaceTarget
    AREV EEEEEEEEEE 1 A_FaceTarget
    TNT1 A 0 A_JumpIfInventory("LDLegendaryMonsterTransformed", 1, 2)
    TNT1 A 0 A_JumpIfInventory("DRPGShadowAuraToken", 1, 1)
	Goto FlakPulseContinue3
    TNT1 A 0 A_JumpIfInventory("PowerRLRevenihilatorTeleported2", 1, 2)
    TNT1 A 0 A_JumpIfInTargetLOS("OverwatchTeleport", 15, JLOSF_CLOSENOFOV | JLOSF_DEADNOJUMP, 1024, 256)
  FlakPulseContinue3:
    TNT1 A 0 A_MonsterRefire (0, "Overwatch")
    TNT1 A 0 A_FaceTarget
    AREV F 3 Bright A_CustomMissile("RLRevenihilatorFlak", 36, 9, frandom(-3,3))
    AREV E 3 A_FaceTarget
    AREV EEEEEEEEEE 1 A_FaceTarget
    Goto See
	
  AttackNoBlast:
    TNT1 A 0 A_FaceTarget
    AREV F 3 Bright A_CustomMissile("RLRevenihilatorFlakNoBlast", 36, 9, frandom(-3,3))
    AREV E 3 A_FaceTarget
    AREV EEEEEEEEEE 1 A_FaceTarget
    TNT1 A 0 A_JumpIfInventory("LDLegendaryMonsterTransformed", 1, 2)
    TNT1 A 0 A_JumpIfInventory("DRPGShadowAuraToken", 1, 1)
	Goto AttackNoBlast2
    TNT1 A 0 A_JumpIfInventory("PowerRLRevenihilatorTeleported2", 1, 2)
    TNT1 A 0 A_JumpIfInTargetLOS("OverwatchTeleport", 15, JLOSF_CLOSENOFOV | JLOSF_DEADNOJUMP, 1024, 256)
  AttackNoBlast2:
    TNT1 A 0 A_MonsterRefire (0, "Overwatch")
    TNT1 A 0 A_FaceTarget
    AREV F 3 Bright A_CustomMissile("RLRevenihilatorFlakNoBlast", 36, 9, frandom(-3,3))
    AREV E 3 A_FaceTarget
    AREV EEEEEEEEEE 1 A_FaceTarget
    TNT1 A 0 A_JumpIfInventory("LDLegendaryMonsterTransformed", 1, 2)
    TNT1 A 0 A_JumpIfInventory("DRPGShadowAuraToken", 1, 1)
	Goto AttackNoBlast3
    TNT1 A 0 A_JumpIfInventory("PowerRLRevenihilatorTeleported2", 1, 2)
    TNT1 A 0 A_JumpIfInTargetLOS("OverwatchTeleport", 15, JLOSF_CLOSENOFOV | JLOSF_DEADNOJUMP, 1024, 256)
  AttackNoBlast3:
    TNT1 A 0 A_MonsterRefire (0, "Overwatch")
    TNT1 A 0 A_FaceTarget
    AREV F 3 Bright A_CustomMissile("RLRevenihilatorFlakNoBlast", 36, 9, frandom(-3,3))
    AREV E 3 A_FaceTarget
    AREV EEEEEEEEEE 1 A_FaceTarget
    Goto See
	
  HyperBoltCheck:
    TNT1 A 0 A_JumpIfHealthLower(100, "HyperBolt")
    TNT1 A 0 A_Jump(256, "FlakPulseContinue", "HyperBolt")
	Goto See
  HyperBolt:
    TNT1 A 0 A_FaceTarget
    AREV F 3 Bright A_CustomMissile("RLRevenihilatorHyperBolt", 36, 9, frandom(-5,5))
    AREV EE 2 A_FaceTarget
    AREV EEE 1 A_FaceTarget
    TNT1 A 0 A_MonsterRefire (0, "Overwatch")
    TNT1 A 0 A_FaceTarget
    AREV F 3 Bright A_CustomMissile("RLRevenihilatorHyperBolt", 36, 9, frandom(-5,5))
    AREV EE 2 A_FaceTarget
    AREV EEE 1 A_FaceTarget
    TNT1 A 0 A_MonsterRefire (0, "Overwatch")
    TNT1 A 0 A_FaceTarget
    AREV F 3 Bright A_CustomMissile("RLRevenihilatorHyperBolt", 36, 9, frandom(-5,5))
    AREV EE 2 A_FaceTarget
    AREV EEE 1 A_FaceTarget
    TNT1 A 0 A_MonsterRefire (0, "Overwatch")
    TNT1 A 0 A_FaceTarget
    AREV F 3 Bright A_CustomMissile("RLRevenihilatorHyperBolt", 36, 9, frandom(-5,5))
    AREV EE 2 A_FaceTarget
    AREV EEE 1 A_FaceTarget
    Goto See
	
  PainMain:
    AREV I 3
    AREV I 3 A_Pain
    Goto OverwatchAttack
	
  XDeathMain:
  DeathMain:
    TNT1 A 0 A_GiveInventory ("RLArmageddonRevenantKillIncrementer", 1, AAPTR_PLAYER1) // Used for tallying total kills and bestiary info
    TNT1 A 0 A_SpawnItemEx ("RLRevenihilatorExplosion", 0, 0, 48, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 0 A_KillChildren
    AREV JK 6
    AREV L 6 A_Scream
    AREV M 6 A_NoBlocking
    TNT1 A 0 A_SpawnItem ("RLGibThud", 0, 0, 0, 0)
    AREV N 0
    "####" "#" 0 A_Jump(256, "DeathEnd")
    Goto DeathEnd
  SimpleXDeathMain:
    TNT1 A 0 A_KillChildren
    TNT1 A 0 A_GiveInventory ("RLArmageddonRevenantKillIncrementer", 1, AAPTR_PLAYER1) // Used for tallying total kills and bestiary info
    AREV JK 6
    AREV L 6 A_Scream
    AREV M 6 A_NoBlocking
    AREV N 0
    "####" "#" 0 A_Jump(256, "DeathEnd")
    Goto DeathEnd
  DeathFrame:
    AREV N 0
    "####" "#" 0 A_Jump(256, "DeathEnd")
    Goto DeathEnd
	
	//Ice
  GenericFreezeDeath:
	"####" "#" 0 A_GiveInventory ("RLArmageddonRevenantKillIncrementer", 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 ("NOBLOCKMAP", 0)
    TNT1 A 0 A_ChangeFlag ("NOPAIN", 1)
    AREV N 2
    TNT1 A 0 A_ChangeFlag ("NOPAIN", 0)
    TNT1 A 0 A_JumpIfInventory ("RLNightmareResurrectionToken", 1, "NightmareRaise")
    TNT1 A 0 A_JumpIfInventory ("RLCyberneticResurrectionToken", 1, "CyberneticRaise")
    TNT1 A 0 A_SpawnItemEx ("RLResurrectionFire", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION) 
  RaiseContinue:
    TNT1 A 0 A_ChangeFlag ("NOPAIN", 0)
    AREV MLKJ 5
    Goto See
  NightmareRaise:
    TNT1 A 0 A_SpawnItemEx ("RLNightmareResurrectionFire", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
    Goto RaiseContinue
  CyberneticRaise:
    TNT1 A 0 A_SpawnItemEx ("RLCyberneticResurrectionSparks", 0, 0, 20, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
    Goto RaiseContinue
	
  CrushDRLA:
    TNT1 A 30 A_SpawnItemEx("RLCrushedSmall",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)
    D2F2 W 2 Bright
    Goto See
  Pain.NeuralStun:
    D2F2 W 2 Bright
    Goto See
  Pain.CyberDisruptor:
    TNT1 A 0 A_KillChildren
    Goto Pain.LightningBlue
	
  Death.NeuralStun:
    TNT1 A 0
    Goto Death
  XDeath.RigelBlast:
  Death.RigelBlast:
    TNT1 A 0 A_KillChildren
    TNT1 A 0 A_GiveInventory ("RLDuke2Score", 1500, AAPTR_TARGET)
    TNT1 A 0 A_GiveInventory ("RLArmageddonRevenantKillIncrementer", 1, AAPTR_PLAYER1) // Used for tallying total kills and bestiary info
    TNT1 A 0 A_PlaySound("weapons/dn2gunexplosion", CHAN_BODY)
    TNT1 A 0 A_NoBlocking
    TNT1 A 0 A_SpawnItemEx ("RLDuke2BasicEnemyExplosions", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 35
    Stop
	
//==============================================================================
//					--	Special Monster Attacks  --
//==============================================================================

//==============================================================================
//					--	Final Doomer Compatibility Stuff  --
//==============================================================================
  Death.Maser:
  XDeath.Maser:
    "####" "#" 0 A_FaceTarget
    "####" "#" 0 A_ChangeVelocity (frandom(-5.0,-15.0), 0, 0, CVF_RELATIVE)
    "####" "#" 0 A_Jump(256, "XDeath")
	Goto XDeath
	
  DeathXSparkFrame:
    "####" "#" 0 A_JumpIfInTargetInventory("Mana",0,2)
    "####" "#" 0 A_DropItem("MajorManaPod",-1,54)
    AREV I 0
    "####" "#" 0 A_Jump(256, "DeathXSpark")
	Goto DeathXSpark
	
//==============================================================================
//					--	Guncaster Compatibility Stuff  --
//==============================================================================
	MidasFrame1:
		AREV I 0 A_SpawnItemEx("Midas_Statue_Agitation", 0,0,0, 0,0,0, 0,SXF_TRANSFERPOINTERS|SXF_TRANSFERSPRITEFRAME)
		TNT1 A 0 A_JumpIf(1, "DestroyedEnd")
		Goto DestroyedEnd
	MidasFrame2:
		AREV I 0 A_SpawnItemEx("Midas_Statue_Agitation", 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:
		AREV I 0 A_SpawnItemEx("Midas_Statue_Agitation", 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)
        AREV I 1 A_SetScale(ScaleX + 0.03, ScaleY - 0.03)
        Loop
		
	//Thunderstruck
	Pain.Lightning:
		"####" "#" 0 A_Jump(164,1)
		Goto Pain
		TNT1 A 0 A_ChangeFlag("QUICKTORETALIATE", 1)
		TNT1 A 0 A_ChangeFlag("ALWAYSFAST", 1) // eehehehehe
		AREV I 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
		TNT1 A 0 A_ChangeFlag("QUICKTORETALIATE", 1)
		TNT1 A 0 A_ChangeFlag("ALWAYSFAST", 1) // eeheheehehehe
		AREV I 0 A_ChangeFlag("NOPAIN",1)
		"####" "#" 0 A_SetUserVar("User_LightningLock", User_LightningLock + 10)
		"####" "#" 0 A_Jump(256,"BlueLightningLock")
		Goto BlueLightningLock
  }
}

ACTOR RLRevenihilatorFlak : PlasmaBall
{
   +THRUGHOST
   +DONTREFLECT
   +SEEKERMISSILE
   +MTHRUSPECIES
   +NOTIMEFREEZE
   +BLOODSPLATTER
   Decal "Scorch"
   DamageType "Plasma"
   Damage (random(3,4)*10)
   Speed 15
   Scale 0.4
   SeeSound "revenihilator/pulseflak"
   DeathSound ""
   States
   {
   Spawn: 
      AREX AB 1 Bright A_JumpIfTracerCloser(100, "Detonate")
      Goto Spawn
   Detonate: 
      TNT1 A 0
   Death:
	  TNT1 A 0 A_JumpIf(CallACS("DRLA_MonsterQuake") == 0, 3)
      TNT1 A 0 A_Quake(1, 12, 0, 512, "")
      TNT1 A 0 A_Quake(5, 6, 0, 256, "")
      TNT1 A 0 A_PlaySound("revenihilator/flakbang", 5, 1, 0, 0.85)
      TNT1 A 0 A_Stop
      AREX F 1 A_SetScale (0.7)
      TNT1 A 0 A_Explode(25, 128, 0)
      AREX FGHIJKLMNO 2 Bright
      Stop
   }
}

ACTOR RLRevenihilatorFlakNoBlast : RLRevenihilatorFlak
{
   States
   {
   Spawn: 
      AREX AB 1 Bright
      loop
   }
}

ACTOR RLRevenihilatorHyperBolt : FastProjectile
{
   Radius 4
   Height 4
   Speed 40
   MissileHeight 8
   Damage (random(2,5)*5)
   DamageType "Plasma"
   Scale 0.3
   PROJECTILE
   RENDERSTYLE ADD
   ALPHA 0.95
   +THRUGHOST
   +EXPLODEONWATER
   +MTHRUSPECIES
   +NOTIMEFREEZE
   +BLOODSPLATTER
   Decal "Scorch"
   MissileType "RLRevenihilatorHyperBoltTrail"
   SeeSound "revenihilator/hyperbolt"
   DeathSound "revenihilator/hyperboltimpact"
   States
   {
   Spawn: 
      AREX ABCDE 1 Bright A_CustomMissile("RLRevenihilatorHyperBoltSparks",0,0,random(150, 210), CMF_AIMDIRECTION, Random(-30, 30))
      Goto Spawn
   Death:
      TNT1 AAAAAAAAAAAAAAA 0 A_CustomMissile("RLRevenihilatorHyperBoltSparks",0,0,random(0, 359), CMF_AIMDIRECTION, Random(-80, 80))
   DeathLoop:
      AREX F 1 Bright A_SetScale (ScaleX+0.1)
      TNT1 A 0 A_FadeTo(0, 0.12, 1)
      Goto DeathLoop
   }
}

ACTOR RLRevenihilatorHyperBoltTrail
{
   Projectile
   Radius 8
   Height 8
   Speed 1
   Scale 0.09
   Damage 0
   RENDERSTYLE ADD
   Alpha 0.55
   +NOCLIP
   +NOINTERACTION
   +NOTONAUTOMAP
   +NOTIMEFREEZE
   States
   {
   Spawn:
   AREX F 1 Bright A_SetScale (ScaleX+0.02)
   TNT1 A 0 A_FadeTo(0, 0.04, 1)
   Loop
   }
}

Actor RLRevenihilatorHyperBoltSparks
{
  Radius 2
  Height 2
  Speed 8
  Damage (0)
  Projectile
  RenderStyle Add
  Gravity 0.3
  Alpha 0.95
  Scale 0.08
  -NOGRAVITY
  +THRUACTORS
  +NOCLIP
  +NOTONAUTOMAP
  +NOTIMEFREEZE
  States
  {
  Spawn:
    AREX F 1 Bright A_SetScale (ScaleX-0.005)
    TNT1 A 0 A_FadeTo(0, 0.04, 1)
    Loop
  Death:
    TNT1 A 0
    Stop
  }
}

ACTOR RLRevenihilatorDrone
{
  Health 25
  Radius 12
  Height 18
  Mass 50
  Speed 4
  Species "DRR Drone"
  PainChance 0
  DamageFactor "Melee", 0.8
  DamageFactor "Bullet", 0.5
  DamageFactor "Fire", 0.8
  DamageFactor "AntiAir", 3.0 // LegenDoom Damagetype
  Monster
  +FLOAT
  +NOGRAVITY
  +DONTFALL
  +NOICEDEATH
  +LOOKALLAROUND
  +NOINFIGHTING
  +NOBLOOD
  +FLOATBOB
  +NOPAIN
  +NOFEAR
  +SPAWNFLOAT
  +DONTSPLASH
  +THRUSPECIES
  +BLOCKEDBYSOLIDACTORS
  -COUNTKILL
  DeathSound "rlmonsters/smallexp"
  Obituary "%o was stupidly close to the exploding drone thingy."
  Tag "DRR Drone"
  States
  {
  Spawn:
    TNT1 A 0
    TNT1 A 0 A_GiveInventory ("RLRevenihilatorDroneDeployed", 1, AAPTR_MASTER)
    TNT1 A 0 A_PlaySound("revenihilator/droneloop", 6, 0.1, 1, 0.8)
    TNT1 A 0 A_GiveInventory ("PowerRLRevenihilatorDroneResetTimer", 1)
  SpawnWait:
    ARDR A 1 A_Look
    TNT1 A 0 A_JumpIfInventory ("PowerRLRevenihilatorDroneResetTimer", 1, "SpawnWait")
    TNT1 A 0 A_TakeInventory ("RLRevenihilatorDroneDeployed", 1, 0, AAPTR_MASTER)
    TNT1 A 0 A_SpawnItemEx("TeleportFog", 0, 0, -16)
    Stop
  See:
    TNT1 A 0 A_ChangeFlag("NOCLIP", 0)
    TNT1 A 0 A_ChangeFlag("INVULNERABLE", 0)
    TNT1 A 0 A_ChangeFlag("SHOOTABLE", 1)
    TNT1 A 0 A_PlaySound("revenihilator/droneloop", 6, 0.1, 1, 0.8)
    ARDR A 1 A_Chase ("", "")
    TNT1 A 0 A_JumpIfTargetInLOS ("RapidResponseMode", 0, JLOSF_DEADNOJUMP, 1024, 0)
    TNT1 A 0 A_Jump(2, "TeleportCheck")
    Loop
  TeleportCheck:
    TNT1 A 0 A_JumpIfInventory("PowerRLRevenihilatorDroneTeleported", 1, "See")
    TNT1 A 0 A_CheckSight("TeleportMode")
    Goto See
  TeleportMode:
    TNT1 A 0 A_StopSound(6)
    TNT1 A 0 A_SpawnItemEx("TeleportFog", 0, 0, -16)
    TNT1 A 0 A_ChangeFlag("NOCLIP", 1)
    TNT1 A 0 A_ChangeFlag("INVULNERABLE", 1)
    TNT1 A 0 A_ChangeFlag("SHOOTABLE", 0)
    TNT1 A 0 A_GiveInventory("PowerRLRevenihilatorDroneTeleported", 1)
    TNT1 A 0 A_Jump(256, 1,2,3,4,5)
    TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_Chase("","", CHF_NIGHTMAREFAST | CHF_NOPLAYACTIVE)
    TNT1 A 0 A_JumpIfInTargetLOS ("Ambush", 110, JLOSF_CLOSENOJUMP | JLOSF_DEADNOJUMP, 2048, 256)
    TNT1 A 0 A_ChangeFlag("NOCLIP", 0)
    TNT1 A 0 A_ChangeFlag("INVULNERABLE", 0)
    TNT1 A 0 A_ChangeFlag("SHOOTABLE", 1)
    TNT1 A 0 A_SpawnItemEx("TeleportFog", 0, 0, -16)
    TNT1 A 0 A_PlaySound("revenihilator/droneloop", 6, 0.1, 1, 0.8)
    Goto See
  Ambush:
    TNT1 A 1
    TNT1 A 0 A_JumpIfInTargetLOS ("Ambush", 110, JLOSF_CLOSENOJUMP | JLOSF_DEADNOJUMP, 2048, 256)
    TNT1 A 0 A_ChangeFlag("NOCLIP", 0)
    TNT1 A 0 A_ChangeFlag("INVULNERABLE", 0)
    TNT1 A 0 A_ChangeFlag("SHOOTABLE", 1)
    TNT1 A 0 A_SpawnItemEx("TeleportFog", 0, 0, -16)
    TNT1 A 0 A_PlaySound("revenihilator/droneloop", 6, 0.1, 1, 0.8)
    Goto See
  RapidResponseMode: // Hopefully this fixes Revenihilators spawning in walls and stuff
    TNT1 A 0 Thing_ChangeTID(0,996)
    TNT1 A 0 A_SpawnItemEx ("RLRevenihilatorDroneChecker", 0,0,0, 0,0,0, 0, SXF_CLEARCALLERTID)
    TNT1 A 0 A_JumpIf(tid==0,"RapidResponseModeActivate")
    Goto TeleportCheck
  RapidResponseModeActivate:
    TNT1 A 0 A_PlaySound("revenihilator/dronestart", 7, 1, 0, 0.4)
    ARDR B 2 Bright A_FaceTarget (25)
    ARDR AAAA 5 A_FaceTarget (25)
    TNT1 A 0 A_PlaySound("revenihilator/dronebeep", 7, 1, 0, 0.4)
    ARDR B 2 Bright A_FaceTarget (25)
    ARDR AAAA 5 A_FaceTarget (25)
    TNT1 A 0 A_PlaySound("revenihilator/dronebeep", 7, 1, 0, 0.4)
    ARDR B 2 Bright A_FaceTarget (25)
    ARDR AAAA 5 A_FaceTarget (25)
    TNT1 A 0 A_PlaySound("revenihilator/dronebeep", 7, 1, 0, 0.4)
    ARDR B 2 Bright A_FaceTarget (25)
    ARDR AAAA 5 A_FaceTarget (25)
    TNT1 A 0 A_PlaySound("revenihilator/dronebeep", 7, 1, 0, 0.4)
    ARDR B 2 Bright A_FaceTarget (25)
    ARDR AAAA 5 A_FaceTarget (25)
    TNT1 A 0 A_SpawnItemEx("RLRevenihilatorTeleport")
    Stop
  Pain:
    TNT1 A 0 A_Pain
    Goto See
  Death:
    TNT1 A 0 A_JumpIfInventory ("DRPGShadowAuraToken", 1, "MUHDRONEEXPERIENCE", AAPTR_MASTER)
    TNT1 A 0 A_Stop
    TNT1 A 0 A_SetTranslucent (0.95, 1)
    TNT1 A 0 A_ChangeFlag ("FLOATBOB", 0)
    TNT1 A 0 A_CustomMissile("RLDefenceDroneExplosion",12,0)
    ADRO E 4 Bright A_Scream
    ADRO F 4 Bright A_NoBlocking
    ADRO GH 3 Bright
    ADRO IJ 2 Bright
    Stop
  Death.Recall:
    TNT1 A 0 A_TakeInventory ("RLRevenihilatorDroneDeployed", 1, AAPTR_MASTER)
    TNT1 A 0 A_Stop
    TNT1 A 0 A_Scream
    TNT1 A 0 A_NoBlocking
    TNT1 A 0 A_SpawnItemEx("TeleportFog", 0, 0, -16)
    Stop
  MUHDRONEEXPERIENCE:
    TNT1 A 0 A_TakeInventory ("RLRevenihilatorDroneDeployed", 1, AAPTR_MASTER)
    Goto Death+1
//==============================================================================
//					--	DOOMRL ARSENAL STUFF  --
//==============================================================================
  Death.Massacre:
    TNT1 A 0 A_NoBlocking
    TNT1 A 0 A_Stop
    Stop
  XDeath.RigelBlast:
  Death.RigelBlast:
    TNT1 A 0 A_PlaySound("weapons/dn2gunexplosion", CHAN_BODY)
    TNT1 A 0 A_NoBlocking
    TNT1 A 0 A_SpawnItemEx ("RLDuke2MediumExplosion", 0,0,16, 0,0,0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 35
    Stop
  }
}

actor RLRevenihilatorDroneChecker : RLMNullActor
{
    Radius 20
    Height 56
}

ACTOR RLRevenihilatorExplosion : Rocket
{
   Radius 1
   Height 1
   +THRUGHOST
   +NOTIMEFREEZE
   +BLOODSPLATTER
   -RANDOMIZE
   -DEHEXPLOSION
   -ROCKETTRAIL
   DamageType "Fire"
   PainType "Explosion"
   DeathType "Explosion"
   Speed 0
   Damage 0
  RenderStyle Add
  Alpha 0.95
  Scale 0.8
   SeeSound ""
   DeathSound ""
   Obituary "$OB_BARREL" // "%o went boom."
  States
  {
  Spawn:
    TNT1 A 0
  Death:
    TNT1 A 0 A_PlaySound("rlmonsters/mediumexp", 5, 1, 0, 0.85)
    MEXP A 4 Bright A_Explode (24,96)
    MEXP B 4 Bright
    MEXP C 3 Bright
    MEXP D 3 Bright
    MEXP E 2 Bright
    MEXP F 2 Bright
    Stop
  }
}

ACTOR RLRevenihilatorTeleport : SpecialSpot
{
  +NOBLOCKMAP
  +NOTIMEFREEZE
  RenderStyle Add
  Alpha 0.98
  Scale 1.4
  States
  {
  Spawn:
    TFOG A 1 Bright
    TNT1 A 0 A_PlaySound("misc/teleport", 6, 0.6, 1, 1.75)
    TFOG ABAB 3 Bright
    TNT1 A 0 A_PlaySound("misc/teleport", 6, 0.6, 1, 1.75)
    TFOG CDCB 3 Bright
    TNT1 A 0 A_PlaySound("misc/teleport", 6, 0.6, 1, 1.75)
    TFOG CDCB 3 Bright
    TNT1 A 0 A_PlaySound("misc/teleport", 6, 0.6, 1, 1.75)
    TFOG CDCB 3 Bright
    TNT1 A 0 A_PlaySound("misc/teleport", 6, 0.6, 1, 1.75)
    TFOG CDCB 3 Bright
    TNT1 A 0 A_PlaySound("misc/teleport", 6, 0.6, 1, 1.75)
    TFOG CDCB 3 Bright
    TNT1 A 0 A_PlaySound("misc/teleport", 6, 0.6, 1, 1.75)
    TFOG CDCB 3 Bright
    TNT1 A 0 A_PlaySound("misc/teleport", 6, 0.6, 1, 1.75)
    TFOG CDCB 3 Bright
    TNT1 A 0 A_PlaySound("misc/teleport", 6, 0.6, 1, 1.75)
    TFOG CDCB 3 Bright
    TNT1 A 0 A_PlaySound("misc/teleport", 6, 0.6, 1, 1.75)
    TFOG CDCB 3 Bright
    TNT1 A 0 A_PlaySound("misc/teleport", 6, 0.6, 1, 1.75)
    TFOG CDCB 3 Bright
    TNT1 A 0 A_PlaySound("misc/teleport", 6, 0.6, 1, 1.75)
    TFOG CDCB 3 Bright
    TNT1 A 0 A_PlaySound("misc/teleport", 6, 0.6, 1, 1.75)
    TFOG CDCB 3 Bright
    TNT1 A 0 A_PlaySound("misc/teleport", 6, 0.6, 1, 1.75)
    TFOG CDCB 3 Bright
    TNT1 A 0 A_PlaySound("misc/teleport", 6, 0.6, 1, 1.75)
    TFOG CDEFGHIJ 3 Bright
    Stop
  }
}

Actor RLRevenihilatorActive : Inventory
{
inventory.maxamount 1
}

Actor RLRevenihilatorDroneDeployed : Inventory
{
inventory.maxamount 1
}

ACTOR PowerRLRevenihilatorTeleported : Powerup
{
	Powerup.Duration -60
   +INVENTORY.UNTOSSABLE
}

ACTOR PowerRLRevenihilatorTeleported2 : Powerup
{
	Powerup.Duration -2
   +INVENTORY.UNTOSSABLE
}

ACTOR PowerRLRevenihilatorDroneTeleported : Powerup
{
	Powerup.Duration -10
   +INVENTORY.UNTOSSABLE
}

ACTOR PowerRLRevenihilatorDroneResetTimer : Powerup
{
	Powerup.Duration -10
   +INVENTORY.UNTOSSABLE
}

ACTOR RLCCArmageddonRevenant1 : RLArmageddonRevenant
{
  +TOUCHY
  States
  {
  See:
    AREV AABBCCDD 3
    Loop
  Melee:
    AREV G 18
    AREV E 10
    AREV F 3 Bright
    AREV E 7
    AREV F 3 Bright
    AREV E 7
    AREV F 3 Bright
    AREV E 7
    AREV F 3 Bright
    AREV E 7
    Goto See
  Missile:
    AREV G 18
    AREV E 10
    AREV F 3 Bright
    AREV E 13
    AREV F 3 Bright
    AREV E 13
    AREV F 3 Bright
    AREV E 13
    Goto See
  Death:
    AREV JK 6
    AREV L 6 A_Scream
    AREV M 6 A_NoBlocking
    AREV N -1
    Stop
  }
}
