actor RegularFists:MSXWeapon{
	weapon.selectionorder 1000
	weapon.AmmoUse 0
	weapon.bobstyle inverse
	weapon.bobrangeX 0.4
	weapon.bobrangeY 0.6
	weapon.bobspeed 2.5
	weapon.kickback 150
	DamageType NormalPunch
	+MELEEWEAPON	
	+NOALERT
	-BLOODSPLATTER
	+WEAPON.NOAUTOAIM
	states{
	select:
		TNT1 A 0 A_JumpIf(GetCVar("MSfiXd_QuickSwap")==1,"SeLoop")
		TNT1 A 5
	 SeLoop:
		TNT1 AAAAAAAAAA 0 A_Raise
		TNT1 A 1 A_Raise
		Loop
	deselect:
		FSTU A 1 {A_TakeInventory("xhair_switch",1);
			A_GunFlash("flashreset");}
		FSTU BCDE 1
		TNT1 AAAAAAAAAA 0 A_Lower
		TNT1 A 1 A_Lower
		Goto Deselect+5
	Ready:
		FSTU E 1 A_SetCrosshair(10)
		FSTU DCBA 1
		TNT1 A 0 A_GiveInventory("xhair_switch",1)
	Idle:
		FSTI A 1 A_WeaponReady(WRF_ALLOWUSER1|WRF_ALLOWUSER2|WRF_ALLOWUSER3|WRF_ALLOWUSER4)
		"####" "#" 0 A_JumpIfInventory("SprintingPlayer",1,"Sprint_Hands")
		Loop
	fire:
		FSTU C 1		
	punch_right:
		TNT1 A 0 A_JumpIfInventory("punch_leftright",1,"punch_left")
		FNSR B 1 {A_PlayWeaponSound("weapons/regpunswing");
			A_Recoil(-2);
			A_GiveInventory("punch_leftright",1);}
		FSNR D 1
		FSNR G 2 A_CustomPunch((96+random(1,12)),1,CPF_DAGGER|CPF_NOTURN,"punch_impact",80)
		FSNR FEDCBA 1
		TNT1 AA 1 A_ReFire("punch_right")
		FSTU DCBA 1
		Goto Idle
	punch_left:
		FNSL B 1 {A_PlayWeaponSound("weapons/regpunswing");
			A_Recoil(-2);
			A_TakeInventory("punch_leftright",1);}
		FSNL BD 1
		FSNL G 2 A_CustomPunch((96+random(1,12)),1,CPF_DAGGER|CPF_NOTURN,"punch_impact",80)
		FSNL FEDCBA 1
		TNT1 AA 1 A_ReFire("punch_right")
		FSTU DCBA 1
		Goto Idle
	altfire:
		FSPS ABCD 1
		FSPS E 1 
		FSPS E 3 A_Refire("megapunchstart")
	quickpowpunch:
		FSPS D 1 offset(-17,46)
		FSPS D 1 offset(-41,61)
		FSPS D 1 offset(-73,96)
		TNT1 A 0 {A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH);
			A_GunFlash("flashreset");
			A_TakeInventory("SuitIsPowered",9);
			A_PlayWeaponSound("sfx/meleeswing");
			A_Recoil(-4);}
		FSPW ABC 1 
		FSPW D 1 A_CustomPunch((164+random(1,32)),1,CPF_DAGGER|CPF_NOTURN,"chargepunch_impact",96)
		FSPW EFGHI 1
		TNT1 A 6
		FSTU DCBA 1
		TNT1 A 0 A_TakeInventory("megapunch_counter",102)
		Goto Idle
	megapunchstart:
		TNT1 A 0 A_JumpIfInventory("PlayerStamina",11,1)
		Goto quickpowpunch
		TNT1 A 0 A_JumpIfInventory("megapunch_counter",1,2)
		TNT1 A 0 {A_GiveInventory("SuitIsPowered",1);
			A_PlaySound("weapons/powpstart",CHAN_AUTO);
			A_PlaySound("weapons/powchrg0",CHAN_WEAPON);
			A_GunFlash("flash0t1");}
		TNT1 A 0 A_JumpIfInventory("megapunch_counter",20,"chrgpnch_l1")
		TNT1 A 0 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH|WRF_ALLOWRELOAD|WRF_ALLOWZOOM)
		FSPS E 2 A_GiveInventory("megapunch_counter",2)
		TNT1 A 0 A_Refire("megapunchstart")
		Goto quickpowpunch
	flash0t1:
		FCP1 ABCDEFGHIJKLMNOPQRST 1 bright
		stop
	chrgpnch_l1:
		TNT1 A 0 A_JumpIfInventory("PlayerStamina",11,1)
		Goto PowPunch_lvl1
		TNT1 A 0 A_JumpIfInventory("megapunch_counter",30,"chrgpnch_l1b")
		TNT1 A 0 A_JumpIfInventory("megapunch_counter",21,2)
		TNT1 A 0 {A_GunFlash("flash1t2");
			A_PlaySound("weapons/powchrg1",CHAN_WEAPON);
			A_TakeInventory("PlayerStamina",20);}
		TNT1 A 0 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH|WRF_ALLOWRELOAD|WRF_ALLOWZOOM)
		FSPS E 2 offset(1,31) A_GiveInventory("megapunch_counter",2)
		TNT1 A 0 A_Refire("chrgpnch_l1")
		Goto PowPunch_lvl1
	chrgpnch_l1b:
		TNT1 A 0 A_JumpIfInventory("megapunch_counter",40,"chrgpnch_l2")
		TNT1 A 0 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH|WRF_ALLOWRELOAD|WRF_ALLOWZOOM)
		FSPS E 2 offset(2,30) A_GiveInventory("megapunch_counter",2)
		TNT1 A 0 A_Refire("chrgpnch_l1b")
		Goto PowPunch_lvl1
	flash1t2:
		FCP2 ABCDEFGHIJKLMNOPQRST 1 bright
		stop
	chrgpnch_l2:
		TNT1 A 0 A_JumpIfInventory("PlayerStamina",11,1)
		Goto PowPunch_lvl2
		TNT1 A 0 A_JumpIfInventory("megapunch_counter",50,"chrgpnch_l2b")
		TNT1 A 0 A_JumpIfInventory("megapunch_counter",41,2)
		TNT1 A 0 {A_GunFlash("flash2t3");
			A_PlaySound("weapons/powchrg2",CHAN_WEAPON);
			A_TakeInventory("PlayerStamina",20);}
		TNT1 A 0 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH|WRF_ALLOWRELOAD|WRF_ALLOWZOOM)
		FSPS E 2 offset(3,29) A_GiveInventory("megapunch_counter",2)
		TNT1 A 0 A_Refire("chrgpnch_l2")
		Goto PowPunch_lvl2
	chrgpnch_l2b:
		TNT1 A 0 A_JumpIfInventory("megapunch_counter",60,"chrgpnch_l3")
		TNT1 A 0 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH|WRF_ALLOWRELOAD|WRF_ALLOWZOOM)
		FSPS E 2 offset(4,28) A_GiveInventory("megapunch_counter",2)
		TNT1 A 0 A_Refire("chrgpnch_l2b")
		Goto PowPunch_lvl2
	flash2t3:
		FCP3 ABCDEFGHIJKLMNOPQRST 1 bright
		stop
	chrgpnch_l3:
		TNT1 A 0 A_JumpIfInventory("PlayerStamina",11,1)
		Goto PowPunch_lvl3
		TNT1 A 0 A_JumpIfInventory("megapunch_counter",70,"chrgpnch_l3b")
		TNT1 A 0 A_JumpIfInventory("megapunch_counter",61,2)
		TNT1 A 0 {A_GunFlash("flash3tMax");
			A_PlaySound("weapons/powchrg3",CHAN_WEAPON);
			A_TakeInventory("PlayerStamina",20);}
		TNT1 A 0 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH|WRF_ALLOWRELOAD|WRF_ALLOWZOOM)
		FSPS E 2 offset(5,27) A_GiveInventory("megapunch_counter",2)
		TNT1 A 0 A_Refire("chrgpnch_l3")
		Goto PowPunch_lvl3
	chrgpnch_l3b:
		TNT1 A 0 A_JumpIfInventory("megapunch_counter",80,"chrgpnch_max")
		TNT1 A 0 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH|WRF_ALLOWRELOAD|WRF_ALLOWZOOM)
		FSPS E 2 offset(6,26) A_GiveInventory("megapunch_counter",2)
		TNT1 A 0 A_Refire("chrgpnch_l3b")
		Goto PowPunch_lvl3
	flash3tMax:
		FCP4 ABCDEFGHIJKLMNOPQRST 1 bright
		stop
	chrgpnch_max:
		//TNT1 A 0 A_JumpIfInventory("megapunch_counter",81,"chrgpnch_max_1")
		TNT1 A 0 A_JumpIfInventory("megapunch_counter",81,"chrgpnch_maxloop")
		FSCM A 3 {A_GiveInventory("megapunch_counter",2);
			A_GunFlash("flashMax");
			A_SetBlend("99 24 0",1.0,20);
			ACS_NamedExecute("Player-ChangeSpeed",0,170,0,0);
			A_GiveInventory("SuitIsOvercharged",1);
			A_GiveInventory("SuitPowerDefense",1);
			A_TakeInventory("PlayerStamina",40);
			ACS_NamedExecute("set_powf-bonusdamage",0,0,0,0);
			A_PlaySound("weapons/powpmax",CHAN_AUTO);
			A_PlaySound("weapons/powchrg5",CHAN_WEAPON);}
		TNT1 A 0 A_Refire("chrgpnch_max")
		Goto PowPunch_MAX
	chrgpnch_maxloop:
		TNT1 A 0 A_PlaySound("weapons/powchrg5",CHAN_WEAPON)
		TNT1 A 0 A_GiveInventory("chargemax_soundcheck")
		FSCM A 2 A_WeaponOffset(random(-3,3),random(29,35))
		/*While charged, dash into an enemy to release punch. I hope this actually works.
		TNT1 A 0 A_JumpIf(GetCVar("MSfiXd_FowardDashChargePunchRelease")==0,"chrgpnch_maxloophold")
		Goto chrgpnch_maxloophold
		TNT1 A 0 A_JumpIfInventory("JustForwardDashed",1,1)
		Goto chrgpnch_maxloophold
		TNT1 A 0 A_JumpIfTargetInLOS("PowPunch_MAX",0,JLOSF_DEADNOJUMP|JLOSF_ALLYNOJUMP|JLOSF_COMBATANTONLY|JLOSF_NOAUTOAIM,120)*/
	 chrgpnch_maxloophold:
		TNT1 A 0 A_Refire(1)
		Goto PowPunch_MAX
		TNT1 A 0 A_JumpIfInventory("chargemax_soundcheck",0,1)
		Goto chrgpnch_maxloop+1
		TNT1 A 0 A_TakeInventory("chargemax_soundcheck")
		Loop
	flashMax:
		FPM1 ABCDEFGHIJKLMNO 1 bright
		FPM2 ABCDEFGHIJKLMNO 1 bright
		loop
	PowPunch_lvl1:
		TNT1 A 0 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		TNT1 A 0 A_GunFlash("mp1g_end")
		FSPS E 1 offset(-21,45)
		FSPS E 1 offset(-42,64)
		FSPS E 1 offset(-66,93)
		TNT1 A 0 {A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH);
			A_PlaySound("weapons/powattack2",CHAN_WEAPON);
			A_Recoil(-5);
			A_SetBlend("0 48 99",0.3,15);
			A_GunFlash("mp1glow");}
		FSPW ABC 1
		FSPW D 1 A_CustomPunch((500+random(1,32)),1,CPF_DAGGER|CPF_NOTURN,"megapunch_lvl1",96)
		Goto PowPunch_end
	mp1glow:
		FPG1 ABCDEFGHI 1 bright
		stop
	mp1g_end:
		FCP1 T 4
		stop
	PowPunch_lvl2:
		TNT1 A 0 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		TNT1 A 0 A_GunFlash("mp2g_end")
		FSPS E 1 offset(-21,45)
		FSPS E 1 offset(-42,64)
		FSPS E 1 offset(-66,93)
		TNT1 A 0 {A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH);
			A_PlaySound("weapons/powattack3",CHAN_WEAPON);
			A_Recoil(-6);
			A_SetBlend("0 48 99",0.4,15);
			A_GunFlash("mp2glow");}
		FSPW ABC 1
		FSPW D 1 A_CustomPunch((1050+random(1,64)),1,CPF_DAGGER|CPF_NOTURN,"megapunch_lvl2",96)
		Goto PowPunch_end
	mp2glow:
		FPG2 ABCDEFGHI 1 bright
		stop
	mp2g_end:
		FCP2 T 4
		stop
	PowPunch_lvl3:
		TNT1 A 0 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		TNT1 A 0 A_GunFlash("mp3g_end")
		FSPS E 1 offset(-21,45)
		FSPS E 1 offset(-42,64)
		FSPS E 1 offset(-66,93)
		TNT1 A 0 {A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH);
			A_PlaySound("weapons/powattack4",CHAN_WEAPON);
			A_Recoil(-7);
			A_SetBlend("0 48 99",0.5,15);
			A_GunFlash("mp3glow");}
		FSPW ABC 1
		FSPW D 1 A_CustomPunch((2100+random(1,128)),1,CPF_DAGGER|CPF_NOTURN,"megapunch_lvl3",96)
		Goto PowPunch_end
	mp3glow:
		FPG3 ABCDEFGHI 1 bright
		stop
	mp3g_end:
		FCP3 T 4
		stop		
	PowPunch_MAX:
		TNT1 A 0 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)//resets offsets
		TNT1 A 0 A_GunFlash("mp5g_end")
		TNT1 A 0 A_PlaySound("weapons/powattack5",CHAN_WEAPON)
		TNT1 A 0 A_SetBlend("99 54 0",0.7,35)
		TNT1 A 0 ACS_NamedExecute("powfist_aeroslam",0,0,0,0)
		TNT1 A 0 A_ChangeFlag("INVULNERABLE",1)
		TNT1 A 0 A_ChangeFlag("REFLECTIVE",1)
		TNT1 A 0 A_SetMass(3000)
		FSCM A 1 offset(-15,44) 
		FSCM A 1 offset(-39,63)
		FSCM A 1 offset(-59,85)
		FSCM A 1 offset(-77,111)
		TNT1 A 0 {A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH);
			A_Recoil(-10);
			A_GunFlash("mp5glow");}
		FMPW ABC 1
		FMPW D 13 A_CustomPunch((4300+random(1,256)+ACS_NamedExecuteWithResult("get_powf-bonusdamage",0,0,0)),1,CPF_DAGGER|CPF_NOTURN,"megapunch_MAX",120)
		FMPW EFGHIJK 1
		TNT1 A 10 {A_TakeInventory("SuitIsOvercharged",1);
			ACS_NamedExecute("Player-ChangeSpeed",0,100,0,0);
			A_TakeInventory("SuitIsPowered",9);}
		TNT1 A 0 {A_JumpIfInventory("PowerInvulnerable",1,2);
			A_ChangeFlag("INVULNERABLE",0);
			A_ChangeFlag("REFLECTIVE",0);
			A_SetMass(500);}
		FSTU DCBA 1
		TNT1 A 0 A_TakeInventory("megapunch_counter",102)		
		FSTI A 3 A_Refire("nullhold")
		Goto Idle
	mp5glow:
		FPGM ABCDEEEEFFFGGHIJKLMNOPQ 1 bright
		stop
	mp5g_end:
		FPM1 A 4 bright
		stop
	PowPunch_end:
		FSPW EFGHI 1
		TNT1 A 20 A_TakeInventory("SuitIsPowered",9)
		FSTU DCBA 1
		TNT1 A 0 A_TakeInventory("megapunch_counter",102)
		FSTI A 3 A_Refire("nullhold")
		Goto Idle
	nullhold:
		FSTI A 1 A_WeaponReady(WRF_NOSECONDARY)
		FSTI A 0 A_Refire("nullhold")
		Goto Idle
	flashreset:
		TNT1 AA 1
		stop
	User1:
		TNT1 A 0 A_JumpIfInventory("grenades",1,1)
		Goto Idle
		FSTU A 1 A_TakeInventory("xhair_switch")
		FSTU BCDE 1
		TNT1 A 0 A_Jump(256,"GrenadeStart")
		Goto GrenadeStart
	GrenadeEnd:
		FSTU E 1 A_TakeInventory("GrenadeHold")
		FSTU DCBA 1
		TNT1 A 0 A_GiveInventory("xhair_switch")
		Goto Idle
	// Health Stim Stuff //
	Stim_HolsterCheck:
		TNT1 A 0 A_JumpIf(GetCVar("MSfiXd_HolsterWeapForItems")==0,"Stimulate")
		FSTU A 1 {A_TakeInventory("xhair_switch",1);
			A_GunFlash("flashreset");}
		FSTU BCDE 1
		TNT1 A 0 A_Jump(256,"Stimulate")
		Goto Stimulate
	StimulateEnd:
		TNT1 A 0 A_JumpIf(GetCVar("MSfiXd_HolsterWeapForItems")==0,"StimulateEnd_Quick")
		FSTU E 1 A_SetCrosshair(10)
		FSTU DCBA 1
		TNT1 A 0 A_GiveInventory("xhair_switch",1)
		Goto Idle
	StimulateEnd_Quick:
		FSTI A 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		TNT1 A 0 A_JumpIf(GetPlayerInput(INPUT_BUTTONS)&(BT_USER2),"StimulateEnd_Quick")
		Goto Idle
	// Shield Booster Stuff //
	Boost_HolsterCheck:
		TNT1 A 0 A_JumpIf(GetCVar("MSfiXd_HolsterWeapForItems")==0,"Boostify")
		FSTU A 1 {A_TakeInventory("xhair_switch",1);
			A_GunFlash("flashreset");}
		FSTU BCDE 1
		TNT1 A 0 A_Jump(256,"Boostify")
		Goto Boostify
	BoostifyEnd:
		TNT1 A 0 A_JumpIf(GetCVar("MSfiXd_HolsterWeapForItems")==0,"BoostifyEnd_Quick")
		FSTU E 1 A_SetCrosshair(10)
		FSTU DCBA 1
		TNT1 A 0 A_GiveInventory("xhair_switch",1)
		Goto Idle
	BoostifyEnd_Quick:
		FSTI A 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		TNT1 A 0 A_JumpIf(GetPlayerInput(INPUT_BUTTONS)&(BT_USER3),"BoostifyEnd_Quick")
		Goto Idle
	// Jetpack Stuff //
	User4:
		TNT1 A 0 A_JumpIfInventory("Jetpack",1,1)
		Goto Idle
		TNT1 A 0 {A_TakeInventory("xhair_switch",1);
			A_GunFlash("flashreset");}
		FSTU ABCDE 1
		TNT1 A 0 A_Jump(256,"JetpackStart")
		Goto JetpackStart
	WeaponJetEnd:
		FSTU E 1 A_SetCrosshair(10)
		FSTU DCB 1
		FSTU A 1 A_GiveInventory("xhair_switch",1)
		Goto Idle}}
