actor CFSFists : weapon replaces Fist
{
	Weapon.SelectionOrder 200
	Weapon.AmmoUse 0
	weapon.ammotype "gauntletHP"
	+noalert
	+cheatnotweapon
	Tag "Fists"
	states
	{
	select:
		TNT1 A 0
		TNT1 A 0 a_playsound ("fists/up",0)
	draw:
		TNT1 A 0
		TNT1 A 0 a_jumpifinventory ("gauntletHP", 1, "gauntletraise")
		FSTI AAAA 0 a_raise
		FSTI A 1 a_raise
		loop
	gauntletraise:
		TNT1 A 0
		FSTI AAAA 0 a_raise
		GFIS A 1 a_raise
		loop
	deselect:
		TNT1 A 0
		TNT1 A 0 a_jumpifhealthlower (1, "deadlower")
		TNT1 A 0 A_PlaySound("fists/down",0)
	holster:
		TNT1 A 0
		TNT1 A 0 a_jumpifinventory ("gauntletHP", 1, "gauntletlower")
		FSTI A 1 a_lower
		TNT1 A 0 a_takeinventory ("secretaction", 99)
		FSTI AA 0 a_lower
		loop
	deadlower:
		TNT1 A 0
		TNT1 A 0
		TNT1 AAAAAAAAAAAAA 0 a_lower
		TNT1 A 1 a_lower
		wait	
	gauntletlower:
		TNT1 A 0
		GFIS A 1 a_lower
		TNT1 A 0 a_takeinventory ("secretaction", 99)
		FSTI AA 0 a_lower
		loop
	Ready:
		TNT1 A 0
		TNT1 A 0 a_jumpifinventory ("gauntletHP", 1, "gauntletready")
		FSTI A 1 A_WeaponReady
		TNT1 A 0 a_jumpifinventory ("secretaction", 1, "ZharkovFist")
		loop
	gauntletready:
		GFIS A 1 A_Weaponready 
		TNT1 A 0 a_jumpifinventory ("secretaction", 1, "ZharkovFist")
		goto ready
	ZharkovReady:
		FIST K 1 a_weaponready (WRF_NOSWITCH|WRF_NOSECONDARY)
		loop
	Rocketpunchready:
		RKTP H 1 a_weaponready (WRF_NOSWITCH|WRF_NOSECONDARY|WRF_NOBOB)
		loop
	fire:
		TNT1 A 0
		TNT1 A 0 a_jumpifinventory ("ZharkyFist", 1, "Throwfist")
		TNT1 A 0 a_jumpifinventory ("gauntletHP", 1, "leftarmorfist")
		TNT1 A 0 a_jumpifinventory ("leftpunch", 1, "righthook")
		TNT1 A 0 a_giveinventory ("leftpunch", 1)
		FSTI BC 1
		TNT1 A 0 a_playsound ("fistswing",0)
		LFST AC 1
		LFST D 1 A_FireCustomMissile("punchattack",0,1,0,0,0)
		LFST E 1 
		LFST FGH 1
		FSTI CB 2
		goto ready
	leftarmorfist:
		TNT1 A 0 a_jumpifinventory ("leftpunch", 1, "rightarmorfist")
		TNT1 A 0 a_giveinventory ("leftpunch", 1)
		GFIS L 1 a_playsound ("fistswing",0)
		GFIS N 1
		GFIS R 1 A_FireCustomMissile ("gauntletpunch")
		GFIS S 2
		GFIS R 1
		GFIS QOML 1
		TNT1 A 1 a_refire
		GFIS CBA 2
		goto ready
	rightarmorfist:
	    GFIS D 1 a_playsound ("fistswing",0)
		GFIS F 1
		GFIS J 1 A_FireCustomMissile ("gauntletpunch")
		GFIS K 2
		GFIS J 1
		GFIS IGFD 1
		TNT1 A 0 a_takeinventory ("leftpunch", 99)
		TNT1 A 1 a_refire
		GFIS CBA 2
		goto ready
	righthook:	
		FSTI BC 1
		TNT1 A 0 a_playsound ("fistswing",0)
		RFST AC 1
		RFST D 1 A_FireCustomMissile("punchattack",0,1,0,0,0)
		RFST E 1 
		RFST FGH 1
		FSTI CB 2
		TNT1 A 0 a_takeinventory ("leftpunch", 99)
		goto ready
	altfire:
		TNT1 A 0
		TNT1 A 0 a_jumpifinventory ("gauntletHP", 1, "gauntletkick")
		FSTI BC 1
		TNT1 A 0 a_playsound ("kick/attack",0)
		TNT1 A 0 a_checkfloor ("kick")
		goto jumpkick
	gauntletkick:
		GFIS ABC 1
		TNT1 A 0 a_playsound ("kick/attack",0)
		TNT1 A 0 a_checkfloor ("kick")
		goto jumpkick		
	kick:	
		LEG2 AB 1
		LEG2 C 1 a_firecustommissile ("KickAttack")
		LEG2 D 1 
		LEG2 D 1 a_jumpifinventory ("kickwall", 1, "Ikickedawall")
		LEG2 EF 1
		LEG2 FEDCBA 1
		TNT1 A 8 a_weaponready (WRF_NOSECONDARY)
		TNT1 A 0 a_jumpifinventory ("gauntletHP", 1, "endgauntletkick")
		FSTI CB 1
		goto ready
	endgauntletkick:
		GFIS CBA 1
		goto ready
	Ikickedawall:
		LEG2 D 2 a_recoil (8)
		LEG2 CBA 1 radius_quake (2,5,0,5,0)
		FSTI CB 1
		TNT1 A 0 a_takeinventory ("kickwall", 99)
		goto ready
	jumpkick:
		TNT1 A 0 a_takeinventory ("kickwall", 99)
		LEG3 AB 2
		LEG3 C 1 a_recoil (-10)
		TNT1 A 0 ThrustThingZ (0, 20, 0, 0)
	kickloop:
		TNT1 A 0 a_jumpifinventory ("kickmonster", 1, "jumpkickhit")
		TNT1 A 0 a_jumpifinventory ("kickwall", 1, "walljump")
		LEG3 C 1 a_firecustommissile ("jumpkicker")
		TNT1 A 0 a_jumpifinventory ("kickmonster", 1, "jumpkickhit")
		TNT1 A 0 a_jumpifinventory ("kickwall", 1, "walljump")
		TNT1 A 0 a_jumpifinventory ("kickmonster", 1, "jumpkickhit")
		TNT1 A 0 a_checkfloor ("endkick")
		loop
	walljump:
		TNT1 A 0 a_takeinventory ("kickwall", 99)
		LEG3 C 1 a_setangle (40+angle)
		LEG3 B 1 a_setangle (36+angle)
		LEG3 A 1 a_setangle (32+angle)
		FSTI C 1 a_setangle (22+angle)
		FSTI B 1 a_setangle (20+angle)
		TNT1 A 0 a_setangle (30+angle)
		TNT1 A 0 a_takeinventory ("kickwall", 99)
		TNT1 A 1 a_stop
		TNT1 A 0 a_recoil (-10)
		TNT1 A 0 thrustthingz (0, 40, 0, 0)
		TNT1 A 0 a_takeinventory ("kickwall", 99)
		goto ready		
	jumpkickhit:
		TNT1 A 0 a_takeinventory ("kickmonster", 99)
		TNT1 A 0 a_stop
		TNT1 A 0 a_recoil (5)
		TNT1 A 0 thrustthingz (0, 35, 0, 1)
		LEG3 CBA 1
		FSTI CB 1
		TNT1 A 0 a_takeinventory ("kickmonster", 99)
		goto ready		
	endkick:
		TNT1 A 0 a_takeinventory ("kickwall", 99)
		TNT1 A 0 a_takeinventory ("kickmonster", 99)
		LEG3 CBA 1
		TNT1 A 0 a_jumpifinventory ("gauntletHP", 1, "endgauntletkick")
		FSTI CB 1
		goto ready
	ZharkovFist:
		TNT1 A 0
		TNT1 A 0
		TNT1 A 0 a_jumpifinventory ("gauntletHP", 1, "rocketpunchprep")
		TNT1 A 0 a_takeinventory ("secretaction", 99)
		FSTI BC 1
		ZFST ABC 1
		FIST ABCDD 2 
		FIST E 2 A_PlaySound("gibimpact") 
		FIST FGHIJK 2
		TNT1 A 0 a_giveinventory ("ZharkyFist",1)
		TNT1 A 0 a_takeinventory ("secretaction", 99)
		goto ZharkovReady
	rocketpunchprep:
		TNT1 A 0
		TNT1 A 0
		GFIS ABC 1
	    GFIS D 1 a_playsound ("fistswing",0)
		GFIS F 1
		GFIS J 1 
		GFIS K 2
		GFIS TUV 1 
		RKTP ABCDE 2
		RKTP FG 2
		RKTP H 1 a_playsound ("rocketpunch/ready",0)
		RKTP H 1 offset (0,33)
		RKTP H 1 offset (0,35)
		RKTP H 1 offset (0,37)
		RKTP H 1 offset (0,34)
		RKTP H 1 offset (0,32)
		TNT1 A 0 a_giveinventory ("ZharkyFist",1)
		TNT1 A 0 a_takeinventory ("secretaction", 99)
		goto rocketpunchready
	Throwfist:
		TNT1 A 0
		TNT1 A 0 a_takeinventory ("ZharkyFist",99)
		TNT1 A 0 a_takeinventory ("secretaction", 99)
		TNT1 A 0 a_jumpifinventory ("gauntletHP", 1, "rocketpunch")
		FIST KLM 2
		TNT1 A 5
		TNT1 A 1
		RFST A 1 
		RFST BC 1
		TNT1 A 0 a_playsound ("ZharkyFist",0)
		RFST D 1 A_FireCustomMissile("Handyman", 0, 1, 0, 0) 
		RFST EFGH 1
		TNT1 A 8
		FSTI CB 1		
		goto ready
	Rocketpunch:
		RKTP I 3 Bright a_firecustomMissile ("rocketfist",0,0,7,3)
		TNT1 A 0 A_PlaySound("gibimpact",0) 
		TNT1 A 0 A_Quake(2, 6, 0, 5)
		TNT1 A 0 a_recoil (15)
		TNT1 A 0 a_takeinventory ("gauntletHP", 10)
		RKTP J 3 bright 
		RKTP K 2
		RKTP L 2
		TNT1 A 2
		goto ready
	}
}

