Actor VexedNemesisPatriarch : NemesisPatriarch
{
  Speed 30
  FloatSpeed 30
  Scale 1.65
  SeeSound "VexedPatriarch/Sight"
  ActiveSound "Patriarch/Active"
  PainSound "VexedPatriarch/Pain"
  DeathSound "VexedPatriarch/Death"
  +NOGRAVITY
  +FLOAT
  +BRIGHT
  Obituary "%o met the Vexed Nemesis Patriarch."
  Tag "\c[w2]Vexed \c[v9]Nemesis \c[w2]Patriarch\c-"
  var int user_see;
  var int user_iconoclastcooldown;
  States
  {
  Spawn:
	TNT1 A 0 NoDelay A_SpawnItemEx("VexedPatriarchOrbitCube1",0,0,0,0,0,0,0,SXF_SETMASTER)
	TNT1 A 0 A_SpawnItemEx("VexedPatriarchOrbitCube2",0,0,0,0,0,0,120,SXF_SETMASTER)
	TNT1 A 0 A_SpawnItemEx("VexedPatriarchOrbitCube3",0,0,0,0,0,0,240,SXF_SETMASTER)
	TNT1 A 0 A_SpawnItemEx("NemesisCardinalFireSpawner",0,0,0,0,0,0,0,SXF_SETMASTER)
	TNT1 A 0 A_SpawnItemEx("NemesisCardinalShroudSpawner",0,0,0,0,0,0,0,SXF_SETMASTER)
	TNT1 A 0 ACS_Execute(16)
  Idle:
	VPAT A 10 A_Look
	Loop
  See:
	TNT1 A 0 A_JumpIf(user_see == 1,"See2")
	TNT1 A 0 A_SetUserVar(user_see,1)
	TNT1 A 0 A_Quake(10,225,0,5000,"")
	VPAT C 225
  See2:
	TNT1 A 0 A_ChangeFlag("NOPAIN",0)
	TNT1 A 0 A_Jump(64,"Teleport")
	VPAT AB 2 A_Chase
	Loop
	
	
  Teleport:
    VPAT C 1 A_UnSetShootable
	TNT1 A 0 A_Stop
	TNT1 A 0 A_PlaySound("BH/Fire",0,1.0,0,0.4)
	TNT1 A 0 A_SpawnItemEx("PatriarchTeleport",0,0,40)
	TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_Wander
	TNT1 A 0 A_SpawnItemEx("PatriarchTeleport",0,0,40)
    VPAT C 1 A_SetShootable
	Goto See
	
	
  NoCheesingAllowed:
	TNT1 A 0 A_ChangeFlag("NODAMAGE",1)
	TNT1 A 0 A_ChangeFlag("NOPAIN",1)
	TNT1 A 0 A_SetInvulnerable
	TNT1 A 0 A_GiveToTarget("PatriarchAntiCheese")
	VPAT C 40 A_PlaySound("brain/spit",7,1.0,0,ATTN_NONE)
	TNT1 A 0 A_ChangeFlag("NODAMAGE",0)
	TNT1 A 0 A_ChangeFlag("NOPAIN",0)
	TNT1 A 0 A_UnsetInvulnerable
	Goto See
	
	
  Missile:
	TNT1 A 0 A_Stop
	TNT1 A 0 A_PlaySound("Patriarch/Attack",6)
	TNT1 A 0 A_FaceTarget
	TNT1 A 0 A_JumpIfHealthLower(30000,"Missile.Phase3")
	TNT1 A 0 A_JumpIfHealthLower(60000,"Missile.Phase2")
	TNT1 A 0 A_Jump(64,"NemesisBall","Laser","Iconoclast")
	TNT1 A 0 A_Jump(256,"QuionSpam","SoulRender","WaitBalls","LaserVessels","LaserRain")
	Goto See
  Missile.Phase2:
	TNT1 A 0 A_Jump(64,"NemesisBall","Laser","Iconoclast")
	TNT1 A 0 A_Jump(256,"QuionSpam.Phase2","SoulRender.Phase2","WaitBalls.Phase2","LaserVessels.Phase2","LaserRain")
	Goto See
  Missile.Phase3:
	TNT1 A 0 A_Jump(64,"NemesisBall","Laser","Iconoclast")
	TNT1 A 0 A_Jump(256,"QuionSpam.Phase3","SoulRender.Phase3","WaitBalls.Phase3","LaserVessels.Phase3","LaserRain")
	Goto See
	
  QuionSpam:
	TNT1 A 0 A_PlaySound("VexedPatriarch/QuionCast",1,1.0,0,ATTN_NONE)
	TNT1 A 0 A_ChangeFlag("NOPAIN",1)
	VPAT CCCCCC 10 A_FaceTarget
	TNT1 A 0 A_SetUserVar("user_missile",0)
  QuionSpamLoop:
	TNT1 A 0 A_JumpIf(user_missile >= 90,"See")
	TNT1 A 0 A_SetUserVar(user_missile,user_missile+1)
	TNT1 AA 0 A_CustomMissile("PatriarchQuionSpamBall",90,0,random(-100,100),CMF_OFFSETPITCH,random(-5,20))
	VPAT D 1 A_FaceTarget
	Loop
  QuionSpam.Phase2:
	TNT1 A 0 A_PlaySound("VexedPatriarch/QuionCast",1,1.0,0,ATTN_NONE)
	TNT1 A 0 A_ChangeFlag("NOPAIN",1)
	VPAT CCCCCC 10 A_FaceTarget
	TNT1 A 0 A_SetUserVar("user_missile",0)
  QuionSpamLoop.Phase2:
	TNT1 A 0 A_JumpIf(user_missile >= 110,"See")
	TNT1 A 0 A_SetUserVar(user_missile,user_missile+1)
	TNT1 AA 0 A_CustomMissile("PatriarchQuionSpamBall",90,0,random(-100,100),CMF_OFFSETPITCH,random(-5,20))
	VPAT D 1 A_FaceTarget
	Loop
  QuionSpam.Phase3:
	TNT1 A 0 A_PlaySound("VexedPatriarch/QuionCast",1,1.0,0,ATTN_NONE)
	TNT1 A 0 A_ChangeFlag("NOPAIN",1)
	VPAT CCCCCC 10 A_FaceTarget
	TNT1 A 0 A_SetUserVar("user_missile",0)
  QuionSpamLoop.Phase3:
	TNT1 A 0 A_JumpIf(user_missile >= 110,"See")
	TNT1 A 0 A_SetUserVar(user_missile,user_missile+1)
	TNT1 A 0 A_CustomMissile("PatriarchQuionSpamBall",90,0,random(-40,40),CMF_OFFSETPITCH,random(-5,20))
	TNT1 A 0 A_CustomMissile("PatriarchQuionSpamBall",90,0,random(-100,100),CMF_OFFSETPITCH,random(-5,20))
	VPAT D 1 A_FaceTarget
	Loop
	
  WaitBalls:
	TNT1 A 0 A_SpawnItemEx("VexedPatriarchChargeupWaitBalls",0,0,0,0,0,0,0,SXF_SETMASTER)
	VPAT CCCCC 5 A_FaceTarget
	TNT1 AAAAAAAAAAAA 0 A_SpawnItemEx("PatriarchWaitBall",0,0,90,frandom(-40,40),frandom(-40,40),frandom(10,40),0,SXF_TRANSFERPOINTERS)
	VPAT D 40
	Goto See
  WaitBalls.Phase2:
	TNT1 A 0 A_SpawnItemEx("VexedPatriarchChargeupWaitBalls",0,0,0,0,0,0,0,SXF_SETMASTER)
	VPAT CCCCC 5 A_FaceTarget
	TNT1 AAAAAAAAAAAA 0 A_SpawnItemEx("PatriarchWaitBall",0,0,90,frandom(-40,40),frandom(-40,40),frandom(10,40),0,SXF_TRANSFERPOINTERS)
	VPAT D 20
	VPAT CCCCC 5 A_FaceTarget
	TNT1 AAAAAAAAAAAA 0 A_SpawnItemEx("PatriarchWaitBall",0,0,90,frandom(-40,40),frandom(-40,40),frandom(10,40),0,SXF_TRANSFERPOINTERS)
	VPAT D 20
	Goto See
  WaitBalls.Phase3:
	TNT1 A 0 A_SpawnItemEx("VexedPatriarchChargeupWaitBalls",0,0,0,0,0,0,0,SXF_SETMASTER)
	VPAT CCCCC 5 A_FaceTarget
	TNT1 AAAAAAAAAAAA 0 A_SpawnItemEx("PatriarchWaitBall",0,0,90,frandom(-40,40),frandom(-40,40),frandom(10,40),0,SXF_TRANSFERPOINTERS)
	VPAT D 20 ThrustThing(Angle*256/360+random(0,360),30,0,0)
	TNT1 A 0 A_Stop
	VPAT CCCCC 5 A_FaceTarget
	TNT1 AAAAAAAAAAAA 0 A_SpawnItemEx("PatriarchWaitBall",0,0,90,frandom(-40,40),frandom(-40,40),frandom(10,40),0,SXF_TRANSFERPOINTERS)
	VPAT D 20 ThrustThing(Angle*256/360,30,0,0)
	TNT1 A 0 A_Stop
	VPAT CCCCC 5 A_FaceTarget
	TNT1 AAAAAAAAAAAA 0 A_SpawnItemEx("PatriarchWaitBall",0,0,90,frandom(0,40),frandom(-40,40),frandom(10,40),0,SXF_TRANSFERPOINTERS)
	VPAT D 20
	Goto See
	
  SoulRender:
	TNT1 A 0 A_SpawnItemEx("VexedPatriarchChargeupSoulRender",0,0,0,0,0,0,0,SXF_SETMASTER)
	VPAT CCCCC 5 A_FaceTarget
	TNT1 A 0 A_CustomMissile("PatriarchSoulRender",90,0,0)
	TNT1 A 0 A_CustomMissile("PatriarchSoulRender",90,0,-10)
	TNT1 A 0 A_CustomMissile("PatriarchSoulRender",90,0,10)
	TNT1 A 0 A_CustomMissile("PatriarchSoulRender",90,0,-20)
	TNT1 A 0 A_CustomMissile("PatriarchSoulRender",90,0,20)
	TNT1 A 0 A_CustomMissile("PatriarchSoulRender",90,0,-30)
	TNT1 A 0 A_CustomMissile("PatriarchSoulRender",90,0,30)
	VPAT D 40
	Goto See
  SoulRender.Phase2:
	TNT1 A 0 A_SpawnItemEx("VexedPatriarchChargeupSoulRender",0,0,0,0,0,0,0,SXF_SETMASTER)
	VPAT CCCCC 5 A_FaceTarget
	TNT1 A 0 A_CustomMissile("PatriarchSoulRender",90,0,0)
	TNT1 A 0 A_CustomMissile("PatriarchSoulRender",90,0,-10)
	TNT1 A 0 A_CustomMissile("PatriarchSoulRender",90,0,10)
	TNT1 A 0 A_CustomMissile("PatriarchSoulRender",90,0,-20)
	TNT1 A 0 A_CustomMissile("PatriarchSoulRender",90,0,20)
	TNT1 A 0 A_CustomMissile("PatriarchSoulRender",90,0,-30)
	TNT1 A 0 A_CustomMissile("PatriarchSoulRender",90,0,30)
	VPAT D 20
	VPAT CCCCC 5 A_FaceTarget
	TNT1 A 0 A_CustomMissile("PatriarchSoulRender",90,0,0)
	TNT1 A 0 A_CustomMissile("PatriarchSoulRender",90,0,-10)
	TNT1 A 0 A_CustomMissile("PatriarchSoulRender",90,0,10)
	TNT1 A 0 A_CustomMissile("PatriarchSoulRender",90,0,-20)
	TNT1 A 0 A_CustomMissile("PatriarchSoulRender",90,0,20)
	TNT1 A 0 A_CustomMissile("PatriarchSoulRender",90,0,-30)
	TNT1 A 0 A_CustomMissile("PatriarchSoulRender",90,0,30)
	VPAT D 20
	Goto See
  SoulRender.Phase3:
	TNT1 A 0 A_SpawnItemEx("VexedPatriarchChargeupSoulRender",0,0,0,0,0,0,0,SXF_SETMASTER)
	VPAT CCCCC 5 A_FaceTarget
	TNT1 A 0 A_FaceTarget
	VPAT DDD 4 A_CustomMissile("PatriarchSoulRender",90,0,random(-35,35))
	TNT1 A 0 A_FaceTarget
	VPAT DDD 4 A_CustomMissile("PatriarchSoulRender",90,0,random(-35,35))
	TNT1 A 0 A_FaceTarget
	VPAT DDD 4 A_CustomMissile("PatriarchSoulRender",90,0,random(-35,35))
	TNT1 A 0 A_FaceTarget
	VPAT DDD 4 A_CustomMissile("PatriarchSoulRender",90,0,random(-35,35))
	VPAT CCCCC 5 A_FaceTarget
	TNT1 A 0 A_CustomMissile("PatriarchSoulRender",90,0,0)
	TNT1 A 0 A_CustomMissile("PatriarchSoulRender",90,0,-10)
	TNT1 A 0 A_CustomMissile("PatriarchSoulRender",90,0,10)
	TNT1 A 0 A_CustomMissile("PatriarchSoulRender",90,0,-20)
	TNT1 A 0 A_CustomMissile("PatriarchSoulRender",90,0,20)
	TNT1 A 0 A_CustomMissile("PatriarchSoulRender",90,0,-30)
	TNT1 A 0 A_CustomMissile("PatriarchSoulRender",90,0,30)
	VPAT D 20
	Goto See
	
  LaserVessels:
	TNT1 A 0 A_SpawnItemEx("VexedPatriarchChargeupWaitBalls",0,0,0,0,0,0,0,SXF_SETMASTER)
	VPAT CCCCC 5 A_FaceTarget
	TNT1 A 0 A_SetUserVar("user_missile",0)
  LaserVesselsLoop:
	TNT1 A 0 A_JumpIf(user_missile >= 20,"LaserVesselsEnd")
	TNT1 A 0 A_SetUserVar(user_missile,user_missile+1)
	TNT1 A 0 A_FaceTarget
	VPAT D 8 A_SpawnItemEx("PatriarchLaserVessel",-20,random(120,300),random(-40,250),frandom(-3,3),frandom(0,10),frandom(-3,3),(180*random(0,1)),SXF_TRANSFERPOINTERS)
	Loop
  LaserVessels.Phase2:
	TNT1 A 0 A_SpawnItemEx("VexedPatriarchChargeupWaitBalls",0,0,0,0,0,0,0,SXF_SETMASTER)
	VPAT CCCCC 5 A_FaceTarget
	TNT1 A 0 A_SetUserVar("user_missile",0)
  LaserVesselsLoop.Phase2:
	TNT1 A 0 A_JumpIf(user_missile >= 30,"LaserVesselsEnd")
	TNT1 A 0 A_SetUserVar(user_missile,user_missile+1)
	TNT1 A 0 A_FaceTarget
	VPAT D 6 A_SpawnItemEx("PatriarchLaserVessel",-20,random(120,300),random(-40,250),frandom(-3,3),frandom(0,10),frandom(-3,3),(180*random(0,1)),SXF_TRANSFERPOINTERS)
	Loop
  LaserVessels.Phase3:
	TNT1 A 0 A_SpawnItemEx("VexedPatriarchChargeupWaitBalls",0,0,0,0,0,0,0,SXF_SETMASTER)
	VPAT CCCCC 5 A_FaceTarget
	TNT1 A 0 A_SetUserVar("user_missile",0)
  LaserVesselsLoop.Phase3:
	TNT1 A 0 A_JumpIf(user_missile >= 8,"LaserVesselsEnd")
	TNT1 A 0 A_SetUserVar(user_missile,user_missile+1)
	TNT1 A 0 A_FaceTarget
	TNT1 AAAA 0 A_SpawnItemEx("PatriarchLaserVessel",-20,random(120,300),random(-40,250),frandom(-3,3),frandom(0,10),frandom(-3,3),(180*random(0,1)),SXF_TRANSFERPOINTERS)
	VPAT D 20
	Loop
  LaserVesselsEnd:
	VPAT D 40
	Goto See
	
  LaserRain:
	TNT1 A 0 A_SpawnItemEx("VexedPatriarchChargeupWaitBalls",0,0,0,0,0,0,0,SXF_SETMASTER)
	VPAT CCCCC 5 A_FaceTarget
	TNT1 A 0 A_SetUserVar(user_missile,0)
  LaserRainContinue:
	TNT1 A 0 A_JumpIf(user_missile >= 40,"See")
	TNT1 A 0 A_SetUserVar(user_missile,user_missile+1)
	TNT1 A 0 A_FaceTarget
	TNT1 A 0 A_Jump(128,2)
	TNT1 A 0 A_VileTarget("PatriarchLaserRainSpawner")
	VPAT D 5 A_SpawnItemEx("PatriarchLaserRainSpawner",random(0,2500),0,0,0,0,0,random(-40,40),SXF_NOCHECKPOSITION,128)
	Loop
	
  NemesisBall:
	TNT1 A 0 A_PlaySound("VexedPatriarch/Attack",2)
	TNT1 A 0 A_PlaySound("NemesisUp",1,1.0,0,ATTN_NONE)
	TNT1 A 0 A_SpawnItemEx("VexedPatriarchChargeupNemesisBall",0,0,0,0,0,0,0,SXF_SETMASTER)
	VPAT CCCCCCCCCCCCCCCCCCCC 5 A_FaceTarget
	TNT1 A 0 A_PlaySound("Nemesis/FireBall",6,1.0,0,ATTN_NONE)
	VPAT D 40 A_CustomMissile("VexedNemesisAltBallMonster",90,0,0,CMF_TRACKOWNER)
	Goto See
	
  Laser:
	TNT1 A 0 A_PlaySound("VexedPatriarch/Attack",2)
	TNT1 A 0 A_SpawnItemEx("VexedPatriarchChargeupNemesisBall",0,0,0,0,0,0,0,SXF_SETMASTER)
	VPAT CCCCCCCCCCCCCCCCCCCC 5 A_FaceTarget
	TNT1 A 0 ThrustThing(Angle*256/360+random(0,360),30,0,0)
	TNT1 A 0 A_Playsound("MasterSpark",0,1,0,ATTN_NONE)
	TNT1 A 0 A_SetUserVar("user_missile",0)
  LaserLoop:
	TNT1 A 0 A_JumpIf(user_missile >= 90,"See")
	TNT1 A 0 A_SetUserVar(user_missile,user_missile+1)
	TNT1 A 0 A_FaceTarget
	VPAT D 1 A_CustomMissile("NemesisSentientLaser",90,0,0)
	Loop
	
  Iconoclast:
	TNT1 A 0 A_JumpIf(user_iconoclastcooldown > 0,"Laser")
    VPAT C 1 A_UnSetShootable
	TNT1 A 0 A_PlaySound("BH/Fire",0,1.0,0,0.4)
	TNT1 A 0 A_SpawnItemEx("PatriarchTeleport",0,0,40)
	TNT1 A 0 ACS_ExecuteAlways(25)
	TNT1 A 0 A_SpawnItemEx("PatriarchTeleport",0,0,40)
    VPAT C 1 A_SetShootable
	TNT1 A 0 A_PlaySound("VexedPatriarch/Attack",2)
	TNT1 A 0 A_PlaySound("NemesisUp",1,1.0,0,ATTN_NONE)
	TNT1 A 0 A_SpawnItemEx("VexedPatriarchChargeupNemesisBall",0,0,0,0,0,0,0,SXF_SETMASTER)
	VPAT C 100
	TNT1 A 0 A_PlaySound("Nemesis/FireBall",6,1.0,0,ATTN_NONE)
	TNT1 A 0 ACS_ExecuteAlways(26)
	TNT1 A 0 A_SetUserVar("user_iconoclastcooldown",60)
	TNT1 A 0 ACS_ExecuteAlways(28)
	VPAT D 100
	Goto See
	
  Pain:
	VPAT M 2 A_ChangeFlag("NOPAIN",1)
	VPAT M 2 A_Pain
	Goto See
  Death:
	TNT1 A 0 A_LowGravity
	VPAT M 20
	TNT1 A 0 A_Quake(8,600,0,3000)
	VPAT M 20 A_Scream
	TNT1 A 0 A_SetUserVar(user_missile,0)
  DeathLoop:
	TNT1 A 0 A_JumpIf(user_missile >= 30,"DeathContinue")
	TNT1 A 0 A_SetUserVar(user_missile,user_missile+1)
    TNT1 AAAAAAAAAAA 0 A_SpawnItemEx ("2huBossDeathFlame", 0, 0, 0, random(-3,3), random(-3,3), random(-3,3), random (0, 360))
	TNT1 AAAAAAAAAAA 0 A_CustomMissile("2huBossDeathFlame3", random(5, 55), 0, random(0,360), CMF_OFFSETPITCH, frandom(-40, 70))
	VPAT M 10
	Loop
  DeathContinue:
	TNT1 AAAA 0 A_SpawnItemEx("PatriarchDeathEffect",0,0,160)
	TNT1 A 0 A_PlaySound("VexedPatriarch/DeathFX",6,1.0,0,ATTN_NONE)
	VPAT M 190
	TNT1 A 0 A_NoBlocking
	TNT1 A 0 A_RemoveChildren(1)
	TNT1 A 0 ACS_Execute(426)
	TNT1 A 0 A_Quake(10,150,0,3000)
	TNT1 A 0 A_SpawnItemEx("VexedNemesisHugeExplosion",0,0,100)
	TNT1 A 0 A_SpawnItemEx("PatriarchDeathLaserSpawner")
	TNT1 A 0 A_SpawnItemEx("PatriarchDeathKaboomEffectSpawner")
	TNT1 A 0 A_PlaySound("Nemesis/BallExplode",5,1.0,0,ATTN_NONE)
	TNT1 A 0 A_PlaySound("VexedPatriarch/Death2",7,1.0,0,ATTN_NONE)
	VPAT NOPQRSTUV 10
	VPAT V -1
	Stop
	}
}

