/*

==BLACKJACK BATON (OFFENSIVE STANCE)==
A holdover from a previous sortie, the Blackjack baton
has been augmented and modified over the years to help
suit the Artificer's need for a close combat weapon
for different encounters.

In this stance, the baton is suited for
direct confrontation and bludgeoning targets down.
As before, Arti still snaps out with a quick kick 
for an alternate attack to shove enemies back or
to kick off walls in the air. Though there's a 
brief moment before he can kick again if he lands
a blow.

==COBALT MACE==
Despite the baton being his preferred weapon, he 
can also find a pair of heavy medieval gauntlets
and a hefty mace as a temporary upgrade.
*/


actor BlackJackBaton : weapon
{
	Weapon.SelectionOrder 200
	Inventory.RestrictedTo "Artificer"
	weapon.bobstyle smooth
	weapon.bobrangex 0.1
	weapon.bobrangey 0.6
	weapon.bobspeed 2
	+undroppable
	+noalert
	+cheatnotweapon
	+NOAUTOAIM
	Tag "Blackjack"
	states
	{
	select:
		TNT1 A 0
		TNT1 A 0 a_playsound ("BlackJack/Equip",0)
	draw:
		TNT1 A 0
		TNT1 AAAAAAAAA 0 a_raise
		TNT1 A 1 a_raise
		loop
	Ready:
		TNT1 A 0
		TNT1 A 0 a_jumpifinventory ("GauntletHP",1, "MaceEquip")
		TNT1 A 2 a_weaponready
		BKJU ABCD 2 a_weaponready
		TNT1 A 0 a_playsound ("BlackJack/WooshUp",0)
		BKJU EFGHIJKL 2 a_weaponready
		goto realready
	deselect:
		TNT1 A 0
		TNT1 A 0 a_jumpifhealthlower (1, "deadlower")
		TNT1 A 0 a_jumpifinventory ("GauntletHP",1, "MaceHolster")
		BKJD ABC 2
		TNT1 A 0 a_playsound ("BlackJack/WooshDown",0)
		BKJD DE 2
		BKJD F 1
		TNT1 A 0 a_playsound ("BlackJack/Holster",0)
		BKJD GHH 1
		TNT1 A 10
	holster:
		TNT1 A 0
		TNT1 A 1 a_lower
		TNT1 A 0 a_takeinventory ("secretaction", 99)
		TNT1 AAAAAAA 0 a_lower
		loop
	deadlower:
		TNT1 A 0
		TNT1 A 0
		TNT1 AAAAAAAAAAAAA 0 a_lower
		TNT1 A 1 a_lower
		wait	
	RealReady:
		BKJK A 1 a_weaponready
		TNT1 A 0 a_jumpifinventory ("GauntletHP",1, "MaceEquip")
		TNT1 A 0 a_jumpifinventory ("secretaction", 1, "ZharkovFist")
		loop
	
	
	//Attack stuff, this is where it gets messy.
	//The first attack is always a right chop going from the top right
	//to the bottom left
	Fire:
		TNT1 A 0
		TNT1 A 0 a_jumpifinventory ("GauntletHP",1, "MaceAttack")
		TNT1 A 0 a_jumpifinventory ("ZharkyFist",1,"throwfist")

		TNT1 A 0 a_jumpifinventory ("SwungBatonLeft",1,"RightChoice")
		TNT1 A 0 a_jumpifinventory ("SwungBatonRight",1,"LeftChoice")
		BKJK BCDE 1
	RightChop:
		TNT1 A 1
		BKJ1 AA 1
		TNT1 A 0 a_playsound ("BlackJack/Chop",0)
		BKJ1 B 1 a_firecustommissile ("BatonAttack")
		BKJ1 C 1 a_jumpifinventory ("BatonMiss",1,"RightChopMiss")
		TNT1 A 0 a_jumpifinventory ("BatonHit",1,"RightChopHit")
		TNT1 A 0 a_jumpifinventory ("BatonMiss",1,"RightChopMiss")
		BKJ1 D 1
		BKJ1 D 0 a_jumpifinventory ("BatonMiss",1,"RightChopMiss")
		TNT1 A 0 a_jumpifinventory ("BatonHit",1,"RightChopHit")
		TNT1 A 0 a_jumpifinventory ("BatonMiss",1,"RightChopMiss")
		BKJ1 EE 1
		TNT1 A 5
		TNT1 A 0 a_refire ("LeftChoice")
		goto ResetBaton
	RightChopMiss: 
	    BKJ1 C 1
		BJM1 ABCDDEEFGH 1
		TNT1 A 5
		goto ResetBaton
	RightChopHit:
		BKJ1 C 1 offset (-9,37)
		//TNT1 A 0 a_weaponready (WRF_NOFIRE|WRF_NOSWITCH|WRF_NOBOB)
		BKJ1 C 1 offset (11,25)
		TNT1 A 0 a_weaponready (WRF_NOFIRE|WRF_NOSWITCH|WRF_NOBOB)
		BKJ1 C 1 offset (-3,30)
		TNT1 A 0 a_weaponready (WRF_NOFIRE|WRF_NOSWITCH|WRF_NOBOB)
		TNT1 A 0 a_giveinventory ("SwungBatonRight",1)
		BJH1 ABCDEFG 1 a_weaponready
		TNT1 A 5 a_weaponready
		goto ResetBaton
	RightSweep:
		TNT1 A 1
		BKJ3 AA 1
		TNT1 A 0 a_playsound ("BlackJack/Sweep",0)
		BKJ3 B 1 a_firecustommissile ("BatonAttack")
		BKJ3 C 1 a_jumpifinventory ("BatonMiss",1,"RightSweepMiss")
		TNT1 A 0 a_jumpifinventory ("BatonHit",1,"RightSweepHit")
		TNT1 A 0 a_jumpifinventory ("BatonMiss",1,"RightSweepMiss")
		BKJ3 D 1
		TNT1 A 0 a_jumpifinventory ("BatonMiss",1,"RightSweepMiss")
		TNT1 A 0 a_jumpifinventory ("BatonHit",1,"RightSweepHit")
		TNT1 A 0 a_jumpifinventory ("BatonMiss",1,"RightSweepMiss")
		BKJ3 EE 1
		TNT1 A 5
		TNT1 A 0 a_refire ("LeftChoice")
		goto ResetBaton
	RightSweepMiss: 
	    BKJ3 C 1
		BJM3 ABCDDEEFGH 1
		TNT1 A 6
		goto ResetBaton
	RightSweepHit:
		BKJ3 C 1 offset (-9,37)
		//TNT1 A 0 a_weaponready (WRF_NOFIRE|WRF_NOSWITCH|WRF_NOBOB)
		BKJ3 C 1 offset (11,25)
		TNT1 A 0 a_weaponready (WRF_NOFIRE|WRF_NOSWITCH|WRF_NOBOB)
		BKJ3 C 1 offset (-3,30)
		TNT1 A 0 a_weaponready (WRF_NOFIRE|WRF_NOSWITCH|WRF_NOBOB)
		TNT1 A 0 a_giveinventory ("SwungBatonRight",1)
		BJH3 ABCDEFG 1 a_weaponready
		TNT1 A 5 a_weaponready
		goto ResetBaton
	
	


	LeftChop:
		TNT1 A 1
		BKJ2 AA 1
		TNT1 A 0 a_playsound ("BlackJack/Chop",0)
		BKJ2 B 1 a_firecustommissile ("BatonAttack")
		BKJ2 C 1 a_jumpifinventory ("BatonMiss",1,"LeftChopMiss")
		TNT1 A 0 a_jumpifinventory ("BatonHit",1,"LeftChopHit")
		TNT1 A 0 a_jumpifinventory ("BatonMiss",1,"LeftChopMiss")
		BKJ2 D 1
		TNT1 A 0 a_jumpifinventory ("BatonMiss",1,"LeftChopMiss")
		TNT1 A 0 a_jumpifinventory ("BatonHit",1,"LeftChopHit")
		TNT1 A 0 a_jumpifinventory ("BatonMiss",1,"LeftChopMiss")
		BKJ2 EE 1
		TNT1 A 5
		TNT1 A 0 a_refire ("RightChoice")
		goto ResetBaton
	LeftChopMiss:
	    BKJ2 C 1
		BJM2 ABCDDEEFGH 1
		TNT1 A 5
		goto ResetBaton
	LeftChopHit:
		BKJ2 C 1 offset (9,37)
		//TNT1 A 0 a_weaponready (WRF_NOFIRE|WRF_NOSWITCH|WRF_NOBOB)
		BKJ2 C 1 offset (-11,25)
		TNT1 A 0 a_weaponready (WRF_NOFIRE|WRF_NOSWITCH|WRF_NOBOB)
		BKJ2 C 1 offset (3,30)
		TNT1 A 0 a_weaponready (WRF_NOFIRE|WRF_NOSWITCH|WRF_NOBOB)
		TNT1 A 0 a_giveinventory ("SwungBatonLeft",1)
		BJH2 ABCDEFG 1 a_weaponready
		TNT1 A 5 a_weaponready
		goto ResetBaton
	
	LeftSweep:
		TNT1 A 1
		BKJ4 AA 1
		TNT1 A 0 a_playsound ("BlackJack/Sweep",0)
		BKJ4 B 1 a_firecustommissile ("BatonAttack")
		BKJ4 C 1 a_jumpifinventory ("BatonMiss",1,"LeftSweepMiss")
		TNT1 A 0 a_jumpifinventory ("BatonHit",1,"LeftSweepHit")
		TNT1 A 0 a_jumpifinventory ("BatonMiss",1,"LeftSweepMiss")
		BKJ4 D 1
		TNT1 A 0 a_jumpifinventory ("BatonMiss",1,"LeftSweepMiss")
		TNT1 A 0 a_jumpifinventory ("BatonHit",1,"LeftSweepHit")
		TNT1 A 0 a_jumpifinventory ("BatonMiss",1,"LeftSweepMiss")
		BKJ4 EE 1
		TNT1 A 5
		TNT1 A 0 a_refire ("RightChoice")
		goto ResetBaton
	LeftSweepMiss:
	    BKJ4 C 1
		BJM4 ABCDDEEFGH 1
		TNT1 A 5
		goto ResetBaton
	LeftSweepHit:
		BKJ4 C 1 offset (9,37)
		//TNT1 A 0 a_weaponready (WRF_NOFIRE|WRF_NOSWITCH|WRF_NOBOB)
		BKJ4 C 1 offset (-11,25)
		TNT1 A 0 a_weaponready (WRF_NOFIRE|WRF_NOSWITCH|WRF_NOBOB)
		BKJ4 C 1 offset (3,30)
		TNT1 A 0 a_weaponready (WRF_NOFIRE|WRF_NOSWITCH|WRF_NOBOB)
		TNT1 A 0 a_giveinventory ("SwungBatonLeft",1)
		BJH4 ABCDEFG 1 a_weaponready
		TNT1 A 5 a_weaponready
		goto ResetBaton


	//I'm putting these down here cus Iunno where else would make sense
	
	LeftChoice:
		TNT1 A 0
		TNT1 A 1 a_jump (120,"LeftSweep")
		Goto LeftChop
	RightChoice:
		TNT1 A 0
		TNT1 A 1 a_jump (120,"RightSweep")
		Goto RightChop
	
	
	
	
	ResetBaton:
		TNT1 A 0
		TNT1 A 0 a_takeinventory ("SwungBatonLeft",99)
		TNT1 A 0 a_takeinventory ("SwungBatonRight",99)
		TNT1 A 0 a_playsound ("BlackJack/WooshUp",0,0.25)
		BKJR ABC 2
		BKJR DEF 2 a_weaponready
		goto realready



	altfire:
		TNT1 A 0
		TNT1 A 0 a_jumpifinventory ("ZharkyFist",1,"ReplaceFist")
		TNT1 A 0 a_jumpifinventory ("gauntletHP", 1, "gauntletkick")
		TNT1 A 0 a_jumpifinventory ("BootTimer", 1, "NoKick")
		BKJK A 1 a_jumpif(Z <= FloorZ+3,"Kick")
		goto jumpkick
	NoKick:
		BKJK A 1 a_playsound ("Arti/Usefail",0)
		BKJK A 30 a_weaponready (WRF_NOSECONDARY)
		goto realready
	kick:
		RTK1 AAB 2
		TNT1 A 0 a_playsound ("ArtiBoot/Kick",0)
		RTK1 C 2 a_firecustommissile ("KickAttack")
		RTK1 D 3 
		RTK1 EFGH 2
		RTK1 I 3 a_weaponready (WRF_NOSECONDARY)
		TNT1 A 0 a_jumpifinventory ("gauntletHP", 1, "EndGauntletKick")
		goto realready		
	jumpkick:
		TNT1 A 0 
		TNT1 A 0 a_takeinventory ("kickwall", 99)
		TNT1 A 0 a_playsound ("BlackJack/WooshDown",0)
		RTK2 ABC 2
		TNT1 A 0 a_playsound ("ArtiBoot/JumpKick",0)
		RTK2 D 1 a_recoil (-10)
		TNT1 A 0 ThrustThingZ (0, 30, 0, 0)
	kickloop:
	//This is really ugly but I have to do it this way
	//for Zandro compat, the frames are repeated like this
	//to keep the animation from being too fast
		TNT1 A 0 a_jumpifinventory ("kickmonster", 1, "jumpkickhit")
		TNT1 A 0 a_jumpifinventory ("kickwall", 1, "walljump")
		RTK2 E 1 a_firecustommissile ("jumpkicker")
		TNT1 A 0 a_jumpifinventory ("kickmonster", 1, "jumpkickhit")
		TNT1 A 0 a_jumpifinventory ("kickwall", 1, "walljump")
		TNT1 A 0 a_jumpifinventory ("kickmonster", 1, "jumpkickhit")
		TNT1 A 0 A_JumpIf(Abs(VelZ) <= 0.01, "DoubleCheck")


		TNT1 A 0 a_jumpifinventory ("kickmonster", 1, "jumpkickhit")
		TNT1 A 0 a_jumpifinventory ("kickwall", 1, "walljump")
		RTK2 E 1 
		TNT1 A 0 a_jumpifinventory ("kickmonster", 1, "jumpkickhit")
		TNT1 A 0 a_jumpifinventory ("kickwall", 1, "walljump")
		TNT1 A 0 a_jumpifinventory ("kickmonster", 1, "jumpkickhit")
		TNT1 A 0 A_JumpIf(Abs(VelZ) <= 0.01, "DoubleCheck")
		//TNT1 A 0 a_checkfloor ("endkick")

		TNT1 A 0 a_jumpifinventory ("kickmonster", 1, "jumpkickhit")
		TNT1 A 0 a_jumpifinventory ("kickwall", 1, "walljump")
		RTK2 F 1 a_firecustommissile ("jumpkicker")
		TNT1 A 0 a_jumpifinventory ("kickmonster", 1, "jumpkickhit")
		TNT1 A 0 a_jumpifinventory ("kickwall", 1, "walljump")
		TNT1 A 0 a_jumpifinventory ("kickmonster", 1, "jumpkickhit")
		TNT1 A 0 A_JumpIf(Abs(VelZ) <= 0.01, "DoubleCheck")
		//TNT1 A 0 a_checkfloor ("endkick")

		TNT1 A 0 a_jumpifinventory ("kickmonster", 1, "jumpkickhit")
		TNT1 A 0 a_jumpifinventory ("kickwall", 1, "walljump")
		RTK2 F 1
		TNT1 A 0 a_jumpifinventory ("kickmonster", 1, "jumpkickhit")
		TNT1 A 0 a_jumpifinventory ("kickwall", 1, "walljump")
		TNT1 A 0 a_jumpifinventory ("kickmonster", 1, "jumpkickhit")
		TNT1 A 0 A_JumpIf(Abs(VelZ) <= 0.01, "DoubleCheck")
		//TNT1 A 0 a_checkfloor ("endkick")
		loop
		
	DoubleCheck:
		RTK2 E 1
		RTK2 F 1
		TNT1 A 0 A_JumpIf(Abs(VelZ) <= 0.01, "EndKick")
		Goto KickLoop
		
	walljump:
		TNT1 A 0 a_takeinventory ("kickwall", 99)
		RTK2 G 1 a_setangle (40+angle)
		RTK2 H 1 a_setangle (36+angle)
		RTK2 I 1 a_setangle (32+angle)
		RTK2 J 1 a_setangle (22+angle)
		TNT1 A 1 a_setangle (20+angle)
		TNT1 A 0 a_setangle (30+angle)
		TNT1 A 0 a_takeinventory ("kickwall", 99)
		TNT1 A 1 a_stop
		TNT1 A 0 a_recoil (-10)
		TNT1 A 0 thrustthingz (0, 40, 0, 0)
		TNT1 A 0 a_takeinventory ("kickwall", 99)
		goto ready		
	jumpkickhit:
		TNT1 A 0 a_takeinventory ("kickmonster", 99)
		TNT1 A 0 a_stop
		TNT1 A 0 a_recoil (5)
		TNT1 A 0 thrustthingz (0, 35, 0, 1)
		RTK2 GHIJK 2
		TNT1 A 3
		TNT1 A 0 a_takeinventory ("kickmonster", 99)
		goto resetbaton		
	endkick:
		TNT1 A 0 a_takeinventory ("kickwall", 99)
		TNT1 A 0 a_takeinventory ("kickmonster", 99)
		RTK2 GHIJK 2
		TNT1 A 3
		TNT1 A 0 a_jumpifinventory ("gauntletHP", 1, "endgauntletkick")
		goto resetbaton

	
	//Gauntlet stuff goes here
	MaceEquip:	
		TNT1 A 10 a_weaponready
		TNT1 A 0 a_playsound ("BlackJack/Sweep",0)
		CYN1 AABCD 1 a_weaponready
		CYN1 EFGHI 2 a_weaponready
		CYN1 J 2 a_playsound ("CobaltMace/Grab",0)
		CYN1 KLKL 1 a_weaponready
		CYN1 L 6 a_weaponready
		CYN1 MNOPQ 2 a_weaponready
		TNT1 A 3 a_weaponready
		CYN1 RSTUV 2 a_weaponready
		goto MaceReady
	MaceHolster:
		CYN4 AABB 2
		TNT1 A 0 a_playsound ("BlackJack/WooshDown",0)
		CYN4 C 2 
		CYN4 DEFF 1
		CYN4 GH 2
		CYN4 IJKLM 1
		TNT1 A 2
		TNT1 A 0 a_playsound ("BlackJack/Holster",0)
		TNT1 A 10
		goto Holster
	MaceReady:
		CYN2 A 1 a_weaponready
		TNT1 A 0 a_jumpifinventory ("secretaction", 1, "rocketpunchprep")
		TNT1 A 0 a_jumpifinventory ("GauntletHP",1, "MaceReady")
		goto Select
	MaceAttack:
		TNT1 A 0
		TNT1 A 0  a_jumpifinventory ("ZharkyFist",1,"RocketPunch")
		CYN2 BCD 2
		CYN2 E 2
		CYN2 PP 2
	MaceSwing:
		TNT1 A 0
		TNT1 A 0 A_Quake(1, 10, 0, 7,"Silence")
		TNT1 A 0 a_playsound ("CobaltMace/Swing",6)
		CYN2 F 1 a_firecustommissile ("CobaltMaceAttack")
		TNT1 A 0 a_recoil (-1)
		CYN2 G 1 a_jumpifinventory ("BatonMiss",1,"MaceMiss")
		TNT1 A 0 a_jumpifinventory ("BatonHit",1,"MaceHit")
		TNT1 A 0 a_jumpifinventory ("BatonMiss",1,"MaceMiss")
		CYN2 H 1
		TNT1 A 0 a_jumpifinventory ("BatonMiss",1,"MaceMiss")
		TNT1 A 0 a_jumpifinventory ("BatonHit",1,"MaceHit")
		TNT1 A 0 a_jumpifinventory ("BatonMiss",1,"MaceMiss")
		CYN2 IJ 1
		TNT1 A 14
		TNT1 A 0 a_refire ("MaceReSwing")
		CYN1 RSTUV 2 a_weaponready
		goto MaceReady
	MaceReswing:
		CYN2 KLMNOPP 2
		goto MaceSwing
	MaceHit:
		TNT1 A 0
		TNT1 A 0 a_recoil (1)
		TNT1 A 0 a_stopsound (6)
		CYN3 A 1 a_jumpifinventory ("GauntletHP",1, "MaceFollowThrough")
		Goto MaceBreak
	MaceFollowThrough:
		CYN3 ABABA 1
		CYN2 HHIIJJ 1
		TNT1 A 9
		TNT1 A 0 a_refire ("MaceReSwing")
		CYN1 RSTUV 2 a_weaponready
		goto MaceReady
	MaceMiss:
		TNT1 A 0
		TNT1 A 0 a_recoil (4)
		TNT1 A 0 a_stopsound (6)
		TNT1 A 0 A_PlaySound("CobaltMace/Miss", 0,1,0,1)
		CYN3 ABABCDEFGH 2
		TNT1 A 11
		TNT1 A 0 a_refire ("MaceReSwing")
		CYN1 RSTUV 2 a_weaponready
		goto MaceReady
	MaceBreak:
		TNT1 A 0
		TNT1 A 0 a_playsound ("CobaltMace/Break",0)
		TNT1 A 0 a_firecustommissile ("MaceFragmentSpawner")
		MCBK ABCDEFGHIJKLM 2
		TNT1 A 4
		goto select
	GauntletKick:
		TNT1 A 0
		TNT1 A 0 a_jumpifinventory ("BootTimer",1,"NoGauntletKick")
		CYN2 A 1 a_jumpif(Z <= FloorZ+3,"GroundGauntletKick")
		goto GauntletJumpKick
	NoGauntletKick:
		CYN2 A 1 a_playsound ("Arti/Usefail",0)
		CYN2 A 30 a_weaponready (WRF_NOSECONDARY)
		goto MaceReady
	GroundGauntletKick:
		RTK3 AAB 2
		TNT1 A 0 a_playsound ("ArtiBoot/Kick",0)
		RTK3 C 2 a_firecustommissile ("KickAttack")
		RTK3 D 3 
		RTK3 EFGH 2
		RTK3 I 3 a_weaponready (WRF_NOSECONDARY)
		TNT1 A 0 a_jumpifinventory ("gauntletHP", 1, "EndGauntletKick")
		goto Select		
	EndGauntletKick:
		TNT1 A 0
		CYN2 A 2 a_weaponready
		goto MaceReady
	GauntletJumpKick:
		TNT1 A 0 a_takeinventory ("kickwall", 99)
		TNT1 A 0 a_playsound ("BlackJack/WooshDown",0)
		RTK4 ABC 2
		TNT1 A 0 a_playsound ("ArtiBoot/JumpKick",0)
		RTK4 D 1 a_recoil (-10)
		TNT1 A 0 ThrustThingZ (0, 30, 0, 0)
	GauntletKickLoop:
	//This is the Gauntlet Version!

		TNT1 A 0 a_jumpifinventory ("kickmonster", 1, "GauntletJumpKickHit")
		TNT1 A 0 a_jumpifinventory ("kickwall", 1, "GauntletWallJump")
		RTK4 E 1 a_firecustommissile ("jumpkicker")
		TNT1 A 0 a_jumpifinventory ("kickmonster", 1, "GauntletJumpKickHit")
		TNT1 A 0 a_jumpifinventory ("kickwall", 1, "GauntletWallJump")
		TNT1 A 0 a_jumpifinventory ("kickmonster", 1, "GauntletJumpKickHit")
		TNT1 A 0 A_JumpIf(Abs(VelZ) <= 0.01, "GauntletDoubleCheck")

		//TNT1 A 0 a_checkfloor ("GauntletDoubleCheck")

		TNT1 A 0 a_jumpifinventory ("kickmonster", 1, "GauntletJumpKickHit")
		TNT1 A 0 a_jumpifinventory ("kickwall", 1, "GauntletWallJump")
		RTK4 E 1 
		TNT1 A 0 a_jumpifinventory ("kickmonster", 1, "GauntletJumpKickHit")
		TNT1 A 0 a_jumpifinventory ("kickwall", 1, "GauntletWallJump")
		TNT1 A 0 a_jumpifinventory ("kickmonster", 1, "GauntletJumpKickHit")
		TNT1 A 0 A_JumpIf(Abs(VelZ) <= 0.01, "GauntletDoubleCheck")
		//TNT1 A 0 a_checkfloor ("GauntletDoubleCheck")

		TNT1 A 0 a_jumpifinventory ("kickmonster", 1, "GauntletJumpKickHit")
		TNT1 A 0 a_jumpifinventory ("kickwall", 1, "GauntletWallJump")
		RTK4 F 1 a_firecustommissile ("jumpkicker")
		TNT1 A 0 a_jumpifinventory ("kickmonster", 1, "GauntletJumpKickHit")
		TNT1 A 0 a_jumpifinventory ("kickwall", 1, "GauntletWallJump")
		TNT1 A 0 a_jumpifinventory ("kickmonster", 1, "GauntletJumpKickHit")
		TNT1 A 0 A_JumpIf(Abs(VelZ) <= 0.01, "GauntletDoubleCheck")
		//TNT1 A 0 a_checkfloor ("GauntletDoubleCheck")

		TNT1 A 0 a_jumpifinventory ("kickmonster", 1, "GauntletJumpKickHit")
		TNT1 A 0 a_jumpifinventory ("kickwall", 1, "GauntletWallJump")
		RTK4 F 1
		TNT1 A 0 a_jumpifinventory ("kickmonster", 1, "GauntletJumpKickHit")
		TNT1 A 0 a_jumpifinventory ("kickwall", 1, "GauntletWallJump")
		TNT1 A 0 a_jumpifinventory ("kickmonster", 1, "GauntletJumpKickHit")
		TNT1 A 0 A_JumpIf(Abs(VelZ) <= 0.01, "GauntletDoubleCheck")
		//TNT1 A 0 a_checkfloor ("EndGauntletJumpKick")
		loop
	
	GauntletDoubleCheck:
		RTK4 E 1 
		RTK4 F 1 
		TNT1 A 0 A_JumpIf(Abs(VelZ) <= 0.01, "EndGauntletJumpKick")
		
	
	GauntletWallJump:
		TNT1 A 0 a_takeinventory ("kickwall", 99)
		RTK4 G 1 a_setangle (40+angle)
		RTK4 H 1 a_setangle (36+angle)
		RTK4 I 1 a_setangle (32+angle)
		RTK4 J 1 a_setangle (22+angle)
		TNT1 A 1 a_setangle (20+angle)
		TNT1 A 0 a_setangle (30+angle)
		TNT1 A 0 a_takeinventory ("kickwall", 99)
		TNT1 A 1 a_stop
		TNT1 A 0 a_recoil (-10)
		TNT1 A 0 thrustthingz (0, 40, 0, 0)
		TNT1 A 0 a_jumpifinventory ("gauntletHP", 1, "MaceReset")
		goto resetbaton
	GauntletJumpKickHit:
		TNT1 A 0 a_takeinventory ("kickmonster", 99)
		TNT1 A 0 a_stop
		TNT1 A 0 a_recoil (5)
		TNT1 A 0 thrustthingz (0, 35, 0, 1)
		RTK4 GHIJ 2
		TNT1 A 3
		TNT1 A 0 a_takeinventory ("kickmonster", 99)
		TNT1 A 0 a_jumpifinventory ("gauntletHP", 1, "MaceReset")
		goto resetbaton		
	EndGauntletJumpKick:
		TNT1 A 0 a_takeinventory ("kickwall", 99)
		TNT1 A 0 a_takeinventory ("kickmonster", 99)
		RTK4 GHIJ 2
		TNT1 A 3
		TNT1 A 0 a_jumpifinventory ("gauntletHP", 1, "MaceReset")
		goto resetbaton
	MaceReset:
		CYN1 RSTUV 2 a_weaponready
		goto MaceReady
		
		
	
	
	
	

	//The secret easter egg move
	ZharkovFist:
		TNT1 A 0
		TNT1 A 0
		TNT1 A 0 a_jumpifinventory ("gauntletHP", 1, "rocketpunchprep")
		TNT1 A 0 a_takeinventory ("secretaction", 99)
		ZKV1 ABCDE 2
		ZKV1 E 2
		ZKV1 FGH 2
		ZKV1 I 1
		ZKV1 J 6
		ZKV1 K 2 A_PlaySound("gibimpact") 
		ZKV1 LMNOQRST 2	
		TNT1 A 0 a_giveinventory ("ZharkyFist",1)
		TNT1 A 0 a_takeinventory ("secretaction", 99)
		goto ZharkovReady
	ZharkovReady:
		ZKV1 T 1 a_weaponready (WRF_NOSWITCH)
		loop


	Throwfist:
		TNT1 A 0
		TNT1 A 0 a_takeinventory ("ZharkyFist",99)
		TNT1 A 0 a_takeinventory ("secretaction", 99)
		TNT1 A 0 a_jumpifinventory ("gauntletHP", 1, "rocketpunch")
		ZKV2 ABC 2
		TNT1 A 5
		ZKV2 DE 2
		TNT1 A 0 a_playsound ("ZharkyFist",0)
		ZKV2 F 1 A_FireCustomMissile("CAHandyman", 0, 1, 0, 0) 
		ZKV2 GHI 2
		TNT1 A 8
		goto ResetBaton
	ReplaceFist:
		TNT1 A 0
		TNT1 A 0 a_jumpifinventory ("GauntletHP",1,"CancelRocketPunch")
		ZKV3 ABCDEF 2
		ZKV3 F 8
		ZKV3 G 2
		ZKV3 HIJK 2
		TNT1 A 0 a_takeinventory ("ZharkyFist",99)
		TNT1 A 0 a_takeinventory ("secretaction", 99)
		ZKV3 L 1 A_PlaySound("gibsplat")
		ZKV3 MNOPQR 2
		TNT1 A 24
		TNT1 A 0 a_jump (70,"StapleFinish")
		ZKV4 ABCDE 2
		ZKV4 E 8
		ZKV4 F 2
		ZKV4 G 12
		ZKV4 HIJKL 2
		TNT1 A 6
		goto resetbaton
	StapleFinish:
		ZKV5 ABCD 2
		ZKV5 D 15
		ZKV5 EFGH 2
		ZKV5 H 9
		ZKV5 IJKLM 2
		TNT1 A 6
		goto resetbaton

	rocketpunchprep:
		TNT1 A 0
		TNT1 A 0
		TNT1 A 1 a_playsound ("fistswing",0)
		ZKV6 ABCD 2
		ZKV6 D 6
		ZKV6 EFGHi 2
		ZKV6 J 2 a_playsound ("rocketpunch/ready",0)
		ZKV6 KL 2
		TNT1 A 0 a_giveinventory ("ZharkyFist",1)
		TNT1 A 0 a_takeinventory ("secretaction", 99)
		goto rocketpunchready

	Rocketpunchready:
		ZKV6 L 1 a_weaponready (WRF_NOSWITCH|WRF_NOBOB)
		loop

	Rocketpunch:
		ZKV6 M 1 Bright a_firecustomMissile ("rocketfist",0,0,7,3)
		TNT1 A 0 a_takeinventory ("ZharkyFist",99)
		TNT1 A 0 a_takeinventory ("secretaction", 99)
		ZKV6 M 1 A_PlaySound("gibsplat")
		TNT1 A 0 A_PlaySound("gibimpact",0) 
		TNT1 A 0 A_Quake(2, 6, 0, 5)
		TNT1 A 0 a_recoil (15)
		TNT1 A 0 a_takeinventory ("gauntletHP", 10)
		ZKV6 NOP 2 bright 
		ZKV6 Q 6
		ZKV6 RS 2
		TNT1 A 6
		TNT1 A 1 a_jumpifinventory ("GauntletHP",1, "RocketPunchFinish")
		goto Select
	RocketPunchFinish:
		CYN1 RSTUV 2 a_weaponready
		goto MaceReady
	CancelRocketPunch:
		ZKV7 A 1 a_takeinventory ("ZharkyFist",99)
		TNT1 A 0 a_takeinventory ("secretaction", 99)
		ZKV7 BCDE 2 
		TNT1 A 6
		CYN1 RSTUV 2 a_weaponready
		goto MaceReady
	}
}

