diff --git a/SQF/dayz_code/Configs/CfgArma.hpp b/SQF/dayz_code/Configs/CfgArma.hpp
index 623343b72..a68f274f3 100644
--- a/SQF/dayz_code/Configs/CfgArma.hpp
+++ b/SQF/dayz_code/Configs/CfgArma.hpp
@@ -534,10 +534,10 @@ class CfgSurvival {
rawfoodtype = "FoodchickenRaw";
};
class Cock: Hen {};
- class DZ_Fin: Default {
+ class Fin: Default {
rawfoodtype = "FoodDogRaw";
};
- class DZ_Pastor: DZ_Fin {};
+ class Pastor: Fin {};
class Rabbit: Default {
yield = 2;
rawfoodtype = "FoodrabbitRaw";
diff --git a/SQF/dayz_code/Configs/CfgVehicles/Animal.hpp b/SQF/dayz_code/Configs/CfgVehicles/Animal.hpp
index 47f33f5f4..f9dd11273 100644
--- a/SQF/dayz_code/Configs/CfgVehicles/Animal.hpp
+++ b/SQF/dayz_code/Configs/CfgVehicles/Animal.hpp
@@ -1,15 +1,30 @@
-
-class CAAnimalBase;
-class animal_DZ: CAAnimalBase
+class Animal;
+class CAAnimalBase: Animal
{
class Eventhandlers
{
//local = "_z = _this select 0; if ((!isServer and !isNull _z) and {(side _z != civilian)}) exitWith { PVDZ_sec_atp = [ 'wrong side', player ]; publicVariableServer 'PVDZ_sec_atp'; deleteVehicle _z; }; if ((_this select 1) and isServer) exitWith { _z call sched_co_deleteVehicle; };";
local = "_z = _this select 0; if ((_this select 1) and isServer) exitWith { _z call sched_co_deleteVehicle; };";
};
+ class UserActions
+ {
+ class Butcher
+ {
+ displayName = $STR_ACTIONS_SELF_04;
+ displayNameDefault = $STR_ACTIONS_SELF_04;
+ priority = 3;
+ radius = 3;
+ position = "";
+ showWindow = 1;
+ onlyForPlayer = 1;
+ shortcut = "";
+ condition = "(['Butcher',this] call userActionConditions)";
+ statement = "this spawn player_butcher;";
+ };
+ };
};
-class DZ_Pastor : Pastor {
+class Pastor: CAAnimalBase {
scope = public;
side = 1;
model = "\ca\animals2\Dogs\Pastor\Pastor";
@@ -30,7 +45,7 @@ class DZ_Pastor : Pastor {
class VariablesString {};
};
-class DZ_Fin : Fin {
+class Fin: CAAnimalBase {
scope = public;
model = "\ca\animals2\Dogs\Fin\Fin";
displayName = "Fin";
@@ -40,7 +55,7 @@ class DZ_Fin : Fin {
fsmFormation = "";
};
-class Cow: animal_DZ
+class Cow: CAAnimalBase
{
scope = private;
model = "\ca\animals2\cow\cow";
@@ -96,8 +111,10 @@ class Cow04: Cow01
displayName = "$STR_DN_COW04";
hiddenSelectionsTextures[] = {"ca\animals2\cow\data\cow4_co.PAA"};
};
+class Cow_Base_EP1 : Cow {};
+class Cow01_EP1 : Cow_Base_EP1 {};
-class Goat: animal_DZ
+class Goat: CAAnimalBase
{
scope = public;
model = "\ca\animals2\Goat\Goat";
@@ -121,8 +138,11 @@ class Goat: animal_DZ
mat[] = {"ca\animals2\Goat\data\goat.rvmat","ca\animals2\Goat\data\W1_goat.rvmat","ca\animals2\Goat\data\W2_goat.rvmat"};
};
};
+class Goat_Base_EP1 : Goat {};
+class Goat01_EP1 : Goat_Base_EP1 {};
+class Goat02_EP1 : Goat01_EP1 {};
-class Rabbit: animal_DZ
+class Rabbit: CAAnimalBase
{
scope = public;
side = 3;
@@ -156,7 +176,7 @@ class Rabbit: animal_DZ
};
};
-class Sheep: animal_DZ
+class Sheep: CAAnimalBase
{
scope = public;
model = "\ca\animals2\Sheep\Sheep";
@@ -181,9 +201,11 @@ class Sheep: animal_DZ
_sound3 = "sheep_03";
};
};
+class Sheep_Base_EP1 : Sheep {};
+class Sheep01_EP1 : Sheep_Base_EP1 {};
+class Sheep02_EP1 : Sheep01_EP1 {};
-
-class WildBoar: animal_DZ
+class WildBoar: CAAnimalBase
{
scope = public;
model = "\ca\animals2\WildBoar\WildBoar";
@@ -203,3 +225,5 @@ class WildBoar: animal_DZ
};
};
+class Hen : CAAnimalBase {};
+class Cock : Hen {};
diff --git a/SQF/dayz_code/Configs/CfgVehicles/Boat/RHIB.hpp b/SQF/dayz_code/Configs/CfgVehicles/Boat/RHIB.hpp
index 1a18c0536..e6d0d345a 100644
--- a/SQF/dayz_code/Configs/CfgVehicles/Boat/RHIB.hpp
+++ b/SQF/dayz_code/Configs/CfgVehicles/Boat/RHIB.hpp
@@ -5,6 +5,11 @@
//class DefaultEventhandlers;
class Ship : AllVehicles
{
+ class UserActions
+ {
+ class Repair {ACTION_REPAIR; radius = 8;};
+ class Salvage {ACTION_SALVAGE; radius = 8;};
+ };
transportMaxMagazines = 2000;
transportMaxWeapons = 200;
transportMaxBackpacks = 40;
diff --git a/SQF/dayz_code/Configs/CfgVehicles/CfgVehicles.hpp b/SQF/dayz_code/Configs/CfgVehicles/CfgVehicles.hpp
index 16ced11f2..12e695f0b 100644
--- a/SQF/dayz_code/Configs/CfgVehicles/CfgVehicles.hpp
+++ b/SQF/dayz_code/Configs/CfgVehicles/CfgVehicles.hpp
@@ -1,3 +1,4 @@
+#include "CommonActions.hpp"
class WeaponFireGun; // External class reference
class WeaponCloudsGun; // External class reference
class WeaponFireMGun; // External class reference
@@ -136,6 +137,11 @@ class CfgVehicles {
class ViewOptics;
};
};
+ class UserActions
+ {
+ class Repair {ACTION_REPAIR; radius = 8;};
+ class Salvage {ACTION_SALVAGE; radius = 8;};
+ };
};
class Plane: Air
{
@@ -147,6 +153,12 @@ class CfgVehicles {
class HitHull;
};
class AnimationSources;
+ class UserActions
+ {
+ class Repair {ACTION_REPAIR; radius = 8;};
+ class Salvage {ACTION_SALVAGE; radius = 8;};
+ class PushPlane {ACTION_PUSH;};
+ };
};
class Land; // External class reference
class LandVehicle : Land
@@ -179,6 +191,11 @@ class CfgVehicles {
brightness = 0.5;
};
};
+ class UserActions
+ {
+ class Repair {ACTION_REPAIR; radius = 4;};
+ class Salvage {ACTION_SALVAGE; radius = 4;};
+ };
};
class Car: LandVehicle {
class HitPoints
@@ -440,9 +457,6 @@ class CfgVehicles {
class Strategic;
class NonStrategic;
// class Land_Fire;
- class Animal;
- class Pastor;
- class Fin;
class BuiltItems;
class Building;
class ReammoBox;
@@ -531,7 +545,7 @@ class CfgVehicles {
#include "Bikes\TT650_Civ.hpp"
#include "Bikes\M1030.hpp"
//Boat
- #include "Boat\RHIB.hpp"
+ #include "Boat\RHIB.hpp" //Must be first boat, includes Ship base class
#include "Boat\PBX.hpp"
#include "Boat\Fishing_Boat.hpp"
#include "Boat\smallboat.hpp"
diff --git a/SQF/dayz_code/Configs/CfgVehicles/CommonActions.hpp b/SQF/dayz_code/Configs/CfgVehicles/CommonActions.hpp
new file mode 100644
index 000000000..527c0ff37
--- /dev/null
+++ b/SQF/dayz_code/Configs/CfgVehicles/CommonActions.hpp
@@ -0,0 +1,30 @@
+#define ACTION_REPAIR displayName = $STR_ACTIONS_REPAIRVEH;\
+ displayNameDefault = $STR_ACTIONS_REPAIRVEH;\
+ priority = 0;\
+ position = "";\
+ showWindow = 0;\
+ onlyForPlayer = 1;\
+ shortcut = "";\
+ condition = "(['Repair',this] call userActionConditions)";\
+ statement = "this call player_repairVehicle;"
+
+#define ACTION_SALVAGE displayName = $STR_ACTIONS_SALVAGEVEH;\
+ displayNameDefault = $STR_ACTIONS_SALVAGEVEH;\
+ priority = 0;\
+ position = "";\
+ showWindow = 0;\
+ onlyForPlayer = 1;\
+ shortcut = "";\
+ condition = "(['Salvage',this] call userActionConditions)";\
+ statement = "this call player_salvageVehicle;"
+
+#define ACTION_PUSH displayName = $STR_ACTIONS_PUSH;\
+ displayNameDefault = $STR_ACTIONS_PUSH;\
+ priority = 0;\
+ radius = 8;\
+ position = "";\
+ showWindow = 0;\
+ onlyForPlayer = 1;\
+ shortcut = "";\
+ condition = "(['PushPlane',this] call userActionConditions)";\
+ statement = "this call player_pushPlane;"
\ No newline at end of file
diff --git a/SQF/dayz_code/Configs/CfgVehicles/DZE/CSJ_GyroAC.hpp b/SQF/dayz_code/Configs/CfgVehicles/DZE/CSJ_GyroAC.hpp
index 5f9896bc5..d13bdfa81 100644
--- a/SQF/dayz_code/Configs/CfgVehicles/DZE/CSJ_GyroAC.hpp
+++ b/SQF/dayz_code/Configs/CfgVehicles/DZE/CSJ_GyroAC.hpp
@@ -105,13 +105,15 @@ class CSJ_GyroP: Plane
};
class push
{
- displayName = "push aircraft";
+ displayName = $STR_ACTIONS_PUSH;
position = "osa leve smerovky";
onlyforplayer = 0;
radius = 2;
condition = "(Count (Crew this)==0) and ((getpos this select 2) <1) and (!isengineon this)";
statement = "this exec ""\CSJ_GyroAC\scripts\CSJ_moveGyro.sqs"" ";
};
+ class Repair {ACTION_REPAIR; radius = 4;};
+ class Salvage {ACTION_SALVAGE; radius = 4;};
};
class DefaultEventhandlers;
class EventHandlers: DefaultEventhandlers
@@ -220,7 +222,10 @@ class CSJ_GyroC: Helicopter
dammageFull[] = {};
class Reflectors{};
class AnimationSources: AnimationSources{};
- class UserActions{};
+ class UserActions {
+ class Repair {ACTION_REPAIR; radius = 4;};
+ class Salvage {ACTION_SALVAGE; radius = 4;};
+ };
class DefaultEventhandlers;
class EventHandlers: DefaultEventhandlers
{
diff --git a/SQF/dayz_code/Configs/CfgVehicles/DZE/Prop_Defs.hpp b/SQF/dayz_code/Configs/CfgVehicles/DZE/Prop_Defs.hpp
index 9211222f1..ea5e94598 100644
--- a/SQF/dayz_code/Configs/CfgVehicles/DZE/Prop_Defs.hpp
+++ b/SQF/dayz_code/Configs/CfgVehicles/DZE/Prop_Defs.hpp
@@ -483,7 +483,7 @@ class M240Nest_DZ: USMC_WarfareBMGNest_M240
transportMaxBackpacks = 1;
constructioncount = 10;
removeoutput[] = {{"m240_nest_kit",1}};
-
+ class UserActions {delete Repair; delete Salvage;};
};
class Land_covering_hut_EP1;
class CanvasHut_DZ: Land_covering_hut_EP1
diff --git a/SQF/dayz_code/Configs/CfgVehicles/Helicopter/CH53.hpp b/SQF/dayz_code/Configs/CfgVehicles/Helicopter/CH53.hpp
index 4ee4c1cea..5e043783e 100644
--- a/SQF/dayz_code/Configs/CfgVehicles/Helicopter/CH53.hpp
+++ b/SQF/dayz_code/Configs/CfgVehicles/Helicopter/CH53.hpp
@@ -33,4 +33,82 @@ class CH53_DZE : USEC_ch53_E {
init = "MonitorVM = [_this select 0] execvm '\usec_ch53\scripts\ch53_monitor.sqf';MonitorSFXVM = [_this select 0] execvm '\usec_ch53\scripts\ch53_monitorSFX.sqf';";
killed = "_this spawn BIS_Effects_EH_Killed;";
};
+ class UserActions {
+ class Repair {ACTION_REPAIR; radius = 8;};
+ class Salvage {ACTION_SALVAGE; radius = 8;};
+ class RampOpen {
+ displayName = "Open Ramp";
+ position = "ramp action";
+ showWindow = 0;
+ radius = 5;
+ condition = "this animationPhase ""ramp_bottom"" < 0.50;";
+ statement = "if(((getPos this) select 2) < 2) then {this animate [""ramp_bottom"",1];this animate [""ramp_top"",1];} else {this animate [""ramp_bottom"",0.56];this animate [""ramp_top"",1];};";
+ onlyforplayer = 0;
+ };
+ class RampClose {
+ displayName = "Close Ramp";
+ position = "ramp action";
+ showWindow = 0;
+ radius = 5;
+ condition = "this animationPhase ""ramp_bottom"" > 0.50;";
+ statement = "this animate [""ramp_bottom"",0];this animate [""ramp_top"",0];";
+ onlyforplayer = 0;
+ };
+ class LandingGear_down {
+ displayName = "Gear Down";
+ position = "ramp action";
+ showWindow = 0;
+ onlyforplayer = 0;
+ shortcut = "landGear";
+ radius = 5;
+ condition = "(this animationPhase ""gear_nose_1"" > 0.9)&&(player == driver this)";
+ statement = "[this] execvm ""\usec_ch53\scripts\ch53_geardown.sqf""";
+ };
+ class LandingGear_up {
+ displayName = "Gear Up";
+ position = "ramp action";
+ showWindow = 0;
+ onlyforplayer = 0;
+ shortcut = "landGear";
+ radius = 5;
+ condition = "(this animationPhase ""gear_nose_1"" < 0.1)&&(player == driver this)";
+ statement = "[this] execvm ""\usec_ch53\scripts\ch53_gearup.sqf""";
+ };
+ class StropDown {
+ displayName = "Attach Strop";
+ position = "ramp action";
+ showWindow = 0;
+ onlyforplayer = 0;
+ radius = 5;
+ condition = "(this animationPhase ""Strop1_Empty"" == 1)&&((this animationPhase 'cargo' == 1) AND (this animationPhase 'cargo2' == 1))&&(player == driver this)";
+ statement = "[this,true] execvm ""\usec_ch53\scripts\ch53_strop.sqf""";
+ };
+ class StropUp {
+ displayName = "Detach Strop";
+ position = "ramp action";
+ showWindow = 0;
+ onlyforplayer = 0;
+ radius = 5;
+ condition = "(this animationPhase ""Strop1_Empty"" == 0)&&(player == driver this)";
+ statement = "[this,false] execvm ""\usec_ch53\scripts\ch53_strop.sqf""";
+ };
+ class CollectCargo {
+ displayName = "Collect Cargo";
+ position = "ramp action";
+ showWindow = 1;
+ onlyforplayer = 0;
+ radius = 5;
+ condition = "(count(nearestObjects [(this modeltoworld [0,0,-10]), [""USEC_CargoContainer1"",""USEC_CargoContainer2""], 6])>0) and (this animationPhase 'Strop1_Empty' == 0) and (this animationPhase 'cargo' == 1);";
+ statement = "[this] execvm ""\usec_ch53\scripts\ch53_cargo.sqf"";";
+ };
+ class DetachCargo {
+ displayName = "Detach Cargo";
+ position = "ramp action";
+ showWindow = 1;
+ onlyforplayer = 0;
+ radius = 5;
+ condition = "((this animationPhase 'cargo' == 0) OR (this animationPhase 'cargo2' == 0));";
+ statement = "[this] execvm ""\usec_ch53\scripts\ch53_cargodrop.sqf"";";
+ };
+ };
};
\ No newline at end of file
diff --git a/SQF/dayz_code/Configs/CfgVehicles/Helicopter/MI17.hpp b/SQF/dayz_code/Configs/CfgVehicles/Helicopter/MI17.hpp
index 221a47cc0..64ee280ac 100644
--- a/SQF/dayz_code/Configs/CfgVehicles/Helicopter/MI17.hpp
+++ b/SQF/dayz_code/Configs/CfgVehicles/Helicopter/MI17.hpp
@@ -295,6 +295,8 @@ class Mi171Sh_CZ_EP1_DZ: Mi17_base {
};
class UserActions {
+ class Repair {ACTION_REPAIR; radius = 8;};
+ class Salvage {ACTION_SALVAGE; radius = 8;};
class HUDoff {
displayName = $STR_AM_HUDON;
displayNameDefault = $STR_AM_HUDON;
@@ -303,8 +305,7 @@ class Mi171Sh_CZ_EP1_DZ: Mi17_base {
onlyForPlayer = 1;
condition = "(player==driver this)and(this animationphase ""HUDAction"" !=0)";
statement = "this animate [""HUDAction"",0];this animate [""HUDaction_Hide"",0]";
- };
-
+ };
class HUDon {
displayName = $STR_AM_HUDOFF;
displayNameDefault = $STR_AM_HUDOFF;
diff --git a/SQF/dayz_code/Configs/CfgVehicles/Helicopter/UH1Y.hpp b/SQF/dayz_code/Configs/CfgVehicles/Helicopter/UH1Y.hpp
index a351f948c..8a7eb36a1 100644
--- a/SQF/dayz_code/Configs/CfgVehicles/Helicopter/UH1Y.hpp
+++ b/SQF/dayz_code/Configs/CfgVehicles/Helicopter/UH1Y.hpp
@@ -88,6 +88,28 @@ class UH1Y_DZ: UH1_Base {
magazines[] = {"2000Rnd_762x51_M134"};
};
};*/
+ class UserActions {
+ class Repair {ACTION_REPAIR; radius = 8;};
+ class Salvage {ACTION_SALVAGE; radius = 8;};
+ class HUDoff {
+ displayName = $STR_AM_HUDON;
+ displayNameDefault = $STR_AM_HUDON;
+ position = "zamerny";
+ radius = 1;
+ onlyForPlayer = 1;
+ condition = "(player==driver this)and(this animationphase ""HUDAction"" !=1)";
+ statement = "this animate [""HUDAction"",1];this animate [""HUDAction_1"",1]";
+ };
+ class HUDon {
+ displayName = $STR_AM_HUDOFF;
+ displayNameDefault = $STR_AM_HUDOFF;
+ position = "zamerny";
+ radius = 1;
+ onlyForPlayer = 1;
+ condition = "(player==driver this)and(this animationphase ""HUDAction"" !=0)";
+ statement = "this animate [""HUDAction"",0];this animate [""HUDAction_1"",0]";
+ };
+ };
};
class UH1Y_DZE: UH1Y_DZ {
class Turrets : Turrets {
diff --git a/SQF/dayz_code/Configs/CfgVehicles/Plane/MV22.hpp b/SQF/dayz_code/Configs/CfgVehicles/Plane/MV22.hpp
index 45930879f..e5ad33626 100644
--- a/SQF/dayz_code/Configs/CfgVehicles/Plane/MV22.hpp
+++ b/SQF/dayz_code/Configs/CfgVehicles/Plane/MV22.hpp
@@ -14,4 +14,10 @@ class MV22_DZ : MV22 {
transportMaxMagazines = 400;
transportmaxbackpacks = 10;
fuelCapacity = 6513;
+ class UserActions
+ {
+ class Repair {ACTION_REPAIR; radius = 8;};
+ class Salvage {ACTION_SALVAGE; radius = 8;};
+ class PushPlane {ACTION_PUSH;};
+ };
};
diff --git a/SQF/dayz_code/Configs/CfgVehicles/Skins.hpp b/SQF/dayz_code/Configs/CfgVehicles/Skins.hpp
index c41d186d4..503e3dfb6 100644
--- a/SQF/dayz_code/Configs/CfgVehicles/Skins.hpp
+++ b/SQF/dayz_code/Configs/CfgVehicles/Skins.hpp
@@ -1,6 +1,6 @@
class Man;
-class CAManBase: Man
+class CAManBase: Man //Covers all custom Epoch skins
{
class TalkTopics;
class HitPoints
@@ -8,6 +8,22 @@ class CAManBase: Man
class HitHead;
class HitBody;
};
+ class UserActions
+ {
+ class StudyBody
+ {
+ displayName = $STR_ACTION_STUDYBODY;
+ displayNameDefault = $STR_ACTION_STUDYBODY;
+ priority = 0;
+ radius = 3;
+ position = "";
+ showWindow = 0;
+ onlyForPlayer = 1;
+ shortcut = "";
+ condition = "(['StudyBody',this] call userActionConditions)";
+ statement = "this call player_studyBody;";
+ };
+ };
};
class Civilian: CAManBase
{
diff --git a/SQF/dayz_code/Configs/CfgVehicles/Zeds/Zeds.hpp b/SQF/dayz_code/Configs/CfgVehicles/Zeds/Zeds.hpp
index 2e37f794a..d79ee2514 100644
--- a/SQF/dayz_code/Configs/CfgVehicles/Zeds/Zeds.hpp
+++ b/SQF/dayz_code/Configs/CfgVehicles/Zeds/Zeds.hpp
@@ -57,6 +57,23 @@ class zZombie_Base : Zed_Base {
local = "_z = _this select 0; if (!(_this select 1)) exitWith {}; if (isServer) exitWith { _z call sched_co_deleteVehicle; }; [(position _z), _z, true] execFSM '\z\AddOns\dayz_code\system\zombie_agent.fsm';";
};
+ class UserActions
+ {
+ class Butcher
+ {
+ displayName = $STR_EPOCH_ACTIONS_GUTZOM;
+ displayNameDefault = $STR_EPOCH_ACTIONS_GUTZOM;
+ priority = 0;
+ radius = 3;
+ position = "";
+ showWindow = 1;
+ onlyForPlayer = 1;
+ shortcut = "";
+ condition = "(['Butcher',this] call userActionConditions)";
+ statement = "this spawn player_butcher;";
+ };
+ };
+
class HitPoints {
class HitHead {
armor = 0.1;
diff --git a/SQF/dayz_code/actions/gather_meat.sqf b/SQF/dayz_code/actions/gather_meat.sqf
index be7165281..3fbb8fa5f 100644
--- a/SQF/dayz_code/actions/gather_meat.sqf
+++ b/SQF/dayz_code/actions/gather_meat.sqf
@@ -1,17 +1,21 @@
-private ["_item","_type","_hasHarvested","_config","_knifeArray","_PlayerNear","_isListed","_activeKnife","_text","_dis","_sfx","_sharpnessRemaining","_qty","_chance","_string"];
-if (dayz_actionInProgress) exitWith {localize "str_epoch_player_29" call dayz_rollingMessages;};
+private ["_item","_type","_hasHarvested","_knifeArray","_PlayerNear","_isListed","_activeKnife","_text","_dis","_sfx","_sharpnessRemaining","_qty","_chance","_string","_isZombie","_humanity"];
+
+_isZombie = _this isKindOf "zZombie_base";
+if (dayz_actionInProgress) exitWith {
+ if (_isZombie) then {
+ localize "str_epoch_player_31" call dayz_rollingMessages;
+ } else {
+ localize "str_epoch_player_29" call dayz_rollingMessages;
+ };
+};
dayz_actionInProgress = true;
-_item = _this select 3;
+_item = _this;
_type = typeOf _item;
_hasHarvested = _item getVariable["meatHarvested",false];
-_config = configFile >> "CfgSurvival" >> "Meat" >> _type;
_knifeArray = [];
-player removeAction s_player_butcher;
-s_player_butcher = -1;
-
_PlayerNear = {isPlayer _x} count ((getPosATL _item) nearEntities ["CAManBase", 10]) > 1;
if (_PlayerNear) exitWith {localize "str_pickup_limit_5" call dayz_rollingMessages; dayz_actionInProgress = false;};
@@ -22,8 +26,14 @@ if (_PlayerNear) exitWith {localize "str_pickup_limit_5" call dayz_rollingMessag
};
} count Dayz_Gutting;
-if ((count _knifeArray) < 1) exitWith { localize "str_cannotgut" call dayz_rollingMessages; dayz_actionInProgress = false; };
-
+if ((count _knifeArray) < 1) exitWith {
+ if (_isZombie) then {
+ format[localize "str_missing_to_do_this",localize "STR_EQUIP_NAME_4"] call dayz_rollingMessages;
+ } else {
+ localize "str_cannotgut" call dayz_rollingMessages;
+ };
+ dayz_actionInProgress = false;
+};
if ((count _knifeArray > 0) and !_hasHarvested) then {
private "_qty";
@@ -32,7 +42,7 @@ if ((count _knifeArray > 0) and !_hasHarvested) then {
_activeKnife = _knifeArray call BIS_fnc_selectRandom;
//Get Animal Type
- _isListed = isClass _config;
+ _isListed = isClass (configFile >> "CfgSurvival" >> "Meat" >> _type);
_text = getText (configFile >> "CfgVehicles" >> _type >> "displayName");
player playActionNow "Medic";
@@ -46,7 +56,7 @@ if ((count _knifeArray > 0) and !_hasHarvested) then {
_item setVariable ["meatHarvested",true,true];
- _qty = if (_isListed) then {getNumber (_config >> "yield")} else {2};
+ _qty = if (_isListed) then {getNumber (configFile >> "CfgSurvival" >> "Meat" >> _type >> "yield")} else {2};
if (_activeKnife == "ItemKnifeBlunt") then { _qty = round(_qty / 2); };
if (local _item) then {
@@ -83,7 +93,15 @@ if ((count _knifeArray > 0) and !_hasHarvested) then {
};
uiSleep 6;
- _string = format[localize "str_success_gutted_animal",_text,_qty];
+ if (_isZombie) then {
+ // Reduce humanity for gutting zeds
+ _humanity = player getVariable ["humanity",0];
+ _humanity = _humanity - 10;
+ player setVariable ["humanity",_humanity,true];
+ _string = format[localize "str_success_gutted_zombie",_text]; //%1 has been gutted, zombie parts are now on the carcass
+ } else {
+ _string = format[localize "str_success_gutted_animal",_text,_qty];
+ };
closeDialog 0;
uiSleep 0.02;
_string call dayz_rollingMessages;
diff --git a/SQF/dayz_code/actions/gather_zparts.sqf b/SQF/dayz_code/actions/gather_zparts.sqf
deleted file mode 100644
index 17958140a..000000000
--- a/SQF/dayz_code/actions/gather_zparts.sqf
+++ /dev/null
@@ -1,83 +0,0 @@
-private ["_item","_type","_hasHarvested","_config","_knifeArray","_playerNear","_isListed","_activeKnife","_text","_sharpnessRemaining","_qty","_chance","_string"];
-if (dayz_actionInProgress) exitWith {localize "str_epoch_player_31" call dayz_rollingMessages;};
-dayz_actionInProgress = true;
-
-_item = _this select 3;
-_type = typeOf _item;
-_hasHarvested = _item getVariable ["meatHarvested",false];
-//_config = configFile >> "CfgSurvival" >> "Meat" >> _type;
-_knifeArray = [];
-player removeAction s_player_butcher;
-s_player_butcher = -1;
-
-_playerNear = {isPlayer _x} count ((getPosATL _item) nearEntities ["CAManBase", 10]) > 1;
-if (_playerNear) exitWith {localize "str_pickup_limit_5" call dayz_rollingMessages; dayz_actionInProgress = false;};
-
-//Count how many active tools the player has
-{
- if (_x in items player) then {_knifeArray set [count _knifeArray, _x];};
-} count Dayz_Gutting;
-
-if ((count _knifeArray) < 1) exitWith {format[localize "str_missing_to_do_this",localize "STR_EQUIP_NAME_4"] call dayz_rollingMessages; dayz_actionInProgress = false; };
-
-if ((count _knifeArray > 0) && !_hasHarvested) then {
- private "_qty";
-
- //Select random can from array
- _activeKnife = _knifeArray call BIS_fnc_selectRandom;
-
- //Get Zombie Type
- //_isListed = isClass _config;
- _text = getText (configFile >> "CfgVehicles" >> _type >> "displayName");
-
- player playActionNow "Medic";
- [player,"gut",0,false,10] call dayz_zombieSpeak;
- [player,10,true,(getPosATL player)] call player_alertZombies;
- ["Working",0,[20,40,15,0]] call dayz_NutritionSystem; // Added Nutrition-Factor for work
-
- _item setVariable ["meatHarvested",true,true];
-
- _qty = 2; //not used for gutting zombies
- if (_activeKnife == "ItemKnifeBlunt") then { _qty = round(_qty / 2); };
-
- if (local _item) then {
- [_item,_qty] spawn local_gutObjectZ; //leave as spawn (sleeping in loops will work but can freeze the script)
- } else {
- PVDZE_plr_GutBodyZ = [_item,_qty];
- publicVariable "PVDZE_plr_GutBodyZ";
- };
-
- if (dayz_knifeDulling) then {
- _sharpnessRemaining = getText (configFile >> "cfgWeapons" >> _activeKnife >> "sharpnessRemaining");
- switch _activeKnife do {
- case "ItemKnife" : {
- //_chance = getNumber (configFile >> "cfgWeapons" >> _activeKnife >> "chance");
- if ([0.2] call fn_chance) then {
- player removeWeapon _activeKnife;
- player addWeapon _sharpnessRemaining;
-
- //systemChat (localize "str_info_bluntknife");
- localize "str_info_bluntknife" call dayz_rollingMessages;
- };
- };
- case "ItemKnifeBlunt" : {
- //do nothing
- };
- default {
- player removeWeapon _activeKnife;
- player addWeapon _sharpnessRemaining;
- };
- };
- };
- // Reduce humanity for gutting zeds
- _humanity = player getVariable ["humanity",0];
- _humanity = _humanity - 10;
- player setVariable ["humanity",_humanity,true];
-
- uiSleep 6;
- _string = format[localize "str_success_gutted_zombie",_text]; //%1 has been gutted, zombie parts are now on the carcass
- closeDialog 0;
- uiSleep 0.02;
- _string call dayz_rollingMessages;
-};
-dayz_actionInProgress = false;
\ No newline at end of file
diff --git a/SQF/dayz_code/actions/player_pushPlane.sqf b/SQF/dayz_code/actions/player_pushPlane.sqf
index 5316e2411..48ad16fdd 100644
--- a/SQF/dayz_code/actions/player_pushPlane.sqf
+++ b/SQF/dayz_code/actions/player_pushPlane.sqf
@@ -1,8 +1,5 @@
private ["_dir","_nearPlayers","_object","_speed","_vel"];
-_object = _this select 3;
-
-player removeAction s_player_pushPlane;
-s_player_pushPlane = -1;
+_object = _this;
if (!local _object) exitWith {
localize "str_actions_pilot_seat" call dayz_rollingMessages;
diff --git a/SQF/dayz_code/actions/pzombie/pz_feed.sqf b/SQF/dayz_code/actions/pzombie/pz_feed.sqf
index 69a23246d..db005e413 100644
--- a/SQF/dayz_code/actions/pzombie/pz_feed.sqf
+++ b/SQF/dayz_code/actions/pzombie/pz_feed.sqf
@@ -4,9 +4,6 @@ _item = _this select 3;
disableSerialization;
-player removeAction s_player_butcher;
-s_player_butcher = 1;
-
if !(alive _item) then {
_rnd = (round(random 4)) + 1;
@@ -94,5 +91,3 @@ if !(alive _item) then {
format[localize "str_player_consumed",getText(configFile >> "CfgVehicles" >> _animalType >> "displayName")] call dayz_rollingMessages;
player switchmove "";
};
-
-s_player_butcher = -1;
diff --git a/SQF/dayz_code/actions/repair_cancel.sqf b/SQF/dayz_code/actions/repair_cancel.sqf
index 7cd6319c5..54a347f6e 100644
--- a/SQF/dayz_code/actions/repair_cancel.sqf
+++ b/SQF/dayz_code/actions/repair_cancel.sqf
@@ -1,3 +1,2 @@
{dayz_myCursorTarget removeAction _x} count s_player_repairActions;s_player_repairActions = [];
-s_player_repair_crtl = -1;
dayz_myCursorTarget = objNull;
\ No newline at end of file
diff --git a/SQF/dayz_code/actions/repair_vehicle.sqf b/SQF/dayz_code/actions/repair_vehicle.sqf
index a2ddf688d..af00b62e7 100644
--- a/SQF/dayz_code/actions/repair_vehicle.sqf
+++ b/SQF/dayz_code/actions/repair_vehicle.sqf
@@ -1,6 +1,6 @@
private ["_part","_cancel","_color","_string","_handle","_damage","_cmpt","_vehicle","_hitpoints","_damagePercent","_configVeh"];
-_vehicle = _this select 3;
+_vehicle = _this;
{dayz_myCursorTarget removeAction _x} count s_player_repairActions;s_player_repairActions = [];
dayz_myCursorTarget = _vehicle;
@@ -39,5 +39,4 @@ if (count _hitpoints > 0) then {
// Localized in A2OA\Expansion\dta\languagecore
_cancel = dayz_myCursorTarget addAction [localize "str_action_cancel_action", "\z\addons\dayz_code\actions\repair_cancel.sqf","repair", 0, true, false];
s_player_repairActions set [count s_player_repairActions,_cancel];
- s_player_repair_crtl = 1;
};
\ No newline at end of file
diff --git a/SQF/dayz_code/actions/salvage.sqf b/SQF/dayz_code/actions/salvage.sqf
index cdbe3cb8a..f7d653812 100644
--- a/SQF/dayz_code/actions/salvage.sqf
+++ b/SQF/dayz_code/actions/salvage.sqf
@@ -19,7 +19,6 @@ _namePart = getText(configFile >> "cfgMagazines" >> _part >> "displayName");
{_vehicle removeAction _x} count s_player_repairActions;
s_player_repairActions = [];
-s_player_repair_crtl = 1;
if (_hasToolbox) then {
player playActionNow "Medic";
@@ -94,7 +93,6 @@ if (_hasToolbox) then {
};
dayz_myCursorTarget = objNull;
-s_player_repair_crtl = -1;
dayz_salvageInProgress = false;
//adding melee mags back if needed
diff --git a/SQF/dayz_code/actions/salvage_vehicle.sqf b/SQF/dayz_code/actions/salvage_vehicle.sqf
index 9894de69d..f7c6cce30 100644
--- a/SQF/dayz_code/actions/salvage_vehicle.sqf
+++ b/SQF/dayz_code/actions/salvage_vehicle.sqf
@@ -1,7 +1,7 @@
private ["_part","_color","_vehicle","_PlayerNear","_hitpoints","_isATV","_is6WheelType","_HasNoGlassKind",
"_6WheelTypeArray","_NoGlassArray","_NoExtraWheelsArray","_RemovedPartsArray","_damage","_cmpt","_configVeh","_damagePercent","_string","_handle","_cancel","_type"];
-_vehicle = _this select 3;
+_vehicle = _this;
{dayz_myCursorTarget removeAction _x} count s_player_repairActions;s_player_repairActions = [];
_PlayerNear = {isPlayer _x} count ((getPosATL _vehicle) nearEntities ["CAManBase", 10]) > 1;
@@ -73,5 +73,4 @@ if (count _hitpoints > 0 ) then {
// Localized in A2OA\Expansion\dta\languagecore
_cancel = dayz_myCursorTarget addAction [localize "str_action_cancel_action", "\z\addons\dayz_code\actions\repair_cancel.sqf","repair", 0, true, false];
s_player_repairActions set [count s_player_repairActions,_cancel];
- s_player_repair_crtl = 1;
};
\ No newline at end of file
diff --git a/SQF/dayz_code/actions/study_body.sqf b/SQF/dayz_code/actions/study_body.sqf
index a664c047c..dcf5415fb 100644
--- a/SQF/dayz_code/actions/study_body.sqf
+++ b/SQF/dayz_code/actions/study_body.sqf
@@ -1,6 +1,6 @@
private["_body","_name","_method","_methodStr","_message","_killingBlow"];
-_body = _this select 3;
+_body = _this;
_name = _body getVariable["bodyName","unknown"];
_method = _body getVariable["deathType","unknown"];
_methodStr = localize format ["str_death_%1",_method];
diff --git a/SQF/dayz_code/actions/userActionConditions.sqf b/SQF/dayz_code/actions/userActionConditions.sqf
new file mode 100644
index 000000000..976176889
--- /dev/null
+++ b/SQF/dayz_code/actions/userActionConditions.sqf
@@ -0,0 +1,22 @@
+#define CAN_DO (!r_drag_sqf && !r_player_unconscious && getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder") != 1)
+#define HAS_TOOLBOX ("ItemToolbox" in items player)
+#define IN_VEHICLE (vehicle player != player)
+#define IS_ALIVE (damage _object < 1)
+#define IS_BIKE (_object isKindOf "Bicycle")
+#define IS_PZOMBIE (player isKindOf "PZombie_VB")
+
+private ["_action","_object","_show"];
+
+_action = _this select 0;
+_object = _this select 1;
+
+_show = switch _action do {
+ case "Butcher": {!IS_ALIVE && !IN_VEHICLE && CAN_DO && !(_object getVariable["meatHarvested",false]) && !IS_PZOMBIE};
+ case "PushPlane": {IS_ALIVE && !IN_VEHICLE && CAN_DO && count crew _object == 0 && !isEngineOn _object && !IS_PZOMBIE};
+ case "Repair": {IS_ALIVE && !IN_VEHICLE && CAN_DO && _object != dayz_myCursorTarget && HAS_TOOLBOX};
+ case "Salvage": {IS_ALIVE && !IN_VEHICLE && CAN_DO && _object != dayz_myCursorTarget && HAS_TOOLBOX && !IS_BIKE && (DZE_salvageLocked or !locked _object)};
+ case "StudyBody": {!IS_ALIVE && !IN_VEHICLE && !(_object isKindOf "zZombie_base")};
+ default {false};
+};
+
+_show
\ No newline at end of file
diff --git a/SQF/dayz_code/compile/fn_selfActions.sqf b/SQF/dayz_code/compile/fn_selfActions.sqf
index 1019fbb0e..77155132e 100644
--- a/SQF/dayz_code/compile/fn_selfActions.sqf
+++ b/SQF/dayz_code/compile/fn_selfActions.sqf
@@ -14,7 +14,7 @@ private ["_canPickLight","_text","_dir","_canDoThis","_w2m","_bb","_waterHoles",
"_isModular","_isModularDoor","_isHouse","_isGate","_isFence","_isLockableGate","_isUnlocked","_isOpen","_isClosed","_ownerArray","_ownerBuildLock",
"_ownerPID","_speed","_dog","_vehicle","_inVehicle","_cursorTarget","_primaryWeapon","_currentWeapon","_magazinesPlayer","_onLadder","_canDo",
"_nearLight","_vehicleOwnerID","_hasHotwireKit","_isPZombie","_dogHandle","_allowedDistance","_id","_upgrade","_weaponsPlayer","_hasCrowbar",
-"_isPlane","_allowed","_hasAccess","_uid"];
+"_allowed","_hasAccess","_uid"];
_vehicle = vehicle player;
_inVehicle = (_vehicle != player);
@@ -238,12 +238,10 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur
_typeOfCursorTarget = typeOf _cursorTarget;
_isVehicle = _cursorTarget isKindOf "AllVehicles";
_isBicycle = _cursorTarget isKindOf "Bicycle";
- _isPlane = _cursorTarget isKindOf "Plane";
_isMan = _cursorTarget isKindOf "Man";
_isAnimal = _cursorTarget isKindOf "Animal";
_isZombie = _cursorTarget isKindOf "zZombie_base";
_isDestructable = _cursorTarget isKindOf "BuiltItems";
- _isHarvested = _cursorTarget getVariable["meatHarvested",false];
_isGenerator = _cursorTarget isKindOf "Generator_DZ";
//_isVehicletype = _typeOfCursorTarget in ["ATV_US_EP1","ATV_CZ_EP1"]; //Checked in player_flipvehicle
_isFuel = false;
@@ -273,7 +271,7 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur
};
_isDisallowRefuel = _typeOfCursorTarget in ["M240Nest_DZ","MMT_Civ","MMT_USMC","Old_bike_TK_CIV_EP1","Old_bike_TK_INS_EP1"];
- _isDog = (_cursorTarget isKindOf "DZ_Pastor" || _cursorTarget isKindOf "DZ_Fin");
+ _isDog = (_cursorTarget isKindOf "Pastor" || _cursorTarget isKindOf "Fin");
_isModular = _cursorTarget isKindOf "ModularItems";
_isModularDoor = _typeOfCursorTarget in ["Land_DZE_WoodDoor","Land_DZE_LargeWoodDoor","Land_DZE_GarageWoodDoor","CinderWallDoor_DZ","CinderWallDoorSmall_DZ"];
_player_deleteBuild = false;
@@ -301,15 +299,6 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur
s_player_flipveh = -1;
};
- if (_isPlane && {_isAlive} && {count (crew _cursorTarget) == 0}) then {
- if (s_player_pushPlane < 0) then {
- s_player_pushPlane = player addAction [format[localize "str_actions_push",_text], "\z\addons\dayz_code\actions\player_pushPlane.sqf",_cursorTarget,1,true,true];
- };
- } else {
- player removeAction s_player_pushPlane;
- s_player_pushPlane = -1;
- };
-
//Allow player to fill Fuel can
if (_hasEmptyFuelCan && {_isFuel} && {!a_player_jerryfilling} && {_isAlive}) then {
if (s_player_fillfuel < 0) then {
@@ -375,27 +364,6 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur
s_player_siphonfuel = -1;
};
- //Harvested
- if (!_isAlive && (_isAnimal or _isZombie) && !_isHarvested) then {
- //_hasknife = {_x in ["ItemKnife","ItemKnife5","ItemKnife4","ItemKnife3","ItemKnife2","ItemKnifeBlunt"]} count _itemsPlayer > 0;
- //make sure the player has a knife
- //if (_hasknife) then {
- if (s_player_butcher < 0) then {
- if (_isZombie) then {
- s_player_butcher = player addAction [localize "STR_EPOCH_ACTIONS_GUTZOM", "\z\addons\dayz_code\actions\gather_zparts.sqf",_cursorTarget, 0, true, true];
- } else {
- s_player_butcher = player addAction [localize "str_actions_self_04", "\z\addons\dayz_code\actions\gather_meat.sqf",_cursorTarget, 3, true, true];
- };
- };
- //} else {
- // player removeAction s_player_butcher;
- // s_player_butcher = -1;
- //};
- } else {
- player removeAction s_player_butcher;
- s_player_butcher = -1;
- };
-
//Fireplace Actions check
if ((_cursorTarget call isInflamed) or (inflamed _cursorTarget)) then {
_hasRawMeat = {_x in Dayz_meatraw} count _magazinesPlayer > 0;
@@ -526,16 +494,6 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur
player removeAction s_player_sleep;
s_player_sleep = -1;
};
-
- //Study Body
- if (_isMan && {!_isAlive} && {!_isZombie} && {!_isAnimal}) then {
- if (s_player_studybody < 0) then {
- s_player_studybody = player addAction [localize "str_action_studybody", "\z\addons\dayz_code\actions\study_body.sqf",_cursorTarget, 0, false, true];
- };
- } else {
- player removeAction s_player_studybody;
- s_player_studybody = -1;
- };
/*
//Carbomb
_hasCarBomb = "ItemCarBomb" in _magazinesPlayer;
@@ -548,30 +506,6 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur
s_player_attach_bomb = -1;
};
*/
- //Repairing Vehicles
- if (_isVehicle && {!_isMan} && {dayz_myCursorTarget != _cursorTarget} && {_hasToolbox} && {damage _cursorTarget < 1} && {_typeOfCursorTarget != "M240Nest_DZ"}) then {
- if (s_player_repair_crtl < 0) then {
- dayz_myCursorTarget = _cursorTarget;
- _menu = dayz_myCursorTarget addAction [localize "str_actions_repairveh", "\z\addons\dayz_code\actions\repair_vehicle.sqf",_cursorTarget, 0, true, false];
- if (!_isBicycle) then { //Bike wheels should not give full size tires. Also model does not update to show removed wheels.
- if (!DZE_salvageLocked) then {
- if (!locked _cursorTarget) then {
- _menu1 = dayz_myCursorTarget addAction [localize "str_actions_salvageveh", "\z\addons\dayz_code\actions\salvage_vehicle.sqf",_cursorTarget, 0, true, false];
- s_player_repairActions set [count s_player_repairActions,_menu1];
- };
- } else {
- _menu1 = dayz_myCursorTarget addAction [localize "str_actions_salvageveh", "\z\addons\dayz_code\actions\salvage_vehicle.sqf",_cursorTarget, 0, true, false];
- s_player_repairActions set [count s_player_repairActions,_menu1];
- };
- };
- s_player_repairActions set [count s_player_repairActions,_menu];
- s_player_repair_crtl = 1;
- } else {
- {dayz_myCursorTarget removeAction _x} forEach s_player_repairActions;
- s_player_repairActions = [];
- s_player_repair_crtl = -1;
- };
- };
/* //Vanilla base building currently not used in Epoch
// House locking and unlocking
_isHouse = _typeOfCursorTarget in ["SurvivorWorkshopAStage5", "SurvivorWorkshopBStage5", "SurvivorWorkshopCStage5"];
@@ -1090,20 +1024,12 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur
s_player_plot_take_ownership = -1;
player removeAction s_player_plotManagement;
s_player_plotManagement = -1;
- {dayz_myCursorTarget removeAction _x} count s_player_repairActions;s_player_repairActions = [];
- player removeAction s_player_repair_crtl;
- s_player_repair_crtl = -1;
- dayz_myCursorTarget = objNull;
player removeAction s_player_flipveh;
s_player_flipveh = -1;
- player removeAction s_player_pushPlane;
- s_player_pushPlane = -1;
player removeAction s_player_sleep;
s_player_sleep = -1;
player removeAction s_player_deleteBuild;
s_player_deleteBuild = -1;
- player removeAction s_player_butcher;
- s_player_butcher = -1;
player removeAction s_player_cook;
s_player_cook = -1;
player removeAction s_player_boil;
@@ -1116,8 +1042,6 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur
s_player_packtentinfected = -1;
player removeAction s_player_fillfuel;
s_player_fillfuel = -1;
- player removeAction s_player_studybody;
- s_player_studybody = -1;
//fuel
player removeAction s_player_fillfuel210;
s_player_fillfuel210 = -1;
diff --git a/SQF/dayz_code/compile/local_gutObject.sqf b/SQF/dayz_code/compile/local_gutObject.sqf
index b00163d2c..d4a50f6b7 100644
--- a/SQF/dayz_code/compile/local_gutObject.sqf
+++ b/SQF/dayz_code/compile/local_gutObject.sqf
@@ -1,6 +1,14 @@
+private ["_amount","_animalbody","_rawfoodtype","_qty"];
+
_animalbody = _this select 0;
_qty = _this select 1;
-_rawfoodtype = getText (configFile >> "CfgSurvival" >> "Meat" >> typeOf _animalbody >> "rawfoodtype");
+
+if (_animalbody isKindOf "zZombie_base") then {
+ _qty = 1;
+ _rawfoodtype = "ItemZombieParts";
+} else {
+ _rawfoodtype = getText (configFile >> "CfgSurvival" >> "Meat" >> typeOf _animalbody >> "rawfoodtype");
+};
if (local _animalbody) then {
for "_i" from 1 to _qty do {
diff --git a/SQF/dayz_code/compile/local_gutObjectZ.sqf b/SQF/dayz_code/compile/local_gutObjectZ.sqf
deleted file mode 100644
index 223a83452..000000000
--- a/SQF/dayz_code/compile/local_gutObjectZ.sqf
+++ /dev/null
@@ -1,31 +0,0 @@
-private "_zombiebody";
-_zombiebody = _this select 0;
-// _qty = _this select 1;
-
-if (local _zombiebody) then {
- _zombiebody addMagazine "ItemZombieParts";
-
- [time, _zombiebody] spawn {
- private ["_timer","_body"];
- _timer = _this select 0;
- _body = _this select 1;
- _pos = getPosATL _body;
- while {(count magazines _body > 0) && (time - _timer < 300)} do {
- uiSleep 5;
- };
-
- hideBody _body;
-
- _inRange = _pos nearEntities ["CAManBase",100];
- {
- if ((isPlayer _x) && {_x != player}) then {
- PVDZ_send = [_x,"HideBody",[_body]];
- publicVariableServer "PVDZ_send";
- };
- } count _inRange;
-
- uiSleep 5;
- deleteVehicle _body;
- true
- };
-};
\ No newline at end of file
diff --git a/SQF/dayz_code/init/compiles.sqf b/SQF/dayz_code/init/compiles.sqf
index de36543a5..278cec3f4 100644
--- a/SQF/dayz_code/init/compiles.sqf
+++ b/SQF/dayz_code/init/compiles.sqf
@@ -76,6 +76,7 @@ if (!isDedicated) then {
//zombie_generateSwarm = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\swarm_generate.sqf";
//actions
+ userActionConditions = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\userActionConditions.sqf";
player_addToolbelt = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_addToolbelt.sqf";
player_addtoBack = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_addtoBack.sqf";
player_reloadMag = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_reloadMags.sqf";
@@ -124,6 +125,11 @@ if (!isDedicated) then {
//object_remove = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\remove.sqf";
player_fixHatchet = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_fixTools.sqf";
player_sharpen = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_sharpen.sqf";
+ player_butcher = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\gather_meat.sqf";
+ player_pushPlane = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_pushPlane.sqf";
+ player_repairVehicle = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\repair_vehicle.sqf";
+ player_salvageVehicle = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\salvage_vehicle.sqf";
+ player_studyBody = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\study_body.sqf";
//ui
player_toggleSoundMute = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_toggleSoundMute.sqf";
@@ -682,7 +688,6 @@ call compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\psrnd.sqf";
BIS_fnc_numberDigits = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_numberDigits.sqf";
BIS_fnc_numberText = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_numberText.sqf";
local_lockUnlock = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\local_lockUnlock.sqf"; //When vehicle is local to unit perform locking vehicle
-local_gutObjectZ = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\local_gutObjectZ.sqf"; //Generated on the server (or local to unit) when gutting an object
local_spawnObjects = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\local_spawnObjects.sqf";
FNC_GetSetPos = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fnc_getSetPos.sqf";
FNC_GetPos = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fnc_getPos.sqf";
diff --git a/SQF/dayz_code/init/publicEH.sqf b/SQF/dayz_code/init/publicEH.sqf
index d4b4f6b02..9bac8c744 100644
--- a/SQF/dayz_code/init/publicEH.sqf
+++ b/SQF/dayz_code/init/publicEH.sqf
@@ -13,7 +13,6 @@
// EPOCH ADDITIONS
"PVDZE_veh_Lock" addPublicVariableEventHandler {(_this select 1) call local_lockUnlock};
-"PVDZE_plr_GutBodyZ" addPublicVariableEventHandler {(_this select 1) spawn local_gutObjectZ};
"PVDZE_veh_Init" addPublicVariableEventHandler {(_this select 1) call fnc_veh_ResetEH};
"PVDZE_obj_Remove" addPublicVariableEventHandler {_pos = (_this select 1); _obj = nearestObjects [_pos, DZE_isWreckBuilding, 5]; if (count _obj > 0) then {deleteVehicle (_obj select 0);};};
if (dayz_groupSystem) then {
diff --git a/SQF/dayz_code/init/variables.sqf b/SQF/dayz_code/init/variables.sqf
index 617dd3d93..2d0a73d3d 100644
--- a/SQF/dayz_code/init/variables.sqf
+++ b/SQF/dayz_code/init/variables.sqf
@@ -170,7 +170,6 @@ dayz_resetSelfActions = {
s_player_cook = -1;
s_player_boil = -1;
s_player_fireout = -1;
- s_player_butcher = -1;
s_player_packtent = -1;
s_player_packtentinfected = -1;
s_player_fillwater = -1;
@@ -179,20 +178,17 @@ dayz_resetSelfActions = {
s_player_grabflare = -1;
s_player_removeflare = -1;
s_player_painkiller = -1;
- s_player_studybody = -1;
s_build_Sandbag1_DZ = -1;
s_build_Hedgehog_DZ = -1;
s_build_Wire_cat1 = -1;
s_player_deleteBuild = -1;
s_player_flipveh = -1;
- s_player_pushPlane = -1;
s_player_stats = -1;
s_player_sleep = -1;
s_player_fillfuel210 = -1;
s_player_fillfuel20 = -1;
s_player_fillfuel5 = -1;
s_player_siphonfuel = -1;
- s_player_repair_crtl = -1;
s_player_fishing = -1;
s_player_fishing_veh = -1;
s_player_gather = -1;
@@ -315,7 +311,6 @@ r_public_blood = r_player_blood;
r_player_bloodDanger = r_player_bloodTotal * 0.2;
r_player_actions = [];
r_handlerCount = 0;
-r_action_repair = false;
r_action_targets = [];
r_pitchWhine = false;
r_isBandit = false;
diff --git a/SQF/dayz_code/stringtable.xml b/SQF/dayz_code/stringtable.xml
index df5af6bdb..0494b803b 100644
--- a/SQF/dayz_code/stringtable.xml
+++ b/SQF/dayz_code/stringtable.xml
@@ -871,8 +871,7 @@
Otočit %1
- Push %1
- %1 schieben
+ Push Plane
Enable Stats
diff --git a/SQF/dayz_code/system/scheduler/sched_animals.sqf b/SQF/dayz_code/system/scheduler/sched_animals.sqf
index bf092eb00..bce4ccea8 100644
--- a/SQF/dayz_code/system/scheduler/sched_animals.sqf
+++ b/SQF/dayz_code/system/scheduler/sched_animals.sqf
@@ -65,7 +65,7 @@ sched_animals = {
_type = _animalssupported select floor random count _animalssupported;
};
if (_type == "Dog") then {
- _animalssupported = ["DZ_Fin","DZ_Pastor"];
+ _animalssupported = ["Fin","Pastor"];
_type = _animalssupported select floor random count _animalssupported;
};
_root = configFile >> "CfgVehicles" >> _type;
@@ -79,7 +79,7 @@ sched_animals = {
if (count _PosList > 0) then {
_Pos = (_PosList select 0) select 0;
if ((!surfaceIsWater _Pos) AND {(0 == {alive _x} count (_Pos nearEntities [ AllPlayers, 200 ]))}) then {
- _agent = if (_type == "DZ_Pastor") then {createAgent [_type, _Pos, [], 0, "NONE"]} else {createAgent [_type, _Pos, [], 0, "FORM"]};
+ _agent = if (_type == "Pastor") then {createAgent [_type, _Pos, [], 0, "NONE"]} else {createAgent [_type, _Pos, [], 0, "FORM"]};
[_pos,_agent] execFSM "\z\addons\dayz_code\system\animal_agent.fsm";
_agent setVariable [ "", true ];
_count = _count + 1;
diff --git a/Server Files/Battleye/createvehicle.txt b/Server Files/Battleye/createvehicle.txt
index b991b7fde..c41c24581 100644
--- a/Server Files/Battleye/createvehicle.txt
+++ b/Server Files/Battleye/createvehicle.txt
@@ -1,5 +1,5 @@
//new
-5 !(^DZ_|^z_|^pz_|^WeaponHolder|Box|dog|PZombie_VB|^Smoke|^Chem|^._40mm|_DZ$|^Trap) !=(SeaGull|SmallSecondary|HelicopterExplo(Small|Big)|DesertTentStorage|Stash(Small|Medium)(|[1-4])|(|Dome)TentStorage(|[0-4])) !=(CZ_VestPouch_EP1|R_M136_AT|R_MEEWS_HEAT|Wire_cat1) !=(JackDaniels|(Tin|Soda)Can|RoadFlare|WoodenArrowF|zZombie_Base|Parachute(West|C)|Grenade(_|HandTimed)(West|East)) !=(CMflareAmmo|Pipebomb) !=(WildBoar|Rabbit|Sheep|Sheep(01_EP1|02_EP1)|Goat|Goat(01_EP1|02_EP1)|Hen|Cow0[1234]|Cow01_EP1|Cock) !=Blood_Trail_DZ !^(Wooden|Metal)Fence !^WoodenGate_ !=(ShantyHouse(|Stage[2-7])|SurvivorWorkshop(|Stage2|[ABC]Stage[345])|WorkBench) !=explosive_bolt !"Land_" !=Sign_(arrow_down_large|sphere10cm)_EP1 !="MAP_c_fern" !="Grave" !"VaultStorage" !="LaserTargetW" !Fort_ !Nest !CMflare !="GyroGrenade" !="CraterLong" !="pook_camel_HE"
+5 !(^DZ_|^z_|^pz_|^WeaponHolder|Box|dog|PZombie_VB|^Smoke|^Chem|^._40mm|_DZ$|^Trap) !=(SeaGull|SmallSecondary|HelicopterExplo(Small|Big)|DesertTentStorage|Stash(Small|Medium)(|[1-4])|(|Dome)TentStorage(|[0-4])) !=(CZ_VestPouch_EP1|R_M136_AT|R_MEEWS_HEAT|Wire_cat1) !=(JackDaniels|(Tin|Soda)Can|RoadFlare|WoodenArrowF|zZombie_Base|Parachute(West|C)|Grenade(_|HandTimed)(West|East)) !=(CMflareAmmo|Pipebomb) !=(WildBoar|Rabbit|Sheep|Sheep(01_EP1|02_EP1)|Goat|Goat(01_EP1|02_EP1)|Hen|Cow0[1234]|Cow01_EP1|Cock) !=Blood_Trail_DZ !^(Wooden|Metal)Fence !^WoodenGate_ !=(ShantyHouse(|Stage[2-7])|SurvivorWorkshop(|Stage2|[ABC]Stage[345])|WorkBench) !=explosive_bolt !"Land_" !=Sign_(arrow_down_large|sphere10cm)_EP1 !="MAP_c_fern" !="Grave" !"VaultStorage" !="LaserTargetW" !Fort_ !Nest !CMflare !="GyroGrenade" !="CraterLong" !="pook_camel_HE" !="Fin" !="Pastor"
5 SeaGull //set to its own line so we know which kick we have here with out looking in the logs
1 ^DZ_ !=DZ_(British_ACU|Czech_Vest_Pouch|(TK_Assault_Pack|Patrol_Pack|Assault_Pack|ALICE_Pack|CivilBackpack|Backpack)_EP1)
1 ^z_ !=z_((|new_)villager[1234]|(|new_)worker[1234]|teacher|hunter|suit[12]|soldier(|_pilot|_heavy)|policeman|doctor|priest)
diff --git a/Server Files/Battleye/publicvariable.txt b/Server Files/Battleye/publicvariable.txt
index db5302300..b77c03412 100644
--- a/Server Files/Battleye/publicvariable.txt
+++ b/Server Files/Battleye/publicvariable.txt
@@ -1,3 +1,3 @@
//new
-5 !=(remExField|remExFP) !=(PVCDZ_obj_GutBody|drn_AskServerDynamicWeatherEventArgs|BIS_effects_gepv|achievement|dayzFlies) !=PVDZ_(drg_(RaDrag|RaLW|RLact)|getTickTime|hlt_Bleed|obj_(Delete|Publish|RoadFlare|Destroy|Fire)|veh_Save|veh_SF) !=PVDZ_(plr_(Death|Login[12]|LoginRecord|Save|SwitchMove)|Server(_Simulation|StoreVar)|sec_atp) !=PVDZ_(playerMedicalSync|object_replace|groupInvite) !=PVDZ_(send(|Unconscious)) !=PVDZ_Server_(buildLock|LogIt|UpdateGroup) !=PVDZ_Server_process(Code|SetAccessCode) !=PVDZ_objgather_(Delete|Knockdown) !=PVDZE_(obj_(Delete|Publish|Swap|Trade)|fullobj_Publish|maintainArea|veh_(Lock|Publish2|Upgrade)|handleSafeGear|plr_(DeathB|FriendRQ|GutBodyZ|TradeMenu))
+5 !=(remExField|remExFP) !=(PVCDZ_obj_GutBody|drn_AskServerDynamicWeatherEventArgs|BIS_effects_gepv|achievement|dayzFlies) !=PVDZ_(drg_(RaDrag|RaLW|RLact)|getTickTime|hlt_Bleed|obj_(Delete|Publish|RoadFlare|Destroy|Fire)|veh_Save|veh_SF) !=PVDZ_(plr_(Death|Login[12]|LoginRecord|Save|SwitchMove)|Server(_Simulation|StoreVar)|sec_atp) !=PVDZ_(playerMedicalSync|object_replace|groupInvite) !=PVDZ_(send(|Unconscious)) !=PVDZ_Server_(buildLock|LogIt|UpdateGroup) !=PVDZ_Server_process(Code|SetAccessCode) !=PVDZ_objgather_(Delete|Knockdown) !=PVDZE_(obj_(Delete|Publish|Swap|Trade)|fullobj_Publish|maintainArea|veh_(Lock|Publish2|Upgrade)|handleSafeGear|plr_(DeathB|FriendRQ|TradeMenu))
1=BIS_effects_gepv|PVDZ_(drg_RaDrag|hlt_Bleed|obj_Delete|obj_Destroy|obj_Publish|plr_Death|plr_LoginRecord|sec_atp|send|veh_SF)
\ No newline at end of file
diff --git a/Server Files/Battleye/scripts.txt b/Server Files/Battleye/scripts.txt
index 184a7f023..b5eb6144b 100644
--- a/Server Files/Battleye/scripts.txt
+++ b/Server Files/Battleye/scripts.txt
@@ -8,7 +8,7 @@
5 "buttonSetAction"
5 "callExtension"
5 "closeDisplay" !"'closeDisplay'" !"closeDisplay 0" !"closeDisplay 2" !"if (!isNil \"closeDisplay\") then {"
-5 "createAgent" !="_agent = createAgent [_type, _position, [], _radius, \"CAN_COLLIDE\"];" !="_agent = if (_type == \"DZ_Pastor\") then {createAgent [_type, _Pos, [], 0, \"NONE\"]} else {createAgent [_type, _Pos, [], 0, \"FORM\"]};" !="_dog = createAgent [_type, _Pos, [], 0, \"NONE\"];"
+5 "createAgent" !="_agent = createAgent [_type, _position, [], _radius, \"CAN_COLLIDE\"];" !="_agent = if (_type == \"Pastor\") then {createAgent [_type, _Pos, [], 0, \"NONE\"]} else {createAgent [_type, _Pos, [], 0, \"FORM\"]};" !="_dog = createAgent [_type, _Pos, [], 0, \"NONE\"];"
5 "createDialog" !="_region = createDialog \"RscDisplaySpawnSelecter\";" !="_gender = createDialog 'RscDisplayGenderSelect';" !="_dialog = createDialog \"bloodTest\";" !="createDialog 'RscDisplayCraftingMenu';" !="createDialog \"DAYZ_PADLOCK\";" !="createDialog \"horde_journal_front_cover\";" !="createDialog 'horde_journal_pages_headshots';" !="createDialog 'horde_journal_pages_murders';" !="createDialog 'horde_journal_pages_journal_humanity';" !="createDialog 'horde_journal_pages_zombies';" !="createDialog 'horde_journal_pages_bandits';" !="createDialog 'horde_journal_pages_humanity_art';" !"Z_ResetContainer = true;\ncreateDialog \"AdvancedTrading\";" !"createDialog \"DoorManagement\";\ncall DoorNearbyHumans;" !="createDialog \"ComboLockUI\";" !"createdialog \"PlotManagement\";\ncall PlotNearbyHumans;" !"_trader_data = (_this select 3);\n\n_dialog = createdialog \"TraderDialog\";" !="_ok = createdialog \"SafeKeyPad\";" !="_ok = createdialog \"KeypadUI\";" !"EpochDeathBoardLoad = {\ncreatedialog \"EpochDeathBoardDialog\";" !="if(DZE_doorManagement) then {createdialog \"DoorAccess\";} else {createdialog \"ComboLockUI\";};" !"\ndisableSerialization;\ncreateDialog \"DZ_GroupDialog\";"
5 "createDisplay"
5 "createMarker" !"\"createMarkerLocal\",\n\"setMarkerPosLocal\"," !="rcreateMarkerLocal = 'createMarkerLocal'" !"rcreateMarkerLocalcode" !"\"createMarkerLocal\", \"createSimpleTask\"," !"if (isnil 'BIS_GITA_fnc_createMarkers' || false) then {" !"_marker = createMarkerLocal [format[\"groupMember" !="_marker = createMarkerLocal [\"MyBody\",_pos];"