Actor VexedPatriarchChargeupNemesisBall : PatriarchChargeupLaser
{
  States
  {
  Spawn:
	TNT1 A 0 A_JumpIf(user_active >= 50,"Null")
	TNT1 A 0 A_SetUserVar(user_active,user_active+1)
	TNT1 A 0 A_Warp(AAPTR_MASTER,0,0,0,0,WARPF_INTERPOLATE)
	TNT1 A 0 A_PlaySound("vile/firecrkl")
	TNT1 A 0 A_SpawnItemEx("WhiteNemesisKaboomNoSound",0,50,148,frandom(-2,2),frandom(-2,2),frandom(1,5))
	TNT1 A 2 A_SpawnItemEx("WhiteNemesisKaboomNoSound",0,-57,148,frandom(-2,2),frandom(-2,2),frandom(1,5))
	Loop
	}
}

Actor VexedPatriarchChargeupWaitBalls : PatriarchChargeupLaser
{
  States
  {
  Spawn:
	TNT1 A 0 A_JumpIf(user_active >= 13,"Null")
	TNT1 A 0 A_SetUserVar(user_active,user_active+1)
	TNT1 A 0 A_Warp(AAPTR_MASTER,0,0,0,0,WARPF_INTERPOLATE)
	TNT1 A 0 A_SpawnItemEx("PatriarchWaitBallParticle",0,50,148,frandom(-2,2),frandom(-2,2),frandom(1,5))
	TNT1 A 2 A_SpawnItemEx("PatriarchWaitBallParticle",0,-57,148,frandom(-2,2),frandom(-2,2),frandom(1,5))
	Loop
	}
}

