//Basis
ACTOR AnnihilationSpray
{  
   Scale 0.8
   Alpha 0.8
   DamageType Extreme
   +NOGRAVITY
   +NOINTERACTION
   +NOTONAUTOMAP
   +FORCEXYBILLBOARD
   RenderStyle Add
   States
   {
   Spawn:
      ANNH IJKLM 4 Bright
      Stop
   }
}

ACTOR AnnihilationShot1
{
   Radius 4
   Height 8
   Speed 2
   Scale 0.2
   Damage 3
   PROJECTILE
   ProjectileKickback 400
   RenderStyle Add
   Alpha 0.8
   DamageType "Annihilation"
   Obituary "%o got caught in %k's annihilation. Enough said."
   +DONTREFLECT
   +FOILINVUL
   +FORCEXYBILLBOARD
   +SEEKERMISSILE
   +LOOKALLAROUND
   +SKYEXPLODE
   +EXTREMEDEATH
   var int User_Counter;
   var int User_Frame;
   States
   {
   Spawn:
	  "####" "#" 0 NoDelay A_SetUserVar("User_Counter",24)
   Frame:
	  "####" "#" 0 A_JumpIf(User_Frame == 8, "FrameH")
	  "####" "#" 0 A_JumpIf(User_Frame == 7, "FrameG")
	  "####" "#" 0 A_JumpIf(User_Frame == 6, "FrameF")
	  "####" "#" 0 A_JumpIf(User_Frame == 5, "FrameE")
	  "####" "#" 0 A_JumpIf(User_Frame == 4, "FrameD")
	  "####" "#" 0 A_JumpIf(User_Frame == 3, "FrameC")
	  "####" "#" 0 A_JumpIf(User_Frame == 2, "FrameB")
	  "####" "#" 0 A_JumpIf(User_Frame == 1, "FrameA")
   Reset:
	 "####" "#" 0 A_SetUserVar("User_Frame",1)
   FrameA:
	  ANNH A 0
	  Goto Main
   FrameB:
	  ANNH B 0
	  Goto Main
   FrameC:
	  ANNH C 0
	  Goto Main
   FrameD:
	  ANNH A 0
	  Goto Main
   FrameE:
	  ANNH E 0
	  Goto Main
   FrameF:
	  ANNH F 0
	  Goto Main
   FrameG:
	  ANNH G 0
	  Goto Main
   FrameH:
	  ANNH H 0
	  Goto Main
   Main:
	  "####" "#" 1 Bright A_SeekerMissile(0,0,SMF_LOOK|SMF_CURSPEED,256)
	  "####" "#" 0 A_SetUserVar("User_Counter", User_Counter - 1)
	  "####" "#" 0 A_SetUserVar("User_Frame", User_Frame + 1)
	  "####" "#" 0 A_JumpIf(User_Counter <= 0, "Release")
	  "####" "#" 0 A_JumpIf(User_Frame >= 8, "Reset")
	  Goto Frame
   Release:
	  TNT1 A 0 A_JumpIf(IsPointerEqual(AAPTR_TRACER, AAPTR_DEFAULT|AAPTR_NULL) == TRUE, "NoTarget")
	  TNT1 AAAA 0 A_SeekerMissile(90,90,SMF_LOOK|SMF_CURSPEED,256)
	  TNT1 A 0 A_ScaleVelocity(15)
   Looplet:
	  //ANNH AA 0 A_SeekerMissile(8,6,SMF_LOOK|SMF_PRECISE|SMF_CURSPEED,50,5)
      ANNH A 3 Bright A_SpawnItemEx("AnnihilationShot1Trail",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
	  //ANNH A 0 A_SeekerMissile(8,6,SMF_LOOK|SMF_PRECISE|SMF_CURSPEED,50,5)
      ANNH C 3 Bright A_SpawnItemEx("AnnihilationShot1Trail",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
	  //ANNH A 0 A_SeekerMissile(8,6,SMF_LOOK|SMF_PRECISE|SMF_CURSPEED,50,5)
      ANNH E 3 Bright A_SpawnItemEx("AnnihilationShot1Trail",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
	  //ANNH A 0 A_SeekerMissile(8,6,SMF_LOOK|SMF_PRECISE|SMF_CURSPEED,50,5)
      ANNH G 3 Bright A_SpawnItemEx("AnnihilationShot1Trail",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
	  Loop
   Death:
      ANNH I 0 A_PlaySound("Annihilation/Hit1",5,0.6)
      ANNH I 0 A_Explode(10,48,0)
      ANNH IJKLM 4 Bright
	  Stop
   NoTarget:
	  ANNH IJKLM 1 Bright
      Stop
   }
}

ACTOR AnnihilationShot2 : AnnihilationShot1 //Non-aimin' shot
{
   Speed 30
   States
   {
   Spawn:
      ANNH ACEG 3 Bright A_SpawnItemEx("AnnihilationShot1Trail",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
	  Loop
   }
}

ACTOR AnnihilationShot1Trail
{
   +NOTONAUTOMAP
   +NOINTERACTION
   +FORCEXYBILLBOARD
   Scale 0.1
   RenderStyle Add
   Alpha 0.8
   States
   {
   Spawn:
      ANNH ABCDEFGHIJKM 1 Bright
      Stop
   }
}

/*
ACTOR AnnihilationAttacker
{  
   Radius 1
   Height 2
   Scale 0.8
   +ISMONSTER
   +FRIENDLY
   +LOOKALLAROUND
   +NOGRAVITY
   +NOINTERACTION
   +NOTONAUTOMAP
   +FORCEXYBILLBOARD
   States
   {
   Spawn:
      TNT1 A 0 A_Look
   See:
      TNT1 A 0 A_Chase
   Missile:
      B122 A 0 A_FaceTarget
      B122 A 1 A_CustomMissile("AnnihilationShot2",0,0,0,CMF_TRACKOWNER)
      Stop
   }
}

ACTOR AnnihilationAutoBlast : AnnihilationShot1
{
   Radius 3
   Height 4
   Speed 2
   Scale 0.2
   +MISSILE
   +NOTONAUTOMAP
   +SEEKERMISSILE
   States
   {
   Spawn:
      ANNH ABCDEFGHABCDEFGHABCDEFGH 1 Bright
      Goto Death
   Death:
      //B122 I 0 A_SpawnItemEx("AnnihilationAttacker",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
	  B122 I 0 A_SeekerMissile(0,0,SMF_LOOK|SMF_CURSPEED,256)
	  B122 I 0 A_CustomMissile("AnnihilationShot2",0,0,0,CMF_TRACKOWNER,0,AAPTR_TRACER)
      ANNH IJKLM 1 Bright
      Stop
   }
}

*/

ACTOR AnnihilationShotBlast : AnnihilationShot1
{
   Radius 13
   Height 9
   Speed 25
   Damage 5
   Scale 0.9
   States
   {
   Spawn:
      B122 AB 3 Bright A_SpawnItemEx("AnnihilationShotBlastTrail",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
      Loop
   Death:
      B122 CD 1 Bright
      TNT1 AAAAA 0 A_CustomMissile("AnnihilationShot2", 0, 0, random(0, 360), CMF_AIMDIRECTION|CMF_TRACKOWNER, random(0, 360))
      B122 E 1 Bright
      B122 FGH 1 Bright
      Stop
   }
}

ACTOR AnnihilationShotBlastTrail : AnnihilationShot1Trail
{
   Scale 0.4
}


//Non-tomed
ACTOR AnnihilationShot : AnnihilationShot1
{
   Radius 13
   Height 12
   Speed 40
   Damage 5
   Scale 0.7
   Alpha 1.0
   States
   {
   Spawn:
      ANNH A 0 A_PlaySound("Annihilation/Loop1",5,0.6)
      ANNH A 2 Bright
   Wololo:
      TNT1 AAAA 0 A_CustomMissile("AnnihilationShot1", 0, 0, random(0, 360), CMF_AIMDIRECTION|CMF_TRACKOWNER, random(0, 360))
      ANNH A 2 Bright
      TNT1 AAAA 0 A_CustomMissile("AnnihilationShot1", 0, 0, random(0, 360), CMF_AIMDIRECTION|CMF_TRACKOWNER, random(0, 360))
      ANNH B 2 Bright
      TNT1 AAAA 0 A_CustomMissile("AnnihilationShot1", 0, 0, random(0, 360), CMF_AIMDIRECTION|CMF_TRACKOWNER, random(0, 360))
      ANNH C 2 Bright
      TNT1 AAAA 0 A_CustomMissile("AnnihilationShot1", 0, 0, random(0, 360), CMF_AIMDIRECTION|CMF_TRACKOWNER, random(0, 360))
	  ANNH D 2 Bright
      TNT1 AAAA 0 A_CustomMissile("AnnihilationShot1", 0, 0, random(0, 360), CMF_AIMDIRECTION|CMF_TRACKOWNER, random(0, 360))
	  ANNH E 2 Bright
      TNT1 AAAA 0 A_CustomMissile("AnnihilationShot1", 0, 0, random(0, 360), CMF_AIMDIRECTION|CMF_TRACKOWNER, random(0, 360))
	  ANNH F 2 Bright
      TNT1 AAAA 0 A_CustomMissile("AnnihilationShot1", 0, 0, random(0, 360), CMF_AIMDIRECTION|CMF_TRACKOWNER, random(0, 360))
	  ANNH G 2 Bright
      TNT1 AAAA 0 A_CustomMissile("AnnihilationShot1", 0, 0, random(0, 360), CMF_AIMDIRECTION|CMF_TRACKOWNER, random(0, 360))
	  ANNH H 2 Bright
      TNT1 AAAA 0 A_CustomMissile("AnnihilationShot1", 0, 0, random(0, 360), CMF_AIMDIRECTION|CMF_TRACKOWNER, random(0, 360))
      Loop
   Death:
   	  TNT1 A 0 A_SetUserVar("User_Counter", 30)
   DeathLoop:
      TNT1 A 0 A_JumpIf(User_Counter <=0, "End")
      TNT1 A 0 A_CustomMissile("AnnihilationSuperblast", 0, 0, random(0, 360), CMF_AIMDIRECTION|CMF_TRACKOWNER, random(0, 360))
	  TNT1 A 0 A_SetUserVar("User_Counter", User_Counter - 1)
	  Loop
   End:
      ANNH I 0 A_PlaySound("Annihilation/Hit2",5,0.7)
      ANNH I 0 A_PlaySound("Annihilation/Hit3",6,0.7)
      ANNH I 0 A_SpawnItemEx("AnnihilationShotGLDEF",0,0,0,25.0,0,frandom(25.0,-25.0),frandom(0.0,360.0),SXF_CLIENTSIDE)
	  ANNH I 4 Bright A_Explode(100,192,0)
      ANNH I 4 Bright A_CustomMissile("AnnihilationSprayer",0,0,0,CMF_TRACKOWNER)
      ANNH JKLM 4 Bright
      Stop
   }
}

ACTOR AnnihilationShotGLDEF
{
	+NOINTERACTION
	+NOGRAVITY
	+NOTONAUTOMAP
	States
	{
	Spawn:
	TNT1 A 35
	Stop
	}
}

ACTOR AnnihilationSprayer
{  
   Radius 1
   Height 2
   PROJECTILE
   DamageType Extreme
   Obituary "%o was annihilated by %k's glaring stare."
   +NOTONAUTOMAP
   States
   {
   Spawn:
      TNT1 A 0
      TNT1 A 1 A_BFGSpray("AnnihilationSpray",10,10,360,1024,32,BFGF_MISSILEORIGIN)
      Stop
   }
}

//Tomed
ACTOR TomedAnnihilationShot : AnnihilationShot1
{
   Radius 18
   Height 12
   Speed 40
   Damage 10
   Scale 0.8
   Alpha 1
   States
   {
   Spawn:
      ANNH AA 0 A_PlaySound("Annihilation/Loop2",5,0.6)
   	  TNT1 A 0 A_SetUserVar("User_Counter", 20)
      ANNH A 2 Bright
   Wololo:
      TNT1 AAAAAAAAAAA 0 A_CustomMissile("AnnihilationShot1", 0, 0, random(0, 360), CMF_AIMDIRECTION|CMF_TRACKOWNER, random(0, 360))
      ANNH A 2 Bright
      TNT1 AAAAAAAAAA 0 A_CustomMissile("AnnihilationShot1", 0, 0, random(0, 360), CMF_AIMDIRECTION|CMF_TRACKOWNER, random(0, 360))
      ANNH B 2 Bright
      TNT1 AAAAAAAAAA 0 A_CustomMissile("AnnihilationShot1", 0, 0, random(0, 360), CMF_AIMDIRECTION|CMF_TRACKOWNER, random(0, 360))
      ANNH C 2 Bright
      TNT1 AAAAAAAAAA 0 A_CustomMissile("AnnihilationShot1", 0, 0, random(0, 360), CMF_AIMDIRECTION|CMF_TRACKOWNER, random(0, 360))
	  ANNH D 2 Bright
      TNT1 AAAAAAAAAA 0 A_CustomMissile("AnnihilationShot1", 0, 0, random(0, 360), CMF_AIMDIRECTION|CMF_TRACKOWNER, random(0, 360))
	  ANNH E 2 Bright
      TNT1 AAAAAAAAAA 0 A_CustomMissile("AnnihilationShot1", 0, 0, random(0, 360), CMF_AIMDIRECTION|CMF_TRACKOWNER, random(0, 360))
	  ANNH F 2 Bright
      TNT1 AAAAAAAAAA 0 A_CustomMissile("AnnihilationShot1", 0, 0, random(0, 360), CMF_AIMDIRECTION|CMF_TRACKOWNER, random(0, 360))
	  ANNH G 2 Bright
      TNT1 AAAAAAAAAA 0 A_CustomMissile("AnnihilationShot1", 0, 0, random(0, 360), CMF_AIMDIRECTION|CMF_TRACKOWNER, random(0, 360))
	  ANNH H 2 Bright
      TNT1 AAAAAAAAAA 0 A_CustomMissile("AnnihilationShot1", 0, 0, random(0, 360), CMF_AIMDIRECTION|CMF_TRACKOWNER, random(0, 360))
	  Loop
   Death:
      ANNH I 0 A_PlaySound("Annihilation/Hit4",5,0.8)
	  ANNH I 0  A_QuakeEx(9,9,7,70,0,8192,"none",QF_SCALEDOWN|QF_WAVE,1.0,1.0,2.0)
	  ANNH I 0  A_Quake(9,70,0,8192,"none")
      ANNH I 0 A_SpawnItemEx("TomedAnnihilationShotGLDEF",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
      TNT1 A 0 A_Explode(200,256,0)
      TNT1 A 0 A_CustomMissile("TomedAnnihilationSprayer",0,0,0,CMF_AIMDIRECTION|CMF_TRACKOWNER)
      TNT1 A 0 A_SpawnItemEx("AnnihilationBoom",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
   Looplo:
	  TNT1 A 0 A_JumpIf(User_Counter <=0, "End")
      TNT1 A 0 A_SpawnItemEx("AnnihilationSuperblast",0,0,0,frandom(25.0,20.0),0,frandom(25.0,-25.0),frandom(0.0,360.0),SXF_TRANSFERPOINTERS,0)
	  TNT1 A 3 A_SetUserVar("User_Counter", User_Counter - 1)
	  Loop
   End:
	  TNT1 A 105
	  Stop
   }
}

ACTOR TomedAnnihilationShotGLDEF
{
	+NOINTERACTION
	+NOGRAVITY
	States
	{
	Spawn:
	TNT1 A 50
	Stop
	}
}

ACTOR AnnihilationBoom
{
	+NOINTERACTION
	var int User_Cycle;
	var int User_Pitch;
	States
	{
	Spawn:
		TNT1 A 0 NoDelay A_SetPitch(Pitch + 80) //Default position.
		TNT1 A 0 A_SpawnItemEx("AnnihilationSuperblast",0,0,0,0,0,25,0,SXF_TRANSFERPOINTERS)
	Cycle1:
		TNT1 A 0 A_SetUserVar("User_Cycle",18) //one projectile every 20 degrees.
	Cycle2:
		TNT1 A 0 A_JumpIf(User_Cycle <= 0, "SwitchGear") //Are we done with this ring? Then let's pump the pitch a notch.
		TNT1 A 0 A_SetUserVar("User_Cycle", User_Cycle - 1) //Projectile launched? Remove one from the cycle.
		TNT1 A 0 A_SpawnItemEx("AnnihilationSuperblast",0,0,0,cos(-pitch)*25,0,sin(pitch)*25,Angle,SXF_TRANSFERPITCH|SXF_TRANSFERPOINTERS) //Here it gooooes.
		TNT1 A 0 A_SetAngle(Angle + 20) //Projectile launched? Turn it a bit.
		Loop
	SwitchGear:
		TNT1 A 0 A_JumpIf(User_Pitch >= 16, "Death") //Did we hit the upper head? Well, that's all, folks.
		TNT1 A 0 A_SetUserVar("User_Pitch", User_Pitch + 1)
		TNT1 A 0 A_SetPitch(Pitch - 10, SPF_FORCECLAMP) //Move it up a pinch.
		Goto Cycle1
	Death:
		TNT1 A 0 A_SpawnItemEx("AnnihilationSuperblast",0,0,0,0,0,-25,0,SXF_TRANSFERPOINTERS)
		Stop
	}
}

ACTOR AnnihilationSuperblast : AnnihilationShot1
{
   Radius 14
   Height 10
   Speed 25
   Damage 4
   Scale 0.5
   Alpha 1
   States
   {
   Spawn:
      ANNH ABCDEFGH 3 Bright A_SpawnItemEx("AnnihilationShotBlastTrail",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
      Loop
   Death:
      TNT1 AAA 0 A_SpawnItemEx("AnnihilationShotBlast",0,0,0,frandom(25.0,20.0),0,frandom(25.0,-25.0),frandom(0.0,360.0),SXF_TRANSFERPOINTERS)
      ANNH I 2 Bright A_Explode(30,192,0)
      ANNH I 2 Bright
      ANNH JKLM 2 Bright
      Stop
   }
}

ACTOR TomedAnnihilationSprayer
{  
   Radius 1
   Height 2
   PROJECTILE
   Obituary "%o was annihilated by %k's glaring stare."
   DamageType Extreme
   +NOTONAUTOMAP
   States
   {
   Spawn:
      TNT1 A 0
      TNT1 A 1 A_BFGSpray("AnnihilationSpray",20,20,360,1024,32,0,BFGF_MISSILEORIGIN)
      Stop
   }
}

//[DoomKrakken]: Alternate Mode, a la Russian Overkill... (Tomed version built into the code)

ACTOR AnnihilationSanctumProjectile : FastProjectile
{
   Radius 11
   Height 7
   Damage 40
   Speed 55
   Projectile
   Obituary "%o was somehow killed by %k's Annihilation Sanctuary..."
   +FORCERADIUSDMG
   +EXPLODEONWATER
   +SKYEXPLODE
   +DONTBLAST
   +FORCEXYBILLBOARD
   +EXTREMEDEATH
   -NOGRAVITY
   Scale 0.4
   Gravity 12
   Alpha 0.8
   States
   {
   Spawn:
      ANNH A 0 
      ANNH A 0 //A_GiveToTarget("SanctumInAir",1)
      ANNH A 0 ThrustThingZ(0,20,0,1)
   Looplet:
      ANNH A 1 Bright //A_SpawnItemEx("VindicatorTrailA",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0)
      ANNH A 0 ThrustThingZ(0,random(-4,-6),0,1)
      ANNH B 1 Bright //A_SpawnItemEx("VindicatorTrailB",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0)
      ANNH A 0 ThrustThingZ(0,random(-4,-6),0,1)
      ANNH C 1 Bright //A_SpawnItemEx("VindicatorTrailC",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0)
      ANNH A 0 ThrustThingZ(0,random(-4,-6),0,1)
      ANNH D 1 Bright //A_SpawnItemEx("VindicatorTrailD",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0)
      ANNH A 0 ThrustThingZ(0,random(-4,-6),0,1)
      ANNH E 1 Bright //A_SpawnItemEx("VindicatorTrailE",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0)
      ANNH A 0 ThrustThingZ(0,random(-4,-6),0,1)
      Loop
   Death:
      TNT1 A 0 A_PlaySound("Annihilation/Deploy",5,1.0,ATTN_NONE)
      TNT1 A 0 A_ChangeFlag("MISSILE",0)
      TNT1 A 0 A_ChangeFlag("NOBLOCKMAP",0)
      TNT1 A 0 A_ChangeFlag("NOCLIP",1)
      TNT1 A 0 A_ChangeFlag("NOINTERACTION",1)
      ANNH E 2 Bright

      //[DoomKrakken]: Extra ball. :D
	  //TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,0,CMF_AIMDIRECTION|CMF_TRACKOWNER,-90)	  
/*
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,0,CMF_AIMDIRECTION|CMF_TRACKOWNER,-75)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,60,CMF_AIMDIRECTION|CMF_TRACKOWNER,-75)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,120,CMF_AIMDIRECTION|CMF_TRACKOWNER,-75)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,180,CMF_AIMDIRECTION|CMF_TRACKOWNER,-75)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,240,CMF_AIMDIRECTION|CMF_TRACKOWNER,-75)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,300,CMF_AIMDIRECTION|CMF_TRACKOWNER,-75)
*/      
	  TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,0,CMF_AIMDIRECTION|CMF_TRACKOWNER,-60)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,40,CMF_AIMDIRECTION|CMF_TRACKOWNER,-60)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,80,CMF_AIMDIRECTION|CMF_TRACKOWNER,-60)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,120,CMF_AIMDIRECTION|CMF_TRACKOWNER,-60)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,160,CMF_AIMDIRECTION|CMF_TRACKOWNER,-60)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,200,CMF_AIMDIRECTION|CMF_TRACKOWNER,-60)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,240,CMF_AIMDIRECTION|CMF_TRACKOWNER,-60)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,280,CMF_AIMDIRECTION|CMF_TRACKOWNER,-60)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,320,CMF_AIMDIRECTION|CMF_TRACKOWNER,-60)

	  TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,0,CMF_AIMDIRECTION|CMF_TRACKOWNER,-40)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,40,CMF_AIMDIRECTION|CMF_TRACKOWNER,-40)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,80,CMF_AIMDIRECTION|CMF_TRACKOWNER,-40)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,120,CMF_AIMDIRECTION|CMF_TRACKOWNER,-40)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,160,CMF_AIMDIRECTION|CMF_TRACKOWNER,-40)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,200,CMF_AIMDIRECTION|CMF_TRACKOWNER,-40)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,240,CMF_AIMDIRECTION|CMF_TRACKOWNER,-40)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,280,CMF_AIMDIRECTION|CMF_TRACKOWNER,-40)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,320,CMF_AIMDIRECTION|CMF_TRACKOWNER,-40)

	  /*//[DoomKrakken]: "Comment out" the above paragraph and use this instead, if you want a weaving pattern...
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,20,CMF_AIMDIRECTION|CMF_TRACKOWNER,-40)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,60,CMF_AIMDIRECTION|CMF_TRACKOWNER,-40)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,100,CMF_AIMDIRECTION|CMF_TRACKOWNER,-40)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,140,CMF_AIMDIRECTION|CMF_TRACKOWNER,-40)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,180,CMF_AIMDIRECTION|CMF_TRACKOWNER,-40)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,220,CMF_AIMDIRECTION|CMF_TRACKOWNER,-40)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,260,CMF_AIMDIRECTION|CMF_TRACKOWNER,-40)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,300,CMF_AIMDIRECTION|CMF_TRACKOWNER,-40)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,340,CMF_AIMDIRECTION|CMF_TRACKOWNER,-40)
	  */

      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,0,CMF_AIMDIRECTION|CMF_TRACKOWNER,-20)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,40,CMF_AIMDIRECTION|CMF_TRACKOWNER,-20)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,80,CMF_AIMDIRECTION|CMF_TRACKOWNER,-20)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,120,CMF_AIMDIRECTION|CMF_TRACKOWNER,-20)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,160,CMF_AIMDIRECTION|CMF_TRACKOWNER,-20)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,200,CMF_AIMDIRECTION|CMF_TRACKOWNER,-20)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,240,CMF_AIMDIRECTION|CMF_TRACKOWNER,-20)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,280,CMF_AIMDIRECTION|CMF_TRACKOWNER,-20)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,320,CMF_AIMDIRECTION|CMF_TRACKOWNER,-20)
	  
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,0,CMF_AIMDIRECTION|CMF_TRACKOWNER,0)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,40,CMF_AIMDIRECTION|CMF_TRACKOWNER,0)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,80,CMF_AIMDIRECTION|CMF_TRACKOWNER,0)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,120,CMF_AIMDIRECTION|CMF_TRACKOWNER,0)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,160,CMF_AIMDIRECTION|CMF_TRACKOWNER,0)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,200,CMF_AIMDIRECTION|CMF_TRACKOWNER,0)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,240,CMF_AIMDIRECTION|CMF_TRACKOWNER,0)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,280,CMF_AIMDIRECTION|CMF_TRACKOWNER,0)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,320,CMF_AIMDIRECTION|CMF_TRACKOWNER,0)

	  /*//[DoomKrakken]: "Comment out" the above paragraph and use this instead, if you want a weaving pattern...
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,20,CMF_AIMDIRECTION|CMF_TRACKOWNER,0)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,60,CMF_AIMDIRECTION|CMF_TRACKOWNER,0)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,100,CMF_AIMDIRECTION|CMF_TRACKOWNER,0)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,140,CMF_AIMDIRECTION|CMF_TRACKOWNER,0)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,180,CMF_AIMDIRECTION|CMF_TRACKOWNER,0)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,220,CMF_AIMDIRECTION|CMF_TRACKOWNER,0)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,260,CMF_AIMDIRECTION|CMF_TRACKOWNER,0)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,300,CMF_AIMDIRECTION|CMF_TRACKOWNER,0)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,340,CMF_AIMDIRECTION|CMF_TRACKOWNER,0)
	  */
	  
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,0,CMF_AIMDIRECTION|CMF_TRACKOWNER,20)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,40,CMF_AIMDIRECTION|CMF_TRACKOWNER,20)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,80,CMF_AIMDIRECTION|CMF_TRACKOWNER,20)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,120,CMF_AIMDIRECTION|CMF_TRACKOWNER,20)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,160,CMF_AIMDIRECTION|CMF_TRACKOWNER,20)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,200,CMF_AIMDIRECTION|CMF_TRACKOWNER,20)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,240,CMF_AIMDIRECTION|CMF_TRACKOWNER,20)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,280,CMF_AIMDIRECTION|CMF_TRACKOWNER,20)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,320,CMF_AIMDIRECTION|CMF_TRACKOWNER,20)

      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,0,CMF_AIMDIRECTION|CMF_TRACKOWNER,40)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,40,CMF_AIMDIRECTION|CMF_TRACKOWNER,40)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,80,CMF_AIMDIRECTION|CMF_TRACKOWNER,40)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,120,CMF_AIMDIRECTION|CMF_TRACKOWNER,40)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,160,CMF_AIMDIRECTION|CMF_TRACKOWNER,40)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,200,CMF_AIMDIRECTION|CMF_TRACKOWNER,40)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,240,CMF_AIMDIRECTION|CMF_TRACKOWNER,40)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,280,CMF_AIMDIRECTION|CMF_TRACKOWNER,40)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,320,CMF_AIMDIRECTION|CMF_TRACKOWNER,40)

	  /*//[DoomKrakken]: "Comment out" the above paragraph and use this instead, if you want a weaving pattern...
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,20,CMF_AIMDIRECTION|CMF_TRACKOWNER,40)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,60,CMF_AIMDIRECTION|CMF_TRACKOWNER,40)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,100,CMF_AIMDIRECTION|CMF_TRACKOWNER,40)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,140,CMF_AIMDIRECTION|CMF_TRACKOWNER,40)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,180,CMF_AIMDIRECTION|CMF_TRACKOWNER,40)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,220,CMF_AIMDIRECTION|CMF_TRACKOWNER,40)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,260,CMF_AIMDIRECTION|CMF_TRACKOWNER,40)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,300,CMF_AIMDIRECTION|CMF_TRACKOWNER,40)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,340,CMF_AIMDIRECTION|CMF_TRACKOWNER,40)
	  */
	  
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,0,CMF_AIMDIRECTION|CMF_TRACKOWNER,60)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,40,CMF_AIMDIRECTION|CMF_TRACKOWNER,60)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,80,CMF_AIMDIRECTION|CMF_TRACKOWNER,60)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,120,CMF_AIMDIRECTION|CMF_TRACKOWNER,60)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,160,CMF_AIMDIRECTION|CMF_TRACKOWNER,60)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,200,CMF_AIMDIRECTION|CMF_TRACKOWNER,60)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,240,CMF_AIMDIRECTION|CMF_TRACKOWNER,60)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,280,CMF_AIMDIRECTION|CMF_TRACKOWNER,60)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,320,CMF_AIMDIRECTION|CMF_TRACKOWNER,60)
	  
	  //[DoomKrakken]: Not this.
	  /*
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,0,CMF_AIMDIRECTION|CMF_TRACKOWNER,75)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,60,CMF_AIMDIRECTION|CMF_TRACKOWNER,75)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,120,CMF_AIMDIRECTION|CMF_TRACKOWNER,75)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,180,CMF_AIMDIRECTION|CMF_TRACKOWNER,75)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,240,CMF_AIMDIRECTION|CMF_TRACKOWNER,75)
      TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,300,CMF_AIMDIRECTION|CMF_TRACKOWNER,75)
	  */
      
	  //[DoomKrakken]: Extra ball. :D
	  //TNT1 A 0 A_CustomMissile("RepulsionBall",0,0,0,CMF_AIMDIRECTION|CMF_TRACKOWNER,90)
 
	  TNT1 A 0 A_CustomMissile("RepulsionBall0",0,0,0,CMF_AIMDIRECTION|CMF_TRACKOWNER,60)
      TNT1 A 0 A_SpawnItemEx("AnnihilationShotGLDEF",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
	  ANNH EFGHIJKLM 2 //A_FadeOut(0.1)
      stop
   }
}