actor punchattack : fastprojectile
{
	Projectile
	speed 64
	damage 8
	obituary "%o got their shit slapped by %k's fists."
	+BLOODSPLATTER
	+thruspecies
	+dontblast
	species "player"
	height 8
	radius 8
	+noblood
	mass 50000
	states
	{
	Spawn:
		TNT1 A 1
		stop
	Death:
		TNT1 A 0
		TNT1 A 1
		TNT1 A 0 A_PlaySound("pipe/wall", CHAN_AUTO)
		TNT1 A 0 A_SpawnDebris("WWStyleBulletSpark")
		TNT1 A 0 radius_quake (1,3,0,8,0)
		TNT1 A 5 
		stop
	Xdeath:
		TNT1 A 0
		TNT1 A 1
		TNT1 A 0 A_PlaySound("punch/hit", CHAN_AUTO)
		TNT1 A 0 radius_quake (2,7,0,8,0)
		TNT1 A 0 a_jumpifintargetinventory ("daibatana", 1, "givecharge")
		TNT1 A 5
		stop
	givecharge:
		TNT1 A 0
		TNT1 A 0
		TNT1 A 0 a_giveinventory ("batcharge", 5, AAPTR_TARGET)
		TNT1 A 5 
		stop
	}
}

actor gauntletpunch : punchattack
{
	damage 20
	states
	{
	Death:
		TNT1 A 0
		TNT1 A 1
		TNT1 A 0 A_PlaySound("pipe/wall", CHAN_AUTO)
		TNT1 A 0 A_SpawnDebris("WWStyleBulletSpark")
		TNT1 A 0 radius_quake (1,3,0,8,0)
		TNT1 A 8 
		stop
	Xdeath:
		TNT1 A 0
		TNT1 A 1
		TNT1 A 0 A_PlaySound("punch/hit", CHAN_AUTO)
		TNT1 A 0 radius_quake (2,7,0,8,0)
		TNT1 A 0 A_takefromtarget ("gauntletHP", 1)   
		TNT1 A 0 a_jumpifintargetinventory ("daibatana", 1, "givecharge")
		TNT1 A 5
		stop
	givecharge:
		TNT1 A 0
		TNT1 A 0
		TNT1 A 0 a_giveinventory ("batcharge", 5, AAPTR_TARGET)
		TNT1 A 5 
		stop
	}
}