Actor VexedPatriarchChargeupSoulRender : PatriarchChargeupLaser
{
  States
  {
  Spawn:
	TNT1 A 0 A_JumpIf(user_active >= 13,"Null")
	TNT1 A 0 A_SetUserVar(user_active,user_active+1)
	TNT1 A 0 A_Warp(AAPTR_MASTER,0,0,0,0,WARPF_INTERPOLATE)
	TNT1 A 0 A_SpawnItemEx("NemesisPatriarchChargeupSoul",0,50,148,frandom(-1,1),frandom(-1,1),frandom(1,5))
	TNT1 A 2 A_SpawnItemEx("NemesisPatriarchChargeupSoul",0,-57,148,frandom(-1,1),frandom(-1,1),frandom(1,5))
	Loop
	}
}

Actor NemesisPatriarchChargeupSoul : NemesisArmorSoul
{
  Renderstyle Add
  Alpha 1.0
  Scale 1.5
}

ACTOR PatriarchQuionSpamBall : GenericStrongOrb
{
  Speed 60
  Damage 12
  Scale 0.4
  +NOTIMEFREEZE
  +SEEKERMISSILE
  SeeSound "VexedPatriarch/QuionSpam"
  Damagetype "Patriarch"
  var int user_loop;
  States 
  {
  Spawn:
	TNT1 A 0 NoDelay A_SetUserVar(user_loop,random(0,15))
	TNT1 A 0 A_Jump(256,"Spawn1","Spawn2","Spawn3","Spawn4")
  Spawn1:
	TNT1 A 0 A_JumpIf(user_loop >= 35,"Seek")
	TNT1 A 0 A_SetUserVar(user_loop,user_loop+1)
	TNT1 A 0 A_SeekerMissile(2,2,SMF_LOOK|SMF_PRECISE)
	TNT1 A 0 A_Weave(4,4,2.0,2.0)
    VQNB A 1 Bright A_SpawnItemEx("MainyuPortalProjectileTrail")
    Loop
  Spawn2:
	TNT1 A 0 A_JumpIf(user_loop >= 35,"Seek")
	TNT1 A 0 A_SetUserVar(user_loop,user_loop+1)
	TNT1 A 0 A_SeekerMissile(2,2,SMF_LOOK|SMF_PRECISE)
	TNT1 A 0 A_Weave(4,4,-2.0,-2.0)
    VQNB A 1 Bright A_SpawnItemEx("MainyuPortalProjectileTrail")
    Loop
  Spawn3:
	TNT1 A 0 A_JumpIf(user_loop >= 35,"Seek")
	TNT1 A 0 A_SetUserVar(user_loop,user_loop+1)
	TNT1 A 0 A_SeekerMissile(2,2,SMF_LOOK|SMF_PRECISE)
	TNT1 A 0 A_Weave(4,4,2.0,-2.0)
    VQNB A 1 Bright A_SpawnItemEx("MainyuPortalProjectileTrail")
    Loop
  Spawn4:
	TNT1 A 0 A_JumpIf(user_loop >= 35,"Seek")
	TNT1 A 0 A_SetUserVar(user_loop,user_loop+1)
	TNT1 A 0 A_SeekerMissile(2,2,SMF_LOOK|SMF_PRECISE)
	TNT1 A 0 A_Weave(4,4,-2.0,2.0)
    VQNB A 1 Bright A_SpawnItemEx("MainyuPortalProjectileTrail")
    Loop
  Seek:
	TNT1 A 0 A_SeekerMissile(50,50,SMF_LOOK|SMF_PRECISE)
	Goto Spawn
  Death:
	TNT1 A 0 A_SpawnItem("WhiteProjExplode")
	TNT1 A 0 A_SpawnItemEx("NemesisWhiteParticleSpawner")
    VQNB D 1 Bright A_FadeOut(0.2)
    Wait
	}
}