Actor BatonAttack : fastprojectile
{
	Projectile
	speed 80
	damage (15)
	obituary "%o was walloped by %k's baton."
	-BLOODSPLATTER
	+BLOODLESSIMPACT
	+thruspecies
	+dontblast
	+dontreflect
	species "player"
	height 8
	radius 10
	+noblood
	scale 0.80
	renderstyle add
	alpha 0.85
	+bright
	mass 50000
	states
	{
	Spawn:
		TNT1 A 1
		stop
	Death:
		TNT1 A 0
		TNT1 A 0 
		TNT1 A 0 a_givetotarget ("BatonMiss",1)
		TNT1 A 1 a_givetotarget ("BatonMiss",1)
		TNT1 A 0 A_PlaySound("pipe/wall", CHAN_AUTO)
		TNT1 A 0 A_SpawnDebris("WWStyleBulletSpark")
		TNT1 A 0 radius_quake (2,5,0,8,0)
		//TNT1 A 0 a_givetotarget ("BatonMiss",1)
		TNT1 A 5 
		stop
	Xdeath:
		TNT1 A 0
		TNT1 A 0
		TNT1 A 0 a_givetotarget ("BatonHit",1)
		TNT1 A 1 a_givetotarget ("BatonHit",1)
		TNT1 A 0 A_PlaySound("BlackJack/hit", CHAN_AUTO)
		TNT1 A 0 radius_quake (1,5,0,8,0)
		//TNT1 A 0 a_givetotarget ("BatonHit",1)
		BJHS ABCCDD 1
		TNT1 A 5
		stop
	}
}


