actor magicrod : weapon
{
	+weapon.ammo_optional
	Tag "Magical Rod"
	+CHEATNOTWEAPON
	+noautoaim
	weapon.slotnumber 3
	Weapon.SelectionOrder 8
	weapon.bobstyle alpha
	weapon.bobrangex 0.2
	weapon.bobrangey 0.4
	weapon.bobspeed 5
	scale 2
	Inventory.PickupSound "zelda/rodget"
	Inventory.PickupMessage "You've found the Magical Rod! This shouldn't be here..."
	states
	{
	spawn:
		RODI A 1 bright
		loop
	select:
        TNT1 AAAAAAAAAAAAAAAAAAAA 0 A_Raise
        TNT1 A 1 A_Raise
		loop
	deselect:
        TNT1 AAAAAAAAAAAAAAAAAAAA 0 A_Lower
		TNT1 A 1 a_lower
		loop
	Ready:
		MROD A 1 a_weaponready (WRF_ALLOWRELOAD|WRF_ALLOWZOOM)
		loop
	fire:
		TNT1 A 0
		TNT1 A 0 a_jumpifinventory ("ballarmed",1,"morphballthrow")
		MROD A 2
		MROD B 2 bright
		TNT1 A 0 a_playsound ("zelda/rodshot",0)
		TNT1 A 0 a_firebullets (0,0,1,0,"flickpuff")
		MROD C 1 bright a_firecustommissile ("magicwave") 
		MROD C 1 bright Offset(0,38) a_weaponready (WRF_NOSWITCH|WRF_NOBOB|WRF_NOFIRE)
		MROD B 4 bright Offset(0,42) a_weaponready (WRF_NOSWITCH|WRF_NOBOB|WRF_NOFIRE)
		TNT1 A 0 a_playsound ("zelda/rodshot",0)
		TNT1 A 0 a_firebullets (0,0,1,0,"flickpuff")
		TNT1 A 0 A_FireCustomMissile("magicwave", Frandom(3, -3), 0, 0, 0, 0, Frandom(3, -3))
		MROD C 1 bright Offset(0,46) a_weaponready (WRF_NOSWITCH|WRF_NOBOB|WRF_NOFIRE)
		MROD B 4 bright Offset(0,50) a_weaponready (WRF_NOSWITCH|WRF_NOBOB|WRF_NOFIRE)
		TNT1 A 0 a_playsound ("zelda/rodshot",0)
		TNT1 A 0 a_firebullets (0,0,1,0,"flickpuff")
		TNT1 A 0 A_FireCustomMissile("magicwave", Frandom(6, -6), 0, 0, 0, 0, Frandom(5, -5))
		MROD C 1 bright Offset(0,54) a_weaponready (WRF_NOSWITCH|WRF_NOBOB|WRF_NOFIRE)
		MROD B 6 bright Offset(0,58) a_weaponready (WRF_NOSWITCH|WRF_NOBOB|WRF_NOFIRE)
		MROD A 1 Offset(0,40) a_weaponready (WRF_NOSWITCH|WRF_NOBOB|WRF_NOFIRE)
		MROD A 1 Offset(0,32) a_weaponready (WRF_NOSWITCH|WRF_NOBOB)
		goto ready
	altfire:
		TNT1 A 0
		MROD A 1 a_jumpifinventory ("spentflame", 1, "ready")
		RTRN ABCDEF 2
		MROD D 2
		MROD E 1
		TNT1 A 0 a_playsound ("zelda/candlefire",0)
		MROD FFFFFFFFF 0 Bright A_FireCustomMissile("candlefire", Frandom(-1500, 1500) / 70.0, 0, 0, 8, 0, Frandom(-1200, 1200) / 400.0)
		TNT1 A 0 a_giveinventory ("spentflame", 8)
		MROD F 1 bright offset (0,45) a_firecustommissile ("candlefire", Frandom(-1500, 1500) / 70.0, 0, 0, 8, 0, Frandom(-1200, 1200) / 400.0)
		MROD F 2 bright offset (0,55)
		MROD E 2 bright offset (0,60)
		MROD E 4 bright offset (0,60)
		MROD D 4 bright offset (0,60)
		MROD D 2 bright offset (0,40)
		MROD D 2 bright offset (0,35)
		MROD D 2 bright offset (0,32)
		RTRN FEDDBA 2
		goto ready
	Reload:
		TNT1 A 0
		MROD A 1 a_jumpifinventory ("bombstock", 1, "bombthrow")
		goto ready
	bombthrow:
		RTHR ABCDE 1
		TNT1 A 0 a_jumpifinventory ("bombmod", 1, "holdcheck")
		goto throwfinish
	holdcheck:
		TNT1 A 0
		RTHR E 1
		TNT1 A 0 a_jumpifinventory ("holdbombkey",1,"morphballcharge")
	Throwfinish:
		TNT1 A 0
		TNT1 A 0
		TNT1 A 0 a_jumpifinventory ("dragonfiremod",1, "firebomb")
		RTHR FG 2
		TNT1 A 0 a_takeinventory ("ballcharge",99)
		TNT1 A 0 a_takeinventory ("bombstock", 1)
		TNT1 A 0 a_playsound ("bombs/zelda",0)
		RTHR H 1 a_firecustommissile ("Zeldabomb")
		RTHR IJK 2
		RTHR LMNOP 1
		MROD A 1
		goto ready
	Firebomb:
		RTHR FG 2
		TNT1 A 0 a_takeinventory ("ballcharge",99)
		TNT1 A 0 a_takeinventory ("bombstock", 1)
		TNT1 A 0 a_playsound ("bombs/zelda",0)
		TNT1 A 0 a_playsound ("weapons/mariofire",0)
		TNT1 A 0 a_firecustommissile ("mariofireball",0,0,0,-5)
		RTHR H 1 a_firecustommissile ("Zeldabomb")
		RTHR IJK 2
		RTHR LMNOP 1
		MROD A 1
		goto ready
	morphballcharge:
		TNT1 A 0
		TNT1 A 0 a_jumpifinventory ("ballcharge", 20, "bombammocheck")
		RTHR E 1 a_giveinventory ("ballcharge", 1)
		TNT1 A 0 a_jumpifinventory ("holdbombkey",1,"morphballcharge")
		goto throwfinish
	bombammocheck:
		TNT1 A 0
		RTHR E 1 a_jumpifinventory ("bombstock", 3, "morphballarm")
		TNT1 A 0 a_takeinventory ("ballcharge", 99)
		goto morphballcharge
	morphballarm:
		TNT1 A 0
		TNT1 A 0 a_giveinventory ("ballarmed", 1)
		TNT1 A 0 a_playsound ("bombs/morphball",0)
		RLTH AB 2 a_weaponready (WRF_NOSWITCH)
	ballready:
		RLTH B 1 a_weaponready (WRF_NOSWITCH|WRF_NOSECONDARY)
		loop
	Morphballthrow:
		RTHR FG 2
		TNT1 A 0 a_takeinventory ("ballarmed",99)
		TNT1 A 0 a_takeinventory ("ballcharge",99)
		TNT1 A 0 a_takeinventory ("Bombstock",99)
		TNT1 A 0 a_playsound ("bombs/zelda",0)
		RTHR H 1 a_firecustommissile ("superbomb")
		RTHR IJK 2 a_takeinventory ("Bombstock",99)
		RTHR LMNOP 1 a_takeinventory ("Bombstock",99)
		MROD A 1
		goto ready		
	Zoom:
		TNT1 A 0
		MROD A 1 a_jumpifinventory ("screwattackmod", 1, "chargecheck")
		goto ready
	chargecheck:
		TNT1 A 0
		MROD A 1 a_jumpifinventory ("screwcharge", 1, "ready")
		goto arrowshot
	arrowshot:
		SAAT ABC 1
		TNT1 A 2
		SAAT DEFFGG 1
		SAAT H 2
		TNT1 A 0 a_giveinventory ("screwcharge", 10)
		TNT1 A 0 a_playsound ("zelda/arrowshot",0)
		SAAT I 1 a_firecustommissile ("silverarrow")
		SAAT I 9
		SAAT JKL 1 
		TNT1 A 3
		SAAT CBA 2
		goto ready
	}
}