ACTOR PatriarchLaserVessel : MainyuSentientElectric
{
-SHOOTABLE
Renderstyle Add
Obituary "%o met the Vexed Nemesis Patriarch."
Tag "Patriarch Laser Vessel"
States
{
Spawn:
	NSEL XWVUTSRQPONMABCDEFGHIJKL 1 A_LookEx(LOF_NOJUMP,0,0,0,360)
	TNT1 A 0 A_FaceTarget
	TNT1 A 0 A_PlaySound("Plamexis/Ding",1,1.0,0,0.4)
	TNT1 A 0 A_CustomMissile("PatriarchMiniLaser",0,0,0,CMF_TRACKOWNER|CMF_CHECKTARGETDEAD)
	NSEL ABCDEFGHIJKL 1
	NSEL MNOPQRSTUVWX 3
	Stop
	}
}

ACTOR PatriarchMiniLaser : PlamexisLaser
{
  Damage 10
  Speed 140
  SeeSound "Plamexis/LaserFire"
  MissileType "PatriarchMiniLaserTrail"
  MissileHeight 8
  Damagetype "Touhou"
  States
  {
  Spawn:
	TNT1 A 0 NoDelay A_SpawnItemEx("NemesisGuruChunkSpark",0,0,0,3)
  SpawnLoop:
    TNT1 A 1 A_Explode(30,200)
    Loop
  Death:
	TNT1 A 0 A_Explode(450,200)
    TNT1 AAAAAAAAAAAAAAA 1 A_SpawnItemEx("NemesisGuruChunkSpark",0,0,0,frandom(-6,6),frandom(-6,6),frandom(-6,6))
    Stop
  }
}

ACTOR PatriarchMiniLaserTrail : BaseProjectileEffect
{
  Scale 1.0
  States
  {
  Spawn:
    CLBA DDDDDDDDDDDDDDDDD 1 Bright
  SpawnLoop:
    TNT1 A 0 A_SetScale(ScaleX-0.05)
    CLBA D 1 A_FadeOut(0.1)
    Loop
  }
}

ACTOR PatriarchWaitBall
{
  Radius 9
  Height 12
  Renderstyle Add
  +BOUNCEONWALLS
  +BOUNCEONFLOORS
  +BOUNCEONACTORS
  +FORCERADIUSDMG
  +ISMONSTER
  +NOGRAVITY
  +NOCLIP
  +NOTARGET
  var int user_loop;
  States 
  {
  Spawn:
	TNT1 A 0 NoDelay A_PlaySound("VexedPatriarch/WaitBall",1)
  SpawnLoop:
	TNT1 A 0 A_JumpIf(user_loop >= 60,"Spawn2")
	TNT1 A 0 A_SetUserVar(user_loop,user_loop+1)
	TNT1 A 0 A_ScaleVelocity(0.95)
	TNT1 A 0 A_LookEx(LOF_NOJUMP,0,0,0,360)
    VQNB A 1 Bright A_SpawnItemEx("PatriarchWaitBallParticle",0,0,0,0,0,0,0,0,192)
    Loop
  Spawn2:
	TNT1 A 0 A_SetUserVar(user_loop,0)
	TNT1 A 0 A_Stop
	TNT1 A 0 A_JumpIf(user_loop >= 5,"Death")
	TNT1 A 0 A_SetUserVar(user_loop,user_loop+1)
    VQNB A 10 Bright A_SpawnItemEx("PatriarchWaitBallParticle",0,0,0,0,0,0,0,0,192)
	Goto Spawn2+1
  Death:
	TNT1 A 0 A_PlaySound("VexedPatriarch/WaitActivate",1)
	TNT1 A 1 A_CustomMissile("PatriarchWaitBall2",0,0,0,CMF_TRACKOWNER)
    Stop
	}
}

