ACTOR SandLord : LordArchon //sand is a shit concept anyway, do we really need more sand to spawn?
{ 
  Obituary "%o was entombed by the Sand Lord."
  HitObituary "%o was entombed by the Sand Lord."
  Bloodcolor "Burlywood"
  Tag "\ceSand Lord\c-"
  States 
  { 
  Spawn: 
	SNLD A 10 A_Look 
	Loop
  See:
	TNT1 A 0 A_Jump(100,"Rush")
	SNLD AABB 3 A_Chase
	TNT1 A 0 A_SpawnItem("HoofStep",0,0,0,0)
	SNLD CCDD 3 A_Chase
	TNT1 A 0 A_SpawnItem("HoofStep",0,0,0,0)
	TNT1 A 0 A_Jump(50,"Teleport","Avoid")
	Loop
  Rush:
	SNLD A 0 A_SpawnItem("HoofStep",0,0,0,0)
	SNLD AAA 0 A_Chase
	SNLD A 2 A_SpawnItemEx("SandLordGhost",0,0,0,0,0,0,0,128)
	SNLD AAA 0 A_Chase
	SNLD A 2 A_SpawnItemEx("SandLordGhost",0,0,0,0,0,0,0,128)
	SNLD AAA 0 A_Chase
	SNLD B 2 A_SpawnItemEx("SandLordGhost",0,0,0,0,0,0,0,128)
	SNLD AAA 0 A_Chase
	SNLD B 2 A_SpawnItemEx("SandLordGhost",0,0,0,0,0,0,0,128)	
	SNLD A 0 A_SpawnItem("HoofStep",0,0,0,0)
	SNLD AAA 0 A_Chase
	SNLD C 2 A_SpawnItemEx("SandLordGhost",0,0,0,0,0,0,0,128)
	SNLD AAA 0 A_Chase
	SNLD C 2 A_SpawnItemEx("SandLordGhost",0,0,0,0,0,0,0,128)
	SNLD AAA 0 A_Chase
	SNLD D 2 A_SpawnItemEx("SandLordGhost",0,0,0,0,0,0,0,128)
	SNLD AAA 0 A_Chase
	SNLD D 2 A_SpawnItemEx("SandLordGhost",0,0,0,0,0,0,0,128)
	TNT1 A 0 A_Jump(110,"Avoid")
	TNT1 A 0 A_Jump(40,"Teleport")
	TNT1 A 0 A_Jump(75,"See")	
	Loop	
  Teleport:
	SNLD M 1 A_UnSetShootable
	SNLD MMMMMMMMMMM 1 A_FadeOut(0.1,0)
	TNT1 AAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("BigSandClouds",random(-10,10),random(-10,10),random(10,110),random(-4,4),random(-4,4),random(2,6))
	SNLD MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM 0 A_Wander
	SNLD MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM 0 A_Wander
	SNLD M 1 A_PlayWeaponSound("boss/teleport")
	TNT1 AAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("BigSandClouds",random(-10,10),random(-10,10),random(10,110),random(-4,4),random(-4,4),random(2,6))
	SNLD MMMMMMMMMMM 1 A_FadeIn(0.1)
	SNLD M 1 A_SetShootable
	Goto See
  Fly:
	SNLD M 5 A_FaceTarget
	TNT1 A 0 A_SetUserVar("user_delay",0)
	TNT1 A 0 ThrustThingZ(0,random(80,145),0,1)
	SNLD MMMM 5 A_Recoil(-10)
  FlyCheck:
	TNT1 A 0 A_JumpIf(user_delay >= 105,"Land")
	TNT1 A 0 A_SetUserVar("user_delay",user_delay+1)
	TNT1 A 0 A_Explode(8,256)
	SNLD M 1 A_CheckFloor("Land")
	Loop
  Land:	
	TNT1 AAA 0 A_SpawnItemEx("BrownParticleSpawner",0,0,0,0,0,0,0,128)  
	TNT1 AAA 0 A_CustomMissile("SmokeFX3",0,0,random(0,360),2,random(0,360))
	TNT1 AAAAA 0 A_CustomMissile("SandKaboomBig",0,0,random(0,360),2,random(0,360))
	TNT1 AAAAAAAAAAAA 0 A_SpawnItemEx("BigSandClouds",0,0,0,random(-4,4),random(-4,4),random(2,6))
	TNT1 A 0 A_Explode(128,684)
	TNT1 A 0 Radius_Quake(175,8,512,1024,0)
	SNLD M 1
	Goto See
  Avoid:
	SNLD M 1 A_FaceTarget
	TNT1 A 0 A_SetAngle(angle+random(0,359))
	TNT1 A 0 A_Recoil(-50)
	TNT1 A 0 A_FaceTarget
	SNLD MMMMMMMMMMMMM 1 A_SpawnItemEx("SandLordGhost2",0,0,0,0,0,0,0,128)	
	TNT1 A 0 A_SetAngle(angle+random(0,359))
	TNT1 A 0 A_Recoil(-50)
	TNT1 A 0 A_FaceTarget
	SNLD MMMMMMMMMMMMM 1 A_SpawnItemEx("SandLordGhost2",0,0,0,0,0,0,0,128)	
	TNT1 A 0 A_SetAngle(angle+random(0,359))
	TNT1 A 0 A_Recoil(-50)
	TNT1 A 0 A_FaceTarget
	SNLD MMMMMMMMMMMMM 1 A_SpawnItemEx("SandLordGhost2",0,0,0,0,0,0,0,128)		
	Goto See  
  Melee:
  Missile:		
	TNT1 A 0 A_Jump(60,"Fly")
	TNT1 A 0 A_Jump(32,"Combo","Burning")	
	TNT1 A 0 A_Jump(192,"Comet","CometRain")	
	TNT1 A 0 A_Jump(48,"Help")
  Normal:
	SNLD EF 6 A_FaceTarget
	SNLD G 1 A_CustomMissile("SSComet",64,0,0)
	SNLD G 0 A_CustomMissile("SSComet",64,0,-4)
	SNLD G 1 A_CustomMissile("SSComet",64,0,4)
	SNLD H 0 A_CustomMissile("SSComet",64,0,-8)
	SNLD H 3 A_CustomMissile("SSComet",64,0,8)
	SNLD IJ 6 A_FaceTarget
	SNLD K 1 A_CustomMissile("SSComet",64,0,0)
	SNLD K 0 A_CustomMissile("SSComet",64,0,-4)
	SNLD K 1 A_CustomMissile("SSComet",64,0,4)
	SNLD K 0 A_CustomMissile("SSComet",64,0,-8)
	SNLD L 3 A_CustomMissile("SSComet",64,0,8)
	Goto See	
  Comet:
	SNLD MN 6 A_FaceTarget
	SNLD O 1 A_CustomMissile("SandComet",64,0,0)
	SNLD O 0 A_CustomMissile("SandComet",64,0,-3)
	SNLD O 1 A_CustomMissile("SandComet",64,0,3)
	SNLD O 0 A_CustomMissile("SandComet",64,0,-6)
	SNLD O 1 A_CustomMissile("SandComet",64,0,6)
	SNLD O 0 A_CustomMissile("SandComet",64,0,-9)
	SNLD O 1 A_CustomMissile("SandComet",64,0,9)	
	SNLD O 0 A_CustomMissile("SandComet",64,0,-12)
	SNLD P 6 A_CustomMissile("SandComet",64,0,12)
	TNT1 A 0 A_Jump(110,"CometRain")
	Goto See	
  CometRain:
	TNT1 A 0 A_SetInvulnerable
	TNT1 A 0 A_FaceTarget
	TNT1 A 0 A_PlaySoundEx("ArchonLord/see","Body",0,2)
	SNLD PPOONNMM 2
	SNLD MMMMMMMMMMMMMMMMMMMMMMMMM 2 A_SpawnItemEx("SandLordRainCometSpawner",Random(1250,-1250),Random(1250,-1250),0,0,0,0,SXF_NOCHECKPOSITION,0)
	TNT1 A 0 A_UnSetInvulnerable
	SNLD M 2
	TNT1 A 0 A_Jump(140,"Fly")
	Goto See
  Burning:
	SNLD PPOONNMM 2 A_FaceTarget
	SNLD MMMMMMMMMMMMMMM 2 A_SpawnItemEx("BigSandStorm",Random(1250,-1250),Random(1250,-1250),0,0,0,0,SXF_NOCHECKPOSITION,0)
	TNT1 A 0 A_Jump(140,"Fly")
	Goto See
  Combo:
	SNLD EF 18 A_FaceTarget
	SNLD GGGGGGGGGGGGGG 0 A_CustomMissile("SandComet",64,0,random(-18,18))
	SNLD G 10 A_CustomMissile("SandComet",64,0,random(-18,18))
	SNLD H 10 A_FaceTarget
	SNLD IJ 18 A_FaceTarget
	SNLD KKKKKKKKKKKKKK 0 A_CustomMissile("SandComet",64,0,random(-18,18))
	SNLD K 10 A_CustomMissile("SandComet",64,0,random(-18,18))
	SNLD L 10 A_FaceTarget  
	SNLD EF 16 A_FaceTarget
	SNLD GGGGGGGGGGGGGG 0 A_CustomMissile("SandComet",64,0,random(-18,18))
	SNLD G 8 A_CustomMissile("SandComet",64,0,random(-18,18))
	SNLD H 8 A_FaceTarget
	SNLD IJ 16 A_FaceTarget
	SNLD KKKKKKKKKKKKKK 0 A_CustomMissile("SandComet",64,0,random(-18,18))
	SNLD K 8 A_CustomMissile("SandComet",64,0,random(-18,18))
	SNLD L 8 A_FaceTarget  
	SNLD EF 14 A_FaceTarget
	SNLD GGGGGGGGGGGGGG 0 A_CustomMissile("SandComet",64,0,random(-18,18))
	SNLD G 7 A_CustomMissile("SandComet",64,0,random(-18,18))
	SNLD H 7 A_FaceTarget
	SNLD IJ 14 A_FaceTarget
	SNLD KKKKKKKKKKKKKK 0 A_CustomMissile("SandComet",64,0,random(-18,18))
	SNLD K 7 A_CustomMissile("SandComet",64,0,random(-18,18))
	SNLD L 7 A_FaceTarget  
	SNLD EF 12 A_FaceTarget
	SNLD GGGGGGGGGGGGGG 0 A_CustomMissile("SandComet",64,0,random(-18,18))
	SNLD G 6 A_CustomMissile("SandComet",64,0,random(-18,18))
	SNLD H 6 A_FaceTarget
	SNLD IJ 12 A_FaceTarget
	SNLD KKKKKKKKKKKKKK 0 A_CustomMissile("SandComet",64,0,random(-18,18))
	SNLD K 6 A_CustomMissile("SandComet",64,0,random(-18,18))
	SNLD L 6 A_FaceTarget  
	SNLD EF 10 A_FaceTarget
	SNLD GGGGGGGGGGGGGG 0 A_CustomMissile("SandComet",64,0,random(-18,18))
	SNLD G 5 A_CustomMissile("SandComet",64,0,random(-18,18))
	SNLD H 5 A_FaceTarget
	SNLD IJ 10 A_FaceTarget
	SNLD KKKKKKKKKKKKKK 0 A_CustomMissile("SandComet",64,0,random(-18,18))
	SNLD K 5 A_CustomMissile("SandComet",64,0,random(-18,18))
	SNLD L 5 A_FaceTarget  
	SNLD EF 8 A_FaceTarget
	SNLD GGGGGGGGGGGGGG 0 A_CustomMissile("SandComet",64,0,random(-18,18))
	SNLD G 4 A_CustomMissile("SandComet",64,0,random(-18,18))
	SNLD H 4 A_FaceTarget
	SNLD IJ 8 A_FaceTarget
	SNLD KKKKKKKKKKKKKK 0 A_CustomMissile("SandComet",64,0,random(-18,18))
	SNLD K 4 A_CustomMissile("SandComet",64,0,random(-18,18))
	SNLD L 4 A_FaceTarget  
	SNLD EF 6 A_FaceTarget
	SNLD GGGGGGGGGGGGGG 0 A_CustomMissile("SandComet",64,0,random(-18,18))
	SNLD G 3 A_CustomMissile("SandComet",64,0,random(-18,18))
	SNLD H 3 A_FaceTarget
	SNLD IJ 6 A_FaceTarget
	SNLD KKKKKKKKKKKKKK 0 A_CustomMissile("SandComet",64,0,random(-18,18))
	SNLD K 3 A_CustomMissile("SandComet",64,0,random(-18,18))
	SNLD L 3 A_FaceTarget 
	SNLD EF 5 A_FaceTarget
	SNLD GGGGGGGGGGGGGG 0 A_CustomMissile("SandComet",64,0,random(-18,18))
	SNLD G 2 A_CustomMissile("SandComet",64,0,random(-18,18))
	SNLD H 2 A_FaceTarget
	SNLD IJ 5 A_FaceTarget
	SNLD KKKKKKKKKKKKKK 0 A_CustomMissile("SandComet",64,0,random(-18,18))
	SNLD K 2 A_CustomMissile("SandComet",64,0,random(-18,18))
	SNLD L 2 A_FaceTarget 
	SNLD EF 5 A_FaceTarget
	SNLD GGGGGGGGGGGGGG 0 A_CustomMissile("SandComet",64,0,random(-18,18))
	SNLD G 2 A_CustomMissile("SandComet",64,0,random(-18,18))
	SNLD H 2 A_FaceTarget
	SNLD IJ 5 A_FaceTarget
	SNLD KKKKKKKKKKKKKK 0 A_CustomMissile("SandComet",64,0,random(-18,18))
	SNLD K 2 A_CustomMissile("SandComet",64,0,random(-18,18))
	SNLD L 2 A_FaceTarget 	
	SNLD EF 5 A_FaceTarget
	SNLD GGGGGGGGGGGGGG 0 A_CustomMissile("SandComet",64,0,random(-18,18))
	SNLD G 2 A_CustomMissile("SandComet",64,0,random(-18,18))
	SNLD H 2 A_FaceTarget
	SNLD IJ 5 A_FaceTarget
	SNLD KKKKKKKKKKKKKK 0 A_CustomMissile("SandComet",64,0,random(-18,18))
	SNLD K 2 A_CustomMissile("SandComet",64,0,random(-18,18))
	SNLD L 2 A_FaceTarget  
	TNT1 A 0 A_Jump(110,"Teleport")	
	Goto See
  Help:
  	TNT1 A 0 A_SetInvulnerable
	TNT1 A 0 A_FaceTarget
	SNLD EEFFGGHHHHHHHHHH 2
	TNT1 AAAAAAAAA 0 A_SpawnItemEx("SandLordSpawners",0,0,0,0,0,0,0,32,64)
 	SNLD HIIJJKKLLLLLLLLLL 2
	TNT1 AAAAAAAAA 0 A_SpawnItemEx("SandLordSpawners",0,0,0,0,0,0,0,32,64)
	TNT1 A 0 A_UnSetInvulnerable
	SNLD L 2
	Goto See
  Pain:
	TNT1 A 0 A_Jump(64,"Teleport","Fly")
	SNLD Q 2
	SNLD Q 2 A_Pain
	Goto See
  Death: 
	SNLD R 2 A_Scream
	SNLD RRRRRRRRRRR 2 A_SpawnItemEx("SandLordDeathEffectSpawner")
	SNLD SSSSSSSSSSS 2 A_SpawnItemEx("SandLordDeathEffectSpawner")
	SNLD TTTTTTTTTTT 2 A_SpawnItemEx("SandLordDeathEffectSpawner")
	SNLD R 2 A_NoBlocking 
	SNLD UUUUUUUUUUU 2 A_SpawnItemEx("SandLordDeathEffectSpawner")
	SNLD VVVWWW 2 A_SpawnItemEx("SandLordDeathEffectSpawner") 
	TNT1 A 0 A_SpawnItemEx("HellfireUltrasphere",0,0,64,random(1,8),0,2,random(0,360),0,0)
	TNT1 A 0 A_SpawnItemEx("InvulnerabilitySphere",0,0,64,random(1,8),0,2,random(0,360),0,64)
	TNT1 A 0 A_SpawnItemEx("DemonicChalice",0,0,64,random(1,8),0,2,random(0,360),0,64)
	TNT1 A 0 A_SpawnItemEx("HellfireUltrasphere",0,0,64,random(1,8),0,2,random(0,360),0,64)
	TNT1 A 0 A_SpawnItemEx("LegendaryInvulnerabilitySphere",0,0,64,random(1,8),0,2,random(0,360),0,0)
	SNLD XXXYYY 2 A_SpawnItemEx("SandLordDeathEffectSpawner") 
	SNLD Z -1
	Stop
	} 
}