actor magicwave
{
	PROJECTILE
	scale 1
	Damage (25)
	Speed 30
	Radius 8
	Height 8
	+bright
	damagetype "zelda"
	States
	{
	Spawn:
		MWAV ABC 3
		loop
	Death:
		WVBM H 4 
		Stop
	}
}


actor Zeldabomb
{
	+notimefreeze
	projectile
	-nogravity
	+FORCEXYBILLBOARD	
	+LOOKALLAROUND
	+thruspecies
	+bright
	+FORCEPAIN
	+thruactors
	species "player"
	Gravity 0.70
	Radius 14
	scale 2
	Damage (0)
	Speed 25
	reactiontime 12
	damagetype "zelda"
	+forceradiusdmg
	states
	{
	spawn:
		ZLBM A 2
		TNT1 A 0 a_countdown
		loop
	crash:
	death:
		TNT1 A 0
		TNT1 A 0 a_fadeout (0.20)
		TNT1 A 0 a_changeflag ("nogravity",1)
		TNT1 A 0 a_playsound ("bombs/zeldaexplode",0,1,0,0.5)
		TNT1 A 0 a_explode (60,140,0,0,140)
		ZLBM C 1 
		TNT1 A 1
		ZLBM C 1 
		TNT1 A 1
		ZLBM C 1 
		TNT1 A 1
		ZLBM D 1 
		TNT1 A 1
		ZLBM D 1 
		TNT1 A 1
		ZLBM D 1 
		TNT1 A 1
		ZLBM E 1 
		TNT1 A 1
		ZLBM E 1 
		TNT1 A 1
		stop
	}
}

