ACTOR KnifeDurability : Ammo
{
	Game Doom
	Inventory.PickupMessage "You found some parts to repair your knife!"
	Inventory.Amount 40
	Inventory.MaxAmount 40
	Ammo.BackpackAmount 0
	Ammo.BackpackMaxAmount 40
	Scale 0.7
	Inventory.Icon "AXEDB0"
	States
	{
	Spawn:
		TNT1 A -1
		Stop
	}
}


ACTOR Knivesammo : Ammo
{
	Game Doom
	Inventory.PickupMessage "$GOTKNIFE"
	Inventory.Amount 1
	Inventory.MaxAmount 5
	Ammo.BackpackAmount 1
	Ammo.BackpackMaxAmount 10
	Scale 0.7
	Inventory.Icon "KNFAY0"
	tag"Combat Knife"
	States
	{
	Spawn:
		TNT1 A -1
		Stop
	}
}

ACTOR Knife : BrutalWeapon
{
	tag "Knife"
	Inventory.PickupSound "KNIFEHIT"
	obituary "%o was shanked by %k's combat knife."
	inventory.pickupmessage "$GOTKNIFE"
	Weapon.AmmoType1 "Knivesammo"
	Weapon.SelectionOrder 3600
	+WEAPON.NOALERT
	+WEAPON.AXEBLOOD
	+WEAPON.MELEEWEAPON
	+UNDROPPABLE
	-WEAPON.CHEATNOTWEAPON
	SCALE 0.15
	States
	{
	Spawn:
		BRKN A -1
		stop

	Select: 
		TNT1 A 0  A_Overlay(-10,"FirstPersonLegsStand")
		TNT1 A 0 a_removelight(1)
		TNT1 A 0 A_removelight(2)
		TNT1 A 0 ACS_NAMEDEXECUTE("WEAPONSELECT",0)
		TNT1 A 0 A_Giveinventory("GoSpecial",1)
		TNT1 A 0 A_Takeinventory("Reloading",1)
		TNT1 A 0 A_TakeInventory("TossGrenade",1)
		TNT1 A 0 A_Takeinventory("SwitchFlashlight",1)
		TNT1 A 0 A_Takeinventory("Taunting",1)
		TNT1 A 0 A_TakeInventory("flaretoken", 1)
		TNT1 A 0 A_TakeInventory("StartDualWield", 1)
		TNT1 A 0 A_PlaySound("KNIFEPKP",5)
		TNT1 A 0 A_SetRoll(0)
		TNT1 A 5
		TNT1 A 0 A_Raise
		WAIT
		
	Deselect:
		TNT1 A 0 A_PlaySound("weapons/changing")
		KNFE FEDCBA 1
		TNT1 A 1 A_Takeinventory("KnifeSelected",1)
		TNT1 A 1 A_Takeinventory("FistsSelected",1)
		TNT1 A 0 A_TakeInventory("StartDualWield", 1)
		TNT1 A 0 A_TakeInventory("readythrow", 1)
		TNT1 A 0 A_TakeInventory("throwtoken", 1)
		TNT1 A 0 A_Lower
		Wait
		
	goingtoaction:
		TNT1 A 0 A_PlaySound("weapons/changing")
		KNFE FEDCBA 1
		TNT1 A 0 A_TakeInventory("StartDualWield", 1)
		TNT1 A 0 A_TakeInventory("readythrow", 1)
		TNT1 A 0 A_JumpIfInventory("weargasmask", 1, "wearanimation")
		TNT1 A 0 A_JumpIfInventory("removegasmask", 1, "removeanimation")
		TNT1 A 0 A_JumpIfInventory("battledrugtoken",1,"drugshot")
		TNT1 A 0 A_JumpIfInventory("BANDAGETOKEN",1,"BANDAGE")
		goto repair
		
	Ready:
		TNT1 A 0 A_JumpIfInventory("ExecuteDownedEnemy", 1, "DoExecution")
		//Inspect check
		TNT1 A 0 a_jumpif(GetCVAR("weaponinspect") == 1,2)
		TNT1 A 0 A_JumpIfInventory("neverfoundknife",1,"Inspect")
		//
		TNT1 A 0 A_JumpIfInventory("GoFatality",1,"Steady")
	Ready3:
		TNT1 A 0 A_JumpIfInventory("ExecuteDownedEnemy", 1, "DoExecution")
		TNT1 A 0 A_TakeInventory("StartDualWield", 1)
		TNT1 A 0 A_TakeInventory("readythrow", 1)
		TNT1 A 0 A_JumpIfInventory("KnifeDurability",1, 2)
		goto broken
		TNT1 A 0
		TNT1 A 0 A_JumpIfInventory("KnivesAmmo",1, 2)
		goto broken
	SelectAnimation:
		TNT1 A 0
		KNFE ABCDEF 1
		TNT1 A 0 a_STOPSOUND(5)
		Goto Ready2

	Ready2:
		TNT1 A 0 //A_GunFlash
	ReadyIdle:
		TNT1 A 0 A_JumpIfInventory("KnifeDurability",1, 3)
		TNT1 A 0 A_log("A knife has broken")
		TNT1 A 0 { A_FireProjectile("BrokenKnife",random(-8,8),0,random(-3,-3),random(-1,-4),FPF_NOAUTOAIM); A_FireProjectile("BrokenKnife2",random(0,360),0,random(-3,-3),random(-1,-4),FPF_NOAUTOAIM);  A_FireProjectile("BrokenKnife3",random(0,360),0,random(-3,-3),random(-1,-4),FPF_NOAUTOAIM); }
		goto broken
		TNT1 A 0
		TNT1 A 0 A_JumpIfInventory("KnivesAmmo",1, 2)
		goto broken
		TNT1 A 0
		KNFE F 0 A_JumpIfInventory("readythrow", 1, "Throwready")
		KNFE F 0 A_JumpIfInventory("Kicking",1,"dokickknife")
		KNFE F 0 A_JumpIfInventory("throwtoken",1,"DUALWIELD")
		KNFE F 0 A_JumpIfInventory("STARTDUALWIELD",1,"DUALWIELD")
		KNFE F 1 A_WeaponReadyLit
		Loop

//DUAL COMBO
	Reload: 
		PIST F 0 A_JumpIfInventory("REPAIRMODE",1,"KITREPAIR")
	
		TNT1 A 0 A_JumpIfInventory("readythrow", 1, "ThrowReady")
		TNT1 A 0 A_JumpIfInventory("issurvivalistclass", 1, 2)
		TNT1 A 0 A_print("Only the Survivalist class is able to perform this action.")
		Goto Ready3
		TNT1 A 0 A_JumpIfInventory("knivesammo", 2, 2)
		TNT1 A 0 A_print("You need at least two knives to perform this action.")
		GOTO ready3
		KNFI A 0 A_JumpIfInventory("UsedStamina", 1400, 2)
		TNT1 A 0 a_jump(256,2)
		KNFI A 0 A_PlaySound("Tired", 2)
		goto fire

		//preparation
		TNT1 A 0 A_OVERLAY(3,"LEFTPREP")
		KNFI ABC 1 
		TNT1 A 0 A_PlaySound("KNIFETH1",1)
		KNFI DEFGHIJKLLLM 1
		KNFI M 1 OFFSET(0,42)
		KNFI M 1 OFFSET(0,54)
		TNT1 A 1 OFFSET(0,0)
		
		// stabs flurry
		TNT1 A 0 a_recoil(-6)
		TNT1 A 0 A_PlaySound("KNIFETH1",1)
		KNFS STU 1 a_SETPITCH(PITCH+2)
		TNT1 A 0 A_JumpIfInventory("isdoomguy", 1, 2)
		KNFS K 0 A_Giveinventory("UsedStamina", 16)
		TNT1 A 0 A_JumpIfInventory("Powerstrength2",1,2)
		TNT1 A 0 A_jump(256,2)
		
		TNT1 A 0 A_CustomPunch(Random(75,80),1,0,"berserkthrust",69)
		TNT1 A 0 A_CustomPunch(Random(35,40),1,0,"knifethrust",69)
		TNT1 A 0 A_Firecustommissile("knifehitscan",0,0,0,0)
		
		KNFS VW 1 a_SETPITCH(PITCH+2)
		KNFS XYZ 1 a_SETPITCH(PITCH-2)
		TNT1 AA 1 a_SETPITCH(PITCH-2)
		
		TNT1 A 0 A_JumpIfInventory("KnifeDurability",1, 3)
		TNT1 A 0 A_log("A knife has broken")
		TNT1 A 0 { A_FireProjectile("BrokenKnife",random(-8,8),0,random(-3,-3),random(-1,-4),FPF_NOAUTOAIM); A_FireProjectile("BrokenKnife2",random(0,360),0,random(-3,-3),random(-1,-4),FPF_NOAUTOAIM);  A_FireProjectile("BrokenKnife3",random(0,360),0,random(-3,-3),random(-1,-4),FPF_NOAUTOAIM); }
		goto broken
		
		//
		TNT1 A 0 {a_overlayflags(1, pspf_flip, 1); a_overlayflags(1, pspf_mirror, 1);}
		TNT1 A 0 A_PlaySound("KNIFETH1",1)
		KNFS STU 1 a_SETPITCH(PITCH+2)
		TNT1 A 0 A_JumpIfInventory("isdoomguy", 1, 2)
		KNFS K 0 A_Giveinventory("UsedStamina", 16)
		TNT1 A 0 A_JumpIfInventory("Powerstrength2",1,2)
		TNT1 A 0 A_jump(256,2)
		
		TNT1 A 0 A_CustomPunch(Random(75,80),1,0,"berserkthrust",69)
		TNT1 A 0 A_CustomPunch(Random(35,40),1,0,"knifethrust",69)
		TNT1 A 0 A_Firecustommissile("knifehitscan",0,0,0,0)
		KNFS VW 1 a_SETPITCH(PITCH+2)
		KNFS XYZ 1 a_SETPITCH(PITCH-2)
		TNT1 AA 1 a_SETPITCH(PITCH-2)
		TNT1 A 0 {a_overlayflags(1, pspf_flip, 0); a_overlayflags(1, pspf_mirror, 0);}	
		
		TNT1 A 0 A_JumpIfInventory("KnifeDurability",1, 3)
		TNT1 A 0 A_log("A knife has broken")
		TNT1 A 0 { A_FireProjectile("BrokenKnife",random(-8,8),0,random(-3,-3),random(-1,-4),FPF_NOAUTOAIM); A_FireProjectile("BrokenKnife2",random(0,360),0,random(-3,-3),random(-1,-4),FPF_NOAUTOAIM);  A_FireProjectile("BrokenKnife3",random(0,360),0,random(-3,-3),random(-1,-4),FPF_NOAUTOAIM); }
		goto broken
		
		//
		TNT1 A 0 A_PlaySound("KNIFETH1",1)
		KNFS STU 1 a_SETPITCH(PITCH+2)
		TNT1 A 0 A_JumpIfInventory("isdoomguy", 1, 2)
		KNFS K 0 A_Giveinventory("UsedStamina", 16)
		TNT1 A 0 A_JumpIfInventory("Powerstrength2",1,2)
		TNT1 A 0 A_jump(256,2)
		
		TNT1 A 0 A_CustomPunch(Random(75,80),1,0,"berserkthrust",69)
		TNT1 A 0 A_CustomPunch(Random(35,40),1,0,"knifethrust",69)
		TNT1 A 0 A_Firecustommissile("knifehitscan",0,0,0,0)
		KNFS VW 1 a_SETPITCH(PITCH+2)
		KNFS XYZ 1 a_SETPITCH(PITCH-2)
		TNT1 AA 1 a_SETPITCH(PITCH-2)
		
		TNT1 A 0 A_JumpIfInventory("KnifeDurability",1, 3)
		TNT1 A 0 A_log("A knife has broken")
		TNT1 A 0 { A_FireProjectile("BrokenKnife",random(-8,8),0,random(-3,-3),random(-1,-4),FPF_NOAUTOAIM); A_FireProjectile("BrokenKnife2",random(0,360),0,random(-3,-3),random(-1,-4),FPF_NOAUTOAIM);  A_FireProjectile("BrokenKnife3",random(0,360),0,random(-3,-3),random(-1,-4),FPF_NOAUTOAIM); }
		goto broken
		
		// two cuts
		TNT1 A 0 a_recoil(-6)
		TNT1 A 0 A_OVERLAY(3,"LEFTslash")
		KNFR A 0 A_PlaySound("knife/slash",1,1.0)
		KNFR ABCD 1 a_setroll(roll-1.5)
		TNT1 A 0 A_JumpIfInventory("isdoomguy", 1, 2)
		KNFS K 0 A_Giveinventory("UsedStamina", 12)
		
		TNT1 A 0 A_JumpIfInventory("Powerstrength2",1,2)
		TNT1 A 0 A_jump(256,2)
		TNT1 A 0 A_CustomPunch(Random(75,80),1,0,"berserkslash",69)
		TNT1 A 0 A_CustomPunch(Random(35,40),1,0,"knifePuff",69)
		
		TNT1 A 0 A_Firecustommissile("knifehitscan",0,0,0,0)
		KNFR EFG 1 a_setroll(roll+1.5)
		TNT1 A 2 a_setroll(rolL+1.5)
		
		TNT1 A 0 A_JumpIfInventory("KnifeDurability",1, 3)
		TNT1 A 0 A_log("A knife has broken")
		TNT1 A 0 { A_FireProjectile("BrokenKnife",random(-8,8),0,random(-3,-3),random(-1,-4),FPF_NOAUTOAIM); A_FireProjectile("BrokenKnife2",random(0,360),0,random(-3,-3),random(-1,-4),FPF_NOAUTOAIM);  A_FireProjectile("BrokenKnife3",random(0,360),0,random(-3,-3),random(-1,-4),FPF_NOAUTOAIM); }
		goto broken
		//
		TNT1 A 0 {a_overlayflags(1, pspf_flip, 1); a_overlayflags(1, pspf_mirror, 1);}
		TNT1 A 0 A_OVERLAY(3,"LEFTslash")
		KNFR A 0 A_PlaySound("knife/slash",1,1.0)
		KNFR ABCD 1 a_setroll(roll-1.5)
		TNT1 A 0 A_JumpIfInventory("isdoomguy", 1, 2)
		KNFS K 0 A_Giveinventory("UsedStamina", 12)
		
		TNT1 A 0 A_JumpIfInventory("Powerstrength2",1,2)
		TNT1 A 0 A_jump(256,2)
		TNT1 A 0 A_CustomPunch(Random(75,80),1,0,"berserkslash",69)
		TNT1 A 0 A_CustomPunch(Random(35,40),1,0,"knifePuff",69)
		
		TNT1 A 0 A_Firecustommissile("knifehitscan",0,0,0,0)
		KNFR EFG 1 a_setroll(roll+1.5)
		TNT1 A 2 a_setroll(rolL+1.5)
		TNT1 A 0 {a_overlayflags(1, pspf_flip, 0); a_overlayflags(1, pspf_mirror, 0);}	
		
		TNT1 A 0 A_JumpIfInventory("KnifeDurability",1, 3)
		TNT1 A 0 A_log("A knife has broken")
		TNT1 A 0 { A_FireProjectile("BrokenKnife",random(-8,8),0,random(-3,-3),random(-1,-4),FPF_NOAUTOAIM); A_FireProjectile("BrokenKnife2",random(0,360),0,random(-3,-3),random(-1,-4),FPF_NOAUTOAIM);  A_FireProjectile("BrokenKnife3",random(0,360),0,random(-3,-3),random(-1,-4),FPF_NOAUTOAIM); }
		goto broken
		
		// double hook
		TNT1 A 0 a_recoil(-6)
		TNT1 A 0 A_OVERLAY(3,"LEFTHOOK")
		KNFL ABCD 2 a_setpitch(pitch-1)
		KNFR A 0 A_PlaySound("knife/slash",1,1.0)
		KNFL EEF 2 a_setpitch(pitch+2)
		TNT1 A 0 A_JumpIfInventory("isdoomguy", 1, 2)
		KNFS K 0 A_Giveinventory("UsedStamina", 40)
		
		TNT1 A 0 A_JumpIfInventory("Powerstrength2",1,2)
		TNT1 A 0 A_jump(256,4)
		TNT1 AAA 0 A_CustomPunch(Random(75,80),1,0,"berserkslash",69)
		TNT1 AAA 0 A_CustomPunch(Random(35,40),1,0,"knifePuff",69)
		TNT1 AA 0 A_Firecustommissile("knifehitscan",0,0,0,0)
		KNFL GHIJ 1 a_setpitch(pitch+2)
		TNT1 A 5 a_setpitch(pitch-4)
		
		TNT1 A 0 A_JumpIfInventory("KnifeDurability",1, 3)
		TNT1 A 0 A_log("A knife has broken")
		TNT1 A 0 { A_FireProjectile("BrokenKnife",random(-8,8),0,random(-3,-3),random(-1,-4),FPF_NOAUTOAIM); A_FireProjectile("BrokenKnife2",random(0,360),0,random(-3,-3),random(-1,-4),FPF_NOAUTOAIM);  A_FireProjectile("BrokenKnife3",random(0,360),0,random(-3,-3),random(-1,-4),FPF_NOAUTOAIM); }
		goto broken
		
		// double thrust
		TNT1 A 0 A_RECOIL(-10)
		TNT1 A 0 A_OVERLAY(3,"LEFTsTAB")
		TNT1 A 0 A_PlaySound("KNIFETH1",1)
		KNFS STU 2 a_SETPITCH(PITCH+2)
		TNT1 A 0 A_JumpIfInventory("isdoomguy", 1, 2)
		KNFS K 0 A_Giveinventory("UsedStamina", 30)
		
		TNT1 A 0 A_JumpIfInventory("Powerstrength2",1,2)
		TNT1 A 0 A_jump(256,3)
		TNT1 AA 0 A_CustomPunch(Random(75,80),1,0,"berserkthrust",69)
		TNT1 AA 0 A_CustomPunch(Random(35,40),1,0,"knifethrust",69)
		TNT1 A 0 A_Firecustommissile("knifehitscan",0,0,0,0)
		
		KNFS U 1
		TNT1 A 0 A_FireCustomMissile("KickAttack", 0, 0, 0, -7)
		KNFS UUUVVWXYZ 2 a_SETPITCH(PITCH-0.5)
		
		TNT1 A 0 A_JumpIfInventory("KnifeDurability",1, 3)
		TNT1 A 0 A_log("A knife has broken")
		TNT1 A 0 { A_FireProjectile("BrokenKnife",random(-8,8),0,random(-3,-3),random(-1,-4),FPF_NOAUTOAIM); A_FireProjectile("BrokenKnife2",random(0,360),0,random(-3,-3),random(-1,-4),FPF_NOAUTOAIM);  A_FireProjectile("BrokenKnife3",random(0,360),0,random(-3,-3),random(-1,-4),FPF_NOAUTOAIM); }
		goto broken
		
		TNT1 A 17	
		goto Ready
		
		
	LeftPrep:
		TNT1 A 0 {a_overlayflags(1, pspf_flip, 1); a_overlayflags(1, pspf_mirror, 1);}
		KNFI AB 1 
		TNT1 A 0 A_startSound("KNIFETH1",12)
		KNFI C 1
		KNFI DEFGHIJKLLLM 1
		KNFI M 1 OFFSET(0,42)
		KNFI M 1 OFFSET(0,54)
		TNT1 A 1 OFFSET(0,0)
		TNT1 A 0 {a_overlayflags(1, pspf_flip, 0); a_overlayflags(1, pspf_mirror, 0);}	
		stop
		
		
	LeftHook:
		TNT1 A 0 {a_overlayflags(1, pspf_flip, 1); a_overlayflags(1, pspf_mirror, 1);}
		KNFL ABCD 2 
		KNFL EEF 2 
		KNFL GHIJ 1 
		TNT1 A 0 {a_overlayflags(1, pspf_flip, 0); a_overlayflags(1, pspf_mirror, 0);}	
		stop
		
	LeftStab:
		TNT1 A 0 {a_overlayflags(1, pspf_flip, 1); a_overlayflags(1, pspf_mirror, 1);}
		TNT1 A 0 A_PlaySound("KNIFETH1",1)
		KNFS STU 2 
		TNT1 A 0 A_JumpIfInventory("isdoomguy", 1, 2)
		KNFS K 0 A_Giveinventory("UsedStamina", 30)
		TNT1 A 0 A_CustomPunch(Random(100,120),1,0,"knifethrust",69)
		TNT1 A 0 A_Firecustommissile("knifehitscan",0,0,0,0)
		KNFS U 1
		TNT1 A 0 A_FireCustomMissile("KickAttack", 0, 0, 0, -7)
		KNFS UUUVVWXYZ 2
		TNT1 A 0 {a_overlayflags(1, pspf_flip, 0); a_overlayflags(1, pspf_mirror, 0);}	
		stop
		
		

// --------------------------------------------------------------------------
//
//	Slash Attacks
//
// --------------------------------------------------------------------------

	Fire:
	///FIRST SLASH
		
		TNT1 A 0 A_JumpIfInventory("KnifeDurability",1, 3)
		TNT1 A 0 A_log("A knife has broken")
		TNT1 A 0 { A_FireProjectile("BrokenKnife",random(-8,8),0,random(-3,-3),random(-1,-4),FPF_NOAUTOAIM); A_FireProjectile("BrokenKnife2",random(0,360),0,random(-3,-3),random(-1,-4),FPF_NOAUTOAIM);  A_FireProjectile("BrokenKnife3",random(0,360),0,random(-3,-3),random(-1,-4),FPF_NOAUTOAIM); }
		goto broken
		TNT1 A 0 A_clearoverlays(3,3)
		TNT1 A 0 A_JumpIfInventory("READYTHROW",1,"THROWKNIFE")
		TNT1 A 0 A_JumpIf(GetPlayerInput(INPUT_BUTTONS) & BT_CROUCH, "CHOOK")
		NULL A 0 A_JumpIf (momZ > 0, "jumpthrust")
		NULL A 0 A_JumpIf (momZ < 0, "jumpthrust")
	
	SLASHNORMAL:
		KNFR A 0 A_PlaySound("knife/slash",1,1.0)
		KNFR ABCD 1 a_setroll(roll-1.5)
		TNT1 A 0 A_JumpIfInventory("isdoomguy", 1, 2)
		KNFS K 0 A_Giveinventory("UsedStamina", 3)
		TNT1 A 0 A_JumpIfInventory("Powerstrength2",1,"SLASHBerserk")
		TNT1 A 0 A_CustomPunch(Random(30,30),1,0,"knifePuff",69)
		TNT1 A 0 A_Firecustommissile("knifehitscan",0,0,0,0)
		KNFR EFG 1 a_setroll(roll+1.5)
		TNT1 A 2 a_setroll(rolL+1.5)
		KNFD A 0 A_Refire	
		GOTO slashcheck
	
	SLASHBERSERK:
		TNT1 A 0 A_CustomPunch(Random(70,70),1,0,"berserkslash",69)
		TNT1 A 0 A_Firecustommissile("knifehitscan",0,0,0,0)
		TNT1 A 0 A_FireCustomMissile("KnifeDOT1",0,0,0,0)
		KNFR EFG 1  a_setroll(roll+1.5)
		TNT1 A 2  a_setroll(roll+1.5)
		KNFD A 0 A_Refire	
		GOTO slashcheck
	
		
	HOLD:
	TNT1 A 1 A_JumpIf(GetPlayerInput(INPUT_BUTTONS) & BT_ALTATTACK, "Punch")
	PONG B 0 A_Refire
	gotO SLASHCHECK
	
	SLASHCHECK:
	TNT1 A 0 A_JumpIfInventory("KnifeDurability",1, 3)
	TNT1 A 0 A_log("A knife has broken")
	TNT1 A 0 { A_FireProjectile("BrokenKnife",random(-8,8),0,random(-3,-3),random(-1,-4),FPF_NOAUTOAIM); A_FireProjectile("BrokenKnife2",random(0,360),0,random(-3,-3),random(-1,-4),FPF_NOAUTOAIM);  A_FireProjectile("BrokenKnife3",random(0,360),0,random(-3,-3),random(-1,-4),FPF_NOAUTOAIM); }
	goto broken
	TNT1 A 2
	TNT1 AAAAAAAAAA 1 A_JumpIf(GetPlayerInput(INPUT_BUTTONS) & BT_ATTACK, "NEXTATTACK")
	TNT1 A 5
	goto Ready3

	NEXTATTACK:
		TNT1 A 0 A_JumpIfInventory("KnifeDurability",1, 3)
		TNT1 A 0 A_log("A knife has broken")
		TNT1 A 0 { A_FireProjectile("BrokenKnife",random(-8,8),0,random(-3,-3),random(-1,-4),FPF_NOAUTOAIM); A_FireProjectile("BrokenKnife2",random(0,360),0,random(-3,-3),random(-1,-4),FPF_NOAUTOAIM);  A_FireProjectile("BrokenKnife3",random(0,360),0,random(-3,-3),random(-1,-4),FPF_NOAUTOAIM); }
		goto broken
		
		TNT1 A 0 A_JUMP(256, "QUICKHOOK","QUICKSTAB","QUICKSLASH", "SLASHNORMAL")
		
		
///QUICK HOOK
		QUICKHOOK:
		KNFL K 0 A_PlaySound("knife/slash",1,1.0)
		KNFL ABCDEF 1 a_setroll(roll+1.5)
		TNT1 A 0 A_JumpIfInventory("isdoomguy", 1, 2)
		KNFS K 0 A_Giveinventory("UsedStamina", 4)
		TNT1 A 0 A_JumpIfInventory("Powerstrength2",1,"quickhookberserk")
		TNT1 A 0 A_CustomPunch(Random(35,35),1,0,"knifePuff",69)
		TNT1 A 0 A_Firecustommissile("knifehitscan",0,0,0,0)
		KNFL GHIJ 1 a_setroll(roll-1.5)
		TNT1 AA 1 a_setroll(roll-1.5)
		KNFD A 0 A_Refire
		goto SLASHCHECK
		
		QUICKHOOKBERSERK:
		TNT1 A 0 A_CustomPunch(Random(70,80),1,0,"berserkslash",69)
		TNT1 A 0 A_Firecustommissile("knifehitscan",0,0,0,0)
		TNT1 A 0 A_FireCustomMissile("KnifeDOT1",0,0,0,0)
		KNFL GHIJ 1 a_setroll(roll-1.5)
		TNT1 AA 1 a_setroll(roll-1.5)
		KNFD A 0 A_Refire
		goto SLASHCHECK
////

////QUICKSTAB
		QUICKSTAB:
		TNT1 A 0 A_PlaySound("KNIFETH1",1)
		KNFS STU 1 a_SETPITCH(PITCH+2)
		KNFS K 0 A_takeinventory("stabtoken", 1)
		TNT1 A 0 A_JumpIfInventory("isdoomguy", 1, 2)
		KNFS K 0 A_Giveinventory("UsedStamina", 4)
		TNT1 A 0 A_JumpIfInventory("Powerstrength2",1,"quickSTABberserk")
		TNT1 A 0 A_CustomPunch(Random(35,40),1,0,"knifethrust",69)
		TNT1 A 0 A_Firecustommissile("knifehitscan",0,0,0,0)
		KNFS VW 1 a_SETPITCH(PITCH+2)
		KNFS XYZ 1 a_SETPITCH(PITCH-2)
		TNT1 A 0 A_JumpIfInventory("stabtoken", 1, "quickstab")
		TNT1 AA 1 a_SETPITCH(PITCH-2)
		KNFD A 0 A_Refire
		goto SLASHCHECK
		
		QUICKSTABBERSERK:
		TNT1 A 0 A_CustomPunch(Random(75,80),1,0,"berserkthrust",69)
		TNT1 A 0 A_Firecustommissile("knifehitscan",0,0,0,0)
		TNT1 A 0 A_FireCustomMissile("KnifeDOT1",0,0,0,0)
		KNFS VW 1 a_SETPITCH(PITCH+2)
		KNFS XYZ 1 a_SETPITCH(PITCH-2)
		TNT1 A 0 A_JumpIfInventory("stabtoken", 1, "quickstab")
		TNT1 AA 1 a_SETPITCH(PITCH-2)
		KNFD A 0 A_Refire
		goto SLASHCHECK
////


////QUICKSLASH
		QUICKSLASH:
		TNT1 A 0 A_TakeInventory("Slashtoken", 1)
		KNFL K 0 A_PlaySound("knife/slash",1,1.0)
		KNFL KLM 1 a_setroll(roll+2)
		TNT1 A 0 A_JumpIfInventory("isdoomguy", 1, 2)
		KNFS K 0 A_Giveinventory("UsedStamina", 4)
		TNT1 A 0 A_JumpIfInventory("Powerstrength2",1,"quickSLASHberserk")
		TNT1 A 0 A_CustomPunch(Random(30,30),1,0,"knifePuff",69)
		TNT1 A 0 A_Firecustommissile("knifehitscan",0,0,0,0)
		KNFL NOP 1 a_setroll(roll-2)
		TNT1 A 2
		KNFD A 0 A_Refire
		goto SLASHCHECK
		
		QUICKSLASHBERSERK:
		TNT1 A 0 A_CustomPunch(Random(70,70),1,0,"berserkslash",69)
		TNT1 A 0 A_Firecustommissile("knifehitscan",0,0,0,0)
		TNT1 A 0 A_FireCustomMissile("KnifeDOT1",0,0,0,0)
		KNFL NOP 1 a_setroll(roll-2)
		TNT1 A 2
		KNFD A 0 A_Refire
		goto SLASHCHECK
////	


////CROUCHED HOOK
		CHOOK:
		KNFL ABCD 2 a_setAngle(angle+2)
		KNFR A 0 A_PlaySound("knife/slash",1,1.0)
		KNFL EEF 2 a_setAngle(angle+2)
		TNT1 A 0 A_JumpIf(GetPlayerInput(INPUT_BUTTONS) & BT_CROUCH, 2)
		GOTO ALTFIRE
		TNT1 A 0 A_JumpIfInventory("isdoomguy", 1, 2)
		KNFS K 0 A_Giveinventory("UsedStamina", 8)
		TNT1 A 0 A_JumpIfInventory("Powerstrength2",1,"CHOOKBERSERK")
		TNT1 A 0 A_CustomPunch(Random(70,70),1,0,"knifeLOWHOOK",69)
		TNT1 A 0 A_Firecustommissile("knifehitscan",0,0,0,0)
		KNFL GHIJ 1 a_setAngle(angle-4)
		goto SLASHCHECK
		
		CHOOKBERSERK:
		TNT1 A 0 A_CustomPunch(Random(140,140),1,0,"knifeLOWHOOK",69)
		TNT1 A 0 A_Firecustommissile("knifehitscan",0,0,0,0)
		TNT1 A 0 A_FireCustomMissile("KnifeDOT1",0,0,0,0)
		KNFL GHIJ 1 a_setAngle(angle-4)
		goto SLASHCHECK
////


////PUNCH COMBO
	Punch:
		TNT1 A 0
		TNT1 A 0 A_JumpIfInventory("isdoomguy", 1, 7)
		TNT1 A 0 A_jumpifinventory("powerstrength2",1,5)
		TNT1 A 0 A_JumpIfInventory("LARGESTAMINA", 1, 2)
		TNT1 A 0 A_JumpIfInventory("UsedStamina", 70, "TIREDKnifePUNCH")
		KNFI A 0 A_JumpIfInventory("UsedStamina", 1400, "TIREDKnifePUNCH")
		TNT1 A 0 A_Giveinventory("UsedStamina",3)
		TNT1 A 0 A_Giveinventory("UsedStamina",5)
		TNT1 A 0 A_PlaySound("*grunt", 5)
		TNT1 AAA 1 A_SetAngle(angle+1)
		PONG BCD 1  A_SetAngle(angle-1)
		TNT1 A 0 A_jumpifinventory("powerstrength2",1,"PowerPunch")
		TNT1 A 0 A_PlaySound("skeleton/swing")
		PONG A 0 A_FireCustomMissile("Stunpunch", 0, 0, 0, 1)
		goto finishpunch
		
		Powerpunch:
		TNT1 A 0 A_PlaySound("weapons/gswing")
		PONG AA 0 A_FireCustomMissile("MeleeStrike1Smash", 0, 0, 0, 1)
		
		Finishpunch:
		TNT1 A 0 A_SetAngle(angle-2)
		TNT1 A 0 A_SetAngle(angle-2)
		TNT1 A 0 A_PlaySound("fstatk", 1)
		TNT1 A 0 A_TakeInventory("Kicking", 1)
		PONG LMN 1 A_SetAngle(angle-2)
		TNT1 AAA 1 
		PONG K 0 A_WeaponReady(WRF_NOPRIMARY)
		TNT1 A 1 A_SetAngle(angle+1)
		TNT1 A 1 
		TNT1 A 0 A_SetAngle(angle+1)
		TNT1 A 1 
		TNT1 A 0 A_SetAngle(angle+1)
		TNT1 A 0 A_JumpIfInventory("Kicking",1,"dokickknife")
		TNT1 A 1 
		TNT1 A 0 A_SetAngle(angle+1)
		TNT1 A 1 
		TNT1 A 0 A_SetAngle(angle+1)
		TNT1 A 1 
		TNT1 A 0 A_SetAngle(angle+1)
		TNT1 A 1 
		TNT1 A 0 A_SetAngle(angle+1)
		TNT1 A 0 A_JumpIfInventory("Kicking",1,"dokickknife")
		TNT1 A 0 A_Giveinventory("stabtoken",3)
		Goto QuickStab
		
		
	TiredKnifePUNCH:
		AXEG A 0 A_STARTSOUND("GRUNT", 22, 0,1.0,0,0.9)
		PONG BBBCCD 1
		TNT1 A 0 A_JumpIfInventory("GoFatality", 1, "Steady")
		TNT1 A 0 A_Giveinventory("Punching",1)
		TNT1 A 0 A_Giveinventory("UsedStamina",5)
		PONG A 0 A_FireCustomMissile("STUNPUNCH", 0, 0, 0, 1)
		TNT1 A 0 A_SetAngle(angle-1)
		TNT1 A 0 A_TakeInventory("Kicking", 1)
		TNT1 A 0 A_PlaySound("fstatk", 1)
		PONG E 2 
		TNT1 A 0 A_SetAngle(angle+1)
		PONG E 1 
		TNT1 A 0 A_JumpIfInventory("GoFatality", 1, "Steady")
		PONG G 1 
		TNT1 A 0 A_JumpIfInventory("Kicking",1,"dokickknife")
		PONG FHIJ 3
		TNT1 A 0 A_JumpIfInventory("Kicking",1,"dokickknife")
		TNT1 A 1 
		TNT1 A 0 A_PlaySound("tired", 1)
		Goto Ready3
////


////SPRINTSTAB

		JUMPTHRUST:
		TNT1 A 0 A_JumpIfInventory("isdoomguy", 1, 5)
		TNT1 A 0 A_JumpIfInventory("LARGESTAMINA", 1, 2)
		TNT1 A 0 A_JumpIfInventory("UsedStamina", 50, "Trip")
		KNFI A 0 A_JumpIfInventory("UsedStamina", 1400, "Trip")
		KNFS K 0 A_Giveinventory("UsedStamina", 70)
		
		SPRINTSTAB:
		TNT1 A 0 A_RECOIL(-15)
		TNT1 A 0 A_PlaySound("KNIFETH1",1)
		KNFS STU 2 a_SETPITCH(PITCH+2)
		TNT1 A 0 A_JumpIfInventory("isdoomguy", 1, 2)
		KNFS K 0 A_Giveinventory("UsedStamina", 10)
		TNT1 A 0 A_JumpIfInventory("Powerstrength2",1,"SPRINTSTABberserk")
		TNT1 A 0 A_CustomPunch(Random(100,100),1,0,"knifethrust",80)
		TNT1 A 0 A_Firecustommissile("knifehitscan",0,0,0,0)
		KNFS U 1
		TNT1 A 0 A_FireCustomMissile("KickAttack", 0, 0, 0, -7)
		KNFS UUUVVWXYZ 2
		goto Ready3
		
		SPRINTSTABBERSERK:
		TNT1 A 0 A_CustomPunch(Random(200,200),1,0,"berserkthrust",80)
		TNT1 A 0 A_Firecustommissile("knifehitscan",0,0,0,0)
		TNT1 A 0 A_FireCustomMissile("KnifeDOT1",0,0,0,0)
		KNFS U 1
	    "####" A 0 A_FireCustomMissile("KickAttack", 0, 0, 0, -7)
        "####" A 0 A_FireCustomMissile("SuperKickAttack", 0, 0, 0, -7)
		KNFS UUUVVWXYZ 2
		goto Ready3
////


////JUMPSTAB
	JumpStab:
	TNT1 A 0 A_JumpIfInventory("LARGESTAMINA", 1, 2)
	TNT1 A 0 A_JumpIfInventory("UsedStamina", 70, "Trip")
	KNFI A 0 A_JumpIfInventory("UsedStamina", 1400, "Trip")

	
	TNT1 A 0 A_JumpIfInventory("Powerstrength2",1, 3)
	TNT1 A 0 A_JumpIfInventory("isdoomguy",1, 3)
	KNFS K 0 A_Giveinventory("UsedStamina", 50)
	KNFS K 0 A_Giveinventory("UsedStamina", 50)
	
	KNFS S 0 A_Giveinventory("KnifeCharge",120)
	KNFE FEDCBA 1 a_SETPITCH(PITCH-2)
	TNT1 A 0 A_RECOIL(-15)
	KNFS ABCDE 1 a_SETPITCH(PITCH+3)
	TNT1 A 0 A_Firecustommissile("knifehitscan",0,0,0,0)
	GOTO ALTATTACK
	
////

// --------------------------------------------------------------------------
//
//	Charged attack
//
// --------------------------------------------------------------------------

	AltFire:
	TNT1 A 0 A_clearoverlays(3,3)
	TNT1 A 0 A_JumpIf(GetPlayerInput(INPUT_BUTTONS) & BT_CROUCH, "CHOOK")
		
		NULL A 0 A_JumpIf (momZ > 0, "JumpStab")
		NULL A 0 A_JumpIf (momZ < 0, "JumpStab")
		TNT1 A 0 A_TakeInventory("readythrow", 1)
		KNFE FEDCBA 1
		TNT1 A 2
		KNFS ABCDE 1
	AltHold:
		TNT1 A 0 A_JumpIfInventory("LARGESTAMINA", 1, 2)
		TNT1 A 0 A_JumpIfInventory("UsedStamina", 70, "altattack")
		KNFI A 0 A_JumpIfInventory("UsedStamina", 1400, "altattack")
		KNFS E 1 A_JumpIfInventory("knifecharge",50,2)
		KNFS K 0 A_Giveinventory("UsedStamina", 1)
		TNT1 A 0 A_JumpIfInventory("knifecharge",120,7)
		TNT1 A 0 A_JumpIfInventory("Powerstrength2",1, 2)
		TNT1 A 0 A_Jump(256,2)
		KNFS S 0 A_Giveinventory("KnifeCharge",120)
		KNFS S 0 A_Giveinventory("KnifeCharge",1)
		TNT1 A 0 A_Refire
		TNT1 A 0 A_Refire
		KNFS E 1 a_weaponoffset(1,1,WOF_ADD)
		KNFS E 1 a_weaponoffset(-1,-1,WOF_ADD)
		TNT1 A 0 A_Refire
		TNT1 A 0 A_Refire
	AltAttack:
		TNT1 A 0 A_PlaySound("KNIFETH1",1)
		KNFS FG 1 A_setroll(roll+3)
		
		TNT1 A 0 A_JumpIfInventory("isdoomguy", 1, 2)
		KNFS K 0 A_Giveinventory("UsedStamina", 10)
		
		TNT1 A 0 A_JumpIfInventory("Powerstrength2",1, "AltBerserk")
		TNT1 A 0 A_CustomPunch(Random(80,85),1,0,"knifethrust",69)
		TNT1 A 0 A_Firecustommissile("knifeALThitscan",0,0,0,0)
		TNT1 A 0 A_JumpIfInventory("KnifeCharge",120,6)
		TNT1 A 0 A_JumpIfInventory("KnifeCharge",50,3)
		TNT1 A 0 A_FireCustomMissile("KnifeDOT1",0,0,0,0)
		TNT1 A 0 A_Jump(256,4)
		TNT1 A 0 A_FireCustomMissile("KnifeDOT2",0,0,0,0)
		TNT1 A 0 A_Jump(256,2)
		TNT1 A 0 A_FireCustomMissile("KnifeDOT3",0,0,0,0)
		KNFS HIJKL 1 A_setroll(roll+3)
		KNFS MNOPQR 1 A_setroll(roll-3)
		TNT1 A 4 A_setroll(roll-3)
		KNFE ABCDEF 1 A_Takeinventory("KnifeCharge",130)
		goto Ready2
		
	AltBerserk:
		TNT1 A 0 A_CustomPunch(Random(160,180),1,0,"berserkthrust",69)
		TNT1 A 0 A_Firecustommissile("knifeALThitscan",0,0,0,0)
		TNT1 A 0 A_FireCustomMissile("KnifeDOTBerserk",0,0,0,0)
		KNFS HIJKL 1 A_setroll(roll+3)
		KNFS MNOPQR 1 A_setroll(roll-3)
		TNT1 A 4 A_setroll(roll-3)
		KNFE ABCDEF 1 A_Takeinventory("KnifeCharge",130)
		goto Ready2

// --------------------------------------------------------------------------
//
//	THROW
//
// --------------------------------------------------------------------------
	DualWield:
		TNT1 A 0 A_TakeInventory("throwtoken", 1)
		TNT1 A 0 A_TakeInventory("StartDualWield", 1)
		KNFP A 0 A_Giveinventory("readythrow",1)
		KNFE FEDCBA 1
		TNT1 A 2
		KNFT ABCDE 1
		goto Throwready
		
	Throwready:
		TNT1 A 0 A_JumpIfInventory("weargasmask", 1, "goingtoaction")
		TNT1 A 0 A_JumpIfInventory("removegasmask", 1, "goingtoaction")
		TNT1 A 0 A_JumpIfInventory("IsRunning",1,"CheckSprint")
		TNT1 A 0 A_JumpIfInventory("BANDAGETOKEN",1,"goingtoaction")
		TNT1 A 0 A_JumpIfInventory("Kicking",1,"dokickknife")
		TNT1 A 0 A_JumpIfInventory("Flaretoken",1,"Tossflare")
		PISA D 0 A_JumpIf(GetPlayerInput(INPUT_BUTTONS) & BT_USER4, "BACKTOMELEE")
		KNFT F 0 A_JumpIf(GetPlayerInput(INPUT_BUTTONS) & BT_USER3, "TOSSGRENADE")
		KNFT E 1 A_weaponready
		TNT1 A 0 A_JumpIfInventory("throwtoken",1,"Backtomelee")
		TNT1 A 0 A_JumpIfInventory("STARTDUALWIELD",1,"Backtomelee")
		loop
	
	Backtomelee:
		TNT1 A 0 A_TakeInventory("StartDualWield", 1)
		TNT1 A 0 A_TakeInventory("readythrow", 1)
		TNT1 A 0 A_TakeInventory("throwtoken", 1)
		TNT1 A 0 a_STARTSOUND("MAGGRAB2", 120,0,0.6)
		KNFT EDCBA 1
		PISA D 0 A_JumpIf(GetPlayerInput(INPUT_BUTTONS) & BT_USER4, "WEAPONCHECK2")
		TNT1 A 2
		KNFE ABCDEF 1
		goto Readyidle
		
	ThrowKnife:
		TNT1 A 0 A_JumpIfInventory("isdoomguy", 1, 5)
		TNT1 A 0 A_JumpifInventory("LARGESTAMINA",1,2)
		TNT1 A 0 A_JumpifInventory("UsedStamina",98,"WimpyThrow")
		TNT1 A 0 A_JumpifInventory("usedstamina", 1998,"WimpyThrow")
		TNT1 A 0 A_Giveinventory("UsedStamina",10)
		KNFT FGH 1 A_setroll(roll-1)
		KNFT I 1
		KNFT JKL 1 A_setroll(roll+1)
		TNT1 A 0 A_TakeInventory("StartDualWield", 1)
		TNT1 A 0 A_TakeInventory("readythrow", 1)
	    KNFI A 0 A_PlaySound("KNIFETH2",1,1.0)
		KNFI A 0 A_JumpIfInventory("powerstrength2", 1, "StrongThrow")
		KNFI A 0 A_FireCustomMissile("ThrownKnife", 0, 0, 0, 0)
		KNFI A 0 A_TakeInventory ("KnifeDurability", 5)
		KNFI A 0 A_TakeInventory ("KnivesAmmo", 1)
		KNFT MNOPQQQQRSTUV 1
		TNT1 A 1
		TNT1 A 0 A_JumpifInventory("KnifeDurability", 1, "Ready3")
		TNT1 A 0
		goto throwbroken
		
	StrongThrow:	
		TNT1 A 0
		KNFI A 0 A_PlaySound("KNIFETH2",1,1.0)
		KNFI A 0 A_FireCustomMissile("ThrownKnifeBerserk", 0, 0, 0, 0)
		KNFI A 0 A_TakeInventory ("KnifeDurability", 8)
		TNT1 A 0 A_TakeInventory("KnivesAmmo", 1)
		KNFT MNOPQQQQRSTUV 1
		TNT1 A 1
		TNT1 A 0 A_JumpifInventory("KnifeDurability", 1, "Ready3")
		TNT1 A 0
		goto throwbroken	
		
	WimpyThrow:	
		TNT1 A 0 A_TakeInventory("StartDualWield", 1)
		TNT1 A 0 A_TakeInventory("readythrow", 1)
		KNFT FFFFFFGHI 1 A_setroll(roll-1)
		KNFT JKL 1 A_setroll(roll+1)
		KNFI A 0 A_PlaySound("KNIFETH2",1,1.0)
		KNFI A 0 A_FireCustomMissile("WimpyKnife", 0, 0, 0, 0)
		KNFI A 0 A_TakeInventory ("KnifeDurability", 1)
		TNT1 A 0 A_TakeInventory("KnivesAmmo", 1)
		KNFT MNOPQQ 1 A_setroll(roll+1)
		KNFT QQQQQQQRSTUV 1
		TNT1 A 5
		TNT1 A 0 A_JumpifInventory("KnifeDurability", 1, "Ready3")
		TNT1 A 0
		goto throwbroken	

// --------------------------------------------------------------------------
//
//	WEAPON CHECK
//
// --------------------------------------------------------------------------

user4:
		TNT1 A 0 a_STARTSOUND("MAGGRAB2", 120,0,0.6)
		KNFE FEDCBA 1
WeaponCheck2:
		TNT1 A 2
		KNF1 RQPONM 1	
	CheckHold:
		KNF1 M 1 a_weaponready(WRF_NOFIRE | WRF_NOSWITCH)
		TNT1 A 0 ACS_NAMEDEXECUTEalways("KNIFEDURABILITYCHECK",0)
		TNT1 A 0 ACS_NAMEDEXECUTEalways("KNIFEAMMOCHECK",0)
		PISA D 0 A_JumpIf(GetPlayerInput(INPUT_BUTTONS) & BT_USER4, "CHECKHOLD")
		
		TNT1 A 0 A_PlaySound("weapons/changing")
		KNF1 MNOPQR 1
		TNT1 A 2
		goto selectanimation

// --------------------------------------------------------------------------
//
//	SPRINT
//
// --------------------------------------------------------------------------

		
	CheckSprint:
		KNFI A 0
		//KNFE F 1 A_WeaponReady(WRF_NOFIRE)
		KNFI A 0 A_JumpIfInventory("IsStandingStill", 1, "Readyidle")
		KNFI A 0 A_JumpIfInventory("IsTacticalClass", 1, "StartSprint")
		Goto Readyidle
		
	StartSprint:
		KNFE GHIJKL 1 A_WeaponReady(WRF_NOFIRE)
		TNT1 A 0 A_JumpIfInventory("LARGESTAMINA", 1, 2)
		TNT1 A 0 A_JumpIfInventory("UsedStamina", 70, "Trip")
		KNFI A 0 A_JumpIfInventory("UsedStamina", 1400, "Trip")
		
		
	Sprinting:	
		Sprinting:	
		KNFD S 0 offset(-9,32) 
		KNFI A 0 offset(-9,32) A_JumpIfInventory("IsStandingStill", 1, "Readyidle")
		TNT1 A 0 A_JumpIfInventory("LARGESTAMINA", 1, 2)
		TNT1 A 0 A_JumpIfInventory("UsedStamina", 100, "StopSprintTired")
		KNFI A 0 A_JumpIfInventory("UsedStamina", 2000, "StopSprintTired")
		PLAY A 0 offset(-9,32) ACS_ExecuteAlways(852, 0, 0, 0, 0)//Makes player faster.
		KNFI A 0 offset(-9,32) A_JumpIfInventory("powerstrength2", 1, 2)
		KNFI A 0 offset(-9,32) A_GiveInventory("UsedStamina", 5)
		KNFI A 0 offset(-9,32)
		KNFE L 1 offset(-9,34) A_JumpIf(GetPlayerInput(INPUT_BUTTONS) & BT_ATTACK, "SPRINTSTAB")
		KNFE L 1 offset(-6,36) A_JumpIf(GetPlayerInput(INPUT_BUTTONS) & BT_ATTACK, "SPRINTSTAB")
		KNFE L 1 offset(-3,38) A_JumpIf(GetPlayerInput(INPUT_BUTTONS) & BT_ATTACK, "SPRINTSTAB")
		KNFE L 1 offset(0,38) A_JumpIf(GetPlayerInput(INPUT_BUTTONS) & BT_ATTACK, "SPRINTSTAB")
		KNFE L 1 offset(3,36) A_JumpIf(GetPlayerInput(INPUT_BUTTONS) & BT_ATTACK, "SPRINTSTAB")
		KNFE L 1 offset(6,34) A_JumpIf(GetPlayerInput(INPUT_BUTTONS) & BT_ATTACK, "SPRINTSTAB")
		KNFE L 1 offset(9,32) A_JumpIf(GetPlayerInput(INPUT_BUTTONS) & BT_ATTACK, "SPRINTSTAB")
		KNFI A 0 offset(9,32) A_WeaponReady(WRF_NOBOB)
		KNFI A 0 A_JumpIfInventory("Kicking",1,"dokickknife")
        KNFI A 0 A_JumpIfInventory("Taunting",1,"Taunt")
		KNFI A 0 offset(-9,32) A_GiveInventory("usedstamina", 1)
		KNFI A 0 offset(9,33) A_SpawnItemEx("FootStep", 0, 0, 2, 0, 0, -4)
		KNFE L 1 offset(9,34) A_JumpIf(GetPlayerInput(INPUT_BUTTONS) & BT_ATTACK, "SPRINTSTAB")
		KNFE L 1 offset(6,36) A_JumpIf(GetPlayerInput(INPUT_BUTTONS) & BT_ATTACK, "SPRINTSTAB")
		KNFE L 1 offset(3,38) A_JumpIf(GetPlayerInput(INPUT_BUTTONS) & BT_ATTACK, "SPRINTSTAB")
		KNFE L 1 offset(0,38) A_JumpIf(GetPlayerInput(INPUT_BUTTONS) & BT_ATTACK, "SPRINTSTAB")
		KNFE L 1 offset(-3,36) A_JumpIf(GetPlayerInput(INPUT_BUTTONS) & BT_ATTACK, "SPRINTSTAB")
		KNFE L 1 offset(-6,34) A_JumpIf(GetPlayerInput(INPUT_BUTTONS) & BT_ATTACK, "SPRINTSTAB")
		KNFE L 1 offset(-9,32) A_JumpIf(GetPlayerInput(INPUT_BUTTONS) & BT_ATTACK, "SPRINTSTAB")
		KNFI A 0 offset(-9,32) A_WeaponReady(WRF_NOBOB)
		KNFI A 0 offset(-9,32) A_JumpIfInventory("IsRunning", 1, "Sprinting")
		
		Goto StopSprint
	StopSprintTired:
		KNFE LKJIHG 1
		TNT1 A 0 a_SETROLL(0)
		PLAY A 0 ACS_ExecuteAlways(853, 0, 0, 0, 0)//Makes player slower.
		KNFI A 0 A_PlaySound("Tired", 2)
		TNT1 A 0 A_Jumpifhealthlower(25,"rupturesprint")												  
		KNFE F 25 
		Goto Readyidle
	StopSprint:
		KNFE LKJIHG 1
		TNT1 A 0 a_SETROLL(0)
		TNT1 A 0 A_JumpIfInventory("LARGESTAMINA", 1, 2)
		TNT1 A 0 A_JumpIfInventory("UsedStamina", 70, "StopSprintTired")
		KNFI A 0 A_JumpIfInventory("UsedStamina", 1400, "StopSprintTired")
		PLAY A 0 ACS_ExecuteAlways(853, 0, 0, 0, 0)//Makes player slower.
		Goto Readyidle
		
// --------------------------------------------------------------------------
//
//	Misc.
//
// --------------------------------------------------------------------------

	Dokickknife:
		TNT1 A 0 A_JumpIfInventory("isdoomguy", 1, 4)
		TNT1 A 0 A_JumpIfInventory("LARGESTAMINA", 1, 2)
		TNT1 A 0 A_JumpifInventory("UsedStamina",95,4)
		TNT1 A 0 A_JumpifInventory("UsedStamina",1995,3)
		TNT1 A 0 A_overlay(3,"kickknife")
		TNT1 A 0 a_Jump(256,"Dokick")
		goto Ready3
		TNT1 A 0 A_overlay(3,"kickknifetired")
		TNT1 A 0 a_Jump(256,"Dokick")
		goto Ready3	
	kickknife:
		KNFE GHI 1 
		KNFE J 12 
		KNFE IHG 1 
		TNT1 A 0 A_JumpIfInventory("Airkicking", 1, 2)
		TNT1 A 0 A_JumpIfInventory("isSliding", 1, 2)
		stop
		KNFE G 10
		STOP
		KNFE FEDCBA 1
		TNT1 A 4
		STOP
		
	kickknifetired:
		KNFE GHI 2 
		KNFE J 37 
		KNFE IHG 2 
		STOP	

	Inspect:
		TNT1 A 0 A_Giveinventory("Knifeselected",1)
		TNT1 A 0 A_Stopsound(5)
		TNT1 A 0 A_TakeInventory("JustStartedGame",1)
		TNT1 A 0 A_TakeInventory("neverfoundknife",1)
		TNT1 A 10 A_InspectReady
		KNFI ABC 1 A_InspectReady
		TNT1 A 0 A_PlaySound("KNIFETH1",1)
		KNFI DEFGHIJKL 1 A_InspectReady
		KN1F ABCDEFGH 1 A_InspectReady
		TNT1 A 0 A_PlaySound("KNIFESL1",1)
		KN1F IJKL 1 A_InspectReady
		TNT1 A 0 A_STARTSound("KNIFEHIT",122,0,0.5,0,1.5)
		KN1F MMMMMMNO 1
		TNT1 A 0 A_PlaySound("KNIFESL2",1)
		KN1F PQRS 1
		TNT1 A 0 A_STARTSound("KNIFEHIT",122,0,0.5,0,1.5)
		KN1F TUVWX 1
		KNFI MNOPQRSTUVWXYZ 1 A_InspectReady
		KNF1 ABCDEFGHIJKLMMMMMMMMMNOPQR 1 A_InspectReady
		TNT1 A 10 A_InspectReady
		Goto Ready
		
	Broken:
		TNT1 A 0 A_Jumpifinventory("KnivesAmmo",1,4)
		/// no reserve knives
		TNT1 A 0 A_Print("no knives left",2)
		TNT1 A 0 A_Takeinventory("Knife",1)
		TNT1 A 0 A_takeinventory("knifeisbroken",1)
		wait
		/// replace knife
		TNT1 A 0
		TNT1 A 0 A_Takeinventory("Knivesammo",1)
		TNT1 A 0 A_Giveinventory("KnifeDurability",40)
		TNT1 A 0 A_takeinventory("knifeisbroken",1)
		goto ready3
		
	ThrowBroken:
		TNT1 A 0 A_Jumpifinventory("KnivesAmmo",1,4)
		/// no reserve knives
		TNT1 A 0 A_Print("no knives left",2)
		TNT1 A 0 A_Takeinventory("Knife",1)
		wait
		/// replace knife
		TNT1 A 0
		TNT1 A 0 A_Giveinventory("KnifeDurability",40)
		goto ready3
		
	Execution1:
		TNT1 AAAAA 1 A_SetPitch(70)
		TNT1 A 0 a_RECOIL(-5)
		TNT1 A 0 A_ZoomFactor(1.5)
		KNFE CBA 1 A_Stop
		TNT1 A 1 A_Stop
		TNT1 A 0 A_overlay(3, "ExecutionHand")
		TNT1 A 0 A_startSound("KNIFETH1",112)
		KNFS STU 1 A_Stop
		TNT1 A 0 A_FireCustomMissile("ExecutionAttackMelee", 0, 0, 0, -7)
		TNT1 A 0 A_startSound("KNIFLESH",56)
		KNFS WXYZ 1  A_Stop
		TNT1 A 0 A_Takeinventory("Knifedurability",1)
		
		TNT1 A 0 A_startSound("KNIFETH1",112)
		KNFS STU 1 A_Stop
		KNFS A 0 
		TNT1 A 0 A_FireCustomMissile("ExecutionAttackKick", 0, 0, 0, -7)
		TNT1 A 0 A_startSound("KNIFLESH",56)
		KNFS WXYZ 1  A_Stop
		
		TNT1 A 0 A_ZoomFactor(1.0)
		TNT1 A 6
		Goto FinishExecution
	
	
	Execution2:
		TNT1 AAAAA 1 A_SetPitch(70)
		TNT1 A 0 a_RECOIL(-6)
		TNT1 A 0 A_ZoomFactor(1.5)
		KNFE FE 1
		KNFE DCBA 1 A_Stop
		TNT1 A 2 A_Stop
		TNT1 A 0 A_startSound("KNIFETH1",112)
		KNFS ABCDE 1 A_Stop
		KNFS FG 1 
		TNT1 A 0 A_Takeinventory("Knifedurability",1)
		TNT1 A 0 A_FireCustomMissile("ExecutionAttackKick", 0, 0, 0, -7)
		TNT1 A 0 A_startSound("KNIFLESH",56)
		KNFS HIJKL 1  A_Stop
		KNFS MNOPQR 1  A_Stop
		TNT1 A 4  A_Stop
		KNFE ABCDEF 1  A_Stop	
		TNT1 A 0 A_ZoomFactor(1.0)
		TNT1 A 5
		Goto FinishExecution
		
	ExecutionHand:	
		LEAN ABCDEF 1
		LEAN F 10
		LEAN FEDCBA 1
		Stop
	
	
	KITREPAIR:
		TNT1 A 0 A_JumpIFInventory("survivalkituses",1, 2)
		PIST F 0 A_Jump(256,"kitbroke")
		KNFE F 5
		
		TNT1 A 0 A_JumpIFInventory("KNIFEDurability",40, "NoNeedRepair")
		PIST F 0 A_JumpIfInventory("scrapmetal",1, 2)
		PIST F 0 A_Jump(256,"outofmetal")
		
	KITREPAIR2:
		PIST F 0 A_GIVEinventory("KNIFEDurability",20)
		BADF A 0 A_Takeinventory("survivalkituses",1)
		BADF A 0 A_Takeinventory("scrapmetal",1)
		TNT1 A 0 A_playsound("WIRECUT",1)
		KNFE FEDCBA 1
		TNT1 A 20
		
		TNT1 A 0 A_JumpIFInventory("survivalkituses",1, 2)
		PIST F 0 A_Jump(256,"kitbroke")
		KNFE F 1
		goto Ready3	
		
	}
}

