
//==============================================================================
//		ICON OF SIN EXPLOSIONS
//==============================================================================

// No longer used, was used in GRAND SCIENCERY
ACTOR RLIconofSinExploder
{
  Mass 0x7fffffff
  +NOGRAVITY
  +NOINTERACTION
  +NOCLIP
  States
  {
  Spawn:
    TNT1 A 0
    TNT1 A 1 A_SpawnItemEx ("RLIconofSinBlast", frandom(-192.0, 320.0), 320, frandom(0.0, 510.0), 0,0,0, 0, SXF_NOCHECKPOSITION)
    Loop
  }
}

ACTOR RLIconofSinBlast
{
  +NOGRAVITY
  +NOINTERACTION
  +NOCLIP
  States
  {
  Spawn:
    TNT1 A 0
//    TNT1 A 0 A_PlaySound ("weapons/rocklx", 7, 1, 0, 0.5)
    TNT1 A 0 A_SetScale (frandom(1.0, 2.5))
//    TNT1 A 0 A_Jump (256, "RedBlast", "BlueBlast", "GreenBlast")
    TNT1 A 0 A_SpawnItemEx("RLIconofSinBlastSmokeTrail", 0,0,0, frandom(0.0, 10.0),0,frandom(-15.0, 30.0), frandom(0.0, 360.0), SXF_NOCHECKPOSITION, 190)
	
  RedBlast:
    MEXP AB 4 Bright
    MEXP CD 3 Bright
    MEXP EF 2 Bright
    Goto BlastEnd
  BlueBlast:
    PEXP AB 4 Bright
    PEXP CD 3 Bright
    PEXP EF 2 Bright
    Goto BlastEnd
  GreenBlast:
    BFXP AB 4 Bright
    BFXP CD 3 Bright
    BFXP EF 2 Bright
    Goto BlastEnd
	
  BlastEnd:
    TNT1 A 0 A_SpawnItemEx("RLIconofSinBlast", frandom(-8.0, 8.0), 0, frandom(0.0, 510.0) - z, 0,0,0, 0, SXF_NOCHECKPOSITION|SXF_ABSOLUTEPOSITION)
    Stop
  }
}

ACTOR RLIconofSinBlastSmokeTrail
{
   Height 4
   Radius 4
   Projectile
   +THRUACTORS
   +BOUNCEONWALLS
   +BOUNCEONCEILINGS
   +ROCKETTRAIL
   +GRENADETRAIL
   -NOGRAVITY
   Speed 6
   Gravity 0.8
   
    var int user_backuptimer;
  States
  {
  Spawn:
	TNT1 A 0
    TNT1 A 0 A_SetUserVar ("user_backuptimer", 100)
  SpawnLoop:
    TNT1 A 0 A_JumpIf (user_backuptimer <= 0, "Death")
	TNT1 A 1
    TNT1 A 0 A_SetUserVar ("user_backuptimer", user_backuptimer - 1)
    Goto SpawnLoop
  Death:
    TNT1 A 2
    Stop
  }
}

//==============================================================================
//		ICON OF SIN STUFF
//==============================================================================

actor RLEasyBossEye : BossEye
{
  DropItem "RLImp" 				255 50
  DropItem "RLDemon"			255 40
  DropItem "RLSpectre"			255 30
  DropItem "RLMancubus"			255 30
  DropItem "RLCacodemon"		255 30
  DropItem "RLHellKnight"		255 24
  DropItem "RLArachnotron"		255 14
  DropItem "RLPainElemental"	255 6
  DropItem "RLRevenant"			255 10
  DropItem "RLBaronOfHell"		255 8
  States
  {
  Spawn:
    TNT1 A 10 A_Look
    Loop
  See:
    TNT1 A 181 A_PlaySound ("brain/sight", CHAN_VOICE, 1, 0, 0.1)
    TNT1 A 200 A_BrainSpit
    Wait
  }
}

actor RLBossEye : BossEye
{
  DropItem "RLImp" 				255 50
  DropItem "RLDemon"			255 40
  DropItem "RLSpectre"			255 30
  DropItem "RLMancubus"			255 30
  DropItem "RLCacodemon"		255 30
  DropItem "RLHellKnight"		255 24
  DropItem "RLArachnotron"		255 20
  DropItem "RLPainElemental"	255 10
  DropItem "RLRevenant"			255 10
  DropItem "RLBaronOfHell"		255 10
  DropItem "RLArchvile"			255  2
  States
  {
  Spawn:
    TNT1 A 10 A_Look
    Loop
  See:
    TNT1 A 181 A_PlaySound ("brain/sight", CHAN_VOICE, 1, 0, 0.1)
    TNT1 A 170 A_BrainSpit
    Wait
  }
}

Actor RLBossBrainIntensity : RLLevelRestrictedMPInventory
{
inventory.maxamount 10
}

//==============================================================================
//		ICON OF SIN [UV]
//==============================================================================

actor RLUVBossEye : BossEye
{
  DropItem "RLImpSpawner" 				255 50
  DropItem "RLDemonSpawner"				255 40
  DropItem "RLSpectreSpawner"			255 30
  DropItem "RLMancubusSpawner"			255 30
  DropItem "RLCacodemonSpawner"			255 30
  DropItem "RLHellKnightSpawner"		255 24
  DropItem "RLArachnotronSpawner"		255 20
  DropItem "RLPainElementalSpawner"		255 10
  DropItem "RLRevenantSpawner"			255 10
  DropItem "RLBaronOfHellSpawner"		255 10
  DropItem "RLArchvileSpawner"			255  2
  DropItem "RLCyberdemonSpawner"		255  1
  DropItem "RLSpiderMastermindSpawner"	255  1
  States
  {
  Spawn:
    TNT1 A 10 A_Look
    Loop
  See:
    TNT1 A 181 A_PlaySound ("iconofsin/sight", CHAN_VOICE, 1, 0, 0.1)
    TNT1 A 150 A_BrainSpit
    Wait
  }
}

