// --------------------------------------------------------------------------
//
//	Base Weapon
//
//		This actor is used as a base for weapons.
//		Here lies the shared states such as grenade toss, kick and taunt.
//
// --------------------------------------------------------------------------

Actor BaseWeapon : Weapon
{
	Inventory.PickupMessage "Replace me!"
	Obituary "Replace me!"
	tag "Replace me!"
	AttackSound "None"
	+WEAPON.NOAUTOAIM
	+WEAPON.NOALERT
	+WEAPON.NOAUTOFIRE
	+FORCEXYBILLBOARD
	+WEAPON.CHEATNOTWEAPON
	+INVENTORY.RESTRICTABSOLUTELY
	INVENTORY.FORBIDDENTO U_Purist
	VisibleToPlayerClass Doomer3
	States
	{
	Steady:
		TNT1 A 1
		TNT1 A 0 A_Jump(256,"Ready1")
		Goto Ready
	
////////// REPLACE THESE //////////
	Ready:
		TNT1 A 1 A_Weaponready
		Goto Ready
	Select:
		TNT1 A 0
		TNT1 A 0 A_Raise
		Wait
	Deselect:
		TNT1 A 0
		TNT1 A 0 A_Lower
		Wait
	Fire:
		TNT1 A 0
		Goto Ready
///////////////////////////////////


// --------------------------------------------------------------------------
//
//	Flash states
//
// --------------------------------------------------------------------------

	DoKick:
		TNT1 A 0 A_JumpIfInventory("ExecuteDownedEnemy",1,"DoExecution")
		TNT1 A 0 A_JumpIf(momZ > 0,"AirKick")
		TNT1 A 0 A_JumpIf(momZ < 0,"AirKick")
		TNT1 A 0 A_JumpIf((ABS (VelY) < 1) && (ABS (VelX) < 1),2)
		TNT1 A 0 A_JumpIfInventory("IsCrouching",1,"SlideAttack")
		TNT1 A 0 A_GunFlash("KickFlash")
		TNT1 A 0 A_JumpIf(pitch > 10,"LowKickChecker1")
		Goto InitializeNormalKick
		
	LowKickChecker1:
		TNT1 A 0 A_JumpIf(pitch > 90,"InitializeNormalKick")
		TNT1 A 0 A_FireCustomMissile("KickAttackDetectDowned",0,0,0,0)
		
	InitializeNormalKick: //16 frames
		TNT1 A 0 A_PlaySound("KICK")
		TNT1 A 0 SetPlayerProperty(0,1,0)
		KICK BCD 1
		TNT1 A 0 A_jumpifinventory("PowerStrength",1,3)
		TNT1 A 0 A_FireCustomMissile("KickAttack",0,0,0,-7)
		TNT1 A 0 A_Jump(256,2)
		TNT1 A 0 A_FireCustomMissile("SuperKickAttack",0,0,0,-7)
		KICK H 5
		TNT1 A 0 A_Takeinventory("Kicking",1)
		KICK IGFEDCBA 1 
		TNT1 A 0 SetPlayerProperty(0,0,0)
		TNT1 A 0 A_JumpIfInventory("ExecuteDownedEnemy",1,"DoExecution")
		TNT1 A 0 A_JumpIfInventory("GoFatality",1,"Steady")
		TNT1 A 0 A_Jump(256,"Ready2")
		Goto Ready2
	
	AirKick: //18 frames
		TNT1 A 0 A_GunFlash("AirKickFlash")
		TNT1 A 0 A_PlaySound("KICK")
		TNT1 A 0 A_Recoil(-6)
		KICK JKLMN 1
		TNT1 A 0 A_jumpifinventory("PowerStrength",1,3)
		TNT1 A 0 A_FireCustomMissile("AirKickAttack",0,0,0,-31)
		TNT1 A 0 A_Jump(256,2)
		TNT1 A 0 A_FireCustomMissile("SuperAirKickAttack",0,0,0,-31)
		KICK O 3
		TNT1 A 0 A_Takeinventory("Kicking",1)
		KICK PQRST 2
		TNT1 A 0 A_JumpIfInventory("GoFatality",1,"Steady")
		TNT1 A 0 A_Jump(256,"Ready2")
		Goto Ready2
		
	TauntR: //43 frames
		TNT1 A 0 A_GunFlash("TauntFlash")
		TNT1 A 5
		TNT1 A 0 A_JumpIfInventory("GenderFemale",1,3)
		TNT1 A 5 A_PlaySound("FUCK",2)
		TNT1 A 0 A_Jump(256,2)
		TNT1 A 5 A_PlaySound("FTAUNT",2)
		FUCK A 1
		TNT1 A 0 A_FireCustomMissile("Taunter",0,0,-1,0)
		TNT1 A 0 A_FireCustomMissile("Taunter",-9,0,-1,0)
		TNT1 A 0 A_FireCustomMissile("Taunter",9,0,-1,0)
		FUCK BCD 1 A_AlertMonsters
		FUCK E 15 A_Takeinventory("Taunting",1)
		FUCK DCBA 1
		TNT1 A 10
		TNT1 A 0 A_Jump(256,"Ready2")
		Goto Ready2

	TauntL: //43 frames
		TNT1 A 0 A_GunFlash("TauntFlash")
		TNT1 A 5
		TNT1 A 0 A_JumpIfInventory("GenderFemale",1,3)
		TNT1 A 5 A_PlaySound("FUCK",2)
		TNT1 A 0 A_Jump(256,2)
		TNT1 A 5 A_PlaySound("FTAUNT",2)
		FUCK F 1
		TNT1 A 0 A_FireCustomMissile("Taunter",0,0,-1,0)
		TNT1 A 0 A_FireCustomMissile("Taunter",-9,0,-1,0)
		TNT1 A 0 A_FireCustomMissile("Taunter",9,0,-1,0)
		FUCK GHI 1 A_AlertMonsters
		FUCK J 15 A_Takeinventory("Taunting",1)
		FUCK IHGF 1
		TNT1 A 10
		TNT1 A 0 A_Jump(256,"Ready2")
		Goto Ready2

	Salute:
		TNT1 A 0 SetPlayerProperty(0,1,0)
		TNT1 A 0 A_AlertMonsters
		SALU ABCDEDCDEDCDEDCBA 4
		TNT1 A 0 A_TakeInventory("Salute1",1)
		TNT1 A 0 A_TakeInventory("Salute2",1)
		TNT1 A 0 SetPlayerProperty(0,0,0)
		TNT1 A 0 A_Jump(256,"Ready1")
		Goto Ready1


// --------------------------------------------------------------------------
//
//	Toss grenade
//
// --------------------------------------------------------------------------

	TossGrenade: //31 frames
		TNT1 A 0 A_TakeInventory("TossGrenade",1)
		TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(1002,11)==0,"Ready2")
		TNT1 A 0 A_JumpIfInventory("GrenadeAmmo",1,1)
		Goto NoGrenade
		TNT1 A 0 A_GunFlash("GrenadeFlash")
		TNT1 A 8
		TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(1025,3)==1,"TossNewGrenade")
		GRNS FDB 1
		GRTH ABCD 1
		TNT1 A 0 A_PlaySound("GRNPIN")
		GRTH EEFGHI 1
		TNT1 A 1
		TNT1 A 0 A_PlaySound("GRNTOSS")
		TNT1 A 0 A_JumpIfInventory("TossGrenade",1,"RollGrenade")
		GRTH JKL 1
		TNT1 A 0 A_TakeInventory("GrenadeAmmo",1)
		TNT1 A 0 A_FireCustomMissile("U_HandGrenade",random(-2,2),0,0,0,0,0)
		GRTH MNOPQ 1
		TNT1 A 1 A_TakeInventory("TossGrenade",1)
		TNT1 A 0 A_Jump(256,"Ready1")
		Goto Ready1

	TossNewGrenade: //31 frames
		GRDS FDB 1
		GRDH ABCD 1
		TNT1 A 0 A_PlaySound("GRNPIN")
		GRDH EEFGHI 1
		TNT1 A 1
		TNT1 A 0 A_PlaySound("GRNTOSS")
		TNT1 A 0 A_JumpIfInventory("TossGrenade",1,"RollGrenade")
		GRTH JKL 1
		TNT1 A 0 A_TakeInventory("GrenadeAmmo",1)
		TNT1 A 0 A_FireCustomMissile("U_NewHandGrenade",random(-2,2),0,0,0,0,0)
		GRTH MNOPQ 1
		TNT1 A 1 A_TakeInventory("TossGrenade",1)
		TNT1 A 0 A_JumpIfInventory("RevenantLauncherSelected",1,"Ready2")
		TNT1 A 0 A_Jump(256,"Ready1")
		Goto Ready1

	RollGrenade: //14 Frames. 36 total
		TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(1025,3)==1,7)
		GRNX ABCD 1
		TNT1 A 0 A_FireCustomMissile("HandGrenadeRoll",frandom(-1,1),1,0,-15,0,0)
		TNT1 A 0 A_Jump(256,6)
		GRDX ABCD 1
		TNT1 A 0 A_FireCustomMissile("NewHandGrenadeRoll",frandom(-1,1),1,0,-15,0,0)
		TNT1 A 0 A_TakeInventory("GrenadeAmmo",1)
		GRNX EFGHIJK 1
		TNT1 A 3
		TNT1 A 0 A_TakeInventory("TossGrenade",1)
		TNT1 A 0 A_JumpIfInventory("RevenantLauncherSelected",1,"Ready2")
		TNT1 A 0 A_Jump(256,"Ready1")
		Goto Ready1

	NoGrenade:
		TNT1 A 0 A_Print("No Grenades Left.")
		TNT1 A 0 A_Jump(256,"Ready2")
		Goto Ready2
		