Actor CobaltMaceAttack : BatonAttack
{
	+BLOODSPLATTER
	-BLOODLESSIMPACT
	damage (280)
	scale 1.80
	mass 2000
	projectilekickback 700
	alpha 0.95
	states
	{
	Spawn:
		TNT1 A 1
		stop
	Death:
		TNT1 A 0
		TNT1 A 0 
		TNT1 A 0 a_givetotarget ("BatonMiss",1)
		TNT1 A 1 a_givetotarget ("BatonMiss",1)
		TNT1 A 0 A_PlaySound("CobaltMace/Miss", 0,1,0,0.4)
		TNT1 A 0 A_SpawnDebris("WWStyleBulletSpark")
		TNT1 A 0 radius_quake (4,10,0,8,0)
		//TNT1 A 0 a_givetotarget ("BatonMiss",1)
		TNT1 A 5 
		stop
	Xdeath:
		TNT1 A 0
		TNT1 A 0
		TNT1 A 0 a_givetotarget ("BatonHit",1)
		TNT1 A 1 a_givetotarget ("BatonHit",1)
		TNT1 A 0 A_PlaySound("CobaltMace/hit", CHAN_AUTO)
		TNT1 A 0 radius_quake (4,8,0,8,0)
		//TNT1 A 0 a_givetotarget ("BatonHit",1)
		TNT1 A 0 A_takefromtarget ("gauntletHP", 1)   
		MCH1 ABBCCDD 1
		TNT1 A 5
		stop
	}

}