ACTOR SandLordDeathEffectSpawner
{
  States
  {
  Spawn:
	TNT1 A 0 A_SpawnItemEx("SandKaboomBig",random(-30,30),random(-30,30),random(5,100),frandom(-2,2),frandom(-2,2),frandom(4,10))
	TNT1 A 0 A_SpawnItemEx("BigSandClouds",random(-30,30),random(-30,30),random(5,100),frandom(-2,2),frandom(-2,2),frandom(4,10))
	TNT1 A 1
	TNT1 A 0 A_SpawnItemEx("SandKaboomBig",random(-30,30),random(-30,30),random(5,100),frandom(-2,2),frandom(-2,2),frandom(4,10))
	TNT1 A 0 A_SpawnItemEx("BigSandClouds",random(-30,30),random(-30,30),random(5,100),frandom(-2,2),frandom(-2,2),frandom(4,10))
	TNT1 A 1
	Stop
	}
}

ACTOR SandLordSpawners
{
  Radius 12
  Height 8
  Speed 17
  Monster
  -SHOOTABLE
  -COUNTKILL
  -SOLID
  var int user_limit;
  States
  {
  Spawn:
	TNT1 A 0 A_JumpIf(user_limit > 75,"Death")
	TNT1 A 0 A_SetUserVar("user_limit",user_limit+1)
	TNT1 A 1 A_Wander
	TNT1 A 1 A_Jump(9,"Death")
	Loop
  Death:
	TNT1 A 0 A_SpawnItemEx("TeleportFog")
	TNT1 A 5 bright A_SpawnItemEx("SandSpiritMinion")
	Stop
	}
}

