// --------------------------------------------------------------------------
//
//	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
		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
///////////////////////////////////

	DoKick:
		TNT1 A 0 A_JumpIf (momZ > 0, "AirKick")
		TNT1 A 0 A_JumpIf (momZ < 0, "AirKick")
		TNT1 A 0 A_GunFlash("KickFlash")
		TNT1 A 0 A_JumpIf (pitch > 32, "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 Ready+2
				
	TossGrenade: //25 frames
		TNT1 A 0 A_TakeInventory("TossGrenade", 1)
		TNT1 A 0 A_JumpIfInventory("GrenadeAmmo", 1, 1)
		Goto NoGrenade
		TNT1 A 0 A_GunFlash("GrenadeFlash")
		TNT1 A 8
		GRHO ABC 1
		GRTH ABCD 1
		TNT1 A 0 A_GiveInventory("FiredGrenade", 1)
		TNT1 A 0 A_PlaySound ("GRNPIN")
		GRTH EEFG 1
		TNT1 A 1
		TNT1 A 0 A_PlaySound ("GRNTOSS")
		GRTH HIJ 1
		TNT1 A 0 A_TakeInventory("GrenadeAmmo", 1)
		TNT1 A 0 A_FireCustomMissile("HandGrenade", random(-2,2), 0, 0, 0, 0, 0)
	    TNT1 A 0 A_TakeInventory("FiredGrenade", 1)
		GRTH KLMN 1
		TNT1 A 1 A_TakeInventory("TossGrenade", 1)
		TNT1 A 0 A_Jump(256,"Ready1")
		Goto Ready+2

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

// --------------------------------------------------------------------------
//
//	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
	}
}
