/*

==HERO SWORD AND SHIELD==
Designed straight from an NES game, the Hero Sword and Shield
is a set of tools well suited for close combat, despite being
made of wood, the sword is still fully capable of cutting down
foes without showing any signs of wear and tear. The sword
can be upgraded to a white steel blade, and finally a magical
stone blade, increasing the weapon's damage! When the user is
at high vitality, the wielder can channel their will through
the blade to fire sword beams for a ranged attack!

The shield is infused with magic that's capable of stopping
any projectile or ballistic attack with no problems. It should
be noted that the shield doesn't do much for stopping splash damage
so the user will suffer burns from rocket explosions.

It should be noted that the shield can absorb the explosive force
from the bombs that come with the kit to blast jump with no self damage

By default the kit also comes with a wooden boomerang with a weak
enchantment, it can be used to deal minor damage to enemies and
paralyze them, this also can be upgraded!

Finally the Sword can also be paired with a magical candle to burn
enemies down or to bring light to dark rooms!

*/


actor HeroSword : weapon
{
	Weapon.SelectionOrder 200
	Inventory.RestrictedTo "PastLinked"
	weapon.bobstyle smooth
	weapon.bobrangex 0.1
	weapon.bobrangey 0.6
	weapon.bobspeed 2
	+undroppable
	+cheatnotweapon
	+NOAUTOAIM
	Tag "Sword and Shield"
	states
	{
	select:
		TNT1 A 0
	draw:
		TNT1 A 0
		HBID AAAAAAAA 0 a_raise
		TNT1 A 1 a_raise
		loop
	Ready:
		TNT1 A 0
		TNT1 A 0 a_jumpifinventory ("MagicalSwordToken",1,"MagicalSwordReady")
		TNT1 A 0 a_jumpifinventory ("WhiteSwordToken",1,"WhiteSwordReady")
		SBLK E 0 A_SpawnItemEx("shieldblocker",-8,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",8,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",24,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",-8,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",8,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",24,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",-8,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",8,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",24,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		TNT1 A 0 a_jumpifinventory ("BlockedAthing",1, "WoodSwordBlock")
		WSDL A 0 a_jumpifinventory ("secretaction", 1, "MagicFlute")
		WSDL A 1 a_weaponready
		loop
	deselect:
		TNT1 A 0
		TNT1 A 0 a_stopsound (6)
		TNT1 A 0 a_jumpifhealthlower (1, "deadlower")
		TNT1 A 0 a_playsound ("PastLinked/WeaponSwitch",6)
		//TNT1 A 0 a_playsound ("Axe/holster",0)
	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
	fire:
		TNT1 A 0 
		TNT1 A 0 a_takeinventory ("BlockedAthing",99)
		TNT1 A 0 
		TNT1 A 0 a_jumpifinventory ("MagicalSwordToken",1,"MagicalSwordStab")
		TNT1 A 0 a_jumpifinventory ("WhiteSwordToken",1,"WhiteSwordStab")
	WoodSwordStab:
		WSDF AB 1
		WSDF CDDD 1
		TNT1 A 0 a_takeinventory ("BlockedAthing",99)
		TNT1 A 0 a_playsound ("PastLinked/SwordAttack",0)
		WSDF EF 1 
		WSDF G 1 A_FireCustomMissile ("WoodSwordStab")
		TNT1 A 0 a_gunflash ("Swordbeam",GFF_NOEXTCHANGE)
		TNT1 A 0 a_firebullets (0,0,1,0,"flickpuff",FBF_NOFLASH)
		WSDF HHII 1
		WSDF JJKLMN 1
		TNT1 A 0 a_refire ("RightWoodSlash")
		goto ready
	
	SwordBeam:
		TNT1 A 0
		TNT1 A 0 a_jumpifinventory ("SwordBeamTimer",1,"NoBeam")
		TNT1 A 1 a_jumpifhealthlower (95,"NoBeam")
		TNT1 A 0 a_giveinventory ("SwordBeamTimer",1)
		TNT1 A 0 A_FireCustomMissile ("HeroSwordBeam")
		stop
	NoBeam:
		TNT1 A 0
		TNT1 A 1 
		stop
	RightWoodSlash:
		TNT1 A 0
		TNT1 A 0 a_jumpifinventory ("MagicalSwordToken",1,"RightMagicalSlash")
		TNT1 A 0 a_jumpifinventory ("WhiteSwordToken",1,"RightWhiteSlash")
		WSSL ABC 1
		TNT1 A 0 a_takeinventory ("BlockedAthing",99)
		TNT1 A 0 a_playsound ("PastLinked/SwordAttack",0)
		WSSL D 1 A_FireCustomMissile ("WoodSwordSlash")
		WSSL EF 1
		WSSL GH 2
		TNT1 A 0 a_refire ("LeftWoodSlash")
		WSSL S 2
		goto WoodSlashEnd

	LeftWoodSlash:
		TNT1 A 0
		TNT1 A 0 a_jumpifinventory ("MagicalSwordToken",1,"LeftMagicalSlash")
		TNT1 A 0 a_jumpifinventory ("WhiteSwordToken",1,"LeftWhiteSlash")
		WSSL II 1
		WSSL J 1
		TNT1 A 0 a_takeinventory ("BlockedAthing",99)
		TNT1 A 0 a_playsound ("PastLinked/SwordAttack",0)
		WSSL K 1 A_FireCustomMissile ("WoodSwordSlash")
		WSSL LM 1
		WSSL NO 2
		TNT1 A 0 a_refire ("RightWoodSlash")
		goto WoodSlashEnd
	WoodSlashEnd:
		WSSL PQR 2 a_weaponready
		goto ready
		
//Shield blocking stuff
//This is so big and ugly I'm putting it at the bottom where
//it frickin belongs

	WoodSwordBlock:
		TNT1 A 0
		TNT1 A 0 a_jumpifinventory ("BlockedABomb",1, "BombJump")
		TNT1 A 0 a_takeinventory ("BlockedAthing",99)

		SBLK E 0 A_SpawnItemEx("shieldblocker",-8,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",8,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",24,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",-8,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",8,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",24,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",-8,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",8,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",24,30,(sin(pitch)*-63)+5,0,0,0,-270,32)
		TNT1 A 0 a_jumpifinventory ("BlockedAthing",1, "WoodSwordBlock")
		TNT1 A 0 A_ChangeVelocity(Cos(Pitch)*-5,0,Sin(Pitch)*10,1)
		WSBL A 1 a_weaponready

		SBLK E 0 A_SpawnItemEx("shieldblocker",-8,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",8,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",24,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",-8,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",8,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",24,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",-8,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",8,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",24,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		TNT1 A 0 a_jumpifinventory ("BlockedAthing",1, "WoodSwordBlock")
		WSBL B 1 a_weaponready

		SBLK E 0 A_SpawnItemEx("shieldblocker",-8,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",8,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",24,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",-8,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",8,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",24,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",-8,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",8,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",24,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		TNT1 A 0 a_jumpifinventory ("BlockedAthing",1, "WoodSwordBlock")
		WSBL C 1 a_weaponready

		SBLK E 0 A_SpawnItemEx("shieldblocker",-8,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",8,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",24,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",-8,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",8,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",24,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",-8,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",8,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",24,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		TNT1 A 0 a_jumpifinventory ("BlockedAthing",1, "WoodSwordBlock")
		WSBL D 1 a_weaponready

		SBLK E 0 A_SpawnItemEx("shieldblocker",-8,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",8,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",24,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",-8,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",8,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",24,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",-8,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",8,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",24,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		TNT1 A 0 a_jumpifinventory ("BlockedAthing",1, "WoodSwordBlock")
		WSBL E 1 a_weaponready
		goto ready
	
//Bomb jumping thing!
	BombJump:
		TNT1 A 0
		TNT1 A 0 a_takeinventory ("BlockedABomb",99)
		TNT1 A 0 A_ChangeVelocity(Cos(Pitch)*-25,0,Sin(Pitch)*20,1)
		TNT1 A 0 a_jumpifinventory ("MagicalSwordToken",1,"MagicalSwordBlock")
		TNT1 A 0 a_jumpifinventory ("WhiteSwordToken",1,"WhiteSwordBlock")
		Goto WoodSwordBlock

//HAHA OH BOY TIME TO DUPLICATE ALL OF THE ABOVE CRAP FOR TWO OTHER SWORD STATES
//This is such a pain but damn I still think it's worth it, sword upgrades
//are cool.




//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//WHITE SWORD STUFF
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

	WhiteSwordReady:
		TNT1 A 0
		TNT1 A 0 a_jumpifinventory ("MagicalSwordToken",1,"MagicalSwordReady")
		SBLK E 0 A_SpawnItemEx("shieldblocker",-8,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",8,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",24,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",-8,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",8,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",24,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",-8,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",8,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",24,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		TNT1 A 0 a_jumpifinventory ("BlockedAthing",1, "WhiteSwordBlock")
		WSDL B 0 a_jumpifinventory ("secretaction", 1, "MagicFlute")
		WSDL B 1 a_weaponready
		loop
	WhiteSwordStab:
		W1DF AB 1
		W1DF CDDD 1
		TNT1 A 0 a_takeinventory ("BlockedAthing",99)
		TNT1 A 0 a_playsound ("PastLinked/SwordAttack",0)
		W1DF EF 1 
		W1DF G 1 A_FireCustomMissile ("WhiteSwordStab")
		TNT1 A 0 a_firebullets (0,0,1,0,"flickpuff",FBF_NOFLASH)
		TNT1 A 0 a_gunflash ("SwordbeamLv2",GFF_NOEXTCHANGE)
		W1DF HHII 1
		W1DF JJKLMN 1
		TNT1 A 0 a_refire ("RightWhiteSlash")
		goto ready
	
	SwordBeamLv2:
		TNT1 A 0
		TNT1 A 0 a_jumpifinventory ("SwordBeamTimer",1,"NoBeam")
		TNT1 A 1 a_jumpifhealthlower (90,"NoBeam")
		TNT1 A 0 a_giveinventory ("SwordBeamTimer",1)
		TNT1 A 0 A_FireCustomMissile ("Lv2SwordBeam")
		stop
	RightWhiteSlash:
		TNT1 A 0
		TNT1 A 0 a_jumpifinventory ("MagicalSwordToken",1,"RightMagicalSlash")
		W1SL ABC 1
		TNT1 A 0 a_takeinventory ("BlockedAthing",99)
		TNT1 A 0 a_playsound ("PastLinked/SwordAttack",0)
		W1SL D 1 A_FireCustomMissile ("WhiteSwordSlash")
		W1SL EF 1
		W1SL GH 2
		TNT1 A 0 a_refire ("LeftWhiteSlash")
		W1SL S 2
		goto WhiteSlashEnd

	LeftWhiteSlash:
		TNT1 A 0
		TNT1 A 0 a_jumpifinventory ("MagicalSwordToken",1,"LeftMagicalSlash")
		W1SL II 1
		W1SL J 1
		TNT1 A 0 a_takeinventory ("BlockedAthing",99)
		TNT1 A 0 a_playsound ("PastLinked/SwordAttack",0)
		W1SL K 1 A_FireCustomMissile ("WhiteSwordSlash")
		W1SL LM 1
		W1SL NO 2
		TNT1 A 0 a_refire ("RightWhiteSlash")
		goto WhiteSlashEnd
	WhiteSlashEnd:
		W1SL PQR 2 a_weaponready
		goto ready
		


	WhiteSwordBlock:
		TNT1 A 0
		TNT1 A 0 a_jumpifinventory ("BlockedABomb",1, "BombJump")
		TNT1 A 0 a_takeinventory ("BlockedAthing",99)

		SBLK E 0 A_SpawnItemEx("shieldblocker",-8,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",8,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",24,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",-8,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",8,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",24,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",-8,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",8,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",24,30,(sin(pitch)*-63)+5,0,0,0,-270,32)
		TNT1 A 0 a_jumpifinventory ("BlockedAthing",1, "WhiteSwordBlock")
		TNT1 A 0 A_ChangeVelocity(Cos(Pitch)*-5,0,Sin(Pitch)*10,1)
		W1BL A 1 a_weaponready

		SBLK E 0 A_SpawnItemEx("shieldblocker",-8,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",8,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",24,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",-8,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",8,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",24,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",-8,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",8,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",24,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		TNT1 A 0 a_jumpifinventory ("BlockedAthing",1, "WhiteSwordBlock")
		W1BL B 1 a_weaponready

		SBLK E 0 A_SpawnItemEx("shieldblocker",-8,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",8,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",24,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",-8,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",8,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",24,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",-8,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",8,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",24,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		TNT1 A 0 a_jumpifinventory ("BlockedAthing",1, "WhiteSwordBlock")
		W1BL C 1 a_weaponready

		SBLK E 0 A_SpawnItemEx("shieldblocker",-8,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",8,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",24,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",-8,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",8,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",24,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",-8,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",8,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",24,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		TNT1 A 0 a_jumpifinventory ("BlockedAthing",1, "WhiteSwordBlock")
		W1BL D 1 a_weaponready

		SBLK E 0 A_SpawnItemEx("shieldblocker",-8,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",8,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",24,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",-8,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",8,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",24,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",-8,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",8,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",24,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		TNT1 A 0 a_jumpifinventory ("BlockedAthing",1, "WhiteSwordBlock")
		W1BL E 1 a_weaponready
		goto ready


//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//MAGICAL SWORD STUFF
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

	MagicalSwordReady:
		TNT1 A 0
		SBLK E 0 A_SpawnItemEx("shieldblocker",-8,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",8,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",24,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",-8,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",8,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",24,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",-8,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",8,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",24,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		TNT1 A 0 a_jumpifinventory ("BlockedAthing",1, "MagicalSwordBlock")
		WSDL C 0 a_jumpifinventory ("secretaction", 1, "MagicFlute")
		WSDL C 1 a_weaponready
		loop
	MagicalSwordStab:
		W2DF AB 1
		W2DF CDDD 1
		TNT1 A 0 a_takeinventory ("BlockedAthing",99)
		TNT1 A 0 a_playsound ("PastLinked/SwordAttack",0)
		W2DF EF 1 
		W2DF G 1 A_FireCustomMissile ("MagicalSwordStab")
		TNT1 A 0 a_firebullets (0,0,1,0,"flickpuff",FBF_NOFLASH)
		TNT1 A 0 a_gunflash ("SwordbeamLv3",GFF_NOEXTCHANGE)
		W2DF HHII 1
		W2DF JJKLMN 1
		TNT1 A 0 a_refire ("RightMagicalSlash")
		goto ready
	
	SwordBeamLv3:
		TNT1 A 0
		TNT1 A 0 a_jumpifinventory ("SwordBeamTimer",1,"NoBeam")
		TNT1 A 1 a_jumpifhealthlower (26,"PerilBeamCheck")
		TNT1 A 1 a_jumpifhealthlower (90,"NoBeam")
		TNT1 A 0 a_giveinventory ("SwordBeamTimer",1)
		TNT1 A 0 A_FireCustomMissile ("Lv3SwordBeam")
		stop
	PerilBeamCheck:
		TNT1 A 0
		TNT1 A 0 a_jumpifinventory ("PerilBeamtoken",1,"PerilBeamShot")
		TNT1 A 1
		stop
	PerilBeamShot:
		TNT1 A 0
		TNT1 A 0 a_jumpifinventory ("SwordBeamTimer",1,"NoBeam")
		TNT1 A 0 a_giveinventory ("SwordBeamTimer",1)
		TNT1 A 0 A_FireCustomMissile ("Lv3SwordBeam")
		TNT1 A 1
		stop
	
	RightMagicalSlash:
		W2SL ABC 1
		TNT1 A 0 a_takeinventory ("BlockedAthing",99)
		TNT1 A 0 a_playsound ("PastLinked/SwordAttack",0)
		W2SL D 1 A_FireCustomMissile ("MagicalSwordSlash")
		W2SL EF 1
		W2SL GH 2
		TNT1 A 0 a_refire ("LeftMagicalSlash")
		W2SL S 2
		goto MagicalSlashEnd

	LeftMagicalSlash:
		W2SL II 1
		W2SL J 1
		TNT1 A 0 a_takeinventory ("BlockedAthing",99)
		TNT1 A 0 a_playsound ("PastLinked/SwordAttack",0)
		W2SL K 1 A_FireCustomMissile ("MagicalSwordSlash")
		W2SL LM 1
		W2SL NO 2
		TNT1 A 0 a_refire ("RightMagicalSlash")
		goto MagicalSlashEnd
	MagicalSlashEnd:
		W2SL PQR 2 a_weaponready
		goto MagicalSwordReady
		


	MagicalSwordBlock:
		TNT1 A 0
		TNT1 A 0 a_jumpifinventory ("BlockedABomb",1, "BombJump")
		TNT1 A 0 a_takeinventory ("BlockedAthing",99)

		SBLK E 0 A_SpawnItemEx("shieldblocker",-8,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",8,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",24,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",-8,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",8,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",24,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",-8,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",8,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",24,30,(sin(pitch)*-63)+5,0,0,0,-270,32)
		TNT1 A 0 a_jumpifinventory ("BlockedAthing",1, "MagicalSwordBlock")
		TNT1 A 0 A_ChangeVelocity(Cos(Pitch)*-5,0,Sin(Pitch)*10,1)
		W2BL A 1 a_weaponready

		SBLK E 0 A_SpawnItemEx("shieldblocker",-8,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",8,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",24,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",-8,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",8,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",24,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",-8,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",8,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",24,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		TNT1 A 0 a_jumpifinventory ("BlockedAthing",1, "MagicalSwordBlock")
		W2BL B 1 a_weaponready

		SBLK E 0 A_SpawnItemEx("shieldblocker",-8,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",8,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",24,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",-8,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",8,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",24,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",-8,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",8,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",24,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		TNT1 A 0 a_jumpifinventory ("BlockedAthing",1, "MagicalSwordBlock")
		W2BL C 1 a_weaponready

		SBLK E 0 A_SpawnItemEx("shieldblocker",-8,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",8,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",24,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",-8,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",8,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",24,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",-8,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",8,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",24,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		TNT1 A 0 a_jumpifinventory ("BlockedAthing",1, "MagicalSwordBlock")
		W2BL D 1 a_weaponready

		SBLK E 0 A_SpawnItemEx("shieldblocker",-8,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",8,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",24,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",-8,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",8,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",24,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",-8,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",8,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",24,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		TNT1 A 0 a_jumpifinventory ("BlockedAthing",1, "MagicalSwordBlock")
		W2BL E 1 a_weaponready
		goto ready






//Altfire stuff
	Altfire:
		TNT1 A 0
		SBLK E 0 A_SpawnItemEx("shieldblocker",-8,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",8,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",24,30,(sin(pitch)*-63)+35,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",-8,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",8,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",24,30,(sin(pitch)*-63)+20,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",-8,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",8,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		SBLK E 0 A_SpawnItemEx("shieldblocker",24,30,(sin(pitch)*-63)+5,0,0,0,-270,32)		
		
		TNT1 A 0 a_takeinventory ("BlockedAthing",99)
		TNT1 A 0 a_jumpifinventory ("BoomerangActive",1,"BoomerangCheck")
		TNT1 A 0 a_jumpifinventory ("CandleActive",1,"CandleCheck")
		TNT1 A 0 a_jumpifinventory ("BombBagActive",1,"BombCheck")
		WSDL A 1 a_weaponready
		goto ready
	
//Boomerang
	BoomerangCheck:
		TNT1 A 0
		TNT1 A 0 a_jumpifinventory ("BoomerangCooldown",1, "Ready")
		TNT1 A 0 a_takeinventory ("BlockedAthing",99)
		TNT1 A 0 a_jumpifinventory ("FireBoomerangToken",1,"FireThrow")
		TNT1 A 0 a_jumpifinventory ("MagicalBoomerangToken",1,"MagicalThrow")
		goto WoodenThrow
	WoodenThrow:
		TNT1 A 0
		BMR1 ABC 1
		BMR1 DEF 2
		BMR1 G 1
		TNT1 A 0 a_takeinventory ("BlockedAthing",99)
		TNT1 A 0 a_giveinventory ("BoomerangCoolDown",260)
		TNT1 A 0 ACS_NamedExecuteAlways("BoomerangCharge", 0, 0, 0, 0)
		TNT1 A 0 a_firebullets (0,0,1,0,"flickpuff",FBF_NOFLASH)
		BMR1 H 1 a_firecustommissile ("NormalBoomerang")
		BMR1 IJKL 2 
		TNT1 A 0 a_jumpifinventory ("MagicalSwordToken",1,"MagicalSlashEnd")
		TNT1 A 0 a_jumpifinventory ("WhiteSwordToken",1,"WhiteSlashEnd")
		Goto WoodSlashEnd
	MagicalThrow:
		TNT1 A 0
		BMR2 ABC 1
		BMR2 DEF 2
		BMR2 G 1
		TNT1 A 0 a_takeinventory ("BlockedAthing",99)
		TNT1 A 0 a_giveinventory ("BoomerangCoolDown",260)
		TNT1 A 0 ACS_NamedExecuteAlways("BoomerangCharge", 0, 0, 0, 0)
		TNT1 A 0 a_firebullets (0,0,1,0,"flickpuff",FBF_NOFLASH)
		BMR1 H 1 a_firecustommissile ("MagicalBoomerang")
		BMR1 IJKL 2 
		TNT1 A 0 a_jumpifinventory ("MagicalSwordToken",1,"MagicalSlashEnd")
		TNT1 A 0 a_jumpifinventory ("WhiteSwordToken",1,"WhiteSlashEnd")
		Goto WoodSlashEnd
	FireThrow:
		TNT1 A 0
		BMR3 ABC 1
		BMR3 DEF 2
		BMR3 G 1
		TNT1 A 0 a_takeinventory ("BlockedAthing",99)
		TNT1 A 0 a_giveinventory ("BoomerangCoolDown",260)
		TNT1 A 0 ACS_NamedExecuteAlways("BoomerangCharge", 0, 0, 0, 0)
		TNT1 A 0 a_firebullets (0,0,1,0,"flickpuff",FBF_NOFLASH)
		BMR1 H 1 a_firecustommissile ("FireBoomerang")
		BMR1 IJKL 2 
		TNT1 A 0 a_jumpifinventory ("MagicalSwordToken",1,"MagicalSlashEnd")
		TNT1 A 0 a_jumpifinventory ("WhiteSwordToken",1,"WhiteSlashEnd")
		Goto WoodSlashEnd

	
//Candle
	CandleCheck:
		TNT1 A 0
		TNT1 A 0 a_takeinventory ("BlockedAthing",99)
		TNT1 A 0 a_jumpifinventory ("CandleCooldown",1, "Ready")
		TNT1 A 0 a_jumpifinventory ("RedCandle",1, "RedCandle")
		goto BlueCandle
	BlueCandle:
		CND1 ABCDEF 2 bright
		CND1 G 1 bright
		TNT1 A 0 a_takeinventory ("BlockedAthing",99)
		TNT1 A 0 a_giveinventory ("CandleCoolDown",450)
		TNT1 A 0 ACS_NamedExecuteAlways("CandleCharge", 0, 0, 0, 0)
		TNT1 A 0 a_playsound ("PastLinked/Candle",0)
		MROD FFFFFFFFFF 0 Bright A_FireCustomMissile("candlefire", Frandom(-1500, 1500) / 70.0, 0, 0, 8, 0, Frandom(-1200, 1200) / 400.0)
		CND1 H 1 a_firecustommissile ("CandleFire")
		CND1 IJKL 2
		TNT1 A 0 a_refire ("GiveLight")
		TNT1 A 0 a_jumpifinventory ("MagicalSwordToken",1,"MagicalSlashEnd")
		TNT1 A 0 a_jumpifinventory ("WhiteSwordToken",1,"WhiteSlashEnd")
		Goto WoodSlashEnd
	RedCandle:
		CND2 ABCDEF 2 
		CND2 G 1 
		TNT1 A 0 a_takeinventory ("BlockedAthing",99)
		TNT1 A 0 a_giveinventory ("CandleCoolDown",450)
		TNT1 A 0 ACS_NamedExecuteAlways("CandleCharge", 0, 0, 0, 0)
		TNT1 A 0 a_playsound ("PastLinked/Candle",0)
		CND2 FFFFFFFFFFFFF 0 Bright A_FireCustomMissile("Redcandlefire", Frandom(-1500, 1500) / 70.0, 0, 0, 8, 0, Frandom(-1200, 1200) / 400.0)
		CND2 H 1 a_firecustommissile ("RedCandleFire")
		CND2 IJKL 2
		TNT1 A 0 a_refire ("GiveLight")
		TNT1 A 0 a_jumpifinventory ("MagicalSwordToken",1,"MagicalSlashEnd")
		TNT1 A 0 a_jumpifinventory ("WhiteSwordToken",1,"WhiteSlashEnd")
		Goto WoodSlashEnd

	GiveLight:
		TNT1 A 0
		TNT1 A 0 ACS_NamedExecuteAlways("CandleTime", 0, 0, 0, 0)
		TNT1 A 0 a_giveinventory ("CandleLightTimer",1)
		TNT1 A 0 a_giveinventory ("MagicCandleLight",1)
		TNT1 A 0 a_jumpifinventory ("MagicalSwordToken",1,"MagicalSlashEnd")
		TNT1 A 0 a_jumpifinventory ("WhiteSwordToken",1,"WhiteSlashEnd")
		Goto WoodSlashEnd

//Bombs
	BombCheck:
		TNT1 A 0
		TNT1 A 0 a_takeinventory ("BlockedAthing",99)
		TNT1 A 0 a_jumpifinventory ("RocketAmmo",1,"BombToss")
		goto Ready
	BombToss:
		LBT1 ABCDEF 2 
		LBT1 G 1 
		TNT1 A 0 a_takeinventory ("BlockedAthing",99)
		TNT1 A 0 a_playsound ("PastLinked/BombToss",0)
		TNT1 A 0 a_firecustommissile ("LinkedBomb")
		TNT1 A 0 a_takeinventory ("RocketAmmo",1)
		LBT1 HH 1 
		LBT1 IJKL 2 
		TNT1 A 0 a_jumpifinventory ("MagicalSwordToken",1,"MagicalSlashEnd")
		TNT1 A 0 a_jumpifinventory ("WhiteSwordToken",1,"WhiteSlashEnd")
		Goto WoodSlashEnd


//Magic Flute
	MagicFlute:
		"####" # 1 offset (0,40)
		"####" # 1 offset (0,50)
		"####" # 1 offset (0,60)
		"####" # 1 offset (0,85)
		"####" # 1 offset (0,92)
		TNT1 A 0 a_weaponready (WRF_NOFIRE|WRF_NOSWITCH)
		TNT1 A 0 a_takeinventory ("secretaction", 99)
		TNT1 A 6
		WFLU ABCDE 2
		WFLU F 4
		TNT1 A 0 a_playsound ("PastLinked/MagicFlute1",0)
		WFLU F 9
		WFLU G 5
		WFLU H 5
		WFLU I 24
		WFLU G 5
		WFLU F 8
		WFLU H 4
		WFLU F 40
		WFLU IJKLM 2
		TNT1 A 0 a_giveinventory ("WarpWhistlePort",1)
		TNT1 A 8
		goto draw
		
	}
}


actor WoodSwordStab : fastprojectile
{
	Projectile
	speed 90
	damage (30)
	obituary "%k proved it was dangerous to go alone to %o."
	+BLOODSPLATTER
	+thruspecies
	+dontblast
	+bright
	+Noextremedeath
	+dontreflect
	DamageType "CALinked"
	species "player"
	height 6
	radius 14
	mass 2000
	projectilekickback 600
	states
	{
	Spawn:
		TNT1 A 1
		stop
	Death:
		TNT1 A 0
		TNT1 A 1
		TNT1 A 0 A_PlaySound("PastLinked/Shield", CHAN_AUTO)
		TNT1 A 0 A_SpawnDebris("WWStyleBulletSpark")
		TNT1 A 0 radius_quake (1,2,0,8,0)
		ZDTH A 3
		ZDTH B 3
		ZDTH A 3
		TNT1 A 5 
		stop
	Xdeath:
		TNT1 A 0
		TNT1 A 1
		TNT1 A 0 A_PlaySound("PastLinked/Hitsound", CHAN_AUTO)
		TNT1 A 0 A_PlaySound("PastLinked/ArrowHit", 0)
		TNT1 A 0 radius_quake (1,4,0,8,0)
		STBE B 1
		STBE B 1 a_setscale (0.30,2)
		STBE B 1 a_setscale (0.80,1)
		STBE B 1 a_setscale (1.60,1.40)
		STBE B 2 a_setscale (0.80,1)
		stop
	}
}


actor WoodSwordSlash  : WoodSwordStab
{
	mass 5
	projectilekickback 50
	states
	{
	Spawn:
		TNT1 A 1
		stop
	Death:
		TNT1 A 0
		TNT1 A 1
		TNT1 A 0 A_PlaySound("PastLinked/Shield", CHAN_AUTO)
		TNT1 A 0 A_SpawnDebris("WWStyleBulletSpark")
		TNT1 A 0 radius_quake (1,2,0,8,0)
		ZDTH A 3
		ZDTH B 3
		ZDTH A 3
		TNT1 A 5 
		stop
	Xdeath:
		TNT1 A 0
		TNT1 A 1
		TNT1 A 0 A_PlaySound("PastLinked/Hitsound", CHAN_AUTO)
		TNT1 A 0 A_PlaySound("PastLinked/ArrowHit", 0)
		TNT1 A 0 radius_quake (1,2,0,8,0)
		STBE B 1
		STBE B 1 a_setscale (1.60,0.40)
		STBE B 1 a_setscale (2.50,0.20)
		STBE B 2 a_setscale (4.50,0.05)
		stop
	}
}

//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//White Sword attacks
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

actor WhiteSwordStab : WoodSwordStab
{
	damage (60)
}


actor WhiteSwordSlash  : WoodSwordSlash
{
	damage (60)
	mass 5
	projectilekickback 50
}


//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//Magical Sword attacks
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

actor MagicalSwordStab : WoodSwordStab
{
	damage (120)
}


actor MagicalSwordSlash  : WoodSwordSlash
{
	damage (120)
	mass 5
	projectilekickback 50
}





actor HeroSwordBeam
{
	Radius 13
	Height 8
	Speed 40
	Damage (15)
	Projectile
	species "Player"
	+thruspecies
	+bright
	+skyexplode
	+Noextremedeath
	DamageType "CALinked"
	SeeSound "PastLinked/SwordBeam"
	scale 0.25
	Obituary "%o was zapped by %k's sword"
	decal CANESDecal
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 a_spawnitemex ("SmallSwordBeamFX")
	Flying:	
		SDBM A 2
		SDBM B 2
		SDBM C 2
		SDBM D 2
		loop
	Death:
		PLZM H 0
		TNT1 A 0 a_takefromtarget ("SwordBeamTimer",99)
		TNT1 A 1
		TNT1 A 1 a_spawnitemex ("SwordBeamFX")
		stop
	Xdeath:
		PLZM H 0
		TNT1 A 0 A_PlaySound("PastLinked/Hitsound", CHAN_AUTO)
		TNT1 A 0 a_takefromtarget ("SwordBeamTimer",99)
		TNT1 A 1
		TNT1 A 1 a_spawnitemex ("SwordBeamFX")
		stop
	}
}

actor Lv2SwordBeam : HeroSwordBeam
{
	Damage (30)
}


actor Lv3SwordBeam : HeroSwordBeam
{
	Damage (60)
}



actor SwordBeamFX
{
	+notimefreeze
    +FORCEXYBILLBOARD	
	+NOINTERACTION
	+bright
	+clientsideonly
	species "player"
	+thruspecies
	height 4
	radius 4
	speed 25
    Scale 1
	states
	{
	spawn:
		TNT1 A 0
		S8FX ABCDEFGHIJKLMN 1
		stop
	Death:
		TNT1 A 1 
		stop
	}
}

actor SmallSwordBeamFX : SwordBeamFX
{
	scale 0.25
	states
	{
	spawn:
		TNT1 A 0
		S8FX ABCDEFGH 1
		stop
	}
}



actor shieldblocker
{
	projectile
	+noblood
	+shootable
	+notimefreeze
	+ripper
	+bloodlessimpact
	+thruspecies
	+notargetswitch
	+NORADIUSDMG
	+PAINLESS
	+DONTRIP
	-bloodsplatter
	-noblockmap
	-ACTIVATEIMPACT
	painchance 255
	species "Player"
	radius 16 
	height 32
	speed 40
	mass 1
	damage (0)
	states
	{
	spawn:
		TNT1 A 0
		TNT1 AAAA 1
		goto blockend
	blockend:
		TNT1 A 0
		TNT1 A 1 
		stop
	death:
		TNT1 A 0
		TNT1 A 1
		stop
	pain:
		TNT1 A 0 a_playsound ("PastLinked/Shield",0)
		TNT1 A 0 a_givetotarget ("BlockedAthing",1)
		TNT1 A 0 Radius_Quake (1,8,0,20,0)
		TNT1 A 1
		stop
	Pain.CALinked:
	Pain.FattyNapalm:
		TNT1 A 1
		stop
	Pain.CALinkedBomb:
		TNT1 A 0
		TNT1 A 0 a_playsound ("PastLinked/Shield",0)
		TNT1 A 0 a_givetotarget ("BlockedAthing",1)
		TNT1 A 0 a_givetotarget ("BlockedABomb",1)
		TNT1 A 0 Radius_Quake (2,8,0,20,0)
		TNT1 A 1
		stop

	}
}


ACTOR WarpWhistlePort : ArtiTeleport
{
	-COUNTITEM
	-FLOATBOB
	+quiet
 	+AUTOACTIVATE
	-INVENTORY.INVBAR
	-INVENTORY.PICKUPFLASH
	-INVENTORY.FANCYPICKUPSOUND
  
	Inventory.DefMaxAmount
	Inventory.Icon ""
}






//Tokens

ACTOR SwordBeamTimer : Powerup
{
  Powerup.Duration -3
}

actor BlockedAthing : inventory
{inventory.maxamount 1}

actor BlockedABomb : inventory
{inventory.maxamount 1}