ACTOR RepulsionBall0
{
   Projectile
   Obituary "%o was blasted by %k's Annihilation Sanctuary."
   +DONTBLAST
   +NOINTERACTION
   +FORCEXYBILLBOARD
   var int User_Cycle;
   Alpha 0.8
   States
   {
   Spawn:
      ANNH A 0 
      TNT1 AAAAA 3
      Goto Death
   Death:
      TNT1 A 0 A_ChangeFlag("MISSILE",0)
      TNT1 A 0 A_ChangeFlag("NOBLOCKMAP",0)
      TNT1 A 0 A_Stop
      TNT1 AAAA 2
      TNT1 A 1
      TNT1 A 0 A_PlaySound("Annihilation/Sanctum",6,0.8,1)
      Goto Veni
   Veni:
	  TNT1 A 0 A_JumpIfInTargetInventory("PowerTomeEffect",1,3)
	  TNT1 A 0 A_TakeFromTarget("Mana",10,TIF_NOTAKEINFINITE)
	  TNT1 A 0 A_Jump(256,2)
	  TNT1 A 0 A_TakeFromTarget("Mana",7,TIF_NOTAKEINFINITE)
	  TNT1 A 0 A_SetUserVar("User_Cycle",5)
   Vidi:
	  TNT1 A 0 A_JumpIf(User_Cycle > 0, 1)
	  Goto Veni
	  TNT1 A 0 A_SetUserVar("User_Cycle", User_Cycle - 1)
      TNT1 A 1 A_JumpIfInTargetInventory("SanctumTrigger", 1, "Vici")
	  TNT1 A 0 A_JumpIfInTargetInventory("PowerTomeEffect",1,3)
	  TNT1 A 0 A_JumpIfInTargetInventory("Mana",10,2)
	  TNT1 A 0 A_Jump(256,2)
	  TNT1 A 0 A_JumpIfInTargetInventory("Mana",7,2)
	  TNT1 A 0
	  Goto Vici
      TNT1 A 1 A_JumpIfInTargetInventory("SanctumTrigger", 1, "Vici")
	  TNT1 A 0 A_JumpIfInTargetInventory("PowerTomeEffect",1,3)
	  TNT1 A 0 A_JumpIfInTargetInventory("Mana",10,2)
	  TNT1 A 0 A_Jump(256,2)
	  TNT1 A 0 A_JumpIfInTargetInventory("Mana",7,2)
	  TNT1 A 0
	  Goto Vici
      TNT1 A 0 A_Blast(BF_AFFECTBOSSES|BF_NOIMPACTDAMAGE, 64, 406, 15, "BlastEffect", None)
      Loop
   Vici:
      TNT1 A 0 A_StopSound(6)
      TNT1 A 0 A_TakeFromTarget("SanctumEngaged",1)
      TNT1 A 0 A_PlaySound("Annihilation/End",6,1.0)
      TNT1 A 0 A_PlaySound("Annihilation/SanctExp",5,0.8)
      TNT1 A 0 A_Blast(BF_AFFECTBOSSES|BF_NOIMPACTDAMAGE, 64, 512, 15, "BlastEffect", None)
      stop
   }
}

