
// DE-VILE
/*
[10:51 PM] knuckles: de-vile is ez
*/
ACTOR RLArmageddonArchvile : RLArchvileBase 16567
{
  Health 666
  GibHealth -66
  
  BloodType "RLMNullActor", "RLMNullActor", "RLMNullActor"
  BloodColor "11 11 11"
  
  PainChance 66
  PainChance "Massacre", 256
  PainChance "DevileDamage", 256
  PainChance "Lith_Energy", 0 // Lithium compatibility
  
  DamageFactor "Melee", 666
  DamageFactor "Bullet", 666
  DamageFactor "Fire", 666
  DamageFactor "Plasma", 666
  DamageFactor "Crush", 666
  DamageFactor "Extinguishing", 666 // LegenDoom Damagetype
  
  SeeSound "devile/sight"
  ActiveSound "devile/active"
  PainSound "devile/pain"
  DeathSound "devile/death"
  
  +SEEINVISIBLE
  +DONTHARMSPECIES
  +NODAMAGE
  +NOBLOODDECALS
  
  Obituary "%o couldn't withstand the De-Vile's presence."
  Tag "De-Vile"
    //$category "MP Armageddon"
  
	// Guncaster compatibility
	DropItem "Sapphire"
	DropItem "Sapphire"
	DropItem "Sapphire"
	DropItem "AmplifierGiver", 32, 0
	DropItem "TomeSpawner", 4, 0
  
  var int user_antigravtimer;
  States
  {
  Spawn:
    TNT1 A 0 NoDelay A_JumpIfInventory ("RLMonsterInitializerToken", 1, "SpawnLoop")
    TNT1 A 0 A_GiveInventory ("RLMonsterInitializerToken", 1)
    TNT1 A 0 A_SpawnItemEx ("RLDeVileSix1", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION | SXF_SETMASTER)
    TNT1 A 0 A_SpawnItemEx ("RLDeVileSix2", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION | SXF_SETMASTER)
    TNT1 A 0 A_SpawnItemEx ("RLDeVileSix3", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION | SXF_SETMASTER)
  SpawnLoop:
    AVIL AB Random(9,10) A_Look
    Loop
	
  See:
    TNT1 A 0 A_JumpIfInventory ("RLMonsterInitializerToken", 1, "SeeLoop")
    TNT1 A 0 A_GiveInventory ("RLMonsterInitializerToken", 1)
    TNT1 A 0 A_SpawnItemEx ("RLDeVileSix1", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION | SXF_SETMASTER)
    TNT1 A 0 A_SpawnItemEx ("RLDeVileSix2", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION | SXF_SETMASTER)
    TNT1 A 0 A_SpawnItemEx ("RLDeVileSix3", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION | SXF_SETMASTER)
  SeeLoop:
    AVIL A 0 A_SpawnItemEx("RLDeVileAfterimage",0,0,0, 0,0,0, 0, SXF_TRANSFERSCALE | SXF_TRANSFERSPRITEFRAME | SXF_NOCHECKPOSITION)
    AVIL A 2 A_Chase ("", "Missile")
    AVIL A 0 A_SpawnItemEx("RLDeVileAfterimage",0,0,0, 0,0,0, 0, SXF_TRANSFERSCALE | SXF_TRANSFERSPRITEFRAME | SXF_NOCHECKPOSITION)
    AVIL A 2 A_Chase ("", "Missile")
    AVIL B 0 A_SpawnItemEx("RLDeVileAfterimage",0,0,0, 0,0,0, 0, SXF_TRANSFERSCALE | SXF_TRANSFERSPRITEFRAME | SXF_NOCHECKPOSITION)
    AVIL B 2 A_Chase ("", "Missile")
    AVIL B 0 A_SpawnItemEx("RLDeVileAfterimage",0,0,0, 0,0,0, 0, SXF_TRANSFERSCALE | SXF_TRANSFERSPRITEFRAME | SXF_NOCHECKPOSITION)
    AVIL B 2 A_Chase ("", "Missile")
    AVIL C 0 A_SpawnItemEx("RLDeVileAfterimage",0,0,0, 0,0,0, 0, SXF_TRANSFERSCALE | SXF_TRANSFERSPRITEFRAME | SXF_NOCHECKPOSITION)
    AVIL C 2 A_Chase ("", "Missile")
    AVIL C 0 A_SpawnItemEx("RLDeVileAfterimage",0,0,0, 0,0,0, 0, SXF_TRANSFERSCALE | SXF_TRANSFERSPRITEFRAME | SXF_NOCHECKPOSITION)
    AVIL C 2 A_Chase ("", "Missile")
    AVIL D 0 A_SpawnItemEx("RLDeVileAfterimage",0,0,0, 0,0,0, 0, SXF_TRANSFERSCALE | SXF_TRANSFERSPRITEFRAME | SXF_NOCHECKPOSITION)
    AVIL D 2 A_Chase ("", "Missile")
    AVIL D 0 A_SpawnItemEx("RLDeVileAfterimage",0,0,0, 0,0,0, 0, SXF_TRANSFERSCALE | SXF_TRANSFERSPRITEFRAME | SXF_NOCHECKPOSITION)
    AVIL D 2 A_Chase ("", "Missile")
    AVIL E 0 A_SpawnItemEx("RLDeVileAfterimage",0,0,0, 0,0,0, 0, SXF_TRANSFERSCALE | SXF_TRANSFERSPRITEFRAME | SXF_NOCHECKPOSITION)
    AVIL E 2 A_Chase ("", "Missile")
    AVIL E 0 A_SpawnItemEx("RLDeVileAfterimage",0,0,0, 0,0,0, 0, SXF_TRANSFERSCALE | SXF_TRANSFERSPRITEFRAME | SXF_NOCHECKPOSITION)
    AVIL E 2 A_Chase ("", "Missile")
    AVIL F 0 A_SpawnItemEx("RLDeVileAfterimage",0,0,0, 0,0,0, 0, SXF_TRANSFERSCALE | SXF_TRANSFERSPRITEFRAME | SXF_NOCHECKPOSITION)
    AVIL F 2 A_Chase ("", "Missile")
    AVIL F 0 A_SpawnItemEx("RLDeVileAfterimage",0,0,0, 0,0,0, 0, SXF_TRANSFERSCALE | SXF_TRANSFERSPRITEFRAME | SXF_NOCHECKPOSITION)
    AVIL F 2 A_Chase ("", "Missile")
    Loop
	
  MissileProper:
    TNT1 A 0 A_JumpIf(CheckClass("PlayerPawn", AAPTR_TARGET, TRUE), 1)
	Goto MissileNoGrav
    TNT1 A 0 A_JumpIfInventory ("RLDeVileAntiGravAttackCooldown", 1, 2)
    TNT1 A 0 A_JumpIfCloser (300, "AntiGravAttack")
  MissileNoGrav:
    TNT1 A 0 A_JumpIfInventory ("RLDeVileCopyAttackCooldown", 1, 2)
    TNT1 A 0 A_JumpIfCloser (756, "CopyAttack")
    TNT1 A 0
	Goto StunShot
	
	
  StunShot: // stuns the player if hit by it for a few seconds
    TNT1 A 0 A_GiveInventory ("RLDeVileAttack", 1)
    AVIL G 4 Bright A_FaceTarget
    AVIL V 1 A_FaceTarget
    AVIL G 4 Bright A_FaceTarget
    AVIL HI 5 Bright A_FaceTarget
    TNT1 A 0 A_MonsterRefire (0, "StunShotArc")
    TNT1 A 0 A_CustomMissile ("RLDeVileStunShot", 32)
    AVIL J 8 Bright A_FaceTarget
    AVIL K 12 A_FaceTarget
    Goto See
  StunShotArc:
    TNT1 A 0 A_CustomMissile ("RLDeVileStunShot", 32, 0, -15)
    TNT1 A 0 A_CustomMissile ("RLDeVileStunShot", 32, 0, 15)
    AVIL J 8 Bright A_FaceTarget
    AVIL K 12 A_FaceTarget
    Goto See
	
  CopyAttack: // creates an evil copy of the player if they are hit
    TNT1 A 0 A_GiveInventory ("RLDeVileAttack", 1)
    TNT1 A 0 A_GiveInventory ("RLDeVileCopyAttackCooldown", 1)
    TNT1 A 0 A_PlaySound ("devile/laugh", CHAN_VOICE, 1, 0, 0.5)
    TNT1 A 0 A_PlaySound ("devile/laugh", 7, 1, 0, 0.5)
    TNT1 A 0 A_CheckFlag ("NOPAIN", "NoFlinchCopy")
    TNT1 A 0 A_ChangeFlag ("NOPAIN", 1)
    AVIL G 4 Bright A_FaceTarget
    AVIL V 1 A_FaceTarget
    AVIL G 4 Bright A_FaceTarget
    AVIL V 1 A_FaceTarget
    AVIL G 4 Bright A_FaceTarget
    AVIL V 1 A_FaceTarget
    AVIL G 4 Bright A_FaceTarget
    AVIL HI 5 Bright A_FaceTarget
    TNT1 A 0 A_CustomMissile ("RLDeVileCopyAttack", 0,0,0, CMF_CHECKTARGETDEAD)
    AVIL J 8 Bright A_FaceTarget
    TNT1 A 0 A_ChangeFlag ("NOPAIN", 0)
    AVIL K 22 A_FaceTarget
    Goto See
  NoFlinchCopy:
    AVIL G 4 Bright A_FaceTarget
    AVIL V 1 A_FaceTarget
    AVIL G 4 Bright A_FaceTarget
    AVIL V 1 A_FaceTarget
    AVIL G 4 Bright A_FaceTarget
    AVIL V 1 A_FaceTarget
    AVIL G 4 Bright A_FaceTarget
    AVIL HI 5 Bright A_FaceTarget
    TNT1 A 0 A_CustomMissile ("RLDeVileCopyAttack", 0,0,0, CMF_CHECKTARGETDEAD)
    AVIL J 8 Bright A_FaceTarget
    AVIL K 22 A_FaceTarget
    Goto See
	
  AntiGravAttack: // raises nearby players into the air
    TNT1 A 0 A_SetUserVar("user_antigravtimer", 0)
    TNT1 A 0 A_PlaySound ("devile/laugh", CHAN_VOICE, 1, 0, 0.5)
    TNT1 A 0 A_PlaySound ("devile/laugh", 7, 1, 0, 0.5)
    TNT1 A 0 A_RadiusGive ("RLDeVileAntiGravFieldStart", 460, RGF_PLAYERS, 1)
  AntiGravAttackLoop:
    TNT1 AAAA 0 A_SpawnItemEx ("RLDeVileUpwardsEffect", frandom(-256,256),frandom(-256,256),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    AVIL G 1 Bright A_SpawnItemEx ("RLDeVileUpwardsEffect", frandom(-256,256),frandom(-256,256),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    TNT1 A 0 A_RadiusGive ("RLDeVileAntiGravField", 460, RGF_PLAYERS, 1)
    TNT1 AAAA 0 A_SpawnItemEx ("RLDeVileUpwardsEffect", frandom(-256,256),frandom(-256,256),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    AVIL G 1 Bright A_SpawnItemEx ("RLDeVileUpwardsEffect", frandom(-256,256),frandom(-256,256),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    TNT1 AAAA 0 A_SpawnItemEx ("RLDeVileUpwardsEffect", frandom(-256,256),frandom(-256,256),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    AVIL G 1 Bright A_SpawnItemEx ("RLDeVileUpwardsEffect", frandom(-256,256),frandom(-256,256),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    TNT1 AAAA 0 A_SpawnItemEx ("RLDeVileUpwardsEffect", frandom(-256,256),frandom(-256,256),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    AVIL V 1 A_SpawnItemEx ("RLDeVileUpwardsEffect", frandom(-256,256),frandom(-256,256),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    TNT1 A 0 A_JumpIf (user_antigravtimer >= 1024, 2)
    TNT1 A 0 A_SetUserVar("user_antigravtimer", user_antigravtimer + 1)
    TNT1 A 0 A_MonsterRefire (0, "AntiGravAttackEnd")
    TNT1 A 0 A_Jump (user_antigravtimer, "AntiGravAttackEnd")
    TNT1 A 0 A_JumpIfCloser (420, "AntiGravAttackLoop")
  AntiGravAttackEnd:
    TNT1 A 0 A_SetUserVar("user_antigravtimer", 0)
    TNT1 A 0 A_GiveInventory ("RLDeVileAntiGravAttackCooldown", 1)
    Goto StunShot
	
  Pain.DevileDamage:
    TNT1 A 0 A_Pain
  DarkAura: // heals all nearby monsters
    TNT1 A 0 A_CheckFlag ("FRIENDLY", "PainMain")
    TNT1 A 0 A_ChangeFlag ("NOPAIN", 1)
    TNT1 AA 0 A_SpawnItemEx ("RLDeVileDarkUpwardsEffect", frandom(-128,128),frandom(-128,128),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    AVIL R 1 Bright A_SpawnItemEx ("RLDeVileDarkUpwardsEffect", frandom(-128,128),frandom(-128,128),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    TNT1 AA 0 A_SpawnItemEx ("RLDeVileDarkUpwardsEffect", frandom(-128,128),frandom(-128,128),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    AVIL R 1 Bright A_SpawnItemEx ("RLDeVileDarkUpwardsEffect", frandom(-128,128),frandom(-128,128),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    TNT1 AA 0 A_SpawnItemEx ("RLDeVileDarkUpwardsEffect", frandom(-128,128),frandom(-128,128),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    AVIL S 1 Bright A_SpawnItemEx ("RLDeVileDarkUpwardsEffect", frandom(-128,128),frandom(-128,128),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    TNT1 AA 0 A_SpawnItemEx ("RLDeVileDarkUpwardsEffect", frandom(-128,128),frandom(-128,128),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    AVIL S 1 Bright A_SpawnItemEx ("RLDeVileDarkUpwardsEffect", frandom(-128,128),frandom(-128,128),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    TNT1 AA 0 A_SpawnItemEx ("RLDeVileDarkUpwardsEffect", frandom(-128,128),frandom(-128,128),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    AVIL T 1 Bright A_SpawnItemEx ("RLDeVileDarkUpwardsEffect", frandom(-128,128),frandom(-128,128),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    TNT1 AA 0 A_SpawnItemEx ("RLDeVileDarkUpwardsEffect", frandom(-128,128),frandom(-128,128),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    AVIL T 1 Bright A_SpawnItemEx ("RLDeVileDarkUpwardsEffect", frandom(-128,128),frandom(-128,128),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    TNT1 A 0 A_CheckFlag ("FRIENDLY", 3) // Just in case
    TNT1 A 0 A_RadiusGive ("RLDeVileHealing", 512, RGF_MONSTERS, 1)
    TNT1 A 0 A_RadiusGive ("RLDeVileMassResurrection", 512, RGF_CORPSES, 1)
    TNT1 AA 0 A_SpawnItemEx ("RLDeVileDarkUpwardsEffect", frandom(-128,128),frandom(-128,128),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    AVIL R 1 Bright A_SpawnItemEx ("RLDeVileDarkUpwardsEffect", frandom(-128,128),frandom(-128,128),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    TNT1 AA 0 A_SpawnItemEx ("RLDeVileDarkUpwardsEffect", frandom(-128,128),frandom(-128,128),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    AVIL R 1 Bright A_SpawnItemEx ("RLDeVileDarkUpwardsEffect", frandom(-128,128),frandom(-128,128),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    TNT1 AA 0 A_SpawnItemEx ("RLDeVileDarkUpwardsEffect", frandom(-128,128),frandom(-128,128),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    AVIL S 1 Bright A_SpawnItemEx ("RLDeVileDarkUpwardsEffect", frandom(-128,128),frandom(-128,128),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    TNT1 AA 0 A_SpawnItemEx ("RLDeVileDarkUpwardsEffect", frandom(-128,128),frandom(-128,128),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    AVIL S 1 Bright A_SpawnItemEx ("RLDeVileDarkUpwardsEffect", frandom(-128,128),frandom(-128,128),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    TNT1 AA 0 A_SpawnItemEx ("RLDeVileDarkUpwardsEffect", frandom(-128,128),frandom(-128,128),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    AVIL S 1 Bright A_SpawnItemEx ("RLDeVileDarkUpwardsEffect", frandom(-128,128),frandom(-128,128),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    TNT1 AA 0 A_SpawnItemEx ("RLDeVileDarkUpwardsEffect", frandom(-128,128),frandom(-128,128),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    AVIL T 1 Bright A_SpawnItemEx ("RLDeVileDarkUpwardsEffect", frandom(-128,128),frandom(-128,128),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    TNT1 AA 0 A_SpawnItemEx ("RLDeVileDarkUpwardsEffect", frandom(-128,128),frandom(-128,128),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    AVIL T 1 Bright A_SpawnItemEx ("RLDeVileDarkUpwardsEffect", frandom(-128,128),frandom(-128,128),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    TNT1 AA 0 A_SpawnItemEx ("RLDeVileDarkUpwardsEffect", frandom(-128,128),frandom(-128,128),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    AVIL T 1 Bright A_SpawnItemEx ("RLDeVileDarkUpwardsEffect", frandom(-128,128),frandom(-128,128),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    TNT1 AA 0 A_SpawnItemEx ("RLDeVileDarkUpwardsEffect", frandom(-128,128),frandom(-128,128),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    AVIL U 1 Bright A_SpawnItemEx ("RLDeVileDarkUpwardsEffect", frandom(-128,128),frandom(-128,128),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    TNT1 AA 0 A_SpawnItemEx ("RLDeVileDarkUpwardsEffect", frandom(-128,128),frandom(-128,128),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    AVIL U 1 Bright A_SpawnItemEx ("RLDeVileDarkUpwardsEffect", frandom(-128,128),frandom(-128,128),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    TNT1 AA 0 A_SpawnItemEx ("RLDeVileDarkUpwardsEffect", frandom(-128,128),frandom(-128,128),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    AVIL U 1 Bright A_SpawnItemEx ("RLDeVileDarkUpwardsEffect", frandom(-128,128),frandom(-128,128),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    TNT1 AA 0 A_SpawnItemEx ("RLDeVileDarkUpwardsEffect", frandom(-128,128),frandom(-128,128),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    AVIL R 1 Bright A_SpawnItemEx ("RLDeVileDarkUpwardsEffect", frandom(-128,128),frandom(-128,128),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    TNT1 AA 0 A_SpawnItemEx ("RLDeVileDarkUpwardsEffect", frandom(-128,128),frandom(-128,128),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    AVIL R 1 Bright A_SpawnItemEx ("RLDeVileDarkUpwardsEffect", frandom(-128,128),frandom(-128,128),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    TNT1 AA 0 A_SpawnItemEx ("RLDeVileDarkUpwardsEffect", frandom(-128,128),frandom(-128,128),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    AVIL S 1 Bright A_SpawnItemEx ("RLDeVileDarkUpwardsEffect", frandom(-128,128),frandom(-128,128),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    TNT1 AA 0 A_SpawnItemEx ("RLDeVileDarkUpwardsEffect", frandom(-128,128),frandom(-128,128),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    AVIL S 1 Bright A_SpawnItemEx ("RLDeVileDarkUpwardsEffect", frandom(-128,128),frandom(-128,128),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    TNT1 AA 0 A_SpawnItemEx ("RLDeVileDarkUpwardsEffect", frandom(-128,128),frandom(-128,128),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    AVIL S 1 Bright A_SpawnItemEx ("RLDeVileDarkUpwardsEffect", frandom(-128,128),frandom(-128,128),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    TNT1 AA 0 A_SpawnItemEx ("RLDeVileDarkUpwardsEffect", frandom(-128,128),frandom(-128,128),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    AVIL T 1 Bright A_SpawnItemEx ("RLDeVileDarkUpwardsEffect", frandom(-128,128),frandom(-128,128),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    TNT1 AA 0 A_SpawnItemEx ("RLDeVileDarkUpwardsEffect", frandom(-128,128),frandom(-128,128),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    AVIL T 1 Bright A_SpawnItemEx ("RLDeVileDarkUpwardsEffect", frandom(-128,128),frandom(-128,128),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    TNT1 AA 0 A_SpawnItemEx ("RLDeVileDarkUpwardsEffect", frandom(-128,128),frandom(-128,128),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    AVIL T 1 Bright A_SpawnItemEx ("RLDeVileDarkUpwardsEffect", frandom(-128,128),frandom(-128,128),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    TNT1 AA 0 A_SpawnItemEx ("RLDeVileDarkUpwardsEffect", frandom(-128,128),frandom(-128,128),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    AVIL U 1 Bright A_SpawnItemEx ("RLDeVileDarkUpwardsEffect", frandom(-128,128),frandom(-128,128),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    TNT1 AA 0 A_SpawnItemEx ("RLDeVileDarkUpwardsEffect", frandom(-128,128),frandom(-128,128),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    AVIL U 1 Bright A_SpawnItemEx ("RLDeVileDarkUpwardsEffect", frandom(-128,128),frandom(-128,128),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    TNT1 AA 0 A_SpawnItemEx ("RLDeVileDarkUpwardsEffect", frandom(-128,128),frandom(-128,128),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    AVIL U 1 Bright A_SpawnItemEx ("RLDeVileDarkUpwardsEffect", frandom(-128,128),frandom(-128,128),0, 0,0,random(4,8), 0, SXF_NOCHECKPOSITION)
    TNT1 A 0 A_ChangeFlag ("NOPAIN", 0)
    TNT1 A 0 A_Jump(64, "Missile")
    TNT1 A 0 A_MonsterRefire (32, "See")
    Goto DarkAura
	
  PainMain:
    TNT1 A 0 A_SetUserVar("user_antigravtimer", 0)
    TNT1 A 0 A_GiveInventory ("RLDeVileAntiGravAttackCooldown", 1)
    AVIL L 5
    AVIL L 5 A_Pain
    Goto See
	
  Pain.Massacre:
    TNT1 A 0 A_KillChildren
    TNT1 A 0 A_Die
    Goto DeathMain
	
  XDeathMain:
  DeathMain:
    TNT1 A 0 A_GiveInventory ("RLArmageddonArchvileKillIncrementer", 1, AAPTR_PLAYER1) // Used for tallying total kills and bestiary info
    AVIL L 1
    AVIL L 4 A_Scream
    AVIL LL 2 A_CustomRailgun (0, 0, "None", "Red", RGF_SILENT | RGF_FULLBRIGHT, 0, 45, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), 32+frandom(0.0,32.0), 1, 0.2, 0, "None")
	TNT1 AA 0 A_CustomRailgun (0, 0, "None", "Red", RGF_SILENT | RGF_FULLBRIGHT, 0, 45, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), 32+frandom(0.0,32.0), 1, 0.2, 0, "None")
    AVIL LLLL 2 A_CustomRailgun (0, 0, "None", "Red", RGF_SILENT | RGF_FULLBRIGHT, 0, 45, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), 32+frandom(0.0,32.0), 1, 0.2, 0, "None")
	TNT1 AA 0 A_CustomRailgun (0, 0, "None", "Red", RGF_SILENT | RGF_FULLBRIGHT, 0, 45, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), 32+frandom(0.0,32.0), 1, 0.2, 0, "None")
    AVIL L 8
    AVIL M 7
    TNT1 A 0 A_SpawnItemEx ("RLReducedGibber", 0,0,0, VelX,VelY,VelZ, 0, SXF_ABSOLUTEMOMENTUM | SXF_USEBLOODCOLOR | SXF_NOCHECKPOSITION)
    AVIL N 7
    AVIL O 7 A_NoBlocking
    TNT1 A 0 A_SpawnItem ("RLGibThud", 0,0,0,0)
    AVIL P 7
    AVIL Q 0
    "####" "#" 0 A_Jump(256, "DeathEnd")
    Goto DeathEnd
  DeathFrame:
    AVIL Q 0
    "####" "#" 0 A_Jump(256, "DeathEnd")
    Goto DeathEnd
  SimpleXDeathMain:
    TNT1 A 0 A_GiveInventory ("RLArmageddonArchvileKillIncrementer", 1, AAPTR_PLAYER1) // Used for tallying total kills and bestiary info
    AVIL M 7
    AVIL N 7 A_Scream
    AVIL O 7 A_NoBlocking
    AVIL P 7
    AVIL Q 0
    "####" "#" 0 A_Jump(256, "DeathEnd")
    Goto DeathEnd
	
	//Ice
  GenericFreezeDeath:
	"####" "#" 0 A_GiveInventory ("RLArmageddonArchvileKillIncrementer", 1, AAPTR_PLAYER1) // Used for tallying total kills and bestiary info
    "####" "#" 0 A_Jump(256, "GenericFreezeMana")
    Goto GenericFreezeMana
	
  CrushDRLA:
    TNT1 A 0 A_GiveInventory("RLAbominantChargeDisperser", 1)
    TNT1 A 30 A_SpawnItemEx("RLCrushedSmallBlack",0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION)
    "####" "#" 0 A_Jump(256, "CrushEnd")
    Goto CrushEnd
//==============================================================================
//					--	DOOMRL ARSENAL STUFF  --
//==============================================================================
  Pain.RigelBlast:
    TNT1 A 0 A_PlaySound("weapons/dn2gunhit", CHAN_BODY)
    D2F1 Q 2 Bright
    Goto See
  Pain.NeuralStun:
    D2F1 Q 2 Bright
    Goto See
	
  Death.NeuralStun:
    TNT1 A 0
    Goto Death
  Death.RigelBlast:
    TNT1 A 0 A_GiveInventory ("RLDuke2Score", 10000, AAPTR_TARGET)
    TNT1 A 0 A_GiveInventory ("RLArmageddonArchvileKillIncrementer", 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
  XDeath.RigelBlast:
	TNT1 A 0 A_JumpIf(CallACS("DRLA_Gibs"), 1)
	Goto Death.RigelBlast
    TNT1 A 0 A_GiveInventory ("RLDuke2Score", 10000, AAPTR_TARGET)
    TNT1 A 0 A_GiveInventory ("RLArmageddonArchvileKillIncrementer", 1, AAPTR_PLAYER1) // Used for tallying total kills and bestiary info
    TNT1 A 0 A_PlaySound("weapons/dn2gungib", CHAN_BODY)
    TNT1 A 0 A_NoBlocking
    TNT1 A 0 A_SpawnItemEx ("RLDuke2BasicEnemyExplosions", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 0 A_SpawnItemEx ("RLDuke2RedGibber", 0,0,0, VelX,VelY,VelZ, 0, SXF_ABSOLUTEMOMENTUM | SXF_NOCHECKPOSITION)
    TNT1 A 35
    Stop
	
//==============================================================================
//					--	Special Monster Attacks  --
//==============================================================================

//==============================================================================
//					--	Final Doomer Compatibility Stuff  --
//==============================================================================
  DeathXSparkFrame:
    "####" "#" 0 A_JumpIfInTargetInventory("Mana",0,2)
    "####" "#" 0 A_DropItem("MajorManaPod",-1,54)
    AVIL L 0
    "####" "#" 0 A_Jump(256, "DeathXSpark")
	Goto DeathXSpark
	
//==============================================================================
//					--	Guncaster Compatibility Stuff  --
//==============================================================================
	MidasFrame1:
		AVIL L 0 A_SpawnItemEx("Midas_Statue_Vile", 0,0,0, 0,0,0, 0,SXF_TRANSFERPOINTERS|SXF_TRANSFERSPRITEFRAME)
		TNT1 A 0 A_JumpIf(1, "DestroyedEnd")
		Goto DestroyedEnd
	MidasFrame2:
		AVIL L 0 A_SpawnItemEx("Midas_Statue_Vile", 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:
		AVIL L 0 A_SpawnItemEx("Midas_Statue_Vile", 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:
		AVIL L 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
		AVIL L 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
		AVIL L 0 A_ChangeFlag("NOPAIN",1)
		"####" "#" 0 A_SetUserVar("User_LightningLock", User_LightningLock + 10)
		"####" "#" 0 A_Jump(256,"BlueLightningLock")
		Goto BlueLightningLock
  }
}

ACTOR RLDeVileHealing : RLMPCustomFunction
{
  States
  {
  Pickup:
    TNT1 A 0
    TNT1 A 0 A_JumpIf(CheckClass("RLDeVileSix1", AAPTR_DEFAULT, TRUE), "PlsNo")
    TNT1 A 0 A_CheckFlag ("BOSS", "PlsNo")
//	TNT1 A 0 A_SpawnItemEx ("RLResurrectionFire", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION)
	TNT1 AAA 0 A_CustomRailgun (0, 0, "None", "Red", RGF_SILENT | RGF_FULLBRIGHT, 0, 45, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), 32+frandom(0.0,32.0), 1, 0.2, 0, "None")
	TNT1 A 0 HealThing (100)
    Stop
  PlsNo:
	TNT1 A 0
    Stop
  }
}

ACTOR RLDeVileAntiGravField : RLMPCustomFunction
{
  States
  {
  Pickup:
    TNT1 A 0
	TNT1 A 0 ThrustThingZ (0, 12, 0, 0)
	TNT1 A 0 A_FireCustomMissile ("RLDeVileLOSChecker", 0, 0, 0, 0, FPF_NOAUTOAIM, 0)
    Stop
  }
}

ACTOR RLDeVileAntiGravFieldStart : RLMPCustomFunction
{
  States
  {
  Pickup:
    TNT1 A 0
    TNT1 A 0 A_ScaleVelocity (0.1)
    Stop
  }
}

ACTOR RLDeVileUpwardsEffect
{
  RenderStyle Add
  Alpha 0.75
  XScale 0.2
  YScale 0.6
  +NOGRAVITY
  +NOINTERACTION
  +THRUACTORS
  +FORCEYBILLBOARD
  States
  {
  Spawn:
    TNT1 A 0 A_SetScale (frandom(0.1,0.4), frandom(0.5,0.8))
  SpawnLoop:
    TNT1 A 0 A_CheckCeiling ("OhOk")
    AVIX A 1 Bright A_FadeTo  (0, 0.004, 1)
    Loop
  OhOk:
    TNT1 A 0
    Stop
  }
}

ACTOR RLDeVileDarkUpwardsEffect : RLDeVileUpwardsEffect
{
  RenderStyle Stencil
  StencilColor "Black"
}

ACTOR RLDeVileAfterimage : RLDeVileUpwardsEffect
{
  XScale 1.0
  YScale 1.0
  RenderStyle Stencil
  StencilColor "Black"
  Alpha 0.25
  States
  {
  Spawn:
    "####" "#" 1 A_FadeTo  (0, 0.01, 1)
    Loop
  }
}

ACTOR RLDeVileStunShot
{
   Radius 6
   Height 8
   Speed 20
   FastSpeed 24
   Projectile
   +NOTIMEFREEZE
   +THRUGHOST
   +SEEKERMISSILE
   +HITTRACER
   +BLOODSPLATTER
   +FORCEPAIN
   RenderStyle Add
   Alpha 0.98
   Scale 0.5
   DamageType "Plasma"
   Damage (random(4,5) * 2)
   SeeSound "rlmonsters/assaultplasma"
   States
   {
   Spawn:
    TNT1 A 0
    TNT1 A 0 A_JumpIfTracerCloser (200, "Spawn2")
    UNMP B 1 Bright A_SpawnItemEx ("RLDeVileStunShotTrail", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 0 A_JumpIfTracerCloser (200, "Spawn2")
    TNT1 A 0 A_SpawnItemEx ("RLDeVileStunShotTrail", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION)
    UNMP A 1 Bright A_SeekerMissile (4, 4, SMF_PRECISE)
    Goto Spawn
   Spawn2:
    UNMP B 1 Bright A_SpawnItemEx ("RLDeVileStunShotTrail", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 0 A_SpawnItemEx ("RLDeVileStunShotTrail", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION)
    UNMP A 1 Bright A_SeekerMissile (4, 4, SMF_PRECISE)
    TNT1 A 0 A_JumpIfTracerCloser (200, "Spawn2")
    Goto Spawn3
   Spawn3:
    UNMP BA 1 Bright A_SpawnItemEx ("RLDeVileStunShotTrail", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION)
    Goto Spawn3
  Crash:
  XDeath:
    TNT1 A 0 A_GiveInventory ("RLDeVileStunShotDebuff", 1, AAPTR_TRACER)
   Death:
    TNT1 A 0 A_PlaySound ("deathweaver/plasmaimpact", 7, 1, 0, 0.8)
    TNT1 A 0 A_Explode (5, 96, 0)
	TNT1 A 0 A_JumpIf(CallACS("DRLA_MonsterQuake") == 0, 2)
    TNT1 A 0 A_Quake(1, 2, 0, 128, "")
    UNMP GGGGHHHHIIIIJJJJKKKKLLLL 1 Bright A_FadeTo (0, 0.01, 1)
    Stop
   }
}

ACTOR RLDeVileStunShotTrail
{
   Radius 4
   Height 4
   RenderStyle Add
   Alpha 0.95
   Scale 0.5
   +NOGRAVITY
   +NOCLIP
   +NOINTERACTION
   +NOTONAUTOMAP
   +NOTIMEFREEZE
   States
   {
   Spawn:
    UNMP CCCDDDEEE 1 Bright A_FadeTo (0, 0.04, 1)
    Stop
   }
}

ACTOR RLDeVileStunShotDebuff : PowerSpeed
{
   powerup.Duration 45
   speed 0.0
   inventory.icon ""
   +POWERSPEED.NOTRAIL
}

ACTOR RLDeVileCopyAttack
{
  Radius 6
  Height 8
  Speed 14
  FastSpeed 20
  Damage (random(15,30))
  DamageType "Mindrape"
  ProjectileKickback 10000
  Projectile
  +RANDOMIZE
  -NOGRAVITY
  +FORCEXYBILLBOARD
  +MTHRUSPECIES
  +THRUGHOST
  +SEEKERMISSILE
  +FLOORHUGGER
  +DONTREFLECT
  +HITTRACER
  RenderStyle Add
  Alpha 0.98
  Scale 1.0
  SeeSound "deathweaver/plasma"
  
  var int user_ohshitthatsbad;
  States
  {
  Spawn:
    TNT1 A 0
    TNT1 A 0 A_SetUserVar("user_ohshitthatsbad", 4)
    TNT1 A 0 A_PlaySound("darkmarty/seekerloop", CHAN_WEAPON, 1, 1, 1.25)
  SpawnLoop:
	TNT1 A 0 A_Jump(230, 2)
	TNT1 A 0 A_CustomRailgun (0, 0, "None", "Red", RGF_SILENT | RGF_FULLBRIGHT, 0, 45, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), 16+frandom(0.0,32.0), 1, 0.2, 0, "None")
    TNT1 A 0 A_SeekerMissile ((user_ohshitthatsbad / 4), (user_ohshitthatsbad / 4))
    TNT1 A 0 A_SetScale (frandom(0.9,1.1), frandom(0.9,1.1))
    XMRB A 1 Bright A_SpawnItemEx("RLDeVileCopyAttackTrail",0,0,0, 0,0,0, 0, SXF_TRANSFERSCALE | SXF_TRANSFERSPRITEFRAME | SXF_NOCHECKPOSITION)
	TNT1 A 0 A_Jump(230, 2)
	TNT1 A 0 A_CustomRailgun (0, 0, "None", "Red", RGF_SILENT | RGF_FULLBRIGHT, 0, 45, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), 16+frandom(0.0,32.0), 1, 0.2, 0, "None")
    TNT1 A 0 A_SeekerMissile ((user_ohshitthatsbad / 4), (user_ohshitthatsbad / 4))
    TNT1 A 0 A_SetScale (frandom(0.9,1.1), frandom(0.9,1.1))
    XMRB A 1 Bright A_SpawnItemEx("RLDeVileCopyAttackTrail",0,0,0, 0,0,0, 0, SXF_TRANSFERSCALE | SXF_TRANSFERSPRITEFRAME | SXF_NOCHECKPOSITION)
	TNT1 A 0 A_Jump(230, 2)
	TNT1 A 0 A_CustomRailgun (0, 0, "None", "Red", RGF_SILENT | RGF_FULLBRIGHT, 0, 45, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), 16+frandom(0.0,32.0), 1, 0.2, 0, "None")
    TNT1 A 0 A_SeekerMissile ((user_ohshitthatsbad / 4), (user_ohshitthatsbad / 4))
    TNT1 A 0 A_SetScale (frandom(0.9,1.1), frandom(0.9,1.1))
    XMRB A 1 Bright A_SpawnItemEx("RLDeVileCopyAttackTrail",0,0,0, 0,0,0, 0, SXF_TRANSFERSCALE | SXF_TRANSFERSPRITEFRAME | SXF_NOCHECKPOSITION)
	TNT1 A 0 A_Jump(230, 2)
	TNT1 A 0 A_CustomRailgun (0, 0, "None", "Red", RGF_SILENT | RGF_FULLBRIGHT, 0, 45, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), 16+frandom(0.0,32.0), 1, 0.2, 0, "None")
    TNT1 A 0 A_SeekerMissile ((user_ohshitthatsbad / 4), (user_ohshitthatsbad / 4))
    TNT1 A 0 A_SetScale (frandom(0.9,1.1), frandom(0.9,1.1))
    XMRB B 1 Bright A_SpawnItemEx("RLDeVileCopyAttackTrail",0,0,0, 0,0,0, 0, SXF_TRANSFERSCALE | SXF_TRANSFERSPRITEFRAME | SXF_NOCHECKPOSITION)
	TNT1 A 0 A_Jump(230, 2)
	TNT1 A 0 A_CustomRailgun (0, 0, "None", "Red", RGF_SILENT | RGF_FULLBRIGHT, 0, 45, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), 16+frandom(0.0,32.0), 1, 0.2, 0, "None")
    TNT1 A 0 A_SeekerMissile ((user_ohshitthatsbad / 4), (user_ohshitthatsbad / 4))
    TNT1 A 0 A_SetScale (frandom(0.9,1.1), frandom(0.9,1.1))
    XMRB B 1 Bright A_SpawnItemEx("RLDeVileCopyAttackTrail",0,0,0, 0,0,0, 0, SXF_TRANSFERSCALE | SXF_TRANSFERSPRITEFRAME | SXF_NOCHECKPOSITION)
	TNT1 A 0 A_Jump(230, 2)
	TNT1 A 0 A_CustomRailgun (0, 0, "None", "Red", RGF_SILENT | RGF_FULLBRIGHT, 0, 45, "RLCacobyssLightningPuff2", frandom(0,359), frandom(-90,90), 16+frandom(0.0,32.0), 1, 0.2, 0, "None")
    TNT1 A 0 A_SeekerMissile ((user_ohshitthatsbad / 4), (user_ohshitthatsbad / 4))
    TNT1 A 0 A_SetScale (frandom(0.9,1.1), frandom(0.9,1.1))
    XMRB B 1 Bright A_SpawnItemEx("RLDeVileCopyAttackTrail",0,0,0, 0,0,0, 0, SXF_TRANSFERSCALE | SXF_TRANSFERSPRITEFRAME | SXF_NOCHECKPOSITION)
    TNT1 A 0 A_JumpIf (user_ohshitthatsbad >= 80, "SpawnLoop")
    TNT1 A 0 A_SetUserVar("user_ohshitthatsbad", user_ohshitthatsbad + 1)
    Goto SpawnLoop
  Crash:
  XDeath:
	TNT1 A 0 A_GiveInventory ("RLDeVileCopyEffect", 1, AAPTR_TRACER)
  Death:
	TNT1 A 0 A_StopSound (CHAN_WEAPON)
    TNT1 A 0 A_PlaySound ("abominant/pulseimpact", 7, 1, 0, 0.8)
    TNT1 A 0 A_SetScale (2)
    XMRB CDE 4 Bright
    Stop
  }
}

ACTOR RLDeVileCopyAttackTrail
{
  RenderStyle Stencil
  StencilColor "Black"
  Alpha 0.35
  +NOGRAVITY
  +NOCLIP
  +NOINTERACTION
  +THRUACTORS
  +FORCEXYBILLBOARD
  States
  {
  Spawn:
    "####" "#" 0
    "####" "#" 1 Bright A_FadeTo  (0, 0.02, 1)
    Loop
  }
}

ACTOR RLDeVileCopyDelay
{
  +NOGRAVITY
  +NOINTERACTION
  +THRUACTORS
  States
  {
  Spawn:
    TNT1 A 0
	TNT1 AAAA 4 A_SpawnItemEx ("RLResurrectionFire", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION)
	TNT1 A 0 A_JumpIf(CallACS("DRLAMonsterOnlyCheck"), "FullArsenalExperience")
	TNT1 A 0 A_SpawnItemEx ("RLFormerOverwatch", 0,0,0, 0,0,0, 0, SXF_NOPOINTERS | SXF_NOCHECKPOSITION)
	TNT1 A 0 A_SpawnItemEx ("RLResurrectionFire", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION)
    Stop
  FullArsenalExperience:
    TNT1 A 0 A_JumpIfInventory("RLAmmochainPerk", 1, "MarineCopy", AAPTR_MASTER)
    TNT1 A 0 A_JumpIfInventory("RLSharpshooterPerk", 1, "ScoutCopy", AAPTR_MASTER)
    TNT1 A 0 A_JumpIfInventory("RLScavengerPerk", 1, "TechnicianCopy", AAPTR_MASTER)
    TNT1 A 0 A_JumpIfInventory("RLShellshockPerk", 1, "RenegadeCopy", AAPTR_MASTER)
    TNT1 A 0 A_JumpIfInventory("RLFireangelPerk", 1, "DemolitionistCopy", AAPTR_MASTER)
    TNT1 A 0 A_JumpIfInventory("RLBerserkerPerk", 1, "CommandoCopy", AAPTR_MASTER)
	Goto ScoutCopy
  MarineCopy:
	TNT1 A 0 A_SpawnItemEx ("RLCorruptedMarine1", 0,0,0, 0,0,0, 0, SXF_NOPOINTERS | SXF_NOCHECKPOSITION)
	TNT1 A 0 A_SpawnItemEx ("RLResurrectionFire", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION)
    Stop
  ScoutCopy:
	TNT1 A 0 A_SpawnItemEx ("RLCorruptedScout1", 0,0,0, 0,0,0, 0, SXF_NOPOINTERS | SXF_NOCHECKPOSITION)
	TNT1 A 0 A_SpawnItemEx ("RLResurrectionFire", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION)
    Stop
  TechnicianCopy:
	TNT1 A 0 A_SpawnItemEx ("RLCorruptedTechnician1", 0,0,0, 0,0,0, 0, SXF_NOPOINTERS | SXF_NOCHECKPOSITION)
	TNT1 A 0 A_SpawnItemEx ("RLResurrectionFire", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION)
    Stop
  RenegadeCopy:
	TNT1 A 0 A_SpawnItemEx ("RLCorruptedRenegade1", 0,0,0, 0,0,0, 0, SXF_NOPOINTERS | SXF_NOCHECKPOSITION)
	TNT1 A 0 A_SpawnItemEx ("RLResurrectionFire", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION)
    Stop
  DemolitionistCopy:
	TNT1 A 0 A_SpawnItemEx ("RLCorruptedDemolitionist1", 0,0,0, 0,0,0, 0, SXF_NOPOINTERS | SXF_NOCHECKPOSITION)
	TNT1 A 0 A_SpawnItemEx ("RLResurrectionFire", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION)
    Stop
  CommandoCopy:
	TNT1 A 0 A_SpawnItemEx ("RLCorruptedScout1", 0,0,0, 0,0,0, 0, SXF_NOPOINTERS | SXF_NOCHECKPOSITION)
	TNT1 A 0 A_SpawnItemEx ("RLResurrectionFire", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION)
    Stop
  }
}

ACTOR RLDeVileCopyEffect : RLMPCustomFunction
{
  States
  {
  Pickup:
    TNT1 A 0
    TNT1 A 0 A_JumpIf(CheckClass("PlayerPawn", AAPTR_DEFAULT, TRUE), 1)
	Stop
	TNT1 A 0 A_SpawnItemEx ("RLDeVileCopyDelay", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION | SXF_SETMASTER)
	Stop
  }
}

ACTOR RLDeVileSix1
{
  Radius 12
  Height 17
  Speed 10
  Health 222
  RenderStyle Add
  BloodType "RLDeVileNumberSpark"
  Alpha 1
  Scale 0.8
  SeeSound ""
  DeathSound "caco/shotx"
  Species "RLArchvile"
  RadiusDamageFactor 0.1
  DamageFactor "Normal", 0.5
  DamageFactor "Melee", 0.5
  DamageFactor "Bullet", 0.5
  DamageFactor "Fire", 0.5
  DamageFactor "Plasma", 0.5
  DamageFactor "Unholy", 0
  DamageFactor "Holy", 3
  DamageFactor "Crush", 10
  DamageFactor "Extinguishing", 3 // LegenDoom Damagetype
  Tag "Mysterious Six"
  Obituary "%o fell before the number of the beast."
  +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_angle;
  States
  {
  Spawn:
    A666 A 0 Bright
    "####" "#" 0 A_SetUserVar("user_angle", 0) // Each number spawns at a different angle so they rotate nicely.
    "####" "#" 0 A_Jump (256, "SpawnA")
	Goto SpawnA
  SpawnA:
    A666 A 1 Bright A_Warp(AAPTR_MASTER, 28, 0, 60, user_angle, WARPF_ABSOLUTEANGLE | WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    "####" "#" 0 A_JumpIfInventory("RLDeVileAttack", 1, 3)
    "####" "#" 0 A_SetUserVar("user_angle", user_angle + 6)
    "####" "#" 0 A_Jump (256, 2)
    "####" "#" 0 A_SetUserVar("user_angle", user_angle + 12)
    "####" "#" 0 A_SpawnItemEx ("RLDeVileSixTrail", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERSPRITEFRAME) 
	"####" "#" 0 A_CheckFlag ("ISMONSTER", "SpawnB", AAPTR_MASTER)
	Goto Death.Massacre
  SpawnB:
    A666 A 1 Bright A_Warp(AAPTR_MASTER, 28, 0, 60, user_angle, WARPF_ABSOLUTEANGLE | WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    "####" "#" 0 A_JumpIfInventory("RLDeVileAttack", 1, 3)
    "####" "#" 0 A_SetUserVar("user_angle", user_angle + 6)
    "####" "#" 0 A_Jump (256, 2)
    "####" "#" 0 A_SetUserVar("user_angle", user_angle + 12)
    "####" "#" 0 A_SpawnItemEx ("RLDeVileSixTrail", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERSPRITEFRAME) 
	"####" "#" 0 A_CheckFlag ("ISMONSTER", "SpawnC", AAPTR_MASTER)
	Goto Death.Massacre
  SpawnC:
    A666 A 1 Bright A_Warp(AAPTR_MASTER, 28, 0, 60, user_angle, WARPF_ABSOLUTEANGLE | WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    "####" "#" 0 A_JumpIfInventory("RLDeVileAttack", 1, 3)
    "####" "#" 0 A_SetUserVar("user_angle", user_angle + 6)
    "####" "#" 0 A_Jump (256, 2)
    "####" "#" 0 A_SetUserVar("user_angle", user_angle + 12)
    "####" "#" 0 A_SpawnItemEx ("RLDeVileSixTrail", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERSPRITEFRAME) 
	"####" "#" 0 A_CheckFlag ("ISMONSTER", "SpawnD", AAPTR_MASTER)
	Goto Death.Massacre
  SpawnD:
    A666 B 1 Bright A_Warp(AAPTR_MASTER, 28, 0, 60, user_angle, WARPF_ABSOLUTEANGLE | WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    "####" "#" 0 A_JumpIfInventory("RLDeVileAttack", 1, 3)
    "####" "#" 0 A_SetUserVar("user_angle", user_angle + 6)
    "####" "#" 0 A_Jump (256, 2)
    "####" "#" 0 A_SetUserVar("user_angle", user_angle + 12)
    "####" "#" 0 A_SpawnItemEx ("RLDeVileSixTrail", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERSPRITEFRAME) 
	"####" "#" 0 A_CheckFlag ("ISMONSTER", "SpawnE", AAPTR_MASTER)
	Goto Death.Massacre
  SpawnE:
    A666 B 1 Bright A_Warp(AAPTR_MASTER, 28, 0, 60, user_angle, WARPF_ABSOLUTEANGLE | WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    "####" "#" 0 A_JumpIfInventory("RLDeVileAttack", 1, 3)
    "####" "#" 0 A_SetUserVar("user_angle", user_angle + 6)
    "####" "#" 0 A_Jump (256, 2)
    "####" "#" 0 A_SetUserVar("user_angle", user_angle + 12)
    "####" "#" 0 A_SpawnItemEx ("RLDeVileSixTrail", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERSPRITEFRAME) 
	"####" "#" 0 A_CheckFlag ("ISMONSTER", "SpawnF", AAPTR_MASTER)
	Goto Death.Massacre
  SpawnF:
    A666 C 1 Bright A_Warp(AAPTR_MASTER, 28, 0, 60, user_angle, WARPF_ABSOLUTEANGLE | WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    "####" "#" 0 A_JumpIfInventory("RLDeVileAttack", 1, 3)
    "####" "#" 0 A_SetUserVar("user_angle", user_angle + 6)
    "####" "#" 0 A_Jump (256, 2)
    "####" "#" 0 A_SetUserVar("user_angle", user_angle + 12)
    "####" "#" 0 A_SpawnItemEx ("RLDeVileSixTrail", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERSPRITEFRAME) 
	"####" "#" 0 A_CheckFlag ("ISMONSTER", "SpawnG", AAPTR_MASTER)
	Goto Death.Massacre
  SpawnG:
    A666 C 1 Bright A_Warp(AAPTR_MASTER, 28, 0, 60, user_angle, WARPF_ABSOLUTEANGLE | WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    "####" "#" 0 A_JumpIfInventory("RLDeVileAttack", 1, 3)
    "####" "#" 0 A_SetUserVar("user_angle", user_angle + 6)
    "####" "#" 0 A_Jump (256, 2)
    "####" "#" 0 A_SetUserVar("user_angle", user_angle + 12)
    "####" "#" 0 A_SpawnItemEx ("RLDeVileSixTrail", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERSPRITEFRAME) 
	"####" "#" 0 A_CheckFlag ("ISMONSTER", "SpawnH", AAPTR_MASTER)
	Goto Death.Massacre
  SpawnH:
    A666 C 1 Bright A_Warp(AAPTR_MASTER, 28, 0, 60, user_angle, WARPF_ABSOLUTEANGLE | WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    "####" "#" 0 A_JumpIfInventory("RLDeVileAttack", 1, 3)
    "####" "#" 0 A_SetUserVar("user_angle", user_angle + 6)
    "####" "#" 0 A_Jump (256, 2)
    "####" "#" 0 A_SetUserVar("user_angle", user_angle + 12)
    "####" "#" 0 A_SpawnItemEx ("RLDeVileSixTrail", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERSPRITEFRAME) 
	"####" "#" 0 A_CheckFlag ("ISMONSTER", "SpawnI", AAPTR_MASTER)
	Goto Death.Massacre
  SpawnI:
    A666 B 1 Bright A_Warp(AAPTR_MASTER, 28, 0, 60, user_angle, WARPF_ABSOLUTEANGLE | WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    "####" "#" 0 A_JumpIfInventory("RLDeVileAttack", 1, 3)
    "####" "#" 0 A_SetUserVar("user_angle", user_angle + 6)
    "####" "#" 0 A_Jump (256, 2)
    "####" "#" 0 A_SetUserVar("user_angle", user_angle + 12)
    "####" "#" 0 A_SpawnItemEx ("RLDeVileSixTrail", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERSPRITEFRAME) 
	"####" "#" 0 A_CheckFlag ("ISMONSTER", "SpawnJ", AAPTR_MASTER)
	Goto Death.Massacre
  SpawnJ:
    A666 B 1 Bright A_Warp(AAPTR_MASTER, 28, 0, 60, user_angle, WARPF_ABSOLUTEANGLE | WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    "####" "#" 0 A_JumpIfInventory("RLDeVileAttack", 1, 3)
    "####" "#" 0 A_SetUserVar("user_angle", user_angle + 6)
    "####" "#" 0 A_Jump (256, 2)
    "####" "#" 0 A_SetUserVar("user_angle", user_angle + 12)
    "####" "#" 0 A_SpawnItemEx ("RLDeVileSixTrail", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERSPRITEFRAME) 
	"####" "#" 0 A_CheckFlag ("ISMONSTER", "SpawnA", AAPTR_MASTER)
	Goto Death.Massacre
	
  Death:
    "####" "#" 0 A_ChangeFlag ("NOGRAVITY", 1)
    "####" "#" 0 A_Stop
    "####" "#" 0 A_SetScale (0.9)
    "####" "#" 0 A_GiveInventory("RLDeVileNumberDead", 1, AAPTR_MASTER)
    "####" "#" 0 A_DamageMaster(222, "DevileDamage", DMSS_FOILINVUL | DMSS_NOFACTOR)
    "####" "#" 0 A_JumpIfInventory ("RLDeVileNumberDead", 3, "MakeSuperSureItsMcFuckingDead", AAPTR_MASTER)
	Goto DeathAnimation
  DeathAnimation:
    "####" "#" 0 A_PlaySound("weapons/bfgx", CHAN_BODY, 1, 0, 0.6)
    A666 DEDEDEFFGGHH 1 Bright
    Stop
  MakeSuperSureItsMcFuckingDead:
    "####" "#" 0 A_KillMaster("DevileDamage", KILS_FOILINVUL)
	Goto DeathAnimation
  MakeSuperSureItsMcFuckingDeadSecretly:
    "####" "#" 0 A_KillMaster("DevileDamage", KILS_FOILINVUL)
    "####" "#" 0 A_NoBlocking
    "####" "#" 0 A_Stop
    Stop
//==============================================================================
//					--	DOOMRL ARSENAL STUFF  --
//==============================================================================
  Death.Massacre:
    "####" "#" 0 A_GiveInventory("RLDeVileNumberDead", 1, AAPTR_MASTER)
    "####" "#" 0 A_DamageMaster(222, "DevileDamage", DMSS_FOILINVUL | DMSS_NOFACTOR)
    "####" "#" 0 A_JumpIfInventory ("RLDeVileNumberDead", 3, "MakeSuperSureItsMcFuckingDeadSecretly", AAPTR_MASTER)
    "####" "#" 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("RLDeVileNumberDead", 1, AAPTR_MASTER)
    "####" "#" 0 A_DamageMaster(222, "DevileDamage", DMSS_FOILINVUL | DMSS_NOFACTOR)
    "####" "#" 0 A_SpawnItemEx ("RLDuke2MediumExplosion", 0,0,8, 0,0,0, 0, SXF_NOCHECKPOSITION)
    "####" "#" 0 A_JumpIfInventory ("RLDeVileNumberDead", 3, "MakeSuperSureItsMcFuckingDeadSecretly", AAPTR_MASTER)
    TNT1 A 35
    Stop
  }
}

ACTOR RLDeVileSix2 : RLDeVileSix1
{
  States
  {
  Spawn:
    A666 A 0 Bright
    "####" "#" 0 A_SetUserVar("user_angle", 120) // Each number spawns at a different angle so they rotate nicely.
    "####" "#" 0 A_Jump (256, "SpawnA")
	Goto SpawnA
  }
}

ACTOR RLDeVileSix3 : RLDeVileSix1
{
  States
  {
  Spawn:
    A666 A 0 Bright
    "####" "#" 0 A_SetUserVar("user_angle", 240) // Each number spawns at a different angle so they rotate nicely.
    "####" "#" 0 A_Jump (256, "SpawnA")
	Goto SpawnA
  }
}

ACTOR RLDeVileSixTrail
{
   Radius 4
   Height 4
   RenderStyle Add
   Alpha 0.15
   Scale 0.8
   +NOGRAVITY
   +NOCLIP
   +NOINTERACTION
   +NOTONAUTOMAP
   +NOTIMEFREEZE
   States
   {
   Spawn:
    "####" "#" 1 Bright A_FadeTo (0, 0.05, 1)
    Loop
   }
}

actor RLDeVileNumberSpark
{
    RenderStyle Add
    Alpha 0.95
	VSpeed 0
    +NOINTERACTION
    States
    {
    Spawn:
		TNT1 A 0
		TNT1 A 0 A_Stop
		TNT1 A 0 A_SetScale (frandom(0.4,0.95))
		TNT1 A 0 A_Jump (256, "Spawn1", "Spawn2")
    Spawn1:
        UNPF AAABBBEEE 1 Bright A_SetScale (ScaleX-0.04)
        stop
    Spawn2:
        UNPF CCCDDDEEE 1 Bright A_SetScale (ScaleX-0.04)
        stop
    }
}

ACTOR RLDeVileNumberDead : RLMPCustomFunction
{
  States
  {
  Pickup:
    TNT1 A 0
    TNT1 A 0 A_GiveInventory("RLDeVileNumberDeadCount", 1)
    TNT1 A 0 A_JumpIfInventory ("RLDeVileNumberDeadCount", 3, "TIMETODIEJC")
    Stop
  TIMETODIEJC:
    TNT1 A 0 A_ChangeFlag ("INVULNERABLE", 0)
    TNT1 A 0 A_Die
    Stop
  }
}

Actor RLDeVileNumberDeadCount : Inventory
{
inventory.maxamount 3
   +INVENTORY.UNTOSSABLE
}

ACTOR RLDeVileAntiGravAttackCooldown : Powerup
{
	Powerup.Duration -15
   +INVENTORY.UNTOSSABLE
}

ACTOR RLDeVileCopyAttackCooldown : Powerup
{
	Powerup.Duration -12
   +INVENTORY.UNTOSSABLE
}

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

ACTOR RLDeVileMassResurrection : RLMPCustomFunction
{
  States
  {
  Pickup:
    TNT1 A 0
    TNT1 A 0 A_GiveInventory("PowerRLCorruptionContextEffect", 1)
    TNT1 A 0 Thing_Raise (0)
    Stop
  }
}

ACTOR PowerRLCorruptionContextEffect : Powerup // This effect is used to resurrect dead player bodies
{
	Powerup.Duration 35
   +INVENTORY.UNTOSSABLE
}

ACTOR RLDeVileLOSChecker : RLPlayerLOSChecker
{
   States
   {
   Death:
    TNT1 A 0 A_JumpIf(CheckClass("RLArmageddonArchvile", AAPTR_TRACER), "GiveThingy")
    Stop
   GiveThingy:
    TNT1 A 0 A_GiveInventory ("RLDeVileSightRetaliation", 1, AAPTR_TARGET)
    Stop
   }
}

ACTOR RLDeVileSightRetaliation : RLMPCustomFunction
{
  States
  {
  Pickup:
    TNT1 A 0 A_JumpIfInventory ("RLDeVileSightDamageCooldown", 1, "Cooldown")
    TNT1 A 0 A_GiveInventory ("RLDeVileSightDamageCooldown", 1)
    TNT1 A 0 A_DamageSelf (2, "MindRape", DMSS_AFFECTARMOR)
	TNT1 A 0 A_SetBlend ("00 00 00", 0.8, 12)
    Stop
  Cooldown:
    TNT1 A 0
    Stop
  }
}

ACTOR RLDeVileSightDamageCooldown : Powerup
{
	Powerup.Duration 12
}

ACTOR RLCCArmageddonArchvile : RLArmageddonArchvile
{
  +TOUCHY
  States
  {
  See:
    AVIL AABBCCDDEEFF 2
    Loop
  Missile:
    AVIL G 4 Bright
    AVIL V 1
    AVIL G 4 Bright
    AVIL V 1
    AVIL G 4 Bright
    AVIL V 1
    AVIL HI 4 Bright
    AVIL J 8 Bright
    AVIL K 12
    Goto See
  Melee:
    AVIL RSTURSTURSTU 3 Bright
    Goto See
  Death:
    AVIL M 7
    AVIL N 7 A_Scream
    AVIL O 7 A_NoBlocking
    AVIL P 7
    AVIL Q -1
  }
}