actor KickAttack : fastprojectile
{
	Projectile
	projectilekickback 600
	speed 64
	damage 10
	obituary "%o was punted by %k's mighty boot."
	+BLOODSPLATTER
	+thruspecies
	+dontblast
	+forcepain
	species "player"
	height 10
	radius 10
	+noblood
	+NOEXTREMEDEATH
	mass 1000000
	states
	{
	Spawn:
		TNT1 AA 1
		stop
	Death:
		TNT1 A 0
		TNT1 A 1
		TNT1 A 0 A_PlaySound("kick/hit", CHAN_AUTO)
		TNT1 A 0 radius_quake (1,5,0,8,0)
		TNT1 A 1 
		stop
	Xdeath:
		TNT1 A 0
		TNT1 A 1
		TNT1 A 0 A_PlaySound("kick/hit", CHAN_AUTO)
		TNT1 A 0 radius_quake (2,3,0,10,0)
		TNT1 A 1 A_radiusthrust (12000,50,0)
		TNT1 A 0 a_jumpifintargetinventory ("daibatana", 1, "givecharge")
		TNT1 A 4
		stop
	givecharge:
		TNT1 A 0
		TNT1 A 0
		TNT1 A 0 a_giveinventory ("batcharge", 3, AAPTR_TARGET)
		TNT1 A 5 
		stop
	}
}