ACTOR RepulsionBall
{
   Damage 0
   Speed 20
   Projectile
   Renderstyle Add
   Alpha 0.5
   Obituary "%o was blasted by %k's Annihilation Sanctuary."
   +DONTBLAST
   +NOINTERACTION
   +FORCEXYBILLBOARD
   +NOCLIP
   Scale 0.6
   States
   {
   Spawn:
      ANNH A 0
      ANNH MMMMM 3 Bright A_SpawnItemEx("BlasterRing",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0)
      Goto Death
   Death:
      TNT1 A 0 A_ChangeFlag("MISSILE",0)
      TNT1 A 0 A_ChangeFlag("NOBLOCKMAP",0)
      TNT1 A 0 A_Stop
      ANNH LKJI 2 Bright A_FadeIn(0.05)
      Goto Veni
   
   Veni:
      
	  ANNH A 0 A_SpawnItemEx("RepBallConstantSmokeSpawner",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0)
	  
	  //Could probably do it better but :Laziness:

	  ANNH A 0 A_JumpIfInTargetInventory("PowerTomeEffect",1,3)
	  ANNH A 0 A_JumpIfInTargetInventory("Mana",10,2)
	  ANNH A 0 A_Jump(256,2)
	  ANNH A 0 A_JumpIfInTargetInventory("Mana",7,2)
	  ANNH A 0
	  Goto Vidi
 
	  ANNH A 1 Bright A_JumpIfInTargetInventory("SanctumTrigger", 1, "Vidi")
	  ANNH A 0 A_JumpIfInTargetInventory("PowerTomeEffect",1,3)
	  ANNH A 0 A_JumpIfInTargetInventory("Mana",10,2)
	  ANNH A 0 A_Jump(256,2)
	  ANNH A 0 A_JumpIfInTargetInventory("Mana",7,2)
	  ANNH A 0
	  Goto Vidi

	  ANNH B 1 Bright A_JumpIfInTargetInventory("SanctumTrigger", 1, "Vidi")
	  ANNH A 0 A_JumpIfInTargetInventory("PowerTomeEffect",1,3)
	  ANNH A 0 A_JumpIfInTargetInventory("Mana",10,2)
	  ANNH A 0 A_Jump(256,2)
	  ANNH A 0 A_JumpIfInTargetInventory("Mana",7,2)
	  ANNH A 0
	  Goto Vidi

	  ANNH B 1 Bright A_JumpIfInTargetInventory("SanctumTrigger", 1, "Vidi")
	  ANNH A 0 A_JumpIfInTargetInventory("PowerTomeEffect",1,3)
	  ANNH A 0 A_JumpIfInTargetInventory("Mana",10,2)
	  ANNH A 0 A_Jump(256,2)
	  ANNH A 0 A_JumpIfInTargetInventory("Mana",7,2)
	  ANNH A 0
	  Goto Vidi

	  ANNH B 1 Bright A_JumpIfInTargetInventory("SanctumTrigger", 1, "Vidi")
	  ANNH A 0 A_JumpIfInTargetInventory("PowerTomeEffect",1,3)
	  ANNH A 0 A_JumpIfInTargetInventory("Mana",10,2)
	  ANNH A 0 A_Jump(256,2)
	  ANNH A 0 A_JumpIfInTargetInventory("Mana",7,2)
	  ANNH A 0
	  Goto Vidi

	  ANNH C 1 Bright A_JumpIfInTargetInventory("SanctumTrigger", 1, "Vidi")
	  ANNH A 0 A_JumpIfInTargetInventory("PowerTomeEffect",1,3)
	  ANNH A 0 A_JumpIfInTargetInventory("Mana",10,2)
	  ANNH A 0 A_Jump(256,2)
	  ANNH A 0 A_JumpIfInTargetInventory("Mana",7,2)
	  ANNH A 0
	  Goto Vidi

	  ANNH C 1 Bright A_JumpIfInTargetInventory("SanctumTrigger", 1, "Vidi")
	  ANNH A 0 A_JumpIfInTargetInventory("PowerTomeEffect",1,3)
	  ANNH A 0 A_JumpIfInTargetInventory("Mana",10,2)
	  ANNH A 0 A_Jump(256,2)
	  ANNH A 0 A_JumpIfInTargetInventory("Mana",7,2)
	  ANNH A 0
	  Goto Vidi

	  ANNH D 1 Bright A_JumpIfInTargetInventory("SanctumTrigger", 1, "Vidi")
	  ANNH A 0 A_JumpIfInTargetInventory("PowerTomeEffect",1,3)
	  ANNH A 0 A_JumpIfInTargetInventory("Mana",10,2)
	  ANNH A 0 A_Jump(256,2)
	  ANNH A 0 A_JumpIfInTargetInventory("Mana",7,2)
	  ANNH A 0
	  Goto Vidi

	  ANNH D 1 Bright A_JumpIfInTargetInventory("SanctumTrigger", 1, "Vidi")
	  ANNH A 0 A_JumpIfInTargetInventory("PowerTomeEffect",1,3)
	  ANNH A 0 A_JumpIfInTargetInventory("Mana",10,2)
	  ANNH A 0 A_Jump(256,2)
	  ANNH A 0 A_JumpIfInTargetInventory("Mana",7,2)
	  ANNH A 0
	  Goto Vidi

	  ANNH E 1 Bright A_JumpIfInTargetInventory("SanctumTrigger", 1, "Vidi")
	  ANNH A 0 A_JumpIfInTargetInventory("PowerTomeEffect",1,3)
	  ANNH A 0 A_JumpIfInTargetInventory("Mana",10,2)
	  ANNH A 0 A_Jump(256,2)
	  ANNH A 0 A_JumpIfInTargetInventory("Mana",7,2)
	  ANNH A 0
	  Goto Vidi

	  ANNH E 1 Bright A_JumpIfInTargetInventory("SanctumTrigger", 1, "Vidi")
	  ANNH A 0 A_JumpIfInTargetInventory("PowerTomeEffect",1,3)
	  ANNH A 0 A_JumpIfInTargetInventory("Mana",10,2)
	  ANNH A 0 A_Jump(256,2)
	  ANNH A 0 A_JumpIfInTargetInventory("Mana",7,2)
	  ANNH A 0
	  Goto Vidi

	  ANNH F 1 Bright A_JumpIfInTargetInventory("SanctumTrigger", 1, "Vidi")
	  ANNH A 0 A_JumpIfInTargetInventory("PowerTomeEffect",1,3)
	  ANNH A 0 A_JumpIfInTargetInventory("Mana",10,2)
	  ANNH A 0 A_Jump(256,2)
	  ANNH A 0 A_JumpIfInTargetInventory("Mana",7,2)
	  ANNH A 0
	  Goto Vidi
	  
	  ANNH F 1 Bright A_JumpIfInTargetInventory("SanctumTrigger", 1, "Vidi")
	  ANNH A 0 A_JumpIfInTargetInventory("PowerTomeEffect",1,3)
	  ANNH A 0 A_JumpIfInTargetInventory("Mana",10,2)
	  ANNH A 0 A_Jump(256,2)
	  ANNH A 0 A_JumpIfInTargetInventory("Mana",7,2)
	  ANNH A 0
	  Goto Vidi

	  ANNH G 1 Bright A_JumpIfInTargetInventory("SanctumTrigger", 1, "Vidi")
	  ANNH A 0 A_JumpIfInTargetInventory("PowerTomeEffect",1,3)
	  ANNH A 0 A_JumpIfInTargetInventory("Mana",10,2)
	  ANNH A 0 A_Jump(256,2)
	  ANNH A 0 A_JumpIfInTargetInventory("Mana",7,2)
	  ANNH A 0
	  Goto Vidi

	  ANNH G 1 Bright A_JumpIfInTargetInventory("SanctumTrigger", 1, "Vidi")
	  ANNH A 0 A_JumpIfInTargetInventory("PowerTomeEffect",1,3)
	  ANNH A 0 A_JumpIfInTargetInventory("Mana",10,2)
	  ANNH A 0 A_Jump(256,2)
	  ANNH A 0 A_JumpIfInTargetInventory("Mana",7,2)
	  ANNH A 0
	  Goto Vidi

	  ANNH H 1 Bright A_JumpIfInTargetInventory("SanctumTrigger", 1, "Vidi")
	  ANNH A 0 A_JumpIfInTargetInventory("PowerTomeEffect",1,3)
	  ANNH A 0 A_JumpIfInTargetInventory("Mana",10,2)
	  ANNH A 0 A_Jump(256,2)
	  ANNH A 0 A_JumpIfInTargetInventory("Mana",7,2)
	  ANNH A 0
	  Goto Vidi

	  ANNH H 1 Bright A_JumpIfInTargetInventory("SanctumTrigger", 1, "Vidi")
	  Loop
   Vidi:
      TNT1 A 0 A_SpawnItemEx("VindicatorHit",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0)
      TNT1 AAAAA 0 A_SpawnItemEx("BlasterVortexParticle",frandom(12,-12),frandom(12,-12),frandom(12,-12),frandom(2.25,3),frandom(2.25,3),frandom(-1,4),frandom(0,359),SXF_CLIENTSIDE,0)
      ANNH IJKLM 2 Bright A_FadeOut(0.05)
      stop
   }
}