ACTOR justforwarddashed:powerweaponlevel2{powerup.duration -3 powerup.color "00 00 00",0.0}
ACTOR chargemax_soundcheck:inventory{Inventory.PickupSound "" inventory.amount 1 inventory.maxamount 5}
actor megapunch_counter:inventory{Inventory.PickupSound "" inventory.maxamount 102}
actor punch_leftright:inventory {Inventory.PickupSound "" inventory.maxamount 1}
actor megapunch_lvl1{
	DamageType ChargeMeleeAttack
	scale 0.5
	alpha 1.0
	renderstyle add
	Obituary "%o got beat down by %k's powered punch."
	activesound " "
	attacksound " "
	seesound " "
	+NOGRAVITY
	+NOBLOCKMAP
	+FLOORCLIP
	+NOTELEPORT
	+PUFFONACTORS
	+FORCEXYBILLBOARD
	+NOINTERACTION
	+PUFFGETSOWNER
	Decal "SmallScorch"
	States{
	Spawn:
		TNT1 A 0 NoDelay A_PlaySound("sfx/powphit2",CHAN_AUTO)
		TNT1 AAAAA 0 A_SpawnItemEx("powpunch_smoke",0,0,0,random(0,1),frandom(-1.5,-0.8),frandom(-1.3,1.3),random(-90,90))
		TNT1 AAAAA 0 A_SpawnItemEx("powpunch_smoke",0,0,0,random(0,1),frandom(0.8,1.5),frandom(-1.3,1.3),random(-90,90))
		TNT1 AAAAA 0 A_SpawnItemEx("powpunch_spark",0,0,0,frandom(0.2,2.2),frandom(-3.0,-1.0),random(2,5),random(-90,90))
		TNT1 AAAAA 0 A_SpawnItemEx("powpunch_spark",0,0,0,frandom(0.2,2.2),frandom(1.0,3.0),random(2,5),random(-90,90))
	SetFrame:
		TNT1 A 0 A_Jump(245,1,2,3,4)
		IPF3 A 0 A_Jump(256,4)
		IPF3 B 0 A_Jump(256,3)
		IPF3 C 0 A_Jump(256,2)
		IPF3 D 0
		"####" "#" 0 A_Jump(256,"FrameSet")
		Goto FrameSet
	FrameSet:
		"####" "#" 2 bright 			
		"####" "#" 2 bright A_FadeOut(0.08)
		stop}}