actor superbomb : zeldabomb
{
	reactiontime 18
	BounceFactor 0.70  
	scale 3
	states
	{
	spawn:
		ZLBM B 2 
		TNT1 A 0 a_countdown
		loop
	crash:
	death:
		TNT1 A 0
		TNT1 A 0 a_fadeout (0.20)
		TNT1 A 0 a_changeflag ("nogravity",1)
		TNT1 A 0 a_playsound ("bombs/zeldaexplode",0)
		TNT1 A 0 a_explode (80,200,0,0,200)
		TNT1 A 0 a_spawnitemex ("superblast", 0,0,30,35,0,0,0)
		TNT1 A 0 a_spawnitemex ("superblast", 0,0,30,35,0,0,45)
		TNT1 A 0 a_spawnitemex ("superblast", 0,0,30,35,0,0,90)
		TNT1 A 0 a_spawnitemex ("superblast", 0,0,30,35,0,0,135)
		TNT1 A 0 a_spawnitemex ("superblast", 0,0,30,35,0,0,180)
		TNT1 A 0 a_spawnitemex ("superblast", 0,0,30,35,0,0,225)
		TNT1 A 0 a_spawnitemex ("superblast", 0,0,30,35,0,0,270)
		TNT1 A 0 a_spawnitemex ("superblast", 0,0,30,35,0,0,315)
		TNT1 A 0 a_spawnitemex ("superblast", 0,0,30,35,0,0,360)
		
		/*TNT1 A 0 A_custommissile("superblast", 30,0, 0, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		TNT1 A 0 A_custommissile("superblast", 30,0, 45, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		TNT1 A 0 A_custommissile("superblast", 30,0, 90, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		TNT1 A 0 A_custommissile("superblast", 30,0, 135, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		TNT1 A 0 A_custommissile("superblast", 30,0, 180, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		TNT1 A 0 A_custommissile("superblast", 30,0, 225, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		TNT1 A 0 A_custommissile("superblast", 30,0, 270, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		TNT1 A 0 A_custommissile("superblast", 30,0, 315, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		TNT1 A 0 A_custommissile("superblast", 30,0, 360, CMF_AIMDIRECTION | CMF_TRACKOWNER)*/
		ZLBM C 1 
		TNT1 A 1
		ZLBM C 1 
		TNT1 A 1
		ZLBM C 1 
		TNT1 A 1
		ZLBM D 1 
		TNT1 A 1
		ZLBM D 1 
		TNT1 A 1
		ZLBM D 1 
		TNT1 A 1
		ZLBM E 1 
		TNT1 A 1
		ZLBM E 1 
		TNT1 A 1
		stop
	}
}