actor jumpkicker
{
	Projectile
	projectilekickback 600
	speed 48
	damage 12
	obituary "%o was ninja kicked in the face by %k"
	+BLOODSPLATTER
	+thruspecies
	+dontblast
	+forcepain
	+bounceonfloors
	species "player"
	height 10
	radius 10
	+noblood
	+NOEXTREMEDEATH
	mass 1000000
	states
	{
	spawn:
		TNT1 A 0
		TNT1 A 0 A_JumpIf(floorz == z, "break")
		TNT1 A 0 A_JumpIf(ceilingz == z, "break")
		TNT1 A 0 A_JumpIf(floorz == z, "break")
		TNT1 A 0 A_JumpIf(ceilingz == z, "break")
		TNT1 A 1 A_JumpIf(floorz == z, "break")
		TNT1 A 0 A_JumpIf(floorz == z, "break")
		TNT1 A 0 A_JumpIf(ceilingz == z, "break")
		stop
	break:
		TNT1 A 0 a_stop
		stop
	death:
		TNT1 A 0
		TNT1 A 1
		TNT1 A 0 A_PlaySound("kick/hit", CHAN_AUTO)
		TNT1 A 1 a_givetotarget ("kickwall", 1)
		stop
	Xdeath:
		TNT1 A 0
		TNT1 A 1
		TNT1 A 0 A_PlaySound("kick/hit", CHAN_AUTO)
		TNT1 A 0 radius_quake (2,3,0,10,0)
		TNT1 A 0 a_givetotarget ("kickmonster", 1)
		TNT1 A 1 A_radiusthrust (12000,50,0)
		TNT1 A 0 a_jumpifintargetinventory ("daibatana", 1, "givecharge")
		TNT1 A 4
		stop
	givecharge:
		TNT1 A 0
		TNT1 A 0
		TNT1 A 0 a_giveinventory ("batcharge", 3, AAPTR_TARGET)
		TNT1 A 5 
		stop
	}
}
		