ACTOR PatriarchWaitBall2 : PatriarchQuionSpamBall
{
  Speed 90
  Damage 20
  Scale 1.0
  SeeSound " "
  DeathSound "VexedPatriarch/WaitHit"
  States 
  {
  Spawn:
	TNT1 A 0 A_SeekerMissile(8,10)
	TNT1 A 0 A_Weave(4,4,2.0,2.0)
	TNT1 A 0 A_SpawnItemEx("PatriarchWaitBallTrail")
    VQNB A 1 Bright A_SpawnItemEx("PatriarchWaitBallParticle",0,0,0,0,0,0,0,0,192)
    Loop
  Death:
	TNT1 A 0 A_Explode(200,340)
	TNT1 A 0 A_SetScale(2.0)
	TNT1 AAAAAAAAA 0 A_SpawnItemEx("NemesisWhiteProjParticleSuperLarge",0,0,0,frandom(-4,4),frandom(-4,4),frandom(-4,4),random(0,359))
	VPB9 ABCDEFGHJIKLMNOPQRST 2 Bright
    Stop
	}
}

ACTOR PatriarchWaitBallParticle
{
  +NOTIMEFREEZE
  +NOINTERACTION
  +CLIENTSIDEONLY
  +BRIGHT
  Scale 0.3
  Alpha 1
  Renderstyle Add
  States
  {
  Spawn:
	TNT1 A 2
	TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Null")
  SpawnLoop:
	VPB0 B 1 A_ChangeVelocity(frandom(0.8,-0.8),frandom(0.8,-0.8),frandom(0.8,-0.8),0)
	TNT1 A 0 A_SetScale(ScaleX-0.001)
	TNT1 A 0 A_FadeOut(0.003)
	Loop
	}
}

ACTOR PatriarchWaitBallTrail : PatriarchWaitBallParticle
{
  Scale 0.35
  States
  {
  Spawn:
	TNT1 A 0 NoDelay A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Null")
	TNT1 A 0
	VPB0 A 1 A_FadeOut(0.05)
	Wait
	}
}

ACTOR PatriarchSoulRender : PatriarchQuionSpamBall
{
  Speed 30
  Damage 20
  Scale 1.0
  -NOGRAVITY
  SeeSound "VexedPatriarch/SoulRender"
  DeathSound "VexedPatriarch/WaitHit"
  States 
  {
  Spawn:
	TNT1 A 0 A_SpawnItemEx("PatriarchWaitBallTrail")
    VQNB A 1 Bright A_SpawnItemEx("PatriarchWaitBallParticle",0,0,0,0,0,0,0,0,192)
    Loop
  Death:
	TNT1 A 1 A_CustomMissile("PatriarchSoulRender2",0,0,0,CMF_AIMDIRECTION)
    Stop
	}
}

ACTOR PatriarchSoulRender2 : PatriarchQuionSpamBall
{
  Speed 50
  Damage 10
  Scale 1.0
  -NOGRAVITY
  +FLOORHUGGER
  +DROPOFF
  +RIPPER
  SeeSound "VexedPatriarch/SoulRender"
  DeathSound "VexedPatriarch/RenderExplode"
  States 
  {
  Spawn:
	TNT1 A 0 A_SeekerMissile(8,10)
	TNT1 A 0 A_RadiusGive("PatriarchSoulFuckery",60,RGF_PLAYERS)
    VPB7 AAA 1 Bright A_SpawnItemEx("NemesisPatriarchSkullEffect",frandom(-10,0),frandom(-8,8),0,frandom(-5,0),frandom(-2,2),frandom(2,6))
	TNT1 A 0 A_SeekerMissile(8,10)
	TNT1 A 0 A_RadiusGive("PatriarchSoulFuckery",60,RGF_PLAYERS)
    VPB7 BBB 1 Bright A_SpawnItemEx("NemesisPatriarchSkullEffect",frandom(-10,0),frandom(-8,8),0,frandom(-5,0),frandom(-2,2),frandom(2,6))
	TNT1 A 0 A_SeekerMissile(8,10)
	TNT1 A 0 A_RadiusGive("PatriarchSoulFuckery",60,RGF_PLAYERS)
    VPB7 CCC 1 Bright A_SpawnItemEx("NemesisPatriarchSkullEffect",frandom(-10,0),frandom(-8,8),0,frandom(-5,0),frandom(-2,2),frandom(2,6))
    Loop
  Death:
	VPB7 DEFGH 6
    Stop
	}
}

Actor PatriarchSoulFuckery : CrusaderBuff
{
  States
  {
  Pickup:
	TNT1 A 1
	TNT1 A 0 A_JumpIfInventory("PatriarchSoulFuckeryToken",1,"Nope")
	TNT1 A 0 A_GiveInventory("PatriarchSoulFuckeryToken")
	TNT1 A 0 ACS_NamedExecuteAlways("PatriarchSoulFuckery")
	Stop
	}
}
Actor PatriarchSoulFuckeryToken : Inventory { Inventory.MaxAmount 1 }

Actor PatriarchSoulExplosion
{
  Projectile
  +NOCLIP
  +FORCERADIUSDMG
  +NODAMAGETHRUST
  Renderstyle Add
  Obituary "%o met the Vexed Nemesis Patriarch."
  States
  {
  Spawn:
	TNT1 A 0 NoDelay A_PlaySound("VexedPatriarch/SoulExplode",1)
	TNT1 A 0 A_Explode(120,200)
	VPB8 ABCDEFGHIJKLMNOPQR 2 Bright
	Stop
	}
}

ACTOR PatriarchLaserRainSpawner : PlamexisFireRainSpawner
{
  +NOTIMEFREEZE
  Speed 20
  States
  {
  Spawn:
	TNT1 AAAAAAAAAAAAAAAAAAAA 1 A_Wander
	MMRA ABCDEFGHIJABCDEFGHIJ 2 Bright A_Wander
    TNT1 A 0 A_CustomMissile("PatriarchLaserRain",-18,random(0,20),random(0,360),2)
	MMRA AAABBBCCC 1 Bright A_Wander
    TNT1 A 0 A_CustomMissile("PatriarchLaserRain",-18,random(0,20),random(0,360),2)
	MMRA EEEFFFGGG 1 Bright A_Wander
    TNT1 A 0 A_CustomMissile("PatriarchLaserRain",-18,random(0,20),random(0,360),2)
	MMRA HHHIIIJJJ 1 Bright A_Wander
	TNT1 A 0 A_CustomMissile("PatriarchLaserRain",-18,random(0,20),random(0,360),2)
  FadeOut:
	MMRA ABCDEFGHIJ 2 Bright A_FadeOut(0.06)
    Goto FadeOut
	}
}

ACTOR PatriarchLaserRain : PlamexisFireRain
{
  +NOTIMEFREEZE
  Scale 0.55
  States 
  {
  Spawn:
    CLBB D 1 Bright A_SpawnItemEx("PatriarchLaserRainTrail",0,0,0,frandom(-4,4),frandom(-4,4),frandom(0,10))
    Loop
  Death:
	TNT1 A 0 A_PlaySound("Plamexis/Laser",7)
    VLAL AB 3 Bright
	VLAL CDEF 3 Bright A_Explode(120,300)
	VLAL GHIJ 3 Bright A_Explode(120,200)
	VLAL KL 3 Bright
    Stop
	}
}

ACTOR PatriarchLaserRainTrail : BaseProjectileEffect
{
  Scale 0.1
  +NOTIMEFREEZE
  States
  {
  Spawn:
	CLBA D 1 Bright A_FadeOut(0.1)
	TNT1 A 0 A_SetScale(ScaleX-0.002)
    Loop
  }
}