actor megapunch_lvl2:megapunch_lvl1{
	scale 0.7
	attacksound " "
	Decal "Scorch"
	States{
	Spawn:
		TNT1 A 0 NoDelay A_JumpIf(CountInv("MSfiXd_DegninOre",AAPTR_TARGET)>=1,1)
		Goto Spawn+2
		TNT1 A 0 A_RemoveForceField
		TNT1 A 0 A_PlaySound("sfx/powphit3",CHAN_AUTO)
		TNT1 AA 0 A_SpawnItemEx("powpunch_smoke",0,0,0,0,frandom(-0.5,0.5),frandom(-0.5,0.5),random(-90,90))
		TNT1 AAAAA 0 A_SpawnItemEx("powpunch_smoke",0,0,0,random(0,1),frandom(-2.6,-1.0),frandom(-1.9,1.9),random(-90,90))
		TNT1 AAAAA 0 A_SpawnItemEx("powpunch_smoke",0,0,0,random(0,1),frandom(1.0,2.6),frandom(-1.9,1.9),random(-90,90))
		TNT1 AAAAAAAA 0 A_SpawnItemEx("powpunch_spark",0,0,0,frandom(0.5,2.5),frandom(-3.0,-1.0),random(2,5),random(-90,90))
		TNT1 AAAAAAAA 0 A_SpawnItemEx("powpunch_spark",0,0,0,frandom(0.5,2.5),frandom(1.0,3.0),random(2,5),random(-90,90))
		TNT1 A 0 A_Explode(180,125,0,1)
		TNT1 A 0 A_Quake(2,60,0,200)
		TNT1 A 0 A_SpawnItemEx("powpunch_wave1",0,0,0,0,0,0,0)
		Goto Super::SetFrame
	FrameSet:
		"####" "#" 2 bright 			
		"####" "#" 2 bright A_FadeOut(0.08)
		stop}}