// --------------------------------------------------------------------------
//
//	Slide kick
//
// --------------------------------------------------------------------------

	SlideAttack:
		TNT1 A 0 SetPlayerProperty(0,1,4)
		TNT1 A 0 A_Takeinventory("Kicking",1)
		TNT1 A 0 A_PlaySound("KICK")
		
		//Running-script is currently not working
		//TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(1041)==1,3)
		//TNT1 A 0 A_Recoil(-4)
		//TNT1 A 0 A_Jump(256,3)
		TNT1 A 0 A_Recoil(-6)
		TNT1 A 0 A_Giveinventory("PlayerWasRunning",1)
		
		TNT1 A 0 A_PlaySound("SlideKickStart",5)
		TNT1 A 0 A_GunFlash("SlideKickStartFlash")
		TNT1 A 0 A_SetPitch(2)
		KICK K 1
		TNT1 A 0 A_SetPitch(4)
		KICK L 1
		TNT1 A 0 A_SetPitch(6)
		KICK M 1
		TNT1 A 0 A_SetPitch(8)
		KICK N 1
		TNT1 A 0 A_SetPitch(10)
		KICK O 1

	SlideKicking:
		TNT1 A 0 A_Giveinventory("SlideKicking",1)
		KICK O 1 A_FireCustomMissile("SlideAttack",0,0,0,10)
		TNT1 A 0 A_JumpIfInventory("PlayerWasRunning",1,3)
		TNT1 A 0 A_Recoil(-1)
		TNT1 A 0 A_Jump(256,2)
		TNT1 A 0 A_Recoil(-2)
		TNT1 A 0 A_SetPitch(10)
		TNT1 A 0 A_JumpIfInventory("KickHasHit",1,"FinishSlide")
		TNT1 A 0 A_JumpIfInventory("SlideKicking",10,"FinishSlide")
		TNT1 A 0 A_JumpIfInventory("IsCrouching",1,"SlideKicking")
		Goto FinishSlide

	FinishSlide:
		TNT1 A 0 A_Takeinventory("PlayerWasRunning",1)
		TNT1 A 0 A_Takeinventory("SlideKicking",15)
		TNT1 A 0 A_JumpIfInventory("KickHasHit",1,3)
		TNT1 A 0 A_PlaySound("SlideKickStop",5)
		TNT1 A 0 A_Jump(256,2)
		TNT1 A 0 A_Stop
		TNT1 A 0 A_GunFlash("SlideKickEndFlash")
		KICK P 1 A_SetPitch(10)
		KICK P 1 A_SetPitch(9)
		KICK Q 1 A_SetPitch(8)
		KICK Q 1 A_SetPitch(7)
		KICK R 1 A_SetPitch(6)
		KICK R 1 A_SetPitch(5)
		KICK S 1 A_SetPitch(4)
		KICK S 1 A_SetPitch(3)
		KICK T 1 A_SetPitch(2)
		KICK U 1 A_SetPitch(1)
		TNT1 A 0 A_SetPitch(0)
		TNT1 A 0 A_TakeInventory("KickHasHit",1)
		TNT1 A 0 A_JumpIfInventory("GoFatality",1,"Steady")
		TNT1 A 0 A_Takeinventory("Kicking",1)
		TNT1 A 0 SetPlayerProperty(0,0,4)
		TNT1 A 0 A_Jump(256,"Ready2")
		Goto Ready2