ACTOR RepBallConstantSmokeSpawner
{ 
    ReactionTime 8
    +DONTBLAST
    +NOGRAVITY
    +NOINTERACTION
    States
    {
    Spawn:
      TNT1 A 0
      TNT1 A 0 A_Countdown
      //TNT1 A 0 A_Jump(128,2)
      TNT1 A 0 A_SpawnItemEx("BlasterSmokey",frandom(23,-23),frandom(23,-23),frandom(23,-23),frandom(-2,2),frandom(-2,2),frandom(-2,2),frandom(0,359),SXF_CLIENTSIDE,0)
      TNT1 A 1
      Loop
    Death:
      TNT1 A 1
      Stop
    }
}


ACTOR BlasterRing
{
  +DONTBLAST
  +NOGRAVITY
  +NOINTERACTION
  +FORCEXYBILLBOARD
  Renderstyle Add
  Alpha 0.99
  Scale 0.15
  States
  {
  Spawn:
  	TNT1 A 0
  	TNT1 A 0 A_FadeOut(0.05)
	BLSR A 1 Bright A_SetScale(ScaleX +0.025+random(-0.01,-0.015), ScaleY+0.01+random(-0.015,-0.25))
  	TNT1 A 0 A_FadeOut(0.05)
	BLSR A 1 Bright A_SetScale(ScaleX +0.025+random(-0.01,-0.015), ScaleY+0.01+random(-0.015,-0.25))
  	TNT1 A 0 A_FadeOut(0.05)
	BLSR A 1 Bright A_SetScale(ScaleX +0.025+random(-0.01,-0.015), ScaleY+0.01+random(-0.015,-0.25))
  	TNT1 A 0 A_FadeOut(0.05)
	BLSR A 1 Bright A_SetScale(ScaleX +0.025+random(-0.01,-0.015), ScaleY+0.01+random(-0.015,-0.25))

  	TNT1 A 0 A_FadeOut(0.05)
	BLSR A 1 Bright A_SetScale(ScaleX -0.025+random(+0.01,+0.015), ScaleY-0.01+random(-0.015,-0.25))
  	TNT1 A 0 A_FadeOut(0.05)
	BLSR A 1 Bright A_SetScale(ScaleX -0.025+random(+0.01,+0.015), ScaleY-0.01+random(-0.015,-0.25))
  	TNT1 A 0 A_FadeOut(0.05)
	BLSR A 1 Bright A_SetScale(ScaleX -0.025+random(+0.01,+0.015), ScaleY-0.01+random(-0.015,-0.25))
  	TNT1 A 0 A_FadeOut(0.05)
	BLSR A 1 Bright A_SetScale(ScaleX -0.025+random(+0.01,+0.015), ScaleY-0.01+random(-0.015,-0.25))
	Loop
  Death:
  	TNT1 A 1
	Stop
  }
}