actor megapunch_lvl3:megapunch_lvl1{
	scale 1.0
	attacksound " "
	seesound " "
	-NOEXTREMEDEATH
	Decal "BigScorch"
	States{
	Spawn:
		TNT1 A 0 NoDelay A_JumpIf(CountInv("MSfiXd_DegninOre",AAPTR_TARGET)>=1,1)
		Goto Spawn+2
		TNT1 A 0 A_RemoveForceField
		TNT1 A 0 A_PlaySound("sfx/powphit4",CHAN_AUTO)
		TNT1 AAAAAAAAA 0 A_SpawnItemEx("powpunch_smoke",0,0,0,random(0,2),frandom(-3.6,-1.8),frandom(-2.8,2.8),random(-90,90))
		TNT1 AAAAAAAAA 0 A_SpawnItemEx("powpunch_smoke",0,0,0,random(0,2),frandom(1.8,3.6),frandom(-2.8,2.8),random(-90,90))
		TNT1 A 0 A_SpawnItemEx("powp_smoketrail_spwnr1",0,0,0,0,random(20,30),random(8,11),random(1,80),0)
		TNT1 A 0 A_SpawnItemEx("powp_smoketrail_spwnr1",0,0,0,0,random(20,30),random(8,11),random(101,170),0)
		TNT1 A 0 A_SpawnItemEx("powp_smoketrail_spwnr1",0,0,0,0,random(20,30),random(8,11),random(191,260),0)
		TNT1 A 0 A_SpawnItemEx("powp_smoketrail_spwnr1",0,0,0,0,random(20,30),random(8,11),random(281,350),0)
		TNT1 A 0 A_SpawnItemEx("powp_smoketrail_spwnr1",0,0,0,0,random(20,30),random(-8,-11),random(1,80),0)
		TNT1 A 0 A_SpawnItemEx("powp_smoketrail_spwnr1",0,0,0,0,random(20,30),random(-8,-11),random(101,170),0)
		TNT1 A 0 A_SpawnItemEx("powp_smoketrail_spwnr1",0,0,0,0,random(20,30),random(-8,-11),random(191,260),0)
		TNT1 A 0 A_SpawnItemEx("powp_smoketrail_spwnr1",0,0,0,0,random(20,30),random(-8,-11),random(281,350),0)
		TNT1 A 0 A_SpawnItemEx("powp_smoketrail_spwnr1",0,0,0,0,random(20,30),0,random(1,80),0)
		TNT1 A 0 A_SpawnItemEx("powp_smoketrail_spwnr1",0,0,0,0,random(20,30),0,random(101,170),0)
		TNT1 A 0 A_SpawnItemEx("powp_smoketrail_spwnr1",0,0,0,0,random(20,30),0,random(191,260),0)
		TNT1 A 0 A_SpawnItemEx("powp_smoketrail_spwnr1",0,0,0,0,random(20,30),0,random(281,350),0)
		TNT1 A 0 A_SpawnItemEx("powp_smoketrail_spwnr1",0,0,0,0,0,random(12,16),0,0)
		TNT1 A 0 A_SpawnItemEx("powp_smoketrail_spwnr1",0,0,0,0,0,random(-12,-16),0,0)
		TNT1 AAAAAAAA 0 A_SpawnItemEx("powpunch_spark",0,0,0,frandom(1.2,3.0),frandom(-4.0,-1.4),random(2,6),random(-90,90) )
		TNT1 AAAAAAAA 0 A_SpawnItemEx("powpunch_spark",0,0,0,frandom(1.2,3.0),frandom(1.4,4.0),random(2,6),random(-90,90))
		TNT1 AAAAAAAA 0 A_SpawnItemEx("powpunch_spark",0,0,0,frandom(1.2,3.0),frandom(-4.0,-1.4),random(2,6),random(-90,90) )
		TNT1 AAAAAAAA 0 A_SpawnItemEx("powpunch_spark",0,0,0,frandom(1.2,3.0),frandom(1.4,4.0),random(2,6),random(-90,90))
		TNT1 A 0 A_Explode(360,250,0,1)
		TNT1 A 0 A_Quake(5,60,0,300)
		Goto Super::SetFrame
	FrameSet:
		"####" "#" 2 bright A_SpawnItemEx("powpunch_wave2",0,0,0,0,0,0,0)
		"####" "#" 2 bright {A_FadeOut(0.08);
			A_SpawnItemEx("powpunch_wave2",0,0,0,0,0,0,0);}
		Stop}}
