private ["_hasKnife","_qty","_item","_text","_string","_type","_started","_finished","_animState","_isMedic","_hasHarvested","_hasKnifeBlunt","_humanity"];

if(DZE_ActionInProgress) exitWith { cutText [(localize "str_epoch_player_31") , "PLAIN DOWN"]; };
DZE_ActionInProgress = true;

player removeAction s_player_butcher;
s_player_butcher = 1;

_item = _this select 3;
_hasKnife = 	"ItemKnife" in items player;
_hasKnifeBlunt = 	"ItemKnifeBlunt" in items player;
_type = typeOf _item;
_hasHarvested = _item getVariable["meatHarvested",false];
//_config = 		configFile >> "CfgSurvival" >> "Meat" >> _type;

if ((_hasKnife or _hasKnifeBlunt) and !_hasHarvested) then {
	//Get Animal Type
	//_loop = true;	
	//_isListed =		isClass (_config);
	_text = getText (configFile >> "CfgVehicles" >> _type >> "displayName");
	
	[1,1] call dayz_HungerThirst;
	// force animation 
	player playActionNow "Medic";

	// Alert zombies
	[player,50,true,(getPosATL player)] spawn player_alertZombies;

	r_interrupt = false;
	_animState = animationState player;
	r_doLoop = true;
	_started = false;
	_finished = false;
	
	while {r_doLoop} do {
		_animState = animationState player;
		_isMedic = ["medic",_animState] call fnc_inString;
		if (_isMedic) then {
			_started = true;
		};
		if (_started and !_isMedic) then {
			r_doLoop = false;
			_finished = true;
		};
		if (r_interrupt) then {
			r_doLoop = false;
		};
		sleep 0.1;
	};
	r_doLoop = false;

	if (!_finished) exitWith { 
		r_interrupt = false;
		if (vehicle player == player) then {
			[objNull, player, rSwitchMove,""] call RE;
			player playActionNow "stop";
		};
		cutText [(localize "str_epoch_player_30") , "PLAIN DOWN"];
		//_abort = true;
	};

	_hasHarvested = _item getVariable["meatHarvested",false];
	
	if(_finished and !_hasHarvested) then {

		_item setVariable["meatHarvested",true,true];
		
		// Play sound since we finished
		[player,"gut",0,false,10] call dayz_zombieSpeak;  
	
		_qty = 1;
		if (local _item) then {
			[_item,_qty] spawn local_gutObjectZ;
		} else {
			//Leave this as PV instead of PVS/PVC - Skaronator 
			//Also not sure if we need this
			PVDZE_plr_GutBodyZ = [_item,_qty];	
			publicVariable "PVDZE_plr_GutBodyZ";
		};
		
		// Reduce humanity for gutting zeds
		_humanity = player getVariable["humanity",0];
		_humanity = _humanity - 10;
		player setVariable["humanity",_humanity,true];
		

		_string = format["Successfully Gutted Zombie",_text,_qty];
		cutText [_string, "PLAIN DOWN"];
	};
};
s_player_butcher = -1;
DZE_ActionInProgress = false;