ACTOR VexedNemesisAltBallMonster : NemesisAltBallMonster
{
  Renderstyle Add
  Alpha 0.85
  Projectile
  -FOILINVUL
  +SEEKERMISSILE
  Species "Legendary"
  Damagetype "Legendary"
  States
  {
  Spawn:
    TNT1 A 0 NoDelay A_AlertMonsters
    TNT1 A 0 A_PlaySound("Nemesis/BallLoop",7,1.0,1,0.5)
	TNT1 A 0 A_CustomMissile("VexedNemesisAltBallBolt",6,0,random(0,359),CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-40,40))
	TNT1 A 0 A_SpawnItemEx("VexedNemesisAltBallSmoke",frandom(-20,20),frandom(-20,20),frandom(-20,20),frandom(0,1),frandom(0,1),frandom(0,1))
    TNT1 AA 0 A_SpawnItemEx("VexedNemesisFlyParticle",frandom(-8,8),frandom(-8,8),frandom(-8,8),frandom(0,2),frandom(0,2),frandom(0,2),frandom(0,360))
	TNT1 A 0 A_Explode(100,2000,0)
    VNNB A 1 Bright A_SeekerMissile(5,10)
	TNT1 A 0 A_CustomMissile("VexedNemesisAltBallBolt",6,0,random(0,359),CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-40,40))
	TNT1 A 0 A_SpawnItemEx("VexedNemesisAltBallSmoke",frandom(-20,20),frandom(-20,20),frandom(-20,20),frandom(0,1),frandom(0,1),frandom(0,1))
    TNT1 AA 0 A_SpawnItemEx("VexedNemesisFlyParticle",frandom(-8,8),frandom(-8,8),frandom(-8,8),frandom(0,2),frandom(0,2),frandom(0,2),frandom(0,360))
	TNT1 A 0 A_Explode(100,2000,0)
    VNNB B 1 Bright A_SpawnItemEx("VexedNemesisAltBallRailgunAttackMonster",0,0,0,0,0,0,0,SXF_SETMASTER)
	TNT1 A 0 A_CustomMissile("VexedNemesisAltBallBolt",6,0,random(0,359),CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-40,40))
	TNT1 A 0 A_SpawnItemEx("VexedNemesisAltBallSmoke",frandom(-20,20),frandom(-20,20),frandom(-20,20),frandom(0,1),frandom(0,1),frandom(0,1))
    TNT1 AA 0 A_SpawnItemEx("VexedNemesisFlyParticle",frandom(-8,8),frandom(-8,8),frandom(-8,8),frandom(0,2),frandom(0,2),frandom(0,2),frandom(0,360))
	TNT1 A 0 A_Explode(100,2000,0)
    VNNB C 1 Bright A_SeekerMissile(5,10)
	TNT1 A 0 A_CustomMissile("VexedNemesisAltBallBolt",6,0,random(0,359),CMF_AIMDIRECTION|CMF_TRACKOWNER,random(-40,40))
	TNT1 A 0 A_SpawnItemEx("VexedNemesisAltBallSmoke",frandom(-20,20),frandom(-20,20),frandom(-20,20),frandom(0,1),frandom(0,1),frandom(0,1))
    TNT1 AA 0 A_SpawnItemEx("VexedNemesisFlyParticle",frandom(-8,8),frandom(-8,8),frandom(-8,8),frandom(0,2),frandom(0,2),frandom(0,2),frandom(0,360))
	TNT1 A 0 A_Explode(100,2000,0)
    VNNB D 1 Bright A_SpawnItemEx("VexedNemesisAltBallRailgunAttackMonster",0,0,0,0,0,0,0,SXF_SETMASTER)
    Loop
  Death:
    TNT1 A 0 A_StopSound(7)
	TNT1 A 0 Radius_Quake(5,60,0,10,0)
	VNNB ABCDABCD 6 Bright A_SpawnItemEx("VexedNemesisAltBallShockwave")
	TNT1 A 0 A_PlaySound("Nemesis/BallExplode",1,1.0,0,0.2)
	TNT1 A 0 A_SpawnItemEx("VexedNemesisHugeExplosion")
	TNT1 A 0 A_SpawnItemEx("VexedNemesisAltBallEx")
	TNT1 A 0 A_Quake(9,100,0,2000,0)
    TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 2 A_Explode(700,5000,0,0,2000)
    Stop    
    }
}

ACTOR VexedNemesisAltBallBolt : NemesisAltBallBolt
{
  Damage 20
  Damagetype "Legendary"
  States
  {
  Spawn:
  	TNT1 A 0 A_Seekermissile(5,5,SMF_LOOK)
    NFB2 AAABBB 1 A_SpawnItemEx("VexedNemesisAltBallBoltTrail")
    Loop
  Death:
    TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "ToasterDeath")
	TNT1 A 0 A_SpawnItemEx("NemesisWhiteParticleSpawner",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0) 
	TNT1 AA 0 A_CustomMissile("WhiteNemesisKaboom7",0,0,random(0,360),CMF_AIMDIRECTION,random(0,360))
	TNT1 AA 0 A_CustomMissile("LegendarySmokeFX4",0,0,random(0,360),CMF_AIMDIRECTION,random(0,360))
  ToasterDeath:
    NFB2 CDE 2
    Stop
	}
}

ACTOR VexedNemesisAltBallBoltTrail : NemesisAltBallBoltTrail
{
  States
  {
  Spawn:
    NFB2 AAABBB 1 Bright A_FadeOut(0.1)
    Loop
	}
}

ACTOR VexedNemesisAltBallRailgunAttackMonster : NemesisAltBallRailgunAttackMonster
{
  States 
  {
  Spawn:
    TNT1 A 0
	TNT1 AAAAA 1 A_Look
	Stop
  See:
    TNT1 A 0
	TNT1 A 1 A_JumpIfCloser(1250,"Attack")
	Stop
  Attack:
    TNT1 A 0
	TNT1 A 0 A_FaceTarget
	TNT1 A 0 A_MissileAttack
	TNT1 A 1 A_CustomRailgun(random(8,20),0,0,0,RGF_SILENT,1,2,"VexedNemesisRailPuff",0,0,0,0,8,0,"VexedNemesisRailEffect")
	Goto Death
  Death:
	TNT1 A 1
	Stop
	}
}

Actor VexedNemesisRailEffect : NemesisRailEffect
{
  States
  {
  Spawn:
	TNT1 A 0 NoDelay A_Jump(256,1,2,3)
	VBEA ABC 0 A_Jump(256,"Spawn2")
  Spawn2:
	"----" A 1 Bright A_FadeOut
	Wait	 
	}
}

ACTOR VexedNemesisRailPuff : NemesisRailPuff
{
  Species "Legendary"
  Damagetype "Legendary"
  States
  {
  Spawn:
  XDeath:
	TNT1 A 0 A_SpawnItemEx("NemesisWhiteParticleSpawner",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0) 
	TNT1 AAAA 0 A_CustomMissile("WhiteNemesisKaboom7",0,0,random(0,360),CMF_AIMDIRECTION,random(0,360))
    Stop
    }
}

ACTOR VexedNemesisAltBallEx
{
  +CLIENTSIDEONLY
  +NOINTERACTION
  +NOTIMEFREEZE
  var int user_loop;
  States
  {
  Spawn:
	TNT1 A 0 A_JumpIf(user_loop >= 50,"Null")	 
	TNT1 A 0 A_SetUserVar("user_loop",user_loop+1)
	TNT1 AAAAAAAAAAA 0 A_SpawnItemEx("VexedNemesisFlyParticle",random(0,100),0,random(-100,100),frandom(20,50),0,frandom(-30,30),random(0,360))
	TNT1 AAAAAAAAAAA 0 A_SpawnItemEx("PatriarchDeathSmoke2",0,0,0,frandom(-80,80),frandom(-80,80),frandom(-50,50))
	TNT1 AAAAAA 0 A_SpawnItemEx("PatriarchDeathSmoke",0,0,0,frandom(-80,80),frandom(-80,80),frandom(-50,50))
	TNT1 A 2 //Light("NemesisBigBallBoom")
	Loop
	}
}
 
Actor VexedNemesisFlyParticle : NemesisFlyParticle
{
  States
  {
  Spawn:
	SPKW A 1 bright A_FadeOut(0.01,1)
	Loop
  Death:
	TNT1 A 1
	Stop
	}
}