actor megapunch_MAX:megapunch_lvl1 {
	attacksound " "
	seesound " "
	scale 0.25
	-NOEXTREMEDEATH
	Decal "BigScorch"
	States{
	Spawn:
		TNT1 A 0 NoDelay A_JumpIf(CountInv("MSfiXd_DegninOre",AAPTR_TARGET)>=1,1)
		Goto Spawn+2
		TNT1 A 0 A_RemoveForceField
		TNT1 A 0 A_PlaySound("sfx/powphit5",CHAN_AUTO)
		TNT1 A 0 A_SpawnItemEx("powpunchMAX_flash1",0,0,0,0,0,0,0)
		TNT1 AA 0 A_SpawnItemEx("powpunchMAX_flash2",0,0,0,0,0,0,0)
		TNT1 A 0 A_Explode(720,350,1,200)
		TNT1 AA 0 A_SpawnItemEx("megapunch_MAX_Blast",0,0,0,0,0,0,0,SXF_TRANSFERPOINTERS)
		TNT1 A 0 A_Quake(8,60,0,800)
		TNT1 AA 2 A_SpawnItemEx("powpunchMAX_wave1",0,0,0,0,0,0,0)
		TNT1 AAAAAAAAA 0 A_SpawnItemEx("powpunch_smoke2",0,0,0,random(-1,4),frandom(-5.8,-3.8),frandom(-4.5,4.5),random(-90,90))
		TNT1 AAAAAAAAA 0 A_SpawnItemEx("powpunch_smoke2",0,0,0,random(-1,4),frandom(3.8,5.8),frandom(-4.5,4.5),random(-90,90))			
		TNT1 A 0 A_SpawnItemEx("powp_smoketrail_spwnr2",0,0,0,0,random(20,30),random(8,11),random(1,80),0)
		TNT1 A 0 A_SpawnItemEx("powp_smoketrail_spwnr2",0,0,0,0,random(20,30),random(8,11),random(101,170),0)
		TNT1 A 0 A_SpawnItemEx("powp_smoketrail_spwnr2",0,0,0,0,random(20,30),random(8,11),random(191,260),0)
		TNT1 A 0 A_SpawnItemEx("powp_smoketrail_spwnr2",0,0,0,0,random(20,30),random(8,11),random(281,350),0)
		TNT1 A 0 A_SpawnItemEx("powp_smoketrail_spwnr2",0,0,0,0,random(20,30),random(-8,-11),random(1,80),0)
		TNT1 A 0 A_SpawnItemEx("powp_smoketrail_spwnr2",0,0,0,0,random(20,30),random(-8,-11),random(101,170),0)
		TNT1 A 0 A_SpawnItemEx("powp_smoketrail_spwnr2",0,0,0,0,random(20,30),random(-8,-11),random(191,260),0)
		TNT1 A 0 A_SpawnItemEx("powp_smoketrail_spwnr2",0,0,0,0,random(20,30),random(-8,-11),random(281,350),0)
		TNT1 A 0 A_SpawnItemEx("powp_smoketrail_spwnr2",0,0,0,0,random(20,30),0,random(1,80),0)
		TNT1 A 0 A_SpawnItemEx("powp_smoketrail_spwnr2",0,0,0,0,random(20,30),0,random(101,170),0)
		TNT1 A 0 A_SpawnItemEx("powp_smoketrail_spwnr2",0,0,0,0,random(20,30),0,random(191,260),0)
		TNT1 A 0 A_SpawnItemEx("powp_smoketrail_spwnr2",0,0,0,0,random(20,30),0,random(281,350),0)
		TNT1 A 0 A_SpawnItemEx("powp_smoketrail_spwnr2",0,0,0,0,0,random(12,16),0,0)
		TNT1 A 0 A_SpawnItemEx("powp_smoketrail_spwnr2",0,0,0,0,0,random(-12,-16),0,0)
		TNT1 AAAA 2 A_SpawnItemEx("powpunchMAX_wave2",0,0,0,0,0,0,0)
		TNT1 AAAAAAAA 0 A_SpawnItemEx("powpunch_spark",0,0,0,frandom(1.2,3.0),frandom(-5.0,-2.4),random(4,9),random(-90,90) )
		TNT1 AAAAAAAA 0 A_SpawnItemEx("powpunch_spark",0,0,0,frandom(1.2,3.0),frandom(2.4,5.0),random(4,9),random(-90,90))
		TNT1 AAAAAAAA 0 A_SpawnItemEx("powpunch_spark",0,0,0,frandom(1.2,3.0),frandom(-5.0,-2.4),random(4,9),random(-90,90) )
		TNT1 AAAAAAAA 0 A_SpawnItemEx("powpunch_spark",0,0,0,frandom(1.2,3.0),frandom(2.4,5.0),random(4,9),random(-90,90))
		TNT1 A 20
		stop}}