Actor KnifeCharge : Inventory {inventory.maxamount 120}

Actor Readythrow : Inventory {inventory.maxamount 1}

Actor slashtoken : Inventory {inventory.maxamount 1}
Actor throwtoken : Inventory {inventory.maxamount 1}

ACTOR KnifePuff
{
	renderstyle Translucent
	scale 0.15
	alpha 0.7
	Radius 1
	Height 1
	damagetype "knife"
	+NOBLOCKMAP
	+NOGRAVITY
	+NOEXTREMEDEATH
	+FORCEXYBILLBOARD
	+FORCEPAIN
	RenderStyle add
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_CustomMissile("SparkX",2,0,random(0,360),2,random(30,170))
		RSMK A 1 Bright A_PlaySound("items/knife")
		RSMK BCDE 1 Bright
		Stop
	}
}

Actor KnifeThrust : Knifepuff
{
height 1
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_CustomMissile("SparkX",-15,0,random(0,360),2,random(30,170))
		RSMK A 1 Bright A_PlaySound("items/knife")
		RSMK BCDE 1 Bright
		Stop
	}
}

Actor BerserkSlash : KnifePuff
{
	DamageType cut
	Decal "sawhorizontal"
}

Actor KNIFELOWHOOK : KnifePuff
{
	DamageType LEG
	Decal "sawhorizontal"
}

