Actor NemesisDefiler : LegendaryRedeemer 28018
{
  Health 3000
  Speed 20
  PainChance 20
  PainChance "Explosion", 128
  BloodColor "Black"
  DamageFactor 0.55
  DamageFactor "PlayerNemesisPlasma", 0.0
  DamageFactor "Explosion", 0.2
  DamageFactor "PlayerDTRG", 0.4
  DamageFactor "DTRailgun", 0.4
  DamageFactor "PDTPuff", 0.4
  DamageFactor "RailG", 0.3
  DamageFactor "PlayerPyro", 0.1
  DropItem "NemesisHealthBonusMax", 256, 32
  DropItem "NemesisArmorBonus32", 256
  DropItem "NemesisHealthBonusMax", 256, 32
  DropItem "NemesisArmorBonus32", 256
  DropItem "NemesisSphere", 100, 1
  DropItem "LegendaryRune", 128, 1
  DropItem "NLDemonAmmo", 256
  DropItem "NLDemonAmmoBox", 256
  DropItem "Nemesis Rifle", 200, 1
  SeeSound "NemesisDefiler/Sight"
  ActiveSound "NemesisDefiler/Active"
  PainSound "NemesisDefiler/Pain"
  DeathSound "NemesisDefiler/Death"
  Obituary "%o was eradicated by the Nemesis Defiler."
  var int user_missile;
  Tag "\c[v9]Nemesis Defiler\c-"
  States
  {
  Spawn:
    TNT1 AAA 0 A_SpawnItemEx("NDefilerSmokeSpawner")
    NMDF A 10 Bright A_Look
    Loop
  See:
    TNT1 A 0 A_JumpIf(user_music == 1,3)
    TNT1 A 0 ACS_NamedExecuteAlways("StartMonsterMusic",0,743)
	TNT1 A 0 A_SetUserVar("user_music",1)
	TNT1 A 0 A_JumpIfInventory("RunesCheck",1,2)
	TNT1 A 0 ACS_NamedExecuteWithResult("CheckRunes")
	TNT1 A 0 A_JumpIf(user_suicide == 1,"SeeSuicide")
	TNT1 AAA 0 A_SpawnItemEx("NDefilerSmokeSpawner")
    NMDF AAA 2 Bright A_Chase
	TNT1 A 0 A_Jump(68,"Avoid","Rush","Trap","Teleport")
    Loop
  SeeSuicide:
	TNT1 A 0 A_JumpIfHealthLower(50,"SeeKamikaze")
	TNT1 A 0 A_SpawnItemEx("NemesisSoulFlameSpawner")
    NMDF A 3 Bright A_Chase("","Missile.Suicide")
    Loop	
  SeeKamikaze:
	TNT1 A 0 A_ChangeFlag("ALWAYSFAST",1)
	TNT1 A 0 A_SpawnItemEx("NemesisSoulFlameSpawner")
    NMDF A 3 Bright A_Chase("","Kamikaze")
	Loop
  Rush:
	TNT1 AAA 0 A_SpawnItemEx("NDefilerSmokeSpawner")	
	TNT1 A 0 A_JumpIf(user_suicide == 1,"SeeSuicide")
	TNT1 AA 0 A_Chase
    NMDF A 1 Bright A_SpawnItemEx("NemesisDefilerGhost")
	TNT1 A 0 A_Jump(12,"See")
    Loop
  Avoid:
	TNT1 A 0
	TNT1 A 0 A_JumpIf(user_suicide == 1,"SeeSuicide")
	TNT1 A 0 A_SetAngle(angle+random(0,359))
	TNT1 A 0 A_Recoil(-50)
	TNT1 A 0 A_FaceTarget
	NMDF GGGGGGGGGGGGG 1 A_SpawnItemEx("NemesisDefilerGhost")
	TNT1 A 0 A_JumpIfTargetInLOS(2)
	TNT1 A 0 A_Jump(145,"See")
	NMDF G 1 A_Stop
	TNT1 A 0 A_Jump(150,2)
	TNT1 A 0 A_JumpIfTargetInLOS("Comets")
    Goto Avoid
  Teleport:
    NMDF A 1 A_UnSetShootable
	TNT1 AAA 0 A_SpawnItemEx("NDefilerSmokeSpawner")
	NMDF AAAAAAAAAAA 1 A_FadeOut(0.1,0)
	NMDF AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_Wander
	NMDF AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_Wander
    NMDF A 1 A_PlayWeaponSound("boss/teleport")
	TNT1 AAA 0 A_SpawnItemEx("NDefilerSmokeSpawner")
	NMDF AAAAAAAAAAA 1 A_FadeIn(0.1)
    NMDF A 1 A_SetShootable
    Goto See		
  Trap:
	TNT1 A 0 A_JumpIf(user_suicide == 1,"SeeSuicide")
    TNT1 A 0 A_SetAngle(random(0,359))
	TNT1 A 0 A_JumpIfCloser(2,2)
	TNT1 A 0 A_Jump(256,"See")
	TNT1 A 0 A_PlaySound("NemesisDefiler/Attack1",7)
    NMDF BC 5 Bright
	TNT1 A 0 A_PlaySound("reedemer/trap")
    NMDF D 5 Bright A_SpawnItemEx("NemesisDefilerTrap",45,0,16,15)
    Goto See
  Missile:
    TNT1 A 0 A_SetShootable
    TNT1 A 0 A_SetTranslucent(1)
    TNT1 A 0 A_JumpIf(user_suicide == 1,"SeeSuicide")
	TNT1 A 0 A_Jump(128,2)
	TNT1 A 0 A_JumpIfHealthLower(400,"Suicide")
	TNT1 A 0 A_JumpIfHealthLower(200,"Suicide")
    TNT1 A 0 A_Jump(128,"BFG9K","LightningBall","TrapAttack","Laser","Accuser","HellStaff")
	TNT1 A 0 A_Jump(64,"Mindfuck")
	Goto Comets
  Missile.Suicide:
    TNT1 A 0 A_Jump(128,"LightningBall.Suicide","TrapAttack.Suicide","Comets.Suicide")
	TNT1 A 0 A_Jump(64,"Mindfuck")
	Goto BFG9K
  BFG9K:
    TNT1 A 0 A_PlaySound("weapons/bfgf")
	NMDF EF 9 Bright A_FaceTarget
	NMDF G 15 Bright A_CustomMissile("DefilerBFGBall",30)
	Goto See
  LightningBall:
	TNT1 A 0 A_PlaySound("NemesisDefiler/Attack2",7)
	TNT1 A 0 A_SpawnItemEx("NDefilerLightingFX",41,0,43)
	TNT1 A 0 A_SpawnItemEx("NDefilerWhiteSmokeSpawner")
	NMDF E 4 Bright A_FaceTarget
	TNT1 A 0 A_SpawnItemEx("NDefilerLightingFX",41,0,43)
	TNT1 A 0 A_SpawnItemEx("NDefilerWhiteSmokeSpawner")
	NMDF E 4 Bright A_FaceTarget
	TNT1 A 0 A_SpawnItemEx("NDefilerLightingFX",41,0,43)
	TNT1 A 0 A_SpawnItemEx("NDefilerWhiteSmokeSpawner")
	NMDF E 4 Bright A_FaceTarget
	TNT1 A 0 A_SpawnItemEx("NDefilerLightingFX",41,0,43)
	TNT1 A 0 A_SpawnItemEx("NDefilerWhiteSmokeSpawner")
	NMDF E 4 Bright A_FaceTarget
	TNT1 A 0 A_SpawnItemEx("NDefilerLightingFX",41,0,43)
	TNT1 A 0 A_SpawnItemEx("NDefilerWhiteSmokeSpawner")
	NMDF E 4 Bright A_FaceTarget
	TNT1 A 0 A_SpawnItemEx("NDefilerLightingFX",41,0,43)
	TNT1 A 0 A_SpawnItemEx("NDefilerWhiteSmokeSpawner")
	NMDF E 4 Bright A_FaceTarget
	TNT1 A 0 A_SpawnItemEx("NDefilerLightingFX",41,0,43)
	TNT1 A 0 A_SpawnItemEx("NDefilerWhiteSmokeSpawner")
	NMDF F 4 Bright A_FaceTarget
	TNT1 A 0 A_SpawnItemEx("NDefilerLightingFX",41,0,43)
	TNT1 A 0 A_SpawnItemEx("NDefilerWhiteSmokeSpawner")
	NMDF F 4 Bright A_FaceTarget
	TNT1 A 0 A_SpawnItemEx("NDefilerLightingFX",41,0,43)
	TNT1 A 0 A_SpawnItemEx("NDefilerWhiteSmokeSpawner")
	NMDF F 4 Bright A_FaceTarget
	TNT1 A 0 A_SpawnItemEx("NDefilerLightingFX",41,0,43)
	TNT1 A 0 A_SpawnItemEx("NDefilerWhiteSmokeSpawner")
	NMDF F 4 Bright A_FaceTarget
	TNT1 A 0 A_SpawnItemEx("NDefilerLightingFX",41,0,43)
	TNT1 A 0 A_SpawnItemEx("NDefilerWhiteSmokeSpawner")
	NMDF F 4 Bright A_FaceTarget
	TNT1 A 0 A_SpawnItemEx("NDefilerLightingFX",41,0,43)
	TNT1 A 0 A_SpawnItemEx("NDefilerWhiteSmokeSpawner")
	NMDF F 4 Bright A_FaceTarget
	TNT1 A 0 A_SpawnItemEx("NDefilerWhiteSmokeSpawner")
    NMDF F 30 Bright A_CustomMissile("DefilerLightningProj",41)
	Goto See
  LightningBall.Suicide:
	TNT1 A 0 A_PlaySound("NemesisDefiler/Attack2",7)
	TNT1 A 0 A_SpawnItemEx("NDefilerLightingFX",41,0,43)
	TNT1 A 0 A_SpawnItemEx("NDefilerLightingFX",41,0,43,0,0,0,-20)
	TNT1 A 0 A_SpawnItemEx("NDefilerLightingFX",41,0,43,0,0,0,20)
	TNT1 A 0 A_SpawnItemEx("NDefilerWhiteSmokeSpawner")
	NMDF E 4 Bright A_FaceTarget
	TNT1 A 0 A_SpawnItemEx("NDefilerLightingFX",41,0,43)
	TNT1 A 0 A_SpawnItemEx("NDefilerLightingFX",41,0,43,0,0,0,-20)
	TNT1 A 0 A_SpawnItemEx("NDefilerLightingFX",41,0,43,0,0,0,20)
	TNT1 A 0 A_SpawnItemEx("NDefilerWhiteSmokeSpawner")
	NMDF E 4 Bright A_FaceTarget
	TNT1 A 0 A_SpawnItemEx("NDefilerLightingFX",41,0,43)
	TNT1 A 0 A_SpawnItemEx("NDefilerLightingFX",41,0,43,0,0,0,-20)
	TNT1 A 0 A_SpawnItemEx("NDefilerLightingFX",41,0,43,0,0,0,20)
	TNT1 A 0 A_SpawnItemEx("NDefilerWhiteSmokeSpawner")
	NMDF E 4 Bright A_FaceTarget
	TNT1 A 0 A_SpawnItemEx("NDefilerLightingFX",41,0,43)
	TNT1 A 0 A_SpawnItemEx("NDefilerLightingFX",41,0,43,0,0,0,-20)
	TNT1 A 0 A_SpawnItemEx("NDefilerLightingFX",41,0,43,0,0,0,20)
	TNT1 A 0 A_SpawnItemEx("NDefilerWhiteSmokeSpawner")
	NMDF E 4 Bright A_FaceTarget
	TNT1 A 0 A_SpawnItemEx("NDefilerLightingFX",41,0,43)
	TNT1 A 0 A_SpawnItemEx("NDefilerLightingFX",41,0,43,0,0,0,-20)
	TNT1 A 0 A_SpawnItemEx("NDefilerLightingFX",41,0,43,0,0,0,20)
	TNT1 A 0 A_SpawnItemEx("NDefilerWhiteSmokeSpawner")
	NMDF F 4 Bright A_FaceTarget
	TNT1 A 0 A_SpawnItemEx("NDefilerLightingFX",41,0,43)
	TNT1 A 0 A_SpawnItemEx("NDefilerLightingFX",41,0,43,0,0,0,-20)
	TNT1 A 0 A_SpawnItemEx("NDefilerLightingFX",41,0,43,0,0,0,20)
	TNT1 A 0 A_SpawnItemEx("NDefilerWhiteSmokeSpawner")
	NMDF F 4 Bright A_FaceTarget
	TNT1 A 0 A_SpawnItemEx("NDefilerLightingFX",41,0,43)
	TNT1 A 0 A_SpawnItemEx("NDefilerLightingFX",41,0,43,0,0,0,-20)
	TNT1 A 0 A_SpawnItemEx("NDefilerLightingFX",41,0,43,0,0,0,20)
	TNT1 A 0 A_SpawnItemEx("NDefilerWhiteSmokeSpawner")
	NMDF F 4 Bright A_FaceTarget
	TNT1 A 0 A_SpawnItemEx("NDefilerLightingFX",41,0,43)
	TNT1 A 0 A_SpawnItemEx("NDefilerLightingFX",41,0,43,0,0,0,-20)
	TNT1 A 0 A_SpawnItemEx("NDefilerLightingFX",41,0,43,0,0,0,20)
	TNT1 A 0 A_SpawnItemEx("NDefilerWhiteSmokeSpawner")
	NMDF F 4 Bright A_FaceTarget
	TNT1 A 0 A_SpawnItemEx("NDefilerWhiteSmokeSpawner")
	TNT1 A 0 A_CustomMissile("DefilerLightningProj",41,0,-20)
	TNT1 A 0 A_CustomMissile("DefilerLightningProj",41,0,20)
    NMDF F 30 Bright A_CustomMissile("DefilerLightningProj",41)
	Goto See
  Laser:
	TNT1 A 0 A_PlaySound("NemesisDefiler/Attack1",7)
    NMDF BC 7 Bright A_FaceTarget
    NMDF D 8 Bright A_CustomMissile("DefilerNemesisLaser",25)
	NMDF C 5 A_FaceTarget
    NMDF D 8 Bright A_CustomMissile("DefilerNemesisLaser",25)
	NMDF C 5 A_FaceTarget
    NMDF D 8 Bright A_CustomMissile("DefilerNemesisLaser",25)
	NMDF C 5 A_FaceTarget
    NMDF D 8 Bright A_CustomMissile("DefilerNemesisLaser",25)
	NMDF C 5 A_FaceTarget
    NMDF D 8 Bright A_CustomMissile("DefilerNemesisLaser",25)
    Goto See
  TrapAttack:
	TNT1 A 0 A_PlaySound("NemesisDefiler/Attack1",7)
    NMDF BC 5 Bright A_FaceTarget
	TNT1 A 0 A_SpawnItemEx("NemesisDefilerTrap",45,0,16,15,-4)
	NMDF D 5 Bright A_SpawnItemEx("NemesisDefilerTrap",45,0,16,15,4)
	TNT1 A 0 A_Jump(128,"Teleport")
	TNT1 A 0 A_Jump(64,"LightningBall")
    Goto See
  TrapAttack.Suicide:
	TNT1 A 0 A_PlaySound("NemesisDefiler/Attack1",7)
    NMDF BC 5 Bright A_FaceTarget
	TNT1 A 0 A_SpawnItemEx("NemesisDefilerTrap",45,0,16,15,0)
	TNT1 A 0 A_SpawnItemEx("NemesisDefilerTrap",45,0,16,15,-10)
	NMDF D 5 Bright A_SpawnItemEx("NemesisDefilerTrap",45,0,16,15,10)
	TNT1 A 0 A_Jump(128,"Teleport")
	TNT1 A 0 A_Jump(64,"LightningBall")
    Goto See
  Comets:
	TNT1 A 0 A_PlaySound("NemesisDefiler/Attack1",7)
	NMDF BC 5 Bright A_FaceTarget
	TNT1 A 0 ThrustThing(Angle*256/360+random(-64,64),20,0,0)
	TNT1 A 0 A_FaceTarget
	NMDF D 4 Bright A_CustomMissile("NemesisDefilerComet",25,0,frandom(-4,4))
	TNT1 A 0 A_FaceTarget
	NMDF D 4 Bright A_CustomMissile("NemesisDefilerComet",25,0,frandom(-4,4))
	TNT1 A 0 A_FaceTarget
	NMDF D 4 Bright A_CustomMissile("NemesisDefilerComet",25,0,frandom(-4,4))
	TNT1 A 0 A_FaceTarget
	NMDF D 4 Bright A_CustomMissile("NemesisDefilerComet",25,0,frandom(-4,4))
	TNT1 A 0 A_FaceTarget
	NMDF D 4 Bright A_CustomMissile("NemesisDefilerComet",25,0,frandom(-4,4))
	TNT1 A 0 ThrustThing(Angle*256/360+random(-64,64),20,0,0)
	TNT1 A 0 A_FaceTarget
	NMDF D 4 Bright A_CustomMissile("NemesisDefilerComet",25,0,frandom(-4,4))
	TNT1 A 0 A_FaceTarget
	NMDF D 4 Bright A_CustomMissile("NemesisDefilerComet",25,0,frandom(-4,4))
	TNT1 A 0 A_FaceTarget
	NMDF D 4 Bright A_CustomMissile("NemesisDefilerComet",25,0,frandom(-4,4))
	TNT1 A 0 A_FaceTarget
	NMDF D 4 Bright A_CustomMissile("NemesisDefilerComet",25,0,frandom(-4,4))
	TNT1 A 0 A_FaceTarget
	NMDF D 4 Bright A_CustomMissile("NemesisDefilerComet",25,0,frandom(-4,4))
	TNT1 A 0 A_Stop
	Goto See
  Comets.Suicide:
	TNT1 A 0 A_PlaySound("NemesisDefiler/Attack1",7)
	NMDF BC 5 Bright A_FaceTarget
	TNT1 A 0 A_FaceTarget
	NMDF DDDDDD 2 Bright A_CustomMissile("NemesisDefilerComet",25,0,random(-4,4),CMF_OFFSETPITCH,frandom(-2,2))
	TNT1 A 0 A_FaceTarget
	NMDF DDDDDD 2 Bright A_CustomMissile("NemesisDefilerComet",25,0,random(-4,4),CMF_OFFSETPITCH,frandom(-2,2))
	TNT1 A 0 A_FaceTarget
	NMDF DDDDDD 2 Bright A_CustomMissile("NemesisDefilerComet",25,0,random(-4,4),CMF_OFFSETPITCH,frandom(-2,2))
	Goto See
  Accuser:
	TNT1 A 0 A_PlaySound("NemesisDefiler/Attack1",7)
	NMDF BC 5 Bright A_FaceTarget
	NMDF DDDDDDDDDDDDDDDDDDDDDDDDD 1 Bright A_CustomMissile("DefilerBouncyBall",random(22,27),0,random(-4,4),CMF_OFFSETPITCH,frandom(-2,2))
	Goto See
  HellStaff:
	TNT1 A 0 A_PlaySound("NemesisDefiler/Attack1",7)
	NMDF BC 5 Bright A_FaceTarget
	NMDF DDD 5 Bright A_CustomMissile("DefilerHellStaffBall",random(22,27),0,random(-10,10))
	TNT1 A 0 A_FaceTarget
	NMDF DDD 5 Bright A_CustomMissile("DefilerHellStaffBall",random(22,27),0,random(-10,10))
	TNT1 A 0 A_FaceTarget
	NMDF DDD 5 Bright A_CustomMissile("DefilerHellStaffBall",random(22,27),0,random(-10,10))
	Goto See
  Mindfuck:
	TNT1 A 0 A_PlaySound("NemesisDefiler/Attack2",2,1.0,0,ATTN_NONE)
	TNT1 A 0 A_FaceTarget
	NMDF WWWWW 1 Bright A_SpawnItemEx("NDefilerCrystalSmokeSpawner")
	TNT1 A 0 A_FaceTarget
	NMDF XXXXX 1 Bright A_SpawnItemEx("NDefilerCrystalSmokeSpawner")
	TNT1 A 0 A_FaceTarget
	NMDF YYYYYYYYYYYYYYY 1 Bright A_SpawnItemEx("NDefilerCrystalSmokeSpawner")
	TNT1 A 0 A_JumpIfTargetInLOS(2)
	TNT1 A 0 A_Jump(256,2)
	TNT1 A 0 A_GiveToTarget("NDefilerMindfuckHeart")
	TNT1 A 0 A_FaceTarget
	NMDF YYYYYYYYYYYYYYY 1 Bright A_SpawnItemEx("NDefilerCrystalSmokeSpawner")
	TNT1 A 0 A_JumpIfTargetInLOS(2)
	TNT1 A 0 A_Jump(256,2)
	TNT1 A 0 A_GiveToTarget("NDefilerMindfuckHeart")
	TNT1 A 0 A_FaceTarget
	NMDF YYYYYYYYYYYYYYY 1 Bright A_SpawnItemEx("NDefilerCrystalSmokeSpawner")
	TNT1 A 0 A_JumpIfTargetInLOS(2)
	TNT1 A 0 A_Jump(256,2)
	TNT1 A 0 A_GiveToTarget("NDefilerMindfuckHeart")
	TNT1 A 0 A_FaceTarget
	NMDF YYYYYYYYYYYYYYY 1 Bright A_SpawnItemEx("NDefilerCrystalSmokeSpawner")
	TNT1 A 0 A_JumpIfTargetInLOS(2)
	TNT1 A 0 A_Jump(256,2)
	TNT1 A 0 A_GiveToTarget("NDefilerMindfuckHeart")
	TNT1 A 0 A_FaceTarget
	NMDF YYYYYYYYYYYY 1 Bright A_SpawnItemEx("NDefilerCrystalSmokeSpawner")
	TNT1 A 0 A_JumpIfTargetInLOS(2)
	TNT1 A 0 A_Jump(256,2)
	TNT1 A 0 A_GiveToTarget("NDefilerMindfuckHeart")
	TNT1 A 0 A_FaceTarget
	NMDF YYYYYYYYY 1 Bright A_SpawnItemEx("NDefilerCrystalSmokeSpawner")
	TNT1 A 0 A_JumpIfTargetInLOS(2)
	TNT1 A 0 A_Jump(256,2)
	TNT1 A 0 A_GiveToTarget("NDefilerMindfuckHeart")
	TNT1 A 0 A_FaceTarget
	NMDF YYYYYY 1 Bright A_SpawnItemEx("NDefilerCrystalSmokeSpawner")
	TNT1 A 0 A_JumpIfTargetInLOS(2)
	TNT1 A 0 A_Jump(256,3)
	TNT1 A 0 A_VileTarget("NDefilerMindfuckSound")
	TNT1 A 0 A_GiveToTarget("NDefilerMindfuckPower")
	TNT1 A 0 A_FaceTarget
	NMDF YYYYY 1 Bright A_SpawnItemEx("NDefilerCrystalSmokeSpawner")
	TNT1 A 0 A_FaceTarget
	NMDF YYYYY 1 Bright A_SpawnItemEx("NDefilerCrystalSmokeSpawner")
	TNT1 A 0 A_FaceTarget
	NMDF YYYYY 1 Bright A_SpawnItemEx("NDefilerCrystalSmokeSpawner")
	Goto See
  Suicide:
  	TNT1 A 0 A_JumpIf(user_suicide == 1,"SeeSuicide")
	TNT1 A 0 A_SetUserVar("user_suicide",1)
	TNT1 A 0 A_SetInvulnerable
	TNT1 A 0 A_ChangeFlag("NOBLOCKMONST",1)
	TNT1 A 0 A_ChangeFlag("NODAMAGE",1)
	TNT1 A 0 A_SpawnItemEx("NemesisSoulFlameSpawner")
	TNT1 A 0 A_PlaySound("NemesisDefiler/Attack2",2,1.0,0,ATTN_NONE)
	TNT1 A 0 Radius_Quake(8,120,0,20,0)
	TNT1 A 0 A_FaceTarget
	TNT1 A 0 ACS_NamedExecuteAlways("NemesisDefilerSuicide")
    NMDF EEEEEEEEEEEEEFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGG 3 Bright A_SpawnItemEx("NemesisSoulFlameSpawner")
	Goto SeeSuicide
  Kamikaze:
	TNT1 A 0 A_SetUserVar("user_missile",0)
	TNT1 A 0 A_Quake(6,60,0,3000)
	TNT1 A 0 A_JumpIf(user_missile >= 20,"KamikazeEnd")
	TNT1 A 0 A_SetUserVar(user_missile,user_missile+1)
	NMDF G 3 Bright A_SpawnItemEx("NemesisSoulFlameSpawner")
	Goto Kamikaze+2
  KamikazeEnd:
	TNT1 A 0 A_Quake(9,2,0,3000)
	TNT1 A 0 A_SpawnItemEx("NDefilerKamikazeSmokeSpawner")
    NMDF G 2 Bright A_RadiusThrust(-2500,1200,RTF_NOIMPACTDAMAGE)
    Loop 
  Explode:
	TNT1 A 0 A_CustomMissile("DefilerSuicideBomb",0,0,0,0)
    NMDF G 3 Bright A_Die
    Goto Death	
  Pain:
    TNT1 A 0
	TNT1 A 0 A_KillChildren
    TNT1 A 0 A_Jump(8,"LightningBall")	
  	TNT1 A 0 A_Jump(21,"Teleport")	
    NMDF H 2 Bright
    NMDF H 2 Bright A_Pain
	TNT1 A 0 A_Jump(128,"Missile")
    Goto See
  Death:
	TNT1 A 0 A_ChangeFlag("NODAMAGE",0)
    NMDF I 5 Bright A_Scream
	TNT1 A 0 A_PlaySound("BFlan/LightningExp",0)
	TNT1 A 0 A_SpawnItemEx("DefilerLightningExplode",random(0,20),0,random(20,50),random(2,6),0,random(-4,4),random(0,360))
	TNT1 A 0 A_SpawnItemEx("NemesisGibbedGenerator",0,0,0,0,0,0,0,128,0)
    NMDF JJKKLL 2 Bright A_SpawnItemEx("WhiteNemesisKaboom",random(-32,32),random(-40,40),random(16,48),random(-4,4),random(-4,4),random(0,4),0,SXF_TRANSFERPOINTERS)
	TNT1 A 0 A_SpawnItemEx("NemesisGibbedGenerator",0,0,0,0,0,0,0,128,0)
    TNT1 A 0 A_NoBlocking
	TNT1 A 0 A_KillChildren
	TNT1 A 0 A_PlaySound("BFlan/LightningExp",0)
	TNT1 A 0 A_SpawnItemEx("DefilerLightningExplode",random(0,20),0,random(20,50),random(2,6),0,random(-4,4),random(0,360))
    NMDF MMNNOOPP 2 Bright A_SpawnItemEx("WhiteNemesisKaboom",random(-32,32),random(-40,40),random(16,48),random(-4,4),random(-4,4),random(0,4),0,SXF_TRANSFERPOINTERS)
	TNT1 A 0 A_SpawnItemEx("NemesisGibbedGenerator",0,0,0,0,0,0,0,128,0)
	TNT1 A 0 A_PlaySound("BFlan/LightningExp",0)
	TNT1 A 0 A_SpawnItemEx("DefilerLightningExplode",random(0,20),0,random(20,50),random(2,6),0,random(-4,4),random(0,360))
    NMDF QQRRSSTTUU 2 A_SpawnItemEx("WhiteNemesisKaboom",random(-32,32),random(-40,40),random(16,48),random(-4,4),random(-4,4),random(0,4),0,SXF_TRANSFERPOINTERS) 
	NMDF V 20
	TNT1 A 0 A_Quake(6,30,0,3000)
	NMDF V 30
	TNT1 A 0 A_PlaySound("BFlan/LightningExp",0)
	NMDF A 4 A_SpawnItemEx("DefilerLightningExplode",0,0,32)
	TNT1 AAAA 0 A_SpawnItemEx("NemesisDefilerTrap",0,0,32,random(-10,10),random(-10,10),0)
	TNT1 A 0 Radius_Quake(20,8,0,12,0)
	NMDF V 100
	NMDF VVVVVVVVVVVVVVVVVVVV 1 A_SpawnItemEx("DefilerStormBoltSpawner",Random(-256,256),Random(-256,256),0,0,0,0,0,SXF_NOCHECKPOSITION,64)
	TNT1 A 0 A_Jump(100,"MoreStuff")
    NMDF V -1
    Stop
  MoreStuff:
	TNT1 A 0 A_SpawnItem("HellionSmokeAttack")
	NMDF VVVVVVVVVVVVVVVVVVVVVVVVVVVVVV 1 A_SpawnItem("NemesisHKItemRandomizer")
	NMDF VVVVVVVVVVVVVVVVVVVVVVVVVVVVVV 1 A_SpawnItem("NemesisHKItemRandomizer")
	NMDF V 1 A_SpawnItem("NemesisHKSuperItemRandomizer")
	NMDF V -1
	Stop
	}
}