actor megapunch_MAX_Blast{
	radius 2
	height 2
	+NOINTERACTION
	+NOTELEPORT
	+NODAMAGETHRUST
	+NOEXTREMEDEATH
	states{
	spawn:
		TNT1 A 6 NoDelay A_Explode(450+ACS_NamedExecuteWithResult("get_powf-bonusdamage",1,0,0),450,1,250)
		stop}}
actor powpunch_spark{
	radius 2
	height 2
	alpha 1
	scale 0.04
	gravity 0.3
	renderstyle add
	+NOTELEPORT
	+FLOORCLIP
	+FORCEXYBILLBOARD
	bouncetype "doom"
	bouncefactor 0.2
	states{
	spawn:
		SPRK C 25 bright
		SPRK C 1 bright A_FadeOut(0.1)
		Wait}}
actor powpunch_wave1{
	var int user_scale;
	alpha 1.0
	renderstyle add
	+NOINTERACTION
	+FORCEXYBILLBOARD
	states{
	spawn:
		TNT1 A 0 NoDelay A_SetUserVar("user_scale",1)
	scaledown1:
		TNT1 A 0 A_SetScale((user_scale*0.05)) 
		TNT1 A 0 A_JumpIf(user_scale>=30,"LoopEnd") 
		BSW2 A 1 bright A_FadeOut(0.1)
		TNT1 A 0 A_SetUserVar("user_scale",user_scale+1)
		loop
	loopend:
		BSW2 A 1 Bright A_FadeOut(0.1)
		wait}}
