/*

==STRIKER BEAM==
An experimental overcharged form, the Striker Beam
requires a few moments of intense concentration
and channeling willpower before unleashing
the built up energy as a temporary super form.
In this state the user can deliver rapid punches
that fire out hard hitting concussive pulses, or
throw out sweeping haymakers that send out waves
of short lived plasma.

This power comes at a price though, once the 
gathered energy is exhausted, the gauntlets
are left in a low power state, unable to switch
forms or launch special attacks. Thankfully
landing punches in this powered down state
or shooting targets with the emergency pulse
can help re-energize the gauntlets quicker!
*/

actor StrikerBeam : weapon
{
	Weapon.SelectionOrder 60
	weapon.slotnumber 1
	Inventory.RestrictedTo "TechMonk"
	Tag "Striker Beam"
	weapon.bobstyle smooth
	weapon.bobrangex 0.1
	weapon.bobrangey 0.3
	weapon.bobspeed 2
	+CHEATNOTWEAPON
	+noautofire
	+NOAUTOAIM
	states
	{
	spawn:
		BFUG A 1
		loop
	select:
		STRI A 0 a_raise
		STRI AAAAAAAAAAAAAAAAAA 0 a_raise
		goto ready
	Ready:
		TNT1 A 0
		TNT1 A 0 a_takeinventory ("StrikerCharge",9999)
		TNT1 A 0 a_giveinventory ("StrikerTimer",300)
		TNT1 A 0 ACS_NamedExecuteAlways("StrikerMeter", 0, 0, 0, 0)
		STRI A 1 a_giveinventory ("StrikerBeamSelect",1)
		goto realready
	RealReady:
		STRI A 1 a_weaponready (WRF_DISABLESWITCH)
		TNT1 A 0 a_jumpifinventory ("StrikerReset",1, "NoPower")
		loop
	deselect:
		TNT1 A 0
		TNT1 A 0 a_jumpifhealthlower (1, "deadlower")
		STRI A 1 a_lower
		TNT1 A 0 a_selectweapon ("HandBeam")
		STRI AAA 0 a_lower
		TNT1 A 0 a_selectweapon ("HandBeam")
		loop
	DeadLower:
		TNT1 A 0
		TNT1 A 0
        TNT1 A 0 A_ClearRefire
		TNT1 A 0 a_stopsound (CHAN_WEAPON)
		TNT1 AAAAAAAAAAAAA 0 a_lower
		TNT1 A 1 a_lower
		loop
		
	fire:
		TNT1 A 0
		TNT1 A 0 a_takeinventory ("StrikerBeamSelect",99)
		TNT1 A 0 a_jumpifinventory ("StrikerReset",1, "NoPowerPrimaryCheck")
		TNT1 A 0 a_jumpifinventory ("StrikerTimer",1, "JabStart")
		STRI A 1 
		goto deselect
	JabStart:
		STPF ABC 1
	Jab1:
		TNT1 A 0
		TNT1 A 0 a_playsound ("TechMonk/StrikerBeam",CHAN_WEAPON)
		TNT1 A 0 a_firebullets (0,0,1,0,"flickpuff",FBF_NOFLASH)
		TNT1 A 0 A_FireCustomMissile ("ClashPunch")
		STPF D 1 Bright a_firecustommissile ("StrikerBeamShot",0,0,random(-6,4),random(4,6))
		STPF EF 1 bright
		TNT1 A 0 a_jumpifinventory ("StrikerReset",1, "NoPower")
		TNT1 A 0 a_refire ("Jab2")
		STPF G 1
		goto JabEnd
	Jab2:
		TNT1 A 0
		TNT1 A 0 a_playsound ("TechMonk/StrikerBeam",CHAN_WEAPON)
		TNT1 A 0 a_firebullets (0,0,1,0,"flickpuff",FBF_NOFLASH)
		TNT1 A 0 A_FireCustomMissile ("ClashPunch")
		STPF H 1 Bright a_firecustommissile ("StrikerBeamShot",0,0,random(-4,3),random(-3,2))
		STPF IJ 1 Bright
		TNT1 A 0 a_jumpifinventory ("StrikerReset",1, "NoPower")
		TNT1 A 0 a_refire ("Jab3")
		STPF K 1
		goto JabEnd
	Jab3:
		TNT1 A 0
		TNT1 A 0 a_playsound ("TechMonk/StrikerBeam",CHAN_WEAPON)
		TNT1 A 0 a_firebullets (0,0,1,0,"flickpuff",FBF_NOFLASH)
		TNT1 A 0 A_FireCustomMissile ("ClashPunch")
		STPF L 1 Bright a_firecustommissile ("StrikerBeamShot",0,0,random(-7,3),random(-7,-4))
		STPF MN 1 Bright
		TNT1 A 0 a_jumpifinventory ("StrikerReset",1, "NoPower")
		TNT1 A 0 a_refire ("Jab1")
		STPF O 1 
		goto JabEnd
	JabEnd:
		TNT1 A 0 a_jumpifinventory ("StrikerReset",1, "NoPower")
		STPF P 1 a_weaponready (WRF_DISABLESWITCH)
		TNT1 A 0 a_jumpifinventory ("StrikerReset",1, "NoPower")
		STPF Q 1 a_weaponready (WRF_DISABLESWITCH)
		TNT1 A 0 a_jumpifinventory ("StrikerReset",1, "NoPower")
		STPF R 1 a_weaponready (WRF_DISABLESWITCH)
		TNT1 A 0 a_jumpifinventory ("StrikerReset",1, "NoPower")
		goto realready
		
		
	Altfire:
		TNT1 A 0 
		TNT1 A 0
		TNT1 A 0 a_jumpifinventory ("StrikerReset",1, "NoPowerAltCheck")
		TNT1 A 0 a_jumpifinventory ("StrikerTimer",1, "HookStart")
		STRI A 1 
		goto deselect
	HookStart:
		STSF ABCDE 1
		TNT1 A 2
	RightHook:
		STSF FG 2
		TNT1 A 0 a_playsound ("TechMonk/StrikerHaymaker",CHAN_WEAPON)
		TNT1 A 0 a_firebullets (0,0,1,0,"flickpuff",FBF_NOFLASH)
		TNT1 A 0 a_firecustommissile ("HookBeam",0,0,30,-8)
		TNT1 A 0 a_firecustommissile ("HookBeam",0,0,20,-6)
		TNT1 A 0 a_firecustommissile ("HookBeam",0,0,10,-4)
		TNT1 A 0 a_firecustommissile ("HookBeam",0,0,-10)
		TNT1 A 0 A_FireCustomMissile ("PowerPalm")
		TNT1 A 0 A_FireCustomMissile ("ClashPunch",0,0,-5)
		TNT1 A 0 A_FireCustomMissile ("ClashPunch",0,0,5)
		STSF H 1 bright a_firecustommissile ("HookBeam",0,0,0,-2)
		STSF I 1 bright
		STSF JK 2
		TNT1 A 4
		TNT1 A 0 a_jumpifinventory ("StrikerReset",1, "NoPower")
		TNT1 A 0 a_refire ("LeftHook")
		goto HookStop
	LeftHook:
		STSF LM 2
		TNT1 A 0 a_playsound ("TechMonk/StrikerHaymaker",CHAN_WEAPON)
		TNT1 A 0 a_firebullets (0,0,1,0,"flickpuff",FBF_NOFLASH)
		TNT1 A 0 a_firecustommissile ("HookBeam",0,0,-30,-8)
		TNT1 A 0 a_firecustommissile ("HookBeam",0,0,-20,-6)
		TNT1 A 0 a_firecustommissile ("HookBeam",0,0,-10,-4)
		TNT1 A 0 a_firecustommissile ("HookBeam",0,0,10)
		TNT1 A 0 A_FireCustomMissile ("PowerPalm")
		STSF N 1 bright a_firecustommissile ("HookBeam",0,0,0,-2)
		STSF O 1 bright
		STSF PQ 2
		TNT1 A 4
		TNT1 A 0 a_jumpifinventory ("StrikerReset",1, "NoPower")
		TNT1 A 0 a_refire ("RightHook")
		goto HookStop
	HookStop:
		TNT1 A 2
		TNT1 A 0 a_jumpifinventory ("StrikerReset",1, "NoPower")
		STSF RSTU 2 a_weaponready (WRF_DISABLESWITCH)
		goto RealReady


	//Unpowered mode
	NoPower:
		TNT1 A 0 
		TNT1 A 0 a_playsound ("TechMonk/StrikerEnd",0)
		TNT1 A 0 a_takeinventory ("ArtiPainTimer",9999)
		TNT1 A 0 a_giveinventory ("ArtiPainTimer",40)
		STPD ABCDDEEF 2
		STPD F 15
		STPD G 1 Bright
		STPD H 1 Bright
		TNT1 A 0 a_playsound ("TechMonk/StrikerBurst",0)		
		STPD IJK 2 bright
		STPD LL 2
		STPD L 6
		STPD MNOPQ 2		
		goto NoPowerReady
	NoPowerReady:
		TNT1 A 0
		NPID A 1 a_weaponready (WRF_DISABLESWITCH)
		TNT1 A 0 a_jumpifinventory ("StrikerReset",1, "NoPowerReady")
		Goto Deselect
	NoPowerPrimaryCheck:
		TNT1 A 0
		NPID A 1 a_jumpifinventory ("StrikerReset",1, "NoPowerJab")
		Goto Deselect
	NoPowerJab:
		TNT1 A 0 
		TNT1 A 0 a_weaponready (WRF_NOFIRE|WRF_DISABLESWITCH)
		NPPF AB 1
		TNT1 A 0 a_playsound ("TechMonk/ClashJab",0)
		TNT1 A 0 a_jump (180,"Offset1","Offset2","Offset3")
		goto NoPowerJab1
	Offset1:
		TNT1 A 0
		TNT1 A 0 offset(-20,38)
		goto NoPowerJab1
	Offset2:
		TNT1 A 0
		TNT1 A 0 offset(30,28)
		goto NoPowerJab1
	Offset3:
		TNT1 A 0
		TNT1 A 0 offset(25,33)
		goto NoPowerJab1

	NoPowerJab1:
		NPPF CD 1
		TNT1 A 0 A_FireCustomMissile ("EmergencyPunch")	
		NPPF E 1 a_weaponready (WRF_DISABLESWITCH|WRF_NOBOB)
		TNT1 A 0 a_refire ("NoPowerPrimaryCheck")
		NPPF E 1 a_weaponready (WRF_DISABLESWITCH|WRF_NOBOB)
		NPPF F 1 a_weaponready (WRF_DISABLESWITCH|WRF_NOBOB)
		NPPF GH 1 a_weaponready (WRF_DISABLESWITCH|WRF_NOBOB)
		NPPF IJK 2 a_weaponready (WRF_DISABLESWITCH)
		NPID A 1 a_weaponready (WRF_DISABLESWITCH)
		TNT1 A 0 a_jumpifinventory ("StrikerReset",1, "NoPowerReady")
		goto Deselect
	NoPowerAltCheck:
		TNT1 A 0
		NPID A 1 a_jumpifinventory ("StrikerReset",1, "NoPowerPalmStrike")
		Goto Deselect
	NoPowerPalmStrike:
		NPSF ABC 2
		TNT1 A 0 a_playsound ("TechMonk/PalmStrike",0)
		TNT1 A 0 A_FireCustomMissile ("EmergencyPalmShot") 
		TNT1 A 0 a_playsound ("TechMonk/StrikerBeam",CHAN_WEAPON)
		NPSF D 1 A_FireCustomMissile ("EmergencyPalm") 
		NPSF EFGHIJK 2 a_weaponready (WRF_DISABLESWITCH|WRF_NOSECONDARY|WRF_NOBOB)
		TNT1 A 0 a_jumpifinventory ("StrikerReset",1, "NoPowerReady")
		goto deselect
	}
}
	