Actor VexedPatriarchOrbitCube1 : PatriarchOrbitCube1
{
  Scale 1.6
  states
  {
  Spawn:
	VAB1 ABCDEFGHIJKLMNOP 2 A_Warp(AAPTR_MASTER,50,0,160,20,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE|WARPF_USECALLERANGLE)
	Loop
	}
}

Actor VexedPatriarchOrbitCube2 : VexedPatriarchOrbitCube1 
{
  States
  {	
  Spawn:
	VAB2 ABCDEFGHIJKLMNOP 2 A_Warp(AAPTR_MASTER,50,0,160,20,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE|WARPF_USECALLERANGLE)
	Loop
  }
}

Actor VexedPatriarchOrbitCube3 : VexedPatriarchOrbitCube1
{
  States
  {
  Spawn:
	VAB3 ABCDEFGHIJKLMNOP 2 A_Warp(AAPTR_MASTER,50,0,160,20,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE|WARPF_USECALLERANGLE)
	Loop
  }
}



ACTOR VexedNemesisHugeExplosion : NemesisAltBallShockwave
{
  Scale 6.0
  Renderstyle Add
  States
  {
  Spawn:
	VNLX ABCDEFGHIJKLMNOPQRS 5 Bright
	Stop
	}
}

actor PatriarchDeathLaserSpawner
{
  +NOINTERACTION
  +NOTIMEFREEZE
  var int user_loop;
  States
  {
  Spawn:
	TNT1 A 0 NoDelay A_SetUserVar("user_loop",0)
	TNT1 A 0 A_JumpIf(user_loop > 35,"Death")
	TNT1 A 0 A_SetUserVar("user_loop",user_loop+1)
	TNT1 A 4 A_SpawnItemEx("PatriarchDeathLaser",frandom(-20,20),frandom(-20,20),frandom(0,100))
    Goto Spawn+1
  Death:
	TNT1 A 1
	Stop
  }
}

Actor PatriarchDeathLaser
{
  +FORCEXYBILLBOARD
  +NOINTERACTION
  +CLIENTSIDEONLY
  +NOTIMEFREEZE
  RenderStyle Add
  Alpha 0.9
  Scale 1.0
  States
  {
  Spawn:
	TNT1 A 0
	TNT1 A 0 A_Jump(4,"SpawnParticle")
    NPDL A 1 Bright A_FadeOut(0.05)
    Loop
  SpawnParticle:
	TNT1 A 0 A_SpawnItemEx("PatriarchDeathSpark",frandom(3,-3),frandom(3,-3),frandom(3,-3))
	Goto Spawn
  }
}


Actor PatriarchDeathKaboomEffectSpawner
{
  +NOINTERACTION
  +NOTIMEFREEZE
  var int user_loop;
  States
  {
  Spawn:
	TNT1 A 0 NoDelay A_SetUserVar("user_loop",0)
	TNT1 A 0 A_JumpIf(user_loop > 150,"Death")
	TNT1 A 0 A_SetUserVar("user_loop",user_loop+1)
	TNT1 A 0 A_SpawnItemEx("PatriarchDeathSpark",frandom(3,-3),frandom(3,-3),frandom(3,-3))
    TNT1 AAAA 0 A_SpawnItemEx("PatriarchDeathFlame",random(-20,20),random(-20,20),random(0,100),frandom(-10,10),frandom(-10,10),random(5,45),random(0,360))
    TNT1 AA 0 A_SpawnItemEx("PatriarchDeathKaboomEffect",random(-20,20),random(-20,20),random(0,100),frandom(-10,10),frandom(-10,10),random(5,30),random(0,360))
	TNT1 AAAAAA 0 A_SpawnItemEx("PatriarchDeathSmoke",0,0,0,frandom(-80,80),frandom(-80,80),frandom(-50,50))
	TNT1 AAA 0 A_SpawnItemEx("PatriarchDeathSmoke2",0,0,0,frandom(-80,80),frandom(-80,80),frandom(-50,50))
    TNT1 A 1 A_SpawnItemEx("PatriarchDeathLaser",0,0,0,frandom(-2,2),frandom(-2,2),40)
    Goto Spawn+1
  Death:
	TNT1 A 1
	Stop
  }
}

Actor PatriarchDeathKaboomEffect : Kaboom
{
  +NOINTERACTION
  +NOTIMEFREEZE
  Scale 1.3
  States
  {
  Spawn:
	TNT1 A 0
	FXPW ABCDEFGHIJKLM 3 Bright A_FadeOut(0.05,1)
	Stop
  }
}

Actor PatriarchDeathSpark
{
  +NOTIMEFREEZE
  +NOINTERACTION
  +CLIENTSIDEONLY
  Scale 0.08
  Alpha 1
  Renderstyle Add
  States
  {
  Spawn:
	TNT1 A 0
	SPKW A 1 A_ChangeVelocity(frandom(0.8,-0.8),frandom(0.8,-0.8),frandom(0.8,-0.8),0)
	TNT1 A 0 A_FadeOut(0.003)
	Loop
  }
}


ACTOR PatriarchDeathFlame
{
+CLIENTSIDEONLY
+NOINTERACTION
+FORCEXYBILLBOARD
+NOTIMEFREEZE
RenderStyle Add
Scale 1.1
States
{
Spawn:
    TNT1 A 0
    2HDT ABCDEFGHIJKL 4 Bright A_FadeOut(0.05)
    Stop
	}
}

Actor VexedNemesisAltBallSmoke
{
  Scale 0.8
  +NOINTERACTION
  +CLIENTSIDEONLY
  +NOTIMEFREEZE
  +BRIGHT
  Renderstyle Add
  States
  {
  Spawn:
	TNT1 A 0 NoDelay A_Jump(256,1,2,3)
	NHP1 ABC 0 A_Jump(256,"Spawn2")
  Spawn2:
	"----" A 1 Bright A_FadeOut(0.03)
	Wait	 
	}
}

ACTOR VexedNemesisAltBallShockwave : NemesisAltBallShockwave 
{
  Renderstyle Add
  States
  {
  Spawn:
	NHOG ABCDEFGHIJKLMNOPQR 1 Bright A_FadeOut(0.04)
	Stop
	}
}

Actor PatriarchDeathSmoke : VexedNemesisAltBallSmoke { Scale 1.8 }

Actor PatriarchDeathSmoke2 : NemesisAltBallSmoke
{
  Scale 2.5
  States
  {
  Spawn:
	NRE1 ABCDEF 3 Bright A_FadeOut(0.1)
	Stop	 
	}
}

