Actor Stickguyragefists : StickguyWeapon
{
	Weapon.SelectionOrder 60
	Weapon.AmmoType "CELL"
	Weapon.ammouse 1
	Weapon.kickback 100
	Inventory.RestrictedTo "Stickguyclass"
	tag "Frustration"
	States
	{
		Select:
			TNT1 A 0 Offset(0,32)
			TNT1 A 0 A_takeinventory("StickguyBFGStack",10)
			SGBG F 2 
			TNT1 A 0 A_playsound("characters/JdG/PunchHitEnd",6)
			TNT1 A 0 a_quake(4,4,0,1)
			TNT1 A 0 a_quake(2,4,0,1)
			SBFG H 2 Offset(-5,32) a_quake(3,6,0,1)
			SBFG H 2 Offset(3,32) 
			SBFG H 2 Offset(-1,32)
			SBFG H 10 Offset(0,32)
		SelectQuick:
			TNT1 A 0 A_Weaponready(WRF_NOBOB|WRF_NOFIRE)
			TNT1 A 0 A_takeinventory("StickguyBFGStack",10)
			SBFG I 1 Offset(0,32)
			SBFG I 1 Offset(0,34)
			Goto Ready
		Deselect:
			SBFG A 0 A_STOPSOUND(6)
			TNT1 A 0 A_takeinventory("StickguyBFGStack",10)
			SBFG I 1 Offset(0,38)
			SBFG I 1 Offset(0,40)
			SBFG I 1 Offset(0,43)
			SBFG I 1 Offset(0,48)
			SBFG I 1 Offset(0,54)
		DeselectLoop:
			SBFG I 1 A_LOWER
			TNT1 AAAAAAAAA 0 A_lower
			Wait
		WinDown:
			TNT1 A 0 A_PlaySound("Weapons/MinigunWindDown", 1, 1) 
		Ready: //Credit here goes to Yholl and SGT SHivers as this is litterally a code steal
			SBFG A 2 a_weaponready
			Loop
		Altfire:
			TNT1 A 0 A_Jumpifinventory("Cell",40,1)
			goto Select
			TNT1 A 0 A_Jumpifinventory("StickguyMeleeStack",20,"Finish")
			goto Select
		Fire:
			TNT1 A 0 A_jumpifinventory ("Cell",1,1)
			Goto TimeToFinish
			TNT1 A 0 A_jumpifinventory("StickguyBFGStack",5,"Fire2")
			REFT B 2 A_FireCustomMissile("StickguyFrustrationPunch",random(-2,2),0,4,1)
			REFT D 2 A_Quake (1, 2, 0, 16, "NOSOUND")
			REFT D 2 A_AlertMonsters
			REFT C 2 Offset(0,32)
			REFT B 2
			TNT1 A 0 A_jumpifinventory ("Cell",1,1)
			Goto TimeToFinish
			TNT1 A 0 A_jumpifinventory("StickguyBFGStack",5,"Fire2")
			RELT B 2 A_FireCustomMissile("StickguyFrustrationPunch",random(-2,2),0,-4,1)
			RELT D 2 A_Quake (1, 2, 0, 16, "NOSOUND")
			RELT D 2 A_AlertMonsters
			RELT C 2 Offset(0,32)
			RELT B 2
			TNT1 A 0 A_jumpifinventory ("Cell",1,1)
			Goto TimeToFinish
			TNT1 A 0 A_Refire
			goto TimeToFinish
		Fire2:
			TNT1 A 0 A_jumpifinventory ("Cell",1,1)
			Goto TimeToFinish
			TNT1 A 0 A_jumpifinventory("StickguyBFGStack",10,"Fire3")
			REFT B 1 A_FireCustomMissile("StickguyFrustrationPunch2",random(-4,4),0,4,1)
			REFT D 1 A_Quake (1, 2, 0, 16, "NOSOUND")
			REFT D 1 A_AlertMonsters
			REFT C 1 
			TNT1 A 0 A_jumpifinventory ("Cell",1,1)
			Goto TimeToFinish
			TNT1 A 0 A_jumpifinventory("StickguyBFGStack",10,"Fire3")
			RELT B 1 A_FireCustomMissile("StickguyFrustrationPunch2",random(-4,4),0,-4,1)
			RELT D 1 A_Quake (1, 2, 0, 16, "NOSOUND")
			RELT D 1 A_AlertMonsters
			RELT C 1 
			TNT1 A 0 A_jumpifinventory ("Cell",1,1)
			Goto TimeToFinish
			TNT1 A 0 A_Refire("Fire")
			goto TimetoFinish
		Fire3:
			TNT1 A 0 A_jumpifinventory ("Cell",1,1)
			Goto TimeToFinish
			TNT1 A 0 A_PlaySound("Stickguy/ATATATA", 6, 1, 1)
			TNT1 A 0 A_Quake (1, 2, 0, 16, "NOSOUND")
			TNT1 A 0 A_AlertMonsters
			SBFG B 1 A_FireCustomMissile("StickguyFrustrationPunch3",random(-6,6),0,4,1)
			TNT1 A 0 A_jumpifinventory ("Cell",1,1)
			Goto TimeToFinish
			SBFG C 1 A_Quake (1, 2, 0, 16, "NOSOUND")
			TNT1 A 0 A_jumpifinventory ("Cell",1,1)
			Goto TimeToFinish
			TNT1 A 0 A_Quake (1, 2, 0, 16, "NOSOUND")
			TNT1 A 0 A_AlertMonsters
			SBFG D 1 A_FireCustomMissile("StickguyFrustrationPunch3",random(-6,6),0,4,1)
			TNT1 A 0 A_jumpifinventory ("Cell",1,1)
			Goto TimeToFinish		
			SBFG E 1 A_Quake (1, 2, 0, 16, "NOSOUND")
			TNT1 A 0 A_REFIRE("Fire")
		TimeToFinish:
			TNT1 A 0 A_STOPSOUND(6)
			TNT1 A 0 A_takeinventory("StickguyBFGStack",10)
			TNT1 A 0 A_Jumpifinventory("StickguyMeleeStack",10,"Windown")
			Goto ready
		Finish:
			TNT1 A 0 A_Gunflash("Effect")
			SBFG K 2 Offset(0,32) A_FireCustomMissile("BFGFist",0,0,0,1)
			SBFG J 1 Offset(0,30) 
			SBFG J 10 Offset(0,32)
			SBFG J 3 Offset(0,33)
			SBFG J 2 Offset(0,36)
			SBFG L 2 Offset(0,32)
			SBFG L 2 Offset(0,36)
			SBFG L 2 Offset(0,42)
			SBFG K 1 Offset(0,48)
			TNT1 A 16 Offset(0,32)
			TNT1 A 2 
			Goto SelectQuick
		Effect:
			TNT1 A 2 A_ZoomFactor(0.97,ZOOM_NOSCALETURNING)
			TNT1 A 1 A_ZoomFactor(0.9,ZOOM_NOSCALETURNING)
			TNT1 A 1 A_Zoomfactor(1.16,ZOOM_NOSCALETURNING)
			TNT1 A 1 A_Zoomfactor(1.15,ZOOM_NOSCALETURNING)
			TNT1 A 0 A_Quake(2,10,0,1,"NOSOUND")
			TNT1 A 0 A_Quake(3,5,0,1,"NOSOUND")
			TNT1 A 0 A_Quake(5,2,0,1,"NOSOUND")
			TNT1 A 3 A_ZoomFactor(1.0,ZOOM_NOSCALETURNING)
			Stop
		Spawn:
			TNT1 A -1
			Loop
	}

}