Actor DefilerBouncyBall : CacodemonBall
{
  Damage 8
  Speed 40
  Scale 0.5
  Alpha 1.0
  SeeSound "HSphere/Tele"
  DeathSound "HSphere/Sight"
  BounceSound "HSphere/Tele"
  +NOTIMEFREEZE
  BounceType "Hexen"
  BounceFactor 1
  WallBounceFactor 1
  BounceCount 7
  States
  {
  Spawn:
	NEF0 AABB 1 A_SpawnItemEx("DefilerBouncyBallTrail",frandom(-4,4),frandom(-4,4),frandom(-4,4))
    Loop
  Death:
    NEF0 CDEEFGH 3 bright
    Stop
  }
}

Actor DefilerBouncyBallTrail : ImpballTrail
{
  Scale 0.15
  Renderstyle Add
  +NOINTERACTION
  +NOTIMEFREEZE
  States
  {
  Spawn:
    TNT1 A 0 NoDelay A_JumpIf(CallAcs("LCAEffectCheck"),"Toaster")
    TNT1 A 0 A_Jump(256,1,2,3,4)
    ZAP7 ABCD 0 A_Jump(256,"Spawn2")
  Spawn2:
    "----" A 1 Bright A_FadeOut(0.1)
    Loop
  }
}

