
//==============================================================================
//		BASE MONSTER
//==============================================================================

ACTOR RLMonster
{
  Health 20
  Radius 20
  Height 56
  Speed 8
  PainChance 200
  Monster
  BloodType "RLNashGore_Blood", "RLMNullActor", "RLNashGore_SlashBlood"
  DamageFactor "Crush", 10
  CrushPainSound "rlmonsters/crush"
  Obituary "%o was killed by something nasty."
  Tag "Demonic Entity"
  
  +DONTHARMSPECIES
  +FLOORCLIP
  +ALLOWPAIN
  
  // Guncaster Flinchy Stuff
  // Guaranteed Effects
  PainChance SuperCloseCombat, 256
  PainChance SuperShoelaces, 256
  PainChance SuperMidasCloseCombat, 256
  PainChance SuperMidasShoelaces, 256
  PainChance Acid, 256
  PainChance Meteorfist, 256
  
  var int user_dn2bossexplosiontimer;
   
   // Guncaster uservars
  var int User_DeathByFire;
  var int User_DeathByTiberium;
  var int User_DeathByBlueTiberium;
  var int User_LightningLock;
  States
  {
  Spawn:
//    "####" "#" 0 A_Log("base spawn")
    "####" "#" Random(9,10) A_JumpIf(1, "Spawn")
    Loop
  See:
//    "####" "#" 0 A_Log("base see")
    "####" "#" 5 A_JumpIf(1, "See")
    Loop
	
  Pain:
//    "####" "#" 0 A_Log("base pain")
    "####" "#" 0 A_JumpIf(1, "PainMain")
    Goto PainMain
  PainMain:
//    "####" "#" 0 A_Log("base painmain")
    "####" "#" 0 A_JumpIf(1, "See")
    Goto See
	
  Death:
    "####" "#" 0 A_StopSound(5)
    "####" "#" 0 A_StopSound(6)
    "####" "#" 0 A_StopSound(7)
    "####" "#" 0 A_StopSound(CHAN_ITEM)
    "####" "#" 0 A_StopSound(CHAN_WEAPON)
    "####" "#" 0 A_JumpIfInTargetInventory("Mana",0,2)
    "####" "#" 0 A_DropItem("MinorManaPod",-1,54)
    "####" "#" 0 A_JumpIf(1, "DeathMain")
    Goto DeathMain
  DeathMain:
    "####" "#" 0 A_JumpIf(1, "DeathEnd")
    Goto DeathEnd
  Death.Massacre:
    "####" "#" 0 A_StopSound(5)
    "####" "#" 0 A_StopSound(6)
    "####" "#" 0 A_StopSound(7)
    "####" "#" 0 A_StopSound(CHAN_ITEM)
    "####" "#" 0 A_StopSound(CHAN_WEAPON)
    "####" "#" 0 A_NoBlocking
    "####" "#" 0 A_Stop
    "####" "#" 0 A_JumpIfInventory ("DRPGDRLASummonedMonsterToken", 1, "TeleportEscape")
    "####" "#" 0 ThrustThingZ (0, 20, 0, 0)
    "####" "#" 0 A_JumpIf(1, "DeathFrame")
    Goto DeathFrame
  DeathFrame:
    "####" "#" 0
    "####" "#" 0 A_JumpIf(1, "DeathEnd")
    Goto DeathEnd
	
  DeathEnd:  // Pillow: Death corpseblast state.
	"####" "#" 0 A_JumpIf(CallACS("GnuCustardCheck"), "DeathEndLoop") // Check for Guncaster
    "####" "#" 0 A_JumpIf(1, "DRLADeathEndLoop")
	Goto DRLADeathEndLoop
  DeathEndLoop:
    "####" "#" 0 A_JumpIfInventory("CorpseTrigger2",1,"CorpseBlastB")
    "####" "#" 1 CanRaise A_JumpIfInventory("CorpseTrigger",1,"CorpseBlastA")
    "####" "#" 0 A_JumpIf(User_DeathByFire == 1, "FireMelt")
    "####" "#" 0 A_JumpIf(User_DeathByTiberium == 1, "TiberiumMelt")
    "####" "#" 0 A_JumpIf(User_DeathByBlueTiberium == 1, "BlueTiberiumMelt")
    Loop
  DeathEndNoRevive:  // Pillow: No revival allowed version
	"####" "#" 0 A_JumpIf(CallACS("GnuCustardCheck"), "DeathEndNoReviveLoop") // Check for Guncaster
    "####" "#" 0 A_JumpIf(1, "DRLADeathEndNoReviveLoop")
	Goto DRLADeathEndNoReviveLoop
  DeathEndNoReviveLoop:
    "####" "#" 0 A_JumpIfInventory("CorpseTrigger2",1,"CorpseBlastB")
    "####" "#" 1 A_JumpIfInventory("CorpseTrigger",1,"CorpseBlastA")
    "####" "#" 0 A_JumpIf(User_DeathByFire == 1, "FireMelt")
    "####" "#" 0 A_JumpIf(User_DeathByTiberium == 1, "TiberiumMelt")
    "####" "#" 0 A_JumpIf(User_DeathByBlueTiberium == 1, "BlueTiberiumMelt")
    Loop
	
  DRLADeathEndLoop:
    "####" "#" 1 CanRaise
    "####" "#" 0 A_JumpIf(User_DeathByFire == 1, "FireMelt")
//    "####" "#" 0 A_JumpIf(User_DeathByTiberium == 1, "TiberiumMelt")
//    "####" "#" 0 A_JumpIf(User_DeathByBlueTiberium == 1, "BlueTiberiumMelt")
    Loop
  DRLADeathEndNoReviveLoop:
    "####" "#" 1
    "####" "#" 0 A_JumpIf(User_DeathByFire == 1, "FireMelt")
//    "####" "#" 0 A_JumpIf(User_DeathByTiberium == 1, "TiberiumMelt")
//    "####" "#" 0 A_JumpIf(User_DeathByBlueTiberium == 1, "BlueTiberiumMelt")
    Loop
	
  XDeath.MeleeKick:
  XDeath.Melee:
    "####" "#" 0 A_GiveToTarget ("RLBerserkerBloodlustBonusCheck", 1)
	Goto XDeath
  XDeath:
    "####" "#" 0 A_StopSound(5)
    "####" "#" 0 A_StopSound(6)
    "####" "#" 0 A_StopSound(7)
    "####" "#" 0 A_StopSound(CHAN_ITEM)
    "####" "#" 0 A_StopSound(CHAN_WEAPON)
    "####" "#" 0 A_JumpIfInTargetInventory("Mana",0,2)
    "####" "#" 0 A_DropItem("MinorManaPod",-1,54)
	"####" "#" 0 A_JumpIf(CallACS("LambdaCheck"), "HalfLifeKersplat") // Check for Lambda
    "####" "#" 0 A_JumpIf(1, "XDeathMain")
    Goto XDeathMain
  XDeathMain:
    "####" "#" 0 A_JumpIf(1, "DeathMain")
    Goto DeathMain // To make sure it doesn't fuck up things that don't have XDeaths defined
	
  XDeathEnd:  // Pillow: XDeath corpseblast state.
	"####" "#" 0 A_JumpIf(CallACS("GnuCustardCheck"), "XDeathEndLoop") // Check for Guncaster
    "####" "#" 0 A_JumpIf(1, "DRLAXDeathEndLoop")
	Goto DRLAXDeathEndLoop
  XDeathEndLoop:
    "####" "#" 0 A_JumpIfInventory("CorpseTrigger2",1,"CorpseBlastC")
    "####" "#" 1 CanRaise A_JumpIfInventory("CorpseTrigger",1,"CorpseBlastA")
    Loop
  XDeathEndNoRevive:  // No revival allowed version
	"####" "#" 0 A_JumpIf(CallACS("GnuCustardCheck"), "XDeathEndNoReviveLoop") // Check for Guncaster
    "####" "#" 0 A_JumpIf(1, "DRLAXDeathEndNoReviveLoop")
	Goto DRLAXDeathEndNoReviveLoop
  XDeathEndNoReviveLoop:
    "####" "#" 0 A_JumpIfInventory("CorpseTrigger2",1,"CorpseBlastC")
    "####" "#" 1 A_JumpIfInventory("CorpseTrigger",1,"CorpseBlastA")
    Loop
	
  DRLAXDeathEndLoop:
    "####" "#" 1 CanRaise
    Loop
  DRLAXDeathEndNoReviveLoop:
    "####" "#" 1
    Loop
	
  DestroyedEnd:  // State used for enemies that leave no corpse
    TNT1 A 1
    Loop
	
  Death.Barrel: // Makes monsters not gib all over the place if they're far away
    "####" "#" 0 A_CheckRange (1500, "SimpleXDeath")
    Goto Death
  XDeath.Barrel:
    "####" "#" 0 A_CheckRange (1500, "SimpleXDeath")
    Goto XDeath
  SimpleXDeath:
    "####" "#" 0 A_StopSound(5)
    "####" "#" 0 A_JumpIf(1, "SimpleXDeathMain")
    Goto SimpleXDeathMain
  SimpleXDeathMain:
    "####" "#" 0 A_JumpIf(1, "Death")
    Goto Death
	
		
	//Ice
	GenericFreezeDeath:
    "####" "#" 0 A_JumpIf(1, "GenericFreezeMana")
    Goto GenericFreezeMana
	GenericFreezeMana:
		"####" "#" 0 A_JumpIfInTargetInventory("Mana",0,2)
		"####" "#" 0 A_DropItem("MinorManaPod",-1,54)
		"####" "#" 0 A_JumpIf(1,"GenericFreezeDeathMain")
		Goto GenericFreezeDeathMain
	GenericFreezeDeathMain:
		"####" "#" 0 A_StopSound(5)
		"####" "#" 0 A_StopSound(6)
		"####" "#" 0 A_StopSound(7)
		"####" "#" 0 A_StopSound(CHAN_ITEM)
		"####" "#" 0 A_StopSound(CHAN_WEAPON)
		"####" "#" 5 A_GenericFreezeDeath
		"####" "#" 0 A_JumpIfInventory("ChillgraspTrigger",1,2)
		"####" "#" 0 A_JumpIf(1,2)
		"####" "#" 0 A_SpawnItemEx("ChillgraspBlast",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
		"####" "#" 1 A_FreezeDeathChunks
		Wait
		
  Crush:
    "####" "#" 0 A_StopSound(5)
    "####" "#" 0 A_StopSound(6)
    "####" "#" 0 A_StopSound(7)
    "####" "#" 0 A_StopSound(CHAN_ITEM)
    "####" "#" 0 A_StopSound(CHAN_WEAPON)
//	"####" "#" 0 A_JumpIf(CallACS("GnuCustardCheck"), "CrushCaster") // Check for Guncaster
	"####" "#" 0 A_JumpIf(CallACS("LambdaCheck"), "HalfLifeKersplat") // Check for Lambda
    "####" "#" 0 A_JumpIf(1, "CrushDRLA")
    Goto CrushDRLA
  CrushDRLA:
    "####" "#" 0 A_SpawnItemEx("RLCrushedSmall",0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION)
    "####" "#" 0 A_JumpIf(1, "CrushEnd")
    Goto CrushEnd
  CrushCaster:
	"####" "#########" 0 A_CustomMissile ("BloodTr255", 0, 0, random (0, 360), 2, random (0, 360))
	"####" "#" 0 A_PlaySound("misc/xdeath4")
	POL5 AAAAAA 1 A_CustomMissile ("CeilBloodLauncherLong", 0, 0, random (0, 360), 2, random (50, 130))
	"####" "#" 0 A_CustomMissile ("GiantBloodSpot", 4, 0, random (0, 360), 2, random (0, 160))
//	POL5 A -1
//	Stop
    "####" "#" 0 A_JumpIf(1, "CrushEnd")
    Goto CrushEnd
  CrushEnd:
	"####" "#" 0 A_JumpIf(CallACS("GnuCustardCheck"), "CrushEndLoop") // Check for Guncaster
    "####" "#" 0 A_JumpIf(1, "DRLACrushEndLoop")
	Goto DRLACrushEndLoop
  CrushEndLoop:
    "####" "#" 0 A_JumpIfInventory("CorpseTrigger2",1,"CorpseBlastC")
    "####" "#" 1 A_JumpIfInventory("CorpseTrigger",1,"CorpseBlastA")
    Loop
  DRLACrushEndLoop:
    "####" "#" 1
    Loop
	
  TeleportEscape: // Summoned DRPG monsters will teleport out if you kill them with the console
    "####" "#" 0 A_SpawnItemEx ("TeleportFog", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION)
    Stop

//-----------------------------------------------------------------------------------------------------------------------------------
//==============================================================================
//		Base monster attack states are defined here, to cut down on repetition
//==============================================================================

  Missile: // Checks for DRPG, and gets any aura tokens available
//    "####" "#" 0 A_Log("base missile")
    "####" "#" 0 A_JumpIf(CallACS("DRPGCheck"), "MissileDRPGCheck")
    "####" "#" 0 A_JumpIf(1, "MissileHatredList")
	Goto MissileHatredList
  Melee: // Checks for DRPG, and gets any aura tokens available
//    "####" "#" 0 A_Log("base melee")
    "####" "#" 0 A_JumpIf(CallACS("DRPGCheck"), "MeleeDRPGCheck")
    "####" "#" 0 A_JumpIf(1, "MeleeHatredList")
	Goto MeleeHatredList

//==============================================================================
//		Groups of monster enemies are defined here
//==============================================================================
	// These states must be overridden in any monster that hates other monster types
  MissileHatredList:
    "####" "#" 0 A_JumpIf(1, "MissileFriendlyCheck")
	Goto MissileFriendlyCheck
  MeleeHatredList:
    "####" "#" 0 A_JumpIf(1, "MeleeFriendlyCheck")
	Goto MeleeFriendlyCheck
  
//==============================================================================
//		Groups of monster friendliness are defined here
//==============================================================================
	// These states must be overridden in any monster that hates other monster types
  MissileFriendlyCheck:
    "####" "#" 0 A_JumpIf(1, "MissileSpecialAttackCheck")
	Goto MissileSpecialAttackCheck
  RepeatFriendlyCheck:
    "####" "#" 0 A_JumpIf(1, "RepeatSpecialAttackCheck")
	Goto RepeatSpecialAttackCheck
  MeleeFriendlyCheck:
    "####" "#" 0 A_JumpIf(1, "MeleeSpecialAttackCheck")
	Goto MeleeSpecialAttackCheck
	
  FriendlyTarget:
    "####" "#" 0 A_ClearTarget
    "####" "#" 0// A_GiveInventory ("RLMonsterRetargeting", 1)
    "####" "#" 0 A_JumpIf(1, "Spawn")
    Goto Spawn
  ClearTarget:
    "####" "#" 0 A_ClearTarget
    "####" "#" 0 A_LookEx (LOF_NOSEESOUND, 0, 0, 0, 360, "See")
    "####" "#" 0 A_JumpIf(1, "Spawn")
    Goto Spawn
	
//=============================================================================================================================
	// Only Monsters
  MissileSpecialAttackCheck: // Check for any alternate attack methods it should use
	"####" "#" 0 A_JumpIf(CallACS("DRLAMonsterOnlyCheck"), "ArsenalMissileCheck") // Check for full DRLA
    "####" "#" 0 A_JumpIfInventory("LDLegendaryMonsterTransformed", 1, "LegendaryMissileAttack") // LegenDoom legendary monster
    "####" "#" 0 A_JumpIf(1, "MissileProper")
	Goto MissileProper
  RepeatSpecialAttackCheck: // Check for any alternate attack methods it should use
	"####" "#" 0 A_JumpIf(CallACS("DRLAMonsterOnlyCheck"), "ArsenalRepeatCheck") // Check for full DRLA
    "####" "#" 0 A_JumpIfInventory("LDLegendaryMonsterTransformed", 1, "LegendaryRepeatAttack") // LegenDoom legendary monster
    "####" "#" 0 A_JumpIf(1, "RepeatProper")
	Goto RepeatProper
  MeleeSpecialAttackCheck: // Check for any alternate attack methods it should use
	"####" "#" 0 A_JumpIf(CallACS("DRLAMonsterOnlyCheck"), "ArsenalMeleeCheck") // Check for full DRLA
    "####" "#" 0 A_JumpIfInventory("LDLegendaryMonsterTransformed", 1, "LegendaryMeleeAttack") // LegenDoom legendary monster
    "####" "#" 0 A_JumpIf(1, "MeleeProper")
	Goto MeleeProper

//=============================================================================================================================
	// Arsenal and Monster
  ArsenalMissileCheck:
//	"####" "#" 0 A_JumpIf(CallACS("DRLA_specialstarts") == 2, "Duke2LaserAttack")
    "####" "#" 0 A_JumpIfInventory("DRPGShadowAuraToken", 1, "ShadowAuraMissileAttack") // DRPG Shadow Aura
    "####" "#" 0 A_JumpIfInventory("LDLegendaryMonsterTransformed", 1, "LegendaryMissileAttack") // LegenDoom legendary monster
    "####" "#" 0 A_JumpIf(1, "MissileProper")
	Goto MissileProper
  ArsenalRepeatCheck:
//	"####" "#" 0 A_JumpIf(CallACS("DRLA_specialstarts") == 2, "Duke2LaserRepeat")
    "####" "#" 0 A_JumpIfInventory("DRPGShadowAuraToken", 1, "ShadowAuraRepeatAttack") // DRPG Shadow Aura
    "####" "#" 0 A_JumpIfInventory("LDLegendaryMonsterTransformed", 1, "LegendaryRepeatAttack") // LegenDoom legendary monster
    "####" "#" 0 A_JumpIf(1, "RepeatProper")
	Goto RepeatProper
  ArsenalMeleeCheck:
    "####" "#" 0 A_JumpIfInventory("DRPGShadowAuraToken", 1, "ShadowAuraMeleeAttack") // DRPG Shadow Aura
    "####" "#" 0 A_JumpIfInventory("LDLegendaryMonsterTransformed", 1, "LegendaryMeleeAttack") // LegenDoom legendary monster
    "####" "#" 0 A_JumpIf(1, "MeleeProper")
	Goto MeleeProper

//-----------------------------------------------------------------------------------------------------------------------------------
//==============================================================================
//		Used to determine monster types that this monster really hates
//==============================================================================
// U WOT M8 I'LL FOOKIN REK YA I SWEAR ON ME MUM

  MissileHatredOnUniqueEffect: // [incoherent tantrum sounds]
    "####" "#" 0// A_PlaySound ("cacodemon/sight", CHAN_VOICE)
    "####" "#" 0 A_Jump (256, "MissileHatredOnUniqueDone")
	Goto MissileHatredOnUniqueDone
  MeleeHatredOnUniqueEffect: // [incoherent tantrum sounds]
    "####" "#" 0// A_PlaySound ("cacodemon/sight", CHAN_VOICE)
    "####" "#" 0 A_Jump (256, "MeleeHatredOnUniqueDone")
	Goto MeleeHatredOnUniqueDone

//------------------------------------------------------------------------------
  MissileHatredOn:
    "####" "#" 0 A_JumpIfInventory ("PowerRLMonsterInfightCooldownToken", 1, "MissileHatredOnTypeCheck")
    "####" "#" 0 A_Jump (256, "MissileHatredOnUniqueEffect")
	Goto MissileHatredOnUniqueEffect // Play monster-specific sounds or effects when infighting
//------------------------------------------------------------------------------
  MissileHatredOnUniqueDone:
    "####" "#" 0 A_GiveInventory ("PowerRLMonsterInfightCooldownToken", 1)
	Goto MissileHatredOnTypeCheck
  MissileHatredOnTypeCheck:
    "####" "#" 0 A_JumpIfInventory ("RLHatredToken", 1, "MissileFriendlyCheck")
    "####" "#" 0 A_JumpIf(CallACS("DRPGCheck"), "MissileDoorpegHatredOn")
//------------------------------------------------------------------------------
//		DRPG not loaded - Continue normally
    "####" "#" 0 A_GiveInventory ("RLHatredToken", 1)
    "####" "#" 0 A_ChangeFlag ("NOFEAR", 1)
    "####" "#" 0 A_ChangeFlag ("MISSILEMORE", 1)
    "####" "#" 0 A_ChangeFlag ("MISSILEEVENMORE", 1)
    "####" "#" 0 A_ChangeFlag ("NOTARGETSWITCH", 1)
    "####" "#" 0 A_JumpIf(1, "MissileFriendlyCheck")
	Goto MissileFriendlyCheck
//------------------------------------------------------------------------------
  MissileHatredOff:
    "####" "#" 0 A_JumpIf(CallACS("DRPGCheck"), "MissileDoorpegHatredOff")
    "####" "#" 0 A_TakeInventory ("RLHatredToken", 1)
    "####" "#" 0 A_ChangeFlag ("NOFEAR", 0)
    "####" "#" 0 A_ChangeFlag ("NOTARGETSWITCH", 0)
    "####" "#" 0 A_ChangeFlag ("MISSILEMORE", 0)
    "####" "#" 0 A_ChangeFlag ("MISSILEEVENMORE", 0)
    "####" "#" 0 A_JumpIf(1, "MissileFriendlyCheck")
	Goto MissileFriendlyCheck
//------------------------------------------------------------------------------
  MissileDoorpegHatredOn:
    "####" "#" 0 A_GiveInventory ("RLHatredToken", 1)
    "####" "#" 0 ACS_NamedExecuteAlways("GetAuraTokens", 0)
	Goto MissileDoorpegRedAuraCheckOn
//------------------------------------------------------------------------------
// Check for Red Aura
  MissileDoorpegRedAuraCheckOn:
    "####" "#" 0 A_JumpIfInventory("DRPGRedAuraToken", 1, "MissileDoorpegWhiteAuraCheckOn")
    "####" "#" 0 A_ChangeFlag ("NOFEAR", 1)
    "####" "#" 0 A_ChangeFlag ("MISSILEMORE", 1)
    "####" "#" 0 A_ChangeFlag ("MISSILEEVENMORE", 1)
    Goto MissileDoorpegWhiteAuraCheckOn
//------------------------------------------------------------------------------
// Check for White Aura
  MissileDoorpegWhiteAuraCheckOn:
    "####" "#" 0 A_JumpIfInventory("DRPGWhiteAuraToken", 1, "MissileFriendlyCheck")
    "####" "#" 0 A_ChangeFlag ("NOTARGETSWITCH", 1)
    "####" "#" 0 A_JumpIf(1, "MissileFriendlyCheck")
	Goto MissileFriendlyCheck
//------------------------------------------------------------------------------
  MissileDoorpegHatredOff:
    "####" "#" 0 A_TakeInventory ("RLHatredToken", 1)
    "####" "#" 0 ACS_NamedExecuteAlways("GetAuraTokens", 0)
	Goto MissileDoorpegRedAuraCheckOff
//------------------------------------------------------------------------------
// Check for Red Aura
  MissileDoorpegRedAuraCheckOff:
    "####" "#" 0 A_JumpIfInventory("DRPGRedAuraToken", 1, "MissileDoorpegWhiteAuraCheckOff")
    "####" "#" 0 A_ChangeFlag ("NOFEAR", 0)
    "####" "#" 0 A_ChangeFlag ("MISSILEMORE", 0)
    "####" "#" 0 A_ChangeFlag ("MISSILEEVENMORE", 0)
    Goto MissileDoorpegWhiteAuraCheckOff
//------------------------------------------------------------------------------
// Check for White Aura
  MissileDoorpegWhiteAuraCheckOff:
    "####" "#" 0 A_JumpIfInventory("DRPGWhiteAuraToken", 1, "MissileFriendlyCheck")
    "####" "#" 0 A_ChangeFlag ("NOTARGETSWITCH", 0)
    "####" "#" 0 A_JumpIf(1, "MissileFriendlyCheck")
	Goto MissileFriendlyCheck
//==============================================================================

//------------------------------------------------------------------------------
  MeleeHatredOn:
    "####" "#" 0 A_JumpIfInventory ("PowerRLMonsterInfightCooldownToken", 1, "MeleeHatredOnTypeCheck")
    "####" "#" 0 A_Jump (256, "MeleeHatredOnUniqueEffect")
	Goto MeleeHatredOnUniqueEffect // Play monster-specific sounds or effects when infighting
//------------------------------------------------------------------------------
  MeleeHatredOnUniqueDone:
    "####" "#" 0 A_GiveInventory ("PowerRLMonsterInfightCooldownToken", 1)
	Goto MeleeHatredOnTypeCheck
  MeleeHatredOnTypeCheck:
    "####" "#" 0 A_JumpIfInventory ("RLHatredToken", 1, "MeleeFriendlyCheck")
    "####" "#" 0 A_JumpIf(CallACS("DRPGCheck"), "MeleeDoorpegHatredOn")
//------------------------------------------------------------------------------
//		DRPG not loaded - Continue normally
    "####" "#" 0 A_GiveInventory ("RLHatredToken", 1)
    "####" "#" 0 A_ChangeFlag ("NOFEAR", 1)
    "####" "#" 0 A_ChangeFlag ("MISSILEMORE", 1)
    "####" "#" 0 A_ChangeFlag ("MISSILEEVENMORE", 1)
    "####" "#" 0 A_ChangeFlag ("NOTARGETSWITCH", 1)
    "####" "#" 0 A_JumpIf(1, "MeleeFriendlyCheck")
	Goto MeleeFriendlyCheck
//------------------------------------------------------------------------------
  MeleeHatredOff:
    "####" "#" 0 A_JumpIf(CallACS("DRPGCheck"), "MeleeDoorpegHatredOff")
    "####" "#" 0 A_TakeInventory ("RLHatredToken", 1)
    "####" "#" 0 A_ChangeFlag ("NOFEAR", 0)
    "####" "#" 0 A_ChangeFlag ("NOTARGETSWITCH", 0)
    "####" "#" 0 A_ChangeFlag ("MISSILEMORE", 0)
    "####" "#" 0 A_ChangeFlag ("MISSILEEVENMORE", 0)
    "####" "#" 0 A_JumpIf(1, "MeleeFriendlyCheck")
	Goto MeleeFriendlyCheck
//------------------------------------------------------------------------------
  MeleeDoorpegHatredOn:
    "####" "#" 0 A_GiveInventory ("RLHatredToken", 1)
    "####" "#" 0 ACS_NamedExecuteAlways("GetAuraTokens", 0)
	Goto MeleeDoorpegRedAuraCheckOn
//------------------------------------------------------------------------------
// Check for Red Aura
  MeleeDoorpegRedAuraCheckOn:
    "####" "#" 0 A_JumpIfInventory("DRPGRedAuraToken", 1, "MeleeDoorpegWhiteAuraCheckOn")
    "####" "#" 0 A_ChangeFlag ("NOFEAR", 1)
    "####" "#" 0 A_ChangeFlag ("MISSILEMORE", 1)
    "####" "#" 0 A_ChangeFlag ("MISSILEEVENMORE", 1)
    Goto MeleeDoorpegWhiteAuraCheckOn
//------------------------------------------------------------------------------
// Check for White Aura
  MeleeDoorpegWhiteAuraCheckOn:
    "####" "#" 0 A_JumpIfInventory("DRPGWhiteAuraToken", 1, "MeleeFriendlyCheck")
    "####" "#" 0 A_ChangeFlag ("NOTARGETSWITCH", 1)
    "####" "#" 0 A_JumpIf(1, "MeleeFriendlyCheck")
	Goto MeleeFriendlyCheck
//------------------------------------------------------------------------------
  MeleeDoorpegHatredOff:
    "####" "#" 0 A_TakeInventory ("RLHatredToken", 1)
    "####" "#" 0 ACS_NamedExecuteAlways("GetAuraTokens", 0)
	Goto MeleeDoorpegRedAuraCheckOff
//------------------------------------------------------------------------------
// Check for Red Aura
  MeleeDoorpegRedAuraCheckOff:
    "####" "#" 0 A_JumpIfInventory("DRPGRedAuraToken", 1, "MeleeDoorpegWhiteAuraCheckOff")
    "####" "#" 0 A_ChangeFlag ("NOFEAR", 0)
    "####" "#" 0 A_ChangeFlag ("MISSILEMORE", 0)
    "####" "#" 0 A_ChangeFlag ("MISSILEEVENMORE", 0)
    Goto MeleeDoorpegWhiteAuraCheckOff
//------------------------------------------------------------------------------
// Check for White Aura
  MeleeDoorpegWhiteAuraCheckOff:
    "####" "#" 0 A_JumpIfInventory("DRPGWhiteAuraToken", 1, "MeleeFriendlyCheck")
    "####" "#" 0 A_ChangeFlag ("NOTARGETSWITCH", 0)
    "####" "#" 0 A_JumpIf(1, "MeleeFriendlyCheck")
	Goto MeleeFriendlyCheck
//------------------------------------------------------------------------------

//==============================================================================
//					--	  SPECIAL ATTACKS     --
//==============================================================================
	// The following states have defaults set to allow things to fall through safely
	// Overwrite the relevant ones in the monsters, and ignore all others without worry
	
	// These are the final attack states used by monsters
	// Default to the See state if none exist somehow, otherwise MissileProper
  MissileProper:
    "####" "#" 0 A_JumpIf(1, "See")
    Goto See
  RepeatProper:
    "####" "#" 0 A_JumpIf(1, "MissileProper")
    Goto MissileProper
  MeleeProper:
    "####" "#" 0 A_JumpIf(1, "MissileProper")
    Goto MissileProper
	
	// Used in any monster that has a hitscan attack when running the Duke II gamemode in DRLA
  Duke2LaserAttack:
    "####" "#" 0 A_JumpIf(1, "MissileProper")
    Goto MissileProper
  Duke2LaserRepeat:
    "####" "#" 0 A_JumpIf(1, "RepeatProper")
    Goto RepeatProper
	
	// Used in any monster that has a DRPG Shadow Aura
	// Default to nothing if it does not exist
  ShadowAuraMissileAttack:
    "####" "#" 0 A_JumpIf(1, "MissileProper")
    Goto MissileProper
  ShadowAuraRepeatAttack:
    "####" "#" 0 A_JumpIf(1, "RepeatProper")
    Goto RepeatProper
  ShadowAuraMeleeAttack:
    "####" "#" 0 A_JumpIf(1, "MeleeProper")
    Goto MeleeProper
	
	// Used in any transformed legendary monster
	// Default to DRPG's Shadow Aura attack if it does not exist
  LegendaryMissileAttack:
    "####" "#" 0 A_JumpIf(1, "ShadowAuraMissileAttack")
    Goto ShadowAuraMissileAttack
  LegendaryRepeatAttack:
    "####" "#" 0 A_JumpIf(1, "ShadowAuraRepeatAttack")
    Goto ShadowAuraRepeatAttack
  LegendaryMeleeAttack:
    "####" "#" 0 A_JumpIf(1, "ShadowAuraMeleeAttack")
    Goto ShadowAuraMeleeAttack
//------------------------------------------------------------------------------

// Fallback death states from the Duke II Rifle or barrels
  Death.RigelBlast:
    "####" "#" 0 A_GiveInventory ("RLDuke2Score", 100, AAPTR_TARGET)
    "####" "#" 0 A_PlaySound("weapons/dn2gunexplosion", CHAN_BODY)
    "####" "#" 0 A_NoBlocking
    "####" "#" 0 A_SpawnItemEx ("RLDuke2BasicEnemyExplosions", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION)
    "####" "#" 35
    Stop
  XDeath.RigelBlast:
	"####" "#" 0 A_JumpIf(CallACS("DRLA_Gibs"), 1)
	Goto Death.RigelBlast
    "####" "#" 0 A_GiveInventory ("RLDuke2Score", 100, AAPTR_TARGET)
    "####" "#" 0 A_PlaySound("weapons/dn2gungib", CHAN_BODY)
    "####" "#" 0 A_NoBlocking
    "####" "#" 0 A_SpawnItemEx ("RLDuke2BasicEnemyExplosions", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION)
    "####" "#" 35
    Stop
	
//==============================================================================
//					--	DOOMRPG ARSENAL STUFF  --
//==============================================================================
 // Gives the monster inventory tokens based on what DRPG auras it currently has
//				Used to check DRPG auras and special attack types

// These give the monster tokens based on whatever DRPG Auras they happen to have
  MissileDRPGCheck:
    "####" "#" 0 ACS_NamedExecuteAlways("GetAuraTokens", 0)
    "####" "#" 0 A_JumpIf(1, "MissileHatredList")
	Goto MissileHatredList
  MeleeDRPGCheck:
    "####" "#" 0 ACS_NamedExecuteAlways("GetAuraTokens", 0)
    "####" "#" 0 A_JumpIf(1, "MeleeHatredList")
	Goto MeleeHatredList
	
//============================================================================================================================================================
//					--	FUNNEL DOMER THINGERIES  --
//============================================================================================================================================================
		
  Death.Maser:
  XDeath.Maser:
    "####" "#" 0 A_FaceTarget
    "####" "#" 0 A_ChangeVelocity (frandom(-5.0,-15.0), 0, 0, CVF_RELATIVE)
    "####" "#" 0 A_SpawnItemEx ("RLReducedGibber", 0,0,0, VelX,VelY,VelZ, 0, SXF_ABSOLUTEMOMENTUM | SXF_USEBLOODCOLOR | SXF_NOCHECKPOSITION)
    "####" "#" 0 A_JumpIf(1, "XDeath")
	Goto XDeath
	
  Death.XSpark:
  XDeath.XSpark:
    "####" "#" 0 A_Stop
    "####" "#" 0 A_StopSound(5)
    "####" "#" 0 A_StopSound(6)
    "####" "#" 0 A_StopSound(7)
    "####" "#" 0 A_StopSound(CHAN_ITEM)
    "####" "#" 0 A_StopSound(CHAN_WEAPON)
    "####" "#" 0 A_JumpIf(1, "DeathXSparkFrame")
	Goto DeathXSparkFrame
	 // Copy this state into other monsters for frame and mana, not that mana is needed because you can't load final doomer and guncaster at the same time you absolute nobhead
  DeathXSparkFrame:
    "####" "#" 0 A_JumpIfInTargetInventory("Mana",0,2)
    "####" "#" 0 A_DropItem("MinorManaPod",-1,54)
    TNT1 A 0
    "####" "#" 0 A_JumpIf(1, "DeathXSpark")
	Goto DeathXSpark
  DeathXSpark:
    "####" "#" 0 A_NoBlocking
	"####" "#" 0 A_PlaySound ("rlmonsters/xsparkdisintegrate", 7, 1, 0, 1.5)
    "####" "#" 0 A_SpawnItemEx ("RLXSparkAfterImageDarkBlue", 0.1,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE | SXF_TRANSFERSPRITEFRAME)
    "####" "#" 0 A_SpawnItemEx ("RLXSparkAfterImageBlue", 0.2,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE | SXF_TRANSFERSPRITEFRAME)
    "####" "#" 0 A_SpawnItemEx ("RLXSparkAfterImageLightBlue", 0.3,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE | SXF_TRANSFERSPRITEFRAME)
    "####" "#" 0 A_SpawnItemEx ("RLXSparkAfterImageWhite", 0.4,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERSCALE | SXF_TRANSFERSPRITEFRAME)
    "####" "#" 0 A_SpawnItemEx ("RLXSparkShockwave", 0.5,0,32+height/2, 0,0,0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 0 A_JumpIf(1, "DestroyedEnd")
    Goto DestroyedEnd
	
  Death.Sealing:
  XDeath.Sealing:
    "####" "#" 0 A_FaceTarget
    "####" "#" 0 A_Stop
    "####" "#" 0 A_JumpIf(1, "SimpleXDeath")
	Goto SimpleXDeath
//============================================================================================================================================================
//					--	GNUCASPER THINGERIES  --
//============================================================================================================================================================
		
	Death.MidasCloseCombat:
	Death.MidasShoelaces:
		"####" "#" 0 A_FaceTarget
		"####" "#" 0 A_NoBlocking
		"####" "#" 0 A_JumpIfInTargetInventory("Mana",0,2)
		"####" "#" 0 A_DropItem("MinorManaPod",-1,54)
		"####" "#" 0 A_CheckFlag ("BOSSDEATH", 2)
		"####" "#" 0 A_JumpIf(1, 2)
		"####" "#" 0 A_BossDeath
		"####" "#" 0 A_Pain
		"####" "#" 0 A_PlaySound("Midas/Touched")
		"####" "#" 0 A_JumpIf(1, "MidasFrame1")
		Goto MidasFrame1
	Death.SuperMidasCloseCombat:
		"####" "#" 0 A_FaceTarget
		"####" "#" 0 A_NoBlocking
		"####" "#" 0 A_JumpIfInTargetInventory("Mana",0,2)
		"####" "#" 0 A_DropItem("MinorManaPod",-1,54)
		"####" "#" 0 A_CheckFlag ("BOSSDEATH", 2)
		"####" "#" 0 A_JumpIf(1, 2)
		"####" "#" 0 A_BossDeath
		"####" "#" 0 A_Pain
		"####" "#" 0 A_PlaySound("Midas/Touched")
		"####" "#" 0 A_JumpIf(1, "MidasFrame2")
		Goto MidasFrame2
	Death.SuperMidasShoelaces:
		"####" "#" 0 A_FaceTarget
		"####" "#" 0 A_NoBlocking
		"####" "#" 0 A_JumpIfInTargetInventory("Mana",0,2)
		"####" "#" 0 A_DropItem("MinorManaPod",-1,54)
		"####" "#" 0 A_CheckFlag ("BOSSDEATH", 2)
		"####" "#" 0 A_JumpIf(1, 2)
		"####" "#" 0 A_BossDeath
		"####" "#" 0 A_Pain
		"####" "#" 0 A_PlaySound("Midas/Touched")
		"####" "#" 0 A_JumpIf(1, "MidasFrame3")
		Goto MidasFrame3
	MidasFrame1:
		BBRO K 0 A_SpawnItemEx("Midas_Statue_Zombieman", 0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION|SXF_TRANSFERPOINTERS|SXF_TRANSFERSPRITEFRAME)
		"####" "#" 0 A_JumpIf(1, "DestroyedEnd")
		Goto DestroyedEnd
	MidasFrame2:
		BBRO K 0 A_SpawnItemEx("Midas_Statue_Zombieman", 0,0,0, frandom(-10.0,-12.0),0,frandom(1.0,3.0), 0,SXF_NOCHECKPOSITION|SXF_TRANSFERPOINTERS|SXF_SETMASTER|SXF_TRANSFERSPRITEFRAME)
		"####" "#" 10 A_KillChildren
		"####" "#" 0 A_JumpIf(1, "DestroyedEnd")
		Goto DestroyedEnd
	MidasFrame3:
		BBRO K 0 A_SpawnItemEx("Midas_Statue_Zombieman", 0,0,0, frandom(-15.0,-20.0),0,frandom(10.0,15.0), 0,SXF_NOCHECKPOSITION|SXF_TRANSFERPOINTERS|SXF_SETMASTER|SXF_TRANSFERSPRITEFRAME)
		"####" "#" 10 A_KillChildren
		"####" "#" 0 A_JumpIf(1, "DestroyedEnd")
		Goto DestroyedEnd
		
	//Gumpop
	Pain.Acid:
		"####" "#" 0 A_JumpIfInventory("PowerGumpopDamage",1,2)
		"####" "#" 0 A_SpawnItemEx("GumpopIndicator",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE|SXF_SETTARGET|SXF_ORIGINATOR|SXF_TRANSFERSPRITEFRAME)
		"####" "#" 0 A_SpawnItemEx("GumpopGlow",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE|SXF_SETTARGET|SXF_ORIGINATOR)
		"####" "#" 0 A_Jump(200,"Pain")
		"####" "#" 0 A_JumpIf(1,"See")
		Goto See
		
	//Dreadful
	Death.Tiberium:
		"####" "#" 0 A_SetUserVar("User_DeathByTiberium", 1)
		"####" "#" 0 ACS_NamedExecuteAlways("DRLA_ToxicAvenger")
		"####" "#" 0 A_SpawnItemEx("TiberiumDeath",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE|SXF_SETTARGET|SXF_ORIGINATOR)
		"####" "#" 0 A_JumpIf(1, "Death")
		Goto Death
	TiberiumMelt:
		"####" "#" 0 A_JumpIf(ScaleX > 1.35, "EndOfMelt")
		"####" "#" 0 ACS_NamedExecuteAlways("DRLA_ToxicAvenger")
		"####" "#" 1 A_SetScale(ScaleX + frandom(0.002,0.003),ScaleY - frandom(0.003,0.004))
		"####" "#" 0 A_JumpIf(1, "DeathEnd")
		Goto DeathEnd
	Death.BlueTiberium:
		"####" "#" 0 A_SetUserVar("User_DeathByBlueTiberium", 1)
		"####" "#" 0 ACS_NamedExecuteAlways("DRLA_BlueOysterCult")
		"####" "#" 0 A_SpawnItemEx("BlueTiberiumDeath",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE|SXF_SETTARGET|SXF_ORIGINATOR)
		"####" "#" 0 A_JumpIf(1, "Death")
		Goto Death
	BlueTiberiumMelt:
		"####" "#" 0 A_JumpIf(ScaleX > 1.35, "EndOfMelt")
		"####" "#" 0 ACS_NamedExecuteAlways("DRLA_BlueOysterCult")
		"####" "#" 1 A_SetScale(ScaleX + frandom(0.002,0.003),ScaleY - frandom(0.003,0.004))
		"####" "#" 0 A_JumpIf(1, "DeathEnd")
		Goto DeathEnd
		
	//Threadcutter
	Pain.Manuel:
		"####" "#" 0 A_Jump(128,1)
		Goto Pain
		"####" "#" 0 A_GiveInventory("BleedItem")
		"####" "#" 0 A_SpawnItemEx("BleedIndicator",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_SETTARGET|SXF_ORIGINATOR)
		"####" "#" 0 A_JumpIf(1,"Pain")
		Goto Pain

//	Fire and Lightning states cut into multiple types to avoid constant script calling
//	also to make ryan cry

	//Thunderstruck
	LightningLock:
		"####" "#" 0 A_JumpIf(CallACS("GnuCustardCheck"), "LightningLockGuncaster")
		"####" "#" 0 A_PlaySound("rlmonsters/electrocution",5,0.6,1)
		"####" "#" 0 A_JumpIf(CallACS("DRLA_StatusEffectVisuals") == 2, "LightningLockFull")
		"####" "#" 0 A_JumpIf(CallACS("DRLA_StatusEffectVisuals") == 1, "LightningLockSimple")
		"####" "#" 0 A_JumpIf(1, "LightningLockNone")
		Goto LightningLockNone
		
	LightningLockNone:
		"####" "#" 0 A_SetUserVar("User_LightningLock", User_LightningLock - 1)
		"####" "#" 0 A_Pain
		"####" "#" 0 ACS_NamedExecuteAlways("DRLA_ShockMePlenty")
		"####" "###" 2 Bright
		"####" "#" 0 ACS_NamedExecuteAlways("DRLA_ShockMePlenty")
		"####" "###" 2 Bright
		"####" "#" 0 ACS_NamedExecuteAlways("DRLA_ShockMePlenty")
		"####" "###" 2 Bright
		"####" "#" 0 A_JumpIf(User_LightningLock >= 1, "LightningLockNone")
		"####" "#" 0 A_JumpIf(1,"LightningLockEnd")
		Goto LightningLockEnd
	LightningLockSimple:
		"####" "#" 0 A_SetUserVar("User_LightningLock", User_LightningLock - 1)
		"####" "#" 0 A_Pain
		"####" "#" 0 ACS_NamedExecuteAlways("DRLA_ShockMePlenty")
		"####" "###" 2 Bright A_SpawnItemEx("RLStatusEffectMonsterShockSimple", frandom(-10.0,10.0),frandom(-10.0,10.0),random(10,height), 0,0,0, 0, SXF_NOCHECKPOSITION|SXF_CLIENTSIDE|SXF_TRANSFERPOINTERS)
		"####" "#" 0 ACS_NamedExecuteAlways("DRLA_ShockMePlenty")
		"####" "###" 2 Bright A_SpawnItemEx("RLStatusEffectMonsterShockSimple", frandom(-10.0,10.0),frandom(-10.0,10.0),random(10,height), 0,0,0, 0, SXF_NOCHECKPOSITION|SXF_CLIENTSIDE|SXF_TRANSFERPOINTERS)
		"####" "#" 0 ACS_NamedExecuteAlways("DRLA_ShockMePlenty")
		"####" "###" 2 Bright A_SpawnItemEx("RLStatusEffectMonsterShockSimple", frandom(-10.0,10.0),frandom(-10.0,10.0),random(10,height), 0,0,0, 0, SXF_NOCHECKPOSITION|SXF_CLIENTSIDE|SXF_TRANSFERPOINTERS)
		"####" "#" 0 A_JumpIf(User_LightningLock >= 1, "LightningLockSimple")
		"####" "#" 0 A_JumpIf(1,"LightningLockEnd")
		Goto LightningLockEnd
	LightningLockFull:
		"####" "#" 0 A_SetUserVar("User_LightningLock", User_LightningLock - 1)
		"####" "#" 0 A_Pain
		"####" "#" 0 ACS_NamedExecuteAlways("DRLA_ShockMePlenty")
		"####" "###" 2 Bright A_SpawnItemEx("RLStatusEffectMonsterShock", frandom(-10.0,10.0),frandom(-10.0,10.0),random(10,height), 0,0,0, 0, SXF_NOCHECKPOSITION|SXF_CLIENTSIDE|SXF_TRANSFERPOINTERS)
		"####" "#" 0 ACS_NamedExecuteAlways("DRLA_ShockMePlenty")
		"####" "###" 2 Bright A_SpawnItemEx("RLStatusEffectMonsterShock", frandom(-10.0,10.0),frandom(-10.0,10.0),random(10,height), 0,0,0, 0, SXF_NOCHECKPOSITION|SXF_CLIENTSIDE|SXF_TRANSFERPOINTERS)
		"####" "#" 0 ACS_NamedExecuteAlways("DRLA_ShockMePlenty")
		"####" "###" 2 Bright A_SpawnItemEx("RLStatusEffectMonsterShock", frandom(-10.0,10.0),frandom(-10.0,10.0),random(10,height), 0,0,0, 0, SXF_NOCHECKPOSITION|SXF_CLIENTSIDE|SXF_TRANSFERPOINTERS)
		"####" "#" 0 A_JumpIf(User_LightningLock >= 1, "LightningLockFull")
		"####" "#" 0 A_JumpIf(1,"LightningLockEnd")
		Goto LightningLockEnd
	LightningLockGuncaster: // The original Guncaster effect
		"####" "#" 0 A_SetUserVar("User_LightningLock", User_LightningLock - 1)
		"####" "#" 0 A_Pain
		"####" "#" 0 A_PlaySound("Thunderstruck/Shocked",5,0.6,1)
		"####" "#" 0 ACS_NamedExecuteAlways("DRLA_ShockMePlenty")
		"####" "###" 2 Bright A_SpawnItemEx("MonsterShock",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE|SXF_TRANSFERPOINTERS)
		"####" "#" 0 ACS_NamedExecuteAlways("DRLA_ShockMePlenty")
		"####" "###" 2 Bright A_SpawnItemEx("MonsterShock",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE|SXF_TRANSFERPOINTERS)
		"####" "#" 0 ACS_NamedExecuteAlways("DRLA_ShockMePlenty")
		"####" "###" 2 Bright A_SpawnItemEx("MonsterShock",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE|SXF_TRANSFERPOINTERS)
		"####" "#" 0 A_JumpIf(User_LightningLock >= 1, "LightningLock")
		"####" "#" 0 A_JumpIf(1,"LightningLockEnd")
		Goto LightningLockEnd
		
	LightningLockEnd:
		"####" "#" 0 A_StopSound(5)
		"####" "#" 0 A_JumpIfInventory("DRPGGreenAuraToken", 1, 2)
		"####" "#" 0 A_ChangeFlag("NOPAIN",0)
		"####" "#" 0 A_JumpIf(1,"See")
		Goto See
		
	//Cauterizer
	BlueLightningLock:
		"####" "#" 0 A_JumpIf(CallACS("GnuCustardCheck"), "BlueLightningLockGuncaster")
		"####" "#" 0 A_PlaySound("rlmonsters/electrocution",5,0.6,1)
		"####" "#" 0 A_JumpIf(CallACS("DRLA_StatusEffectVisuals") == 2, "BlueLightningLockFull")
		"####" "#" 0 A_JumpIf(CallACS("DRLA_StatusEffectVisuals") == 1, "BlueLightningLockSimple")
		"####" "#" 0 A_JumpIf(1, "BlueLightningLockNone")
		Goto BlueLightningLockNone
	BlueLightningLockNone:
		"####" "#" 0 A_SetUserVar("User_LightningLock", User_LightningLock - 1)
		"####" "#" 0 A_Pain
		"####" "#" 0 ACS_NamedExecuteAlways("DRLA_ShockMePlenty")
		"####" "###" 2 Bright
		"####" "#" 0 ACS_NamedExecuteAlways("DRLA_ShockMePlenty")
		"####" "###" 2 Bright
		"####" "#" 0 ACS_NamedExecuteAlways("DRLA_ShockMePlenty")
		"####" "###" 2 Bright
		"####" "#" 0 A_JumpIf(User_LightningLock >= 1, "BlueLightningLockNone")
		"####" "#" 0 A_JumpIf(1,"LightningLockEnd")
		Goto LightningLockEnd
	BlueLightningLockSimple:
		"####" "#" 0 A_SetUserVar("User_LightningLock", User_LightningLock - 1)
		"####" "#" 0 A_Pain
		"####" "#" 0 ACS_NamedExecuteAlways("DRLA_ShockMePlentyBlue")
		"####" "###" 2 Bright A_SpawnItemEx("RLStatusEffectMonsterBlueShockSimple", frandom(-10.0,10.0),frandom(-10.0,10.0),random(10,height), 0,0,0, 0, SXF_NOCHECKPOSITION|SXF_CLIENTSIDE|SXF_TRANSFERPOINTERS)
		"####" "#" 0 ACS_NamedExecuteAlways("DRLA_ShockMePlentyBlue")
		"####" "###" 2 Bright A_SpawnItemEx("RLStatusEffectMonsterBlueShockSimple", frandom(-10.0,10.0),frandom(-10.0,10.0),random(10,height), 0,0,0, 0, SXF_NOCHECKPOSITION|SXF_CLIENTSIDE|SXF_TRANSFERPOINTERS)
		"####" "#" 0 ACS_NamedExecuteAlways("DRLA_ShockMePlentyBlue")
		"####" "###" 2 Bright A_SpawnItemEx("RLStatusEffectMonsterBlueShockSimple", frandom(-10.0,10.0),frandom(-10.0,10.0),random(10,height), 0,0,0, 0, SXF_NOCHECKPOSITION|SXF_CLIENTSIDE|SXF_TRANSFERPOINTERS)
		"####" "#" 0 A_JumpIf(User_LightningLock >= 1, "BlueLightningLockSimple")
		"####" "#" 0 A_JumpIf(1,"LightningLockEnd")
		Goto LightningLockEnd
	BlueLightningLockFull:
		"####" "#" 0 A_SetUserVar("User_LightningLock", User_LightningLock - 1)
		"####" "#" 0 A_Pain
		"####" "#" 0 ACS_NamedExecuteAlways("DRLA_ShockMePlentyBlue")
		"####" "###" 2 Bright A_SpawnItemEx("RLStatusEffectMonsterBlueShock", frandom(-10.0,10.0),frandom(-10.0,10.0),random(10,height), 0,0,0, 0, SXF_NOCHECKPOSITION|SXF_CLIENTSIDE|SXF_TRANSFERPOINTERS)
		"####" "#" 0 ACS_NamedExecuteAlways("DRLA_ShockMePlentyBlue")
		"####" "###" 2 Bright A_SpawnItemEx("RLStatusEffectMonsterBlueShock", frandom(-10.0,10.0),frandom(-10.0,10.0),random(10,height), 0,0,0, 0, SXF_NOCHECKPOSITION|SXF_CLIENTSIDE|SXF_TRANSFERPOINTERS)
		"####" "#" 0 ACS_NamedExecuteAlways("DRLA_ShockMePlentyBlue")
		"####" "###" 2 Bright A_SpawnItemEx("RLStatusEffectMonsterBlueShock", frandom(-10.0,10.0),frandom(-10.0,10.0),random(10,height), 0,0,0, 0, SXF_NOCHECKPOSITION|SXF_CLIENTSIDE|SXF_TRANSFERPOINTERS)
		"####" "#" 0 A_JumpIf(User_LightningLock >= 1, "BlueLightningLockFull")
		"####" "#" 0 A_JumpIf(1,"LightningLockEnd")
		Goto LightningLockEnd
	BlueLightningLockGuncaster: // The original Guncaster effect
		"####" "#" 0 A_SetUserVar("User_LightningLock", User_LightningLock - 1)
		"####" "#" 0 A_Pain
		"####" "#" 0 A_PlaySound("Thunderstruck/Shocked",5,0.6,1)
		"####" "#" 0 ACS_NamedExecuteAlways("DRLA_ShockMePlentyBlue")
		"####" "###" 2 Bright A_SpawnItemEx("CauterMonsterShock",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE|SXF_TRANSFERPOINTERS)
		"####" "#" 0 ACS_NamedExecuteAlways("DRLA_ShockMePlentyBlue")
		"####" "###" 2 Bright A_SpawnItemEx("CauterMonsterShock",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE|SXF_TRANSFERPOINTERS)
		"####" "#" 0 ACS_NamedExecuteAlways("DRLA_ShockMePlentyBlue")
		"####" "###" 2 Bright A_SpawnItemEx("CauterMonsterShock",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE|SXF_TRANSFERPOINTERS)
		"####" "#" 0 A_JumpIf(User_LightningLock >= 1, "BlueLightningLockGuncaster")
		"####" "#" 0 A_JumpIf(1,"LightningLockEnd")
		Goto LightningLockEnd
		
	//Fire
	Pain.Meteorfist:
		"####" "#" 0 A_FaceTarget
		"####" "#" 0 A_ChangeVelocity(frandom(-13.0,-17.0),0,frandom(9.0,11.0),CVF_RELATIVE)
		"####" "#" 0 A_JumpIf(1,"PainFireCheck") // Guaranteed "On Fire!" effect, heeeh.
		Goto PainFireCheck
	Pain.Fire:
		"####" "#" 0 A_Jump(16,"PainFireCheck")
		"####" "#" 0 A_JumpIf(1,"Pain")
		Goto Pain
	PainFireCheck:
		"####" "#" 0 A_JumpIf(CallACS("GnuCustardCheck"), "PainFireGuncaster")
		"####" "#" 0 A_JumpIf(CallACS("DRLA_StatusEffectVisuals") == 2, "PainFireDRLAFull")
		"####" "#" 0 A_JumpIf(CallACS("DRLA_StatusEffectVisuals") == 1, "PainFireDRLASimple")
		"####" "#" 0 A_JumpIf(1,"PainFireDRLANone")
		Goto PainFireDRLANone
	PainFireDRLANone:
		"####" "#" 0 A_JumpIfInventory("PowerRLMonsterOnFire",1,"Pain")
		"####" "#" 0 A_GiveInventory("RLMonsterOnFireGiver")
		"####" "#" 0 A_JumpIf(1,"Pain")
		Goto Pain
	PainFireDRLASimple:
		"####" "#" 0 A_JumpIfInventory("PowerRLMonsterOnFire",1,"Pain")
		"####" "#" 0 A_GiveInventory("RLMonsterOnFireGiver")
		"####" "#" 0 A_SpawnItemEx("RLStatusEffectMonsterFireSpawnerSimple",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE|SXF_SETTARGET)
		"####" "#" 0 A_JumpIf(1,"Pain")
		Goto Pain
	PainFireDRLAFull:
		"####" "#" 0 A_JumpIfInventory("PowerRLMonsterOnFire",1,"Pain")
		"####" "#" 0 A_GiveInventory("RLMonsterOnFireGiver")
		"####" "#" 0 A_SpawnItemEx("RLStatusEffectMonsterFireSpawnerFull",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE|SXF_SETTARGET)
		"####" "#" 0 A_JumpIf(1,"Pain")
		Goto Pain
	PainFireGuncaster:
		"####" "#" 0 A_JumpIfInventory("PowerOnFire",1,"Pain")
		"####" "#" 0 A_GiveInventory("OnFireItem")
		"####" "#" 0 A_SpawnItemEx("OnFireIndicator",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE|SXF_SETTARGET)
		"####" "#" 0 A_JumpIf(1,"Pain")
		Goto Pain
		
	Death.Meteorfist:
		"####" "#" 0 A_FaceTarget
		"####" "#" 0 A_ChangeVelocity(frandom(-15.0,-20.0),0,frandom(10.0,15.0),CVF_RELATIVE)
		"####" "#" 0 A_JumpIf(1,"Death.Fire")
		Goto Death.Fire
	Death.Lightning:
		"####" "#" 0 A_JumpIf(1,"Death.Fire")
		Goto Death.Fire
	Death.LightningBlue:
		"####" "#" 0 A_JumpIf(1,"Death.Fire")
		Goto Death.Fire
	Death.Fire:
		"####" "#" 0 A_SetUserVar("User_DeathByFire", 1)
		"####" "#" 0 ACS_NamedExecuteAlways("DRLA_ExtraCrispy")
		"####" "#" 0 A_JumpIf(1,"DeathFirey")
		Goto DeathFirey
	DeathFirey:
		"####" "#" 0 A_JumpIf(CallACS("GnuCustardCheck"), "DeathFireyGuncaster")
		"####" "#" 0 A_JumpIf(CallACS("DRLA_StatusEffectVisuals") == 2, "DeathFireyDRLAFull")
		"####" "#" 0 A_JumpIf(CallACS("DRLA_StatusEffectVisuals") == 1, "DeathFireyDRLASimple")
		"####" "#" 0 A_JumpIf(1,"Death")
		Goto Death
	DeathFireyDRLASimple:
		"####" "#" 0 A_SpawnItemEx("RLStatusEffectMonsterFlamingDeathSimple",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE|SXF_SETTARGET)
		"####" "#" 0 A_JumpIf(1,"Death")
		Goto Death
	DeathFireyDRLAFull:
		"####" "#" 0 A_SpawnItemEx("RLStatusEffectMonsterFlamingDeathFull",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE|SXF_SETTARGET)
		"####" "#" 0 A_JumpIf(1,"Death")
		Goto Death
	DeathFireyGuncaster:
		"####" "#" 0 A_SpawnItemEx("FlamingDeath",0,0,0, 0,0,0, 0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE|SXF_SETTARGET|SXF_ORIGINATOR)
		"####" "#" 0 A_JumpIf(1,"Death")
		Goto Death
		
	FireMelt:
		"####" "#" 0 A_JumpIf(ScaleX > 1.35, "EndOfMelt")
		"####" "#" 0 ACS_NamedExecuteAlways("DRLA_ExtraCrispy")
		"####" "#" 1 A_SetScale(ScaleX + frandom(0.002,0.003),ScaleY - frandom(0.003,0.004))
		"####" "#" 0 A_JumpIf(1,"DeathEnd")
		Goto DeathEnd
	EndOfMelt:
		"####" "#" 0 A_SetUserVar("User_DeathByTiberium", 0)
		"####" "#" 0 A_SetUserVar("User_DeathByFire", 0)
		"####" "#" 0 A_JumpIf(1,"DeathEnd")
		Goto DeathEnd
		
	//Crows
	Death.Crow:
		"####" "#" 0 A_SpawnItemEx("FlockOfCrows",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_TRANSFERPOINTERS)
		"####" "#" 0 A_JumpIf(1,"Death")
		Goto Death
		
	//Scourgebreath
	Death.Breath:
		"####" "#" 0 A_StopSound(5)
		"####" "#" 0 A_JumpIfInTargetInventory("Mana",0,2)
		"####" "#" 0 A_DropItem("MinorManaPod",-1,54)
		"####" "#" 0 A_JumpIf(1,"DeathBreathContinue")
		Goto DeathBreathContinue
	DeathBreathContinue:
		"####" "#" 0 ACS_NamedExecuteAlways("DRLA_ExtraCrispy")
		"####" "#" 0 A_Scream
		"####" "#" 0 A_NoBlocking
		"####" "#" 0 A_SpawnItemEx("BreathSoulburst",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_TRANSFERSPRITEFRAME|SXF_TRANSFERPOINTERS)
		"####" "#" 0 A_JumpIf(1,"DeathBreathLoop")
		Goto DeathBreathLoop
	DeathBreathLoop:
		"####" "#" 0 A_SpawnItemEx("BreathDisintegration",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
		"####" "#" 0 A_JumpIf(ScaleX <= 0, "DestroyedEnd")
		"####" "#" 0 A_FadeOut(0.05)
		"####" "#" 1 A_SetScale(ScaleX - 0.03, ScaleY - 0.005)
		Loop
//============================================================================================================================================================
//					--	LAMBDA STUFF  --
//============================================================================================================================================================
		
  HalfLifeKersplat:
    "####" "#" 0 A_StopSound(5)
    "####" "#" 0 A_StopSound(6)
    "####" "#" 0 A_StopSound(7)
    "####" "#" 0 A_StopSound(CHAN_ITEM)
    "####" "#" 0 A_StopSound(CHAN_WEAPON)
    "####" "#" 0 A_NoBlocking
	"####" "#" 0 A_PlaySound ("gibbage/halflife", 7, 1, 0, 1.0)
    "####" "#" 0 A_SpawnItemEx ("HLGibSpawner", 0.05,0,height/2, velx,vely,velz, 0, SXF_ABSOLUTEMOMENTUM | SXF_NOCHECKPOSITION | SXF_USEBLOODCOLOR)
    TNT1 A 0 A_JumpIf(1, "DestroyedEnd")
    Goto DestroyedEnd
  }
}
