/*

==CLASH BALL==
A power focused form, the Clash Ball converts rockets
into an explosive charge, these charges are attuned
to the user, so self damage isn't a concern. By 
default the charges travel slowly and bounce off
surfaces, though the Clash Ball's only follow up 
punch amplifies the charges, making them travel
with greater velocity and causing them to explode 
on impact with anything.

In the event of running out of rockets, a swift punch
can sometimes prove to be all that's needed to resolve
a fight.

Known as the "Octopus Ball" in other regions for the 
projectile's round shape and for its ability to sharply
change direction.
*/

actor ClashBall : weapon
{
	Weapon.SelectionOrder 500
	Weapon.AmmoUse 1
	Weapon.AmmoType "RocketAmmo"
	+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 "Clash 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 ("ClashBallSelect",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/ClashBallUp",CHAN_WEAPON)
		TSW4 ABCD 2 bright a_weaponready (WRF_ALLOWRELOAD)
		TSW4 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:
		CLBI A 1 a_weaponready (WRF_ALLOWRELOAD)
		loop
	Fire:
		TNT1 A 0
		TNT1 A 0 a_takeinventory ("ClashBallSelect",99)
		TNT1 A 0 a_weaponready (WRF_NOFIRE)
		TNT1 A 0 a_jumpifinventory ("RocketAmmo",1,"Level1Start")
		CLNF AB 1
		TNT1 A 0 a_playsound ("TechMonk/ClashJab",0)
		TNT1 A 0 a_jump (180,"Offset1","Offset2","Offset3")
		goto NoAmmoJab
	Offset1:
		TNT1 A 0
		TNT1 A 0 offset(-20,38)
		goto NoAmmoJab
	Offset2:
		TNT1 A 0
		TNT1 A 0 offset(30,28)
		goto NoAmmoJab
	Offset3:
		TNT1 A 0
		TNT1 A 0 offset(25,33)
		goto NoAmmoJab
	NoAmmoJab:
		CLNF CD 1
		TNT1 A 0 A_FireCustomMissile ("ClashPunch",0,0)
		CLNF E 2 a_weaponready (WRF_ALLOWRELOAD|WRF_NOBOB)
		CLNF FGH 1 a_weaponready (WRF_ALLOWRELOAD|WRF_NOBOB)
		CLNF IJK 2 a_weaponready (WRF_ALLOWRELOAD)
		CLBI A 1 a_weaponready (WRF_ALLOWRELOAD)
		goto realready
	
	
	Level1Start:
		CLPF ABCDEFG 1
		CLPF HIJJ 1 bright
		TNT1 A 0 a_playsound ("TechMonk/ClashBallShot",0)
		TNT1 A 0 a_takeinventory ("RocketAmmo",1)
		TNT1 A 0 a_firebullets (0,0,1,0,"flickpuff",FBF_NOFLASH)
		TNT1 A 0 A_FireCustomMissile ("ClashPunch",0,0)
		CLPF K 2 bright a_firecustommissile ("ClashBallShot",0,0,-3)
		TNT1 A 0 a_giveinventory ("TechCombo1",1)
		CLPF LMN 1 bright a_weaponready (WRF_NOPRIMARY|WRF_ALLOWRELOAD)
		CLPF O 2 a_weaponready (WRF_NOPRIMARY|WRF_ALLOWRELOAD)		
		TNT1 A 0 a_refire ("ClashLoopCheck")
		CLPF P 2 a_weaponready (WRF_NOPRIMARY|WRF_ALLOWRELOAD)		
		TNT1 A 0 a_playsound ("TechMonk/ComboAlert",0)
		CLPF Q 2 a_weaponready (WRF_NOPRIMARY|WRF_ALLOWRELOAD)		
		CLPF RSTU 2 Bright a_weaponready (WRF_NOPRIMARY|WRF_ALLOWRELOAD)
		TNT1 A 0 a_takeinventory ("TechCombo1",99)
		CLPF VWX 2
		CLBI A 1
		goto realready
	ClashLoop:
		CLPF YZCDEFG 1
		CLPF HIJJ 1 bright
		TNT1 A 0 a_playsound ("TechMonk/ClashBallShot",0)
		TNT1 A 0 a_takeinventory ("RocketAmmo",1)
		TNT1 A 0 a_firebullets (0,0,1,0,"flickpuff",FBF_NOFLASH)
		TNT1 A 0 A_FireCustomMissile ("ClashPunch",0,0)
		CLPF K 2 bright a_firecustommissile ("ClashBallShot",0,0,-3)
		TNT1 A 0 a_giveinventory ("TechCombo1",1)
		CLPF LMN 1 bright a_weaponready (WRF_NOPRIMARY|WRF_ALLOWRELOAD)
		CLPF O 2 a_weaponready (WRF_NOPRIMARY|WRF_ALLOWRELOAD)		
		TNT1 A 0 a_refire ("ClashLoopCheck")
		CLPF P 2 a_weaponready (WRF_NOPRIMARY|WRF_ALLOWRELOAD)		
		TNT1 A 0 a_playsound ("TechMonk/ComboAlert",0)
		CLPF Q 2 a_weaponready (WRF_NOPRIMARY|WRF_ALLOWRELOAD)		
		CLPF RSTU 2 Bright a_weaponready (WRF_NOPRIMARY|WRF_ALLOWRELOAD)
		TNT1 A 0 a_takeinventory ("TechCombo1",99)
		CLPF VWX 2
		CLBI A 1
		goto realready
	ClashLoopCheck:
		TNT1 A 0 
		TNT1 A 0 a_takeinventory ("TechCombo1",99)
		TNT1 A 0 a_jumpifinventory ("RocketAmmo",1,"ClashLoop")
		TNT1 A 0 a_playsound ("TechMonk/Error",0)
		CLBI A 30 a_weaponready (WRF_NOPRIMARY|WRF_ALLOWRELOAD)
		goto realready	
		

	Altfire:
		TNT1 A 0 
		TNT1 A 0 a_takeinventory ("ClashBallSelect",99)
		TNT1 A 0 a_jumpifinventory ("TechCombo1",1,"PowerClashCheck")
		TNT1 A 0 a_takeinventory ("TechCombo1",99)
		TNT1 A 0 a_jumpifinventory ("HandBeamAug",1,"AugShot")
		CLSF 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")
		CLSF D 1 bright A_FireCustomMissile("HandBeamShot",0,0,0,-3)
		CLSF EF 1
		CLSF GGHHIII 1 a_weaponready (WRF_ALLOWRELOAD)
		CLBI A 1 a_weaponready (WRF_ALLOWRELOAD)
		TNT1 A 0 a_refire ("combomiss")
		goto realready
	Augshot:
		CLS1 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")
		CLS1 D 1 bright A_FireCustomMissile("AugBeamShot",0,0,0,-3)
		CLSF EF 1
		CLSF GGHHIII 1 a_weaponready (WRF_ALLOWRELOAD)
		CLBI A 1 a_weaponready (WRF_ALLOWRELOAD)
		TNT1 A 0 a_refire ("combomiss")
		goto realready

	ComboMiss:
		CLBI 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
	
	PowerClashCheck:
		TNT1 A 0 
		TNT1 A 0 a_takeinventory ("TechCombo1",99)
		TNT1 A 0 a_jumpifinventory ("RocketAmmo",1,"PowerClash")
		TNT1 A 0 a_playsound ("TechMonk/Error",0)
		CLBI A 30 a_weaponready (WRF_NOPRIMARY|WRF_ALLOWRELOAD)
		goto realready	
		
	PowerClash:
		CLCF ABCC 1
		TNT1 A 0 a_takeinventory ("TechCombo1",99)
		CLCF DEF 1 bright
		TNT1 A 0 A_Quake(2, 15, 0, 10, "Silence")	
		TNT1 A 0 A_FireCustomMissile ("ClashPunch",0,0)
		TNT1 A 0 a_playsound ("TechMonk/ClashBallPowerShot",0)
		TNT1 A 0 a_takeinventory ("RocketAmmo",1)
		TNT1 A 0 a_firebullets (0,0,1,0,"flickpuff",FBF_NOFLASH)
		CLCF G 1 bright a_firecustommissile ("PowerClashBall")
		CLCF HIJ 2 
		CLCF JKJKJKJKJKJK 1 a_weaponready (WRF_ALLOWRELOAD)
		CLCF LMNOPQRSTUVWXY 2 a_weaponready (WRF_ALLOWRELOAD)
		CLBI A 1 a_weaponready (WRF_ALLOWRELOAD)
		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")
		CLBI A 30 a_weaponready 
		goto realready
	KameBombFail:
		TNT1 A 0 
		TNT1 A 0 a_playsound ("TechMonk/Error",0)
		CLBI A 8 
		CLBI 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")
		CLSF A 1 
		KEB4 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)
		KEB4 CC 1 bright 
		TNT1 A 0 a_giveinventory ("KameFired",1)
		KEB4 DD 1
		CLSF E 3 
		CLSF F 2 a_weaponready (WRF_NOFIRE|WRF_ALLOWRELOAD)
		CLSF GG 1 a_weaponready (WRF_ALLOWRELOAD)
		CLSF HHIII 1 a_weaponready (WRF_ALLOWRELOAD)
		CLBI 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:
		KEB4 EFG 1
		KEB4 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)
		KEB4 J 2 a_giveinventory ("KameDet",1)
		TNT1 A 0 a_takeinventory ("KameFired",99)
		KEB4 KLMNO 2 a_weaponready
		CLBI A 1 a_weaponready
		goto realready

	//Striker Beam stuff
	StrikerCharge:
		CLBI 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/ClashBallUp",CHAN_WEAPON)
		TSW4 ABCD 2 bright a_weaponready (WRF_ALLOWRELOAD)
		TSW4 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 ClashBallShot
{
	+notimefreeze
	projectile
	+floorclip
	+bloodlessimpact
	+thruspecies
	+doombounce
	+bright
	+usebouncestate
	+forcexybillboard
	decal BigCANESDecal
	species "player"
	bouncefactor 0.9
	bouncecount 3
	gravity 0.60
	damage 20
	Radius 8
	height 8
	scale 1
	speed 40
	Obituary "%o was blasted by %k's clash ball"
	states
	{
	spawn:
		CLSH A 1 
		loop
	Bounce:
		TNT1 A 0
		TNT1 A 0 a_changeflag ("NOGRAVITY",0)
		CLSH BCDE 2
		goto spawn
	Death:
		TNT1 A 0
		TNT1 A 0 a_stop
		TNT1 A 0 a_changeflag ("NOGRAVITY",1)
		CLSH FG 1
		TNT1 A 0 a_settranslucent (0.70,1)
		TNT1 A 0 a_setscale (2,2)
		TNT1 A 0 a_explode (128,130,0,1,40)
		TNT1 A 0 a_playsound ("TechMonk/KameBoom",0,1,0,0.7)
		TNT1 A 0 Radius_Quake (3,6,0,20,0)
		CLSH HIJKKLLMM 1 
		stop
	}
}

