/*

==MAGICAL ROD==
A portable and stout staff, the Magical Rod fires heavy
blasts of arcane energy, releasing all of that in an extremely
small area on impact, essentially a miniature warhead.

The weapon also has some other spells, such as the ability
to envelop the blasts in flames, which constantly sheds flames
before scattering fire on impact. Alongside this the Rod can
conjure blocks of solid matter that can absorb and reflect enemy
fire, be kicked into foes, or detonated violently with the arcane blasts.
Finally the Rod can be charged and release a focused lighting storm,
shocking enemies and staggering them with electricity

*/

actor MagicalRod : weapon
{
	Weapon.SelectionOrder 200
	Inventory.RestrictedTo "PastLinked"
	weapon.bobstyle smooth
	weapon.bobrangex 0.1
	weapon.bobrangey 0.6
	weapon.bobspeed 2
	Weapon.AmmoType "Cell"
	+WEAPON.AMMO_OPTIONAL
	+NOAUTOAIM
	Tag "Magical Rod"
	states
	{
	select:
		TNT1 A 0
		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 ("Cell",1,"RealReady")
		TNT1 A 0
		goto PowerLessReady
	RealReady:
		MGR1 A 1 a_weaponready
		Loop
	PowerLessReady:
		MGR0 E 1 a_weaponready (WRF_NOFIRE)
		TNT1 A 0 a_jumpifinventory ("cell",1,"RestorePower")
		Loop
	RestorePower:
		TNT1 A 0
		TNT1 A 0 a_playsound ("PastLinked/MagicWindup",CHAN_WEAPON)
		MGR0 FGHI 2 bright
		MGR1 A 1 a_weaponready
		goto realready
	deselect:
		TNT1 A 0
		TNT1 A 0 a_jumpifhealthlower (1, "deadlower")
		TNT1 A 0 a_playsound ("PastLinked/WeaponSwitch",6)
	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:
		MGR1 B 1 a_playsound ("PastLinked/MagicWindup",CHAN_WEAPON)
		MGR1 CCC 1 bright
		TNT1 A 0 A_Quake(1, 6, 0, 20,"silence")
		TNT1 A 0 a_firebullets (0,0,1,0,"flickpuff",FBF_NOFLASH)
		TNT1 A 0 a_firecustommissile ("Magicwave")
		TNT1 A 0 a_radiusgive ("BlockDetonator",90,RGF_OBJECTS)
		TNT1 A 0 a_takeinventory ("Cell",5)
		TNT1 A 0 a_jumpifinventory ("cell",1,"NormalFinish")
		Goto LastShotFinish
	NormalFinish:
		TNT1 A 0
		TNT1 A 0 a_playsound ("PastLinked/MagicWaveShot",0)
		MGR1 D 2 bright offset (0,39)
		MGR1 E 2 bright offset (0,36)
		MGR1 E 1 bright
		TNT1 A 0 offset (0,32)
		MGR1 FG 2 bright
		MGR1 A 1
		goto Realready
	LastShotFinish:
		TNT1 A 0
		TNT1 A 0 a_playsound ("PastLinked/MagicWaveLastShot",CHAN_WEAPON)
		MGR0 A 2 bright offset (0,39)
		MGR0 B 2 bright offset (0,36)
		MGR0 B 1 bright
		TNT1 A 0 offset (0,32)
		MGR0 CDD 2 bright
		MGR0 E 1
		goto PowerLessReady

	Altfire:
		TNT1 A 0
		TNT1 A 0 a_jumpifinventory ("BoomerangActive",1,"BoomerangCheck")
		TNT1 A 0 a_jumpifinventory ("CandleActive",1,"CandleCheck")
		TNT1 A 0 a_jumpifinventory ("BombBagActive",1,"BombCheck")
		MGR1 A 1 a_weaponready
		goto ready

//Somaria Block (Boomerang)
	BoomerangCheck:
		TNT1 A 0
		TNT1 A 0 a_jumpifinventory ("BoomerangCooldown",1, "RealReady")
		TNT1 A 0 a_jumpifinventory ("FireBoomerangToken",1, "FireBlockShot")
		TNT1 A 0 a_jumpifinventory ("MagicalBoomerangToken",1, "MagicalBlockShot")
		goto SomariaBlockShot
	SomariaBlockShot:	
		MGR2 A 2 a_playsound ("PastLinked/SomariaWindup",CHAN_WEAPON)
		MGR2 B 2
		MGR2 CCCC 1 bright
		TNT1 A 0 A_Quake(1, 6, 0, 20,"silence")
		TNT1 A 0 a_giveinventory ("BoomerangCoolDown",40)
		TNT1 A 0 ACS_NamedExecuteAlways("BoomerangCharge", 0, 0, 0, 0)
		TNT1 A 0 a_firebullets (0,0,1,0,"flickpuff",FBF_NOFLASH)
		TNT1 A 0 a_firecustommissile ("SomariaBlockSpawner1")
		TNT1 A 0 a_takeinventory ("cell",5)
		TNT1 A 0 a_jumpifinventory ("cell",5,"Level1SomariaFinish")
		Goto SomariaLastShot
	Level1SomariaFinish:
		TNT1 A 0
		TNT1 A 0 a_playsound ("PastLinked/SomariaCast",CHAN_WEAPON)
		MGR2 D 2 bright offset (0,39)
		MGR2 E 2 bright offset (0,36)
		MGR2 E 1 bright
		TNT1 A 0 offset (0,32)
		MGR2 FGHI 2 bright
		MGR2 I 1
		goto Realready
		
//Level 2 shot (Magical)
	MagicalBlockShot:
		MGR3 A 2 a_playsound ("PastLinked/SomariaWindup",CHAN_WEAPON)
		MGR3 B 2
		MGR3 CCCC 1 bright
		TNT1 A 0 A_Quake(1, 6, 0, 20,"silence")
		TNT1 A 0 a_giveinventory ("BoomerangCoolDown",40)
		TNT1 A 0 ACS_NamedExecuteAlways("BoomerangCharge", 0, 0, 0, 0)
		TNT1 A 0 a_firebullets (0,0,1,0,"flickpuff",FBF_NOFLASH)
		TNT1 A 0 a_firecustommissile ("SomariaBlockSpawner2")
		TNT1 A 0 a_takeinventory ("cell",5)
		TNT1 A 0 a_jumpifinventory ("cell",5,"Level2SomariaFinish")
		Goto SomariaLastShot
	Level2SomariaFinish:
		TNT1 A 0
		TNT1 A 0 a_playsound ("PastLinked/SomariaCast",CHAN_WEAPON)
		MGR3 D 2 bright offset (0,39)
		MGR3 E 2 bright offset (0,36)
		MGR3 E 1 bright
		TNT1 A 0 offset (0,32)
		MGR3 FG 2 bright
		MGR2 HI 2 bright
		MGR2 I 1
		goto Realready

//Level 3 shot (Fire)
	FireBlockShot:
		MGR4 A 2 a_playsound ("PastLinked/SomariaWindup",CHAN_WEAPON)
		MGR4 B 2
		MGR4 CCCC 1 bright
		TNT1 A 0 A_Quake(1, 6, 0, 20,"silence")
		TNT1 A 0 a_giveinventory ("BoomerangCoolDown",40)
		TNT1 A 0 ACS_NamedExecuteAlways("BoomerangCharge", 0, 0, 0, 0)
		TNT1 A 0 a_firebullets (0,0,1,0,"flickpuff",FBF_NOFLASH)
		TNT1 A 0 a_firecustommissile ("SomariaBlockSpawner3")
		TNT1 A 0 a_takeinventory ("cell",5)
		TNT1 A 0 a_jumpifinventory ("cell",5,"Level3SomariaFinish")
		Goto SomariaLastShot
	Level3SomariaFinish:
		TNT1 A 0
		TNT1 A 0 a_playsound ("PastLinked/SomariaCast",CHAN_WEAPON)
		MGR4 D 2 bright offset (0,39)
		MGR4 E 2 bright offset (0,36)
		MGR4 E 1 bright
		TNT1 A 0 offset (0,32)
		MGR4 FG 2 bright
		MGR2 HI 2 bright
		MGR2 I 1
		goto Realready


//Last Shot for all tiers of Somaria
	SomariaLastShot:
		TNT1 A 0
		TNT1 A 0 a_playsound ("PastLinked/SomariaLastCast",CHAN_WEAPON)
		MGRX A 2 bright offset (0,39)
		MGRX B 2 bright offset (0,36)
		MGRX C 1 bright
		TNT1 A 0 offset (0,32)
		MGRX CDEF 2 bright
		MGRX E 1
		goto PowerlessReady

	
//Fire Magic (Candle)
	CandleCheck:
		TNT1 A 0
		TNT1 A 0 a_jumpifinventory ("CandleCooldown",1, "RealReady")
		TNT1 A 0 a_jumpifinventory ("RedCandle",1, "RedFire")
		Goto BlueFire
	BlueFire:
		TNT1 A 0 a_playsound ("PastLinked/CandleCharge",CHAN_WEAPON)
		MGF1 ABC 2 bright
		TNT1 A 0 a_playsound ("PastLinked/CandleIgnite",CHAN_WEAPON)
		TNT1 A 0 offset (0,36)
		MGF1 DEF 2 bright
		TNT1 A 0 offset (0,37)
		MGF1 G 2 bright
		TNT1 A 0 offset (0,36)
		MGF1 HI 2 bright 
		TNT1 A 0 offset (0,30)
		TNT1 A 0 A_Quake(2, 12, 0, 20,"silence")
		TNT1 A 0 a_firebullets (0,0,1,0,"flickpuff",FBF_NOFLASH)
		TNT1 A 0 a_firecustommissile ("BlueFireWave")
		TNT1 A 0 a_giveinventory ("CandleCoolDown",250)
		TNT1 A 0 ACS_NamedExecuteAlways("CandleCharge", 0, 0, 0, 0)
		TNT1 A 0 a_takeinventory ("cell",5)
		TNT1 A 0 a_jumpifinventory ("cell",1,"BlueFireFinish")
		goto BlueFireLastShot
	BlueFireFinish:
		TNT1 A 0
		TNT1 A 0 a_playsound ("PastLinked/CandleMagic",0)
		MGF1 J 3 bright offset (0,44) 
		MGF1 K 3 bright offset (0,38)
		MGF1 L 2
		TNT1 A 0 offset (0,36)
		MGF1 M 2 bright
		TNT1 A 0 offset (0,32)
		MGF1 NO 3 bright
		MGF1 P 8
		MGF1 Q 3 bright
		MGF1 R 2 Bright
		MGF1 S 2 
		MGR1 A 2 
		goto realready
	BlueFireLastShot:
		TNT1 A 0
		TNT1 A 0 a_playsound ("PastLinked/CandleMagicLastShot",0)
		MGF1 T 3 bright offset (0,44) 
		MGF1 U 3 bright offset (0,38)
		MGF1 V 2
		TNT1 A 0 offset (0,36)
		MGF1 W 2 bright
		TNT1 A 0 offset (0,32)
		MGF1 X 3
		MGR0 E 1
		goto PowerlessReady

	RedFire:
		TNT1 A 0 a_playsound ("PastLinked/CandleCharge",CHAN_WEAPON)
		MGF2 ABC 2 bright
		TNT1 A 0 a_playsound ("PastLinked/CandleIgnite",CHAN_WEAPON)
		TNT1 A 0 offset (0,36)
		MGF2 DEF 2 bright
		TNT1 A 0 offset (0,37)
		MGF2 G 2 bright
		TNT1 A 0 offset (0,36)
		MGF2 HI 2 bright 
		TNT1 A 0 offset (0,30)
		TNT1 A 0 A_Quake(2, 12, 0, 20,"silence")
		TNT1 A 0 a_firebullets (0,0,1,0,"flickpuff",FBF_NOFLASH)
		TNT1 A 0 a_firecustommissile ("RedFireWave")
		TNT1 A 0 a_giveinventory ("CandleCoolDown",250)
		TNT1 A 0 ACS_NamedExecuteAlways("CandleCharge", 0, 0, 0, 0)
		TNT1 A 0 a_takeinventory ("cell",5)
		TNT1 A 0 a_jumpifinventory ("cell",1,"RedFireFinish")
		goto RedFireLastShot
	RedFireFinish:
		TNT1 A 0
		TNT1 A 0 a_playsound ("PastLinked/CandleMagic",0)
		MGF2 J 3 bright offset (0,44) 
		MGF2 K 3 bright offset (0,38)
		MGF2 L 2
		TNT1 A 0 offset (0,36)
		MGF2 M 2 bright
		TNT1 A 0 offset (0,32)
		MGF2 NO 3 bright
		MGF1 P 8
		MGF1 Q 3 bright
		MGF1 R 2 Bright
		MGF1 S 2 
		MGR1 A 2 
		goto realready
	RedFireLastShot:
		TNT1 A 0
		TNT1 A 0 a_playsound ("PastLinked/CandleMagicLastShot",0)
		MGF2 P 3 bright offset (0,44) 
		MGF2 Q 3 bright offset (0,38)
		MGF2 R 2
		TNT1 A 0 offset (0,36)
		MGF2 S 2 bright
		TNT1 A 0 offset (0,32)
		MGF2 T 3
		MGR0 E 1
		goto PowerlessReady



//Thunder magic (Bombs)
	BombCheck:
		TNT1 A 0 
		TNT1 A 0 a_jumpifinventory ("RocketAmmo",1,"SparkShot")	
		MGR1 A 1 
		goto ready
	SparkShot:
		TNT1 A 0
		TNT1 A 0 a_playsound ("PastLinked/ThunderCall",0,0.2)
		TNT1 A 0 a_playsound ("PastLinked/WandZap",6,0.8,1)
		MGZP ABCDEF 2 bright
		TNT1 A 0 a_stopsound (6)
		MGZP G 2
		TNT1 A 0 a_playsound ("PastLinked/WandZap",6,0.8,1)
		MGZP HIJKLM 2 bright
		TNT1 A 0 a_stopsound (6)
		MGZP N 2
		MGZP OP 2 bright
		TNT1 A 0 A_Quake(2, 12, 0, 20,"silence")
		TNT1 A 0 a_firebullets (0,0,1,0,"flickpuff",FBF_NOFLASH)
		TNT1 A 0 A_FireCustomMissile("bigspark",-18)
		TNT1 A 0 A_FireCustomMissile("bigspark",-9)
		TNT1 A 0 A_FireCustomMissile("bigspark",0)
		TNT1 A 0 A_FireCustomMissile("bigspark",9)
		TNT1 A 0 A_FireCustomMissile("bigspark",18)
		TNT1 A 0 a_takeinventory ("Cell",5)
		TNT1 A 0 a_takeinventory ("RocketAmmo",1)
		TNT1 A 0 a_jumpifinventory ("Cell",1,"SparkShotFinish")
		goto LastSparkShot
	SparkShotFinish:
		TNT1 A 0
		TNT1 A 0		
		TNT1 A 0 a_playsound ("PastLinked/ThunderMagic",0)
		MGZP QQQ 1 bright offset (0,44) 
		MGZP R 2 bright offset (0,38)
		MGZP S 2 bright
		MGZP T 2 offset (0,36)
		MGZP U 2 
		TNT1 A 0 offset (0,32)
		MGZP VWX 2 bright
		MGZP Y 2
		MGR1 A 1
		goto Realready
	LastSparkShot:
		TNT1 A 0
		TNT1 A 0		
		TNT1 A 0 a_playsound ("PastLinked/LastThunderMagic",0)
		MGZX AAA 1 bright offset (0,44) 
		MGZX B 2 bright offset (0,38)
		MGZX C 2 bright
		MGZX D 2 offset (0,36)
		MGZX E 2 
		TNT1 A 0 offset (0,32)
		MGZX F 2 
		MGR0 E 1
		goto PowerLessReady

	}
}


actor Magicwave
{
	PROJECTILE
	scale 1
	Damage (150)
	Speed 45
	Radius 8
	Height 8
	+bright
	+thruspecies
	+DONTBLAST
	+NOEXTREMEDEATH
	DamageType "CALinked"
	Decal CANESDecal
	species "Player"
	States
	{
	Spawn:
		MWAV ABC 3 nodelay a_radiusgive ("BlockDetonator",65,RGF_OBJECTS)
		loop
	Xdeath:
		TNT1 A 0
		TNT1 A 0 a_playsound ("PastLinked/SomariaForce",0,0.80)
		TNT1 A 0 a_radiusgive ("BlockDetonator",90,RGF_OBJECTS)
		MWAV DEFGHIJ 2
		Stop		
	Death:
		ZDTH A 3 a_radiusgive ("BlockDetonator",90,RGF_OBJECTS)
		ZDTH B 3
		ZDTH A 3
		Stop
	}
}