ACTOR BlasterVortexParticle
{
  +DONTBLAST
  -NOGRAVITY
  +DONTSPLASH
  +NOTELEPORT
  +FORCEXYBILLBOARD
  Renderstyle Add
  Alpha 0.99
  Gravity 0.1
  Scale 0.125
  BounceType Hexen
  States
  {
  Spawn:
  	TNT1 A 0
	BLSP A 0 A_FadeOut(0.04)
	BLSP A 0 A_ChangeVelocity (frandom(-0.4, 0.4), frandom(-0.4, 0.4), frandom(-0.4, 0.4), 0)
	BLSP A 2 Bright A_SetScale(ScaleX -0.001, ScaleY -0.001)
	Loop
  }
}

ACTOR BlasterSmokey
{ 
    Scale 0.33
    Alpha 0.55
    Renderstyle Add
    +DONTBLAST
    +NOGRAVITY
    +NOINTERACTION
	+FORCEXYBILLBOARD
    States
    {
    Spawn:
      ISMK A 0 A_ChangeVelocity (frandom(-1.5, 1.5), frandom(-1.5, 1.5), frandom(-1.5, 1.5), 0)
    GoOn:
      ISMK ABCDEFGHIJK 2 A_SetScale(ScaleX+0.02,ScaleY+0.02)
      ISMK LMNOPQ 2 A_FadeOut(0.02)
      Stop
    }
}