actor powpunch_wave2{
	var int user_scale;
	alpha 1.0
	renderstyle add
	+NOINTERACTION
	+FORCEXYBILLBOARD
	states{
	spawn:
		TNT1 A 0 A_SetUserVar("user_scale",1)
	scaledown1:
		TNT1 A 0 A_SetScale((user_scale*0.055)) 
		TNT1 A 0 A_JumpIf(user_scale>=30,"LoopEnd") 
		BSW2 A 1 bright A_FadeOut(0.1)
		TNT1 A 0 A_SetUserVar("user_scale",user_scale+2)
		loop
	loopend:
		BSW2 A 1 Bright A_FadeOut(0.1)
		wait}}
actor powp_smoketrail_spwnr1{
	radius 3
	height 3
	speed 22
	renderstyle add
	scale 0.3
	damage 0
	PROJECTILE
	+THRUACTORS
	states{
		spawn:
			TNT1 AAAAAA 1 NoDelay A_SpawnItemEx("powpunch_smoke",0,0,0,0,frandom(-0.5,0.5),frandom(0.2,0.6))
		death:
			TNT1 A 0
			stop}}
actor powp_smoketrail_spwnr2:powp_smoketrail_spwnr1 {
	states{
	spawn:
		TNT1 AAAAAAAAAAAA 1 A_SpawnItemEx("powpunch_smoke3",0,0,0,0,frandom(-1.5,1.5),frandom(1.2,1.6))
	death:
		TNT1 A 0
		stop}}
actor powpunchMAX_flash1{
	scale 0.8
	alpha 1.0
	renderstyle add
	+NOTELEPORT
	+NOCLIP
	+FLOORCLIP
	+NOGRAVITY
	+FORCEXYBILLBOARD
	+NOINTERACTION
	states{
	spawn:
		BFSH B 2
		BFSH B 2  bright A_FadeOut(0.1)
		stop}}
actor powpunchMAX_flash2{
	scale 1.7
	alpha 1.0
	renderstyle add
	+NOTELEPORT
	+NOCLIP
	+FLOORCLIP
	+NOGRAVITY
	+FORCEXYBILLBOARD
	+NOINTERACTION
	states{
	spawn:
		FSH1 ABCDEFGHIJKLMNOPQRS 1 bright
		stop}}
actor powpunchMAX_wave1{
	var int user_scale;
	alpha 1.0
	renderstyle add
	+NOINTERACTION
	+FORCEXYBILLBOARD
	states{
	spawn:
		TNT1 A 0 NoDelay A_SetUserVar("user_scale",1)
	scaledown1:
		TNT1 A 0 A_SetScale((user_scale*0.08)) 
		TNT1 A 0 A_JumpIf(user_scale>=40,"LoopEnd") 
		BSW2 A 1 bright A_FadeOut(0.06)
		TNT1 A 0 A_SetUserVar("user_scale",user_scale+3)
		loop
	loopend:
		BSW2 A 1 Bright A_FadeOut(0.1)
		wait}}
actor powpunchMAX_wave2{
	var int user_scale;
	alpha 1.0
	renderstyle add
	+NOINTERACTION
	+FORCEXYBILLBOARD
	states{
		spawn:
			TNT1 A 0
			TNT1 A 0 A_SetUserVar("user_scale",1)
		scaledown1:
			TNT1 A 0 A_SetScale((user_scale*0.04)) 
			TNT1 A 0 A_JumpIf(user_scale>=60,"LoopEnd") 
			BSW1 A 1 bright A_FadeOut(0.04)
			TNT1 A 0 A_SetUserVar("user_scale",user_scale+2)
			loop
		loopend:
			BSW1 A 1 Bright A_FadeOut(0.1)
			wait}}
actor mpunch_puffsmoke{
	alpha 0.75
	scale 0.8
	renderstyle add
	+NOGRAVITY
	+NOTELEPORT
	+FORCEXYBILLBOARD
	+NOINTERACTION
	states{
		spawn:
		SMK6 ABCDEFGHIJKLM 1
		SMK6 NOPQRSTUW 1 A_FadeOut(0.08)
		stop}}
actor mpunch_ringsmoke{
	+NOINTERACTION
	states{
	spawn:
		TNT1 A 0 NoDelay A_SpawnItemEx("mpnch_smoke",0,0,0,0,1.35,0,0,0)
		TNT1 A 0 A_SpawnItemEx("mpnch_smoke",0,0,0,0,-1.35,0,0,0) 
		TNT1 A 0 A_SpawnItemEx("mpnch_smoke",0,0,0,0,0,1.35,0,0)
		TNT1 A 0 A_SpawnItemEx("mpnch_smoke",0,0,0,0,0,-1.35,0,0) 
		TNT1 A 0 A_SpawnItemEx("mpnch_smoke",0,0,0,0,1.0,1.0,0,0)
		TNT1 A 0 A_SpawnItemEx("mpnch_smoke",0,0,0,0,-1.0,-1.0,0,0) 
		TNT1 A 0 A_SpawnItemEx("mpnch_smoke",0,0,0,0,-1.0,1.0,0,0)
		TNT1 A 0 A_SpawnItemEx("mpnch_smoke",0,0,0,0,1.0,-1.0,0,0)
		TNT1 A 0 A_SpawnItemEx("mpnch_smoke",0,0,0,0,1.1,0.6,0,0)
		TNT1 A 0 A_SpawnItemEx("mpnch_smoke",0,0,0,0,0.6,1.1,0,0) 
		TNT1 A 0 A_SpawnItemEx("mpnch_smoke",0,0,0,0,-1.1,-0.6,0,0)
		TNT1 A 0 A_SpawnItemEx("mpnch_smoke",0,0,0,0,-0.6,-1.1,0,0) 	
		TNT1 A 0 A_SpawnItemEx("mpnch_smoke",0,0,0,0,-1.1,0.6,0,0)
		TNT1 A 0 A_SpawnItemEx("mpnch_smoke",0,0,0,0,-0.6,1.1,0,0) 			
		TNT1 A 0 A_SpawnItemEx("mpnch_smoke",0,0,0,0,1.1,-0.6,0,0)
		TNT1 A 0 A_SpawnItemEx("mpnch_smoke",0,0,0,0,0.6,-1.1,0,0) 
		stop}}