Actor BFGFist : FistImpact 
{
   var int user_FistStrenght;
   -NOEXTREMEDEATH
   damage (400 * (user_FistStrenght/10) ) //formelly 300 reason is written in the fist impact part
   ALPHA 0.90
   Scale 2
   +FORCEPAIN
   Speed 70
   ProjectileKickBack 1001
   DECAL "STGBFGDECAL"
    States
    {
   Spawn:
		TNT1 A 0 NODELAY A_SetUserVar("user_FistStrenght", 0)
		Goto StrenghtUpgrade
  StrenghtUpgrade:
		TNT1 A 0 A_TakeInventory("StickguyMeleeStack", 1, 0, AAPTR_TARGET)
		TNT1 A 0 
		TNT1 A 0 A_SetUserVar("user_FistStrenght", user_FistStrenght+1)
		TNT1 A 0 A_JumpIfInventory("StickguyMeleeStack", 1, "StrenghtUpgrade", AAPTR_TARGET)
		TNT1 A 0
		Goto Exist
	Exist:
		SGFP A 3
		SGFP A 1 A_spawnitemEx("waveonion")
		loop
	Death: //If it hits a wall
        TNT1 A 0 A_Playsound("Stickguy/PUNCH",1)
		TNT1 A 1
		TNT1 A 0
		Stop
   XDeath: //If it hits an actor that bleeds
   Crash: //If it hits an actor that doesn't bleed
		TNT1 A 0 A_takefromtarget("Cell",40)
        TNT1 A 0 A_Playsound("Stickguy/FinalAttack",1)
		TNT1 A 0 A_spawnitemEx("waveonion",4,0,24,1)
		TNT1 A 0 A_spawnitemEx("Bigwaveonion",12,0,24,2)
		TNT1 A 0 A_spawnitemEx("Biggerwaveonion",28,0,24,4)
        TNT1 A 0 A_giveinventory("StickguySpeedboost",1,AAPTR_TARGET)
		//TNT1 A 0 A_takeinventory("StickguyMeleeStack",20,0,AAPTR_TARGET) 		
        TNT1 A 1 A_Playsound("Stickguy/SpeedUp",6)
		Stop
	}
}

Actor StickguyFrustrationPunch : FistImpact
{
	ALPHA 0.50
	damage (10)
   States
    {
   Spawn:
		SGFP A 0 Nodelay
		SGFP A 3
		Stop
	Crash:
   XDeath: //If it hits an actor that bleeds
		TNT1 A 0 A_Giveinventory("StickguyMeleeStack",1,AAPTR_TARGET)
	Death: //If it hits a wall
		TNT1 A 0 A_Giveinventory("StickguyBFGStack",1,AAPTR_TARGET)
		TNT1 A 0 A_takefromtarget("Cell",1)
        TNT1 A 0 A_Playsound("Stickguy/PUNCH",1)
		TNT1 A 1 A_quake(3,1,0,16,"NOSOUND") 
		TNT1 A 0
		Stop
	}
}

Actor StickguyFrustrationPunch2:StickguyFrustrationPunch{damage (30)}
Actor StickguyFrustrationPunch3:StickguyFrustrationPunch{damage (56)}




Actor WaveOnion 
{
		+NOINTERACTION
		+NOBLOCKMAP
		Renderstyle "Add"
		Scale 0.2
		Alpha 0.5
	States
	{
	Spawn:
		WONO A 1 NoDelay Bright A_SetScale(scaleX * 1.1)
		WONO A 0 A_FadeOut(0.05)
		Loop
	}

}

Actor BigWaveOnion : WaveOnion 
{
		Scale 0.5
}
Actor BiggerWaveOnion : WaveOnion 
{
		Scale 0.7
}