ACTOR SandSpiritMinion : SandSpirit
{
  DropItem " "
  DamageFactor "Hell", 0
}

ACTOR SandLordRainCometSpawner : RainCometSpawner
{
  States
  {
  Spawn:
	TNT1 AAAAAAAAAAAAAAAAAAAA 1 A_Wander
	CMRA ABCDEFGHIJABCDEFGHIJ 2 Bright A_Wander
	TNT1 A 0 A_CustomMissile("RainCometSand",-18,random(0,20),random(0,360),2)
	CMRA AAABBBCCC 1 Bright A_Wander
	TNT1 A 0 A_CustomMissile("RainCometSand",-18,random(0,20),random(0,360),2)
	CMRA EEEFFFGGG 1 Bright A_Wander
	TNT1 A 0 A_CustomMissile("RainCometSand",-18,random(0,20),random(0,360),2)
	CMRA HHHIIIJJJ 1 Bright A_Wander
	TNT1 A 0 A_CustomMissile("RainCometSand",-18,random(0,20),random(0,360),2)
	CMRA AAABBBCCC 1 Bright A_Wander
	TNT1 A 0 A_CustomMissile("RainCometSand",-18,random(0,20),random(0,360),2)
	CMRA EEEFFFGGG 1 Bright A_Wander
	TNT1 A 0 A_CustomMissile("RainCometSand",-18,random(0,20),random(0,360),2)
	CMRA HHHIIIJJJ 1 Bright A_Wander
	TNT1 A 0 A_CustomMissile("RainCometSand",-18,random(0,20),random(0,360),2)	
	CMRA ABCDEFGHIJABCDEFGHIJ 2 Bright A_Wander
	TNT1 A 0 A_CustomMissile("RainCometSand",-18,random(0,20),random(0,360),2)
	CMRA AAABBBCCC 1 Bright A_Wander
	TNT1 A 0 A_CustomMissile("RainCometSand",-18,random(0,20),random(0,360),2)
	CMRA EEEFFFGGG 1 Bright A_Wander
	TNT1 A 0 A_CustomMissile("RainCometSand",-18,random(0,20),random(0,360),2)
	CMRA HHHIIIJJJ 1 Bright A_Wander
	TNT1 A 0 A_CustomMissile("RainCometSand",-18,random(0,20),random(0,360),2)
	CMRA AAABBBCCC 1 Bright A_Wander
	TNT1 A 0 A_CustomMissile("RainCometSand",-18,random(0,20),random(0,360),2)
	CMRA EEEFFFGGG 1 Bright A_Wander
	TNT1 A 0 A_CustomMissile("RainCometSand",-18,random(0,20),random(0,360),2)
	CMRA HHHIIIJJJ 1 Bright A_Wander
	TNT1 A 0 A_CustomMissile("RainCometSand",-18,random(0,20),random(0,360),2)	
  FadeOut:
	CMRA ABCDEFGHIJ 2 Bright A_FadeOut(0.06)
	Goto FadeOut
	}
}

