ACTOR GenericToken : Inventory { Inventory.MaxAmount 1 }
ACTOR GenericCounter : Inventory { Inventory.MaxAmount 99999 }

ACTOR MenuWheelActive : GenericToken {}

//Spells

ACTOR FirebreathActive : GenericToken {+UNDROPPABLE}
ACTOR MeteorFistActive : GenericToken {}
ACTOR SkullfireActive : GenericToken {}
ACTOR FlamewaveActive : GenericToken {}
ACTOR FrostbiteActive : GenericToken {}
ACTOR ChillgraspActive : GenericToken {}
ACTOR SkypunchActive : GenericToken {}
ACTOR GumpopActive : GenericToken {}
ACTOR CrowsActive : GenericToken {}
ACTOR ThunderActive : GenericToken {}
ACTOR BreathActive : GenericToken {}
ACTOR CorpseActive : GenericToken {}
ACTOR ThreadcutterActive : GenericToken {}
ACTOR AnnihilationActive : GenericToken {}
ACTOR SheepshieldActive : GenericToken {}
ACTOR SpiritcannonActive : GenericToken {}
ACTOR DarkvoidActive : GenericToken {}
ACTOR PrismActive : GenericToken {}

//Stratocasters
ACTOR LonghornStratActive : GenericToken {}
ACTOR StruckerStratActive : GenericToken {}
ACTOR IronblastStratActive : GenericToken {}
ACTOR PulverizerStratActive : GenericToken {}
ACTOR MatriarchStratActive : GenericToken {}
ACTOR CauterizerStratActive : GenericToken {}
ACTOR "Old DreadfulStratActive" : GenericToken {}
ACTOR DynamiteStratActive : GenericToken {}

ACTOR GunzerkActive : GenericToken {}
ACTOR LeftFireToken : GenericToken {}
ACTOR RightFireToken : GenericToken {}
ACTOR NoInterruption : GenericToken {}
ACTOR AltModeEnabled : GenericToken {}

ACTOR DergfistSelect : GenericToken {}
ACTOR LonghornSelect : GenericToken {}
ACTOR StruckerSelect : GenericToken {}
ACTOR IronblastSelect : GenericToken {}
ACTOR PulverizerSelect : GenericToken {}
ACTOR MatriarchSelect : GenericToken {}
ACTOR SovereignSelect : GenericToken {}
ACTOR CauterizerSelect : GenericToken {}
ACTOR DreadfulSelect : GenericToken {}
ACTOR DynamiteSelect : GenericToken {}
ACTOR BerserkSelect : GenericToken {}

ACTOR KickethFirstContact : GenericToken {}
ACTOR KickethThyHappend : GenericToken {}
ACTOR MeteorfistConnected : GenericToken {}

ACTOR BreathLooplet : Inventory { Inventory.MaxAmount 8 }
ACTOR ThreadLooplet : Inventory { Inventory.MaxAmount 10 }
ACTOR SanctumTrigger : GenericToken { Inventory.InterHubAmount 1 }
ACTOR SanctumEngaged : GenericToken { Inventory.InterHubAmount 1 }
ACTOR StormTrigger : GenericToken {}
ACTOR StormEngaged : GenericToken {}

ACTOR HammerSpaceCounter : GenericCounter { +INVENTORY.UNDROPPABLE }

ACTOR GameStarted : GenericToken {}
ACTOR StartTeleportInProgress : GenericToken {}
ACTOR ExtremeSphereInEffect : GenericToken {}

