/*
For tweaking, see comments.
*/

ACTOR Skellytun : actor
{
	Species "Skellytun"
	Health 550
	Radius 20
	Height 56
	Mass 500
	Speed 14
	PainChance 80
	painchance "grappler", 256
	Monster
	MeleeThreshold 196
	+MISSILEMORE 
	+MISSILEEVENMORE
	+FLOORCLIP 
	+BRIGHT
	+dontoverlap
	bloodtype blackbonespray
	SeeSound "skeleton/sight"
	PainSound "skellytun/pain"
	DeathSound "skeleton/death"
	ActiveSound "skeleton/active"
	HitObituary "%o has been pummeled by a chaos revenant"
	Obituary "%o got boned by a chaos revenant"
	States
	{
	Spawn:
		INCA AB 8 Bright A_Look
		goto see
	See:
		INCA AABBCCDDEEFF 2 Bright   A_Chase
		Loop
	Melee:
		TNT1 A 0 A_JumpIfInventory("SkellytunIsHeadless", 1, "HeadlessMelee")
		INCA G 1 Bright A_FaceTarget
		INCA G 4 Bright A_PlaySound("skellytun/woosh")
		INCA H 3 Bright A_FaceTarget
	MeleeFinal:
		TNT1 A 0 A_TakeInventory("SkellytunFrustrated",0x7FFFFFFF)
		INCA H 1 Bright A_FaceTarget
		TNT1 A 0 A_CustomMeleeAttack(random(1,10)*4,"skellytun/punch","none", "POWdrainer") //----------------This is a custom replication of the basic revenant punch damage
		TNT1 A 0 ACS_ExecuteWithResult(990,0,1,2)//flyback//------------------------------------Change arg4 for higher knockback distances. 2 is pretty big tho.
		INCA I 6 Bright
		Goto See
	Missile:
		TNT1 A 0 A_JumpIfInventory("SkellytunIsHeadless", 1, "HeadlessMissile")
		TNT1 A 0 A_JumpIfCloser(600, "JumpDecide")//------------------------------------The range at which skellytun will attempt to jump punch
		TNT1 A 0 A_Jump(170, "BoneThrow") //else, very good chance of bonethrowing
		Goto HeadDetach //else, toss its head out	
	JumpDecide:
		TNT1 A 0 A_Jump(80, "JumpPunch") //--------------------------------------------if it's in range, very good chance of jump-punching
		TNT1 A 0 A_Jump(220, "BoneThrow") //---------------------------------------------else, very good chance of bonethrowing
		Goto HeadDetach //---------------------------------------------------------------else, toss its head out
	JumpPunch:
		TNT1 A 0 A_JumpIfInventory("SkellytunFrustrated",10,"AngrySpin")//-----------------By checking at 10 and giving random(3,4) every fail, it will grow angry every 3 to 4 attempts
		INCA G 6 Bright 																	//(weighted toward 3)
		INCA G 1 Bright A_FaceTarget
		TNT1 A 0 A_PlaySound("Skeleton/Sight")
		TNT1 A 0 A_Stop
		TNT1 A 0 A_FaceTarget
		TNT1 A 0 ThrustThingZ(0,30,0,1)//-------------------------------------------------To adjust the height and distance of the jump,
		TNT1 A 0 ThrustThing(angle*256/360, 20, 0, 0)//-----------------------------------------look here
		INCA G 1 Bright A_PlaySound("Skeleton/Sight")
		INCA GGGGGGGGGGG 1 Bright A_JumpIfCloser(90, "MeleeFinal") //---------------------how close the skellytun needs to be when jumping before it attempts to punch
		INCA G 1 Bright A_GiveInventory("SkellytunFrustrated",random(3,4))
		Goto See
	AngrySpin:
		TNT1 A 0
		TNT1 A 0 A_TakeInventory("SkellytunFrustrated",0x7FFFFFFF)
		TNT1 A 0 A_TakeInventory("SkellytunSpinLoop",0x7FFFFFFF)
		TNT1 A 0 A_Stop
		TNT1 A 0 A_FaceTarget
		TNT1 A 0 A_PlaySound("skellytun/angry",2)
		TNT1 A 0 ThrustThingZ(0,30,0,1)//-------------------------------------------------Every leap attack type thrust is the same across 
		TNT1 A 0 ThrustThing(angle*256/360, 20, 0, 0)//-----------------------------------------------all state types but feel free to change
		INCA G 4 Bright 
	SpinLoop:
		TNT1 A 0 A_JumpIfInventory("SkellytunSpinLoop",10,"HeadDetach")//------------------------------Length of spin
		INCA G 1 Bright A_SetAngle(55+Angle)
		TNT1 A 0 A_giveinventory ("skellytunspinpunch",1)
		TNT1 A 0 A_Playsound("skellytun/spinwoosh",3)
		TNT1 A 0 A_GiveInventory("SkellytunSpinLoop",1)
		loop
	HeadDetach:
		TNT1 A 0 A_PlaySound("skellytun/skullmagic") 
		TNT1 A 0 A_TakeInventory("SkellytunSpinLoop",0x7FFFFFFF)
		//---------------------------------------------------------------------------How long it spends powering up. This is roughly as long as the powerup sound actually
		INCA L 5 Bright A_SpawnItemEx("SkullSparkly2", -5, random(-5,5),64)
		TNT1 AAAAAAAAA 0 A_SpawnItemEx("SkullSparkly2", -5, random(-5,5),64)
		INCA L 5 Bright A_SpawnItemEx("SkullSparkly2", -5, random(-5,5),64)
		TNT1 AAAAAAAAA 0 A_SpawnItemEx("SkullSparkly2", -5, random(-5,5),64)
		INCA L 5 Bright A_SpawnItemEx("SkullSparkly2", -5, random(-5,5),64)
		TNT1 AAAAAAAAA 0 A_SpawnItemEx("SkullSparkly2", -5, random(-5,5),64)
		INCA L 5 Bright A_SpawnItemEx("SkullSparkly2", -5, random(-5,5),64)
		TNT1 AAAAAAAAA 0 A_SpawnItemEx("SkullSparkly2", -5, random(-5,5),64)
		INCA L 5 Bright A_SpawnItemEx("SkullSparkly2", -5, random(-5,5),64)
		TNT1 AAAAAAAAA 0 A_SpawnItemEx("SkullSparkly2", -5, random(-5,5),64)
		RNCA AB 6 bright
		TNT1 A 0 A_PlaySound("Skeleton/Swing", 2)
		TNT1 A 0 A_PlaySound("Skeleton/Swing", 3)
		TNT1 A 0 A_PlaySound("Skeleton/Swing", 4)
		TNT1 A 0 A_GiveInventory("SkellytunIsHeadless",1)
		TNT1 A 0 A_SpawnItemEx("SkellytunHeadSpawner",0,0,56)
		0NCA I 10 Bright
		goto HeadlessInitiate
	BoneThrow:
		TNT1 A 0 A_Jump(256, "BoneThrow1", "BoneThrow2", "BoneThrow3")
	BoneThrow1:
		INCA G 1 Bright A_FaceTarget
		INCA G 6 Bright
		INCA H 6 Bright A_FaceTarget
		INCA I 6 Bright
		TNT1 A 0 A_PlaySound("Skeleton/Swing")
		TNT1 A 0 A_CustomMissile("SkellytunBone1",32,-30,0,1)//----------------------------------Add or remove bones for pattern straight throw here
		TNT1 A 0 A_CustomMissile("SkellytunBone3",32,0,0,1)
		TNT1 A 0 A_CustomMissile("SkellytunBone1",32,30,0,1)
		goto See
	BoneThrow2:
		INCA G 1 Bright A_FaceTarget
		INCA G 6 Bright
		INCA H 6 Bright A_FaceTarget
		INCA I 6 Bright
		TNT1 A 0 A_PlaySound("Skeleton/Swing")//----------Add bones to the bone cluster here. It throws a variable number and the way the jumps work, it is weighted for lower amounts
		TNT1 AAA 0 A_CustomMissile("SkellytunBone2",random(28, 48),random(-30,30)*4,random(-6,6)*2,random(5,30)*2)
		TNT1 A 0 A_Jump(90, "See")
		TNT1 A 0 A_CustomMissile("SkellytunBone2",random(28, 48),random(-30,30)*4,random(-4,4)*2,random(5,30)*2)
		TNT1 A 0 A_Jump(90, "See")
		TNT1 A 0 A_CustomMissile("SkellytunBone2",random(28, 48),random(-30,30)*4,random(-3,4)*2,random(5,30)*2)
		TNT1 A 0 A_Jump(90, "See")
		TNT1 A 0 A_CustomMissile("SkellytunBone2",random(28, 48),random(-30,30)*4,random(-5,6)*2,random(5,30)*2)
		TNT1 A 0 A_Jump(90, "See")
		TNT1 A 0 A_CustomMissile("SkellytunBone2",random(28, 48),random(-30,30)*4,random(-3,6)*2,random(5,30)*2)
		TNT1 A 0 A_Jump(90, "See")
		TNT1 A 0 A_CustomMissile("SkellytunBone2",random(28, 48),random(-30,30)*4,random(-3,7)*2,random(5,30)*2)
		TNT1 A 0 A_Jump(90, "See")
		TNT1 A 0 A_CustomMissile("SkellytunBone2",random(28, 48),random(-30,30)*4,random(-6,6)*2,random(5,30)*2)	
		//TNT1 A 0 ACS_ExecuteWithResult(990, 0, 2, 0) //scroton's "arcing actor" script for jumping, used for projectiles -- couldn't get it to work, concept abandoned
		goto See
	BoneThrow3:
		INCA G 1 A_FaceTarget
		INCA G 6
		INCA H 6 A_FaceTarget
		INCA I 6
		TNT1 A 0 A_PlaySound("Skeleton/Swing")
		TNT1 A 0 A_CustomMissile("SkellytunBone3")//-------------------------------------The homing boner
		goto See  
	HeadlessInitiate:
		TNT1 A 0 ACS_ExecuteWithResult(990, 0, 3, random(175,350)) //-----------------------------------Countdown. Arg4 is the countdown amount, in tics. 175-350 is 5-10 seconds before
	HeadlessConfusedButUnFriendly:																																//it reloads its head
		TNT1 A 0 A_Jump(200, 3)//-------------------------------------Make this higher to make it become friendly less often
		TNT1 A 0 A_ChangeFlag("FRIENDLY", 1)
		TNT1 A 0 A_GiveInventory("isfriendly", 1)
		TNT1 A 0
		goto HeadlessSee
	HeadlessConfusedButFriendly:
		TNT1 A 0 A_Jump(200, 3)//--------------------------------------Make this higher to make it become unfriendly less often
		TNT1 A 0 A_ChangeFlag("FRIENDLY", 0)
		TNT1 A 0 A_TakeInventory("isfriendly", 0x7FFFFFFF)
		TNT1 A 0
		goto HeadlessSee
	HeadlessSee://---------------------------------------------------Will either A_Chase or A_Wander. Each have a 50% chance.
		TNT1 A 0 A_JumpIfInventory("SkellytunReloadSkull", 1, "SkullReload")
		TNT1 A 0 A_Jump(127, "HeadlessWander")
	HeadlessSeeGo:
		TNT1 A 0 A_JumpIfInventory("SkellytunReloadSkull", 1, "SkullReload")
		0NCA AABBCCDDEEFF 2 A_Chase
		TNT1 A 0 A_Jump(127, "HeadlessSeeGo")//-------------------------------------It has a 50% chance of attempting to check its Friendly state,
		TNT1 A 0 A_JumpIfInventory("isfriendly", 1, "HeadlessConfusedButFriendly")//-----------and this is decided by the presence of the "isfriendly" item
		goto HeadlessConfusedButUnfriendly//-----------------------------------------Note: you could remove the jumps above (A_Jump(200,3)) to control it more precisely with this one
	HeadlessWander:
		TNT1 A 0 A_JumpIfInventory("SkellytunReloadSkull", 1, "SkullReload")
		0NCA AABBCCDDEEFF 2 A_Wander
		TNT1 A 0 A_Jump(70, "HeadlessPanic")//---------------------70/256 chance to "panic" and use a blind spin or shower attack
		TNT1 A 0 A_Jump(127, "HeadlessWander")
		goto HeadlessSee
	HeadlessMissile:
		Goto HeadlessPanic
	HeadlessMelee://-------------------------------------In melee has a chance to spin regardless, or it could just punch
		TNT1 A 0 A_Jump(127, "HeadlessSpin")
	HeadlessPunch://-----------------------------------Identical to the MeleeFinal state above
		0NCA G 1 A_FaceTarget
		0NCA G 4 A_PlaySound("skellytun/woosh")
		0NCA H 3 A_FaceTarget
		TNT1 A 0 A_JumpIfCloser(44,2)
		TNT1 A 0 ThrustThing(angle*256/360, 20,0,0)
		0NCA H 1 A_FaceTarget
		TNT1 A 0 A_CustomMeleeAttack(random(1,10)*6,"skellytun/punch","none")
		TNT1 A 0 ACS_ExecuteWithResult(990,0,1,2)//flyback
		0NCA I 6
		Goto HeadlessSee
	HeadlessPanic:
		TNT1 A 0 A_Jump(90, "HeadlessBoneShower")
	HeadlessSpin://--------------------------------------Identical to the AngrySpin state above
		TNT1 A 0 A_JumpIfInventory("SkellytunSpinLoop",15,"HeadlessSee")
		0NCA G 1 A_SetAngle(55+Angle)
		TNT1 A 0 A_giveinventory ("skellytunspinpunch",1)
		//TNT1 A 0 A_RadiusThrust(250,120)
		//TNT1 A 0 A_RadiusGive("SkellytunJustGotPunched", 120, RGF_PLAYERS | RGF_MONSTERS | RGF_OBJECTS)
		TNT1 A 0 A_Playsound("skellytun/spinwoosh",3)
		TNT1 A 0 A_GiveInventory("SkellytunSpinLoop",1)
		loop
	HeadlessBoneShower: //------------------------Skellytunbone4 is identical to skellytunbone3. I separated them
		0NCA G 10//---------------------------------because I wanted to initially make them non-projectile actors that used
		0NCA H 6//----------------------------------a_look to target nearby enemies, and damage them, thus avoiding the need to
		0NCA I 6//----------------------------------make every monster invulnerable to them. As they are presently, they damage all actors.
		TNT1 A 0 A_PlaySound("Skeleton/Swing", 2)//-Whether this is desirable or not is up to you. I thought not, perhaps, because the shower is rather large.
		TNT1 A 0 A_PlaySound("Skeleton/Swing", 3)//-We could instead establish a damagetype "GMOTA_NOMONSTERDAMAGE" and make every monster invulnerable to them.
		TNT1 A 0 A_PlaySound("Skeleton/Swing", 4)
		TNT1 AAAAAAA 0 A_SpawnItemEx("SkellytunBone4", 0, 0, 26, random(-5, 10), random(-5, 5), random(8, 15) )
		TNT1 A 0 A_CustomMissile("SkellytunBone3")
		TNT1 A 0 A_Jump(190, "HeadlessSee")
		TNT1 A 0 A_SpawnItemEx("SkellytunBone4", 0, 0, 26, random(-5, 10), random(-5, 5), random(8, 15) )
		TNT1 A 0 A_Jump(190, "HeadlessSee")
		TNT1 A 0 A_SpawnItemEx("SkellytunBone4", 0, 0, 26, random(-5, 10), random(-5, 5), random(8, 15) )
		TNT1 A 0 A_Jump(190, "HeadlessSee")
		TNT1 A 0 A_SpawnItemEx("SkellytunBone4", 0, 0, 26, random(-5, 10), random(-5, 5), random(8, 15) )
		TNT1 A 0 A_Jump(190, "HeadlessSee")
		TNT1 A 0 A_CustomMissile("SkellytunBone3")
		TNT1 A 0 A_Jump(190, "HeadlessSee")
		TNT1 A 0 A_CustomMissile("SkellytunBone3")
		goto HeadlessSee	  
	SkullReload:
		TNT1 A 0 A_ClearTarget
		TNT1 A 0 A_ChangeFlag("FRIENDLY", 0)
		TNT1 A 0 A_PlaySound("skellytun/skullmagic")
		RNCA A 5 Bright A_SpawnItemEx("SkullSparkly2", -5, random(-5,5),64)
		TNT1 AAAAAAAAA 0 A_SpawnItemEx("SkullSparkly2", -5, random(-5,5),64)
		RNCA A 5 Bright A_SpawnItemEx("SkullSparkly2", -5, random(-5,5),64)
		TNT1 AAAAAAAAA 0 A_SpawnItemEx("SkullSparkly2", -5, random(-5,5),64)
		RNCA A 5 Bright A_SpawnItemEx("SkullSparkly2", -5, random(-5,5),64)
		TNT1 AAAAAAAAA 0 A_SpawnItemEx("SkullSparkly2", -5, random(-5,5),64)
		TNT1 A 0 a_facetarget
		RNCA BCD 4 Bright
		RNCA D 8 Bright A_FaceTarget
		TNT1 A 0 A_PlaySound("skellytun/laugh1")//----------------------------  _sink is working on a better laugh. This is a laugh made from the HereticImp pain sound.
		RNCA EDEDEDEDE 3 Bright A_FaceTarget//--------------------------------  I wanted to make a laugh derived from the Revenant AAAAA sound but I couldn't get it sounding right.
		RNCA E 4 Bright
		TNT1 A 0 A_TakeInventory("SkellytunIsHeadless", 0x7FFFFFFF)
		TNT1 A 0 A_TakeInventory("SkellytunReloadSkull", 0x7FFFFFFF)
		goto See	
	Pain:
		TNT1 A 0 A_JumpIfInventory("SkellytunIsHeadless", 1, "HeadlessPain") //---- Determines whether or not it is headless. Recall that Pain interrupts all states no matter what,
		INCA L 5															//----- making this necessary.
		TNT1 A 0 a_playsound ("skeleton/allpain",0,1,0,0.5)
		INCA L 5 A_Pain
		Goto See
	HeadlessPain:
		0NCA L 5
		0NCA L 5 A_Pain
		Goto HeadlessSee
	Death:
		INCA L 1
		INCA L 1 A_Scream
		INCA L 1 A_NoBlocking
		TNT1 A 0 a_scream
		TNT1 A 0 a_playsound ("skeleton/gib",0,1,0,0.6)
		TNT1 AAAAAAAAAAAAA 0 a_spawnitemex ("SkellytunSkullDeath",random(-16,16),random(-16,16),42,random(-100,100)/20.0,random(-100,100)/20.0,random(-100,100)/20.0,0)
		TNT1 AAAAAAAAA 0 a_spawnitemex("blackbones",0,0,32,random(-20,15),random(-8,16),random(5,10))
		TNT1 AAAAAA 0 a_spawnitemex("blackbones",0,0,32,random(-8,18),random(-3,18),random(5,10))
		ISKL AAAAAAA 0 a_spawnitemex("blackbones",0,0,32,random(-20,9),random(-5,20),10)
		ISKL AAAAA 0 a_spawnitemex("blackbones",0,0,32,random(-13,10),random(-8,20),12)
		TNT1 A 10
		Stop
	death.sunder:
		INCA L 1
		INCA L 1 A_Scream
		INCA L 1 A_NoBlocking
		TNT1 A 0 a_scream
		TNT1 A 0 a_playsound ("skeleton/gib",0,1,0,0.6)
		TNT1 AAAAAAAAAAAAA 0 a_spawnitemex ("SkellytunSkullDeath",random(-16,16),random(-16,16),42,random(-100,100)/20.0,random(-100,100)/20.0,random(-100,100)/20.0,0)
		TNT1 AAAAAAAAA 0 a_spawnitemex("blackbones",0,0,32,random(-20,15),random(-8,16),random(5,10))
		TNT1 AAAAAA 0 a_spawnitemex("blackbones",0,0,32,random(-8,18),random(-3,18),random(5,10))
		ISKL AAAAAAA 0 a_spawnitemex("blackbones",0,0,32,random(-20,9),random(-5,20),10)
		ISKL AAAAA 0 a_spawnitemex("blackbones",0,0,32,random(-13,10),random(-8,20),12)
		TNT1 AAAAAAAAAAAAAAAAAAA 0 a_dropitem ("milkjug",1)
		TNT1 A 10
		Stop
	Death.slayermelee:
	Death.slayersupermelee:
		INCA L 1
		INCA L 1 A_Scream
		INCA L 1 A_NoBlocking
		TNT1 A 0 a_scream
		TNT1 A 0 a_playsound ("skeleton/gib",0,1,0,0.6)
		TNT1 AAA 0 a_spawnitemex ("sunderlootorb", 0, 0, 0, random (-4, 7), random (-6, 3), random (3,6))
		TNT1 A 0 a_spawnitemex ("sunderlootorb", 0, 0, 0, random (-3, 6), random (-8, 8), random (3,5))
		TNT1 AAAAAAAAAAAAA 0 a_spawnitemex ("SkellytunSkullDeath",random(-16,16),random(-16,16),42,random(-100,100)/20.0,random(-100,100)/20.0,random(-100,100)/20.0,0)
		TNT1 AAAAAAAAA 0 a_spawnitemex("blackbones",0,0,32,random(-20,15),random(-8,16),random(5,10))
		TNT1 AAAAAA 0 a_spawnitemex("blackbones",0,0,32,random(-8,18),random(-3,18),random(5,10))
		ISKL AAAAAAA 0 a_spawnitemex("blackbones",0,0,32,random(-20,9),random(-5,20),10)
		ISKL AAAAA 0 a_spawnitemex("blackbones",0,0,32,random(-13,10),random(-8,20),12)
		TNT1 A 10
		Stop

	death.blazice:
		TNT1 A 0
		TNT1 A 0 A_JumpIfInventory("SkellytunIsHeadless", 1, "Headlessicedeath")
		INCA L 2 a_scream
		INIC A 2 A_noblocking
		TNT1 A 0 a_playsound ("swordtech/freezedeath")
		TNT1 A 0 a_fadeout (0.20)
		TNT1 AAAAAAAAAAAA 0 a_spawnitemex ("iceparticle",random(-8,8),random(-8,8),32,random(-100,100)/10.0,random(-100,100)/10.0,random(-100,100)/20.0,0,160)
		INIC B 90 bright
		INIC C 2 bright
		TNT1 A 0 a_playsound ("swordtech/iceshatter")
		TNT1 A 0 A_CustomMissile("icicle", 30,0, 0, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		TNT1 A 0 A_CustomMissile("icicle", 30,0, 45, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		TNT1 A 0 A_CustomMissile("icicle", 30,0, 90, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		TNT1 A 0 A_CustomMissile("icicle", 30,0, 180, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		TNT1 A 0 A_CustomMissile("icicle", 30,0, 270, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		TNT1 A 0 A_CustomMissile("icicle", 30,0, 360, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		TNT1 A 0 a_dropitem ("treatspawner",1,190)
		TNT1 AAA 0 a_spawnitemex ("icefragment",0,0,0,random(-10,10),random(-10,10),10) 
		TNT1 AAAA 0 a_spawnitemex ("icefragment",0,0,0,random(-4,13),random(-8,13),8) 
		TNT1 AAAA 0 a_spawnitemex ("icefragment",0,0,0,random(-6,16),random(-4,6),8) 
		stop
	headlessicedeath:
		0NCA L 2 a_scream
		INIC D 2 A_noblocking
		TNT1 A 0 a_playsound ("swordtech/freezedeath")
		TNT1 A 0 a_fadeout (0.20)
		TNT1 AAAAAAAAAAAA 0 a_spawnitemex ("iceparticle",random(-8,8),random(-8,8),32,random(-100,100)/10.0,random(-100,100)/10.0,random(-100,100)/20.0,0,160)
		INIC E 90 bright
		INIC F 2 bright
		TNT1 A 0 a_playsound ("swordtech/iceshatter")
		TNT1 A 0 A_CustomMissile("icicle", 30,0, 0, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		TNT1 A 0 A_CustomMissile("icicle", 30,0, 45, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		TNT1 A 0 A_CustomMissile("icicle", 30,0, 90, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		TNT1 A 0 A_CustomMissile("icicle", 30,0, 180, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		TNT1 A 0 A_CustomMissile("icicle", 30,0, 270, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		TNT1 A 0 A_CustomMissile("icicle", 30,0, 360, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		TNT1 A 0 a_dropitem ("treatspawner",1,190)
		TNT1 AAA 0 a_spawnitemex ("icefragment",0,0,0,random(-10,10),random(-10,10),10) 
		TNT1 AAAA 0 a_spawnitemex ("icefragment",0,0,0,random(-4,13),random(-8,13),8) 
		TNT1 AAAA 0 a_spawnitemex ("icefragment",0,0,0,random(-6,16),random(-4,6),8) 
		stop
	death.fatalslash:
		TNT1 A 0
		TNT1 A 0 A_JumpIfInventory("SkellytunIsHeadless", 1, "HeadlessFatalSlash")
		INCA L 2 a_scream
		INIC A 4 a_noblocking
		INCA L 15 
	randomwait:
		FDCR A 1 a_jump (20,"split")
		loop
	split:
		FDCR AABBCC 5
		FDCR DE 2 
		FDCR FGHIJ 3 bright  A_SpawnItemEx ("fatalburst", frandom(-20,20),frandom(-20,20),frandom(10,30), 0,0,0, 0, SXF_NOCHECKPOSITION,80)
		FDCR J 1 bright  A_SpawnItemEx ("fatalburst", frandom(-20,20),frandom(-20,20),frandom(10,30), 0,0,0, 0, SXF_NOCHECKPOSITION,80)
		FDCR J 1 bright  A_SpawnItemEx ("fatalburst", frandom(-20,20),frandom(-20,20),frandom(10,30), 0,0,0, 0, SXF_NOCHECKPOSITION,80)
		FDCR J 1 bright  A_SpawnItemEx ("fatalburst", frandom(-20,20),frandom(-20,20),frandom(10,30), 0,0,0, 0, SXF_NOCHECKPOSITION,80)
		FDCR J 1 bright  A_SpawnItemEx ("fatalburst", frandom(-20,20),frandom(-20,20),frandom(10,30), 0,0,0, 0, SXF_NOCHECKPOSITION,80)
		FDCR J 1 bright  A_SpawnItemEx ("fatalburst", frandom(-20,20),frandom(-20,20),frandom(10,30), 0,0,0, 0, SXF_NOCHECKPOSITION,80)
	exploding:
		FDCR J 1 bright 
		TNT1 A 1 bright A_SpawnItemEx ("fatalburst", frandom(-20,20),frandom(-20,20),frandom(10,30), 0,0,0, 0, SXF_NOCHECKPOSITION, 80)
		FDCR J 1 bright 
		TNT1 A 1 bright A_SpawnItemEx ("fatalburst", frandom(-20,20),frandom(-20,20),frandom(10,30), 0,0,0, 0, SXF_NOCHECKPOSITION, 80)
		FDCR J 1 bright 
		TNT1 A 1 bright A_SpawnItemEx ("fatalburst", frandom(-20,20),frandom(-20,20),frandom(10,30), 0,0,0, 0, SXF_NOCHECKPOSITION, 80)
		FDCR J 1 bright a_jump (100,"reallydie")
		TNT1 A 1 bright A_SpawnItemEx ("fatalburst", frandom(-20,20),frandom(-20,20),frandom(10,30), 0,0,0, 0, SXF_NOCHECKPOSITION, 80)
		loop
	reallydie:
		TNT1 A 0
		TNT1 A 1 a_spawnitemex ("fataldrawdeath",0,0,30)
		stop
	
	
	HeadlessFatalSlash:
		0NCA L 2 a_scream
		INIC D 4 a_noblocking
		0NCA L 15 
	randomheadleasswait:
		FDNH A 1 a_jump (10,"headlesssplit")
		loop
	headlesssplit:
		FDNH AABBCC 5
		FDNH DE 2 
		FDNH FGHIJ 3 bright  A_SpawnItemEx ("fatalburst", frandom(-20,20),frandom(-20,20),frandom(10,30), 0,0,0, 0, SXF_NOCHECKPOSITION,80)
		FDNH JJJJJ 1 bright  A_SpawnItemEx ("fatalburst", frandom(-20,20),frandom(-20,20),frandom(10,30), 0,0,0, 0, SXF_NOCHECKPOSITION,80)
	headlessexploding:
		FDNH J 1 bright 
		TNT1 A 1 bright A_SpawnItemEx ("fatalburst", frandom(-20,20),frandom(-20,20),frandom(10,30), 0,0,0, 0, SXF_NOCHECKPOSITION, 80)
		FDNH J 1 bright 
		TNT1 A 1 bright A_SpawnItemEx ("fatalburst", frandom(-20,20),frandom(-20,20),frandom(10,30), 0,0,0, 0, SXF_NOCHECKPOSITION, 80)
		FDNH J 1 bright 
		TNT1 A 1 bright A_SpawnItemEx ("fatalburst", frandom(-20,20),frandom(-20,20),frandom(10,30), 0,0,0, 0, SXF_NOCHECKPOSITION, 80)
		FDNH J 1 bright a_jump (100,"headlessreallydie")
		TNT1 A 1 bright A_SpawnItemEx ("fatalburst", frandom(-20,20),frandom(-20,20),frandom(10,30), 0,0,0, 0, SXF_NOCHECKPOSITION, 80)
		loop
	headlessreallydie:
		TNT1 A 0
		TNT1 A 1 a_spawnitemex ("fataldrawdeath",0,0,30)
		stop
		
	Raise:
		INCA Q 5
		INCA PONML 5
		Goto See
	}
}


ACTOR SkellytunHeadSpawner	//------------------This actor is necessary because using A_PainAttack causes the lost soul or equivalent to appear at the actor's feet.
{
	Species "Skellytun"
	+LOOKALLAROUND
	-SOLID 
	+NOCLIP
	States
	{
	Spawn:
		TNT1 AAAAA 1 A_Look
		Goto SpawnAnyway
	See:
		TNT1 A 0 A_PainAttack("SkellytunFlyingSkull")
		Stop
	SpawnAnyway:
		TNT1 A 0 A_SpawnItemEx("SkellytunFlyingSkull", 0,0,0, 20)
		Stop
	}
}
	

ACTOR SkellytunFlyingSkull
{
	Scale 1.5
	Health 80
	Radius 16
	Height 56
	Speed 10
	Damage (15)
	projectile
	+LOOKALLAROUND
	+DONTFALL
	+NOICEDEATH
	+NOBLOOD
	+THRUGHOST
	-countkill
	Species "Skellytun"
	+THRUSPECIES
	States
	{
	Spawn:
		TNT1 A 0 A_SpawnItemEx("SkullSparkly")
		SKCA B 2 Bright
		TNT1 A 0 A_SpawnItemEx("SkullSparkly")
		SKCA B 2 Bright
		TNT1 A 0 A_SpawnItemEx("SkullSparkly")
		SKCA C 2 Bright 
		TNT1 A 0 A_SpawnItemEx("SkullSparkly")
		SKCA C 2 Bright 
		TNT1 A 0 A_SpawnItemEx("SkullSparkly")
		Loop	
  Death:	
		TNT1 A 0 A_FaceTarget
		TNT1 A 0 A_Stop
		TNT1 A 0 A_SpawnItemEx("SkellytunSkullDeath")
		TNT1 AAAAAAAAAA 0 a_spawnitemex("SkellytunBone2",0,0,0,random(-15,15),random(-15,15),8) 
		TNT1 A 1
		Stop
}
}

ACTOR SkullSparkly 
{
	+clientsideonly
	+NOINTERACTION
	States
	{
		Spawn:
			TNT1 AA 1 A_SpawnItemEx("SkullSparkle", 0, random(-5,5), random(-2,2))
			TNT1 A 0 A_Jump(127, "Done")
			TNT1 A 1 A_SpawnItemEx("SkullSparkle", 0, random(-5,5), random(-2,2))
			TNT1 A 0 A_Jump(127, "Done")
			TNT1 A 1 A_SpawnItemEx("SkullSparkle", 0, random(-5,5), random(-2,2))
			TNT1 A 0 A_Jump(127, "Done")
		Done:
			TNT1 A 0
			Stop
	}
}

ACTOR SkullSparkly2 
{
	+clientsideonly
	+NOINTERACTION
	States
	{
		Spawn:
			TNT1 AA 1 A_SpawnItemEx("SkullSparkle2", random(-20,20), random(-30,30), random(-25,15))
			TNT1 A 0 A_Jump(127, "Done")
			TNT1 AA 1 A_SpawnItemEx("SkullSparkle2", random(-20,20), random(-30,30), random(-25,15))
			TNT1 A 0 A_Jump(127, "Done")
			TNT1 AA 1 A_SpawnItemEx("SkullSparkle2", random(-20,20), random(-30,30), random(-25,15))
			TNT1 A 0 A_Jump(127, "Done")
		Done:
			TNT1 A 0
			Stop
	}
}


ACTOR SkullSparkle2
{
	Scale 0.8
	+clientsideonly
	+NOINTERACTION
	States
	{
		Spawn:
			TNT1 A 0
			TNT1 A 0 A_Jump(127, 3)
			GMAG AABBCCDD 2 A_FadeOut(0.1)
			Stop
	}
}


ACTOR SkullSparkle
{
	Scale 0.8
	+clientsideonly
	+NOINTERACTION
	States
	{
		Spawn:
			TNT1 A 0
			TNT1 A 1 A_Jump(215, "sparkle2","sparkle3","sparkle4")
		sparkle1:
			TNT1 A 0 ThrustThingZ (0, 4, 1,0)
		sparkle1.fade:
			GMAG A 1 Bright A_FadeOut(0.1)
			loop
		sparkle2:
			TNT1 A 0 ThrustThingZ (0, 4, 1,0)
		sparkle2.fade:
			GMAG B 1 Bright A_FadeOut(0.1)
			loop
		sparkle3:
			TNT1 A 0 ThrustThingZ (0, 4, 1,0)
		sparkle3.fade:
			GMAG C 1 Bright A_FadeOut(0.1)
			loop
		sparkle4:
			TNT1 A 0 ThrustThingZ (0, 4, 1,0)
		sparkle4.fade:
			GMAG D 1 Bright A_FadeOut(0.1)
			loop
	}
}

ACTOR SkullTest1
{
	+NOGRAVITY
	States
	{
	Spawn:
		SKCA ABCDEFJK 6 Bright
		Loop
	}
}








ACTOR skellytunspinpunch : artiblastradius
{
+inventory.autoactivate
}

ACTOR SkellytunFrustrated : ammo
{
inventory.maxamount 0x7FFFFFFF
}

//Skeleton Bones 

ACTOR SkellytunSkullDeath
{
	+NOINTERACTION
	Scale 2.0
	States
	{
	Spawn:
		0NGB EFG 3 Bright
		Stop
	}
}


//===================================================================Here are the bone actors for adjusting damages.

ACTOR SkellytunBoneBase
{
	Radius 6
	Height 8
	Speed 15
	FastSpeed 30
	Damage 4
	+THRUSPECIES
	+THRUGHOST
	species "enemyshot"
	Scale 1.7
	SeeSound "" //*******Bone See Sound?
	DeathSound ""//********Bone Death Sound?
}

ACTOR SkellytunBone1 : SkellytunBoneBase//straight throw
{
	Projectile
	States
		{
		Spawn:
			TNT1 A 0
			0NGB A 3 Bright
			0NGB B 3 Bright
			0NGB C 3 Bright A_PlaySound("Skeleton/Swing")
			0NGB D 3 Bright
			Loop
		Death:
			TNT1 A 0 A_SetTranslucent (0.5, 1)
			0NGB EFG 3 Bright
			Stop
		xdeath:
			TNT1 A 0 a_playsound ("subweapons/jabhit",0)
			TNT1 A 0 A_SetTranslucent (0.5, 1)
			0NGB EFG 3 Bright
			Stop
		}
}

ACTOR SkellytunBone2 : SkellytunBoneBase//arc bones
{
	Projectile
	-NOGRAVITY
	+THRUSPECIES
	Speed 32
	damage (7)
	+doombounce
	seesound "gibs/bones"
	BounceFactor 0.8
	BounceCount 4
	States
		{
		Spawn:
			TNT1 A 0
			TNT1 A 0 A_PlaySound("silence", CHAN_VOICE)
		flying:
			TNT1 A 0
			0NGB A 3 Bright 
			0NGB B 3 Bright
			0NGB C 3 Bright
			0NGB D 3 Bright
			Loop
		Death:
			TNT1 A 0 A_SetTranslucent (0.5, 1)
			0NGB EFG 3 Bright
			Stop
		xdeath:
			TNT1 A 0 a_playsound ("subweapons/jabhit",0)
			TNT1 A 0 A_SetTranslucent (0.5, 1)
			0NGB EFG 3 Bright
			Stop
		}
}

ACTOR SkellytunBone3 : SkellytunBoneBase//Bouncing boner
{
	Damage (15)
	Projectile
	radius 16
	height 16
	+noblood
	+FORCEXYBILLBOARD	
	+dontblast
	+THRUSPECIES
	+Hexenbounce
	Bouncecount 2
	-noblockmap
	Speed 10
	States
		{
		Spawn:
			TNT1 A 0
			TNT1 AAA 0 A_SpawnItemEx("SkullSparkly")
			TNT1 A 0 A_PlaySound("Skeleton/Swing",0,1,0,2.0)
			XBON A 4 Bright 
			XBON B 4 Bright 
			TNT1 AAA 0 A_SpawnItemEx("SkullSparkly")
			TNT1 A 0 A_PlaySound("Skeleton/Swing")
			XBON A 4 Bright 	
			XBON B 4 Bright
			TNT1 AAA 0 A_SpawnItemEx("SkullSparkly")
			TNT1 A 0 A_PlaySound("Skeleton/Swing",0,1,0,2.0)
			XBON A 4 Bright 
			XBON B 4 Bright 
			TNT1 AAA 0 A_SpawnItemEx("SkullSparkly")
			TNT1 A 0 A_PlaySound("Skeleton/Swing",0,1,0,2.0)
			XBON A 4 Bright
			XBON B 4 Bright 
			TNT1 A 0 A_PlaySound("Skeleton/Swing",0,1,0,2.0)
			XBON A 4 Bright 
			TNT1 AAA 0 A_SpawnItemEx("SkullSparkly")
			XBON B 4 Bright
			TNT1 A 0 A_PlaySound("Skeleton/Swing",0,1,0,2.0)
			XBON A 4 Bright 
			XBON B 4 Bright 
			TNT1 AAA 0 A_SpawnItemEx("SkullSparkly")
			loop
		Death:
			TNT1 A 0 A_SetTranslucent (0.5, 1)
			0NGB EFG 3 Bright
			Stop
		xdeath:
			TNT1 A 0 a_playsound ("subweapons/jabhit",0)
			TNT1 A 0 A_SetTranslucent (0.5, 1)
			0NGB EFG 3 Bright
			Stop
		}
}


ACTOR SkellytunBone4 : SkellytunBone2//Headless Boneshower. Slightly slower and bounces less than the cluster throw bone.
{
Speed 18
BounceFactor 0.6
BounceCount 3
}

//==============================================================================================================================

ACTOR SkellytunReloadSkull : Inventory{}

ACTOR SkellytunIsHeadless : Inventory{}

ACTOR isfriendly : inventory{}
ACTOR didreturn : inventory{}


ACTOR SkellytunSpinLoop : Ammo{
inventory.maxamount 0x7FFFFFFF
}