ACTOR RainCometSand : RainComet
{
  +FORCERADIUSDMG
  States
  {
  Spawn:
	SAND AAABBBCCC 1 Bright A_SpawnItemEx("SandCometTail")
	Loop
  Death:
	TNT1 A 0
	TNT1 A 0 A_Explode
	TNT1 A 0 A_SetTranslucent(0.75,1)
	TNT1 A 0 A_SpawnItemEx("BrownParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
	TNT1 AAAAA 0 A_SpawnItemEx("SandClouds",0,0,10,Random(4,-4),Random(4,-4),Random(4,-2))
	SAND D 3 Bright A_SpawnItemEx("SandCometDeathGlow",0,0,0,0,0,0,0,128,0)
	SAND E 3 Bright A_SpawnItemEx("SandCometDeath",0,0,0,0,0,0,0,128,0)
	Stop
	}
}

ACTOR SandKaboomBig : Kaboom3
{
  Speed 3
  Scale 1.3
  States
  {
  Spawn:
	TNT1 A 0
	TNT1 A 0 A_JumpIf(CallAcs("LCAEffectCheck"),"Toaster")
	LSND A 1 Bright A_PlaySound("weapons/rocklx")
	LSND AABBCDEFGHIJKLM 1 Bright A_FadeOut(0.05)
	Stop
	}
}

ACTOR SandLordGhost
{
Scale 2
Renderstyle Translucent
Alpha 0.75
+NOGRAVITY
+CLIENTSIDEONLY
+NOINTERACTION
States
{
Spawn:
	SNLD A 2 A_FadeOut(0.18)
	Loop
	}
}

ACTOR SandLordGhost2 : SandLordGhost
{
States
{
Spawn:
	SNLD M 2 A_FadeOut(0.18)
	Loop
	}
}

Actor SandLordSpawner
{
  States
  {
  Spawn:
	TNT1 A 0
	TNT1 A random(0,10)
	TNT1 A 0 A_SpawnItemEx("TeleportFog")
	TNT1 A 0 A_SpawnItemEx("SandLord",0,0,0,0,0,0,random(0,360),0,0,tid)
	Stop
	}
}