//Alt-Mode 'n Stuff...
actor AltModeItem : CustomInventory
{
    Inventory.Amount 1
	Inventory.MaxAmount 1
	+UNDROPPABLE
    -INVBAR
	states
	{
	Use:
		TNT1 A 0 A_JumpIfInventory("DergfistSelected",1,"DergfistStuff")
		TNT1 A 0 A_JumpIfInventory("LonghornSelected",1,"LonghornStuff")
		TNT1 A 0 A_JumpIfInventory("StruckerSelected",1,"StruckerStuff")
		TNT1 A 0 A_JumpIfInventory("IronblastSelected",1,"IronblastStuff")
		TNT1 A 0 A_JumpIfInventory("PulverizerSelected",1,"PulverizerStuff")
		TNT1 A 0 A_JumpIfInventory("MatriarchSelected",1,"MatriarchStuff")
		TNT1 A 0 A_JumpIfInventory("SovereignSelected",1,"SovereignStuff")
		TNT1 A 0 A_JumpIfInventory("CauterizerSelected",1,"CauterizerStuff")
		TNT1 A 0 A_JumpIfInventory("DreadfulSelected",1,"DreadfulStuff")
		TNT1 A 0 A_JumpIfInventory("DynamiteSelected",1,"DynamiteStuff")
		TNT1 A 1
		Fail
	DergfistStuff:
		TNT1 A 0 A_JumpIfInventory("PowerBerserkDamage",1,"ZerkStuff")
		TNT1 A 0 A_GiveInventory("DergfistSelect")
		TNT1 A 0 A_GiveInventory("AltModeFists")
		TNT1 A 0 A_SelectWeapon("AltModeFists")
		Fail
	ZerkStuff:
		TNT1 A 0 A_GiveInventory("DergfistSelect")
		TNT1 A 0 A_GiveInventory("BerserkSelect")
		TNT1 A 0 A_GiveInventory("AltModeFists")
		TNT1 A 0 A_SelectWeapon("AltModeFists")
		Fail
	LonghornStuff:
		TNT1 A 1 A_GiveInventory("LonghornSelect")
		TNT1 A 0 A_GiveInventory("AltModeFists")
		TNT1 A 0 A_SelectWeapon("AltModeFists")
		Fail
	StruckerStuff:
		TNT1 A 1 A_GiveInventory("StruckerSelect")
		TNT1 A 0 A_GiveInventory("AltModeFists")
		TNT1 A 0 A_SelectWeapon("AltModeFists")
		Fail
	IronblastStuff:
		TNT1 A 1 A_GiveInventory("IronblastSelect")
		TNT1 A 0 A_GiveInventory("AltModeFists")
		TNT1 A 0 A_SelectWeapon("AltModeFists")
		Fail
	PulverizerStuff:
		TNT1 A 1 A_GiveInventory("PulverizerSelect")
		TNT1 A 0 A_GiveInventory("AltModeFists")
		TNT1 A 0 A_SelectWeapon("AltModeFists")
		Fail
	MatriarchStuff:
		TNT1 A 1 A_GiveInventory("MatriarchSelect")
		TNT1 A 0 A_GiveInventory("AltModeFists")
		TNT1 A 0 A_SelectWeapon("AltModeFists")
		Fail
	SovereignStuff:
		TNT1 A 1 A_GiveInventory("SovereignSelect")
		TNT1 A 0 A_GiveInventory("AltModeFists")
		TNT1 A 0 A_SelectWeapon("AltModeFists")
		Fail
	CauterizerStuff:
		TNT1 A 1 A_GiveInventory("CauterizerSelect")
		TNT1 A 0 A_GiveInventory("AltModeFists")
		TNT1 A 0 A_SelectWeapon("AltModeFists")
		Fail
	DreadfulStuff:
		TNT1 A 1 A_GiveInventory("DreadfulSelect")
		TNT1 A 0 A_GiveInventory("AltModeFists")
		TNT1 A 0 A_SelectWeapon("AltModeFists")
		Fail
	DynamiteStuff:
		TNT1 A 1 A_GiveInventory("DynamiteSelect")
		TNT1 A 0 A_GiveInventory("AltModeFists")
		TNT1 A 0 A_SelectWeapon("AltModeFists")
		Fail
	}
}