ACTOR RLBossBrain
{
  Health 10000000
  Mass 0x7fffffff
  PainChance 256
  +SOLID
  +SHOOTABLE
  +NOICEDEATH
  +OLDRADIUSDMG
  Species "RLIconOfSin"
  
  var int user_bossbrainboom;
  var int user_bossbrainhealth;
  States
  {
  Spawn:
    TNT1 A 0 A_JumpIfInventory ("RLIconofSinDestructionator", 1, "IsDed")
    BBRN A 10// A_PlaySound ("iconofsin/loop", 5, 1, 1, 0.1)
    Loop
  Pain:
 // Damage the icon 5 times to kill it, this prevents one-shots from super powerful weaponry
    TNT1 A 0 A_SetUserVar("user_bossbrainhealth", user_bossbrainhealth+1)
    TNT1 A 0 A_JumpIf (user_bossbrainhealth >= 5, "IsDed")
    TNT1 A 0 A_Jump (256, "PainQuake")
	Goto PainQuake
  PainQuake:
	TNT1 A 0 A_JumpIf(CallACS("DRLA_MonsterQuake") == 0, 2)
    TNT1 A 0 A_Quake (1, 36, 0, 4096, "")
    TNT1 A 0 A_Jump (256, "PainFrame")
	Goto PainFrame
  PainFrame:
    TNT1 A 0 A_ChangeFlag ("NOPAIN", 1)
    TNT1 A 0 A_ChangeFlag ("INVULNERABLE", 1)
    BBRN B 36 A_PlaySound ("brain/pain", CHAN_VOICE, 1, 0, 0.1)
    TNT1 A 0 A_ChangeFlag ("INVULNERABLE", 0)
    TNT1 A 0 A_ChangeFlag ("NOPAIN", 0)
    Goto Spawn
	
  Pain.Telefrag:
  Death.Telefrag:
  IsDed:
    TNT1 A 0 A_Die
    TNT1 A 0 A_Jump (256, "Death")
	Goto Death
  Death:
	TNT1 A 0 A_JumpIf(CallACS("DRLA_MonsterQuake") == 0, 2)
    TNT1 A 0 A_Quake (9, 120, 0, 4096, "")
    TNT1 A 0 A_SetUserVar("user_bossbrainboom", 32)
    TNT1 A 0 A_Jump (256, "DeathFrame")
	Goto DeathFrame
  DeathFrame:
    TNT1 A 0 A_PlaySound ("brain/death", CHAN_VOICE, 1, 0, 0.1)
    TNT1 A 0 A_PlaySound ("iconofsin/explosion", CHAN_WEAPON, 1, 0, 0.1)
    TNT1 A 0 A_PlaySound ("iconofsin/explosion2", 5, 1, 0, 0.1)
    TNT1 A 0 A_PlaySound ("iconofsin/explosion", 6, 1, 0, 0.0)
    TNT1 A 0 A_PlaySound ("iconofsin/explosion2", 7, 1, 0, 0.0)
    BBRN B 0 A_Jump (256, "DeathLoop")
	Goto DeathLoop
  DeathLoop:
    "####" "#" 0 A_JumpIf (user_bossbrainboom <= 0, "IconIsDead")
    "####" "##" 0 A_SpawnItemEx ("RLIconofSinBlast", frandom(-192.0, 320.0), -320, frandom(0.0, 510.0) - z, 0,0,0, 0, SXF_NOCHECKPOSITION|SXF_ABSOLUTEPOSITION)
    "####" "#" 1
    "####" "#" 0 A_SetUserVar("user_bossbrainboom", user_bossbrainboom - 1)
	Goto DeathLoop
  IconIsDead:
    "####" "#" 88
	"####" "#" 2 ACS_NamedExecuteAlways ("DRLA_EndGameDestination", 0) // This will send you to other levels instead of finishing the game
    "####" "#" -1 A_BrainDie
    Stop
  }
}

ACTOR RLSpawnShot : SpawnShot
{
  Speed 12
  SeeSound "iconofsin/spit"
  DeathSound "brain/cubeboom"
  States
  {
  Spawn:
    TNT1 A 0
    TNT1 A 0 A_PlaySound ("brain/cube", CHAN_BODY, 1, 0, 1.75)
    BOSF ABCD 3 Bright A_SpawnFly
    Loop
  }
}

//==============================================================================
//		ICON OF SIN [Nightmare]
//==============================================================================

actor RLNightmareBossEye : BossEye
{
  DropItem "RLNightmareImp" 					255 150
  DropItem "RLNightmareDemon"					255 140
  DropItem "RLNightmareSpectre"					255 130
  DropItem "RLNightmareCacodemon"				255 130
  DropItem "RLNightmareHellKnight"				255 124
  DropItem "RLNightmareArachnotron"				255 120
  DropItem "RLNightmareRevenant"				255 110
  DropItem "RLNightmareMancubus"				255 110
  DropItem "RLNightmareBaronOfHell"				255 58
  DropItem "RLNightmarePainElemental"			255 55
  DropItem "RLNightmareArchvile"				255  28
  DropItem "RLNightmareCyberdemon"				255  1
  DropItem "RLNightmareSpiderMastermind"		255  1
  States
  {
  Spawn:
    TNT1 A 10 A_Look
    Loop
  See:
    TNT1 A 181 A_PlaySound ("nightmareiconofsin/sight", CHAN_VOICE, 1, 0, 0.1)
	Goto AttackLoop+1
  AttackLoop:
    TNT1 A 300
    TNT1 A 0 A_JumpIfInventory ("RLBossBrainIntensity", 7, "Ded", AAPTR_PLAYER1)
    TNT1 AAAA 10 A_BrainSpit
    TNT1 A 120
    TNT1 AA 20 A_BrainSpit ("RLNightmareBossFireballSpawner")
    TNT1 A 0 A_JumpIfInventory ("RLBossBrainIntensity", 1, 1, AAPTR_PLAYER1)
    Goto AttackLoop
    TNT1 AA 20 A_BrainSpit ("RLNightmareBossFireballSpawner")
    TNT1 A 0 A_JumpIfInventory ("RLBossBrainIntensity", 2, 1, AAPTR_PLAYER1)
    Goto AttackLoop
    TNT1 AA 20 A_BrainSpit ("RLNightmareBossFireballSpawner")
    TNT1 A 0 A_JumpIfInventory ("RLBossBrainIntensity", 3, 1, AAPTR_PLAYER1)
    Goto AttackLoop
    TNT1 AA 20 A_BrainSpit ("RLNightmareBossFireballSpawner")
    TNT1 A 0 A_JumpIfInventory ("RLBossBrainIntensity", 4, 1, AAPTR_PLAYER1)
    Goto AttackLoop
    TNT1 AA 20 A_BrainSpit ("RLNightmareBossFireballSpawner")
    TNT1 A 0 A_JumpIfInventory ("RLBossBrainIntensity", 5, 1, AAPTR_PLAYER1)
    Goto AttackLoop
    TNT1 AA 20 A_BrainSpit ("RLNightmareBossFireballSpawner")
    TNT1 A 0 A_JumpIfInventory ("RLBossBrainIntensity", 6, 1, AAPTR_PLAYER1)
    Goto AttackLoop
    TNT1 AA 20 A_BrainSpit ("RLNightmareBossFireballSpawner")
    Goto AttackLoop
  Ded:
    TNT1 A -1
    Stop
  }
}