Actor BerserkThrust : Knifethrust
{
height 1
+PIERCEARMOR
	DamageType SLUG
	Decal "Bulletdecalnew1"
}

ACTOR KnifeDOT1
{
	Game Doom
	PROJECTILE
	Scale 1.0
	Damage 0
	Poisondamagetype "BleedingArmor"
	PoisonDamage 5, 20, 45
	+ADDITIVEPOISONDAMAGE
	+ADDITIVEPOISONDURATION
	Speed 26
	Height 1
	Radius 1
	States
	{
	Spawn:
		TNT1 A 0 //Each added hit either increases duration or damage.
		TNT1 A 0 A_Jump(128,3)
		TNT1 A 0 A_ChangeFlag("ADDITIVEPOISONDAMAGE",0)
		TNT1 A 0 A_Jump(256,2)
		TNT1 A 0 A_ChangeFlag("ADDITIVEPOISONDURATION",0)
		TNT1 AA 1
		Stop
	Death:
		TNT1 A 2
		Stop
	}
}

ACTOR KnifeDOT2 : KnifeDOT1
{
	PoisonDamage 10, 30, 45
}

ACTOR KnifeDOT3 : KnifeDOT1
{
	PoisonDamage 20, 25, 45
}

ACTOR KNIFEDOTBERSERK : knifedot1
{
	PoisonDamage 20, 25, 45
	Poisondamagetype "Bleeding"
}