ACTOR NemesisIconoclast
{
  Monster
  Radius 80
  Height 120
  Mass 10000000
  Health 10000
  Renderstyle Add
  Alpha 1.0
  DamageFactor 0.6
  DamageFactor "Patriarch", 0
  DamageFactor "PlayerNemesisPlasma", 0
  DamageFactor "Legendary", 0
  Species "Legendary"
  Damagetype "Legendary"
  -COUNTKILL
  +NOBLOOD
  +CANTSEEK
  +BRIGHT
  +NOGRAVITY
  +FORCERADIUSDMG
  Obituary "%o met the Vexed Nemesis Patriarch."
  var int user_loop;
  Tag "\c[v9]Nemesis Iconoclast\c-"
  States
  {
  Spawn:
	TNT1 A 0 A_JumpIf(user_loop >= 20,"Explode")
	TNT1 A 0 A_SetUserVar("user_loop",user_loop+1)
	TNT1 A 0 A_SpawnItemEx("VexedNemesisAltBallShockwave")
	TNT1 A 0 A_SetScale(ScaleX+0.3)
    TNT1 AAAAA 0 A_SpawnItemEx("PatriarchWaitBallParticle",frandom(-8,8),frandom(-8,8),frandom(-8,8),frandom(0,2),frandom(0,2),frandom(0,2),frandom(0,360))
	VNNB ABCD 6 A_SpawnItemEx("VexedNemesisAltBallSmoke",frandom(-100,100),frandom(-100,100),frandom(-100,100),frandom(0,1),frandom(0,1),frandom(0,1))
	Loop
  Death:
	TNT1 A 0 A_NoGravity
	TNT1 A 0 A_PlaySound("BFG9K/Explode",1,1.0,0,ATTN_NONE)
	TNT1 A 0 A_SetScale(ScaleX+0.5)
    TNT1 AAAAAAAAAA 0 A_SpawnItemEx("PatriarchWaitBallParticle",frandom(-8,8),frandom(-8,8),frandom(-8,8),frandom(0,2),frandom(0,2),frandom(0,2),frandom(0,360))
    TNT1 AAAAAA 0 A_CustomMissile("WhiteNemesisKaboomNoSound", 0, 0, random(0,360), 2, random(0,360))
    NFE3 ABCDEF 10 Bright A_SpawnItemEx("NemesisWhiteParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
	Stop
  Explode:
	TNT1 A 0 A_PlaySound("VexedPatriarch/Iconoclast",1,1.0,0,ATTN_NONE)
    TNT1 A 0 A_PlaySound("Nemesis/BallLoop",7,1.0,1,0.5)
	TNT1 A 0 A_Quake(4,156,0,4000,0)
	VNNB ABCDABCDABCDABCDABCDABCDABCDABCDABCDABC 4 A_SpawnItemEx("VexedNemesisAltBallSmoke",frandom(-100,100),frandom(-100,100),frandom(-100,100),frandom(-40,40),frandom(-40,40),frandom(-40,40))
	TNT1 A 0 A_SetInvulnerable
	TNT1 A 0 A_ChangeFlag("NODAMAGE",1)
	TNT1 A 0 A_Quake(7,64,0,4000,0)
	VNNB ABCDABCDABCDABCD 4 A_SpawnItemEx("NemesisIconoclastPreExplosion")
	TNT1 A 0 A_SpawnItemEx("VexedNemesisAbsolutelyFuckingGiantExplosion")
	TNT1 A 0 A_SpawnItemEx("NemesisIconoclastExplosion",0,0,0,0,0,0,0,SXF_ABSOLUTEANGLE)
	TNT1 A 0 A_SpawnItemEx("NemesisIconoclastExplosion",0,0,0,0,0,0,90,SXF_ABSOLUTEANGLE)
	TNT1 A 0 A_SpawnItemEx("NemesisIconoclastExplosion",0,0,0,0,0,0,180,SXF_ABSOLUTEANGLE)
	TNT1 A 0 A_SpawnItemEx("NemesisIconoclastExplosion",0,0,0,0,0,0,270,SXF_ABSOLUTEANGLE)
	TNT1 A 0 A_Quake(10,100,0,8000,0)
	TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 2 A_Explode(1000,8000,XF_NOTMISSILE,0,6000)
	Stop
	}
}

ACTOR NemesisIconoclastPreExplosion
{
  +NOTIMEFREEZE
  +CLIENTSIDEONLY
  +NOINTERACTION
  States
  {
  Spawn:
	TNT1 A 0 NoDelay A_SpawnItemEx("NemesisPatriarchLightning",random(-250,250),random(-250,250),-400,0,0,0,0,0,128)
    TNT1 AAA 0 A_SpawnItemEx("PatriarchWaitBallParticle",frandom(-8,8),frandom(-8,8),frandom(-8,8),frandom(0,2),frandom(0,2),frandom(0,2),frandom(0,360))
	TNT1 AAAA 1 A_SpawnItemEx("VexedNemesisAltBallSmoke",frandom(-100,100),frandom(-100,100),frandom(-100,100),frandom(-40,40),frandom(-40,40),frandom(-40,40))
	Stop
	}
}

ACTOR NemesisIconoclastExplosion : VexedNemesisAltBallEx
{
  +CLIENTSIDEONLY
  +NOINTERACTION
  +NOTIMEFREEZE
  States
  {
  Spawn:
	TNT1 A 0 A_JumpIf(user_loop >= 80,"Null")	 
	TNT1 A 0 A_SetUserVar("user_loop",user_loop+1)
	TNT1 AAAA 0 A_SpawnItemEx("PatriarchWaitBallParticle",random(0,500),0,random(-100,100),frandom(100,300),0,frandom(-80,80),random(-40,40))
	TNT1 AAAA 0 A_SpawnItemEx("PatriarchDeathSmoke2Big",random(0,400),0,random(-100,100),frandom(100,300),0,frandom(-80,80),random(-40,40))
	TNT1 AAA 0 A_SpawnItemEx("PatriarchDeathSmokeBig",random(0,400),0,random(-100,100),frandom(100,300),0,frandom(-80,80),random(-40,40))
	TNT1 A 2 //Light("NemesisBigBallBoom")
	Loop
	}
}

ACTOR VexedNemesisAbsolutelyFuckingGiantExplosion : NemesisAltBallShockwave
{
  Scale 12.0
  Renderstyle Add
  States
  {
  Spawn:
	VNLX ABCDEFGHIJKLMNOPQRS 8 Bright
	Stop
	}
}

Actor PatriarchDeathSmokeBig : PatriarchDeathSmoke { Scale 5.0 }

Actor PatriarchDeathSmoke2Big : PatriarchDeathSmoke2 { Scale 6.5 }

Actor PatriarchDeathEffect
{
  +NOINTERACTION
  +CLIENTSIDEONLY
  +NOTIMEFREEZE
  +BRIGHT
  Scale 4.5
  Renderstyle Add
  States
  {
  Spawn:
	NPOR ABCDEFGHIJKLMNOPQRSTUVWXYZ 3
	NPO2 ABCDEFGHIJKLMNOPQRSTUVWXYZ 3
	NPO3 ABCDEFGHIJKLMNOPQR 3
	Stop
	}
}

ACTOR NemesisCardinalFireSpawner
{
  +NOINTERACTION
  +CLIENTSIDEONLY
  +ISMONSTER
  States
  {
  Spawn:
	TNT1 A 0
    TNT1 A 2 A_Warp(AAPTR_MASTER,0,0,0,0,WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
	TNT1 A 0 A_JumpIf(CallAcs("LCAEffectCheck"),"Toaster")
	TNT1 A 0 A_PlaySound("monster/ambientfire3",1,1.0,1)
	TNT1 A 0 A_SpawnItemEx("NemesisCardinalFireEx",random(8,-8),random(4,-4),random(70,80),0,0,random(-10,-14),0,128,0)	
    TNT1 AAAA 0 A_SpawnItemEx("NemesisCardinalFire",random(18,-18),random(14,-14),random(70,80),0,0,random(-10,-14),0,128,0)
    Loop
  Toaster:
    TNT1 A 2 A_Warp(AAPTR_MASTER,0,0,0,0,WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
	TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 0, "Spawn")
	Loop
  }
}

ACTOR NemesisCardinalShroudSpawner
{
  +NOINTERACTION
  +CLIENTSIDEONLY
  +ISMONSTER
  States
  {
  Spawn:
	TNT1 A 0 A_SpawnItemEx("MiniCyberNemesisGuruSphereSmoke",random(-600,600),random(-600,600),random(-100,100),frandom(-1,1),frandom(-1,1),frandom(-1,1))	
    TNT1 A 20 A_Warp(AAPTR_MASTER,0,0,0,0,WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
    Loop
  }
}

ACTOR NemesisCardinalFire
{
+CLIENTSIDEONLY
+NOINTERACTION
+NOTIMEFREEZE
RenderStyle Add
Scale 0.4
States
{
Spawn:
2HDT ABCDEFGHIJKL 1 Bright A_FadeOut
Stop
}
}

ACTOR NemesisCardinalFireEx : WhiteNemesisKaboomNoSound
{
Speed 0
Scale 0.85
+NOTIMEFREEZE
}