// --------------------------------------------------------------------------
//
//	First person executions
//
// --------------------------------------------------------------------------

	DoExecution:
		TNT1 A 0 A_SetPitch(65)
		TNT1 A 0 A_JumpIfInventory("SawSelected",1,3)
		TNT1 A 0 A_JumpIfInventory("RevenantLauncherSelected",1,2)
		TNT1 A 0 A_Jump(256,2)
		TNT1 A 0 A_GunFlash("GrenadeFlash")
		TNT1 A 0 A_ChangeFLag("NOPAIN",1)
		TNT1 A 0 A_ChangeFLag("PUSHABLE",0)
		TNT1 A 0 A_Stop
		TNT1 A 0 SetPlayerProperty(0,1,4)
		TNT1 A 0 A_Takeinventory("Kicking",1)
		TNT1 A 0 A_Takeinventory("ExecuteDownedEnemy",1)
		TNT1 A 0 A_JumpIfInventory("IsFloating",1,"ExecuteAirStomp")
		TNT1 A 0 A_JumpIfInventory("ExecuteBashWall",1,"BashWall")
		TNT1 A 0 A_JumpIfInventory("ExecuteStompWall",1,"StompWall")	
		TNT1 A 0 A_GunFlash("GrenadeFlash")
		TNT1 AAAAA 1 A_SetPitch(70)
		TNT1 A 0 A_Jump(256,"Execution1","Execution2")
		Goto Execution1
	
	Stompwall:
		TNT1 A 0 A_Stop
		//TTNT1 A 0 A_JumpIfInventory("IsFloating",1,"ExecuteAirStomp")
		TNT1 A 0 A_SetPitch(10)
		TNT1 A 0 A_Recoil(-1)
		KICK JKLMN 1 A_Recoil(-1)
		RIFF A 0 A_FireCustomMissile("ExecutionAttackStompWall",0,0,0,-7)		
		KICK OOO 2  A_Recoil(-1)
		TNT1 A 0 A_Takeinventory("Kicking",1)
		KICK PQRST 1		
		TNT1 A 0 A_Takeinventory("ExecuteStompWall",1)
		TNT1 A 0 A_Takeinventory("ExecuteBashWall",1)
		TNT1 A 5
		Goto FinishExecution+8
			
	Bashwall:
		TNT1 A 0
		//TTNT1 A 0 A_JumpIfInventory("IsFloating",1,"ExecuteAirStomp")
		TNT1 A 0 A_PlaySound("imp/pain",4)
		TNT1 A 0 A_SetPitch(10)
		TNT1 A 0 A_ZoomFactor(1.3)
		IEHW A 2
		TNT1 A 0 A_ZoomFactor(1.0)
		IEHW A 8
		IEHW AAA 1 A_SetAngle(angle+6)
		IEHW BCDEF 1 A_SetAngle(angle+6)
		IEHW G 3
		TNT1 AA 0 A_CustomMissile("XDeath1",48,0,45,2)
		TNT1 A 0 A_PlaySound("imp/pain",4)
		TNT1 A 0 A_CustomMissile("KickAttack",48,0,45,2)		
		IEHW HIJKKK 1 A_SetAngle(angle-3)
		IEHW KKKJIH 1 A_SetAngle(angle+3)
		IEHW FG 3
		TNT1 AA 0 A_CustomMissile("XDeath1",48,0,45,2)
		TNT1 A 0 A_PlaySound("imp/pain",4)
		TNT1 A 0 A_CustomMissile("KickAttack",48,0,45,2)		
		IEHW HIJKKK 1 A_SetAngle(angle-3)
		IEHW KKKJIH 1 A_SetAngle(angle+3)
		IEHW FG 3
		TNT1 AA 0 A_CustomMissile("XDeath1",48,0,45,2)
		TNT1 A 0 A_PlaySound("imp/pain",4)
		TNT1 A 0 A_CustomMissile("KickAttack",48,0,45,2)		
		IEHW HIJKKK 1 A_SetAngle(angle-3)
		IEHW KKKJIH 1 A_SetAngle(angle+3)
		TNT1 AA 0 A_CustomMissile("XDeath1",48,0,45,2)
		TNT1 A 0 A_CustomMissile("ImpHeadExplode",48,0,45,2)
		TNT1 A 0 A_CustomMissile("XDeath2",48,0,45,2)
		TNT1 AAA 0 A_CustomMissile("KickAttack",48,0,45,2)
		IEHW LMNO 1
		IEHW O 6
		IEHW PQRST 2 A_SetAngle(angle-4)
		TNT1 A 0 A_SpawnItem("GrowingBloodPool")
		TNT1 A 0 A_SpawnItem("DeadImp_NoHead")
		TNT1 AAA 1 A_SetAngle(angle-3)		
		KICK A 0 A_Takeinventory("Kicking",1)
		KICK A 0 A_Takeinventory("ExecuteBashWall",1)
		KICK A 0 A_Takeinventory("ExecuteStompWall",1)		
		TNT1 A 5
		Goto FinishExecution+8	
		
	ExecuteAirStomp:
		TNT1 A 0
		TNT1 A 0 A_Stop
		TNT1 A 0 A_GiveInventory("IsExecutingOnAir",1)
		TNT1 A 0 ThrustThingZ(0,10,0,1)
		STOM ABCCCCC 1 A_SetPitch(80)
		STOM CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 1 A_CheckFloor("DoAirStomp")
	DoAirStomp:
		RIFF AAA 0 A_FireCustomMissile("ExecutionAttackKick",0,0,0,0)
		STOM D 5
		TNT1 A 0 ThrustThingZ(0,20,1,1)
		TNT1 A 0 A_TakeInventory("IsExecutingOnAir",1)
		TNT1 A 0 A_Takeinventory("ExecuteStompWall",1)
		TNT1 A 0 A_Takeinventory("ExecuteBashWall",1)
		Goto FinishExecution
		
	Execution1:	
		KICK BCD 1
		//TTNT1 A 0 A_JumpIfInventory("IsFloating",1,"ExecuteAirStomp")
		RIFF A 0 A_FireCustomMissile("ExecutionAttackKick",0,0,0,-7)
		KICK H 5
		KICK A 0 A_Takeinventory("Kicking",1)
		KICK I 1
		KICK GFEDCBA 1
		TNT1 A 5
		Goto FinishExecution
		
	Execution2:
		TNT1 A 0
		TNT1 A 0 A_ZoomFactor(1.2)
		//TTNT1 A 0 A_JumpIfInventory("IsFloating",1,"ExecuteAirStomp")
		PONG B 1 A_Stop
		PONG C 1 A_PlaySound("skeleton/swing")
		PONG D 1 A_FireCustomMissile("ExecutionAttackMelee",0,0,0,0)
		PONG E 3 A_Stop
		PONG DCB 2 A_Stop
		PUN3 A 1 A_Stop
		PUN3 B 1 A_PlaySound("skeleton/swing")
		PUN3 C 1 A_FireCustomMissile("ExecutionAttackMelee",0,0,0,0)
		PUN3 E 3 A_Stop
		PUN3 CBA 2 A_Stop		
		PONG B 1 A_Stop
		PONG C 1 A_PlaySound("skeleton/swing")
		PONG D 1 A_FireCustomMissile("ExecutionAttackMelee",0,0,0,0)
		PONG E 3 A_Stop
		PONG DCB 2 A_Stop
		PUN3 A 1 A_Stop
		PUN3 B 1 A_PlaySound("skeleton/swing")
		PUN3 C 1 A_FireCustomMissile("ExecutionAttackMelee",0,0,0,0)
		PUN3 E 3 A_Stop
		PUN3 CBA 2 A_Stop		
		PONG B 1 A_Stop
		PONG C 1 A_PlaySound("skeleton/swing")
		PONG D 1 A_FireCustomMissile("ExecutionAttackMelee",0,0,0,0)
		PONG E 3 A_Stop
		PONG DCB 2 A_Stop		
		TNT1 A 1
		PUN3 A 1 A_Stop
		PUN3 B 1 A_PlaySound("skeleton/swing")
		PUN3 C 1 
		TNT1 AAA 0 A_FireCustomMissile("ExecutionAttackKick",0,0,0,0)
		PUN3 E 6 A_Stop
		PUN3 CBA 2 A_Stop
		TNT1 A 0 A_ZoomFactor(1.0)		
		TNT1 A 5
		Goto FinishExecution		
		
	Execution3:		
		KIKF ABC 1
		//TTNT1 A 0 A_JumpIfInventory("IsFloating",1,"ExecuteAirStomp")
		TNT1 A 0 A_PlaySound("KICK")
		KIKF D 1
		TNT1 AAA 0 A_FireCustomMissile("ExecutionAttackFatality",0,0,0,0)
		KIKF DDDDDDD 1 A_SetPitch(Pitch-10)
		KIKF ECBA 2
		TNT1 A 0 SetPlayerProperty(0,0,4)
		TNT1 A 0 A_ChangeFLag("NOPAIN",0)
		TNT1 A 0 A_ChangeFLag("PUSHABLE",1)
		TNT1 A 5 
		TNT1 A 0 A_Takeinventory("ExecuteDownedEnemy",1)
		TNT1 A 0 A_Jump(256,"Ready2")
		Goto Ready2
		
	FinishExecution:
		TNT1 A 0
		TNT1 AAAAAAA 1 A_SetPitch(Pitch-10)
		TNT1 A 0 A_ChangeFLag("NOPAIN",0)
		TNT1 A 0 A_ChangeFLag("PUSHABLE",1)
		TNT1 A 0 SetPlayerProperty(0,0,4)
		TNT1 A 0 A_Takeinventory("ExecuteDownedEnemy",1)
		TNT1 A 0 A_Jump(256,"Ready1")
		Goto Ready1


