/*

==ZARACH==
A weapon of pure light, given the form of a sword in Blaz's hands.
This blade acts as a conduit for Blaz's fighting spirit, capable
of changing into a more powerful form to cleave through even the 
hardiest of foes. Thanks to techniques learned from a 
swordsmaster, Blaz gathers this energy for these 
attacks simply by striking his enemies.

Blaz is also capable of throwing his sword, unorthodox, but
extremely effective. There's no risk of Blaz losing his weapon
thankfully, thanks to his magic scabbard, which recalls his
sword after a few seconds.

Along with his sword, Blaz also carries a throw chain, gifted
by his friend Samson, this enchanted chain can be used to 
pull his enemies closer to him.

Finally, Blaz also has an enchanted pouch that magically
duplicates extra tools and sub weapons for him to use
for extra utility.

==FATAL DRAW==
A hidden technique learned from the writings of the same
swordsmaster, this attack taps into the very essence of the
wielder. For Blaz, this attack reacts with Zarach and the
blade changes into a powerful and unstable blade of light
within its scabbard before being unleashed with a single 
draw-slash. The combined force of Blaz's fighting spirit
and Zarach's energy results in a wide sweep of light
that fells anything before him in a single strike.

Alernatively, if Blaz is without his sword, he can
tap into another martial technique he learned from
his family: A devastating flurry of punches that're
charged by his fighting spirit, letting him fire out
ethereal fists to crush his targets!
*/