Actor BatonHit : Powerup
{
  Powerup.Duration 5
}

Actor BatonMiss : Powerup
{
  Powerup.Duration 5
}

Actor SwungBatonRight : Powerup
{
  Powerup.Duration 6
}

Actor SwungBatonLeft : Powerup
{
  Powerup.Duration 6
}

actor BootTimer : inventory
{inventory.maxamount 120}


actor KickAttack : fastprojectile
{
	Projectile
	projectilekickback 600
	speed 64
	damage (60)
	obituary "%o was punted by %k's mighty boot."
	-BLOODSPLATTER
	+BLOODLESSIMPACT
	+thruspecies
	+dontblast
	+forcepain
	+dontreflect
	+bright
	species "player"
	height 10
	radius 10
	+noblood
	+NOEXTREMEDEATH
	scale 1.50
	mass 1000000
	states
	{
	Spawn:
		TNT1 AA 1
		stop
	Death:
		TNT1 A 0
		TNT1 A 1
		TNT1 A 0 radius_quake (1,5,0,8,0)
		TNT1 A 0 A_PlaySound("ArtiBoot/WallKick", 0)
		TNT1 A 1 
		stop
	Xdeath:
		TNT1 A 0
		TNT1 A 1
		TNT1 A 0 A_PlaySound("ArtiBoot/KickHit", 0)
		TNT1 A 0 radius_quake (2,3,0,10,0)
		TNT1 A 0 ACS_namedexecutealways ("BootReload")
		TNT1 A 0 a_giveinventory ("BootTimer",120,AAPTR_TARGET)
		TNT1 A 0 A_radiusthrust (12000,50,0)
		MNSP ABCD 1
		TNT1 A 4
		stop
	}
}