ACTOR AltModeFists : Weapon
{
	+CHEATNOTWEAPON
	Weapon.SelectionOrder 999
	States
	{
	Spawn:
		TNT1 A 0
	Select:
		TNT1 AAAAAAAAAAAAAAA 0 A_Raise
		Goto Ready
	Ready:
		TNT1 A 0 A_JumpIfInventory("DergfistSelect",1,"DergfistStuff")
		TNT1 A 0 A_JumpIfInventory("LonghornSelect",1,"LonghornStuff")
		TNT1 A 0 A_JumpIfInventory("StruckerSelect",1,"StruckerStuff")
		TNT1 A 0 A_JumpIfInventory("IronblastSelect",1,"IronblastStuff")
		TNT1 A 0 A_JumpIfInventory("PulverizerSelect",1,"PulverizerStuff")
		TNT1 A 0 A_JumpIfInventory("MatriarchSelect",1,"MatriarchStuff")
		TNT1 A 0 A_JumpIfInventory("SovereignSelect",1,"SovereignStuff")
		TNT1 A 0 A_JumpIfInventory("CauterizerSelect",1,"CauterizerStuff")
		TNT1 A 0 A_JumpIfInventory("DreadfulSelect",1,"DreadfulStuff")
		TNT1 A 0 A_JumpIfInventory("DynamiteSelect",1,"DynamiteStuff")
		TNT1 A 1 //A_TakeInventory("AltModeFists")
		Goto BishopCheck
	DergfistStuff:
		TNT1 A 1 A_TakeInventory("DergfistSelect")
		TNT1 A 1 A_SelectWeapon("Dergfist")
		TNT1 A 1 //A_TakeInventory("AltModeFists")
		Goto BishopCheck
	LonghornStuff:
		TNT1 A 0 A_TakeInventory("LonghornSelect")
		TNT1 A 0 A_JumpIfInventory("HexenCounter",1,3)
		TNT1 A 0 A_SelectWeapon("Longhorn")
		TNT1 A 0 A_Jump(256,2)
		TNT1 A 0 A_SelectWeapon("Longhorn2")
		TNT1 A 1 //A_TakeInventory("AltModeFists")
		Goto BishopCheck
	StruckerStuff:
		TNT1 A 0 A_TakeInventory("StruckerSelect")
		TNT1 A 0 A_JumpIfInventory("HexenCounter",1,3)
		TNT1 A 0 A_SelectWeapon("Strucker")
		TNT1 A 0 A_Jump(256,2)
		TNT1 A 0 A_SelectWeapon("Strucker2")
		TNT1 A 1 //A_TakeInventory("AltModeFists")
		Goto BishopCheck
	IronblastStuff:
		TNT1 A 0 A_TakeInventory("IronblastSelect")
		TNT1 A 0 A_JumpIfInventory("HexenCounter",1,3)
		TNT1 A 0 A_SelectWeapon("Ironblast")
		TNT1 A 0 A_Jump(256,2)
		TNT1 A 0 A_SelectWeapon("Ironblast2")
		TNT1 A 1 //A_TakeInventory("AltModeFists")
		Goto BishopCheck
	PulverizerStuff:
		TNT1 A 0 A_TakeInventory("PulverizerSelect")
		TNT1 A 0 A_JumpIfInventory("HexenCounter",1,3)
		TNT1 A 0 A_SelectWeapon("Pulverizer")
		TNT1 A 0 A_Jump(256,2)
		TNT1 A 0 A_SelectWeapon("Pulverizer2")
		TNT1 A 1 //A_TakeInventory("AltModeFists")
		Goto BishopCheck
	MatriarchStuff:
		TNT1 A 0 A_TakeInventory("MatriarchSelect")
		TNT1 A 0 A_JumpIfInventory("HexenCounter",1,3)
		TNT1 A 0 A_SelectWeapon("Matriarch")
		TNT1 A 0 A_Jump(256,2)
		TNT1 A 0 A_SelectWeapon("Matriarch2")
		TNT1 A 1 //A_TakeInventory("AltModeFists")
		Goto BishopCheck
	SovereignStuff:
		TNT1 A 0 A_TakeInventory("SovereignSelect")
		TNT1 A 0 A_JumpIfInventory("HexenCounter",1,3)
		TNT1 A 0 A_SelectWeapon("Sovereign")
		TNT1 A 0 A_Jump(256,2)
		TNT1 A 0 A_SelectWeapon("Sovereign2")
		TNT1 A 1 //A_TakeInventory("AltModeFists")
		Goto BishopCheck
	CauterizerStuff:
		TNT1 A 1 A_TakeInventory("CauterizerSelect")
		TNT1 A 0 A_JumpIfInventory("HexenCounter",1,3)
		TNT1 A 1 A_SelectWeapon("Cauterizer")
		TNT1 A 0 A_Jump(256,2)
		TNT1 A 1 A_SelectWeapon("Cauterizer2")
		TNT1 A 1 //A_TakeInventory("AltModeFists")
		Goto BishopCheck
	DreadfulStuff:
		TNT1 A 0 A_TakeInventory("DreadfulSelect")
		TNT1 A 0 A_JumpIfInventory("HexenCounter",1,3)
		TNT1 A 0 A_SelectWeapon("Old Dreadful")
		TNT1 A 0 A_Jump(256,2)
		TNT1 A 0 A_SelectWeapon("Old Dreadful2")
		TNT1 A 1 //A_TakeInventory("AltModeFists")
		Goto BishopCheck
	DynamiteStuff:
		TNT1 A 0 A_TakeInventory("DynamiteSelect")
		TNT1 A 0 A_SelectWeapon("DynamiteWeapon")
		TNT1 A 1 //A_TakeInventory("AltModeFists")
		Goto BishopCheck
	BishopCheck:
		TNT1 A 0 A_JumpIfInventory("PowerSuitToken",1,"BishopAltModeEnable")
	AltModeEnable:
		SUKU A 0 A_JumpIfInventory("PowerSuitProtect",1,2)
		KNKU A 0
		"####" A 0 A_JumpIfInventory("PowerMidasMode",1,"MidasAltModeEnable")
		"####" A 0 A_JumpIfInventory("AltModeEnabled",1,"AltModeDisable")
		"####" A 0 A_Jump(192,2)
		"####" A 0 A_PlaySound("Guncaster/Laugh",2,0.7)
		"####" A 0 A_GiveInventory("AltModeEnabled")
		"####" A 0 A_Print("Alternate Spell Mode Enabled.")
		"####" A 0 A_JumpIfInventory("BerserkSelect",1,"Deselect")
		"####" ABCDEFG 1
		"####" A 0 A_PlaySound("Melee/Crack",5,0.3)
		SUKN A 0 A_JumpIfInventory("PowerSuitProtect",1,2)
		KNKN A 0		
		"####" ABCDCBA 2
		SUKU A 0 A_JumpIfInventory("PowerSuitProtect",1,2)
		KNKU A 0
		"####" GFEDCBA 1
		Goto Deselect
	AltModeDisable:
		SUKU A 0 A_JumpIfInventory("PowerSuitProtect",1,2)
		KNKU A 0
		"####" A 0 A_Print("Alternate Spell Mode Disabled.")
		"####" A 0 A_TakeInventory("AltModeEnabled")
		"####" A 0 A_JumpIfInventory("BerserkSelect",1,"Deselect")
		"####" ABCDEFG 1
		"####" A 0 A_PlaySound("Melee/Crack",5,0.3)
		SUKN A 0 A_JumpIfInventory("PowerSuitProtect",1,2)
		KNKN A 0		
		"####" ABCDCBA 2
		SUKU A 0 A_JumpIfInventory("PowerSuitProtect",1,2)
		KNKU A 0
		"####" GFEDCBA 1
		Goto Deselect
	MidasAltModeEnable:
		SUKU A 0 A_JumpIfInventory("PowerSuitProtect",1,2)
		MNKU A 0
		"####" A 0 A_JumpIfInventory("AltModeEnabled",1,"MidasAltModeDisable")
		"####" A 0 A_Jump(192,2)
		"####" A 0 A_PlaySound("Guncaster/Laugh",2,0.7)
		"####" A 0 A_Print("Alternate Spell Mode Enabled.")
		"####" A 0 A_GiveInventory("AltModeEnabled")
		"####" A 0 A_JumpIfInventory("BerserkSelect",1,"Deselect")
		"####" ABCDEFG 1
		"####" A 0 A_PlaySound("Melee/Crack",5,0.3)
		SUKN A 0 A_JumpIfInventory("PowerSuitProtect",1,2)
		MNKN A 0
		"####" ABCDCBA 2
		SUKU A 0 A_JumpIfInventory("PowerSuitProtect",1,2)
		MNKU A 0
		"####" GFEDCBA 1
		Goto Deselect
	MidasAltModeDisable:
		SUKU A 0 A_JumpIfInventory("PowerSuitProtect",1,2)
		MNKU A 0
		"####" A 0 A_Print("Alternate Spell Mode Disabled.")
		"####" A 0 A_TakeInventory("AltModeEnabled")
		"####" A 0 A_JumpIfInventory("BerserkSelect",1,"Deselect")
		"####" ABCDEFG 1
		"####" A 0 A_PlaySound("Melee/Crack",5,0.3)
		SUKN A 0 A_JumpIfInventory("PowerSuitProtect",1,2)
		MNKN A 0
		"####" ABCDCBA 2
		SUKU A 0 A_JumpIfInventory("PowerSuitProtect",1,2)
		MNKU A 0
		"####" GFEDCBA 1
		Goto Deselect
	BishopAltModeEnable:
		CBPU A 0 A_JumpIfInventory("AltModeEnabled",1,"BishopAltModeDisable")
		CBPU A 0 A_Jump(192,2)
		CBPU A 0 A_PlaySound("Guncaster/Laugh",2,0.7)
		CBPU A 0 A_Print("Alternate Spell Mode Enabled.")
		CBPU A 0 A_GiveInventory("AltModeEnabled")
		CBPU A 0 A_JumpIfInventory("PunchCannonMode",1,2)
		CBPU A 0 A_JumpIfInventory("BerserkSelect",1,"Deselect")
		CBPU ABCDEFG 1
		CBPU A 0 A_PlaySound("Bishop/Move",6,0.3)
		CBPU A 0 A_PlaySound("Melee/Crack",5,0.3)
		CYKN ABCDCBA 2
		CBPU GFEDCBA 1
		Goto Deselect
	BishopAltModeDisable:
		CBPU A 0 A_Print("Alternate Spell Mode Disabled.")
		CBPU A 0 A_TakeInventory("AltModeEnabled")
		CBPU A 0 A_JumpIfInventory("PunchCannonMode",1,2)
		CBPU A 0 A_JumpIfInventory("BerserkSelect",1,"Deselect")
		CBPU ABCDEFG 1
		CBPU A 0 A_PlaySound("Bishop/Move",6,0.3)
		CBPU A 0 A_PlaySound("Melee/Crack",5,0.3)
		CYKN ABCDCBA 2
		CBPU GFEDCBA 1
		Goto Deselect
	Deselect:
		TNT1 A 1 A_TakeInventory("BerserkSelect",1)
		TNT1 A 1 A_TakeInventory("AltModeFists")
		//TNT1 A 0 A_Lower
		TNT1 A 1 A_Lower
		Wait
	Fire:
		TNT1 A 1
		Goto Deselect
	}
}