/*

==WAVE BALL==
The first alternate form of the gauntlets, the wave ball
converts the user's will power and further augments it
with shotgun shells to fire out bubbles of energy that
cause small shockwaves on impact.

As attacks are chained, the second step of the weapon's
combo is a wide cluster of energy bubbles, useful for
big single targets or groups of targets. The finisher
of the Wave Ball is a flowing wave of energy, washing
away anything in its path. Costly, but very effective.

If the user runs out of ammo, the wave ball also allows
for a slashing knife hand swipe for melee combat.

Known as the "Jellyfish Ball" elsewhere for the wavering
transparent projectiles.

==KAME BOMB==
A special offhand grenade, the Kame Bomb is remote
controlled mine that clings to the ground before
being detonated at the user's leisure. After
firing the bomb, there's a short recharge period
before it can be used again.
*/

actor Waveball : weapon
{
	Weapon.SelectionOrder 300
	Weapon.AmmoUse 1
	Weapon.AmmoType "Shell"
	+WEAPON.AMMO_OPTIONAL
	Inventory.RestrictedTo "TechMonk"
	weapon.bobstyle smooth
	weapon.bobrangex 0.1
	weapon.bobrangey 0.3
	weapon.bobspeed 2
	+INVENTORY.UNTOSSABLE
	+noautofire
	+NOAUTOAIM
	Tag "Wave Ball"
	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
		TNT1 A 0 a_giveinventory ("WaveBallSelect",1)
		TNT1 A 0 a_takeinventory ("ArtiPainTimer",9999)
		TNT1 A 0 a_giveinventory ("ArtiPainTimer",40)
		TSWI IJKL 2 a_weaponready (WRF_ALLOWRELOAD)
		TNT1 A 0 a_playsound ("TechMonk/WeaponChange",CHAN_WEAPON)
		TSWI MNOPQRS 1 bright a_weaponready (WRF_ALLOWRELOAD)
		TSWI TUV 2 bright a_weaponready (WRF_ALLOWRELOAD)
		TNT1 A 0 a_playsound ("TechMonk/WaveBallUp",CHAN_WEAPON)
		TSW2 ABCD 2 bright a_weaponready (WRF_ALLOWRELOAD)
		TSW2 EFG 2 a_weaponready (WRF_ALLOWRELOAD)
		goto realready
	deselect:
		TNT1 A 0
		TNT1 A 0 a_takeinventory ("HandBeamSelect",99)
		TNT1 A 0 a_takeinventory ("WaveBallSelect",99)
		TNT1 A 0 a_takeinventory ("MoonBeamSelect",99)
		TNT1 A 0 a_takeinventory ("ClashBallSelect",99)
		TNT1 A 0 a_takeinventory ("PearlLaserSelect",99)
		TNT1 A 0 a_jumpifhealthlower (1, "deadlower")
		TSWI ABCD 1
		TNT1 A 0 a_playsound ("TechMonk/WeaponDown",0)		
		TNT1 A 0 a_takeinventory ("TechCombo1",99)
		TNT1 A 0 a_takeinventory ("TechCombo2",99)
		TNT1 A 0 a_takeinventory ("TechCombo3",99)
		TNT1 A 0 a_takeinventory ("ArtiPainTimer",9999)
		TNT1 A 0 a_giveinventory ("ArtiPainTimer",40)
		TSWI EFGH 2
	holster:
		TNT1 A 0
		TWSI H 1 a_lower
		TNT1 A 0 a_takeinventory ("secretaction", 99)
		HBID AA 0 a_lower
		loop
	DeadLower:
		TNT1 A 0
		TNT1 A 0
		TNT1 AAAAAAAAAAAAA 0 a_lower
		TNT1 A 1 a_lower
		wait
	RealReady:
		WBID A 1 a_weaponready (WRF_ALLOWRELOAD)
		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 ("WaveBallSelect",99)
		TNT1 A 0 a_jumpifinventory ("Shell",1,"WaveBallShot")
		TNT1 A 0 a_takeinventory ("TechCombo1",99)
		TNT1 A 0 a_takeinventory ("TechCombo2",99)
		TNT1 A 0 a_takeinventory ("TechCombo3",99)
		WBNF ABCEF 1
		WBNF G 1
		TNT1 A 0 a_playsound ("TechMonk/KnifeHandSwipe",0)
		WBNF H 1 A_FireCustomMissile ("WaveCut",0,0,6)
		WBNF I 1 A_FireCustomMissile ("WaveCut")
		WBNF J 1 A_FireCustomMissile ("WaveCut",0,0,-6)
		WBNF KL 1 a_weaponready (WRF_ALLOWRELOAD)
		TNT1 A 2 a_weaponready (WRF_ALLOWRELOAD)
		WBC2 QRSTU 2 a_weaponready (WRF_ALLOWRELOAD)
		goto realready
	WaveBallShot:
		TNT1 A 0 
		TNT1 A 0 a_jumpifinventory ("TechCombo2",1, "WaveComboFinisherCheck")
		TNT1 A 0 a_giveinventory ("WaveCancelToken",1)
		WBPF A 1
		TNT1 A 0 a_playsound ("TechMonk/WaveBallSpawn",0)
		WBPF B 1
		TNT1 A 0 a_playsound ("TechMonk/WaveBallSpawn",0)
		WBPF CC 1
		TNT1 A 0 a_playsound ("TechMonk/WaveBallSpawn",0)
		WBPF DD 1
		TNT1 A 0 a_takeinventory ("WaveCancelToken",99)
		TNT1 A 0 a_firebullets (0,0,1,0,"flickpuff",FBF_NOFLASH)
		SHTG A 0 A_FireBullets (-3, 0, -1, random(15,35), "WaveBallPuff",FBF_EXPLICITANGLE|FBF_NORANDOM)
		SHTG A 0 A_FireBullets (0, 0, -1, random(15,35), "WaveBallPuff",FBF_EXPLICITANGLE|FBF_NORANDOM)
		SHTG A 0 A_FireBullets (3, 0, -1, random(15,35), "WaveBallPuff",FBF_EXPLICITANGLE|FBF_NORANDOM)
		
		//old projectiles 
		/*TNT1 A 0 a_firecustommissile ("WaveBallShot1",0,0,40)
		TNT1 A 0 a_firecustommissile ("WaveBallShot2",0,0,10)
		TNT1 A 0 a_firecustommissile ("WaveBallShot3",0,0,-10)
		TNT1 A 0 a_firecustommissile ("WaveBallShot4",0,0,-40)*/
		
		
		TNT1 A 0 a_takeinventory ("Shell",1)
		TNT1 A 0 A_FireCustomMissile ("WaveCut",0,0,6)
		WBPF E 2
		TNT1 A 0 A_FireCustomMissile ("WaveCut",0,0)
		WBPF F 2
		TNT1 A 0 A_FireCustomMissile ("WaveCut",0,0,-6)
		WBPF GH 2
		TNT1 A 0 a_giveinventory ("TechCombo1",1)
		WBPF IJ 2 a_weaponready (WRF_NOPRIMARY|WRF_ALLOWRELOAD)
		TNT1 A 0 a_playsound ("TechMonk/ComboAlert",0)
		WBPF KLM 2 bright a_weaponready (WRF_NOPRIMARY|WRF_ALLOWRELOAD)
		WBPF NO 2 a_weaponready (WRF_NOPRIMARY|WRF_ALLOWRELOAD)
		TNT1 A 0 a_takeinventory ("TechCombo1",1)
		TNT1 A 0 a_refire 
		WBPF PQRSTUV 2 a_weaponready (WRF_ALLOWRELOAD)
		goto realready
	Altfire:
		TNT1 A 0 
		TNT1 A 0 a_takeinventory ("WaveBallSelect",99)
		TNT1 A 0 a_jumpifinventory ("TechCombo1",1,"WaveComboCheck")
		TNT1 A 0 a_jumpifinventory ("WaveCancelToken",1,"CancelWave")
		TNT1 A 0 a_jumpifinventory ("HandBeamAug",1,"AugShot")
		WBSF BBC 1 Bright
		TNT1 A 0 a_playsound ("TechMonk/HandBeam",CHAN_WEAPON)
		TNT1 A 0 a_firebullets (0,0,1,0,"flickpuff",FBF_NOFLASH)
		TNT1 A 0 a_firecustommissile ("PalmJab")
		WBSF D 1 bright A_FireCustomMissile("HandBeamShot",0,0,0,-3)
		WBSF EF 1
		WBSF GGHHIII 1 a_weaponready (WRF_ALLOWRELOAD|WRF_ALLOWRELOAD)
		WBID A 1 a_weaponready (WRF_ALLOWRELOAD|WRF_ALLOWRELOAD)
		TNT1 A 0 a_refire ("combomiss")
		goto realready
	AugShot:
		WBS1 BBC 1 Bright
		TNT1 A 0 a_playsound ("TechMonk/AugBeam",0)
		TNT1 A 0 a_firebullets (0,0,1,0,"flickpuff",FBF_NOFLASH)
		TNT1 A 0 a_firecustommissile ("PalmJab")
		WBS1 D 1 bright A_FireCustomMissile("AugBeamShot",0,0,0,-3)
		WBSF EF 1
		WBSF GGHHIII 1 a_weaponready (WRF_ALLOWRELOAD|WRF_ALLOWRELOAD)
		WBID A 1 a_weaponready (WRF_ALLOWRELOAD|WRF_ALLOWRELOAD)
		TNT1 A 0 a_refire ("combomiss")
		goto realready
		
	CancelWave:
		TNT1 A 0
		TNT1 A 0 a_takeinventory ("WaveCancelToken",99)
		TNT1 A 0 a_firecustommissile ("WaveBallFail",0,0,30,6)
		TNT1 A 0 a_firecustommissile ("WaveBallFail",0,0,10,6)
		TNT1 A 0 a_firecustommissile ("WaveBallFail",0,0,-10,6)
		TNT1 A 0 a_firecustommissile ("WaveBallFail",0,0,-30,6)
		TNT1 A 0 a_jumpifinventory ("HandBeamAug",1,"AugShot")
		goto Altfire
	ComboMiss:
		WBID A 1 a_weaponready (WRF_NOFIRE)
		TNT1 A 0 a_takeinventory ("TechCombo1",99)
		TNT1 A 0 a_takeinventory ("TechCombo2",99)
		TNT1 A 0 a_takeinventory ("TechCombo3",99)
		TNT1 A 0 a_jumpifinventory ("StrikerModule",1,"StrikerCharge")
		TNT1 A 0 a_refire ("ComboMiss")
		goto realready


	WaveComboCheck:
		TNT1 A 0
		TNT1 A 0 a_jumpifinventory ("Shell",2,"WaveCombo")
		TNT1 A 0 a_takeinventory ("TechCombo1",99)
		TNT1 A 0 a_takeinventory ("TechCombo2",99)
		TNT1 A 0 a_playsound ("TechMonk/Error",0)
		WBID A 30 a_weaponready (WRF_NOPRIMARY|WRF_ALLOWRELOAD)
		goto realready
	WaveCombo:
		TNT1 A 0
		TNT1 A 0 a_takeinventory ("TechCombo1",99)
		WBC1 ABCD 1
		TNT1 A 2
		WBC1 EF 2
		TNT1 A 0 A_FireCustomMissile ("WaveCut",0,0,-6)
		TNT1 A 0 a_playsound ("TechMonk/WaveBallSpawn2",CHAN_WEAPON)
		WBC1 G 1
		TNT1 A 0 A_FireCustomMissile ("WaveCut",0,0)
		WBC1 H 1
		TNT1 A 0 A_FireCustomMissile ("WaveCut",0,0,6)
		TNT1 A 0 a_playsound ("TechMonk/WaveBallSpawn2",0)
		WBC1 I 1
		WBC1 JKLM 2
		TNT1 A 0 a_firebullets (0,0,1,0,"flickpuff",FBF_NOFLASH)
		TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_firecustommissile ("WaveSprayPellet",Frandom(-8,8), 0, random(-8,8), 1, 0, Frandom(-6,7))		
		TNT1 A 0 a_playsound ("TechMonk/Waveball2",0)
		//Old lv 2 shot
		/*TNT1 A 0 a_firecustommissile ("WaveBallShot5",0,0,60)
		TNT1 A 0 a_firecustommissile ("WaveBallShot6",0,0,40)
		TNT1 A 0 a_firecustommissile ("WaveBallShot7",0,0,25)
		TNT1 A 0 a_firecustommissile ("WaveBallShot8",0,0,12)
		TNT1 A 0 a_firecustommissile ("WaveBallShot9",0,0,8)
		TNT1 A 0 a_firecustommissile ("WaveBallShot10",0,0,-8)
		TNT1 A 0 a_firecustommissile ("WaveBallShot11",0,0,-12)
		TNT1 A 0 a_firecustommissile ("WaveBallShot12",0,0,-25)
		TNT1 A 0 a_firecustommissile ("WaveBallShot13",0,0,-40)*/
		
		TNT1 A 0 a_takeinventory ("Shell",2)
		WBC1 N 2 bright a_weaponready (WRF_NOSECONDARY|WRF_ALLOWRELOAD)
		TNT1 A 0 a_giveinventory ("TechCombo2",1)
		WBC1 O 2  a_weaponready (WRF_NOSECONDARY|WRF_ALLOWRELOAD)
		TNT1 A 0 a_playsound ("TechMonk/ComboAlert",0)		
		WBC1 PQR 2 bright a_weaponready (WRF_NOSECONDARY|WRF_ALLOWRELOAD)
		WBC1 STU 2 a_weaponready (WRF_NOSECONDARY|WRF_ALLOWRELOAD)
		TNT1 A 0 a_takeinventory ("TechCombo2",99)
		WBC1 VW 2 a_weaponready (WRF_NOPRIMARY|WRF_ALLOWRELOAD)
		WBID A 1 a_weaponready (WRF_ALLOWRELOAD)
		goto realready
	WaveComboFinisherCheck:
		TNT1 A 0
		TNT1 A 0 a_jumpifinventory ("Shell",4,"WaveComboFinisher")
		TNT1 A 0 a_takeinventory ("TechCombo1",99)
		TNT1 A 0 a_takeinventory ("TechCombo2",99)
		TNT1 A 0 a_takeinventory ("TechCombo3",99)
		TNT1 A 0 a_playsound ("TechMonk/Error",0)
		WBID A 30 a_weaponready (WRF_NOPRIMARY|WRF_ALLOWRELOAD)
		goto realready
	WaveComboFinisher:
		TNT1 A 0
		TNT1 A 0
		TNT1 A 0 a_takeinventory ("TechCombo1",99)
		TNT1 A 0 a_takeinventory ("TechCombo2",99)
		WBC2 ABCD 2
		TNT1 A 0 a_playsound ("TechMonk/WaveBallSpawn3",0)
		TNT1 A 0 a_playsound ("TechMonk/WaveBallSpawn3",0)
		WBC2 E 2
		TNT1 A 0 a_playsound ("TechMonk/WaveBallSpawn3",0)
		TNT1 A 0 a_playsound ("TechMonk/WaveBallSpawn3",0)
		WBC2 F 2
		TNT1 A 0 a_playsound ("TechMonk/WaveBallSpawn3",0)
		TNT1 A 0 a_playsound ("TechMonk/WaveBallSpawn3",0)
		WBC2 G 2
		TNT1 A 0 a_playsound ("TechMonk/WaveBallSpawn3",0)
		TNT1 A 0 a_playsound ("TechMonk/WaveBallSpawn3",0)
		WBC2 H 2
		WBC2 IJKLMN 2
		TNT1 A 0 a_firebullets (0,0,1,0,"flickpuff",FBF_NOFLASH)
		TNT1 A 0 a_firecustommissile ("WaveChainSpawner",0,0,-10)
		TNT1 A 0 a_firecustommissile ("WaveChainSpawner",0,0,10)
		
		TNT1 A 0 a_firecustommissile ("WaveChainSpawner",0,0,25)
		TNT1 A 0 a_firecustommissile ("WaveChainSpawner",0,0,-25)
		
		TNT1 A 0 a_firecustommissile ("WaveChainSpawner",0,0,40)
		TNT1 A 0 a_firecustommissile ("WaveChainSpawner",0,0,-40)
		
		TNT1 A 0 a_firecustommissile ("WaveChainSpawner",0,0,55)
		TNT1 A 0 a_firecustommissile ("WaveChainSpawner",0,0,-55)
		TNT1 A 0 a_takeinventory ("Shell",4)
		WBC2 O 2
		WBC2 P 2
		TNT1 A 4
		WBC2 QRSTU 2
		goto realready
		
	Reload:
		TNT1 A 0 
		TNT1 A 0 a_takeinventory ("TechCombo1",99)
		TNT1 A 0 a_takeinventory ("TechCombo2",99)
		TNT1 A 0 a_takeinventory ("TechCombo3",99)
		TNT1 A 0 a_jumpifinventory ("KameBombModule",1,"KameBombShot")
		WBID A 30 a_weaponready 
		goto realready
	KameBombFail:
		TNT1 A 0 
		TNT1 A 0 a_playsound ("TechMonk/Error",0)
		WBID A 8
		WBID A 30 a_weaponready 
		goto realready
	KameBombShot:
		TNT1 A 0
		TNT1 A 0 a_jumpifinventory ("KameFired",1, "Detonate")
		TNT1 A 0 a_jumpifinventory ("KameCoolDown",1,"KameBombFail")
		WBSF A 1 
		KEB2 AAB 1 bright
		TNT1 A 0 a_playsound ("TechMonk/KameBomb",0)
		TNT1 A 0 ACS_NamedExecuteAlways("KameBombCharge", 0, 0, 0, 0)
		TNT1 A 0 A_FireCustomMissile("KameBomb",0,0)
		KEB2 CC 1 bright 
		TNT1 A 0 a_giveinventory ("KameFired",1)
		KEB2 DD 1
		WBSF E 3 
		WBSF F 2 a_weaponready (WRF_NOFIRE|WRF_ALLOWRELOAD)
		WBSF GG 1 a_weaponready (WRF_ALLOWRELOAD)
		WBSF HHIII 1 a_weaponready (WRF_ALLOWRELOAD)
		WBID A 1 a_weaponready (WRF_ALLOWRELOAD)
		TNT1 A 0 a_takeinventory ("TechCombo1",99)
		TNT1 A 0 a_takeinventory ("TechCombo2",99)
		TNT1 A 0 a_takeinventory ("TechCombo3",99)
		goto realready
	Detonate:
		KEB2 EFG 1
		KEB2 HI 2 
		TNT1 A 0 a_takeinventory ("TechCombo1",99)
		TNT1 A 0 a_takeinventory ("TechCombo2",99)
		TNT1 A 0 a_takeinventory ("TechCombo3",99)
		TNT1 A 0 a_playsound ("TechMonk/KameTrigger",0)
		KEB2 J 2 a_giveinventory ("KameDet",1)
		TNT1 A 0 a_takeinventory ("KameFired",99)
		KEB2 KLMNO 2 a_weaponready
		WBID A 1 a_weaponready
		goto realready

	//Striker Beam stuff
	StrikerCharge:
		WBID A 1 
		TNT1 A 0 a_giveinventory ("StrikerPrep",1)
		TNT1 A 0 a_jumpifinventory ("StrikerPrep", 8, "StrikerChargeStart")
		TNT1 A 0 a_refire ("StrikerCharge")
		TNT1 A 0 a_takeinventory ("StrikerPrep",99)
		goto realready
	StrikerChargeStart:	
		SPOW A 2
		TNT1 A 0 a_takeinventory ("StrikerPrep",99)
		TNT1 A 0 a_playsound ("TechMonk/StrikerCharge",0)
		SPOW B 2
		SPOW CDE 2
		SPOW E 3 
		TNT1 A 0 a_playsound ("TechMonk/StrikerChargeLoop",CHAN_WEAPON,1,1)
	ChargeLoop:
		SPOW F 2 bright a_giveinventory ("StrikerCharge",8)
		SPOW G 2 bright a_giveinventory ("StrikerCharge",8)
		SPOW H 2 bright a_giveinventory ("StrikerCharge",8)
		SPOW I 2 bright a_giveinventory ("StrikerCharge",8)
		TNT1 A 0 a_jumpifinventory ("StrikerCharge",300,"ChargeFinish")
		TNT1 A 0 a_refire ("chargeloop")
	ChargeCancel:
		TNT1 A 0
		TNT1 A 0 a_stopsound (CHAN_WEAPON)
		TNT1 A 0 a_takeinventory ("StrikerCharge",9999)
		TSWI IJKL 2 a_weaponready (WRF_ALLOWRELOAD)
		TSWI MNOPQRS 1 bright a_weaponready (WRF_ALLOWRELOAD)
		TSWI TUV 2 bright a_weaponready (WRF_ALLOWRELOAD)
		TNT1 A 0 a_playsound ("TechMonk/WaveBallUp",CHAN_WEAPON)
		TSW2 ABCD 2 bright a_weaponready (WRF_ALLOWRELOAD)
		TSW2 EFG 2 a_weaponready (WRF_ALLOWRELOAD)
		goto realready
	ChargeFinish:	
		TNT1 A 0
		TNT1 A 0 a_stopsound (CHAN_WEAPON)
		TNT1 A 0 a_playsound ("TechMonk/StrikerChargeFinish",0)
		SPOW JKLM 2 bright
		TNT1 A 0 a_playsound ("TechMonk/StrikerPowerUp",CHAN_WEAPON)
		SPOW NOPQRST 2 bright
		SPOW UVWX 2 bright
		TNT1 A 0 a_playsound ("TechMonk/StrikerPowerUpFinish",CHAN_WEAPON)
		SPOW YZ 2 bright
		SPO1 ABC 2 bright
		TNT1 A 0 a_giveinventory ("StrikerBeam",1)
		TNT1 A 0 a_selectweapon ("StrikerBeam")
		goto StrikerChange
	StrikerChange:
		TNT1 A 0
		STRI A 0 a_lower
		TNT1 A 0 a_takeinventory ("secretaction", 99)
		HBID AAAAAAAAAAA 0 a_lower
		loop

	}
}