ACTOR RLNightmareBossBrain : RLBossBrain
{
  States
  {
  Spawn:
    TNT1 A 0 A_JumpIfInventory ("RLIconofSinDestructionator", 1, "IsDed")
    BBRN A 10 A_PlaySound ("nightmareiconofsin/loop", 5, 1, 1, 0.1)
    Loop
  Pain:
 // Damage the icon 7 times to kill it, this prevents one-shots from super powerful weaponry
    TNT1 A 0 A_SetUserVar("user_bossbrainhealth", user_bossbrainhealth+1)
    TNT1 A 0 A_JumpIf (user_bossbrainhealth >= 7, "IsDed")
    TNT1 A 0 A_GiveInventory ("RLBossBrainIntensity", 1, AAPTR_PLAYER1)
    TNT1 A 0 A_Jump (256, "PainQuake")
	Goto PainQuake
  PainFrame:
    TNT1 A 0 A_ChangeFlag ("NOPAIN", 1)
    TNT1 A 0 A_ChangeFlag ("INVULNERABLE", 1)
    BBRN B 36 A_PlaySound ("nightmareiconofsin/pain", CHAN_VOICE, 1, 0, 0.1)
    TNT1 A 0 A_ChangeFlag ("INVULNERABLE", 0)
    TNT1 A 0 A_ChangeFlag ("NOPAIN", 0)
    Goto Spawn
  DeathFrame:
    TNT1 A 0 A_PlaySound ("nightmareiconofsin/death", CHAN_VOICE, 1, 0, 0.1)
    TNT1 A 0 A_PlaySound ("iconofsin/explosion", CHAN_WEAPON, 1, 0, 0.1)
    TNT1 A 0 A_PlaySound ("iconofsin/explosion2", 5, 1, 0, 0.1)
    TNT1 A 0 A_PlaySound ("iconofsin/explosion", 6, 1, 0, 0.0)
    TNT1 A 0 A_PlaySound ("iconofsin/explosion2", 7, 1, 0, 0.0)
    BBRN B 0 A_Jump (256, "DeathLoop")
	Goto DeathLoop
  }
}

ACTOR RLNightmareSpawnShot : SpawnShot
{
  Speed 18
  SeeSound "nightmareiconofsin/spit"
  DeathSound "brain/cubeboom"
  States
  {
  Spawn:
    TNT1 A 0
    TNT1 A 0 A_PlaySound ("brain/cube", CHAN_BODY, 1, 0, 1.75)
    BOSF ABCD 3 Bright A_SpawnFly
    Loop
  }
}

ACTOR RLNightmareBossFireballSpawner : SpawnShot
{
  Speed 25
  SeeSound ""
  DeathSound ""
  DropItem "RLNightmareBossFireballShooter" 					255 1
  States
  {
  Spawn:
    TNT1 A 0
//    TNT1 A 0 A_PlaySound ("brain/cube", CHAN_BODY, 1, 0, 1.75)
  SpawnA:
    MANF A 2 Bright A_SpawnFly ("RLMonsterpackThingo")
    TNT1 A 0 A_CheckSight ("SpawnB")
	Goto SpawnFireball
  SpawnB:
    MANF B 2 Bright A_SpawnFly ("RLMonsterpackThingo")
    TNT1 A 0 A_CheckSight ("SpawnA")
	Goto SpawnFireball
  SpawnFireball:
    TNT1 A 0 A_SpawnItemEx ("RLNightmareBossFireballShooter", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION | SXF_NOPOINTERS)
	Stop
  }
}

ACTOR RLNightmareBossFireballShooter
{
  Radius 4
  Height 4
  Monster
  Obituary "%o was engulfed in nightmarish flames, thanks to the Icon of Sin."
  +NODAMAGE
  +THRUACTORS
  +NOCLIP
  +NOGRAVITY
  +NOINFIGHTING
  +NEVERTARGET
  +LOOKALLAROUND
  -COUNTKILL
  
  var int user_countdowntimer;
  States
  {
  Spawn:
    TNT1 A 0
    TNT1 A 0 A_SetUserVar("user_countdowntimer", 15)
  SpawnLoop:
    TNT1 A 1 A_Look
    TNT1 A 0 A_SetUserVar("user_countdowntimer", user_countdowntimer - 1)
    TNT1 A 0 A_JumpIf (user_countdowntimer <= 0, "Death")
    Goto SpawnLoop
  See:
    TNT1 A 1 A_CustomMissile ("RLNightmareBossFireball")
  Death:
    TNT1 A 8
    Stop
  }
}