actor jumpkicker
{
	Projectile
	projectilekickback 600
	speed 48
	damage (45)
	obituary "%o was ninja kicked in the face by %k"
	+BLOODSPLATTER
	+thruspecies
	+dontblast
	+forcepain
	+bounceonfloors
	+dontreflect
	species "player"
	height 10
	radius 10
	+noblood
	+NOEXTREMEDEATH
	scale 1.50
	mass 1000000
	states
	{
	spawn:
		TNT1 A 0
		TNT1 A 0 A_JumpIf(floorz == z, "break")
		TNT1 A 0 A_JumpIf(ceilingz == z, "break")
		TNT1 A 0 A_JumpIf(floorz == z, "break")
		TNT1 A 0 A_JumpIf(ceilingz == z, "break")
		TNT1 A 1 A_JumpIf(floorz == z, "break")
		TNT1 A 0 A_JumpIf(floorz == z, "break")
		TNT1 A 0 A_JumpIf(ceilingz == z, "break")
		stop
	break:
		TNT1 A 0
		TNT1 A 0 a_stop
		stop
	death:
		TNT1 A 0
		TNT1 A 1
		TNT1 A 0 A_PlaySound("ArtiBoot/WallKick", 0)
		TNT1 A 1 a_givetotarget ("kickwall", 1)
		stop
	Xdeath:
		TNT1 A 0
		TNT1 A 1
		TNT1 A 0 A_PlaySound("ArtiBoot/KickHit", 0)
		TNT1 A 0 radius_quake (2,3,0,10,0)
		TNT1 A 0 ACS_namedexecutealways ("BootReload")
		TNT1 A 0 a_giveinventory ("BootTimer",120,AAPTR_TARGET)
		TNT1 A 0 a_givetotarget ("kickmonster", 1)
		TNT1 A 0 A_radiusthrust (12000,50,0)
		MNSP ABCD 1
		TNT1 A 4
		stop
	}
}