actor superblast
{
	projectile
	+ripper
	+thruspecies
	species "player"
	speed 35
	height 10
	radius 10
	damage (1)
	damagetype "zelda"
	+forceradiusdmg
	states
	{
	spawn:
		TNT1 A 1 Bright
		TNT1 A 0 a_explode (40,80,0,0,80)
		TNT1 A 1 bright a_spawnitemex ("blasttrail")
		TNT1 A 0 a_explode (40,80,0,0,80)
		TNT1 A 1 bright a_spawnitemex ("blasttrail")
		TNT1 A 0 a_explode (40,80,0,0,80)
		TNT1 A 1 bright a_spawnitemex ("blasttrail")
		TNT1 A 0 a_explode (40,80,0,0,80)
		TNT1 A 1 bright a_spawnitemex ("blasttrail")
		TNT1 A 0 a_explode (40,80,0,0,80)
		TNT1 A 1 bright a_spawnitemex ("blasttrail")
		TNT1 A 0 a_explode (40,80,0,0,80)
		TNT1 A 1 bright a_spawnitemex ("blasttrail")
		TNT1 A 0 a_explode (40,80,0,0,80)
		TNT1 A 1 bright a_spawnitemex ("blasttrail")
		TNT1 A 0 a_explode (40,80,0,0,80)
		TNT1 A 1 bright a_spawnitemex ("blasttrail")
		TNT1 A 0 a_explode (40,80,0,0,80)
		TNT1 A 1 bright a_spawnitemex ("blasttrail")
		TNT1 A 0 a_explode (40,80,0,0,80)
		TNT1 A 1 bright a_spawnitemex ("blasttrail")
		TNT1 A 0 a_explode (40,80,0,0,80)
		TNT1 A 1 bright a_spawnitemex ("blasttrail")
		TNT1 A 0 a_explode (40,80,0,0,80)
		stop
	death:
		TNT1 A 2
		stop
	}
}


actor blasttrail
{
	renderstyle add
	alpha 0.70
	+NOGRAVITY
	+forceradiusdmg
	damagetype "zelda"
	states
	{
	spawn:
		TNT1 A 0
		TNT1 A 0 a_playsound ("bombs/zeldaexplode",0,1,0,0.5)
		ZLBM F 1
		TNT1 A 1
		ZLBM F 1
		TNT1 A 1
		ZLBM F 1
		TNT1 A 1
		ZLBM G 1
		TNT1 A 1
		ZLBM G 1
		TNT1 A 1
		ZLBM G 1
		TNT1 A 1
		ZLBM H 1
		TNT1 A 1
		ZLBM H 1
		TNT1 A 1
		ZLBM H 1
		TNT1 A 1
		stop
	death:
		TNT1 A 1
		stop
	}
}

actor candlefire 
{
	+thruactors
	+MBFBouncer
	+bright
	gravity 0.50
	speed 25
	damage (0)
	scale 2
	reactiontime 25
	damagetype "zelda"
	+forceradiusdmg
	states
	{
	spawn:
		TNT1 A 0
		CFRE A 1 a_explode (10,20,0,0,20)
		CFRE A 1
		CFRE A 1
		CFRE B 1 a_explode (10,20,0,0,20)
		CFRE B 1
		CFRE B 1
		TNT1 A 0 a_countdown
		TNT1 A 0 a_jump (180,"slowdown")
		loop
	slowdown:
		CFRE A 1 a_scalevelocity (0.70)
		goto spawn
	death:
		TNT1 A 1
		stop
	}
}



actor silverarrow
{
	PROJECTILE
	scale 2
	Damage (80)
	Speed 50
	Radius 8
	Height 8
	+ripper
	+bright
	+FORCEPAIN
	damagetype "zelda"
	States
	{
	Spawn:
		SARW A 1
		loop
	Death:
		WVBM H 4 
		Stop
	xdeath:
		TNT1 A 0
		WVBM H 1 a_explode (500,40,0,0,40)
		WVBM H 4
		stop
	}
}


actor Mariofireball
{
	PROJECTILE
	scale 2
	Damage (120)
	Speed 40
	Radius 8
	Height 8
	gravity 1.20
	bouncefactor 1
	-NOGRAVITY
	+hexenbounce
	-bounceonwalls
	+bright
	+thruspecies
	species "player"
	States
	{
	Spawn:
		MRFB A 2 
		MRFB B 2
		MRFB C 2 
		MRFB D 2
		loop
	Death:
		TNT1 A 0
		TNT1 A 0 a_changeflag ("NOGRAVITY",1)
		TNT1 A 0 a_playsound ("boner/thud",0)
		MRFB DEF 2 
		Stop
	}
}



//---------------------MISC-------------------------

actor spentflame : inventory
{inventory.maxamount 8}