ACTOR DefilerHellStaffBall : DBishHornRodFX
{
  Speed 30
  Damage 16
  +NOTIMEFREEZE
  States
  {
  Spawn:
	HPRO DDEEFF 1 Bright A_SpawnItemEx("NemesisWhiteHellStaffTrail")
	TNT1 A 0 A_SeekerMissile(15,30)
	Loop
  Death:
	TNT1 A 0
	TNT1 AAAAAAAAA 0 A_SpawnItemEx("NemesisWhiteHellStaffParticle",0,0,0,frandom(-4,4),frandom(-4,4),frandom(-4,4),random(0,359))
	CLBA D 1 Bright A_FadeOut(0.2)
	Goto Death+1
  }
}
Actor NemesisWhiteHellStaffTrail : WhiteHellStaffTrail { +NOTIMEFREEZE }
Actor NemesisWhiteHellStaffParticle : WhiteHellStaffParticle { +NOTIMEFREEZE }


Actor DefilerBFGBall : NemesisCyberBFG9500Ball
{
  Obituary "%o was eradicated by the Nemesis Defiler."
  Damagetype "CacoComet"
  States
  {
  Death:
	TNT1 A 0
	TNT1 A 0 A_SpawnItemEx("NemesisBFGShockwave", 0, 0, 0, 0, 0, 0, 0, 128)
    TNT1 AAAAAA 0 A_CustomMissile("WhiteNemesisKaboomNoSound", 0, 0, random(0,360), 2, random(0,360))
    NFE3 AB 4 Bright A_SpawnItemEx("NemesisWhiteParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
    NFE3 C 4 Bright A_BFGSpray("DefilerSpray")
    NFE3 DEF 4 Bright
    Stop    
    }
}

Actor DefilerSpray : NemesisSpray { Damagetype "CacoComet" }

Actor DefilerNemesisLaser : NemesisImpLaser
{
  Damage (Random(10,30))
  Missiletype "DefilerNemesisLaserTrail"
  Damagetype "CacoComet"
}

Actor DefilerNemesisLaserTrail : NemesisImpLaserTrail { Damagetype "CacoComet" }

Actor NemesisDefilerComet : NemesisHKComet { Damagetype "CacoComet" }

Actor DefilerSuicideBomb : LegSuicideBomb
{
States
{
  Spawn:
	TNT1 A 0 
	TNT1 A 0 A_PlaySound("NemesisExile/Explosion2",2)
	TNT1 A 0 A_Explode(500,1024)
	TNT1 A 0 A_Quake(7,70,0,2048,"none")
	TNT1 AAAAAAAAAAAA 0 A_SpawnItemEx("PBlackHoleChunkSpawner")
	TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("PBlackHoleExplode")
	TNT1 A 0 A_SpawnItemEx("PBlackHoleShockwave")
    Stop
  }
}

Actor DefilerLightningProj : BFlanLightningProj
{
  Damage 65
  Missiletype "DefilerLightningTrailSpawner"
  Damagetype "CacoComet"
  +NOTIMEFREEZE
  States
  {
  Spawn:
	NFLI ABCDE 1 Bright
	Loop
  Death:
	TNT1 AAAAAA 0 A_SpawnItemEx("NemesisWhiteParticleSpawner", 0, 0, random(15,35), 0, 0, 0, 0, 128)  
	TNT1 AAAAAA 0 A_CustomMissile("LegendarySmokeFX4", random(15,35), 0, random(0,360), 2, random(0,360))
	TNT1 AAAAAAAAA 0 A_CustomMissile("WhiteNemesisKaboomNoSound",random(15,35),0,random(0,360),2,random(0,360))
	TNT1 A 0 A_SpawnItem("DefilerLightningExplode",0,-10)
	TNT1 A 0 Radius_Quake(20,8,0,12,0)
	NFE3 AB 4 Bright A_Explode(350,300)
	NFE3 CCCCCDDDDDEEEEEFFFFF 1 Bright A_SpawnItemEx("DefilerStormBoltSpawner",Random(-256,256),Random(-256,256),0,0,0,0,0,SXF_NOCHECKPOSITION,64)
	Stop
	}
}

Actor DefilerLightningTrailSpawner
{
  +CLIENTSIDEONLY
  States
  {
  Spawn:
    TNT1 AA 0 A_SpawnItemEx("NDefilerLightningTrail",random(-20, 20),random(-20, 20),random(-20, 20))
	Stop
	}
}

Actor NDefilerLightningTrail : ImpballTrail
{
  Scale 1.2
  Renderstyle Add
  Alpha 0.8
  +CLIENTSIDEONLY
  +NOINTERACTION
  States
  {
  Spawn:
    TNT1 A 0
    TNT1 A 0 A_JumpIf(CallAcs("LCAEffectCheck"),"Toaster")
    TNT1 A 1
    TNT1 A 0 A_Jump(256,"Puff1","Puff2","Puff3")
  Puff1:
    NFLI F 1 Bright A_FadeOut(0.1)
    Loop
  Puff2:
    NFLI G 1 Bright A_FadeOut(0.1)
    Loop
  Puff3:
    NFLI H 1 Bright A_FadeOut(0.1)
    Loop
	}
}

Actor DefilerLightningExplode : RedDTBFGEx
{
  +NOTIMEFREEZE
  States
  {
  Spawn:
	NRE1 AAAAAABBBBBBCCCCCCDDDDDD 1 Bright A_CustomMissile("WhiteKaboom12",0,0,random(0,360),2,random(0,360))
	NRE1 EF 6 Bright
	Stop
	}
}

Actor WhiteKaboom12 : Kaboom12
{
  +NOTIMEFREEZE
  States
  {
  Spawn:
	TNT1 A 0
	TNT1 A 0 A_JumpIf(CallAcs("LCAEffectCheck"),"Toaster")
	FXPW AABBCDEFGHIJKLM 2 Bright A_FadeOut(0.05)
	Stop
	}
}

Actor NDefilerMindfuckHeart : CustomInventory
{  
  -COUNTITEM
  +INVENTORY.QUIET
  +INVENTORY.UNDROPPABLE
  +INVENTORY.ALWAYSPICKUP
  +INVENTORY.AUTOACTIVATE
  States
  {
  Pickup:
	TNT1 A 1 A_SetBlend("White",0.6,5)
	TNT1 A 0 A_PlaySound("NemesisDefiler/Heart",7,1.0,0,0.5)
	Stop
	}
}

Actor NDefilerMindfuckSound : ExileFireFX
{
  var int user_loop;
  +FORCERADIUSDMG
  States
  {
  Spawn:
	TNT1 A 0 NoDelay A_PlaySound("NemesisDefiler/Mindfuck",1)
	TNT1 A 0 A_JumpIf(user_loop >= 21,"Death")
	TNT1 A 0 A_SetUserVar("user_loop",user_loop+1)
	TNT1 AAAAAAAAAA 1 A_Warp(AAPTR_TRACER,0,0,0,0,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
	TNT1 A 0 A_Explode(4,4,0)
    Goto Spawn+1
  Death:
	TNT1 A 1
	Stop
	}
}

Actor PowerDefilerMindfuck : PowerSpeed
{
  Speed -1
}

Actor NDefilerMindfuckPower : PowerupGiver
{
  Inventory.MaxAmount 0
  Powerup.Colormap 1.0, 1.0, 1.0
  Powerup.Type "PowerDefilerMindfuck"
  Powerup.Duration -6
  +INVENTORY.AUTOACTIVATE
  +INVENTORY.ALWAYSPICKUP
}

Actor NemesisDefilerKiller : CustomInventory
{  
  -COUNTITEM
  +INVENTORY.QUIET
  +INVENTORY.UNDROPPABLE
  +INVENTORY.ALWAYSPICKUP
  +INVENTORY.AUTOACTIVATE
  States
  {
  Pickup:
	TNT1 A 0 A_ChangeFlag("NODAMAGE",0)
	TNT1 A 0 A_UnSetInvulnerable
	TNT1 A 1 A_Die
	Stop
	}
}

Actor DefilerStormBoltSpawner : LegRedStormBoltSpawner
{
-CLIENTSIDEONLY
States
{
Spawn:
	TNT1 AAAAAAAAAAAAAAAAAAAAAAAAA 1 A_Wander
    TNT1 A 0 A_CustomMissile("DefilerStormBolt",-18,random(0,20),random(0,360),2)
	Stop
	}
}

Actor DefilerStormBolt : LegRedStormBolt
{
  Damage 8
  States
  {
   Spawn:
   TNT1 A 0
   TNT1 A 0 A_SetAngle(7 + angle)
   TNT1 A 2 A_SpawnItemEx("DefilerStormBoltFade",0,0,0,frandom(0.25,-0.25),frandom(0.25,-0.25),frandom(0.25,-0.25),128,0)
   Loop
   Death:
   TNT1 A 0 A_PlayWeaponSound("legstorm/explode")
   TNT1 A 0 A_Explode(64,278,0)
   TNT1 A 0 A_SpawnItemEx("DefilerGuruStormBoltStruckGlowX",0,0,0,0,0,0,0,SXF_SETMASTER,0)
   TNT1 A 0 A_SpawnItemEx("DefilerGuruStormBoltStruckGlowY",0,0,0,0,0,0,0,SXF_SETMASTER,0)
   TNT1 AAAAAAA 2 A_SpawnItemEx("NemesisGuruSpray",random(20,-20),random(20,-20),random(30,-5),0,0,0,0,128,0)
   Stop
   }
}

Actor DefilerStormBoltFade : LegSentientStormBoltFade
{
   States
   {
   Spawn:
	NLTE A 0
	NLTE ABCDABCDABCD 1 Bright A_FadeOut(0.05)
	Stop
   }
}

Actor DefilerGuruStormBoltStruckGlowY : LegRedGuruStormBoltStruckGlowY
{
	States
	{
	Spawn:
	TNT1 A 0
	NBUM A 0 A_Explode(3,192)
	NBUM A 1 Bright A_FadeOut(0.005)
	Loop
	}	
}

Actor DefilerGuruStormBoltStruckGlowX : LegRedGuruStormBoltStruckGlowX
{
	States
	{
	Spawn:
	TNT1 A 0
	NBUM A 0 A_Explode(3,192)
	NBUM A 1 Bright A_FadeOut(0.005)
	Loop
	}		
}

Actor NDefilerLightingFX : LegendarySuperLightningFX
{
  States
  {
  Spawn:
    NFLI ABCDE 1 Bright
    Stop
  }
}

Actor NDefilerSmokeSpawner : LegendaryRedParticleSpawner
{
  +CLIENTSIDEONLY
  States
  {
  Spawn:
    TNT1 A 0 NoDelay A_JumpIf(CallAcs("LCAEffectCheck"),"Toaster")
    TNT1 AAAAA 0 A_SpawnItemEx("NemesisHellionSmoke",random(32,-32),random(32,-32),random(12,64),0,0,random(1,3),0,128,0)
    Stop
  Toaster:
    TNT1 A 0
	Stop		
	}
}

Actor NDefilerWhiteSmokeSpawner : LegendaryRedParticleSpawner
{
  +CLIENTSIDEONLY
  States
  {
  Spawn:
    TNT1 A 0 NoDelay A_JumpIf(CallAcs("LCAEffectCheck"),"Toaster")
    TNT1 AAAAA 0 A_SpawnItemEx("TrueNemesisHellionSmoke",random(32,-32),random(32,-32),random(12,64),0,0,random(1,3),0,128,0)
    Stop
  Toaster:
    TNT1 A 0
	Stop		
	}
}

ACTOR NDefilerKamikazeSmokeSpawner : LHellionSmokeSpawner
{
States
  {
  Spawn:
	TNT1 A 0
	TNT1 A 0 Bright A_JumpIf(CallAcs("LCAEffectCheck"),"Toaster")
	TNT1 A 0 A_CheckSight("Toaster")
	TNT1 AA 0 A_SpawnItemEx("PBlackSmokeTrailNormal",random(-40,40),random(-40,40),random(12,64),frandom(-2,2),frandom(-2,2),frandom(-1,4),0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
	TNT1 AA 1 A_SpawnItemEx("PBlackSmokeTrailDark",random(-40,40),random(-40,40),random(12,64),frandom(-2,2),frandom(-2,2),frandom(-1,4),0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
	Stop	
  }
}

Actor NDefilerCrystalSmokeSpawner : LegendaryRedParticleSpawner
{
  +CLIENTSIDEONLY
  States
  {
  Spawn:
    TNT1 A 0 NoDelay A_JumpIf(CallAcs("LCAEffectCheck"),"Toaster")
    TNT1 A 0 A_SpawnItemEx("TrueNemesisHellionSmoke",-5,30,54,0,0,random(1,3),0,128,0)
    TNT1 A 0 A_SpawnItemEx("TrueNemesisHellionSmoke",-5,-30,54,0,0,random(1,3),0,128,0)
    TNT1 A 0 A_SpawnItemEx("TrueNemesisHellionSmoke",-22,19,37,0,0,random(1,3),0,128,0)
    TNT1 A 0 A_SpawnItemEx("TrueNemesisHellionSmoke",-22,-19,37,0,0,random(1,3),0,128,0)
    TNT1 A 0 A_SpawnItemEx("TrueNemesisHellionSmoke",-24,15,23,0,0,random(1,3),0,128,0)
    TNT1 A 0 A_SpawnItemEx("TrueNemesisHellionSmoke",-24,-15,23,0,0,random(1,3),0,128,0)
    Stop
  Toaster:
    TNT1 A 0
	Stop		
	}
}

Actor NemesisDefilerGhost
{
Scale 1.15
Alpha 0.7
Renderstyle Translucent
+CLIENTSIDEONLY
+NOTIMEFREEZE
+NOINTERACTION
States
{
Spawn:
    TNT1 A 0 NoDelay A_JumpIf(CallAcs("LCAEffectCheck"),"Toaster")
Fade:
    TNT1 A 1
    NMDF A 2 A_FadeOut(0.10)
    Goto Fade+1
Toaster:
    TNT1 A 0
    Stop
    }
}

Actor NemesisDefilerTrap
{ 
  Health 25
  Radius 16 
  Height 32 
  Mass 3000 
  Speed 4
  MONSTER
  +LOOKALLAROUND
  +AMBUSH
  +DONTGIB
  +NOTARGET
  +NOINFIGHTING
  +NOGRAVITY 
  +FLOAT
  +DONTFALL
  +NOPAIN
  +DONTHARMSPECIES
  +NOBLOCKMONST
  +NOTIMEFREEZE
  +FORCERADIUSDMG
  +THRUSPECIES
  -COUNTKILL
  -SOLID
  SeeSound "reedemer/trap"
  BloodColor "Black"
  Species "Redeemer"
  DamageType "CacoComet"
  DamageFactor "CacoComet", 0.0
  Obituary "%o was blown away by the Nemesis Defiler's sentient charges."
  Renderstyle Add
  var int user_delay;
  Tag "\c[v9]Nemesis Charge\c-"
  States 
  { 
  Spawn:
	TNT1 A 0 NoDelay A_SpawnItemEx("NemesisDefilerTrapForm",0,0,0,0,0,0,0,SXF_SETMASTER)
	TNT1 A 20
	TNT1 A 1 A_Stop
	TNT1 A 0 A_JumpIf(user_delay >= 260,"Suicide")
	TNT1 A 0 A_SetUserVar("user_delay",user_delay+1)
	TNT1 A 0 A_Wander
	TNT1 A 1 A_Look
	Goto Spawn+3
  See:
	TNT1 A 1 A_Chase
	Goto Missile
  Missile:
	TNT1 A 0
	TNT1 A 0 A_JumpIfTargetInLos(1)
	Goto Clear
	TNT1 A 0 A_JumpIfCloser(100,"Suicide")
	TNT1 A 0 A_SkullAttack(15)
	TNT1 AAAA 1 A_SpawnItemEx("NemesisDefilerTrapTrail",random(-40,40),random(-40,40),random(-10,70))
	Loop  
  Clear:
	TNT1 A 4 A_ClearTarget
	Goto Spawn+2 
  Suicide:
	TNT1 A 2 A_Die
	Goto Death    
  Death:
	TNT1 A 0
	TNT1 A 0 A_RemoveChildren(1)
	TNT1 A 0 A_PlaySound("BFlan/LightningExp",1)
	TNT1 AAAAAA 0 A_SpawnItemEx("NemesisWhiteParticleSpawner", 0, 0, random(15,35), 0, 0, 0, 0, 128)  
	TNT1 AAAAAA 0 A_CustomMissile("LegendarySmokeFX4", random(15,35), 0, random(0,360), 2, random(0,360))
	TNT1 AAAAAAAAA 0 A_CustomMissile("WhiteNemesisKaboomNoSound",random(15,35),0,random(0,360),2,random(0,360))
	TNT1 A 0 A_SpawnItem("DefilerLightningExplode",0,-10)
	TNT1 A 0 Radius_Quake(20,8,0,12,0)
	NFE3 AB 4 Bright A_Explode(350,300,XF_NOTMISSILE)
	NFE3 CDEF 5 Bright
	Stop
   } 
}

Actor NemesisDefilerTrapForm
{
  +CLIENTSIDEONLY
  +NOINTERACTION
  +NOTIMEFREEZE
  +ISMONSTER
  Renderstyle Add
  Scale 0.6
  States
  {
  Spawn:
	NTRP ABCDEFGHIJKLMNOP 1 Bright A_Warp(AAPTR_MASTER,0,0,0,0,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
	Loop
	}
}

Actor NemesisDefilerTrapTrail
{
  +CLIENTSIDEONLY
  +NOINTERACTION
  +NOTIMEFREEZE
  Renderstyle Add
  Scale 0.5
  States
  {
  Spawn:
	NTPL ABCDEFGHIJKLMN 1 Bright
	Stop
	}
}