Actor Knifehitscan : FastProjectile
{
	Radius 4
	Height 0
	+MISSILE
	+FORCEXYBILLBOARD
	+FORCERADIUSDMG
	+BLOODSPLATTER
	+FORCEPAIN
	RenderStyle Add
	Alpha 0.6
    Speed 52
	SeeSound "none"
	DeathSound "none"
	States
	{
	Spawn:
		TNT1 A 1 BRIGHT
		Stop
	Death:
	Crash:
				TNT1 A 0
				TNT1 A 0
				TNT1 AB 0 bright
				TNT1 A 0 A_PlaySound("knife/wall", 7)
				TNT1 A 0 A_TakeFromTarget ("KnifeDurability", 2)												  
				Stop
				
	XDeath:
	Melee:
			TNT1 A 0
			TNT1 A 0 A_PlaySound("KNIFLESH", 7)
			TNT1 A 0 A_TakeFromTarget ("KnifeDurability", 1)												 
			TNT1 A 10
			Stop
	}
}

Actor KnifeALThitscan : knifehitscan
{
States
{
	Crash:
	Death:
				TNT1 A 0
				TNT1 A 0 A_PlaySound("Knife/Wall", 7)
				TNT1 AB 0 bright
				TNT1 A 0 A_TakeFromTarget ("KnifeDurability", 8)												  
				Stop
	XDeath:
	Melee:
			TNT1 A 0 A_PlaySound("KNIFLESH", 7)
			TNT1 A 0 A_TakeFromTarget ("KnifeDurability", 4)												 
			TNT1 A 10
			Stop
	}
}