actor mpunch_ringsmoke2{
	+NOINTERACTION
	states{
	spawn:
		TNT1 A 0 NoDelay A_SpawnItemEx("mpnch_smoke",0,0,0,0,1.85,0,0,0)
		TNT1 A 0 A_SpawnItemEx("mpnch_smoke",0,0,0,0,-1.85,0,0,0) 
		TNT1 A 0 A_SpawnItemEx("mpnch_smoke",0,0,0,0,0,1.85,0,0)
		TNT1 A 0 A_SpawnItemEx("mpnch_smoke",0,0,0,0,0,-1.85,0,0) 
		TNT1 A 0 A_SpawnItemEx("mpnch_smoke",0,0,0,0,1.5,1.5,0,0)
		TNT1 A 0 A_SpawnItemEx("mpnch_smoke",0,0,0,0,-1.5,-1.5,0,0) 
		TNT1 A 0 A_SpawnItemEx("mpnch_smoke",0,0,0,0,-1.5,1.5,0,0)
		TNT1 A 0 A_SpawnItemEx("mpnch_smoke",0,0,0,0,1.5,-1.5,0,0)
		TNT1 A 0 A_SpawnItemEx("mpnch_smoke",0,0,0,0,1.6,1.1,0,0)
		TNT1 A 0 A_SpawnItemEx("mpnch_smoke",0,0,0,0,1.1,1.6,0,0) 
		TNT1 A 0 A_SpawnItemEx("mpnch_smoke",0,0,0,0,-1.6,-1.1,0,0)
		TNT1 A 0 A_SpawnItemEx("mpnch_smoke",0,0,0,0,-1.1,-1.6,0,0) 	
		TNT1 A 0 A_SpawnItemEx("mpnch_smoke",0,0,0,0,-1.6,1.1,0,0)
		TNT1 A 0 A_SpawnItemEx("mpnch_smoke",0,0,0,0,-1.1,1.3,0,0) 			
		TNT1 A 0 A_SpawnItemEx("mpnch_smoke",0,0,0,0,1.6,-1.1,0,0)
		TNT1 A 0 A_SpawnItemEx("mpnch_smoke",0,0,0,0,1.1,-1.6,0,0) 
		stop}}
actor mpunch_shockwave{
	var float user_scale;
	var float user_adder;
	var float user_stop1;
	var float user_stop2;
	renderstyle add
	+NOTELEPORT
	+NOCLIP
	+FLOORCLIP
	+NOGRAVITY
	+FORCEXYBILLBOARD
	+NOINTERACTION
	states{
	spawn:
		TNT1 A 0 NoDelay {A_SetUserVarFloat(user_scale,0.00);
			A_SetUserVarFloat(user_adder,0.04);
			A_SetUserVarFloat(user_stop1,0.27);
			A_SetUserVarFloat(user_stop2,0.38);}
	Scale:
		BSW1 A 1 bright A_SetScale(0.00+user_adder)
		BSW1 A 1 BRIGHT {A_SetScale((user_scale+0.03)+user_adder);
			A_SetUserVarFloat(user_scale,user_scale+0.03);}
		TNT1 A 0 A_JumpIf(user_scale>=user_stop1,1)
		Goto Scale+1
		BSW1 A 1 BRIGHT {A_FadeTo(0.1);
			A_SetScale((user_scale+0.03)+user_adder);
			A_SetUserVarFloat(user_scale,user_scale+0.03);}
		TNT1 A 0 A_JumpIf(user_scale>=user_stop2,"Null")
		Goto Scale+3}}
actor mpunch_shockwave2:mpunch_shockwave{
	states{
	spawn:
		TNT1 A 0 {A_SetUserVarFloat(user_scale,0.00);
			A_SetUserVarFloat(user_adder,0.09);
			A_SetUserVarFloat(user_stop1,0.31);
			A_SetUserVarFloat(user_stop2,0.43);}
		Goto Super::Scale}}
actor mpunch_shockwave3:mpunch_shockwave{
	states{
	spawn:
		TNT1 A 0 NoDelay {A_SetUserVarFloat(user_scale,0.00);
			A_SetUserVarFloat(user_adder,0.15);
			A_SetUserVarFloat(user_stop1,0.38);
			A_SetUserVarFloat(user_stop2,0.49);}
		Goto Super::Scale}}
actor mpnch_smoke{
	alpha 0.8
	scale 0.26
	renderstyle add
	+NOGRAVITY
	+NOTELEPORT
	+FORCEXYBILLBOARD
	+NOINTERACTION
	states{
	spawn:
		TNT1 A 0 NoDelay A_Jump(256,1,2,3,4)
		SMO1 A 0 A_Jump(256,4)
		SMO1 B 0 A_Jump(256,3)
		SMO1 C 0 A_Jump(256,2)
		SMO1 D 0 
		"####" "#" 3 {A_FadeOut(0.06);
			A_ScaleVelocity(0.9);}
		Loop}}