actor NewZarach : Weapon
{
	weapon.Ammotype "ArcaneForce"
	Tag "Zarach/melee"
	Inventory.RestrictedTo "LordBlaz"
	+WEAPON.Ammo_OPTIONAL
	+WEAPON.ALT_Ammo_OPTIONAL  	
    +UNDROPPABLE
	+CHEATNOTWEAPON
	+noautoaim
	//+noautofire
	weapon.bobstyle smooth
	weapon.bobrangex 0.1
	weapon.bobrangey 0.6
	weapon.bobspeed 2
	Weapon.SelectionOrder 1000
	states
	{
	Select:
		TNT1 A 0
        TNT1 AAAAAAAAAAAAAAAAAAAA 0 A_Raise
        TNT1 A 1 A_Raise
		goto ready

	//Equip Animations
	Ready:
		TNT1 A 0
		TNT1 A 0 A_JumpIfInventory ("BarrelToken", 1, "SelectBarrel")
		TNT1 A 0 A_JumpIfInventory ("GoldenBarrelToken", 1, "SelectGoldenBarrel")
		TNT1 A 0 A_JumpIfInventory ("UnarmedCheck", 1, "UnarmedUp")
		TNT1 A 0 A_JumpIfInventory ("PowerSwordCheck", 1, "PowerSwordUp")
		SRDG A 1 A_WeaponReady (WRF_ALLOWRELOAD|WRF_NOSWITCH|WRF_ALLOWZOOM)
		Goto RealReady
	PowerSwordUp:
		TNT1 A 0 A_JumpIfInventory ("BarrelToken", 1, "SelectBarrel")
		TNT1 A 0 A_JumpIfInventory ("GoldenBarrelToken", 1, "SelectGoldenBarrel")
		PSRD A 7 A_WeaponReady (WRF_ALLOWRELOAD|WRF_NOSWITCH|WRF_ALLOWZOOM)
		Goto PowerSwordReady
	UnarmedUp:
		TNT1 A 0 A_JumpIfInventory ("BarrelToken", 1, "SelectBarrel")
		TNT1 A 0 A_JumpIfInventory ("GoldenBarrelToken", 1, "SelectGoldenBarrel")
		BZX4 ABC 1 A_WeaponReady (WRF_ALLOWRELOAD|WRF_NOSWITCH|WRF_ALLOWZOOM)
		TNT1 A 0 A_JumpIfInventory ("BarrelToken", 1, "SelectBarrel")
		TNT1 A 0 A_JumpIfInventory ("GoldenBarrelToken", 1, "SelectGoldenBarrel")
		UNAR A 7 A_WeaponReady (WRF_ALLOWRELOAD|WRF_NOSWITCH|WRF_ALLOWZOOM)
		Goto UnarmedReady
	
	//Unequip Animations
	Deselect:
		TNT1 A 0
		TNT1 A 0 A_JumpIfHealthLower (1, "DeadLower")
		TNT1 A 0 A_JumpIfInventory ("UnarmedCheck", 1, "UnarmedDeselect")
		TNT1 A 0 A_JumpIfInventory ("PowerSwordCheck", 1, "PowerswordDeselect")
		SRDG A 1 A_WeaponReady (WRF_ALLOWRELOAD)
		Goto Holster
	PowerswordDeselect:
		PSRD A 1
		goto Holster
	UnarmedDeselect:
		BZX4 CBA 1
		Goto Holster
	Holster:
        TNT1 AAAAAAAAAAAAAAAAAAAA 0 A_lower
        TNT1 A 1 A_lower
		loop
	DeadLower:
		TNT1 A 0
		TNT1 A 0
		TNT1 AAAAAAAAAAAAA 0 A_Lower
		TNT1 A 1 A_Lower
		wait		
		
		
		
	//Ready States
	RealReady:
		TNT1 A 0
		TNT1 A 0
		TNT1 A 0 A_JumpIfInventory ("BarrelToken", 1, "SelectBarrel")
		TNT1 A 0 A_JumpIfInventory ("GoldenBarrelToken", 1, "SelectGoldenBarrel")
		TNT1 A 0 A_JumpIfInventory ("UnarmedCheck", 1, "UnarmedReady")
		TNT1 A 0 A_JumpIfInventory ("FatalDrawGo", 1, "FatalDrawSheathe")
		TNT1 A 0 A_JumpIfInventory ("PowerSwordHUDFlash",1, "SwordPowerUp")
		TNT1 A 0 A_JumpIfInventory ("PowerSwordCheck",1, "PowerSwordReady")
		SRDG A 1 A_WeaponReady (WRF_ALLOWRELOAD|WRF_ALLOWZOOM)
		loop
	PowerSwordReady:
		TNT1 A 0
		TNT1 A 0 A_JumpIfInventory ("FatalDrawGo", 1, "FatalDrawSheathe")
		TNT1 A 0 A_JumpIfInventory ("BarrelToken", 1, "SelectBarrel")
		TNT1 A 0 A_JumpIfInventory ("GoldenBarrelToken", 1, "SelectGoldenBarrel")
		PSRD A 1 A_WeaponReady (WRF_ALLOWRELOAD|WRF_ALLOWZOOM)
		TNT1 A 0 A_JumpIfInventory ("PowerSwordCheck",1,"PowerSwordReady")
		goto SwordPowerDown
	UnarmedReady:
		TNT1 A 0
		TNT1 A 0
		TNT1 A 0 A_JumpIfInventory ("FatalDrawGo", 1, "FatalFist")	
		TNT1 A 0 A_JumpIfInventory ("BarrelToken", 1, "SelectBarrel")
		TNT1 A 0 A_JumpIfInventory ("GoldenBarrelToken", 1, "SelectGoldenBarrel")
		UNAR A 1 A_WeaponReady (WRF_ALLOWRELOAD|WRF_ALLOWZOOM)
		TNT1 A 0 A_JumpIfInventory ("UnarmedCheck", 1, "UnarmedReady")
		goto SwordRecall
		
	
	//Quick animations for powering up the sword, as well as powering down
	SwordPowerUp:
		TNT1 A 0
		SRDG B 1 A_WeaponReady (WRF_ALLOWZOOM|WRF_ALLOWRELOAD|WRF_NOBOB)
		TNT1 A 1 A_WeaponReady (WRF_ALLOWZOOM|WRF_ALLOWRELOAD|WRF_NOBOB)
		TNT1 A 0 A_GiveInventory ("PowerSwordCheck", 1)
		ZCH1 ABC 1 A_WeaponReady (WRF_ALLOWZOOM|WRF_ALLOWRELOAD|WRF_NOBOB)
		TNT1 A 0 A_PlaySound ("Sword/Powerup")
		ZCH1 DEF 1 A_WeaponReady (WRF_ALLOWZOOM|WRF_ALLOWRELOAD|WRF_NOBOB)
		ZCH1 GH 2 A_WeaponReady (WRF_ALLOWZOOM|WRF_ALLOWRELOAD|WRF_NOBOB)
		ZCH1 I 7 A_WeaponReady (WRF_ALLOWZOOM|WRF_ALLOWRELOAD|WRF_NOBOB)
		ZCH1 JKL 2 A_WeaponReady (WRF_ALLOWZOOM|WRF_ALLOWRELOAD|WRF_NOBOB)
		TNT1 A 3 A_WeaponReady (WRF_ALLOWZOOM|WRF_ALLOWRELOAD|WRF_NOBOB)
		TNT1 A 0 A_Jump (256, "PowerSwordAttackEnd")
		goto PowerSwordAttackEnd
	SwordPowerDown:
		PSRD B 1 A_WeaponReady (WRF_ALLOWZOOM|WRF_ALLOWRELOAD|WRF_NOBOB)
		TNT1 A 1 A_WeaponReady (WRF_ALLOWZOOM|WRF_ALLOWRELOAD|WRF_NOBOB)
		TNT1 A 0 A_TakeInventory ("PowerSwordCheck", 99)
		ZCH2 ABCDE 1 A_WeaponReady (WRF_ALLOWZOOM|WRF_ALLOWRELOAD|WRF_NOBOB)
		TNT1 A 0 A_PlaySound ("Sword/Powerdown")
		ZCH2 FGHIJ 2 A_WeaponReady (WRF_ALLOWZOOM|WRF_ALLOWRELOAD|WRF_NOBOB)
		ZCH2 J 4 A_WeaponReady (WRF_ALLOWZOOM|WRF_ALLOWRELOAD|WRF_NOBOB)
		ZCH2 KL 2 A_WeaponReady (WRF_ALLOWZOOM|WRF_ALLOWRELOAD|WRF_NOBOB)
		TNT1 A 3 A_WeaponReady (WRF_ALLOWZOOM|WRF_ALLOWRELOAD|WRF_NOBOB)
		TNT1 A 0 A_Jump (256, "SwordAttackEnd")
		goto SwordAttackEnd

	
	//Drawing the sword after picking it up/recovering it
	SwordRecall:
		TNT1 A 0
		TNT1 A 0
		TNT1 A 0 A_ClearReFire
		UNAR ABCD 1
		TNT1 A 0 A_ClearReFire
		TNT1 A 0 A_TakeInventory ("UnarmedCheck", 1)
		FDSH HGFE 1 A_WeaponReady (WRF_ALLOWRELOAD|WRF_ALLOWZOOM)
		TNT1 A 0 A_PlaySound ("Sword/draw")
		FDSH DCBA 1 A_WeaponReady (WRF_ALLOWRELOAD|WRF_ALLOWZOOM)
		TNT1 A 2 A_WeaponReady (WRF_ALLOWRELOAD|WRF_ALLOWZOOM)
		TNT1 A 0 A_JumpIfInventory ("PowerSwordCheck", 1, "PowerSwordRecall")
		SLWR DBA 1 A_WeaponReady (WRF_ALLOWRELOAD|WRF_ALLOWZOOM)
		goto RealReady
	PowerSwordRecall:
		PLWR DBA 1 A_WeaponReady (WRF_ALLOWRELOAD|WRF_ALLOWZOOM)
		goto RealReady
		

	Fire:
		TNT1 A 0
		TNT1 A 0
		TNT1 A 0 A_GiveInventory ("UsingSword",1)
		TNT1 A 0 A_JumpIfInventory ("BarrelToken", 1, "BarrelToss")
		TNT1 A 0 A_JumpIfInventory ("GoldenBarrelToken", 1, "GoldenBarrelToss")
		SRDG A 0 A_JumpIfInventory ("FatalDrawToken", 1, "FatalDraw")
		SRDG A 0 A_JumpIfInventory ("UnarmedCheck", 1, "Jab")
		SRDG A 0 A_JumpIfInventory ("PowerSwordCheck", 1, "PowerSwordfire")		
		SRDG BC 1
		TNT1 A 0 A_Jump (256,"Thrust")
		goto Thrust
	PowerSwordfire:
		TNT1 A 0
		TNT1 A 0
		PSRD BC 1 
		TNT1 A 0 A_JumpIfInventory ("PowerSwordCheck", 1, "PowerSwordThrust")
		TNT1 A 0 A_PlaySound ("Sword/Powerdown")
		TNT1 A 2
		TNT1 A 0 A_Jump (256,"SwordStrike")
		goto SwordStrike
	
	SwordAttackEnd:
		TNT1 A 0
		SRDG CCBBA 1 A_WeaponReady (WRF_ALLOWRELOAD|WRF_ALLOWZOOM|WRF_NOSECONDARY)
		TNT1 A 0 A_Jump (256,"RealReady")
		Goto RealReady
	PunchAttackEnd:
		UNAR BA 2 A_WeaponReady (WRF_ALLOWRELOAD|WRF_ALLOWZOOM|WRF_NOSECONDARY)
		TNT1 A 0 A_Jump (256,"RealReady")
		Goto RealReady
	PowerSwordAttackEnd:
		PSRD CBA 2 A_WeaponReady (WRF_ALLOWZOOM|WRF_NOBOB|WRF_NOSECONDARY)
		TNT1 A 0 A_Jump (256,"RealReady")
		Goto RealReady

	
	
	Reload:
		TNT1 A 0
		TNT1 A 0
		TNT1 A 0 A_JumpIfInventory ("UnarmedCheck", 1, "KnuckleCrack")
		SRDG A 0 A_JumpIfInventory ("PowerSwordCheck", 1, "PowerSwordThrowStart")		
		TNT1 A 0 A_Jump (256,"NormalThrowStart")
		Goto NormalThrowStart

	Zoom:
		TNT1 A 0
		TNT1 A 1 A_Jump (256,"GrappleWhip")		
		goto GrappleWhip


//-------------------------------------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------------------------------


//******************************************************************************************************
//******************************************************************************************************
// RELOAD ACTIONS
//******************************************************************************************************
//******************************************************************************************************

//==Sword Throw STUFF==
//"HERE CATCH"
	NormalThrowStart:
		SRDG A 1 A_WeaponReady (WRF_NOBOB|WRF_NOSWITCH|WRF_NOFIRE)
		SRDG B 1 A_WeaponReady (WRF_NOBOB|WRF_NOSWITCH|WRF_NOFIRE)
		SRDG C 1 A_WeaponReady (WRF_NOBOB|WRF_NOSWITCH|WRF_NOFIRE)
		TNT1 A 0 A_Jump (256,"SwordThrow")
		Goto SwordThrow
	SwordThrow:
		STHW ABCDEFFF 1 A_WeaponReady (WRF_NOBOB|WRF_NOSWITCH|WRF_NOFIRE)
		STHW G 1
		STHW H 1
		TNT1 A 0 A_JumpIfInventory ("ThrowBoostTech",1,"BoostedSwordThrow")
		TNT1 A 0 A_PlaySound ("bomberknight/Throw", 0)
		TNT1 A 0 A_FireCustomMissile ("WeakThrownSword",0,0,5,1)
		STHW I 1
		Goto SwordThrowEnd
	BoostedSwordThrow:
		TNT1 A 0 A_PlaySound ("Sword/StrongThrow",0)
		TNT1 A 0 A_FireCustomMissile ("ThrownSword",0,0,5,1)
		STHW I 1
		Goto SwordThrowEnd

	PowerSwordThrowStart:
		PSRD A 1 A_WeaponReady (WRF_NOBOB|WRF_NOSWITCH|WRF_NOFIRE)
		PSRD B 1 A_WeaponReady (WRF_NOBOB|WRF_NOSWITCH|WRF_NOFIRE)
		PSRD C 1 A_WeaponReady (WRF_NOBOB|WRF_NOSWITCH|WRF_NOFIRE)
		TNT1 A 0 A_Jump (256,"PowerSwordThrow")
		Goto PowerSwordThrow
	PowerSwordThrow:
		STH2 ABCDEFFF 1 A_WeaponReady (WRF_NOBOB|WRF_NOSWITCH|WRF_NOFIRE)
		STH2 G 2
		STH2 H 1
		TNT1 A 0 A_PlaySound ("PoweredZarach/Throw", 0,0.60)
		TNT1 A 0 A_FireCustomMissile ("PowerThrownSword",0,0,5,1)
		STHW I 1 
		Goto SwordThrowEnd

	SwordThrowEnd:
		TNT1 A 0 A_GiveInventory ("UnarmedCheck",1) 
		STHW J 1
		STHW K 1
		TNT1 A 1
		TNT1 A 0 A_Jump (256,"PunchAttackEnd")
		goto PunchAttackEnd

	
	KnuckleCrack:
		TNT1 A 0
		TNT1 A 0
		UNAR ABCD 1
		BZKC ABCD 1
		TNT1 A 0 A_TakeInventory ("ThrownSwordCooldown",600)
		BZKC EF 2 A_WeaponReady 
		BZKC G 1 A_PlaySound ("Fists/KnuckleCrack",0)
		BZKC HIJKLMNBA 2 A_WeaponReady 
		UNAR BA 1 A_WeaponReady
		TNT1 A 0 A_Jump (256,"RealReady")
		goto RealReady


//-------------------------------------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------------------------------

//******************************************************************************************************
//******************************************************************************************************
// ZOOM ACTIONS
//******************************************************************************************************
//******************************************************************************************************

//Using the grapple chain
	GrappleWhip:
		TNT1 A 0 
		TNT1 A 0 A_PlaySound ("Blaz/ChainUp",0,0.60)
		TNT1 A 0 A_JumpIfInventory ("ChainUpgrade",1,"PowerChain")
		GWIP ABC 1
		GWIP DD 1
		TNT1 A 0 A_PlaySound ("Blaz/ChainSwing",0)
		TNT1 A 0 A_GunFlash
		GWIP EEF 1
		TNT1 A 0 A_FireCustomMissile ("GrappleWhipTip",0,0,0,0)
		GWIP G 1 A_RailAttack (0, -7, 0, "none", White, RGF_SILENT | RGF_FULLBRIGHT | RGF_NOPIERCING, 0, "NullPuff", 0, 0, 1600, 10, 20, 0, "GrappleWhipChain", -2)
		//TNT1 A 0 A_FireBullets (0,0,-1,1,"GrappleWhipTip",0,1000)
		GWIP HIJ 1
		TNT1 A 5 A_WeaponReady (WRF_ALLOWRELOAD)
		TNT1 A 1 A_Jump	(256, "GrappleFinish")
		Goto RealReady
	PowerChain:
		GW2P ABC 1
		GW2P DD 1
		TNT1 A 0 A_PlaySound ("Blaz/ChainSwing",0,0.80)
		TNT1 A 0 A_PlaySound ("Sword/multistrike",0,0.40)
		TNT1 A 0 A_GunFlash
		GW2P EEF 1
		TNT1 A 0 A_FireCustomMissile ("PowerGrappleWhipTip",0,0,0,0)
		GW2P G 1 A_RailAttack (0, -7, 0, "none", White, RGF_SILENT | RGF_FULLBRIGHT | RGF_NOPIERCING, 0, "NullPuff", 0, 0, 1600, 10, 20, 0, "PowerGrappleWhipChain", -2)
		GW2P HIJ 1
		TNT1 A 5 A_WeaponReady (WRF_ALLOWRELOAD)
		TNT1 A 1 A_Jump	(256, "GrappleFinish")
		Goto RealReady
	GrappleFinish:
		TNT1 A 0
		TNT1 A 0 A_JumpIfInventory ("UnarmedCheck", 1, "UnarmedGrappleFinish")
		TNT1 A 0 A_JumpIfInventory ("PowerSwordCheck", 1, "PowerSwordGrappleFinish")
		SRDG CB 1 A_WeaponReady (WRF_ALLOWRELOAD)
		Goto RealReady
	UnarmedGrappleFinish:
		UNAR DCBA 1 A_WeaponReady (WRF_ALLOWRELOAD)
		TNT1 A 0 A_Jump (256,"RealReady")
		Goto RealReady
	PowerSwordGrappleFinish:
		PSRD BA 1 A_WeaponReady (WRF_ALLOWRELOAD)
		TNT1 A 0 A_Jump (256,"RealReady")
		Goto PowerSwordReady
		
//-------------------------------------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------------------------------

//******************************************************************************************************
//******************************************************************************************************
// FIRE ACTIONS
//******************************************************************************************************
//******************************************************************************************************

	//Melee attacks performed by the fire key
	Thrust:
		TNT1 A 0
		TNT1 A 0
		RTST A 2
		TNT1 A 0 A_PlaySound ("Sword/Attack3",0)
		RTST B 2
		TNT1 A 0 A_Quake (2,4,0,4,"silence")
		TNT1 A 0 A_GunFlash ("RingThrustCheck",GFF_NOEXTCHANGE)
		TNT1 A 0 A_FireCustomMissile ("SwordAttack3",0,0,0,3)
		RTST C 1
		RTST D 1
		RTST CD 1 A_WeaponReady (WRF_ALLOWRELOAD|WRF_ALLOWZOOM|WRF_NOFIRE)
		RTST E 2 A_WeaponReady (WRF_ALLOWRELOAD|WRF_ALLOWZOOM|WRF_NOFIRE)
		RTST GH 1 A_WeaponReady (WRF_ALLOWRELOAD|WRF_ALLOWZOOM|WRF_NOFIRE)
		TNT1 A 1 A_WeaponReady (WRF_ALLOWRELOAD|WRF_ALLOWZOOM|WRF_NOPRIMARY)
		TNT1 A 0 A_Refire ("SwordStrike")
		TNT1 A 1 A_WeaponReady (WRF_ALLOWRELOAD|WRF_ALLOWZOOM|WRF_NOPRIMARY)
		TNT1 A 0 A_Jump (256, "SwordAttackEnd")
		goto SwordAttackEnd
	SwordStrike:
		TNT1 A 0
		TNT1 A 0
		TNT1 A 0 A_GiveInventory ("UsingSword",1)
		TNT1 A 0 A_JumpIfInventory ("PowerSwordCheck", 1, "PowerSwordAttack")
		SRD1 AB 1
		SRD1 C 1 A_PlaySound("Sword/Attack1")		
		SRD1 D 1 A_FireCustomMissile ("SwordAttack1",0,0,0,2)	
		TNT1 A 0 A_GunFlash ("RingSwordCheck",GFF_NOEXTCHANGE)
		SRD1 EFF 1 A_WeaponReady (WRF_ALLOWRELOAD|WRF_ALLOWZOOM|WRF_NOFIRE)
		TNT1 A 2
		TNT1 A 0 A_Refire ("BackSlash")
		TNT1 A 0 A_Jump (256, "SwordAttackEnd")
		goto SwordAttackEnd

	BackSlash:
		TNT1 A 0
		TNT1 A 0
		TNT1 A 1
		TNT1 A 0 A_GiveInventory ("UsingSword",1)
		TNT1 A 0 A_JumpIfInventory ("PowerSwordCheck", 1, "PowerBackSlash")
		BCK1 AB 1
		BCK1 C 1 A_PlaySound("Sword/Attack2")		
		BCK1 D 1 A_FireCustomMissile ("SwordAttack2",0,0,0,2)	
		TNT1 A 0 A_GunFlash ("RingSwordCheck",GFF_NOEXTCHANGE)
		BCK1 EFF 1 A_WeaponReady (WRF_ALLOWRELOAD|WRF_ALLOWZOOM|WRF_NOFIRE)
		TNT1 A 2
		TNT1 A 0 A_Refire ("SwordStrike")
		TNT1 A 0 A_Jump (256, "SwordAttackEnd")
		goto SwordAttackEnd
	
	
//==UNARMED COMBO SHIT==
//"Dost thou lack any problems I can't mitigate with mine hands?"
	Jab:		
		TNT1 A 0
		TNT1 A 0 A_GiveInventory ("UsingSword",1)
		TNT1 A 0 A_JumpIfInventory ("PowerSwordCheck", 1, "PowerPunches")
		KSR1 A 1
		TNT1 A 0 A_PlaySound ("Subweapons/Jabswing")
		TNT1 A 0 A_FireCustomMissile ("LeftJab",0,0,-5,1)
		TNT1 A 0 A_GunFlash ("RingPunchCheck",GFF_NOEXTCHANGE)
		KSR1 BCD 1
		KSR2 A 1
		TNT1 A 0 A_PlaySound ("Subweapons/Straightswing")
		TNT1 A 0 A_FireCustomMissile ("StraightPunch",0,0,5,1)
		TNT1 A 0 A_GunFlash ("RingPunchCheck",GFF_NOEXTCHANGE)
		KSR2 BCD 1
		TNT1 A 0 A_refire
		TNT1 A 5 A_WeaponReady (WRF_NOSWITCH|WRF_ALLOWRELOAD|WRF_ALLOWZOOM)
		Goto Finisher
	PowerPunches:
		TNT1 A 0
		TNT1 A 0 A_GiveInventory ("UsingSword",1)
		KSR3 A 1
		TNT1 A 0 A_PlaySound ("Subweapons/Jabswing")
		TNT1 A 0 A_PlaySound ("Subweapons/PowerFist1")
		TNT1 A 0 A_FireCustomMissile ("PowerLeftJab",0,0,-5,1)
		TNT1 A 0 A_GunFlash ("RingPunchCheck",GFF_NOEXTCHANGE)
		KSR3 BCD 1
		KSR4 A 1
		TNT1 A 0 A_PlaySound ("Subweapons/Straightswing")
		TNT1 A 0 A_PlaySound ("Subweapons/PowerFist2")
		TNT1 A 0 A_FireCustomMissile ("PowerStraightPunch",0,0,5,1)
		TNT1 A 0 A_GunFlash ("RingPunchCheck",GFF_NOEXTCHANGE)
		KSR4 BCD 1
		TNT1 A 0 A_refire("FistManaCheck")
		TNT1 A 5 A_WeaponReady (WRF_NOSWITCH|WRF_ALLOWRELOAD|WRF_ALLOWZOOM)
		Goto Finisher
	FistManaCheck:
		TNT1 A 0
		TNT1 A 1 A_JumpIfInventory ("PowerSwordCheck",1, "PowerPunches")
		TNT1 A 0 A_PlaySound ("Sword/Powerdown")
		TNT1 A 1
		goto Jab
	
	

	Finisher:
		TNT1 A 0
		TNT1 A 0
		TNT1 A 0 A_JumpIfInventory ("PowerSwordCheck", 1, "PowerFinisher")
		TNT1 A 0 A_PlaySound ("Subweapons/Haymakerswing")
		TNT1 A 0 A_PlaySound ("blaz/PowerAttack",CHAN_VOICE)
		UPCT AB 1
		TNT1 A 0 A_GiveInventory ("UsingSword",1)
		UPCT C 1 A_GunFlash ("UpperCutThrower",GFF_NOEXTCHANGE) 
		UPCT DDE 1
		UPCT FG 2 A_WeaponReady (WRF_NOSWITCH|WRF_ALLOWRELOAD|WRF_ALLOWZOOM|WRF_NOSECONDARY)
		UPCT H 2 A_WeaponReady (WRF_NOSWITCH|WRF_ALLOWRELOAD|WRF_ALLOWZOOM|WRF_NOSECONDARY)
		TNT1 A 2 A_WeaponReady (WRF_NOSWITCH|WRF_ALLOWRELOAD|WRF_ALLOWZOOM|WRF_NOSECONDARY)
		TNT1 A 0 A_Jump (256,"PunchAttackEnd")
		Goto PunchAttackEnd
	PowerFinisher:
		TNT1 A 0 A_PlaySound ("Subweapons/Haymakerswing",0,0.90)
		TNT1 A 0 A_PlaySound("PoweredZarach/Swish",0,0.30)
		TNT1 A 0 A_PlaySound ("blaz/PowerAttack",CHAN_VOICE)
		UPC2 AB 1
		UPC2 C 1 A_GunFlash ("UpperCutThrower",GFF_NOEXTCHANGE) 
		UPC2 DDE 1
		UPC2 FG 2 A_WeaponReady (WRF_NOSWITCH|WRF_ALLOWRELOAD|WRF_ALLOWZOOM|WRF_NOSECONDARY)
		UPC2 H 2 A_WeaponReady (WRF_NOSWITCH|WRF_ALLOWRELOAD|WRF_ALLOWZOOM|WRF_NOSECONDARY)
		TNT1 A 2 A_WeaponReady (WRF_NOSWITCH|WRF_ALLOWRELOAD|WRF_ALLOWZOOM|WRF_NOSECONDARY)
		TNT1 A 0 A_Jump (256,"PunchAttackEnd")
		Goto PunchAttackEnd
		
	
//==POWER SWORD==//


	PowerSwordThrust:
		TNT1 A 0
		TNT1 A 0
		PTST A 2
		TNT1 A 0 A_PlaySound ("Sword/Attack3",0)
		PTST B 2
		TNT1 A 0 A_Quake (2,4,0,4,"silence")
		TNT1 A 0 A_GunFlash ("RingThrustCheck",GFF_NOEXTCHANGE)
		TNT1 A 0 A_FireCustomMissile ("PowerSwordStab",0,0,0,3)
		PTST C 1
		PTST D 1 
		PTST CD 1 A_WeaponReady (WRF_ALLOWRELOAD|WRF_ALLOWZOOM|WRF_NOFIRE)
		PTST E 2 A_WeaponReady (WRF_ALLOWRELOAD|WRF_ALLOWZOOM|WRF_NOFIRE)
		PTST GH 1 A_WeaponReady (WRF_ALLOWRELOAD|WRF_ALLOWZOOM|WRF_NOFIRE)
		TNT1 A 1 A_WeaponReady (WRF_ALLOWRELOAD|WRF_ALLOWZOOM|WRF_NOFIRE)
		TNT1 A 0 A_ReFire ("ManaCheck2")
		TNT1 A 0 A_JumpIfInventory ("PowerSwordCheck",1, "PowerSwordAttackEnd")
		TNT1 A 0 A_PlaySound ("Sword/Powerdown")
		TNT1 A 0 A_Jump (256, "SwordAttackEnd")
		goto SwordAttackEnd
	PowerSwordAttack:
		TNT1 A 0
		TNT1 A 0
		PSRD DE 1 Bright 
		TNT1 A 0 A_GiveInventory ("UsingSword",1)
		PSRD F 1 Bright A_PlaySound("blaz/PowerAttack",CHAN_VOICE) 
		TNT1 A 0 A_PlaySound("PoweredZarach/Swish")
		TNT1 A 0 A_GunFlash ("RingSwordCheck",GFF_NOEXTCHANGE)
		PSRD J 0 A_FireCustomMissile("Powercleave")
		PSRD HI 1 Bright 
		PSRD J 2 Bright 
		PSRD KL 3 Bright A_WeaponReady (WRF_NOPRIMARY|WRF_ALLOWRELOAD|WRF_ALLOWZOOM)
		TNT1 A 1 A_WeaponReady (WRF_NOPRIMARY|WRF_ALLOWRELOAD|WRF_ALLOWZOOM)
		TNT1 A 0 A_ReFire ("ManaCheck1")
		TNT1 A 0 A_JumpIfInventory ("PowerSwordCheck",1, "PowerSwordAttackEnd")
		TNT1 A 0 A_PlaySound ("Sword/Powerdown")
		TNT1 A 0 A_Jump (256, "SwordAttackEnd")
		goto SwordAttackEnd
	ManaCheck1:
		TNT1 A 0
		TNT1 A 1 A_JumpIfInventory ("PowerSwordCheck",1, "PowerBackSlash")
		TNT1 A 0 A_PlaySound ("Sword/Powerdown")
		TNT1 A 1
		goto SwordStrike
	PowerBackSlash:
		PBKS BCD 1 Bright 
		TNT1 A 0 A_GiveInventory ("UsingSword",1)
		TNT1 A 0 A_GunFlash ("RingSwordCheck",GFF_NOEXTCHANGE)
		PBKS J 0 A_FireCustomMissile("PowerBackSlash")
		PBKS E 2 Bright A_PlaySound("blaz/PowerAttack",CHAN_VOICE) 
		TNT1 A 0 A_PlaySound("PoweredZarach/Swish")
		PBKS FGG 1 Bright 
		PBKS HI 3 Bright A_WeaponReady (WRF_NOPRIMARY|WRF_ALLOWRELOAD|WRF_ALLOWZOOM)
		TNT1 A 1 A_WeaponReady (WRF_NOPRIMARY|WRF_ALLOWRELOAD|WRF_ALLOWZOOM)
		TNT1 A 0 A_ReFire ("ManaCheck2")
		TNT1 A 0 A_JumpIfInventory ("PowerSwordCheck",1, "PowerSwordAttackEnd")
		TNT1 A 0 A_PlaySound ("Sword/Powerdown")
		TNT1 A 0 A_Jump (256, "SwordAttackEnd")
		goto SwordAttackEnd
	ManaCheck2:
		TNT1 A 0
		TNT1 A 1 A_JumpIfInventory ("PowerSwordCheck",1, "PowerSwordAttack")
		TNT1 A 0 A_PlaySound ("Sword/Powerdown")
		TNT1 A 1
		goto SwordStrike
	
//-------------------------------------------------------------------------------------------------------------------------------
//Flash states for ring attacks
	RingThrustCheck:
		TNT1 A 0
		TNT1 A 1
		TNT1 A 0 A_JumpIfInventory ("ATKringPowerup", 1, "RingThrust")
		stop
	RingThrust:
		TNT1 A 0
		TNT1 A 0 A_PlaySound ("Zarach/RingAttack1",0)
		TNT1 A 1 A_FireCustomMissile ("AtkRingThrust")
		Stop
	
	RingSwordCheck:
		TNT1 A 0
		TNT1 A 1
		TNT1 A 0 A_JumpIfInventory ("ATKringPowerup", 1, "RingSword")
		stop
	RingSword:
		TNT1 A 0
		TNT1 A 0 A_PlaySound ("Zarach/RingAttack2",0)
		TNT1 A 1 A_FireCustomMissile ("AtkRingWave")
		Stop
		
	RingPunchCheck:
		TNT1 A 0
		TNT1 A 1
		TNT1 A 0 A_JumpIfInventory ("ATKringPowerup", 1, "RingPunch")
		stop
	RingPunch:
		TNT1 A 0
		TNT1 A 0 A_PlaySound ("BlazFists/RingShot",5,0.70)
		TNT1 A 1 A_FireCustomMissile ("AtkRingFist",random(-3,3),0,Random(-2,2),-1,0,random(-3,3))
		Stop
		
//Upppercut stuff AND ring attacks
	UpperCutThrower:
		TNT1 A 0
		TNT1 A 0 A_JumpIfInventory ("PowerSwordCheck", 1, "PowerUpperCut")
		TNT1 A 1 A_FireCustomMissile ("UpperCut")
		TNT1 A 0 A_JumpIfInventory ("ATKringPowerup", 1, "RingUpperCut")
		stop
	PowerUpperCut:
		TNT1 A 1 A_FireCustomMissile ("PowerUpperCut")
		TNT1 A 0 A_JumpIfInventory ("ATKringPowerup", 1, "RingUpperCut")
		stop
	RingUpperCut:
		TNT1 A 0
		TNT1 A 0 A_PlaySound ("Subweapons/mageFist",6,0.90)
		TNT1 A 1 A_FireCustomMissile ("ATKringUpperCut")
		stop
		


//--Fatal DRAW Attack--

	FatalDrawSheathe:
		TNT1 A 0
		TNT1 A 0 A_JumpIfInventory ("PowerSwordCheck",1, "PowerSheathe")
		SLWR BCD 1
		TNT1 A 1
		FDSH BC 1
		FDSH DEG 1
		FDSH F 1		
		TNT1 A 0 A_PlaySound ("FatalDraw/sheathe",0)
		FDSH H 2
		TNT1 A 0 a_quake (3,6,0,4,"silence")
		FDSH I 1
		FDSH H 1
		FDSH I 1
		TNT1 A 0 A_PlaySound ("FatalDraw/charge",6)
		FDSH JKL 1 bright
		TNT1 A 0 A_PlaySound ("Blaz/focus",CHAN_VOICE)
		TNT1 A 0 A_GiveInventory ("FatalDrawToken",1)
		goto FatalDrawReady
	PowerSheathe:
		PLWR BCD 1
		TNT1 A 1
		FDSH BC 1
		FDSH DEG 1
		FDSH F 1		
		TNT1 A 0 A_PlaySound ("FatalDraw/sheathe",0)
		FDSH H 2
		TNT1 A 0 a_quake (3,6,0,4,"silence")
		FDSH I 1
		FDSH H 1
		FDSH I 1
		TNT1 A 0 A_PlaySound ("FatalDraw/charge",6)
		FDSH JKL 1 bright
		TNT1 A 0 A_PlaySound ("Blaz/focus",CHAN_VOICE)
		TNT1 A 0 A_GiveInventory ("FatalDrawToken",1)
		goto FatalDrawReady
	FatalDrawReady:
		TNT1 A 0 a_quake (1,18,0,3,"silence")
		TNT1 A 0 A_JumpIfInventory ("BarrelToken", 1, "SelectBarrel")
		TNT1 A 0 A_JumpIfInventory ("GoldenBarrelToken", 1, "SelectGoldenBarrel")
		TNT1 A 0 A_JumpIfInventory ("UnleasherCancel", 1, "DrawCancel")
		FDSH MNO 3 BRIGHT A_WeaponReady (WRF_NOSWITCH)
		TNT1 A 0 A_JumpIfInventory ("UnleasherCancel", 1, "DrawCancel")
		TNT1 A 0 A_JumpIfInventory ("BarrelToken", 1, "SelectBarrel")
		TNT1 A 0 A_JumpIfInventory ("GoldenBarrelToken", 1, "SelectGoldenBarrel")
		loop
	FatalDraw:
		TNT1 A 0
		SRDG A 0 A_JumpIfInventory ("UnarmedCheck", 1, "100CrackFist")
		FDAT AABC 1 bright A_StopSound (6)
		TNT1 A 2
		TNT1 A 0 A_TakeInventory ("FatalDrawGo", 99)
		TNT1 A 0 A_StopSound (CHAN_VOICE)
		TNT1 A 0 A_PlaySound ("Blaz/FatalSlash",0)
		FDAT DEF 1 bright
		TNT1 A 0 A_PlaySound ("FatalDraw/Attack",0)

		TNT1 A 0 A_RailAttack(0, -72, 0, "none", "none", RGF_SILENT, 0, "NullPuff", 0, 0, 40, 2, 4, 0, "FatalSlashPart10",-12)
		TNT1 A 0 A_RailAttack(0, -66, 0, "none", "none", RGF_SILENT, 0, "NullPuff", 0, 0, 120, 2, 4, 0, "FatalSlashPart9",-11)
		TNT1 A 0 A_RailAttack(0, -60, 0, "none", "none", RGF_SILENT, 0, "NullPuff", 0, 0, 152, 2, 4, 0, "FatalSlashPart8",-10)
		TNT1 A 0 A_RailAttack(0, -54, 0, "none", "none", RGF_SILENT, 0, "NullPuff", 0, 0, 184, 2, 4, 0, "FatalSlashPart7",-9)
		TNT1 A 0 A_RailAttack(0, -48, 0, "none", "none", RGF_SILENT, 0, "NullPuff", 0, 0, 208, 2, 4, 0, "FatalSlashPart6",-8)
		TNT1 A 0 A_RailAttack(0, -42, 0, "none", "none", RGF_SILENT, 0, "NullPuff", 0, 0, 210, 2, 4, 0, "FatalSlashPart5",-7)
		TNT1 A 0 A_RailAttack(0, -36, 0, "none", "none", RGF_SILENT, 0, "NullPuff", 0, 0, 236, 2, 4, 0, "FatalSlashPart4",-6)
		TNT1 A 0 A_RailAttack(0, -30, 0, "none", "none", RGF_SILENT, 0, "NullPuff", 0, 0, 244, 2, 4, 0, "FatalSlashPart3_2",-5)
		TNT1 A 0 A_RailAttack(0, -24, 0, "none", "none", RGF_SILENT, 0, "NullPuff", 0, 0, 250, 2, 4, 0, "FatalSlashPart3",-4)
		TNT1 A 0 A_RailAttack(0, -18, 0, "none", "none", RGF_SILENT, 0, "NullPuff", 0, 0, 254, 2, 4, 0, "FatalSlashPart2",-3)
		TNT1 A 0 A_RailAttack(0, -12, 0, "none", "none", RGF_SILENT, 0, "NullPuff", 0, 0, 257, 2, 4, 0,"FatalSlashPart1",-2)
		TNT1 A 0 A_RailAttack(0, -6, 0, "none", "none", RGF_SILENT, 0, "NullPuff", 0, 0, 259, 2, 4, 0,"FatalSlashPart1",-1)

		TNT1 A 0 A_RailAttack(0, 72, 0, "none", "none", RGF_SILENT, 0, "NullPuff", 0, 0, 40, 2, 4, 0, "FatalSlashPart10",12)
		TNT1 A 0 A_RailAttack(0, 66, 0, "none", "none", RGF_SILENT, 0, "NullPuff", 0, 0, 120, 2, 4, 0, "FatalSlashPart9",11)
		TNT1 A 0 A_RailAttack(0, 60, 0, "none", "none", RGF_SILENT, 0, "NullPuff", 0, 0, 152, 2, 4, 0, "FatalSlashPart8",10)
		TNT1 A 0 A_RailAttack(0, 54, 0, "none", "none", RGF_SILENT, 0, "NullPuff", 0, 0, 184, 2, 4, 0, "FatalSlashPart7",9)
		TNT1 A 0 A_RailAttack(0, 48, 0, "none", "none", RGF_SILENT, 0, "NullPuff", 0, 0, 208, 2, 4, 0, "FatalSlashPart6",8)
		TNT1 A 0 A_RailAttack(0, 42, 0, "none", "none", RGF_SILENT, 0, "NullPuff", 0, 0, 220, 2, 4, 0, "FatalSlashPart5",7)
		TNT1 A 0 A_RailAttack(0, 36, 0, "none", "none", RGF_SILENT, 0, "NullPuff", 0, 0, 236, 2, 4, 0, "FatalSlashPart4",6)
		TNT1 A 0 A_RailAttack(0, 30, 0, "none", "none", RGF_SILENT, 0, "NullPuff", 0, 0, 244, 2, 4, 0, "FatalSlashPart3_2",5)
		TNT1 A 0 A_RailAttack(0, 24, 0, "none", "none", RGF_SILENT, 0, "NullPuff", 0, 0, 250, 2, 4, 0, "FatalSlashPart3",4)
		TNT1 A 0 A_RailAttack(0, 18, 0, "none", "none", RGF_SILENT, 0, "NullPuff", 0, 0, 254, 2, 4, 0, "FatalSlashPart2",3)
		TNT1 A 0 A_RailAttack(0, 12, 0, "none", "none", RGF_SILENT, 0, "NullPuff", 0, 0, 257, 2, 4, 0,"FatalSlashPart1",2)
		TNT1 A 0 A_RailAttack(0, 6, 0, "none", "none", RGF_SILENT, 0, "NullPuff", 0, 0, 259, 2, 4, 0,"FatalSlashPart1",1)
		TNT1 A 0 A_RailAttack(0, 0, 0, "none", "none", RGF_SILENT, 0, "NullPuff", 0, 0, 260, 2, 4, 0, "FatalSlashPart1")


		TNT1 A 0 A_FireCustomMissile ("FatalSlash",0,0,-45)
		TNT1 A 0 A_FireCustomMissile ("FatalSlash",0,0,-35)
		TNT1 A 0 A_FireCustomMissile ("FatalSlash",0,0,-25)
		TNT1 A 0 A_FireCustomMissile ("FatalSlash",0,0,-15)
		TNT1 A 0 A_FireCustomMissile ("FatalSlash",0,0,15)
		TNT1 A 0 A_FireCustomMissile ("FatalSlash",0,0,25)
		TNT1 A 0 A_FireCustomMissile ("FatalSlash",0,0,35)
		TNT1 A 0 A_FireCustomMissile ("FatalSlash",0,0,45)
		TNT1 A 0 A_FireCustomMissile ("FatalSlash",0,0,0)
		//TNT1 A 0 A_FireCustomMissile ("Fatalwave")
		FDAT GH 1 bright
		TNT1 A 0 A_TakeInventory ("FatalDrawToken",99)
		TNT1 A 15
		TNT1 A 0 A_JumpIfInventory ("PowerSwordCheck",1, "PowerSwordAttackEnd")
		TNT1 A 0 A_Jump (256,"SwordAttackEnd")
		goto SwordAttackEnd
	DrawCancel:
		TNT1 A 0
		TNT1 A 0 A_JumpIfInventory ("UnarmedCheck",1, "Unarmedcancel")
		TNT1 A 0 A_JumpIfInventory ("PowerSwordCheck",1, "PowerCancel")
		TNT1 A 0 A_TakeInventory ("FatalDrawGo", 99)
		TNT1 A 0 A_TakeInventory ("FatalDrawToken",99)
		FDAT ABC 1 A_StopSound (6)
		TNT1 A 1
		SLWR DBA 1 A_WeaponReady
		TNT1 A 0 A_Jump (256,"SwordAttackEnd")
		goto SwordAttackEnd
	PowerCancel:
		TNT1 A 0
		TNT1 A 0 A_TakeInventory ("FatalDrawGo", 99)
		TNT1 A 0 A_TakeInventory ("FatalDrawToken",99)
		FDAT ABC 1 A_StopSound (6)
		TNT1 A 1
		PLWR DBA 1 A_WeaponReady
		TNT1 A 0 A_Jump (256,"PowerSwordAttackEnd")
		goto PowerSwordAttackEnd
	Unarmedcancel:
		TNT1 A 0
		TNT1 A 0 A_TakeInventory ("FatalDrawGo", 99)
		TNT1 A 0 A_TakeInventory ("FatalDrawToken",99)
		TNT1 A 1 A_StopSound (6)
		BZKC BA 1
		TNT1 A 0 A_Jump (256,"PunchAttackEnd")
		goto PunchAttackEnd
		

	FatalFist:
		UNAR ABCD 1
		BZKC ABCD 1
		BZKC EF 1
		BZKC G 1 A_PlaySound ("Fists/KnuckleCrack",0)
		TNT1 A 0 A_PlaySound ("FatalDraw/charge",0)
		TNT1 A 0 A_PlaySound ("Blaz/focus",CHAN_VOICE)
		TNT1 A 0 A_GiveInventory ("FatalDrawToken",1)
		BZKC HIJKLMN 1
		goto FatalFistReady
	FatalFistReady:
		TNT1 A 0 a_quake (1,2,0,3,"silence")
		TNT1 A 0 A_JumpIfInventory ("BarrelToken", 1, "SelectBarrel")
		TNT1 A 0 A_JumpIfInventory ("GoldenBarrelToken", 1, "SelectGoldenBarrel")
		TNT1 A 0 A_JumpIfInventory ("UnleasherCancel", 1, "DrawCancel")
		BZKC N 2 bright A_WeaponReady (WRF_NOSWITCH)
		TNT1 A 0 A_JumpIfInventory ("BarrelToken", 1, "SelectBarrel")
		TNT1 A 0 A_JumpIfInventory ("GoldenBarrelToken", 1, "SelectGoldenBarrel")
		TNT1 A 0 A_JumpIfInventory ("UnleasherCancel", 1, "DrawCancel")
		BZKC N 2 bright A_WeaponReady (WRF_NOSWITCH)
		TNT1 A 0 A_JumpIfInventory ("BarrelToken", 1, "SelectBarrel")
		TNT1 A 0 A_JumpIfInventory ("GoldenBarrelToken", 1, "SelectGoldenBarrel")
		TNT1 A 0 A_JumpIfInventory ("UnleasherCancel", 1, "DrawCancel")
		BZKC N 2 A_WeaponReady (WRF_NOSWITCH)
		TNT1 A 0 A_JumpIfInventory ("BarrelToken", 1, "SelectBarrel")
		TNT1 A 0 A_JumpIfInventory ("GoldenBarrelToken", 1, "SelectGoldenBarrel")
		TNT1 A 0 A_JumpIfInventory ("UnleasherCancel", 1, "DrawCancel")
		BZKC N 2 A_WeaponReady (WRF_NOSWITCH)
		TNT1 A 0 A_JumpIfInventory ("BarrelToken", 1, "SelectBarrel")
		TNT1 A 0 A_JumpIfInventory ("GoldenBarrelToken", 1, "SelectGoldenBarrel")
		TNT1 A 0 A_JumpIfInventory ("UnleasherCancel", 1, "DrawCancel")
		BZCF ABBCCCDDD 1 bright A_WeaponReady (WRF_NOSWITCH)
		TNT1 A 0 A_JumpIfInventory ("BarrelToken", 1, "SelectBarrel")
		TNT1 A 0 A_JumpIfInventory ("GoldenBarrelToken", 1, "SelectGoldenBarrel")
		TNT1 A 0 A_JumpIfInventory ("UnleasherCancel", 1, "DrawCancel")
		loop
	100CrackFist:
		TNT1 A 0
		TNT1 A 0 A_PlaySound ("Blaz/FOTNStart",0)
		TNT1 A 8 A_StopSound (6)
		TNT1 A 0 A_TakeInventory ("FatalDrawGo", 99)
		TNT1 A 0 A_TakeInventory ("SpiritForce",999)
		TNT1 A 0 A_PlaySound ("Blaz/FOTNLoop",6,1,1)
		Goto ATATATATA
	ATATATATA:
		FOTN A 1 A_PlaySound ("Subweapons/CrackFistswing",0)
		FOTN B 1 A_FireCustomMissile ("CrackFist",random(-5,5),0,-5,0,0,random(-4,4))
		FOTN C 1 A_FireCustomMissile ("CrackFist",random(-5,5),0,-5,0,0,random(-4,4))
		FOTN D 1 A_PlaySound ("Subweapons/CrackFistswing",0)
		FOTN E 1 A_FireCustomMissile ("CrackFist",random(-5,5),0,5,0,0,random(-4,4))
		FOTN F 1 A_FireCustomMissile ("CrackFist",random(-5,5),0,5,0,0,random(-4,4))
		FOTN G 1 A_PlaySound ("Subweapons/CrackFistswing",0)
		FOTN H 1 A_FireCustomMissile ("CrackFist",random(-5,5),0,-5,0,0,random(-4,4))
		FOTN I 1 A_FireCustomMissile ("CrackFist",random(-5,5),0,-5,0,0,random(-4,4))
		FOTN J 1 A_PlaySound ("Subweapons/CrackFistswing",0)
		FOTN K 1 A_FireCustomMissile ("CrackFist",random(-5,5),0,5,0,0,random(-4,4))
		FOTN L 1 A_FireCustomMissile ("CrackFist",random(-5,5),0,5,0,0,random(-4,4))
		FOTN M 1 A_PlaySound ("Subweapons/CrackFistswing",0)
		FOTN N 1 A_FireCustomMissile ("CrackFist",random(-5,5),0,-5,0,0,random(-4,4))
		FOTN O 1 A_FireCustomMissile ("CrackFist",random(-5,5),0,-5,0,0,random(-4,4))
		FOTN P 1 A_PlaySound ("Subweapons/CrackFistswing",0)
		FOTN Q 1 A_FireCustomMissile ("CrackFist",random(-5,5),0,5,0,0,random(-4,4))
		FOTN R 1 A_FireCustomMissile ("CrackFist",random(-5,5),0,5,0,0,random(-4,4))
		TNT1 A 0 A_GiveInventory ("Fistloop",1)
		TNT1 A 0 A_JumpIfInventory ("Fistloop", 8, "100CrackFistFinisher")
		loop
	100CrackFistFinisher:
		TNT1 A 0
		TNT1 A 0 A_StopSound (6)
		TNT1 A 4
		TNT1 A 0 A_TakeInventory ("Fistloop",99)
		TNT1 A 0 A_Recoil (-5)
		TNT1 A 0 A_PlaySound ("Blaz/FOTNend",0)
		TNT1 A 0 A_PlaySound ("Subweapons/Haymakerswing")
		TNT1 A 0 A_TakeInventory ("FatalDrawToken",99)
		FOTN D 1 
		FOTN E 1 
		TNT1 A 0 A_PlaySound ("Subweapons/Shielddash")
		FOTN F 1 A_FireCustomMissile ("FinalCrackFist",0,0,5)
		FOTN F 6 
		FOTN FED 2	
		TNT1 A 0 A_Jump (256,"GrappleFinish")
		goto GrappleFinish

//-------------------------------------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------------------------------

//******************************************************************************************************
//******************************************************************************************************
// ALTFIRE ACTIONS
//******************************************************************************************************
//******************************************************************************************************

		
//==SUB WEAPONS==//

	Altfire:
		TNT1 A 0
		TNT1 A 0
		TNT1 A 0 A_GiveInventory ("UsingSubweapon", 1)
		TNT1 A 0 A_JumpIfInventory ("BarrelToken", 1, "BarrelCancel")
		TNT1 A 0 A_JumpIfInventory ("GoldenBarrelToken", 1, "GoldenBarrelCancel")
		SRDG A 0 A_JumpIfInventory ("FatalDrawToken", 1, "DrawCancel")
		TNT1 A 0 A_JumpIfInventory ("UnarmedCheck", 1, "UnarmedAltfireStart")
		TNT1 A 0 A_JumpIfInventory ("PowerSwordCheck",1, "PowerSwordAltfireStart")
		TNT1 A 0 A_JumpIfInventory ("SubweaponShotCount", 1, "StartSubweapon")
		TNT1 A 0 A_PlaySound ("SubWeapons/noaltfire",0)
		SRDG A 8 A_WeaponReady (WRF_NOFIRE)
		SRDG A 20 A_WeaponReady (WRF_NOSECONDARY)
		goto RealReady
	
	//Checking ammo while unarmed
	UnarmedAltfireStart:
		TNT1 A 0
		TNT1 A 0
		TNT1 A 0 A_JumpIfInventory ("SubweaponShotCount", 1, "StartUnarmedSubweapon")
		TNT1 A 0 A_PlaySound ("SubWeapons/noaltfire",0)
		UNAR A 8 A_WeaponReady (WRF_NOFIRE)
		UNAR A 20 A_WeaponReady (WRF_NOSECONDARY)
		goto RealReady
		
	//Checking ammo with power sword active
	PowerSwordAltfireStart:
		TNT1 A 0
		TNT1 A 0
		TNT1 A 0 A_JumpIfInventory ("SubweaponShotCount", 1, "StartPowerSwordSubweapon")
		TNT1 A 0 A_PlaySound ("SubWeapons/noaltfire",0)
		PSRD A 8 A_WeaponReady (WRF_NOFIRE)
		PSRD A 20 A_WeaponReady (WRF_NOSECONDARY)
		goto RealReady
	
	//Got ammo? Start it up
	StartSubweapon:
		TNT1 A 0
		TNT1 A 0 A_JumpIfinventory ("SubweaponRefire", 1, "SubweaponCheck")
		SRDG B 1
		goto SubweaponCheck	
	StartUnarmedSubweapon:
		TNT1 A 0
		TNT1 A 0 A_JumpIfinventory ("SubweaponRefire", 1, "SubweaponCheck")
		UNAR B 1
		goto SubweaponCheck
	StartPowerSwordSubweapon:
		TNT1 A 0
		TNT1 A 0 A_JumpIfinventory ("SubweaponRefire", 1, "SubweaponCheck")
		PSRD B 1
		goto SubweaponCheck
		
	//Ending animations for unarmed and power sword altfires
	UnarmedAltfireEnd:
		UNAR CBA 1 A_WeaponReady (WRF_NOSWITCH)
		Goto RealReady
	PowerSwordAltfireEnd:
		PSRD CBA 1 A_WeaponReady (WRF_NOSWITCH)
		goto RealReady
		
	SubweaponCheck:
		TNT1 A 0
		TNT1 A 0
		TNT1 A 0 A_JumpIfInventory ("LanceCheck", 1, "LanceThrow")
		TNT1 A 0 A_JumpIfInventory ("MattockCheck", 1, "MattockThrow")
		TNT1 A 0 A_JumpIfInventory ("ShieldCheck", 1, "ShieldStart")		
		TNT1 A 0 A_JumpIfInventory ("DaggerCheck", 1, "DaggerThrow")
		TNT1 A 0 A_JumpIfInventory ("FireBottleCheck", 1, "FireBottleThrow")
		TNT1 A 0 A_JumpIfInventory ("BoomerangCheck", 1, "BoomerangThrow")
		TNT1 A 0 A_JumpIfInventory ("HammerCheck", 1, "HammerThrow")
 		TNT1 A 0 A_JumpIfInventory ("UnarmedCheck", 1, "UnarmedReady")
		SRDG A 1 A_WeaponReady (WRF_NOFIRE)
		goto RealReady


	//Lance
	
	LanceThrow:
		SBT1 AAB 1
		TNT1 A 0 A_TakeInventory ("SubweaponPower",20)
		TNT1 A 0 A_FireCustomMissile ("Lance",0,0,-5,1)
		TNT1 A 0 A_GiveInventory ("SubweaponGaugeFreezer", 1)
		SBTX A 1 A_PlaySound ("Subweapons/LanceThrow")
		SBTX BCD 2 A_WeaponReady (WRF_NOSECONDARY|WRF_NOSWITCH)
		TNT1 A 2 A_WeaponReady (WRF_NOSECONDARY|WRF_NOSWITCH)
		TNT1 A 0 A_GiveInventory ("SubweaponRefire",1)
		TNT1 A 0 A_JumpIfInventory ("UnarmedCheck", 1, "UnarmedAltfireEnd")
		TNT1 A 0 A_JumpIfInventory ("PowerSwordCheck",1, "PowerSwordAltfireEnd")
		SRDG CBA 1 A_WeaponReady (WRF_NOSWITCH)
		goto RealReady
		
	//Mattock

	MattockThrow:
		SBT2 AABC 1
		TNT1 A 0 A_TakeInventory ("SubweaponPower",25)
		TNT1 A 0 A_FireCustomMissile ("PowerMattock",0,0,-5,1)
		TNT1 A 0 A_GiveInventory ("SubweaponGaugeFreezer", 1)
		SBTX A 1 A_PlaySound ("Subweapons/MattockThrow")
		SBTX BCCDD 2 A_WeaponReady (WRF_NOSECONDARY|WRF_NOSWITCH)
		TNT1 A 4 A_WeaponReady (WRF_NOSECONDARY|WRF_NOSWITCH)
		TNT1 A 0 A_GiveInventory ("SubweaponRefire",1)
		TNT1 A 0 A_JumpIfInventory ("UnarmedCheck", 1, "UnarmedAltfireEnd")
		TNT1 A 0 A_JumpIfInventory ("PowerSwordCheck",1, "PowerSwordAltfireEnd")
		SRDG CBA 1 A_WeaponReady (WRF_NOSWITCH)
		goto RealReady

		
	//Shield

	ShieldStart:
		TNT1 A 0 A_GiveInventory ("SubweaponGaugeFreezer", 1)
		SBT3 A 1	
		TNT1 A 0 A_SpawnItemEx("ShieldParry",-32,55,(sin(pitch)*-63)+35,0,0,0,-270,32)
		TNT1 A 0 A_SpawnItemEx("ShieldParry",-16,55,(sin(pitch)*-63)+35,0,0,0,-270,32)
		TNT1 A 0 A_SpawnItemEx("ShieldParry",0,55,(sin(pitch)*-63)+35,0,0,0,-270,32)
		TNT1 A 0 A_SpawnItemEx("ShieldParry",16,55,(sin(pitch)*-63)+35,0,0,0,-270,32)
		TNT1 A 0 A_SpawnItemEx("ShieldParry",32,55,(sin(pitch)*-63)+35,0,0,0,-270,32)
		TNT1 A 0 A_SpawnItemEx("ShieldParry",-32,55,(sin(pitch)*-63)+20,0,0,0,-270,32)
		TNT1 A 0 A_SpawnItemEx("ShieldParry",-16,55,(sin(pitch)*-63)+20,0,0,0,-270,32)
		TNT1 A 0 A_SpawnItemEx("ShieldParry",0,55,(sin(pitch)*-63)+20,0,0,0,-270,32)
		TNT1 A 0 A_SpawnItemEx("ShieldParry",16,55,(sin(pitch)*-63)+20,0,0,0,-270,32)
		TNT1 A 0 A_SpawnItemEx("ShieldParry",32,55,(sin(pitch)*-63)+20,0,0,0,-270,32)
		TNT1 A 0 A_SpawnItemEx("ShieldParry",-32,55,(sin(pitch)*-63)+5,0,0,0,-270,32)
		TNT1 A 0 A_SpawnItemEx("ShieldParry",-16,55,(sin(pitch)*-63)+5,0,0,0,-270,32)
		TNT1 A 0 A_SpawnItemEx("ShieldParry",0,55,(sin(pitch)*-63)+5,0,0,0,-270,32)
		TNT1 A 0 A_SpawnItemEx("ShieldParry",16,55,(sin(pitch)*-63)+5,0,0,0,-270,32)
		TNT1 A 0 A_SpawnItemEx("ShieldParry",32,55,(sin(pitch)*-63)+5,0,0,0,-270,32)
		SBT3 B 1	

		TNT1 A 0 A_SpawnItemEx("ShieldParry",-32,55,(sin(pitch)*-63)+35,0,0,0,-270,32)
		TNT1 A 0 A_SpawnItemEx("ShieldParry",-16,55,(sin(pitch)*-63)+35,0,0,0,-270,32)
		TNT1 A 0 A_SpawnItemEx("ShieldParry",0,55,(sin(pitch)*-63)+35,0,0,0,-270,32)
		TNT1 A 0 A_SpawnItemEx("ShieldParry",16,55,(sin(pitch)*-63)+35,0,0,0,-270,32)
		TNT1 A 0 A_SpawnItemEx("ShieldParry",32,55,(sin(pitch)*-63)+35,0,0,0,-270,32)
		TNT1 A 0 A_SpawnItemEx("ShieldParry",-32,55,(sin(pitch)*-63)+20,0,0,0,-270,32)
		TNT1 A 0 A_SpawnItemEx("ShieldParry",-16,55,(sin(pitch)*-63)+20,0,0,0,-270,32)
		TNT1 A 0 A_SpawnItemEx("ShieldParry",0,55,(sin(pitch)*-63)+20,0,0,0,-270,32)
		TNT1 A 0 A_SpawnItemEx("ShieldParry",16,55,(sin(pitch)*-63)+20,0,0,0,-270,32)
		TNT1 A 0 A_SpawnItemEx("ShieldParry",32,55,(sin(pitch)*-63)+20,0,0,0,-270,32)
		TNT1 A 0 A_SpawnItemEx("ShieldParry",-32,55,(sin(pitch)*-63)+5,0,0,0,-270,32)
		TNT1 A 0 A_SpawnItemEx("ShieldParry",-16,55,(sin(pitch)*-63)+5,0,0,0,-270,32)
		TNT1 A 0 A_SpawnItemEx("ShieldParry",0,55,(sin(pitch)*-63)+5,0,0,0,-270,32)
		TNT1 A 0 A_SpawnItemEx("ShieldParry",16,55,(sin(pitch)*-63)+5,0,0,0,-270,32)
		TNT1 A 0 A_SpawnItemEx("ShieldParry",32,55,(sin(pitch)*-63)+5,0,0,0,-270,32)
		SBT3 C 1

		TNT1 A 0 A_SpawnItemEx("ShieldParry",-32,55,(sin(pitch)*-63)+35,0,0,0,-270,32)
		TNT1 A 0 A_SpawnItemEx("ShieldParry",-16,55,(sin(pitch)*-63)+35,0,0,0,-270,32)
		TNT1 A 0 A_SpawnItemEx("ShieldParry",0,55,(sin(pitch)*-63)+35,0,0,0,-270,32)
		TNT1 A 0 A_SpawnItemEx("ShieldParry",16,55,(sin(pitch)*-63)+35,0,0,0,-270,32)
		TNT1 A 0 A_SpawnItemEx("ShieldParry",32,55,(sin(pitch)*-63)+35,0,0,0,-270,32)
		TNT1 A 0 A_SpawnItemEx("ShieldParry",-32,55,(sin(pitch)*-63)+20,0,0,0,-270,32)
		TNT1 A 0 A_SpawnItemEx("ShieldParry",-16,55,(sin(pitch)*-63)+20,0,0,0,-270,32)
		TNT1 A 0 A_SpawnItemEx("ShieldParry",0,55,(sin(pitch)*-63)+20,0,0,0,-270,32)
		TNT1 A 0 A_SpawnItemEx("ShieldParry",16,55,(sin(pitch)*-63)+20,0,0,0,-270,32)
		TNT1 A 0 A_SpawnItemEx("ShieldParry",32,55,(sin(pitch)*-63)+20,0,0,0,-270,32)
		TNT1 A 0 A_SpawnItemEx("ShieldParry",-32,55,(sin(pitch)*-63)+5,0,0,0,-270,32)
		TNT1 A 0 A_SpawnItemEx("ShieldParry",-16,55,(sin(pitch)*-63)+5,0,0,0,-270,32)
		TNT1 A 0 A_SpawnItemEx("ShieldParry",0,55,(sin(pitch)*-63)+5,0,0,0,-270,32)
		TNT1 A 0 A_SpawnItemEx("ShieldParry",16,55,(sin(pitch)*-63)+5,0,0,0,-270,32)
		TNT1 A 0 A_SpawnItemEx("ShieldParry",32,55,(sin(pitch)*-63)+5,0,0,0,-270,32)
		TNT1 A 0 A_GiveInventory ("ShieldDeployed",1)
		TNT1 A 0 A_TakeInventory ("SubweaponPower",15)
		TNT1 A 0 A_PlaySound ("Subweapons/GemShieldDeploy",0)
		TNT1 A 0 A_FireCustomMissile ("GemMelee",0,0,-5)
		SBT3 DE 1 A_GunFlash ("ParryCheck",GFF_NOEXTCHANGE)
		SBT3 F 1 A_GunFlash ("ParryCheck",GFF_NOEXTCHANGE)
		goto ShieldBlock
	
	ParryCheck:
		TNT1 A 0
		TNT1 A 1 A_JumpIfInventory ("GemParry",1,"CounterAttack")
		stop
	CounterAttack:
		TNT1 A 0
		TNT1 A 0 A_TakeInventory ("GemParry",99)
		TNT1 A 0 A_Quake(2, 10, 0, 32)
		TNT1 A 1 A_FireCustomMissile ("GemBeamSpawner",0,0,-5)
		stop
	ShieldBlock:
		TNT1 A 0
		SBT3 G 1 A_JumpIfInventory ("SubweaponPower", 1,"ShieldLoop")
		Goto ShieldBreak
		
	//AAAHH FFFFFUUUCK I HATE THIS ZANDRONUM
	//WHY DO YOU NOT HAVE ANONYMOUS FUNCTIONS!?
	
	ShieldLoop:
		TNT1 A 0
		TNT1 A 0 A_TakeInventory ("BlockedAthing",99)

		TNT1 A 0 A_SpawnItemEx("ShieldBlocker",-32,25,(sin(pitch)*-63)+35,0,0,0,-270,32)
		TNT1 A 0 A_SpawnItemEx("ShieldBlocker",-16,25,(sin(pitch)*-63)+35,0,0,0,-270,32)
		TNT1 A 0 A_SpawnItemEx("ShieldBlocker",0,25,(sin(pitch)*-63)+35,0,0,0,-270,32)
		TNT1 A 0 A_SpawnItemEx("ShieldBlocker",16,25,(sin(pitch)*-63)+35,0,0,0,-270,32)
		TNT1 A 0 A_SpawnItemEx("ShieldBlocker",32,25,(sin(pitch)*-63)+35,0,0,0,-270,32)
		TNT1 A 0 A_SpawnItemEx("ShieldBlocker",-32,25,(sin(pitch)*-63)+20,0,0,0,-270,32)
		TNT1 A 0 A_SpawnItemEx("ShieldBlocker",-16,25,(sin(pitch)*-63)+20,0,0,0,-270,32)
		TNT1 A 0 A_SpawnItemEx("ShieldBlocker",0,25,(sin(pitch)*-63)+20,0,0,0,-270,32)
		TNT1 A 0 A_SpawnItemEx("ShieldBlocker",16,25,(sin(pitch)*-63)+20,0,0,0,-270,32)
		TNT1 A 0 A_SpawnItemEx("ShieldBlocker",32,25,(sin(pitch)*-63)+20,0,0,0,-270,32)
		TNT1 A 0 A_SpawnItemEx("ShieldBlocker",-32,25,(sin(pitch)*-63)+5,0,0,0,-270,32)
		TNT1 A 0 A_SpawnItemEx("ShieldBlocker",-16,25,(sin(pitch)*-63)+5,0,0,0,-270,32)
		TNT1 A 0 A_SpawnItemEx("ShieldBlocker",0,25,(sin(pitch)*-63)+5,0,0,0,-270,32)
		TNT1 A 0 A_SpawnItemEx("ShieldBlocker",16,25,(sin(pitch)*-63)+5,0,0,0,-270,32)
		TNT1 A 0 A_SpawnItemEx("ShieldBlocker",32,25,(sin(pitch)*-63)+5,0,0,0,-270,32)
		TNT1 A 0 A_GiveInventory ("ShieldDeployed",1)
		TNT1 A 0 A_JumpIfInventory ("BlockedAthing",1, "ShieldRecoil")
		TNT1 A 0 A_TakeInventory ("SubweaponPower",1)
		TNT1 A 0 A_GiveInventory ("SubweaponGaugeFreezer", 1)
		SBT3 G 2 A_WeaponReady (WRF_NOSECONDARY|WRF_NOBOB|WRF_NOSWITCH|WRF_ALLOWRELOAD|WRF_ALLOWZOOM)

		TNT1 A 0 A_JumpIfInventory ("BlockedAthing",1, "ShieldRecoil")
		TNT1 A 0 A_Refire ("ShieldBlock")
		Goto ShieldLower
		
		
	//FFFFUUUUUUGGGGGG
	
	ShieldRecoil:
		TNT1 A 0
		TNT1 A 0 A_TakeInventory ("BlockedAthing",99)
		TNT1 A 0 A_WeaponReady (WRF_NOSECONDARY)
		
		TNT1 A 0 A_SpawnItemEx("ShieldBlocker",-8,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		TNT1 A 0 A_SpawnItemEx("ShieldBlocker",8,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		TNT1 A 0 A_SpawnItemEx("ShieldBlocker",24,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		TNT1 A 0 A_SpawnItemEx("ShieldBlocker",-8,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		TNT1 A 0 A_SpawnItemEx("ShieldBlocker",8,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		TNT1 A 0 A_SpawnItemEx("ShieldBlocker",24,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		TNT1 A 0 A_SpawnItemEx("ShieldBlocker",-8,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		TNT1 A 0 A_SpawnItemEx("ShieldBlocker",8,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		TNT1 A 0 A_SpawnItemEx("ShieldBlocker",24,30,(sin(pitch)*-63)+5,0,0,0,-270,32)
		TNT1 A 0 A_JumpIfInventory ("BlockedAthing",1, "ShieldRecoil")
		TNT1 A 0 A_ChangeVelocity(Cos(Pitch)*-5,0,Sin(Pitch)*10,1)
		TNT1 A 0 A_TakeInventory ("SubweaponPower",1)
		SBT3 H 1 A_WeaponReady (WRF_NOBOB|WRF_NOSECONDARY)

		TNT1 A 0 A_SpawnItemEx("ShieldBlocker",-8,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		TNT1 A 0 A_SpawnItemEx("ShieldBlocker",8,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		TNT1 A 0 A_SpawnItemEx("ShieldBlocker",24,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		TNT1 A 0 A_SpawnItemEx("ShieldBlocker",-8,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		TNT1 A 0 A_SpawnItemEx("ShieldBlocker",8,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		TNT1 A 0 A_SpawnItemEx("ShieldBlocker",24,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		TNT1 A 0 A_SpawnItemEx("ShieldBlocker",-8,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		TNT1 A 0 A_SpawnItemEx("ShieldBlocker",8,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		TNT1 A 0 A_SpawnItemEx("ShieldBlocker",24,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		TNT1 A 0 A_JumpIfInventory ("BlockedAthing",1, "ShieldRecoil")
		TNT1 A 0 A_GiveInventory ("SubweaponGaugeFreezer", 1)
		SBT3 I 1 A_WeaponReady (WRF_NOBOB|WRF_NOSECONDARY)

		TNT1 A 0 A_SpawnItemEx("ShieldBlocker",-8,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		TNT1 A 0 A_SpawnItemEx("ShieldBlocker",8,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		TNT1 A 0 A_SpawnItemEx("ShieldBlocker",24,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		TNT1 A 0 A_SpawnItemEx("ShieldBlocker",-8,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		TNT1 A 0 A_SpawnItemEx("ShieldBlocker",8,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		TNT1 A 0 A_SpawnItemEx("ShieldBlocker",24,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		TNT1 A 0 A_SpawnItemEx("ShieldBlocker",-8,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		TNT1 A 0 A_SpawnItemEx("ShieldBlocker",8,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		TNT1 A 0 A_SpawnItemEx("ShieldBlocker",24,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		TNT1 A 0 A_JumpIfInventory ("BlockedAthing",1, "ShieldRecoil")
		TNT1 A 0 A_WeaponReady (WRF_NOSECONDARY)
		TNT1 A 0 A_GiveInventory ("ShieldDeployed",1)
		TNT1 A 0 A_TakeInventory ("SubweaponPower",1)
		SBT3 J 1 A_WeaponReady (WRF_NOBOB|WRF_NOSECONDARY)
		TNT1 A 0 A_Refire ("ShieldBlock")
		Goto ShieldLower

	ShieldLower:
		TNT1 A 0
		TNT1 A 0
		TNT1 A 0 A_TakeInventory ("ShieldDeployed",99)
		TNT1 A 0 A_PlaySound ("Subweapons/GemShieldRetract",0)
		SBT3 KLL 1 A_WeaponReady (WRF_NOBOB||WRF_NOSECONDARY|WRF_NOSWITCH|WRF_ALLOWRELOAD|WRF_ALLOWZOOM)
		SBT3 MNO 2 A_WeaponReady (WRF_NOBOB||WRF_NOSECONDARY|WRF_NOSWITCH|WRF_ALLOWRELOAD|WRF_ALLOWZOOM)
		SBT3 P 6 A_WeaponReady (WRF_NOBOB||WRF_NOSECONDARY|WRF_NOSWITCH|WRF_ALLOWRELOAD|WRF_ALLOWZOOM)
		SBT3 QRS 2 A_WeaponReady (WRF_NOBOB||WRF_NOSECONDARY|WRF_NOSWITCH|WRF_ALLOWRELOAD|WRF_ALLOWZOOM)
		TNT1 A 3 A_WeaponReady (WRF_NOSECONDARY|WRF_NOSWITCH)
		TNT1 A 0 A_JumpIfInventory ("UnarmedCheck", 1, "UnarmedAltfireEnd")
		TNT1 A 0 A_JumpIfInventory ("PowerSwordCheck",1, "PowerSwordAltfireEnd")
		SRDG CBA 1 A_WeaponReady (WRF_NOSWITCH)
		goto RealReady
	ShieldBreak:
		TNT1 AA 0 A_SpawnItemEx ("GemShieldPiece",10,Random(-2,-9),Random(10,21),velx+random(8,12),random(-8,8),random(4,10),0,SXF_NOCHECKPOSITION)
		TNT1 A 0 A_PlaySound ("Blazter/Crack1",6)
		SBT3 T 3 A_Quake(2, 3, 0, 32)
		TNT1 AAA 0 A_SpawnItemEx ("GemShieldPiece",10,Random(-2,-9),Random(10,21),velx+random(8,12),random(-8,8),random(4,10),0,SXF_NOCHECKPOSITION)
		TNT1 A 0 A_PlaySound ("Blazter/Crack2",6)
		SBT3 U 3 A_Quake(2, 3, 0, 32)
		TNT1 AAAAA 0 A_SpawnItemEx ("GemShieldPiece",10,Random(-2,-9),Random(10,21),velx+random(8,12),random(-8,8),random(4,10),0,SXF_NOCHECKPOSITION)
		TNT1 A 0 A_PlaySound ("Blazter/Crack3",6)
		SBT3 W 3 A_Quake(2, 3, 0, 32)
		TNT1 AAAAAA 0 A_SpawnItemEx ("GemShieldPiece",10,Random(-2,-9),Random(10,21),velx+random(8,12),random(-8,8),random(4,10),0,SXF_NOCHECKPOSITION)
		TNT1 A 0 A_Recoil (20)
		TNT1 A 0 A_Quake(3, 15, 0, 32)
		TNT1 AAAAAA 0 A_SpawnItemEx ("GemShieldPiece",10,Random(-2,-9),Random(10,21),velx+random(8,12),random(-8,8),random(4,10),0,SXF_NOCHECKPOSITION)
		TNT1 AAAAAAAAAAAAAA 0 A_SpawnItemEx ("GemShieldPiece",10,Random(-2,-9),Random(10,21),velx+random(8,12),random(-10,10),random(4,10),0,SXF_NOCHECKPOSITION)
		TNT1 A 0 A_Blast (BF_AFFECTBOSSES|BF_NOIMPACTDAMAGE,180,260,30,"InvisibleFX","Silence")
		TNT1 A 0 A_PlaySound ("GeoRev/Break",0)
		SBT3 XYZ 2 bright A_SpawnItemEx ("GemShieldPiece",10,Random(-2,-9),Random(10,21),velx+random(8,12),random(-8,8),random(4,10),0,SXF_NOCHECKPOSITION)
		TNT1 A 12 A_WeaponReady (WRF_NOSECONDARY|WRF_NOSWITCH)
		TNT1 A 0 A_JumpIfInventory ("UnarmedCheck", 1, "UnarmedAltfireEnd")
		TNT1 A 0 A_JumpIfInventory ("PowerSwordCheck",1, "PowerSwordAltfireEnd")
		SRDG CBA 1 A_WeaponReady (WRF_NOSWITCH)
		goto RealReady
		
		

	//Dagger
	
	DaggerThrow:
		SBT4 AAB 1
		TNT1 A 0 A_PlaySound ("Subweapons/DaggerThrow")
		TNT1 A 0 A_PlaySound ("Subweapons/IceWoosh",0,0.90)
		TNT1 A 0 A_TakeInventory ("SubweaponPower",20)
		TNT1 A 0 A_FireCustomMissile("IceDagger",0,0,-2,-1)
		TNT1 A 0 A_FireCustomMissile("IceDagger",6,0,-2,-1,0,0)
		TNT1 A 0 A_FireCustomMissile("IceDagger",-6,0,-2,-1,0,0)
		TNT1 A 0 A_FireCustomMissile("IceDagger",12,0,-2,-1,0,0)
		TNT1 A 0 A_FireCustomMissile("IceDagger",-12,0,-2,-1,0,0)
		TNT1 A 0 A_GiveInventory ("SubweaponGaugeFreezer", 1)
		SBTX EF 1 A_WeaponReady (WRF_NOSECONDARY|WRF_NOSWITCH)
		TNT1 A 10 A_WeaponReady (WRF_NOSECONDARY|WRF_NOSWITCH)
		TNT1 A 0 A_GiveInventory ("SubweaponRefire",1)
		TNT1 A 4 A_WeaponReady (WRF_NOSWITCH)
		TNT1 A 0 A_JumpIfInventory ("UnarmedCheck", 1, "UnarmedAltfireEnd")
		TNT1 A 0 A_JumpIfInventory ("PowerSwordCheck",1, "PowerSwordAltfireEnd")
		SRDG CBA 1 A_WeaponReady (WRF_NOSWITCH)
		goto RealReady	

	//FireBottle

	FireBottleThrow:
		SBT5 AABC 1
		TNT1 A 0 A_TakeInventory ("SubweaponPower",100)
		TNT1 A 0 A_FireCustomMissile ("FireBottle",0,0,-5,1)
		TNT1 A 0 A_GiveInventory ("SubweaponGaugeFreezer", 1)
		TNT1 A 0 A_PlaySound ("BomberKnight/throw",0)
		SBTX A 1 
		SBTX BCDD 2 A_WeaponReady (WRF_NOSECONDARY|WRF_NOSWITCH)
		TNT1 A 4 A_WeaponReady (WRF_NOSECONDARY|WRF_NOSWITCH)
		TNT1 A 0 A_GiveInventory ("SubweaponRefire",1)
		TNT1 A 0 A_JumpIfInventory ("UnarmedCheck", 1, "UnarmedAltfireEnd")
		TNT1 A 0 A_JumpIfInventory ("PowerSwordCheck",1, "PowerSwordAltfireEnd")
		SRDG CBA 1 A_WeaponReady (WRF_NOSWITCH)
		goto RealReady

	//Boomerang
	
	BoomerangThrow:
		SBT6 AABC 1
		TNT1 A 0 A_TakeInventory ("SubweaponPower",100)
		TNT1 A 0 A_GiveInventory ("SubweaponGaugeFreezer", 1)
		TNT1 A 0 A_FireCustomMissile ("Boomerang",0,0,-5,1)
		SBTX A 1 
		SBTX BCD 2 A_WeaponReady (WRF_NOSECONDARY|WRF_NOSWITCH)
		TNT1 A 4 A_WeaponReady (WRF_NOSECONDARY|WRF_NOSWITCH)
		TNT1 A 0 A_GiveInventory ("SubweaponRefire",1)
		TNT1 A 0 A_JumpIfInventory ("UnarmedCheck", 1, "UnarmedAltfireEnd")
		TNT1 A 0 A_JumpIfInventory ("PowerSwordCheck",1, "PowerSwordAltfireEnd")
		SRDG CBA 1 A_WeaponReady (WRF_NOSWITCH)
		goto RealReady

	//Omen warHammer

	HammerThrow:
		TNT1 A 0 
		TNT1 A 0 
		SBT7 A 2
		SBT7 B 1
		SBT7 C 1 A_FireCustomMissile ("HammerMelee")
		TNT1 A 0 A_JumpIfInventory ("HammerHit", 1, "HammerImpact")
		TNT1 A 0 A_JumpIfInventory ("HammerMiss", 1, "HammerWall")
		SBT7 D 1 
		TNT1 A 0 A_JumpIfInventory ("HammerHit", 1, "HammerImpact")
		TNT1 A 0 A_JumpIfInventory ("HammerMiss", 1, "HammerWall")
		SBT7 D 1 
		TNT1 A 0 A_JumpIfInventory ("HammerHit", 1, "HammerImpact")
		TNT1 A 0 A_JumpIfInventory ("HammerMiss", 1, "HammerWall")
		TNT1 A 0 A_TakeInventory ("SubweaponPower",100)
		TNT1 A 0 A_GiveInventory ("SubweaponGaugeFreezer", 1)
		TNT1 A 0 A_ThrowGrenade ("CrashHammer",3,15,8,0)
		TNT1 A 0 A_TakeInventory ("HammerHit", 99)
		TNT1 A 0 A_TakeInventory ("HammerMiss", 99)
		SBTX A 1 
		SBTX BCDD 2 A_WeaponReady (WRF_NOSECONDARY|WRF_NOSWITCH)
		TNT1 A 8 A_WeaponReady (WRF_NOSECONDARY|WRF_NOSWITCH)
		TNT1 A 0 A_GiveInventory ("SubweaponRefire",1)
		TNT1 A 0 A_JumpIfInventory ("UnarmedCheck", 1, "UnarmedAltfireEnd")
		TNT1 A 0 A_JumpIfInventory ("PowerSwordCheck",1, "PowerSwordAltfireEnd")
		SRDG CBA 1 A_WeaponReady (WRF_NOSWITCH)
		goto RealReady

	HammerImpact:
		TNT1 A 0 
		SBT7 DEF 1 
		SBT7 GHIJ 2
		TNT1 A 0 A_TakeInventory ("HammerMiss", 99)
		SBT7 J 1 A_TakeInventory ("HammerHit", 99)
		TNT1 A 8
		SBT7 A 2
		SBT7 BCDD 1
		TNT1 A 0 A_ThrowGrenade ("CrashHammer",3,15,8,0)
		TNT1 A 0 A_TakeInventory ("HammerHit", 99)
		TNT1 A 0 A_TakeInventory ("HammerMiss", 99)
		TNT1 A 0 A_TakeInventory ("SubweaponPower",100)
		TNT1 A 0 A_GiveInventory ("SubweaponGaugeFreezer", 1)
		SBTX A 1 
		SBTX BCDD 2 A_WeaponReady (WRF_NOSECONDARY|WRF_NOSWITCH)
		TNT1 A 8 A_WeaponReady (WRF_NOSECONDARY|WRF_NOSWITCH)
		TNT1 A 0 A_GiveInventory ("SubweaponRefire",1)
		TNT1 A 0 A_JumpIfInventory ("UnarmedCheck", 1, "UnarmedAltfireEnd")
		TNT1 A 0 A_JumpIfInventory ("PowerSwordCheck",1, "PowerSwordAltfireEnd")
		SRDG CBA 1 A_WeaponReady (WRF_NOSWITCH)
		goto RealReady
	HammerWall:
		SBT7 D 1
		TNT1 A 0 A_Recoil (15)
		SBT7 KLM 1
		TNT1 A 0 A_TakeInventory ("HammerHit", 99)
		TNT1 A 0 A_TakeInventory ("HammerMiss", 99)
		TNT1 A 8 A_WeaponReady (WRF_NOSECONDARY|WRF_NOSWITCH)
		TNT1 A 0 A_GiveInventory ("SubweaponRefire",1)
		TNT1 A 0 A_JumpIfInventory ("UnarmedCheck", 1, "UnarmedAltfireEnd")
		TNT1 A 0 A_JumpIfInventory ("PowerSwordCheck",1, "PowerSwordAltfireEnd")
		SRDG CBA 1 A_WeaponReady (WRF_NOSWITCH)
		goto RealReady


	
//-------------------------------------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------------------------------------

//******************************************************************************************************
//******************************************************************************************************
//BARREL ACTIONS (lumping both primary and altfires together here, it's easier for me)
//******************************************************************************************************
//******************************************************************************************************
	
	SelectBarrel:
		TNT1 A 0
		TNT1 A 0
		TNT1 A 0 A_TakeInventory ("UsingSword", 99)		
		TNT1 A 0 A_TakeInventory ("FatalDrawGo", 99)
		TNT1 A 0 A_TakeInventory ("FatalDrawToken",99)
		TNT1 A 0 A_StopSound (6)
		TNT1 A 2
		TNT1 A 0 A_ClearReFire
		TNT1 A 0 A_PlaySound ("blaz/BarrelLift")
		BLBR ABCDEF 1 A_WeaponReady (WRF_NOSWITCH|WRF_NOBOB)
		goto BarrelWaiting
	BarrelWaiting:
		BLBR F 1 A_WeaponReady (WRF_NOSWITCH)
		loop

	BarrelToss:
		TNT1 A 0
		TNT1 A 1
		TNT1 A 0 A_PlaySound ("bomberknight/throw", 0)
		TNT1 A 6 A_FireCustomMissile ("BlazThrownBarrel",0,0)
		TNT1 A 1 A_TakeInventory ("BarrelToken",1)
		TNT1 A 0 A_Jump (256,"GrappleFinish")
		goto Ready
	BarrelCancel:
		TNT1 A 0
		TNT1 A 4 A_FireCustomMissile ("DroppedBarrel")
		TNT1 A 1 A_TakeInventory ("BarrelToken",1)
		TNT1 A 3 A_WeaponReady (WRF_NOSECONDARY|WRF_ALLOWZOOM|WRF_ALLOWRELOAD)
		TNT1 A 0 A_Jump (256,"GrappleFinish")
		goto GrappleFinish
		
	//Golden Barrel

	SelectGoldenBarrel:
		TNT1 A 0
		TNT1 A 0
		TNT1 A 0 A_TakeInventory ("UsingSword", 99)		
		TNT1 A 0 A_TakeInventory ("FatalDrawGo", 99)
		TNT1 A 0 A_TakeInventory ("FatalDrawToken",99)
		TNT1 A 0 A_StopSound (6)
		TNT1 A 2
		TNT1 A 0 A_ClearReFire
		TNT1 A 0 A_PlaySound ("blaz/BarrelLift")
		BLB2 ABCDEF 1 A_WeaponReady (WRF_NOSWITCH|WRF_NOBOB)
		goto GoldenBarrelWaiting
	GoldenBarrelWaiting:
		BLB2 F 1 A_WeaponReady (WRF_NOSWITCH)
		loop

	GoldenBarrelToss:
		TNT1 A 0
		TNT1 A 1
		TNT1 A 0 A_PlaySound ("bomberknight/throw", 0)
		TNT1 A 6 A_FireCustomMissile ("BlazThrownGoldenBarrel",0,0)
		TNT1 A 1 A_TakeInventory ("GoldenBarrelToken",1)
		TNT1 A 0 A_Jump (256,"GrappleFinish")
		goto Ready
	GoldenBarrelCancel:
		TNT1 A 0
		TNT1 A 4 A_FireCustomMissile ("DroppedGoldenBarrel")
		TNT1 A 1 A_TakeInventory ("GoldenBarrelToken",1)
		TNT1 A 3 A_WeaponReady (WRF_NOSECONDARY|WRF_ALLOWZOOM|WRF_ALLOWRELOAD)
		TNT1 A 0 A_Jump (256,"GrappleFinish")
		goto GrappleFinish

	}
}

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++



//==================================================
//=================SWORD ATTACKS====================
//==================================================

//normal slash
ACTOR SwordAttack1 : fastprojectile
{  
	+notimefreeze
	Radius 8
	Height 6
	PROJECTILE
	RENDERSTYLE Translucent
	speed 120
	damage (30)
	ALPHA 0.90
	+bright
	+dontblast
	+LOOKALLAROUND
	+bloodsplatter
	+FORCEXYBILLBOARD
	+thruspecies
	+DONTREFLECT
	+NOEXTREMEDEATH
	decal RightSlash
	species "friendly"
	scale 0.75
	States
	{
	Spawn:
		TNT1 A 1
		Stop
	xdeath:
		TNT1 A 0
		TNT1 A 1
		TNT1 A 0 radius_quake (1,4,0,10,0)
		TNT1 A 0 A_PlaySound("Zarach/Hit1",0)	
		TNT1 A 0 A_GiveInventory("DecayPause",1, AAPTR_TARGET)
		TNT1 A 0 A_GiveInventory ("SwordBonuses",1, AAPTR_TARGET)
		TNT1 A 1 
		HFX8 AABBCC 1
		stop
	Death:
        TNT1 A 0
		TNT1 A 1
		VFX2 A 0
		TNT1 A 0 radius_quake (1,2,0,10,0)
		TNT1 A 0 A_SpawnDebris ("bladespark")  
		VFX2 A 2 A_PlaySound("Zarach/Miss",0)
		VFX2 BCD 2
		Stop	  
	Crash:
		TNT1 A 0
		TNT1 A 1
		VFX2 A 0
		TNT1 A 0 radius_quake (1,2,0,10,0)
		TNT1 A 0 A_SpawnDebris ("bladespark")
		VFX2 A 2 A_PlaySound("Zarach/Miss",0)
		VFX2 BCD 2
		Stop
	}
}

//backhand slash
actor SwordAttack2 : SwordAttack1
{
    decal LeftSlash
	states
	{
	xdeath:
        TNT1 A 0
        TNT1 A 1
		TNT1 A 0 radius_quake (1,4,0,10,0)
		TNT1 A 0 A_PlaySound("Zarach/Hit2",0)
		TNT1 A 0 A_GiveInventory("DecayPause",1, AAPTR_TARGET)
		TNT1 A 0 A_GiveInventory ("SwordBonuses",1, AAPTR_TARGET)
		TNT1 A 1
		HFX9 AABBCC 1
		//BLSH ABCDEFG 1
		stop
	}
}

//thrust attack
actor SwordAttack3 : SwordAttack1
{
	xscale 0.50
	yscale 0.35
	decal SweepDecal
	+FORCEPAIN
	states
	{
	xdeath:
        TNT1 A 0
        TNT1 A 1
		TNT1 A 0 radius_quake (1,4,0,8,0)
		TNT1 A 0 A_PlaySound ("gauntlet/darthit",0)
		TNT1 A 0 A_GiveInventory("DecayPause",1, AAPTR_TARGET)
		TNT1 A 0 A_GiveInventory ("SwordBonuses",1, AAPTR_TARGET)
		TNT1 A 1
		STAB ABCDEE 1
		stop
	}
}

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


actor ThrownSword
{
	+notimefreeze
	+skyexplode
	+thruspecies
    +EXTREMEDEATH
	+bright
	+FORCEPAIN
	+hexenbounce
	+DONTREFLECT
	species "friendly"
	projectile
	-NOBLOCKMAP
	-ALLOWBOUNCEONACTORS
	xscale 0.75
	yscale 0.50
	radius 13
	height 10
	speed 40
	Bouncecount 3
	damage (300)
	states
	{
	spawn:
		TNT1 A 0
		TNT1 A 0
		BMSR ABCD 1 bright
		BMSR ABCD 1 bright
		BMSR ABCD 1 bright
		BMSR ABCD 1 bright 
		TNT1 A 0 A_ChangeFlag ("nogravity",0)
		goto Falling
	Falling:
		BMSR ABCD 1 bright 
		loop
	crash:
	death:
		TNT1 A 0
		TNT1 A 0 A_NoGravity
		TNT1 A 0 A_Stop
		TNT1 A 0 A_FaceTarget
		TNT1 A 0 A_PlaySound("Zarach/Miss",0)
		TNT1 A 0 A_SpawnDebris ("bladespark")  
		TNT1 A 1 A_SpawnItemEx ("DroppedSword",-5,0,0,10, 0, frandom(3,8),0,SXF_NOCHECKPOSITION)
		TNT1 A 0 A_SpawnDebris ("bladespark")  
		TNT1 A 0 A_setscale (0.50,0.50)
		FLMS ABCDE 1
		stop
	xdeath:
		TNT1 A 0
		TNT1 A 0 A_NoGravity
		TNT1 A 0 A_Stop
		TNT1 A 0 A_FaceTarget
		TNT1 A 1 A_SpawnItemEx ("DroppedSword",-5,0,0,10, 0, frandom(3,8),0,SXF_NOCHECKPOSITION)
		TNT1 A 0 A_PlaySound ("Sword/Throwhit",0,1,0,0.7)
		TNT1 A 0 Radius_Quake (2,10,0,10,0)
		TNT1 A 0 A_GiveInventory("DecayPause",1, AAPTR_TARGET)
		TNT1 A 0 A_GiveInventory ("SwordBonuses",1, AAPTR_TARGET)
		TNT1 A 0 A_setscale (0.50,0.50)
		FLHT ABCDE 1
		stop
	}
}

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


Actor PowerThrownSword : ThrownSword
{
	+FORCERADIUSDMG
	Damage (0)
	speed 60
	-HEXENBOUNCE
	states
	{
	Spawn:
		TNT1 A 0
		TNT1 A 1 A_PlaySound ("swordtech/Boomerangstart",0,1,0,0.90)
		Goto PowerFlight
	PowerFlight:
		BMS2 A 1 bright
		TNT1 A 0 A_PlaySound ("PoweredZarach/Fly",CHAN_VOICE)
		TNT1 A 0 A_SpawnItemEx ("PowerThrownSwordTrail1",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
		BMS2 B 1 bright
		TNT1 A 0 A_SpawnItemEx ("PowerThrownSwordTrail2",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
		BMS2 C 1 bright
		TNT1 A 0 A_SpawnItemEx ("PowerThrownSwordTrail3",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
		BMS2 D 1 bright
		TNT1 A 0 A_SpawnItemEx ("PowerThrownSwordTrail4",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
		loop
	xdeath:
		TNT1 A 0
		TNT1 A 1 A_GiveInventory ("SwordBonuses",1, AAPTR_TARGET)
	crash:
	Death:
		TNT1 A 0 A_FadeOut (0.10)
		TNT1 A 0 A_Explode (250,200,0,1,200)
		TNT1 A 0 Radius_Quake (2,10,0,30,0)		
		TNT1 A 0 A_PlaySound ("Subweapons/scattershot",0,1,0,0.60)
		TNT1 A 0 A_PlaySound ("subweapons/thundercrack",CHAN_VOICE,0.60,0,0.70)
		TNT1 A 0 A_SetScale (0.60,0.60)
		BMS3 A 2
		TNT1 A 0 A_SetScale (0.90,0.90)
		BMS3 BC 2
		TNT1 A 0 A_SetScale (1.20,1.20)
		BMS3 DE 1
		TNT1 A 0 A_SetScale (1.60,1.60)
		BMS3 F 1
		TNT1 A 0 A_SetScale (1.80,1.80)
		BMS3 F 1
		TNT1 A 0 A_SetScale (1.90,1.90)
		BMS3 F 1
		stop
	}
}

ACTOR PowerThrownSwordTrail1
{
	+NOBLOCKMAP
	+NOGRAVITY
	+NOCLIP
	+NOTELEPORT
	+bright
	renderstyle add
	alpha 0.50
	xscale 0.65
	yscale 0.40
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0
		BMS2 A 5 bright
		stop
	Death:
		TNT1 A 0
		TNT1 A 1
		stop
	}
}


ACTOR PowerThrownSwordTrail2 : PowerThrownSwordTrail1
{
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0
		BMS2 B 5 bright
		stop
	Death:
		TNT1 A 0
		TNT1 A 1
		stop
	}
}


ACTOR PowerThrownSwordTrail3 : PowerThrownSwordTrail1
{
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0
		BMS2 C 5 bright
		stop
	Death:
		TNT1 A 0
		TNT1 A 1
		stop
	}
}

ACTOR PowerThrownSwordTrail4 : PowerThrownSwordTrail1
{
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0
		BMS2 D 5 bright
		stop
	Death:
		TNT1 A 0
		TNT1 A 1
		stop
	}
}

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


Actor WeakThrownSword : ThrownSword
{
	-EXTREMEDEATH
	+NOEXTREMEDEATH
	xscale 1
	yscale 1
	damage (150)
	states
	{
	spawn:
		TNT1 A 0
		FLSW ACEG 1 bright
		FLSW BDFH 1 bright
		TNT1 A 0 A_ChangeFlag ("nogravity",0)
		goto Falling
	Falling:
		FLSW ACEG 1 bright
		//FLSW BDFH 1 bright
		FLSW BDFH 1 bright
		//FLSW ABCDEFGH 1
		loop
	crash:
	death:
		TNT1 A 0
		TNT1 A 0 A_NoGravity
		TNT1 A 0 A_FaceTarget
		TNT1 A 0 A_PlaySound("Zarach/Miss",0)
		TNT1 A 0 A_SpawnDebris ("bladespark")  
		TNT1 A 0 A_FaceTarget
		TNT1 A 1 A_SpawnItemEx ("DroppedSword",-5,0,0,10, 0, frandom(3,8),0,SXF_NOCHECKPOSITION)
		TNT1 A 0 A_SpawnDebris ("bladespark")  
		BZP2 ABCDEFGH 1
		stop
	xdeath:
		TNT1 A 0
		TNT1 A 0 A_NoGravity
		TNT1 A 0 A_FaceTarget
		TNT1 A 1 A_SpawnItemEx ("DroppedSword",-5,0,0,10, 0, frandom(3,8),0,SXF_NOCHECKPOSITION)
		TNT1 A 0 A_PlaySound ("Zarach/Hit1",0,1,0,0.7)
		TNT1 A 0 Radius_Quake (2,10,0,10,0)
		TNT1 A 0 A_GiveInventory("DecayPause",1, AAPTR_TARGET)
		TNT1 A 0 A_GiveInventory ("SwordBonuses",1, AAPTR_TARGET)
		WLSH ABCDEF 1
		stop
	}
}

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


actor DroppedSword : custominventory
{
	+notimefreeze
	+dropped
	+bright
	+DONTGIB
	+floorclip
	-NOGRAVITY
	Gravity 1
	Inventory.RestrictedTo "LordBlaz"
	
	Inventory.pickupmessage "Recovered your Sword"
	Inventory.pickupsound "Powerups/Subweapon"
	scale 1
	states
	{
	spawn:
		TNT1 A 0
		TNT1 A 1
		goto spinning	
	Spinning:
		TNT1 A 0 A_JumpIf(floorz == z, "StuckSword")
		FLSW ABCDEFGH 2 A_JumpIf(floorz == z, "StuckSword")
		TNT1 A 0 A_JumpIf(floorz == z, "StuckSword")
		loop
	StuckSword:
		TNT1 A 0
		FLSW I 1 
		TNT1 A 0 A_GiveInventory ("SwordWaiter",1)
		TNT1 A 0 A_JumpIfInventory ("SwordWaiter",420,"Flashing1")
		loop
	Flashing1:
		TNT1 A 3
		FLSW I 3
		TNT1 A 0 A_GiveInventory ("SwordWaiter",1)
		TNT1 A 0 A_JumpIfInventory ("SwordWaiter",422,"Flashing2")
		Loop
	Flashing2:
		TNT1 A 2
		FLSW I 2
		TNT1 A 0 A_GiveInventory ("SwordWaiter",1)
		TNT1 A 0 A_JumpIfInventory ("SwordWaiter",427,"Flashing3")
		Loop
	Flashing3:
		TNT1 A 1
		FLSW I 1
		TNT1 A 0 A_GiveInventory ("SwordWaiter",1)
		TNT1 A 0 A_JumpIfInventory ("SwordWaiter",436,"Death")
		goto death
	death:
		TNT1 A 0
		HWRP ABCD 1 bright
		stop
	pickup:
		TNT1 A 0
		TNT1 A 0
		TNT1 A 0 A_TakeInventory ("ThrownSwordCooldown",999)
		TNT1 A 1 A_TakeInventory ("UnarmedCheck",99)
		stop
	}
}

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

//================================================================================
//---POWER SWORD ATTACKS---
//================================================================================

//Power Sword slash

actor Powercleave : fastprojectile
{
	projectile
	+extremedeath
    +FORCEXYBILLBOARD	
	+LOOKALLAROUND
	+thruspecies
	+bright
	+FORCEPAIN
	+DONTREFLECT
	+HITTRACER
	species "friendly"
	Radius 8
	Height 6
	speed 120
	damage (150)
    Scale 1
	decal Powerdecal
	alpha 0.95
	states
	{
	spawn:
		TNT1 A 1
		stop
	xdeath:
        TNT1 A 0
        TNT1 A 1
		TNT1 A 0 A_PlaySound ("Poweredtear/cleave",0)
		TNT1 A 0 Radius_Quake (1,8,0,20,0)
		TNT1 A 0 A_GiveInventory ("CleaveSafety",1,AAPTR_TRACER)
		TNT1 A 0 A_GiveInventory ("SwordBonuses",1, AAPTR_TARGET)
		TNT1 A 0 A_GiveInventory("LifeDrain",1, AAPTR_TARGET)
		TNT1 A 0 A_JumpIfinventory ("SwordCleaveUpgrade",1,"CleaveAOE",AAPTR_TARGET)
		GoTo StrikeEnd
	CleaveAOE:
		TNT1 A 0
		TNT1 A 0 A_RadiusGive ("CleaveDamager",200,RGF_MONSTERS,1)
		goto StrikeEnd
	StrikeEnd:
		TNT1 A 0
		PLSH ABCDFGHI 1 bright
		stop
	death:
        TNT1 A 0
        TNT1 A 1
		VFX2 A 0
		TNT1 A 0 Radius_Quake (1,8,0,20,0)
		VFX2 A 3 A_PlaySound("Poweredtear/clang",0)
		VFX2 BCD 3	
		stop
	Crash:
        TNT1 A 0
        TNT1 A 1
		VFX2 A 0
		TNT1 A 0 Radius_Quake (1,8,0,20,0)
		VFX2 A 3 A_PlaySound("Poweredtear/clang",0)
		VFX2 BCD 3
		stop
	}
}

Actor PowerBackSlash : Powercleave 
{
	decal PowerDecal2
	states
	{
	xdeath:
        TNT1 A 0
        TNT1 A 1
		TNT1 A 0 A_PlaySound ("Poweredtear/cleave",0)
		TNT1 A 0 Radius_Quake (1,8,0,20,0)
		TNT1 A 0 A_GiveInventory ("CleaveSafety",1,AAPTR_TRACER)
		TNT1 A 0 A_GiveInventory ("SwordBonuses",1, AAPTR_TARGET)
		TNT1 A 0 A_GiveInventory("LifeDrain",1, AAPTR_TARGET)
		TNT1 A 0 A_JumpIfinventory ("SwordCleaveUpgrade",1,"CleaveAOE",AAPTR_TARGET)
		GoTo StrikeEnd
	CleaveAOE:
		TNT1 A 0
		TNT1 A 0 A_RadiusGive ("CleaveDamager",200,RGF_MONSTERS,1)
		goto StrikeEnd
	StrikeEnd:
		TNT1 A 0
		PLSH JKLNOPQR 1 bright
		stop
	}
}


//thrust attack
actor PowerSwordStab : Powercleave
{
	xscale 0.75
	yscale 0.60
	decal SweepDecal
	+FORCEPAIN
	states
	{
	xdeath:
        TNT1 A 0
        TNT1 A 1
		TNT1 A 0 radius_quake (1,8,0,15,0)
		TNT1 A 0 A_PlaySound ("gauntlet/darthit",0)
		TNT1 A 0 A_PlaySound ("Poweredtear/cleave",0)
		TNT1 A 0 A_GiveInventory ("SwordBonuses",1, AAPTR_TARGET)
		TNT1 A 0 A_GiveInventory("LifeDrain",1, AAPTR_TARGET)
		TNT1 A 0 A_JumpIfinventory ("SwordCleaveUpgrade",1,"CleaveAOE",AAPTR_TARGET)
		GoTo StrikeEnd
	CleaveAOE:
		TNT1 A 0
		TNT1 A 0 A_RadiusGive ("CleaveDamager",200,RGF_MONSTERS,1)
		goto StrikeEnd
	StrikeEnd:
		TNT1 A 0
		2TAB ABCDEE 1 bright
		stop
	}
}



actor LifeDrain : custominventory 
{
	inventory.maxamount 1
	+INVENTORY.AUTOACTIVATE
	states
	{
	pickup:
		TNT1 A 0
		TNT1 A 0 A_JumpIfHealthLower(100, "drain")
		stop
	drain:
		TNT1 A 0 A_GiveInventory ("healChecker",1)
		TNT1 A 0 A_PlaySound ("cannon/LifeDrain",0)
		TNT1 AAAAAAAAAAAAAA 0 A_SpawnItemEx ("MAXparticle",random(-8,16),random(-8,16),random(-10,10),random(-100,100)/20.0,random(-100,100)/20.0,random(-100,100)/20.0,0,160)
		TNT1 A 0 A_GiveInventory ("health", 5)
		stop
	}
}

Actor WeakLifeDrain : custominventory 
{
	inventory.maxamount 1
	+INVENTORY.AUTOACTIVATE
	states
	{
	pickup:
		TNT1 A 0
		TNT1 A 0 A_JumpIfHealthLower(100, "drain")
		stop
	drain:
		TNT1 A 0 A_GiveInventory ("healChecker",1)
		TNT1 A 0 A_PlaySound ("cannon/LifeDrain",0,0.70)
		TNT1 AAAAAA 0 A_SpawnItemEx ("MAXparticle",random(-8,16),random(-8,16),random(-10,10),random(-100,100)/20.0,random(-100,100)/20.0,random(-100,100)/20.0,0,160)
		TNT1 A 0 A_GiveInventory ("health", 2)
		stop
	}
}



actor CleaveDamager : custominventory
{
	+inventory.alwayspickup
	+INVENTORY.AUTOACTIVATE
	+EXTREMEDEATH
	states
	{
	pickup:
		TNT1 A 0
		TNT1 A 1 A_CheckFlag ("Friendly", "NoHit")
		TNT1 A 0 A_JumpIfInventory ("SpiritSafety",1,"NoHit")
		TNT1 A 0 A_JumpIfInventory ("CleaveSafety",1,"NoHit")
		TNT1 A 0 A_FaceTarget
		TNT1 A 0 A_FaceTarget
		TNT1 A 0 A_GiveInventory ("ArcaneForce", 5, AAPTR_TARGET)
		TNT1 A 0 A_GiveInventory("LifeDrain",1, AAPTR_TARGET)
		TNT1 A 1 A_SpawnItemEx ("CleaveFX",0,0,34,0,0,0,0,SXF_NOCHECKPOSITION)
		TNT1 A 0 DamageThing (150)
		TNT1 A 0 A_TakeInventory ("CleaveSafety",1)
		stop
	NoHit:
		TNT1 A 0
		TNT1 A 1 A_TakeInventory ("CleaveSafety",1)
		stop
	}
}


ACTOR CleaveFX
{
	+NOBLOCKMAP
	+NOGRAVITY
	+NOCLIP
	+NOTELEPORT
	+bright
	renderstyle add
	alpha 0.70
	scale 1.50
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_PlaySound ("Poweredtear/cleave",0)
		TNT1 A 0 Radius_Quake (2,10,0,10,0)
		CLV1 ABCDEEFF 1
		stop
	Death:
		TNT1 A 0
		TNT1 A 1
		stop
	}
}


actor CleaveSafety : Powerup
{
	Powerup.Duration -1
}	


//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

//==============================================================================================================================
//---Fist Attacks---
//==============================================================================================================================

actor LeftJab : fastprojectile
{
	+dontblast
	+notimefreeze
	+BLOODSPLATTER
	+FORCEXYBILLBOARD		
	+thruspecies
	+DONTREFLECT
	+NOEXTREMEDEATH
	+BRIGHT
	+BLOODLESSIMPACT
	+NOBLOODDECALS
	species "friendly"
	projectile
	radius 12
	height 16
	speed 120
	damage (15)
	states
	{
	spawn:
		TNT1 A 1
		TNT1 A 0 A_Stop
		stop
	death:
	crash:
        TNT1 A 0
        TNT1 A 1
		TNT1 A 0 Radius_Quake (1,3,0,10,0)
		TNT1 A 0 A_PlaySound ("Subweapons/punchmiss",0)
		BZP2 ABCDEFGH 1
		stop
	xdeath:
        TNT1 A 0
        TNT1 A 1
		TNT1 A 0 Radius_Quake (1,3,0,10,0)
		TNT1 A 0 A_PlaySound ("Subweapons/Jabhit",0)
		TNT1 A 0 A_JumpIfInventory ("PowerSwordCheck",1,"XDeathEnd")
		TNT1 A 0 A_GiveInventory("DecayPause",1, AAPTR_TARGET)
		TNT1 A 0 A_GiveInventory ("FistBonuses",1, AAPTR_TARGET)
	XdeathEnd:
		BZP1 ABCDEFG 1 
		stop
	}
}

actor StraightPunch : fastprojectile
{
	+dontblast
	+notimefreeze
	+BLOODSPLATTER
	+FORCEXYBILLBOARD		
	+thruspecies
	+DONTREFLECT
	+NOEXTREMEDEATH
	+BRIGHT
	+BLOODLESSIMPACT
	+NOBLOODDECALS
	species "friendly"
	projectile
	radius 12
	height 16
	speed 120
	damage (15)
	states
	{
	spawn:
		TNT1 A 1
		TNT1 A 0 A_Stop
		stop
	death:
	crash:
        TNT1 A 0
        TNT1 A 1
		TNT1 A 0 Radius_Quake (1,3,0,10,0)
		TNT1 A 0 A_PlaySound ("Subweapons/punchmiss",0)
		BZP2 ABCDEFGH 1
		stop
	xdeath:
        TNT1 A 0
        TNT1 A 1
		TNT1 A 0 A_PlaySound ("Subweapons/Straighthit",0)
		TNT1 A 0 Radius_Quake (2,3,0,10,0)
		TNT1 A 0 A_JumpIfInventory ("PowerSwordCheck",1,"XdeathEnd")
		TNT1 A 0 A_GiveInventory("DecayPause",1, AAPTR_TARGET)
		TNT1 A 0 A_GiveInventory ("FistBonuses",1, AAPTR_TARGET)
	XdeathEnd:
		BZP1 ABCDEFG 1
		stop
	}
}

actor UpperCut : fastprojectile
{
	+dontblast
	+notimefreeze
	+BLOODSPLATTER
	+FORCEXYBILLBOARD		
	+thruspecies
	+FORCEPAIN
	+DONTREFLECT
	+BRIGHT
	+HITTRACER
	+NOEXTREMEDEATH
	species "friendly"
	projectile
	radius 12
	height 16
	speed 120
	Damagetype "Dazer"
	damage (15)
	ProjectileKickback 1500
	states
	{
	spawn:
		TNT1 A 1
		TNT1 A 0 A_Stop
		stop
	death:
	crash:
		TNT1 A 0
		TNT1 A 1
		TNT1 A 0 Radius_Quake (1,5,0,10,0)
		TNT1 A 0 A_PlaySound ("Subweapons/Haymakermiss",6)
		BZP4 ABCDEFG 1
		stop
	xdeath:
		TNT1 A 0
		TNT1 A 1
		TNT1 A 0 A_PlaySound ("Subweapons/CrackFisthit",0)
		TNT1 A 0 Radius_Quake (4,6,0,10,0)
		TNT1 A 0 A_Blast (BF_AFFECTBOSSES|BF_NOIMPACTDAMAGE,70,200,20,"InvisibleFX","Silence")
		TNT1 A 0 A_GiveInventory("DecayPause",1, AAPTR_TARGET)
		TNT1 A 0 A_GiveInventory ("UpperCutBooster",1,AAPTR_TRACER)
		TNT1 A 0 A_GiveInventory ("FistBonuses",1, AAPTR_TARGET)
		BZP5 ABCD 2
		stop
	}
}


ACTOR UpperCutBooster : CustomInventory
{
	+AUTOACTIVATE
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 1
		Stop
	Use:
		TNT1 A 0
		TNT1 A 0 thrustthingz (0,35,0,0)
		TNT1 A 1 
		Stop
	}
}


//==============================================================================================================================
//---Powered Fist Attacks---
//==============================================================================================================================


Actor PowerLeftJab : LeftJab
{
	Damage (30)
	states
	{
	spawn:
		TNT1 A 1
		TNT1 A 0 A_Stop
		stop
	death:
	crash:
        TNT1 A 0
        TNT1 A 1
		TNT1 A 0 Radius_Quake (1,3,0,10,0)
		TNT1 A 0 A_PlaySound ("Subweapons/punchmiss",0)
		BZP4 ABCDEFGH 1
		stop
	xdeath:
        TNT1 A 0
        TNT1 A 1
		TNT1 A 0 A_PlaySound ("Subweapons/Jabhit",0,0.50)
		TNT1 A 0 A_PlaySound ("Subweapons/PowerFistHit",0)
		TNT1 A 0 Radius_Quake (2,3,0,10,0)
		TNT1 A 0 A_GiveInventory ("FistBonuses",1, AAPTR_TARGET)
		TNT1 A 0 A_GiveInventory("WeakLifeDrain",1, AAPTR_TARGET)
		TNT1 A 0 A_FadeOut (0.40)
		BZP3 ABCDEFG 1
		stop
	}
}


actor PowerStraightPunch : StraightPunch
{
	damage (30)
	states
	{
	spawn:
		TNT1 A 1
		TNT1 A 0 A_Stop
		stop
	death:
	crash:
        TNT1 A 0
        TNT1 A 1
		TNT1 A 0 Radius_Quake (1,3,0,10,0)
		TNT1 A 0 A_PlaySound ("Subweapons/punchmiss",0)
		BZP4 ABCDEFGH 1
		stop
	xdeath:
        TNT1 A 0
        TNT1 A 1
		TNT1 A 0 A_PlaySound ("Subweapons/Straighthit",0,0.70)
		TNT1 A 0 A_PlaySound ("Subweapons/PowerFistHit",0)
		TNT1 A 0 Radius_Quake (2,3,0,10,0)
		TNT1 A 0 A_GiveInventory ("FistBonuses",1, AAPTR_TARGET)
		TNT1 A 0 A_GiveInventory("WeakLifeDrain",1, AAPTR_TARGET)
		TNT1 A 0 A_FadeOut (0.40)
		BZP3 ABCDEFG 1
		stop
	}
}

actor PowerUpperCut : UpperCut
{
	damage (30)
	states
	{
	spawn:
		TNT1 A 1
		TNT1 A 0 A_Stop
		stop
	death:
	crash:
		TNT1 A 0
		TNT1 A 1
		TNT1 A 0 Radius_Quake (1,5,0,10,0)
		TNT1 A 0 A_PlaySound ("Subweapons/Haymakermiss",6)
		BZP4 ABCDEFG 1
		stop
	xdeath:
		TNT1 A 0
		TNT1 A 1
		TNT1 A 0 A_PlaySound ("Subweapons/CrackFisthit",0)
		TNT1 A 0 A_PlaySound ("Subweapons/Hammerhit",0,0.50)
		TNT1 A 0 Radius_Quake (4,6,0,10,0)
		TNT1 A 0 A_Blast (BF_AFFECTBOSSES|BF_NOIMPACTDAMAGE,70,200,20,"InvisibleFX","Silence")
		TNT1 A 0 A_GiveInventory ("UpperCutBooster",1,AAPTR_TRACER)
		TNT1 A 0 A_GiveInventory("WeakLifeDrain",1, AAPTR_TARGET)
		TNT1 A 0 A_GiveInventory ("FistBonuses",1, AAPTR_TARGET)
		BZP6 ABCD 2
		stop
	}
}




//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

//================================================================================
//---MIGHT RING ATTACKS---
//================================================================================


//Weak sword waves fired when attacking while the player
//has the ring power up
actor ATKRingWave : SwordAttack1
{
	damage (10)
	speed 50
	decal MiniSweep
	xscale 1.30
	yscale 0.90
	
	states
	{
	spawn:
		SWAV A 5
		goto Death
	death:
		TNT1 A 0 A_Stop
		TNT1 A 1
		stop
	xdeath:
        TNT1 A 0
        TNT1 A 1
		TNT1 A 0 A_PlaySound ("Zarach/RingHit2",0)
		TNT1 A 0 A_GiveInventory ("RingSwordBonuses",1, AAPTR_TARGET)
		TNT1 A 0 A_SetScale (0.70,0.40)
		WLSH ABCDEF 1
		stop
	}
}


//------------------------------------------------------------------------------------------------------------------------

//Stab projectiles
actor ATKRingThrust : SwordAttack3
{
	damage (10)
	speed 50
	decal MiniSweep
	scale 0.60
	
	states
	{
	spawn:
		STHR A 5
		Goto Death
	death:
		TNT1 A 0 A_Stop
		TNT1 A 1
		stop
	xdeath:
        TNT1 A 0
        TNT1 A 1
		TNT1 A 0 A_PlaySound ("Zarach/RingHit1",0)
		TNT1 A 0 A_GiveInventory ("RingSwordBonuses",1, AAPTR_TARGET)
		TNT1 A 0 A_SetScale (0.40,0.40)
		STAB ABCDEE 1
		stop
	}
}
//------------------------------------------------------------------------------------------------------------------------


//Fist projectiles fired while punching with the ring
actor AtkRingFist
{
	+notimefreeze
	-BLOODSPLATTER
	+FORCEXYBILLBOARD
	+BRIGHT
	+NOEXTREMEDEATH
	+thruspecies
	+DONTREFLECT
	species "Friendly"
	renderstyle add
	alpha 0.60
	scale 0.50
	projectile
	radius 8
	height 16
	speed 45
	damage (5)
	states
	{
	spawn:
		SKYF A 5
		goto death
	death:
		TNT1 A 0
		TNT1 A 1 A_Stop
		stop
	crash:
		TNT1 A 0
		TNT1 A 0 A_PlaySound ("Subweapons/CrackFistmiss")
		BZP2 ABCDEFGH 1
		stop
	xdeath:
		TNT1 A 0
		TNT1 A 0 A_PlaySound ("BlazFists/RingHit")
		TNT1 A 0 A_GiveInventory ("RingFistBonuses",1, AAPTR_TARGET)
		BZP1 ABCDEFG 1
		stop
	}
}

//------------------------------------------------------------------------------------------------------------------------


//Uppercut projectiles

//You guessed it, it's the extra uppercut fired off with the ring
actor AtkRingUppercut : AtkRingFist
{
	+FORCERADIUSDMG
	+FORCEPAIN
	+HITTRACER
	alpha 0.70
	XScale 0.90
	YScale 0.50
	Damagetype "Dazer"
	states
	{
	spawn:
		TNT1 A 0
		TNT1 A 0 A_SetScale (-0.90,0.50)
		UPWV AB 2
		UPWV CD 1
		goto death
	Xdeath:
		TNT1 A 0 A_Blast (BF_AFFECTBOSSES|BF_NOIMPACTDAMAGE,50,200,20,"InvisibleFX","Silence")
		TNT1 A 0 A_Explode (1,150,0,1,150)
		TNT1 A 0 A_PlaySound ("BlazFists/RingHit3")
		TNT1 A 0 A_GiveInventory ("UpperCutBooster",1,AAPTR_TRACER)
		TNT1 A 0 A_GiveInventory ("RingFistBonuses",1, AAPTR_TARGET)
		TNT1 A 0 A_SpawnItemEx ("360SplashEffect",0,0,-10)
		BZP5 ABCD 2
		stop
	}
}


//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

//================================================================================
//---MELEE COMBAT BONUS ITEMS---
//================================================================================

Actor SwordBonuses : custominventory 
{
	inventory.maxamount 1
	+INVENTORY.AUTOACTIVATE
	Inventory.RestrictedTo "LordBlaz"
	states
	{
	pickup:
		TNT1 A 0
		TNT1 A 0
		TNT1 A 0 A_GiveInventory ("ArcaneForce", 10)
		TNT1 A 0 A_GiveInventory ("SpiritForce", 2)
		TNT1 A 1 A_GiveInventory ("BlazterEnergy", 1)
		stop
	}
}

Actor FistBonuses : custominventory 
{
	inventory.maxamount 1
	+INVENTORY.AUTOACTIVATE
	Inventory.RestrictedTo "LordBlaz"
	states
	{
	pickup:
		TNT1 A 0
		TNT1 A 0
		TNT1 A 0 A_GiveInventory ("ArcaneForce", 3)
		TNT1 A 0 A_GiveInventory ("SpiritForce", 1)
		TNT1 A 1 A_GiveInventory ("BlazterEnergy", 5)
		stop
	}
}

Actor RingSwordBonuses : custominventory 
{
	inventory.maxamount 1
	+INVENTORY.AUTOACTIVATE
	Inventory.RestrictedTo "LordBlaz"
	states
	{
	pickup:
		TNT1 A 0
		TNT1 A 0
		TNT1 A 0 A_GiveInventory ("ArcaneForce", 5)
		TNT1 A 0 A_GiveInventory ("SpiritForce", 1)
		TNT1 A 1 A_GiveInventory ("BlazterEnergy", 1)
		stop
	}
}

Actor RingFistBonuses : custominventory 
{
	inventory.maxamount 1
	+INVENTORY.AUTOACTIVATE
	Inventory.RestrictedTo "LordBlaz"
	states
	{
	pickup:
		TNT1 A 0
		TNT1 A 0
		TNT1 A 0 A_GiveInventory ("ArcaneForce", 1)
		TNT1 A 0 A_GiveInventory ("SpiritForce", 1)
		TNT1 A 1 A_GiveInventory ("BlazterEnergy", 2)
		stop
	}
}

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


//==============================================================================================================================
//---Grappler and chain---
//==============================================================================================================================


ACTOR GrappleWhipTip : fastprojectile
{  
	+notimefreeze
	Radius 8
	Height 6
	PROJECTILE
	RENDERSTYLE Translucent
	speed 860
	damage (1)
	+bright
	+dontblast
	+LOOKALLAROUND
	+bloodsplatter
	+FORCEXYBILLBOARD
	+thruspecies
	+DONTREFLECT
	+NOEXTREMEDEATH
	+HITTRACER
	+BLOODLESSIMPACT
	+painless
	//decal RightSlash
	species "friendly"
	scale 2
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 1
		Stop
	Xdeath:
	Crash:
		TNT1 A 0
		TNT1 A 0 A_PlaySound("Blaz/ChainHit",0)
		TNT1 A 0 A_GiveInventory ("LineDefPasser",1,AAPTR_TRACER)
		CCLW A 0 ACS_NamedExecuteAlways("Hook_HitEnemy", 0, 0, 0, 0)
		TNT1 A 1
		GPPL ABCDEF 1
		Stop
	Death:
		TNT1 A 0
		TNT1 AAAAA 0 A_SpawnDebris ("bladespark")  
		TNT1 A 1
		VFX2 A 2 A_PlaySound("Zarach/Miss",0)
		VFX2 BCD 2
		Stop
	}
}

ACTOR PowerGrappleWhipTip : GrappleWhipTip
{
	states
	{
	Xdeath:
	Crash:
		TNT1 A 0
		TNT1 A 0 A_PlaySound("Blaz/ChainHit",0)
		TNT1 A 0 A_GiveInventory ("LineDefPasser",1,AAPTR_TRACER)
		TNT1 A 0 A_GiveInventory("ArcaneForce",5, AAPTR_TARGET)
		TNT1 A 0 A_GiveInventory("DecayPause",1, AAPTR_TARGET)
		CCLW A 0 ACS_NamedExecuteAlways("Hook_HitEnemy", 0, 0, 0, 0)
		TNT1 A 1
		GPPL ABCDEF 1
		Stop
	}
}

actor GrappleWhipChain
{
	+NOBLOCKMAP
	+NOGRAVITY
	+BRIGHT
	+PAINLESS
	+NOINTERACTION
	+FORCEXYBILLBOARD
	scale 0.25
	Mass 5
	states
	{
	spawn:
		TNT1 A 0
		TNT1 A 0 A_CheckRange (50,"Emit")
		TNT1 A 1
		stop
	Emit:
		TNT1 A 0
		LINK A 3
		stop
	Death:
		TNT1 A 0
		TNT1 A 1
		stop
	}
}

actor PowerGrappleWhipChain : GrappleWhipChain
{
	states
	{
	spawn:
		TNT1 A 0
		TNT1 A 0 a_checkrange (50,"Emit")
		TNT1 A 1
		stop
	Emit:
		TNT1 A 0
		LINK B 3 
		stop
	Death:
		TNT1 A 0
		TNT1 A 1
		stop
	}
}


ACTOR NullPuff : BulletPuff
{
	+NOBLOCKMAP
	+NOGRAVITY
	+ALLOWPARTICLES
	+RANDOMIZE
	+thruspecies
	+MTHRUSPECIES
	+NOEXTREMEDEATH
	+DONTREFLECT
	+BLOODLESSIMPACT
	+PAINLESS
	states
	{
	Spawn:
		TNT1 A 0
		TNT1 A 1
	Xdeath:
		TNT1 A 1
		Stop
	Death:
		TNT1 A 1
		Stop
	}
}


actor LineDefPasser : custominventory
{
	+inventory.alwayspickup
	+INVENTORY.AUTOACTIVATE
	states
	{
	pickup:
		TNT1 A 0
		TNT1 A 1 A_ChangeFlag ("NOBLOCKMONST",1)
		stop
	}
}

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


//==============================================================================================================================
//---FATAL DRAW---
//==============================================================================================================================



actor FatalSlash : fastprojectile
{
	projectile
	+extremedeath
    +FORCEXYBILLBOARD	
	+LOOKALLAROUND
	+thruspecies
	+bright
	+FORCEPAIN
	+DONTREFLECT
	+HITTRACER
	+FOILINVUL
	+NODAMAGETHRUST
	species "friendly"
	Radius 10
	Height 6
	speed 120
	damage (99999999)
    Scale 1
	//decal Powerdecal
	alpha 0.95
	DamageType "FatalSlash"	
	states
	{
	spawn:
		TNT1 AA 1
		stop
	death:
		TNT1 A 0
		TNT1 A 0
		TNT1 A 0 A_JumpIf(CheckClass("GoldenBarrel", AAPTR_TRACER, TRUE), "HitSpecial")
		TNT1 A 1
		TNT1 A 1
		stop
	Xdeath:
		TNT1 A 0
		TNT1 A 0 A_PlaySound ("FatalDraw/Hit",0,0.60,0,0.80)
		TNT1 A 0
		TNT1 A 0 A_Warp (AAPTR_TRACER,10,0,32,0,WARPF_NOCHECKPOSITION)
		TNT1 A 0 A_GiveInventory ("FatalSafety",1,AAPTR_TRACER)
		TNT1 A 0 A_TakeFromTarget ("SpiritForce",999)
		TNT1 A 0 A_RadiusGive ("FatalAOEDamager",250,RGF_MONSTERS,1)
		PLSH IHGFEDCBA 1
		TNT1 A 2
		stop
	HitSpecial:
		TNT1 A 0
		TNT1 A 0 A_PlaySound ("FatalDraw/Hit",0,0.60,0,0.80)
		TNT1 A 0 A_GiveInventory ("FatalSafety",1,AAPTR_TRACER)
		TNT1 A 0 A_TakeFromTarget ("SpiritForce",999)
		TNT1 A 0 A_RadiusGive ("FatalAOEDamager",250,RGF_MONSTERS,1)
		TNT1 A 1
		stop
	}
}

//Cosmetic slash effect used for the Golden Barrel
ACTOR CosmeticFatalSlash
{
	+NOBLOCKMAP
	+NOGRAVITY
	+NOCLIP
	+NOTELEPORT
	+NOINTERACTION
	+bright
	scale 1
	States
	{
	Spawn:
		TNT1 A 0
		PLSH IHGFEDCBA 1
		TNT1 A 2
		stop
	Death:
		TNT1 A 0
		TNT1 A 1
		stop
	}
}


actor FatalAOEDamager : custominventory
{
	+inventory.alwayspickup
	+INVENTORY.AUTOACTIVATE
	states
	{
	pickup:
		TNT1 A 0
		TNT1 A 1 A_CheckFlag ("Friendly", "NoHit")
		TNT1 A 0 A_JumpIfInventory ("SpiritSafety",1,"NoHit")
		TNT1 A 0 A_JumpIfInventory ("FatalSafety",1,"NoHit")
		TNT1 A 0 A_FaceTarget
		TNT1 A 0 A_FaceTarget
		TNT1 A 0 A_GiveInventory("LifeDrain",1, AAPTR_TARGET)
		TNT1 A 0 A_PlaySound ("FatalDraw/Hit",0,0.60,0,0.80)
		TNT1 A 1 A_SpawnItemEx ("FatalCleaveFX",0,0,34,0,0,0,0,SXF_NOCHECKPOSITION)
		TNT1 A 0 ACS_NamedExecuteAlways("FatalDamager", 0, 0, 0, 0)				
		TNT1 A 0 A_TakeInventory ("FatalSafety",1)
		stop
	NoHit:
		TNT1 A 0
		TNT1 A 1 A_TakeInventory ("FatalSafety",1)
		stop
	}
}


ACTOR FatalCleaveFX
{
	+NOBLOCKMAP
	+NOGRAVITY
	+NOCLIP
	+NOTELEPORT
	+bright
	renderstyle add
	alpha 0.70
	scale 1.50
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_PlaySound ("Poweredtear/cleave",0)
		TNT1 A 0 Radius_Quake (2,10,0,10,0)
		PLSH IHGFEDCBA 1 bright
		TNT1 A 2
		stop
	Death:
		TNT1 A 0
		TNT1 A 1
		stop
	}
}


actor FatalSafety : Powerup
{
	Powerup.Duration -1
}	



ACTOR FatalSlashPart1
{
	RenderStyle add
	+NOBLOCKMAP
	+NOCLIP
	+NOGRAVITY
	+THRUACTORS
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_CheckRange(128,"Spawn2")
		TNT1 A 1
		Stop
	Spawn2:
		ZSLH A 3 BRIGHT
		Stop
	}
}

ACTOR FatalSlashPart2 : FatalSlashPart1
{
	Scale .90
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_CheckRange(124,"Spawn2")
		TNT1 A 1
		Stop
	Spawn2:
		ZSLH A 3 BRIGHT
		Stop
	}
}

ACTOR FatalSlashPart3 : FatalSlashPart1
{
	Scale .80
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_CheckRange(120,"Spawn2")
		TNT1 A 1 
		Stop
	Spawn2:
		ZSLH A 3 BRIGHT 
		Stop
	}
}

ACTOR FatalSlashPart3_2 : FatalSlashPart1
{
	Scale .78
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_CheckRange(110,"Spawn2")
		TNT1 A 1
		Stop
	Spawn2:
		ZSLH A 3 BRIGHT 
		Stop
	}
}

ACTOR FatalSlashPart4 : FatalSlashPart1
{
	Scale .70
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_CheckRange(100,"Spawn2")
		TNT1 A 1
		Stop
	Spawn2:
		ZSLH A 3 BRIGHT 
		Stop
	}
}

ACTOR FatalSlashPart5 : FatalSlashPart1
{
	Scale .65
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_CheckRange(90,"Spawn2")
		TNT1 A 1 
		Stop
	Spawn2:
		ZSLH A 3 BRIGHT 
		Stop
	}
}

ACTOR FatalSlashPart6 : FatalSlashPart1
{
	Scale .5
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_CheckRange(80,"Spawn2")
		TNT1 A 1
		Stop
	Spawn2:
		ZSLH A 3 BRIGHT 
		Stop
	}
}

ACTOR FatalSlashPart7 : FatalSlashPart1
{
	Scale .45
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_CheckRange(60,"Spawn2")
		TNT1 A 1
		Stop
	Spawn2:
		ZSLH A 3 BRIGHT 
		Stop
	}
}

ACTOR FatalSlashPart8 : FatalSlashPart1
{
	Scale .35
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_CheckRange(45,"Spawn2")
		TNT1 A 1
		Stop
	Spawn2:
		ZSLH A 3 BRIGHT 
		Stop
	}
}

ACTOR FatalSlashPart9 : FatalSlashPart1
{
	Scale .2
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_CheckRange(30,"Spawn2")
		TNT1 A 1 
		Stop
	Spawn2:
		ZSLH A 3 BRIGHT 
		Stop
	}
}

ACTOR FatalSlashPart10 : FatalSlashPart1
{
	Scale .1
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_CheckRange(5,"Spawn2")
		TNT1 A 1 
		Stop
	Spawn2:
		ZSLH A 3 BRIGHT 
		Stop
	}
}

//---------------------------------------------------------------------------

//==100 CRACK FIST ATTACK==


actor CrackFist
{
	+notimefreeze
	+BLOODSPLATTER
	+FORCEXYBILLBOARD
	+BRIGHT
	+NOEXTREMEDEATH
	+thruspecies
	+DONTREFLECT
	species "Friendly"
	renderstyle add
	alpha 0.60
	scale 0.70
	projectile
	radius 8
	height 16
	speed 45
	damage (30)
	states
	{
	spawn:
		SKYF A 1
		loop
	death:
	crash:
		TNT1 A 0
		TNT1 A 0 A_PlaySound ("Subweapons/CrackFistmiss")
		BZP2 ABCDEFGH 1
		stop
	xdeath:
		TNT1 A 0
		TNT1 A 0 A_PlaySound ("Subweapons/CrackFisthit")
		BZP1 ABCDEFG 1
		stop
	}
}


actor FinalCrackFist : CrackFist
{
	+notimefreeze
	+BLOODSPLATTER
	+FORCEXYBILLBOARD
	+extremedeath
	projectile
	radius 8
	height 16
	speed 65
	scale 3
	damage (300)
	deathsound "magegunner/missileexplode"
	states
	{
	spawn:
		SKYF A 1
		loop
	death:
		TNT1 A 0 A_PlaySound ("Subweapons/CrackFistmiss")
		TNT1 A 0 Radius_Quake (2,10,0,32,0)
		TNT1 A 0 a_explode (120, 350, 0, 0, 350)
		TNT1 A 0 A_RadiusThrust (50000, 200,0)
		TNT1 AAAAAAA 0 A_SpawnDebris ("missiledebris1")
		TNT1 AAAAAAAAAAAA 0 A_SpawnItemEx ("missiledebris2",random(-16,16),random(-16,16),random(-10,10),random(-100,100)/20.0,random(-100,100)/20.0,random(-100,100)/20.0,0,160)
		MMXP ABCDEFGHIJKL 2
		stop
	}
}


actor Fatalchargespawner
{
	+clientsideonly
	+nointeraction
	projectile
	Radius 4
	Height 5
	speed 3
	Renderstyle Add
	scale 0.50
	Alpha 0.70
	states
	{
	spawn:
		TNT1 A 0
		TNT1 AAAAA 0 A_SpawnItemEx ("Fatalcharge",10,-4,25,Frandom(-100,100)/20.0,Frandom(-100,100)/20.0,Frandom(-100,100)/20.0,0)
		TNT1 AAA 1 A_Warp(AAPTR_MASTER, 5, 0, 0, 0, WARPF_NOCheckPOSITION)	
		goto death
	death:
		TNT1 A 1
		stop
	}
}

actor Fatalcharge
{
	+clientsideonly
	+nointeraction
	+bright
	projectile
	Radius 4
	Height 5
	speed 3
	Renderstyle Add
	scale 0.50
	Alpha 0.70
	states
	{
	spawn:
		TNT1 A 0
		TNT1 A 10
		TNT1 A 0 a_scalevelocity (-2)
		WTL1 A 5 
		goto death
	death:
		TNT1 A 1
		stop
	}
}		

actor Fatalburst
{
	+clientsideonly
	+nointeraction
	+BRIGHT
	projectile
	Radius 4
	Height 5
	speed 3
	scale 0.80
	states
	{
	spawn:
		TNT1 A 0
		TNT1 A 0 A_PlaySound ("gibs/Fatalburst",7,1,0,1.2)
		FRFX F 2
		FRFX G 2
		FRFX H 2
		FRFX I 1
		FRFX J 1
		goto death
	death:
		TNT1 A 1
		stop
	}
}		


//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


//==============================================================================================================================
//---MISC AND TOKENS---
//==============================================================================================================================

actor bladespark
{
	Health 4
	radius 3
	height 6
	speed .1
	RenderStyle ADD
	scale 0.4
	Alpha	1
	Mass	0
	+missile
	+clientsideonly
	+doombounce
	+FLOORCLIP
	+DONTSPLASH
	+bright
	+NOTELEPORT
	States
	{
		TNT1 A 0
		SSPK AAAAAA 1
		Stop
	}
}
	
actor blastradius : artiblastradius
{
+inventory.autoactivate
}

Actor InvisibleFX
{
	+NOBLOCKMAP
	+NOGRAVITY
	+NOCLIP
	+NOTELEPORT
	states
	{
	Spawn:
		TNT1 A 0
		TNT1 A 1
		stop
	Death:
		TNT1 A 0
		TNT1 A 1
		stop
	}
}


//Good lord look at all of these tokens for all this
//random crap.

//--------------------------------------------------


actor healChecker : Powerup
{
	Powerup.Duration 5
}


actor SubweaponGaugeFreezer : powerup
{
	powerup.duration -2
}

actor DecayPause : powerup
{
	powerup.duration -1
}


actor UsingSword : powerup
{
	powerup.duration 20
}

actor UsingSubweapon : powerup
{
	powerup.duration 20
}

actor UsingBlazter : powerup
{
	powerup.duration 20
}

actor SubweaponRefire : powerup
{
	powerup.duration 10
}
	

actor HammerHit : inventory
{inventory.maxamount 1}

actor HammerMiss : inventory
{inventory.maxamount 1}

actor UnarmedCheck : inventory
{inventory.maxamount 1}

actor PowerSwordCheck : inventory
{inventory.maxamount 1}

actor ThrownSwordCooldown : inventory
{inventory.maxamount 600}

actor FatalDrawToken : inventory
{inventory.maxamount 1}

actor Fistloop : inventory
{inventory.maxamount 8}


actor SwordWaiter : inventory
{inventory.maxamount 450}