Actor Handyman : PlasmaBall
{
   Obituary "%o got rocket-fisted by %k's THROWN HAND."
    -NOGRAVITY
    +LOWGRAVITY
    +EXTREMEDEATH
    damage 25
    DontHurtShooter
    seesound "fist/kickswing"
    deathsound ""
    Renderstyle Normal
    Scale 0.1
    States
    {
    Spawn:
    	HAND A 1
    	Loop
    Death:
		TNT1 A 0
		TNT1 A 1
    	TNT1 A 0 BRIGHT
    	TNT1 A 0 BRIGHT A_Explode(25,100)
    	TNT1 A 0 BRIGHT A_SpawnItem("SileBlud")
    	TNT1 A 0 BRIGHT A_SpawnItem("SileBlud")
    	TNT1 A 0 BRIGHT A_SpawnItem("SileBlud")
    	TNT1 A 0 BRIGHT A_SpawnItem("SileBlud")
    	TNT1 A 0 BRIGHT A_SpawnItem("cs_office")
    	TNT1 A 0 BRIGHT A_SpawnItem("cs_office")
    	TNT1 A 0 BRIGHT A_SpawnItem("cs_office")
    	TNT1 A 0 BRIGHT A_SpawnItem("cs_office")
    	TNT1 A 1 BRIGHT A_PlaySound("gibsplat")
    	Stop
    }
}

actor rocketfist
{
	Projectile
	Radius 5
	Height 5
	Speed 40
	Damage (320)
	+thruspecies
	damagetype "minirocket"
	scale 0.80
	+randomize
	decal scorch
	species "player"
	SeeSound ""
	DeathSound "cygnus/rocketboom"
	States
	{
	Spawn:
		MNS2 A 3 
		TNT1 A 0 a_playsound ("cygnus/rocketspeedup",0,1,0, 0.75)
		TNT1 AAA 0 a_spawnitemex ("Missilefire",Frandom(-10,10),Frandom(-8,8),Frandom(-8,8),Frandom(-200,200)/20.0,Frandom(-60,60)/20.0,Frandom(-40,40)/20.0,0,160)
		MNSS A 1 a_spawnitem ("missileblur")
		TNT1 A 0 A_SpawnItemEx("LavaLazerTrail",frandom(-2,2),frandom(-2,2),frandom(-2,2))
		TNT1 A 0 a_spawnitemex ("Missilefire",Frandom(-5,5),Frandom(-5,5),Frandom(-5,5),Frandom(-50,50)/20.0,Frandom(-50,50)/20.0,Frandom(-50,50)/20.0,0,160)
		Loop
	Death:
		TNT1 A 0
		TNT1 A 0
		TNT1 A 0 radius_quake (3,8,0,20,0)
		TNT1 A 0 a_explode (35,100,1,0,50)
		TNT1 AAAAAA 0 a_spawnitemex ("Missilefire",Frandom(-20,20),Frandom(-18,18),Frandom(-18,18),Frandom(-200,200)/20.0,Frandom(-200,200)/20.0,Frandom(-200,200)/20.0,0,160)
		TNT1 A 0 A_SpawnItemEx("LavaLazerExplosion")
		TNT1 AAAAAAAAAAAAAAAA 0 Bright A_SpawnItemEx("LavaLazerTrail",frandom(-21,21),frandom(-21,21),frandom(-21,21),frandom(-1,1),frandom(-1,1),frandom(0,1))
		TNT1 AAAAAAAAAAAAAAAAAAA 0 Bright A_SpawnItemEx("LavaLazerEmber2",frandom(-16,16),frandom(-16,16),frandom(-16,16),frandom(-1,1),frandom(-1,1),frandom(0,1))
		TNT1 AAAAAAAAAA 0 Bright A_SpawnItemEx("LavaLazerSmoke2",frandom(-4,4),frandom(-4,4),frandom(-4,4),frandom(-1,1),frandom(-1,1),frandom(0,1))
		TNT1 AAAAAAAAAAA 0 Bright A_SpawnItemEx("LavaLazerSmoke",frandom(-4,4),frandom(-4,4),frandom(-4,4),0,0,frandom(1,2))
    	TNT1 A 0 BRIGHT A_SpawnItem("SileBlud")
    	TNT1 A 0 BRIGHT A_SpawnItem("SileBlud")
    	TNT1 A 0 BRIGHT A_SpawnItem("SileBlud")
    	TNT1 A 0 BRIGHT A_SpawnItem("SileBlud")
    	TNT1 A 0 BRIGHT A_SpawnItem("cs_office")
    	TNT1 A 0 BRIGHT A_SpawnItem("cs_office")
    	TNT1 A 0 BRIGHT A_SpawnItem("cs_office")
    	TNT1 A 0 BRIGHT A_SpawnItem("cs_office")
    	TNT1 A 0 BRIGHT A_PlaySound("gibsplat")
		TNT1 A 0 a_radiusthrust (200, 100, 80)
		stop
	}
}