Actor CAHandyman : PlasmaBall
{
   Obituary "%o got rocket-fisted by %k's THROWN HAND."
    -NOGRAVITY
    +LOWGRAVITY
    +EXTREMEDEATH
    +BLOODSPLATTER
	+THRUSPECIES
	Species "Player"
    damage 20
    DontHurtShooter
    seesound "fist/kickswing"
    deathsound ""
    Renderstyle Normal
    Scale 0.1
    States
    {
    Spawn:
    	HAND A 1
    	Loop
    Death:
		TNT1 A 0
		TNT1 A 1
    	TNT1 A 0 BRIGHT
    	TNT1 A 0 BRIGHT A_Explode(25,100)
    	TNT1 A 0 BRIGHT A_SpawnItem("SileBlud")
    	TNT1 A 0 BRIGHT A_SpawnItem("SileBlud")
    	TNT1 A 0 BRIGHT A_SpawnItem("SileBlud")
    	TNT1 A 0 BRIGHT A_SpawnItem("SileBlud")
    	TNT1 A 0 BRIGHT A_SpawnItem("cs_office")
    	TNT1 A 0 BRIGHT A_SpawnItem("cs_office")
    	TNT1 A 0 BRIGHT A_SpawnItem("cs_office")
    	TNT1 A 0 BRIGHT A_SpawnItem("cs_office")
    	TNT1 A 1 BRIGHT A_PlaySound("gibsplat")
    	Stop
    }
}