ACTOR VindicatorHit
{
  Scale 0.5
  Alpha 1
  RenderStyle Add
  +NOINTERACTION
  +FORCEXYBILLBOARD
  States
  {
  Spawn:
    VINR A 0
    //TNT1 A 0 A_PlaySound("Weapons/VindicatorHit",4,0.6)
    VINR AA 0 A_SpawnItemEx("VindicatorSmoke",random(3,-3),random(3,-3),random(3,-3),frandom(0.5,0.25),frandom(0.5,0.25),frandom(0.5,0.25),random(0,359),SXF_CLIENTSIDE,0)
  Looplet:
    VINR A 0 A_FadeOut(0.05)
    VINR A 1 A_SetScale(ScaleX+0.25, ScaleY+0.25)
    Loop
  }
}

ACTOR VindicatorSmoke
{ 
    Scale 2
    Alpha 0.9
    RenderStyle Add
    +NOINTERACTION
    +NOGRAVITY
    +THRUGHOST
    +DONTSPLASH
	+FORCEXYBILLBOARD
    States
    {
    Spawn:
      ISMK A 0 A_Jump(255,"SmokeA","SmokeB","SmokeC","SmokeD","SmokeE","SmokeF","SmokeG","SmokeH","SmokeI","SmokeJ","SmokeK")
    SmokeA:
      ISMK A 0 A_FadeOut(0.025)
      ISMK A 3 A_SetScale(ScaleX +0.005, ScaleY +0.005)
      Loop
    SmokeB:
      ISMK A 0 A_FadeOut(0.025)
      ISMK B 3 A_SetScale(ScaleX +0.005, ScaleY +0.005)
      Loop
    SmokeC:
      ISMK A 0 A_FadeOut(0.025)
      ISMK C 3 A_SetScale(ScaleX +0.005, ScaleY +0.005)
      Loop
    SmokeD:
      ISMK A 0 A_FadeOut(0.025)
      ISMK D 3 A_SetScale(ScaleX +0.005, ScaleY +0.005)
      Loop
    SmokeE:
      ISMK A 0 A_FadeOut(0.025)
      ISMK E 3 A_SetScale(ScaleX +0.005, ScaleY +0.005)
      Loop
    SmokeF:
      ISMK A 0 A_FadeOut(0.025)
      ISMK F 3 A_SetScale(ScaleX +0.005, ScaleY +0.005)
      Loop
    SmokeG:
      ISMK A 0 A_FadeOut(0.025)
      ISMK G 3 A_SetScale(ScaleX +0.005, ScaleY +0.005)
      Loop
    SmokeH:
      ISMK A 0 A_FadeOut(0.025)
      ISMK H 3 A_SetScale(ScaleX +0.005, ScaleY +0.005)
      Loop
    SmokeI:
      ISMK A 0 A_FadeOut(0.025)
      ISMK I 3 A_SetScale(ScaleX +0.005, ScaleY +0.005)
      Loop
    SmokeJ:
      ISMK A 0 A_FadeOut(0.025)
      ISMK J 3 A_SetScale(ScaleX +0.005, ScaleY +0.005)
      Loop
    SmokeK:
      ISMK A 0 A_FadeOut(0.025)
      ISMK A 3 A_SetScale(ScaleX +0.005, ScaleY +0.005)
      Loop
    }
}