actor fistcheck
{
	+notimefreeze
	projectile
	+FORCEXYBILLBOARD	
	+LOOKALLAROUND
	+THRUSPECIES
	species "player"
	radius 2
	speed 30
	damage (0)
	Scale 1
	states
	{
	spawn:
		TNT1 AA 1 bright
		stop
	xdeath:
		TNT1 A 0
		TNT1 A 0 a_givetotarget ("Ihitathing")
		stop
	death:
	crash:
		TNT1 A 0
		TNT1 A 0
		stop
	}
}


ACTOR SileBlud
{
    +NOGRAVITY
	Renderstyle Translucent
    Health 6
    States
    {
    Spawn:
    	ZBLD A 3
    	ZBLD B 3 A_SpawnDebris("cs_office")
    	ZBLD C 3
        Stop
    }
}

Actor cs_office : PlasmaBall
{
    Renderstyle Translucent
    Reactiontime 3
    Damage 0
    Speed 100
    DontHurtShooter
    +HEXENBOUNCE
    +RIPPER
    Health 6
    -NOGRAVITY
    Scale 0.35
    damage 0
    seesound ""
    deathsound ""
    States
    {
    Spawn:
    	ZBLD ABCBABCBABCB 1
    	TROO H 0 BRIGHT A_COuntDown
    Death:
    	ZBLD ABC 3 BRIGHT
    	TNT1 A 1 A_Jump(5,1)
    	Stop
    	TNT1 A 1
    	Stop
    }
}


actor seekritthing : custominventory
{
	Inventory.Amount 1
	Inventory.MaxAmount 1
	Inventory.InterHubAmount 1
	+INVBAR
	+FLOORCLIP
	+floatbob
	states
	{
	spawn:
		TNT1 A 1
		loop
	use:
		TNT1 A 0 a_giveinventory ("secretaction", 1)
		fail
	}
}


actor Ihitathing : inventory
{inventory.maxamount 1}

actor kickmonster : inventory
{inventory.maxamount 1}

actor kickwall : inventory
{inventory.maxamount 1}

actor secretaction : inventory
{inventory.maxamount 1}

actor ZharkyFist : inventory
{inventory.maxamount 1}

actor leftpunch : inventory
{inventory.maxamount 1}

actor gauntletHP : ammo
{
  Inventory.PickupMessage "gauntlet HP (you shouldn't find this, seriously)"
  Inventory.Amount 1
  Inventory.MaxAmount 999
  Inventory.Icon "BAL1A0"
  Ammo.BackpackAmount 0
  Ammo.BackpackMaxAmount 0
  states
  {
  Spawn:
    BAL1 A -1
    stop
  }
}