Actor WaveBallFail
{
	PROJECTILE
	scale 0.10
	Damage 0
	Speed 4
	Radius 6
	Height 8
	-NOGRAVITY
	Gravity 0.80
	+bright
	+thruspecies
	+thruactors
	species "player"
	States
	{
	Spawn:
		WBSH A 2
		WBSH A 1 a_jump (80, "waveflight2")
		WBSH A 1 a_jump (80, "waveflight3")
		WBSH A 1 a_jump (80, "waveflight4")
	waveflight:
		WBSH A 2 A_weave (8,2,2,1)
		WBSH B 2 A_weave (8,2,2,1)
		loop
	waveflight2:
		WBSH A 2 A_weave (6,3,-2,-1)
		WBSH B 2 A_weave (6,3,-2,-1)
		loop
	waveflight3:
		WBSH A 2 A_weave (7,5,3,-1)
		WBSH B 2 A_weave (7,5,3,-1)
		loop
	waveflight4:
		WBSH A 2 A_weave (10,6,-3,1)
		WBSH B 2 A_weave (10,6,-3,1)
		loop
	death:
		TNT1 A 0
		TNT1 A 0 a_stop
		HBPR C 1 a_stop
		WBSH IJKL 1 
		stop
	}
}


ACTOR WaveBallPuff : BulletPuff
{
	+NOBLOCKMAP
	+NOGRAVITY
	+ALLOWPARTICLES
	+bloodlessimpact
	+RANDOMIZE
	+thruspecies
	+MTHRUSPECIES
	+PUFFONACTORS
	+NOEXTREMEDEATH
	+forcexybillboard
	+bright
	species "player"
	RenderStyle add
	Alpha 0.90
	scale 0.50
	VSpeed 0
	Mass 5
	decal CANESDecal
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 2
		// Intentional fall-through
	Xdeath:
		TNT1 A 0
		TNT1 A 0 a_fadeout (0.10)
		TNT1 A 0 a_playsound ("TechMonk/HandBeamHit",CHAN_VOICE,0.60,0,1.20)
		TNT1 AAA 0 a_spawnitemex ("WaveBallParticle",random(-8,8),random(-8,8),random(-10,10),random(-120,120)/45.0,random(-130,130)/42.0,random(-110,110)/47.0,0,160)
		WBSH CDEFGH 1
		stop
	Crash:
		TNT1 A 0 a_stop
		TNT1 A 0 a_playsound ("TechMonk/ComboAlert",0,0.80,0,0.90)
		TNT1 A 0 a_playsound ("TechMonk/WaveBallSpawn",0,1,0,0.80)
		HBPR C 1 a_stop
		TNT1 A 0 a_playsound ("TechMonk/WaveBallSpawn2",0,1,0,0.80)
		WBSH IJKL 1 
		Stop		
	}
}