Actor PowerClashBall : ClashBallShot
{
	-Doombounce
	-usebouncestate
	speed 80
	Damage 25
	States
	{
	spawn:
		CLSH A 2
	FlightLoop:
		CLSH A 1
		TNT1 A 0 a_spawnitemex ("ClashTrail")
		CLSH B 1
		TNT1 A 0 a_spawnitemex ("ClashTrail")
		CLSH C 1
		TNT1 A 0 a_spawnitemex ("ClashTrail")
		CLSH D 1
		TNT1 A 0 a_spawnitemex ("ClashTrail")
		CLSH E 1
		TNT1 A 0 a_spawnitemex ("ClashTrail")
		loop
	Death:
		TNT1 A 0
		TNT1 A 0 a_stop
		TNT1 A 0 a_changeflag ("NOGRAVITY",1)
		CLSH FG 1
		TNT1 A 0 a_settranslucent (0.70,1)
		TNT1 A 0 a_setscale (4,4)
		TNT1 A 0 a_explode (130,200,0,1,80)
		TNT1 A 0 a_playsound ("TechMonk/ClashBallExplode",0,1,0,0.6)
		TNT1 A 0 Radius_Quake (3,6,0,20,0)
		CLSH HIJKKLLMM 1 
		stop
	}
}



ACTOR ClashTrail
{
	+NOINTERACTION
	+NOCLIP
    +BRIGHT
	+clientsideonly
	+forcexybillboard
	Radius 1
	Height 1
	Renderstyle Add
	Alpha 0.80
	Scale 0.80
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 1
		CLSH AA 1
		CLSH A 2 A_SetScale(0.60)
		CLSH A 2 A_SetScale(0.40)
		CLSH A 2 A_SetScale(0.20)
		Stop
	}
}


actor ClashPunch : fastprojectile
{
	Projectile
	speed 64
	damage (25)
	obituary "%o was no match for %k's kung fu."
	+BLOODSPLATTER
	+thruspecies
	+dontblast
	+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/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
	}
}

//Tokens

Actor ClashBallSelect : Powerup
{
  Powerup.Duration 60
}