Actor knifeisbroken : Inventory {inventory.maxamount 1}

ACTOR ThrownKnife
{
	Radius 2
	Height 2
	Speed 40
	Damage (random(60, 65))
	+MISSILE
	+FORCEXYBILLBOARD
	-NOGRAVITY
	+NOEXTREMEDEATH
	+SKYEXPLODE
	+NOEXTREMEDEATH
	+THRUSPECIES
	+BLOODSPLATTER
	+FORCEPAIN
	+rollsprite
	Species "Marines"
	Gravity 1.0
	scale 0.15
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_Jumpifintargetinventory("KnifeDurability", 1, "Flying")
		TNT1 A 0 A_Givetotarget("knifeisbroken",1)
	
	Flying:
		TNT1 A 0 A_GIVEINVENTORY("KNIFEMOMENTUM",1)
		KNFA I 1 A_PlaySound("KNIFETH3",4,1,1)
		KNFA I 0 A_SETROLL(ROLL+25) 
		KNFA I 0 A_FaceMovementDirection(0,360,180)
		TNT1 A 0 A_Jumpifinventory("KnifeMOMENTUM", 2, 1)	
		Loop
		KNFA I 1 A_PlaySound("KNIFETH3",4,1,1)
		KNFA I 0 A_SETROLL(ROLL+25) 
		KNFA I 0 A_FaceMovementDirection(0,360,180)
		KNFA I 0 A_SETSIZE(8,8)
		Loop

	Death:
		TNT1 A 0 A_Stopsound(4)
		TNT1 A 0 A_PlaySound("Knife/Wall", 4)
		TNT1 A 0 A_Changeflag("nogravity",1)
		TNT1 A 0 A_Jumpifintargetinventory("Knifeisbroken", 1, 6)	
		TNT1 A 0 A_Jumpifinventory("KnifeMOMENTUM", 2, 1)	
		goto crash
		TNT1 A 0 A_spawnItemEX("KnifeSpawnerwall",8,0,3,0,0,0,0, SXF_TRANSFERPITCH)
		Stop
	
	Crash:
	XDeath:
		TNT1 A 0 A_PlaySound("KNIFLESH", 4)	
		TNT1 A 0 A_Jumpifintargetinventory("Knifeisbroken", 1, 2)		
		TNT1 A 0 A_spawnItem("KnifeSpawnerBlood",0,0,0,0)
		Stop
		
		TNT1 A 0 A_Log("One knife has broken")
		TNT1 A 0 A_takeinventory("knifeisbroken",1)
		TNT1 A 0 A_takeFROMTARGET("knifeisbroken",1)
		TNT1 A 0 { A_spawnprojectile("BrokenKnife",0,0,random(0,360),0,random(-8,8)); A_spawnprojectile("BrokenKnife2",0,0,random(0,360),0,random(-8,8)); A_spawnprojectile("BrokenKnife3",0,0,random(0,360),0,random(-8,8)); }
		Stop
	}
}

ACTOR ThrownKnifeBerserk: ThrownKnife
{
	Damagetype "Shotgun"
	SPEED 55
	Damage (random(150, 150))
}

ACTOR WimpyKnife: ThrownKnife
{
	Damagetype "minor"
	Damage (random(20, 25))
	Speed 15
}

ACTOR StabToken : Inventory {Inventory.MaxAmount 3}
ACTOR KNIFEMOMENTUM : Inventory {Inventory.MaxAmount 8}