actor WaveBallParticle
{
	+NOINTERACTION
	+NOCLIP
    +BRIGHT
	+clientsideonly
	+forcexybillboard
	Radius 1
	Height 1
	Renderstyle Add
	Alpha 0.70
	Scale 0.20
	reactiontime 3
	States
	{
	Spawn:
		WBSH A random (3,6)
	ShrinkLoop:
		WBSH A 2
		TNT1 A 0 a_scalevelocity (0.70)
		WBSH A 1 A_SetScale (scalex * frandom(0.90,0.95))
		WBSH A 3
		TNT1 A 0 a_countdown
		loop
	Death:
		TNT1 A 0
		TNT1 A 0 a_fadeout (0.40)
		WBSH B 1 a_stop
		WBSH IJKL 1 A_SetScale (scalex * frandom(1.05,1.10))
		stop
	}
}


actor WaveSprayPellet
{
	PROJECTILE
	scale 0.25
	Damage (random(8,15))
	Speed 30
	Radius 6
	Height 8
	+hexenbounce
	+forcexybillboard
	Bouncecount 3
	+bright
	+thruspecies
	+NOEXTREMEDEATH
	species "player"
	Seesound "TechMonk/WaveBallSpawn2"
	Obituary "%o was washed away by %k's wave ball"
	decal CANESDecal
	States
	{
	Spawn:
		TNT1 A 0 
		TNT1 A 0 a_playsound ("silence",CHAN_VOICE)
		goto Flight
	Flight:
		WBSH A 2
		TNT1 A 0 a_spawnitemex ("WavePelletTrail")
		WBSH B 2
		TNT1 A 0 a_spawnitemex ("WavePelletTrail")
		loop
	death:
		TNT1 A 0
		TNT1 A 0 a_stop
		HBPR C 1 a_stop
		WBSH IJKL 1 
		stop
	Xdeath:
	Crash:
		TNT1 A 0
		TNT1 A 0 a_fadeout (0.10)
		TNT1 A 0 a_playsound ("TechMonk/HandBeamHit",CHAN_VOICE,0.60,0,1.20)
		WBSH CDEFGH 1
		stop
	}
}