actor StrikerBeamShot 
{
	Radius 10
	Height 6
	Speed 40
	Damage (25)
	Projectile
	species "Player"
	+thruspecies
	+bright
	scale 0.60
	Decal CANESDecal
	Obituary "%o was blitzed by %k's hand beam"
	States
	{
	Spawn:
		TNT1 A 0
		STBE A 1 a_spawnitemex ("StrikerPulse")
		STBE A 7
	speedup:
		STBE A 1
		STBE A 1 a_scalevelocity (1.20)
		loop
	death:
		TNT1 A 0
		TNT1 A 0 a_stop
		TNT1 A 0 a_stop
		TNT1 A 1 a_stop
		stop
	Crash:
		TNT1 A 0
		TNT1 A 0 a_stop
		TNT1 A 1 a_stop
		stop
	Xdeath:
		TNT1 A 0
		TNT1 A 0 a_fadeout (0.10)
		TNT1 A 0 a_playsound ("TechMonk/StrikerBeamHit",0)
		TNT1 A 0 a_setscale (1,1)
		STBE BCDE 2
		stop
	}
}


ACTOR StrikerPulse
{
	+NOINTERACTION
	+NOCLIP
    +BRIGHT
	+clientsideonly
	Radius 1
	Height 1
	Renderstyle translucent
	Alpha 0.80
	Scale 0.60
	States
	{
	Spawn:
		TNT1 A 0
		STPL ABC 1
		Stop
	Death:
		TNT1 A 1
		stop
	}
}