actor rocketfist
{
	Projectile
	Radius 5
	Height 5
	Speed 40
	Damage (320)
	+thruspecies
    +BLOODSPLATTER
	damagetype "minirocket"
	scale 0.80
	+randomize
	decal scorch
	species "player"
	SeeSound ""
	DeathSound "Cyclops/rocketboom"
	States
	{
	Spawn:
		MNS2 A 3 
		TNT1 A 0 a_playsound ("Cyclops/rocketspeedup",0,1,0, 0.75)
		TNT1 AAA 0 a_spawnitemex ("Missilefire",Frandom(-10,10),Frandom(-8,8),Frandom(-8,8),Frandom(-200,200)/20.0,Frandom(-60,60)/20.0,Frandom(-40,40)/20.0,0,160)
		MNSS A 1 a_spawnitem ("missileblur")
		TNT1 A 0 A_SpawnItemEx("LavaLazerTrail",frandom(-2,2),frandom(-2,2),frandom(-2,2))
		TNT1 A 0 a_spawnitemex ("Missilefire",Frandom(-5,5),Frandom(-5,5),Frandom(-5,5),Frandom(-50,50)/20.0,Frandom(-50,50)/20.0,Frandom(-50,50)/20.0,0,160)
		Loop
	Death:
		TNT1 A 0
		TNT1 A 0
		TNT1 A 0 radius_quake (3,8,0,20,0)
		TNT1 A 0 a_explode (35,100,1,0,50)
		TNT1 AAAAAA 0 a_spawnitemex ("Missilefire",Frandom(-20,20),Frandom(-18,18),Frandom(-18,18),Frandom(-200,200)/20.0,Frandom(-200,200)/20.0,Frandom(-200,200)/20.0,0,160)
		TNT1 A 0 A_SpawnItemEx("LavaLazerExplosion")
		TNT1 AAAAAAAAAAAAAAAA 0 Bright A_SpawnItemEx("LavaLazerTrail",frandom(-21,21),frandom(-21,21),frandom(-21,21),frandom(-1,1),frandom(-1,1),frandom(0,1))
		TNT1 AAAAAAAAAAAAAAAAAAA 0 Bright A_SpawnItemEx("LavaLazerEmber2",frandom(-16,16),frandom(-16,16),frandom(-16,16),frandom(-1,1),frandom(-1,1),frandom(0,1))
		TNT1 AAAAAAAAAA 0 Bright A_SpawnItemEx("LavaLazerSmoke2",frandom(-4,4),frandom(-4,4),frandom(-4,4),frandom(-1,1),frandom(-1,1),frandom(0,1))
		TNT1 AAAAAAAAAAA 0 Bright A_SpawnItemEx("LavaLazerSmoke",frandom(-4,4),frandom(-4,4),frandom(-4,4),0,0,frandom(1,2))
    	TNT1 A 0 BRIGHT A_SpawnItem("SileBlud")
    	TNT1 A 0 BRIGHT A_SpawnItem("SileBlud")
    	TNT1 A 0 BRIGHT A_SpawnItem("SileBlud")
    	TNT1 A 0 BRIGHT A_SpawnItem("SileBlud")
    	TNT1 A 0 BRIGHT A_SpawnItem("cs_office")
    	TNT1 A 0 BRIGHT A_SpawnItem("cs_office")
    	TNT1 A 0 BRIGHT A_SpawnItem("cs_office")
    	TNT1 A 0 BRIGHT A_SpawnItem("cs_office")
    	TNT1 A 0 BRIGHT A_PlaySound("gibsplat")
		TNT1 A 0 a_radiusthrust (200, 100, 80)
		stop
	}
}