ACTOR WavePelletTrail
{
	+NOINTERACTION
	+NOCLIP
    +BRIGHT
	+clientsideonly
	Radius 1
	Height 1
	Renderstyle Add
	Alpha 0.80
	Scale 0.20
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 1
		WBSH AA 1
		WBSH A 2 A_SetScale(0.15)
		WBSH A 2 A_SetScale(0.10)
		WBSH A 2 A_SetScale(0.05)
		WBSH IJKL 1 
		Stop
	death:
		TNT1 A 1
		stop
	}
}

actor WaveChainSpawner
{
	PROJECTILE
	+NOINTERACTION
	Speed 1
	Radius 4
	Height 8
	Damage (0)
	RenderStyle None
	Seesound "TechMonk/Waveball3"
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 2 A_SpawnItemEx("Wavechain",0,0,0,momx*30,momy*30,momz*30,0,SXF_NOCHECKPOSITION|SXF_ABSOLUTEMOMENTUM)
		TNT1 A 2 A_SpawnItemEx("Wavechain",0,0,0,momx*30,momy*30,momz*30,0,SXF_NOCHECKPOSITION|SXF_ABSOLUTEMOMENTUM)
		TNT1 A 2 A_SpawnItemEx("Wavechain",0,0,0,momx*30,momy*30,momz*30,0,SXF_NOCHECKPOSITION|SXF_ABSOLUTEMOMENTUM)
		TNT1 A 2 A_SpawnItemEx("Wavechain",0,0,0,momx*30,momy*30,momz*30,0,SXF_NOCHECKPOSITION|SXF_ABSOLUTEMOMENTUM)
		Stop
	}
}

actor WaveChain
{
	PROJECTILE
	scale 0.50
	Damage (25)
	Speed 30
	Radius 6
	Height 8
	WeaveIndexXY 4
	WeaveIndexZ 3
	+bright
	+thruspecies
	+forcexybillboard
	species "player"
	decal CANESDecal
	States
	{
	Spawn:
		WBSH A 2
	WaveFlight:
		WBSH A 2 A_weave (15,10,2,1)
		WBSH B 2 A_weave (15,10,2,1)
		loop
	death:
		TNT1 A 0
		TNT1 A 0 a_stop
		HBPR C 1 a_stop
		WBSH IJKL 1 
		stop
	Crash:
	Xdeath:
		TNT1 A 0
		TNT1 A 0 a_fadeout (0.10)
		TNT1 A 0 a_playsound ("TechMonk/HandBeamHit",0)
		WBSH CDEFGH 1
		stop
	}
}


actor WaveCut : 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 A 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_PlaySound("TechMonk/KnifeHandHit", CHAN_AUTO)
		TNT1 A 0 radius_quake (1,4,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
	}
}



//Tokens
actor WaveCancelToken : inventory
{inventory.maxamount 1}

Actor WaveBallSelect : Powerup
{
  Powerup.Duration 60
}