ACTOR BigStrikerPulse : StrikerPulse
{
	Scale 0.70
	States
	{
	Spawn:
		TNT1 A 0
		STPL DEFG 1
		Stop
	}
}


actor HookBeam 
{
	Radius 10
	Height 6
	Speed 50
	Damage (25)
	Projectile
	species "Player"
	+thruspecies
	+bright
	scale 0.60
	reactiontime 4
	Decal CANESDecal
	Obituary "%o was blitzed by %k's hand beam"
	States
	{
	Spawn:
		TNT1 A 0
		STBE A 1 a_spawnitemex ("BigStrikerPulse")
		STBE A 2
	Slowdown:
		STBE A 1
		STBE A 1 a_scalevelocity (0.70)
		TNT1 A 0 a_countdown
		loop
	Death:
		TNT1 A 0
		TNT1 A 1
		stop
	Xdeath:
		TNT1 A 0 a_fadeout (0.10)
		TNT1 A 0 a_playsound ("TechMonk/StrikerHaymakerHit",0)
		TNT1 A 0 a_setscale (1,1)
		STBE BCDE 2
		stop
	}
}


actor EmergencyPunch : fastprojectile
{
	Projectile
	speed 64
	damage (20)
	obituary "%o was no match for %k's kung fu."
	+BLOODSPLATTER
	+thruspecies
	+dontblast
	+bright
	+dontreflect
	species "player"
	height 8
	radius 8
	mass 2000
	states
	{
	Spawn:
		TNT1 AA 1
		stop
	Death:
		TNT1 A 0
		TNT1 A 1
		TNT1 A 0 A_PlaySound("TechMonk/MeleeMiss", CHAN_AUTO)
		TNT1 A 0 A_SpawnDebris("WWStyleBulletSpark")
		TNT1 A 0 radius_quake (1,2,0,8,0)
		TNT1 A 5 
		stop
	Xdeath:
		TNT1 A 0
		TNT1 A 1
		TNT1 A 0 a_takefromtarget ("StrikerReset",13)
		TNT1 A 0 A_GiveToTarget ("StrikerMeterBeep",1)
		TNT1 A 0 A_PlaySound("TechMonk/Melee", CHAN_AUTO)
		TNT1 A 0 radius_quake (1,4,0,8,0)
		STBE B 1
		STBE B 2 a_setscale (1.30,1.30)
		stop
	}
}