ACTOR RLNightmareBossFireball
{
   Radius 8
   Height 6
   Speed 25
   Damage (40)
   DamageType "Fire"
   PainType "Explosion"
   DeathType "Explosion"
   Obituary "%o was engulfed in nightmarish flames, thanks to the Icon of Sin."
   Projectile
   +SEEKERMISSILE
   +THRUGHOST
   +BLOODSPLATTER
   RenderStyle Add
   Alpha 0.98
   ReactionTime 30
   Decal "Scorch"
  States
  {
  Spawn:
    TNT1 A 0 NoDelay A_PlaySound ("lordoftheabyss/attack", CHAN_BODY, 1.0, 0, 0.3)
  SpawnLoop:
    TNT1 A 0 A_SpawnItemEx ("RLBruiserBroRageFireBallTrail", -8,0,-8, 0,0,0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 0 A_Weave (2,2, 3.5, 0.2)
    MANF A 1 Bright A_SeekerMissile (3, 3, SMF_LOOK | SMF_PRECISE, 256, 30)
    TNT1 A 0 A_SpawnItemEx ("RLBruiserBroRageFireBallTrail", -8,0,-8, 0,0,0, 0, SXF_NOCHECKPOSITION)
    MANF A 1 Bright A_Weave (2,2, 3.5, 0.2)
    TNT1 A 0 A_SpawnItemEx ("RLBruiserBroRageFireBallTrail", -8,0,-8, 0,0,0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 0 A_Weave (2,2, 3.5, 0.2)
    MANF B 1 Bright A_SeekerMissile (3, 3, SMF_LOOK | SMF_PRECISE, 256, 30)
    TNT1 A 0 A_SpawnItemEx ("RLBruiserBroRageFireBallTrail", -8,0,-8, 0,0,0, 0, SXF_NOCHECKPOSITION)
    MANF B 1 Bright A_Weave (2,2, 3.5, 0.2)
	TNT1 A 0 A_CountDown
    Goto SpawnLoop
  Death:
    TNT1 A 0 A_Explode (64, 128)
    TNT1 A 0 A_SetTranslucent (0.95, 1)
	TNT1 A 0 A_JumpIf(CallACS("DRLA_MonsterQuake") == 0, 3)
    TNT1 A 0 A_Quake (1, 8, 0, 256, "")
    TNT1 A 0 A_Quake (3, 8, 0, 128, "")
    TNT1 A 0 A_PlaySound ("skeleton/tracex", 7, 1, 0, 0.7)
    TNT1 A 0 A_PlaySound("skeleton/tracex", CHAN_ITEM, 0.05, 0, 0.15)
    MEXP A 4 Bright
    MEXP B 4 Bright
    MEXP C 3 Bright
    MEXP D 3 Bright
    MEXP E 2 Bright
    MEXP F 2 Bright
	Stop
  }
}

//==============================================================================
//		ICON OF SIN [Technophobia]
//==============================================================================

ACTOR RLTechnophobiaBossEye : BossEye
{
  Obituary "%o was utterly crushed by the Tech-Sinner."
  
  var int user_bossbrainattack;
  States
  {
  Spawn:
    TNT1 A 10 A_Look
    Loop
  See:
    TNT1 A 181 A_PlaySound ("cybericonofsin/sight", CHAN_VOICE, 1, 0, 0)
	Goto AttackLoop
  AttackLoop:
    TNT1 A 0 A_JumpIfInventory ("RLBossBrainIntensity", 8, "Ded", AAPTR_PLAYER1)
    TNT1 A 20 A_JumpIfInventory ("RLBossBrainIntensity", 7, 1, AAPTR_PLAYER1)
    TNT1 A 20 A_JumpIfInventory ("RLBossBrainIntensity", 6, 1, AAPTR_PLAYER1)
    TNT1 A 20 A_JumpIfInventory ("RLBossBrainIntensity", 5, 1, AAPTR_PLAYER1)
    TNT1 A 20 A_JumpIfInventory ("RLBossBrainIntensity", 4, 1, AAPTR_PLAYER1)
    TNT1 A 20 A_JumpIfInventory ("RLBossBrainIntensity", 3, 1, AAPTR_PLAYER1)
    TNT1 A 20 A_JumpIfInventory ("RLBossBrainIntensity", 2, 1, AAPTR_PLAYER1)
    TNT1 A 20 A_JumpIfInventory ("RLBossBrainIntensity", 1, 1, AAPTR_PLAYER1)
    TNT1 A 0
    TNT1 A 0 A_JumpIf (user_bossbrainattack >= 4, "AttackMissiles")
    TNT1 A 0 A_JumpIf (user_bossbrainattack >= 2, "AttackMines")
	Goto AttackMonsters
	
  AttackMonsters:
    TNT1 AAA 50 A_BrainSpit ("RLTechnophobiaSpawnShot")
    TNT1 A 0 A_SetUserVar("user_bossbrainattack", user_bossbrainattack+1)
    TNT1 A 70
    Goto AttackLoop
  AttackMines:
    TNT1 AAAAAA 10 A_BrainSpit ("RLTechnophobiaSpawnShotMines")
    TNT1 A 0 A_SetUserVar("user_bossbrainattack", user_bossbrainattack+1)
    TNT1 A 25
    Goto AttackLoop
  AttackMissiles:
    TNT1 AAAAAAAA 15 A_BrainSpit ("RLTechnophobiaBossMissileSpawner")
    TNT1 A 0 A_SetUserVar("user_bossbrainattack", 0)
    TNT1 A 10
    Goto AttackLoop
  Ded:
    TNT1 A -1
    Stop
  }
}

ACTOR RLTechnophobiaBossBrain : RLBossBrain
{
  States
  {
  Spawn:
    TNT1 A 0 A_JumpIfInventory ("RLIconofSinDestructionator", 1, "IsDed")
    BBRN A 10 A_PlaySound ("cybericonofsin/loop", 5, 1, 1, 0.1)
    Loop
  Pain:
 // Damage the icon 8 times to kill it, this prevents one-shots from super powerful weaponry
    TNT1 A 0 A_SetUserVar("user_bossbrainhealth", user_bossbrainhealth+1)
    TNT1 A 0 A_JumpIf (user_bossbrainhealth >= 8, "IsDed")
    TNT1 A 0 A_GiveInventory ("RLBossBrainIntensity", 1, AAPTR_PLAYER1)
    TNT1 A 0 A_Jump (256, "PainQuake")
	Goto PainQuake
  PainFrame:
    TNT1 A 0 A_ChangeFlag ("NOPAIN", 1)
    TNT1 A 0 A_ChangeFlag ("INVULNERABLE", 1)
    BBRN B 36 A_PlaySound ("cybericonofsin/pain", CHAN_VOICE, 1, 0, 0.1)
    TNT1 A 0 A_ChangeFlag ("INVULNERABLE", 0)
    TNT1 A 0 A_ChangeFlag ("NOPAIN", 0)
    Goto Spawn
  DeathFrame:
    TNT1 A 0 A_PlaySound ("cybericonofsin/death", CHAN_VOICE, 1, 0, 0.1)
    TNT1 A 0 A_PlaySound ("iconofsin/explosion", CHAN_WEAPON, 1, 0, 0.1)
    TNT1 A 0 A_PlaySound ("iconofsin/explosion2", 5, 1, 0, 0.1)
    TNT1 A 0 A_PlaySound ("iconofsin/explosion", 6, 1, 0, 0.0)
    TNT1 A 0 A_PlaySound ("iconofsin/explosion2", 7, 1, 0, 0.0)
    BBRN B 0 A_Jump (256, "DeathLoop")
	Goto DeathLoop
  }
}

ACTOR RLTechnophobiaSpawnShot : SpawnShot
{
  Speed 16
  Scale 0.1
  Translation "192:202=168:183"
  SeeSound ""
  DeathSound "misc/teleport"
  States
  {
  Spawn:
    TNT1 A 0 NoDelay A_PlaySound ("techvile/electroball", 7, 1, 0, 0.5)
  SpawnLoop:
    TNT1 A 0 A_PlaySound ("techvile/lightningloop", 6, 0.4, 1, 1.3)
    TNT1 AAA 0 A_CustomRailgun (0, 0, "None", "Red", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLParticleBeamPuff2", frandom(0,359), frandom(-45,45), random(64,256), 1, 0.2, 0, "None", -20)
    BBAL A 1 Bright A_SpawnFly ("RLRedTeleportFog")
    TNT1 AAA 0 A_CustomRailgun (0, 0, "None", "Red", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLParticleBeamPuff2", frandom(0,359), frandom(-45,45), random(64,256), 1, 0.2, 0, "None", -20)
    TNT1 A 1 A_SpawnFly ("RLRedTeleportFog")
    TNT1 AAA 0 A_CustomRailgun (0, 0, "None", "Red", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLParticleBeamPuff2", frandom(0,359), frandom(-45,45), random(64,256), 1, 0.2, 0, "None", -20)
    BBAL B 1 Bright A_SpawnFly ("RLRedTeleportFog")
    TNT1 AAA 0 A_CustomRailgun (0, 0, "None", "Red", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLParticleBeamPuff2", frandom(0,359), frandom(-45,45), random(64,256), 1, 0.2, 0, "None", -20)
    TNT1 A 1 A_SpawnFly ("RLRedTeleportFog")
    TNT1 AAA 0 A_CustomRailgun (0, 0, "None", "Red", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLParticleBeamPuff2", frandom(0,359), frandom(-45,45), random(64,256), 1, 0.2, 0, "None", -20)
    BBAL C 1 Bright A_SpawnFly ("RLRedTeleportFog")
    TNT1 AAA 0 A_CustomRailgun (0, 0, "None", "Red", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLParticleBeamPuff2", frandom(0,359), frandom(-45,45), random(64,256), 1, 0.2, 0, "None", -20)
    TNT1 A 1 A_SpawnFly ("RLRedTeleportFog")
    TNT1 AAA 0 A_CustomRailgun (0, 0, "None", "Red", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLParticleBeamPuff2", frandom(0,359), frandom(-45,45), random(64,256), 1, 0.2, 0, "None", -20)
    BBAL D 1 Bright A_SpawnFly ("RLRedTeleportFog")
    TNT1 AAA 0 A_CustomRailgun (0, 0, "None", "Red", RGF_SILENT | RGF_FULLBRIGHT, 0, 25, "RLParticleBeamPuff2", frandom(0,359), frandom(-45,45), random(64,256), 1, 0.2, 0, "None", -20)
    TNT1 A 1 A_SpawnFly ("RLRedTeleportFog")
    Loop
  }
}

ACTOR RLTechnophobiaSpawnShotMines : RLTechnophobiaSpawnShot
{
  DropItem "RLTechnophobiaHellmine"
}

ACTOR RLTechnophobiaBossMissileSpawner : SpawnShot
{
  Speed 20
  SeeSound ""
  DeathSound ""
  DropItem "RLTechnophobiaBossMissileShooter" 				255 1
  States
  {
  Spawn:
    TNT1 A 0
//    TNT1 A 0 A_PlaySound ("brain/cube", CHAN_BODY, 1, 0, 1.75)
  SpawnA:
    MISL A 1 Bright A_SpawnFly ("RLMonsterpackThingo")
	Goto SpawnMissile+1
  SpawnMissile:
	TNT1 A 5
    TNT1 AAAAAAAAAAAAAAAAAAAAA 0 A_Wander
	TNT1 A 0 A_Warp (AAPTR_DEFAULT, 0,0,random(-128,128))
    TNT1 A 0 A_CheckSight ("SpawnMissile")
    TNT1 A 0 A_SpawnItemEx ("RLTechnophobiaBossMissileShooter", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION | SXF_NOPOINTERS)
	Stop
  }
}

ACTOR RLTechnophobiaBossMissileShooter
{
  Radius 4
  Height 4
  Monster
  Obituary "%o was blasted to chunks, another victim of the Icon of Sin."
  +NODAMAGE
  +THRUACTORS
  +NOCLIP
  +NOGRAVITY
  +NOINFIGHTING
  +NEVERTARGET
  +LOOKALLAROUND
  -COUNTKILL
  
  var int user_countdowntimer;
  States
  {
  Spawn:
    TNT1 A 0
    TNT1 A 0 A_SetUserVar("user_countdowntimer", 15)
  SpawnLoop:
    TNT1 A 1 A_Look
    TNT1 A 0 A_SetUserVar("user_countdowntimer", user_countdowntimer - 1)
    TNT1 A 0 A_JumpIf (user_countdowntimer <= 0, "Death")
    Goto SpawnLoop
  See:
    TNT1 A 1 A_CustomMissile ("RLTechnophobiaBossMissile")
  Death:
    TNT1 A 8
    Stop
  }
}

ACTOR RLTechnophobiaBossMissile
{
   Radius 8
   Height 6
   Speed 20
   Damage (50)
   DamageType "Fire"
   PainType "Explosion"
   DeathType "Explosion"
   Obituary "%o was blasted to chunks, another victim of the Icon of Sin."
   Projectile
   +SEEKERMISSILE
   +THRUGHOST
   +BLOODSPLATTER
   Decal "Scorch"
  States
  {
  Spawn:
    TNT1 A 0 NoDelay A_SpawnItemEx ("TeleportFog", 0,0,-24, 0,0,0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 0 A_PlaySound ("misc/teleport", 7, 1.0, 0, 0.5)
    TNT1 A 0 A_PlaySound ("cybruiser/fire", CHAN_BODY, 1.0, 0, 0.8)
    TNT1 A 0 A_SeekerMissile (90, 90, SMF_LOOK | SMF_PRECISE, 256, 30)
  SpawnLoop:
    MISL A 1 Bright A_SpawnItemEx ("RLCyberneticRevenantMissileTrail", -16,0,8, 0,0,0, 180, SXF_NOCHECKPOSITION)
    Goto SpawnLoop
  Death:
    TNT1 A 0 A_SetTranslucent (0.95, 1)
    TNT1 A 0 A_Explode (128,128,0)
	TNT1 A 0 A_JumpIf(CallACS("DRLA_MonsterQuake") == 0, 3)
    TNT1 A 0 A_Quake (1, 8, 0, 1024, "")
    TNT1 A 0 A_Quake (6, 8, 0, 512, "")
	TNT1 A 0 A_JumpIf(CallACS("GnuCustardCheck"), "GuncasterImpact")
    TNT1 A 0 A_PlaySound ("weapons/rocklx", 7, 1, 0, 0.5)
    TNT1 A 0 A_PlaySound("weapons/rocklx", CHAN_ITEM, 0.05, 0, 0.05)
	Goto DeathAnimation
  DeathAnimation:
    MEXP A 4 Bright
    MEXP B 4 Bright
    MEXP C 3 Bright
    MEXP D 3 Bright
    MEXP E 2 Bright
    MEXP F 2 Bright
    Stop
	
  GuncasterImpact:
    TNT1 A 0 A_PlaySound("Matriarch/Hit", 5, 0.8)
    TNT1 A 0 A_PlaySound("Matriarch/Exp", 6, 1.0)
    TNT1 A 0 A_PlaySound("Matriarch/Exp", CHAN_ITEM, 0.05, 0, 0.05)
    TNT1 A 0 A_SpawnItemEx("RLGuncasterMonsterExplosion", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION)
    Stop
  }
}

// Unused, old behaviour dropped missiles on your noggin like some sort of roodery
ACTOR RLTechnophobiaDropMissile
{
  Radius 6
  Height 12
  Speed 0
  Damage 20
  DamageType "Fire"
  PainType "Explosion"
  DeathType "Explosion"
  Species "RLIconOfSin"
  Projectile
  +THRUGHOST
  +THRUSPECIES
  +DONTHARMSPECIES
  +SPAWNCEILING
  SeeSound ""
  DeathSound "weapons/rocklx"
  Obituary "%o forgot to look up."
  States
  {
  Spawn:
    TIOM A 1 Bright A_SpawnItemEx ("RLCyberneticRevenantMissileTrail", 0,0,18, 0,0,0, 0, SXF_NOCHECKPOSITION)
    Loop
  Death:
    TNT1 A 0 A_SetTranslucent (0.95, 1)
    TNT1 A 0 A_Explode (128,128)
    MEXP A 4 Bright
    MEXP B 4 Bright
    MEXP C 3 Bright
    MEXP D 3 Bright
    MEXP E 2 Bright
    MEXP F 2 Bright
    Stop
  }
}

ACTOR RLTechnophobiaDropPlasmaMissile : RLTechnophobiaDropMissile
{
  DamageType "Plasma"
  PainType "PlasmaExplosion"
  DeathType "PlasmaExplosion"
  DeathSound "weapons/bfgx"
  States
  {
  Spawn:
    TIOM B 1 Bright A_SpawnItemEx ("RLCyberneticRevenantMissileTrail", 0,0,18, 0,0,0, 0, SXF_NOCHECKPOSITION)
    Loop
  Death:
    TNT1 A 0 A_SetTranslucent (0.95, 1)
    TNT1 A 0 A_Explode (128,128)
    BFE1 ABCDEF 8 Bright
    Stop
  }
}

//==============================================================================
//		ICON OF SIN [Armageddon]
//==============================================================================

actor RLArmageddonBossEye : BossEye
{
  var int user_bossbrainattack;
  States
  {
  Spawn:
    TNT1 A 10 A_Look
    Loop
  See:
    TNT1 A 181 A_PlaySound ("nightmareiconofsin/sight", CHAN_VOICE, 1, 0, 0.1)
	Goto AttackLoop
	
  AttackLoop:
    TNT1 A 0 A_JumpIfInventory ("RLBossBrainIntensity", 10, "Ded", AAPTR_PLAYER1)
    TNT1 A 0 A_JumpIfInventory ("RLBossBrainIntensity", 9, "AttackDesperation", AAPTR_PLAYER1)
    TNT1 A 0 A_JumpIfInventory ("RLBossBrainIntensity", 8, 1, AAPTR_PLAYER1)
    TNT1 A 20 A_JumpIfInventory ("RLBossBrainIntensity", 7, 1, AAPTR_PLAYER1)
    TNT1 A 20 A_JumpIfInventory ("RLBossBrainIntensity", 6, 1, AAPTR_PLAYER1)
    TNT1 A 20 A_JumpIfInventory ("RLBossBrainIntensity", 5, 1, AAPTR_PLAYER1)
    TNT1 A 20 A_JumpIfInventory ("RLBossBrainIntensity", 4, 1, AAPTR_PLAYER1)
    TNT1 A 20 A_JumpIfInventory ("RLBossBrainIntensity", 3, 1, AAPTR_PLAYER1)
    TNT1 A 20 A_JumpIfInventory ("RLBossBrainIntensity", 2, 1, AAPTR_PLAYER1)
    TNT1 A 20 A_JumpIfInventory ("RLBossBrainIntensity", 1, 1, AAPTR_PLAYER1)
    TNT1 A 30
    TNT1 A 0 A_JumpIf (user_bossbrainattack >= 1, "AttackMonsters")
	Goto AttackOrbs
	
  AttackMonsters:
    TNT1 A 0 A_JumpIf (user_bossbrainattack >= 6, "AttackOrbs")
    TNT1 AA 20 A_BrainSpit ("RLArmageddonAttackSpawnShot3")
    TNT1 A 0 A_SetUserVar("user_bossbrainattack", user_bossbrainattack+1)
    TNT1 A 35
    Goto AttackLoop
  AttackOrbs:
    TNT1 A 0 A_JumpIfInventory ("RLBossBrainIntensity", 5, "AttackOrbs2", AAPTR_PLAYER1)
    TNT1 AAA 12 A_BrainSpit ("RLArmageddonAttackSpawnShot")
    TNT1 A 0 A_SetUserVar("user_bossbrainattack", 1)
    TNT1 A 25
    Goto AttackLoop
  AttackOrbs2:
    TNT1 AAAAAA 12 A_BrainSpit ("RLArmageddonAttackSpawnShot")
    TNT1 A 0 A_SetUserVar("user_bossbrainattack", 1)
    TNT1 A 45
    Goto AttackLoop
  AttackDesperation:
    TNT1 A 70 A_BrainSpit ("RLArmageddonAttackSpawnShot2")
    Goto AttackDesperation
  Ded:
    TNT1 A -1
    Stop
  }
}

ACTOR RLArmageddonBossBrain : RLBossBrain
{
  States
  {
  Spawn:
    TNT1 A 0 A_JumpIfInventory ("RLIconofSinDestructionator", 1, "IsDed")
    BBRN A 10 A_PlaySound ("nightmareiconofsin/loop", 5, 1, 1, 0.1)
    Loop
  Pain:
 // Damage the icon 10 times to kill it, this prevents one-shots from super powerful weaponry
    TNT1 A 0 A_SetUserVar("user_bossbrainhealth", user_bossbrainhealth+1)
    TNT1 A 0 A_JumpIf (user_bossbrainhealth >= 10, "IsDed")
    TNT1 A 0 A_GiveInventory ("RLBossBrainIntensity", 1, AAPTR_PLAYER1)
    TNT1 A 0 A_Jump (256, "PainQuake")
	Goto PainQuake
  PainFrame:
    TNT1 A 0 A_ChangeFlag ("NOPAIN", 1)
    TNT1 A 0 A_ChangeFlag ("INVULNERABLE", 1)
    BBRN B 36 A_PlaySound ("nightmareiconofsin/pain", CHAN_VOICE, 1, 0, 0.1)
    TNT1 A 0 A_ChangeFlag ("INVULNERABLE", 0)
    TNT1 A 0 A_ChangeFlag ("NOPAIN", 0)
    Goto Spawn
  DeathFrame:
    TNT1 A 0 A_PlaySound ("nightmareiconofsin/death", CHAN_VOICE, 1, 0, 0.1)
    TNT1 A 0 A_PlaySound ("iconofsin/explosion", CHAN_WEAPON, 1, 0, 0.1)
    TNT1 A 0 A_PlaySound ("iconofsin/explosion2", 5, 1, 0, 0.1)
    TNT1 A 0 A_PlaySound ("iconofsin/explosion", 6, 1, 0, 0.0)
    TNT1 A 0 A_PlaySound ("iconofsin/explosion2", 7, 1, 0, 0.0)
    BBRN B 0 A_Jump (256, "DeathLoop")
	Goto DeathLoop
  }
}

ACTOR RLArmageddonAttackSpawnShot2 : SpawnShot
{
  DropItem "RLArmageddonArchvile"
}

ACTOR RLArmageddonAttackSpawnShot3 : SpawnShot
{
  DropItem "RLArmageddonImp" 				255 80
  DropItem "RLArmageddonDemon"				255 70
//  DropItem "RLArmageddonSpectreSpawner"		255 30
  DropItem "RLArmageddonMancubus"			255 20
  DropItem "RLArmageddonCacodemon"			255 15
//  DropItem "RLArmageddonHellKnightSpawner"	255 24
  DropItem "RLArmageddonArachnotron"		255 20
  DropItem "RLArmageddonPainElemental"		255 6
  DropItem "RLArmageddonRevenant"			255 25
  DropItem "RLArmageddonBaronOfHell"		255 4
  DropItem "RLArmageddonArchvile"			255  1
}

ACTOR RLArmageddonAttackSpawnShot : SpawnShot
{
  Speed 32
  SeeSound ""
  DeathSound "revenihilator/hyperboltimpact"
  Scale 0.1
  RenderStyle Add
  Alpha 0.99
  DropItem "RLArmageddonBossAttackShooter"
  States
  {
  Spawn:
	TNT1 A 0
	TNT1 A 0 A_PlaySound ("abominant/gazefire", 7, 1, 0, 0.5)
  SpawnLoop:
    ABOX NOPQ 1 Bright A_SpawnFly ("RLArmageddonBossInvisibleThing")
    Loop
  }
}

ACTOR RLArmageddonBossInvisibleThing
{
  Radius 4
  Height 4
  +NOINTERACTION
  +NOCLIP
  States
  {
  Spawn:
    TNT1 A 2
    Stop
  }
}

ACTOR RLArmageddonBossAttackShooter
{
  Radius 4
  Height 4
  Mass 0x7FFFFFFF
  Monster
  Obituary "%o was annihilated by one of the Icon of Sin's murderspheres."
  +NODAMAGE
  +THRUACTORS
  +NOGRAVITY
  +NOINFIGHTING
  +NEVERTARGET
  +LOOKALLAROUND
  +FLOATBOB
  +MOVEWITHSECTOR
  +RELATIVETOFLOOR
  +NOTELESTOMP
  +NEVERTARGET
  +DONTTHRUST
  +DONTBLAST
  +NOTELEFRAG
  +DONTGIB
  +NOCLIP
  -CANBLAST
  -SHOOTABLE
  -COUNTKILL
  -SOLID

  var int user_countdowntimer;
  States
  {
  Spawn:
  See:
    TNT1 A 1
    TNT1 A 0 A_SetUserVar("user_countdowntimer", 40)
    TNT1 A 0 A_ChangeFlag ("NOCLIP", 0)
    TNT1 A 1 A_Warp (AAPTR_DEFAULT, 0,0,48, 0, WARPF_TOFLOOR)
//    TNT1 AAA 0 A_Warp (AAPTR_DEFAULT, 0,0,z+12, 0, WARPF_TOFLOOR)
    TNT1 A 0 A_SpawnItemEx ("RLAbominantAnnihilationGazeImpact", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 0 A_SetScale (0.10)
    ABOX NOPQNOPQNO 1 Bright A_SetScale (scalex*1.25)
    TNT1 A 0 A_SetScale (1.0)
  SpawnLoopNoAttack:
    TNT1 A 0 A_SetScale (frandom(0.85,1.15))
    TNT1 A 0 A_Warp (AAPTR_DEFAULT, 0,0,48, 0, WARPF_TOFLOOR)
    ABOX N 1 Bright A_SpawnItemEx ("RLArmageddonBossAttackShooterAfterImage", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERSPRITEFRAME)
    TNT1 A 0 A_SetScale (frandom(0.85,1.15))
    TNT1 A 0 A_Warp (AAPTR_DEFAULT, 0,0,48, 0, WARPF_TOFLOOR)
    ABOX O 1 Bright A_SpawnItemEx ("RLArmageddonBossAttackShooterAfterImage", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERSPRITEFRAME)
    TNT1 A 0 A_SetScale (frandom(0.85,1.15))
    TNT1 A 0 A_Warp (AAPTR_DEFAULT, 0,0,48, 0, WARPF_TOFLOOR)
    ABOX P 1 Bright A_SpawnItemEx ("RLArmageddonBossAttackShooterAfterImage", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERSPRITEFRAME)
    TNT1 A 0 A_SetScale (frandom(0.85,1.15))
    TNT1 A 0 A_Warp (AAPTR_DEFAULT, 0,0,48, 0, WARPF_TOFLOOR)
    ABOX Q 1 Bright A_SpawnItemEx ("RLArmageddonBossAttackShooterAfterImage", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERSPRITEFRAME)
    TNT1 A 0 A_SetUserVar("user_countdowntimer", user_countdowntimer - 1)
    TNT1 A 0 A_JumpIf (user_countdowntimer <= 35, "SpawnLoop")
    Goto SpawnLoopNoAttack
  SpawnLoop:
    TNT1 A 0 A_SetScale (frandom(1.3,1.5))
    TNT1 A 0 A_Warp (AAPTR_DEFAULT, 0,0,48, 0, WARPF_TOFLOOR)
    TNT1 A 0 A_CheckRange(400, 2)
    TNT1 A 0 A_LookEx (LOF_NOSOUNDCHECK, 0, 0, 0, 360, "Attack")
    ABOX J 1 Bright A_SpawnItemEx ("RLArmageddonBossAttackShooterAfterImage", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERSPRITEFRAME)
    TNT1 A 0 A_SetScale (frandom(1.3,1.5))
    TNT1 A 0 A_Warp (AAPTR_DEFAULT, 0,0,48, 0, WARPF_TOFLOOR)
    TNT1 A 0 A_CheckRange(400, 2)
    TNT1 A 0 A_LookEx (LOF_NOSOUNDCHECK, 0, 0, 0, 360, "Attack")
    ABOX K 1 Bright A_SpawnItemEx ("RLArmageddonBossAttackShooterAfterImage", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERSPRITEFRAME)
    TNT1 A 0 A_SetScale (frandom(1.3,1.5))
    TNT1 A 0 A_Warp (AAPTR_DEFAULT, 0,0,48, 0, WARPF_TOFLOOR)
    TNT1 A 0 A_CheckRange(400, 2)
    TNT1 A 0 A_LookEx (LOF_NOSOUNDCHECK, 0, 0, 0, 360, "Attack")
    ABOX L 1 Bright A_SpawnItemEx ("RLArmageddonBossAttackShooterAfterImage", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERSPRITEFRAME)
    TNT1 A 0 A_SetScale (frandom(1.3,1.5))
    TNT1 A 0 A_Warp (AAPTR_DEFAULT, 0,0,48, 0, WARPF_TOFLOOR)
    TNT1 A 0 A_CheckRange(400, 2)
    TNT1 A 0 A_LookEx (LOF_NOSOUNDCHECK, 0, 0, 0, 360, "Attack")
    ABOX M 1 Bright A_SpawnItemEx ("RLArmageddonBossAttackShooterAfterImage", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERSPRITEFRAME)
    TNT1 A 0 A_SetUserVar("user_countdowntimer", user_countdowntimer - 1)
    TNT1 A 0 A_JumpIf (user_countdowntimer <= 0, "Death")
    Goto SpawnLoop
  Attack:
    TNT1 A 1 A_CustomMissile ("RLAbominantPulse", -12)
  Death:
    TNT1 A 0 A_SpawnItemEx ("RLAbominantAnnihilationGazeImpact", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION)
  DeathLoop:
    ABOX JKLM 1 Bright A_FadeTo(0, 0.22, 1)
    Loop
  }
}

ACTOR RLArmageddonBossAttackShooterAfterImage
{
   Radius 4
   Height 4
   Scale 1.0
   RenderStyle Add
   Alpha 0.35
   +NOGRAVITY
   +NOCLIP
   +NOINTERACTION
   +NOTONAUTOMAP
   +NOTIMEFREEZE
   States
   {
   Spawn:
    "####" "#" 0 A_SetScale (scalex*1.02)
    "####" "#" 1 A_FadeTo (0, 0.05, 1)
    Loop
   }
}