// --------------------------------------------------------------------------
//
//	Fidget spinner
//
// --------------------------------------------------------------------------

	PlayerIsIdle:
		TNT1 A 0 A_StopSound(1)
		TNT1 A 0 A_StopSound(5)
		TNT1 A 0 A_Gunflash("FidgetSpinSelect")

	IdleLoop:
		TNT1 A 1 A_JumpIfInventory("IdleCounter",200,2)
		TNT1 A 0 A_Jump(256,"PlayerIsBack")
		TNT1 A 1
		Loop

	PlayerIsBack:
		TNT1 A 0 A_Gunflash("FidgetSpinDeselect")
		TNT1 A 15
		Goto Select

	FidgetSpinSelect:
		SPIN ONMLKJI 1
		
	FidgetSpinStart:
		SPIN A 15
		TNT1 A 0 A_Jump(64,"FidgetSpin1","FidgetSpin2","FidgetSpin3")
		Loop
		
	FidgetSpin1:
		SPIN AEBFCGDHEAFBGCHDAEBFCGDHEAFBGCHD 1
		SPIN AEBFCGDHEAFBGCHDAEBFCGDHEAFBGCHD 1
		SPIN AEBFCGDHEAFBGCHDAEBFCGDHEAFBGCHD 1
		SPIN AEBFCGDHEAFBGCHDAEBFCGDHEAFBGCHD 1
		SPIN AEBFCGDHEAFBGCHDAEBFCGDHEAFBGCHD 1
		SPIN AEBFCGDHEAFBGCHDAEBFCGDHEAFBGCHD 1
		SPIN AEBFCGDHEAFBGCHDAEBFCGDHEAFBGCHD 1
		
		SPIN ADGBEHCFADGBEHCFADGBEHCFADGBEHCF 1
		SPIN ACEGBDFHCEGADFHBEGACFHBDGACEHBDF 1
		SPIN ABDEGHBCEFHACDFGABDEGHBCEFHACDFG 1
		SPIN ABCDEFGHABCDEFGHABCDEFGHABCDEFGHABCDEFGHABCDEFGH 1
		SPIN ABCDEFGHABCDEFGHABCDEFGHABCDEFGHABCDEFGHABCDEFGH 2
		SPIN AABBBCCCCDDDDDEEEEEEFFFFFFFGGGGGGGGHHHHHHHHH 1
		Goto FidgetSpinStart
	FidgetSpin2:
		SPIN AEBFCGDHEAFBGCHDAEBFCGDHEAFBGCHD 1
		SPIN AEBFCGDHEAFBGCHDAEBFCGDHEAFBGCHD 1
		SPIN AEBFCGDHEAFBGCHDAEBFCGDHEAFBGCHD 1
		SPIN AEBFCGDHEAFBGCHDAEBFCGDHEAFBGCHD 1
		SPIN AEBFCGDHEAFBGCHDAEBFCGDHEAFBGCHD 1
		TNT1 A 0 A_Jump(32,"FidgetSpinStart")
		SPIN AEBFCGDHEAFBGCHDAEBFCGDHEAFBGCHD 1
		TNT1 A 0 A_Jump(36,"FidgetSpinStart")
		SPIN AEBFCGDHEAFBGCHDAEBFCGDHEAFBGCHD 1
		TNT1 A 0 A_Jump(42,"FidgetSpinStart")
		SPIN ADGBEHCFADGBEHCFADGBEHCFADGBEHCF 1
		TNT1 A 0 A_Jump(51,"FidgetSpinStart")
		SPIN ACEGBDFHCEGADFHBEGACFHBDGACEHBDF 1
		TNT1 A 0 A_Jump(64,"FidgetSpinStart")
		SPIN ABDEGHBCEFHACDFGABDEGHBCEFHACDFG 1
		TNT1 A 0 A_Jump(85,"FidgetSpinStart")
		SPIN ABCDEFGHABCDEFGHABCDEFGHABCDEFGHABCDEFGHABCDEFGH 1
		TNT1 A 0 A_Jump(128,"FidgetSpinStart")
		SPIN ABCDEFGHABCDEFGHABCDEFGHABCDEFGHABCDEFGHABCDEFGH 2
		Goto FidgetSpinStart
	FidgetSpin3:
		SPIN DHCGBFAEHDGCFBEADHCGBFAEHDGCFBEA 1
		SPIN DHCGBFAEHDGCFBEADHCGBFAEHDGCFBEA 1
		SPIN DHCGBFAEHDGCFBEADHCGBFAEHDGCFBEA 1
		SPIN DHCGBFAEHDGCFBEADHCGBFAEHDGCFBEA 1
		SPIN DHCGBFAEHDGCFBEADHCGBFAEHDGCFBEA 1
		SPIN DHCGBFAEHDGCFBEADHCGBFAEHDGCFBEA 1
		SPIN DHCGBFAEHDGCFBEADHCGBFAEHDGCFBEA 1
		
		SPIN FCHEBGDAFCHEBGDAFCHEBGDAFCHEBGDA 1
		SPIN FDBHECAGDBHFCAGEBHFDAGECHFDBGECA 1
		SPIN GFDCAHFECBHGEDBAGFDCAHFECBHGEDBA 1
		SPIN HGFEDCBAHGFEDCBAHGFEDCBAHGFEDCBAHGFEDCBAHGFEDCBA 1
		SPIN HGFEDCBAHGFEDCBAHGFEDCBAHGFEDCBAHGFEDCBAHGFEDCB 2
		SPIN AAHHHGGGGFFFFFEEEEEEDDDDDDDCCCCCCCCBBBBBBBBBB 1
		Goto FidgetSpinStart
	FidgetSpinDeselect:
		SPIN A 5
		SPIN IJKLMNO 1
		TNT1 A 5
		Stop
	}
}