actor EmergencyPalm : fastprojectile
{
	Projectile
	speed 75
	damage (65)
	obituary "%o was no match for %k's kung fu."
	+BLOODSPLATTER
	+thruspecies
	+dontblast
	+bright
	+dontreflect
	species "player"
	height 8
	radius 8
	mass 2000
	projectilekickback 1500
	states
	{
	Spawn:
		TNT1 AA 1
		stop
	Death:
		TNT1 A 0
		TNT1 A 1
		TNT1 A 0 A_PlaySound("TechMonk/MeleeMiss", CHAN_AUTO)
		TNT1 A 0 A_SpawnDebris("WWStyleBulletSpark")
		TNT1 A 0 radius_quake (1,2,0,8,0)
		TNT1 A 5 
		stop
	Xdeath:
		TNT1 A 0
		TNT1 A 1
		TNT1 A 0 a_takefromtarget ("StrikerReset",45)
		TNT1 A 0 A_GiveToTarget ("StrikerMeterBeep",1)
		TNT1 A 0 A_PlaySound("TechMonk/PalmStrikeHit", CHAN_AUTO)
		TNT1 A 0 radius_quake (1,4,0,8,0)
		STBE BC 2
		stop
	}
}

actor EmergencyPalmShot : StrikerBeamShot 
{
	Radius 10
	Height 6
	Speed 40
	Damage (25)
	Projectile
	species "Player"
	+thruspecies
	+bright
	scale 0.60
	Obituary "%o was blitzed by %k's hand beam"
	States
	{
	Spawn:
		TNT1 A 0
		STBE A 1 a_spawnitemex ("StrikerPulse")
		STBE A 7
	speedup:
		STBE A 1
		STBE A 1 a_scalevelocity (1.20)
		loop
	death:
		TNT1 A 0
		TNT1 A 0 a_stop
		TNT1 A 0 a_stop
		TNT1 A 1 a_stop
		stop
	Crash:
	Xdeath:
		TNT1 A 0
		TNT1 A 0 a_fadeout (0.10)
		TNT1 A 0 a_playsound ("TechMonk/StrikerBeamHit",0)
		TNT1 A 0 a_takefromtarget ("StrikerReset",35)
		TNT1 A 0 A_GiveToTarget ("StrikerMeterBeep",1)
		TNT1 A 0 a_setscale (1,1)
		STBE BCDE 2
		stop
	}
}


actor StrikerMeterBeep : custominventory 
{
	inventory.maxamount 1
	+INVENTORY.AUTOACTIVATE
	states
	{
	pickup:
		TNT1 A 0
		TNT1 A 0 a_playsound ("TechMonk/StrikerMeter",0)
		TNT1 A 0 a_giveinventory ("StrikerMeterFlashy",1)
		TNT1 A 4
		stop		
	}
}


//Tokens
Actor StrikerBeamSelect : Powerup
{
  Powerup.Duration 60
}


Actor StrikerMeterFlashy : Powerup
{
  Powerup.Duration 10
}