actor fistcheck
{
	+notimefreeze
	projectile
	+FORCEXYBILLBOARD	
	+LOOKALLAROUND
	+THRUSPECIES
	species "player"
	radius 2
	speed 30
	damage (0)
	Scale 1
	states
	{
	spawn:
		TNT1 AA 1 bright
		stop
	xdeath:
		TNT1 A 0
		TNT1 A 0 a_givetotarget ("Ihitathing")
		stop
	death:
	crash:
		TNT1 A 0
		TNT1 A 0
		stop
	}
}


Actor MaceFragmentSpawner
{
	projectile
	+thruactors
	states
	{
	spawn:
		TNT1 A 0
		TNT1 A 1 a_stop
		TNT1 AAAAAA 0 a_spawnitemex ("MaceBreakage",0,0,0,random (-4,4),random (-4,4),random (6,12))
		goto death
	Death:
		TNT1 A 0
		TNT1 A 1
		stop
	}
}

actor MaceBreakage
{
	+cannotpush
	+movewithsector
	+dontsplash
	+noblockmap
	+thruactors	
	+doombounce
	+clientsideonly
	+missile
	+bright
	bouncecount 3
	Gravity 1
	scale 0.20
	reactiontime 30
	states
	{
	spawn:
		TNT1 A 0
		TNT1 A 0
		TNT1 A 0 a_jump(60,"MaceFragment2")
		TNT1 A 0 a_jump(60,"MaceFragment3")
		goto MaceFragment1
	MaceFragment1:
		FRG1 ABCDEFGH 1
		TNT1 A 0 a_countdown
		Loop
	MaceFragment2:
		FRG2 ABCDEFGH 2
		TNT1 A 0 a_countdown
		Loop
	MaceFragment3:
		FRG3 ABCDEFGH 2
		TNT1 A 0 a_countdown
		Loop
	death:	
		"####" "#" 3 thrustthingz (0,5,0,0)
		"####" "#" 120
		"####" "#" 35 a_fadeout (0.20)
		"####" "#" 35 a_fadeout (0.20)
		"####" "#" 35 a_fadeout (0.20)
		stop
	}
}



//Zharkov gibs and pieces

ACTOR SileBlud
{
    +NOGRAVITY
	Renderstyle Translucent
    Health 6
    States
    {
    Spawn:
    	ZBLD A 3
    	ZBLD B 3 A_SpawnDebris("cs_office")
    	ZBLD C 3
        Stop
    }
}

Actor cs_office : PlasmaBall
{
    Renderstyle Translucent
    Reactiontime 3
    Damage 0
    Speed 100
    DontHurtShooter
    +HEXENBOUNCE
    +RIPPER
    Health 6
    -NOGRAVITY
    Scale 0.35
    damage 0
    seesound ""
    deathsound ""
    States
    {
    Spawn:
    	ZBLD ABCBABCBABCB 1
    	TROO H 0 BRIGHT A_COuntDown
    Death:
    	ZBLD ABC 3 BRIGHT
    	TNT1 A 1 A_Jump(5,1)
    	Stop
    	TNT1 A 1
    	Stop
    }
}

//Trail effects for rocket punch
Actor MissileBlur       
{
	Height 8
	Radius 1
	Damage 0
	Scale 0.6
	Speed 0.2
	RenderStyle Translucent
	Alpha 0.7
	+NoGravity
	+DropOff
	+NoTeleport
	+clientsideonly
	States
	{
	Spawn:
		MNSS A 1 bright A_FadeOut(0.06)
		Loop
	}
}






actor Ihitathing : inventory
{inventory.maxamount 1}

actor kickmonster : inventory
{inventory.maxamount 1}

actor kickwall : inventory
{inventory.maxamount 1}

actor ZharkyFist : inventory
{inventory.maxamount 1}

actor leftpunch : inventory
{inventory.maxamount 1}

actor gauntletHP : Inventory
{
	Inventory.PickupMessage "gauntlet HP (you shouldn't find this, seriously)"
	Inventory.Amount 1
	Inventory.MaxAmount 150
	Inventory.Icon "BAL1A0"
	states
	{
	Spawn:
		BAL1 A -1
		stop
	}
}