diff --git a/SQF/dayz_anim/weapon/saw_idle.rtm b/SQF/dayz_anim/weapon/saw_idle.rtm
new file mode 100644
index 000000000..112395c1d
Binary files /dev/null and b/SQF/dayz_anim/weapon/saw_idle.rtm differ
diff --git a/SQF/dayz_code/Configs/CfgMagazines.hpp b/SQF/dayz_code/Configs/CfgMagazines.hpp
index 5e4d3602a..b7cce619c 100644
--- a/SQF/dayz_code/Configs/CfgMagazines.hpp
+++ b/SQF/dayz_code/Configs/CfgMagazines.hpp
@@ -103,6 +103,72 @@ class CfgMagazines {
descriptionShort = "Caliber: 7.62x51mm NATO
Rounds: 100
Used in: M240, Mk 48 Mod 0";
model = "\ca\CommunityConfigurationProject_E\Gameplay_ActualModelsOfWeaponMagazinesVisibleOnTheGround\p3d\100Rnd_762x51_M240.p3d";
};
+
+
+ class ItemMixOil : CA_Magazine {
+ scope = 2;
+ displayName = "2-Stroke Engine Oil";
+ picture = "\CA\weapons\data\equip\m_m240_ca.paa"; // TODO: Icon
+ count = 1;
+ type = "256";
+ descriptionShort = "";
+ class ItemActions
+ {
+ class Crafting
+ {
+ text = "Mix Chainsaw Gas"; // TODO: localize
+ script = ";['Crafting','CfgMagazines', _id] spawn player_craftItem;";
+ neednearby[] = {"workshop"};
+ requiretools[] = {"ItemToolbox"};
+ output[] = {{"CSGAS",1},{"ItemJerrycanEmpty",1}};
+ input[] = {{"ItemMixOil",1},{"ItemJerrycan",1}};
+ };
+ };
+ };
+
+ class CSGAS : CA_Magazine {
+ scope = 2;
+ type = VSoft;
+ displayName = "Gas";
+ descriptionShort = "Gas for Chainsaw";
+ count = 1000;
+ picture = "\CA\weapons\data\equip\m_m240_ca.paa";
+ ammo = "Chainsaw_Swing_Ammo";
+
+ initSpeed = 100;
+ maxLeadSpeed = 15;
+ tracersEvery = 0;
+ lastRoundsTracer = 0;
+
+ optics = false;
+ distanceZoomMin = 0;
+ distanceZoomMax = 0;
+
+ showEmpty = 0;
+ autoReload = true;
+ canLock = LockNo;
+
+ //
+ burst = 1;
+ multiplier = 1;
+ ffMagnitude = 0.1;
+ ffFrequency = 1;
+ ffCount = 1;
+
+ class HitEffects {
+ hit_blood = "ImpactBlood";
+ hit_concrete = "ImpactConcrete";
+ hit_foliage = "ImpactWood";
+ hit_foliage_green = "ImpactWood";
+ hit_glass = "ImpactGlass";
+ hit_glass_thin = "ImpactGlassThin";
+ hit_metal = "ImpactMetal";
+ hit_plaster = "ImpactPlaster";
+ hit_rubber = "ImpactRubber";
+ hit_wood = "ImpactWood";
+ };
+ };
+
class 200Rnd_762x51_M240 : 100Rnd_762x51_M240 {
count = 200;
};
@@ -389,7 +455,7 @@ class CfgMagazines {
scope = 2;
count = 1;
type = 256;
- displayName = "HowTo: Wood Ramp";
+ displayName = "Wood Ramp";
model = "\z\addons\dayz_epoch\models\doc_ramp.p3d";
picture = "\z\addons\dayz_epoch\pictures\equip_doc_ramp_ca.paa";
descriptionShort = "Document used in building a wooden ramp.";
@@ -998,8 +1064,8 @@ class CfgMagazines {
{
text = $STR_EPOCH_PLAYER_211;
script = ";['Crafting','CfgMagazines', _id] spawn player_craftItem;";
- neednearby[] = {"fire"};
- requiretools[] = {"ItemToolbox"};
+ neednearby[] = {};
+ requiretools[] = {};
output[] = {{"ItemGoldBar",10}};
input[] = {{"ItemGoldBar10oz",1}};
};
@@ -1020,8 +1086,8 @@ class CfgMagazines {
{
text = $STR_EPOCH_PLAYER_210;
script = ";['Crafting','CfgMagazines', _id] spawn player_craftItem;";
- neednearby[] = {"fire"};
- requiretools[] = {"ItemToolbox"};
+ neednearby[] = {};
+ requiretools[] = {};
output[] = {{"ItemSilverBar10oz",1}};
input[] = {{"ItemSilverBar",10}};
};
@@ -1043,8 +1109,8 @@ class CfgMagazines {
{
text = $STR_EPOCH_PLAYER_211;
script = ";['Crafting','CfgMagazines', _id] spawn player_craftItem;";
- neednearby[] = {"fire"};
- requiretools[] = {"ItemToolbox"};
+ neednearby[] = {};
+ requiretools[] = {};
output[] = {{"ItemSilverBar",10}};
input[] = {{"ItemSilverBar10oz",1}};
};
@@ -1065,8 +1131,8 @@ class CfgMagazines {
{
text = $STR_EPOCH_PLAYER_210;
script = ";['Crafting','CfgMagazines', _id] spawn player_craftItem;";
- neednearby[] = {"fire"};
- requiretools[] = {"ItemToolbox"};
+ neednearby[] = {};
+ requiretools[] = {};
output[] = {{"ItemCopperBar10oz",1}};
input[] = {{"ItemCopperBar",10}};
};
@@ -1088,8 +1154,8 @@ class CfgMagazines {
{
text = $STR_EPOCH_PLAYER_211;
script = ";['Crafting','CfgMagazines', _id] spawn player_craftItem;";
- neednearby[] = {"fire"};
- requiretools[] = {"ItemToolbox"};
+ neednearby[] = {};
+ requiretools[] = {};
output[] = {{"ItemCopperBar",10}};
input[] = {{"ItemCopperBar10oz",1}};
};
@@ -1132,8 +1198,8 @@ class CfgMagazines {
{
text = $STR_EPOCH_PLAYER_211;
script = ";['Crafting','CfgMagazines', _id] spawn player_craftItem;";
- neednearby[] = {"fire"};
- requiretools[] = {"ItemToolbox"};
+ neednearby[] = {};
+ requiretools[] = {};
output[] = {{"ItemAluminumBar",10}};
input[] = {{"ItemAluminumBar10oz",1}};
};
@@ -4839,6 +4905,7 @@ class CfgMagazines {
};
#include "CfgMagazines\MeleeSwing.hpp"
+ #include "CfgMagazines\Fuelcan.hpp"
class HandGrenade_Stone;
class ItemTrashToiletpaper : HandGrenade_Stone {
diff --git a/SQF/dayz_code/Configs/CfgWeapons.hpp b/SQF/dayz_code/Configs/CfgWeapons.hpp
index 567dfa10e..27b86caa7 100644
--- a/SQF/dayz_code/Configs/CfgWeapons.hpp
+++ b/SQF/dayz_code/Configs/CfgWeapons.hpp
@@ -1,3 +1,70 @@
+class Mode_SemiAuto
+{
+ multiplier = 1;
+ burst = 1;
+ dispersion = 0.0002;
+ sound[] = {"",10,1};
+ soundBegin[] = {"sound",1};
+ soundEnd[] = {};
+ soundLoop[] = {};
+ soundContinuous = 0;
+ soundBurst = 1;
+ reloadTime = 0.1;
+ ffCount = 1;
+ ffMagnitude = 0.5;
+ ffFrequency = 11;
+ flash = "gunfire";
+ flashSize = 0.1;
+ recoil = "Empty";
+ recoilProne = "Empty";
+ autoFire = 0;
+ aiRateOfFire = 0.5;
+ aiRateOfFireDistance = 500;
+ useAction = 0;
+ useActionTitle = "";
+ showToPlayer = 1;
+ minRange = 30;
+ minRangeProbab = 0.25;
+ midRange = 300;
+ midRangeProbab = 0.58;
+ maxRange = 600;
+ maxRangeProbab = 0.04;
+ artilleryDispersion = 1;
+ artilleryCharge = 1;
+ displayName = "Semi";
+};
+class Mode_Burst: Mode_SemiAuto
+{
+ sound[] = {"",10,1};
+ soundLoop[] = {"sound",1};
+ soundEnd[] = {"sound",1};
+ soundBurst = 1;
+ burst = 3;
+ dispersion = 0.0005;
+ minRange = 10;
+ minRangeProbab = 0.3;
+ midRange = 60;
+ midRangeProbab = 0.58;
+ maxRange = 150;
+ maxRangeProbab = 0.04;
+ displayName = "Burst";
+};
+class Mode_FullAuto: Mode_SemiAuto
+{
+ dispersion = 0.0005;
+ sound[] = {"",10,1};
+ soundEnd[] = {"sound",1};
+ soundContinuous = 0;
+ reloadTime = 0.08;
+ autoFire = 1;
+ minRange = 1;
+ minRangeProbab = 0.2;
+ midRange = 30;
+ midRangeProbab = 0.58;
+ maxRange = 80;
+ maxRangeProbab = 0.04;
+ displayName = "Full";
+};
class CfgWeapons {
class Pecheneg;
@@ -12,6 +79,108 @@ class CfgWeapons {
class ItemCore;
class Crossbow;
class Rifle;
+
+ class ChainSaw: Rifle
+ {
+ scope = 2;
+
+ /*
+ bullet1[] = {"ca\sounds\weapons\shells\big_shell_wood_01",0.0707946,1,15};
+ bullet2[] = {"ca\sounds\weapons\shells\big_shell_wood_02",0.0707946,1,15};
+ bullet3[] = {"ca\sounds\weapons\shells\big_shell_wood_03",0.0707946,1,15};
+ bullet4[] = {"ca\sounds\weapons\shells\big_shell_wood_04",0.0707946,1,15};
+ bullet5[] = {"ca\sounds\weapons\shells\big_shell_wood_05",0.0707946,1,15};
+ bullet6[] = {"ca\sounds\weapons\shells\big_shell_wood_06",0.0707946,1,15};
+ bullet7[] = {"ca\sounds\weapons\shells\big_shell_wood_07",0.0707946,1,15};
+ bullet8[] = {"ca\sounds\weapons\shells\big_shell_dirt_04",0.0707946,1,15};
+ bullet9[] = {"ca\sounds\weapons\shells\big_shell_soft_01",0.0707946,1,15};
+ bullet10[] = {"ca\sounds\weapons\shells\big_shell_soft_02",0.0707946,1,15};
+ bullet11[] = {"ca\sounds\weapons\shells\big_shell_soft_03",0.0707946,1,15};
+ bullet12[] = {"ca\sounds\weapons\shells\big_shell_soft_04",0.0707946,1,15};
+ */
+
+ //soundBullet[] = {"bullet1",0.083,"bullet2",0.083,"bullet3",0.083,"bullet4",0.083,"bullet5",0.083,"bullet6",0.083,"bullet7",0.083,"bullet8",0.083,"bullet9",0.083,"bullet10",0.083,"bullet11",0.083,"bullet12",0.083};
+
+ emptySound[] = {"",10,1};
+ soundBullet[] = {"emptySound",1};
+
+
+ model = "\z\addons\dayz_epoch\models\chainsaw.p3d";
+
+ picture = "\CA\weapons\data\equip\w_m240_ca.paa";
+
+ displayName = "Chainsaw";
+
+ cursor = "";
+ cursoraim = "\ca\Weapons\Data\clear_empty";
+
+ modes[] = {"manual"};
+ handAnim[]=
+ {
+ "OFP2_ManSkeleton",
+ "\z\addons\dayz_code\anim\saw_idle.rtm"
+ };
+ class manual: Mode_FullAuto
+ {
+ recoil = "recoil_auto_machinegun_10outof10";
+ recoilProne = "recoil_auto_machinegun_prone_10outof10";
+
+ dispersion = 0.2;
+
+ begin1[] = {"\dayz_sfx\chainsaw\running2.ogg",1.77828,1,1000};
+ soundBegin[] = {"begin1",1};
+
+ //end1[] = {"\dayz_sfx\chainsaw\running2.ogg",1.77828,1,1000};
+ //soundEnd[] = {"end1",1};
+
+ distanceZoomMin = 50;
+ distanceZoomMax = 50;
+ canDrop = 0;
+ UiPicture = "\CA\weapons\data\Ico\i_regular_CA.paa";
+ optics = 1;
+ modelOptics = "-";
+
+ burst = 1;
+ multiplier = 1;
+
+ soundContinuous = 0;
+ soundBurst = 0;
+
+ useAction = 0;
+ useActionTitle = "";
+
+ // from hatchet
+ minRange = 0.5;
+ minRangeProbab = 0.8;
+ midRange = 1;
+ midRangeProbab = 1.5;
+ maxRange = 2;
+ maxRangeProbab = 2.5;
+
+ showToPlayer = 1;
+ //reloadTime = 0.0708762;
+ reloadTime = 0.12;
+ displayName = "Gas";
+ };
+ aiDispersionCoefY = 21;
+ aiDispersionCoefX = 21;
+ dexterity = 0.51;
+ reloadMagazineSound[] = {"\dayz_sfx\effects\action_refuel_0.ogg",0.1,1,20};
+ drySound[] = {"\dayz_sfx\chainsaw\start-attempt.ogg",0.01,1,10};
+ magazines[] = {"CSGAS"};
+ class Library
+ {
+ libTextDesc = "Horlite Chainsaw";
+ };
+ descriptionShort = "Horlite Chainsaw";
+ };
+
+
+
+
+
+
+
class MeleeWeapon : Rifle {
canDrop = true;
};
diff --git a/SQF/dayz_code/Configs/cfgAmmo.hpp b/SQF/dayz_code/Configs/cfgAmmo.hpp
index c1ee5592c..24ca27d7e 100644
--- a/SQF/dayz_code/Configs/cfgAmmo.hpp
+++ b/SQF/dayz_code/Configs/cfgAmmo.hpp
@@ -58,7 +58,7 @@ class CfgAmmo {
};
class Melee;
class Machete_Swing_Ammo : Melee {
- hit = 6;
+ hit = 3;
simulation = "shotSpread";
minRange = 0.5;
minRangeProbab = 0.8;
@@ -73,14 +73,29 @@ class CfgAmmo {
soundEngine[] = {"", db-80, 4};
};
class Hatchet_Swing_Ammo : Melee {
- hit = 6;
- simulation = "shotSpread";
- minRange = 0.5;
+ hit = 9;
+ simulation = "shotBullet";
+ minRange = 1;
minRangeProbab = 0.8;
midRange = 2;
- midRangeProbab = 3.5;
- maxRange = 5;
- maxRangeProbab = 5;
+ midRangeProbab = 1.5;
+ maxRange = 3;
+ maxRangeProbab = 2.5;
+ explosive = 0;
+ simulationStep = 0.001;
+ timeToLive = 0.03;
+ soundHit[] = {"", db-90, 1};
+ soundEngine[] = {"", db-80, 4};
+ };
+ class Chainsaw_Swing_Ammo : Melee {
+ hit = 9;
+ simulation = "shotBullet";
+ minRange = 1;
+ minRangeProbab = 0.8;
+ midRange = 2;
+ midRangeProbab = 1.5;
+ maxRange = 3;
+ maxRangeProbab = 2.5;
explosive = 0;
simulationStep = 0.001;
timeToLive = 0.03;
@@ -88,7 +103,7 @@ class CfgAmmo {
soundEngine[] = {"", db-80, 4};
};
class Crowbar_Swing_Ammo : Melee {
- hit = 4;
+ hit = 2;
simulation = "shotSpread";
minRange = 0.5;
minRangeProbab = 0.8;
@@ -118,7 +133,7 @@ class CfgAmmo {
soundEngine[] = {"", db-80, 4};
};
class Sledge_Swing_Ammo : Melee {
- hit = 15;
+ hit = 12;
simulation = "shotBullet";
minRange = 1;
minRangeProbab = 0.8;
diff --git a/SQF/dayz_code/Configs/dialog.hpp b/SQF/dayz_code/Configs/dialog.hpp
index 5b5893eae..954bdfe0b 100644
--- a/SQF/dayz_code/Configs/dialog.hpp
+++ b/SQF/dayz_code/Configs/dialog.hpp
@@ -186,7 +186,7 @@ class TraderDialog
};
class RscShortcutButtonTraderDialog_1700: RscShortcutButtonTraderDialog
{
- idc = -1;
+ idc = 12004;
text = $STR_EPOCH_PLAYER_291;
x = 0.635221 * safezoneW + safezoneX;
y = 0.720064 * safezoneH + safezoneY;
@@ -196,7 +196,7 @@ class TraderDialog
};
class RscShortcutButtonTraderDialog_1701: RscShortcutButtonTraderDialog
{
- idc = -1;
+ idc = 12005;
text = $STR_EPOCH_PLAYER_292;
x = 0.540566 * safezoneW + safezoneX;
y = 0.720064 * safezoneH + safezoneY;
@@ -261,5 +261,13 @@ class TraderDialog
w = 0.0743718 * safezoneW;
h = 0.027508 * safezoneH;
};
+ class RscStructuredText_1100: RscStructuredText
+ {
+ idc = 12006;
+ x = 0.359214 * safezoneW + safezoneX;
+ y = 0.227167 * safezoneH + safezoneY;
+ w = 0.369767 * safezoneW;
+ h = 0.0543546 * safezoneH;
+ };
};
};
diff --git a/SQF/dayz_code/actions/list_playerDeaths.sqf b/SQF/dayz_code/actions/list_playerDeaths.sqf
index 2a970df0d..7233829ee 100644
--- a/SQF/dayz_code/actions/list_playerDeaths.sqf
+++ b/SQF/dayz_code/actions/list_playerDeaths.sqf
@@ -1,10 +1,5 @@
private [];
-// attempt to remove newspaper if called without args
-if (count _this == 0) then {
- player removeMagazine "ItemNewspaper";
-};
-
PVDZE_plr_DeathB = [player];
publicVariableServer "PVDZE_plr_DeathB";
diff --git a/SQF/dayz_code/actions/list_playerDeathsAlt.sqf b/SQF/dayz_code/actions/list_playerDeathsAlt.sqf
new file mode 100644
index 000000000..7221eb555
--- /dev/null
+++ b/SQF/dayz_code/actions/list_playerDeathsAlt.sqf
@@ -0,0 +1,16 @@
+private [];
+
+player removeMagazine "ItemNewspaper";
+
+PVDZE_plr_DeathB = [player];
+publicVariableServer "PVDZE_plr_DeathB";
+
+waitUntil {!isNil "PVDZE_plr_DeathBResult"};
+
+if((count PVDZE_plr_DeathBResult) > 0) then {
+ // load death message board ui
+ call EpochDeathBoardLoad;
+} else {
+ cutText [(localize "str_epoch_player_36"), "PLAIN DOWN"];
+ PVDZE_plr_DeathBResult = nil;
+};
\ No newline at end of file
diff --git a/SQF/dayz_code/anim/model.cfg b/SQF/dayz_code/anim/model.cfg
new file mode 100644
index 000000000..827c98332
--- /dev/null
+++ b/SQF/dayz_code/anim/model.cfg
@@ -0,0 +1,157 @@
+class CfgSkeletons {
+class Default {isDiscrete=1;skeletonInherit="";skeletonBones[]={};};
+class OFP2_ManSkeleton {
+isDiscrete=0;
+skeletonInherit="";
+skeletonBones[]= {
+"Pelvis","",
+"Spine","Pelvis",
+"Spine1","Spine",
+"Spine2","Spine1",
+"Spine3","Spine2",
+"Camera","Pelvis",
+"weapon","Spine1",
+"launcher","Spine1",
+//Head skeleton in hierarchy
+"neck","Spine3",
+"neck1","neck",
+"head","neck1",
+"HeadCutScene","head",
+"jaw","head",
+"chin","head",
+"jaw_rf","head",
+"jaw_rm","head",
+"jaw_rs","head",
+"jaw_lf","head",
+"jaw_lm","head",
+"jaw_ls","head",
+"ear_r","head",
+"ear_l","head",
+"lip_lc","head",
+"lip_lwlb","head",
+"lip_lwlf","head",
+"lip_lwm","head",
+"lip_lwrf","head",
+"lip_lwrb","head",
+"lip_rc","head",
+"lip_uprb","head",
+"lip_uprf","head",
+"lip_upm","head",
+"lip_uplf","head",
+"lip_uplb","head",
+"nose_tip","head",
+"nose_r","head",
+"nose_l","head",
+"zig_lt","head",
+"zig_lm","head",
+"zig_lb","head",
+"zig_rt","head",
+"zig_rm","head",
+"zig_rb","head",
+"cheek_r","head",
+"cheek_l","head",
+"eyebrow_lb","head",
+"eyebrow_lm","head",
+"eyebrow_lf","head",
+"corr","head",
+"eyebrow_rf","head",
+"eyebrow_rm","head",
+"eyebrow_rb","head",
+"eye_upr","head",
+"eye_lwr","head",
+"eye_upl","head",
+"eye_lwl","head",
+"cheek_rf","head",
+"cheek_rm","head",
+"cheek_rb","head",
+"cheek_lf","head",
+"cheek_lm","head",
+"cheek_lb","head",
+"forehead_l","head",
+"forehead_m","head",
+"forehead_r","head",
+"l_eye","head",
+"r_eye","head",
+"l_pupila","head",
+"r_pupila","head",
+"neck_t","head",
+"neck_b","head",
+"neck_r","head",
+"neck_l","head",
+"tongue_b","head",
+"tongue_m","head",
+"tongue_f","head",
+//Left upper side
+"LeftShoulder","Spine3",
+"LeftArm","LeftShoulder",
+"LeftArmRoll","LeftArm",
+"LeftForeArm","LeftArmRoll",
+"LeftForeArmRoll","LeftForeArm",
+"LeftHand","LeftForeArmRoll",
+"LeftHandRing","LeftHand",
+"LeftHandRing1","LeftHandRing",
+"LeftHandRing2","LeftHandRing1",
+"LeftHandRing3","LeftHandRing2",
+"LeftHandPinky1","LeftHandRing",
+"LeftHandPinky2","LeftHandPinky1",
+"LeftHandPinky3","LeftHandPinky2",
+"LeftHandMiddle1","LeftHand",
+"LeftHandMiddle2","LeftHandMiddle1",
+"LeftHandMiddle3","LeftHandMiddle2",
+"LeftHandIndex1","LeftHand",
+"LeftHandIndex2","LeftHandIndex1",
+"LeftHandIndex3","LeftHandIndex2",
+"LeftHandThumb1","LeftHand",
+"LeftHandThumb2","LeftHandThumb1",
+"LeftHandThumb3","LeftHandThumb2",
+//Right upper side
+"RightShoulder","Spine3",
+"RightArm","RightShoulder",
+"RightArmRoll","RightArm",
+"RightForeArm","RightArmRoll",
+"RightForeArmRoll","RightForeArm",
+"RightHand","RightForeArmRoll",
+"RightHandRing","RightHand",
+"RightHandRing1","RightHandRing",
+"RightHandRing2","RightHandRing1",
+"RightHandRing3","RightHandRing2",
+"RightHandPinky1","RightHandRing",
+"RightHandPinky2","RightHandPinky1",
+"RightHandPinky3","RightHandPinky2",
+"RightHandMiddle1","RightHand",
+"RightHandMiddle2","RightHandMiddle1",
+"RightHandMiddle3","RightHandMiddle2",
+"RightHandIndex1","RightHand",
+"RightHandIndex2","RightHandIndex1",
+"RightHandIndex3","RightHandIndex2",
+"RightHandThumb1","RightHand",
+"RightHandThumb2","RightHandThumb1",
+"RightHandThumb3","RightHandThumb2",
+//Left lower side
+"LeftUpLeg","Pelvis",
+"LeftUpLegRoll","LeftUpLeg",
+"LeftLeg","LeftUpLegRoll",
+"LeftLegRoll","LeftLeg",
+"LeftFoot","LeftLegRoll",
+"LeftToeBase","LeftFoot",
+//Right lower side
+"RightUpLeg","Pelvis",
+"RightUpLegRoll","RightUpLeg",
+"RightLeg","RightUpLegRoll",
+"RightLegRoll","RightLeg",
+"RightFoot","RightLegRoll",
+"RightToeBase","RightFoot"
+};
+pivotsModel="";
+};
+};
+class CfgModels {
+class Default {sectionsInherit="";sections[]={};skeletonName="";};
+class ArmaMan : Default {
+sections[]={"osobnost","Head_Injury","Body_Injury","l_leg_in jury","l_arm_injury","r_arm_injury","r_leg_injury" ,"clan","clan_sign","Camo","CamoB"};
+skeletonName = "OFP2_ManSkeleton";
+};
+
+
+class saw_idle : ArmaMan {};
+};
\ No newline at end of file
diff --git a/SQF/dayz_code/compile/player_fired.sqf b/SQF/dayz_code/compile/player_fired.sqf
index 76884d6dd..4f0b3a778 100644
--- a/SQF/dayz_code/compile/player_fired.sqf
+++ b/SQF/dayz_code/compile/player_fired.sqf
@@ -16,12 +16,15 @@ dayz_firedCooldown = time;
dayz_combat = 1;
if (_ammo isKindOf "Melee") exitWith {
- _unit playActionNow "GestureSwing";
-
- [1,1] call dayz_HungerThirst;
+
+
+ if(_weapon != "Chainsaw") then {
+ _unit playActionNow "GestureSwing";
+ [1,1] call dayz_HungerThirst;
+ };
// harvest wood check
- _id = _this spawn player_harvest;
+ _this call player_harvest;
};
//Smoke Grenade
diff --git a/SQF/dayz_code/compile/player_harvest.sqf b/SQF/dayz_code/compile/player_harvest.sqf
index 5448d6570..fc0891854 100644
--- a/SQF/dayz_code/compile/player_harvest.sqf
+++ b/SQF/dayz_code/compile/player_harvest.sqf
@@ -4,7 +4,7 @@ _weapon = _this select 1;
_ammo = _this select 4;
_projectile = _this select 6;
-if (_ammo isKindOf "Hatchet_Swing_Ammo") then {
+if (_ammo isKindOf "Hatchet_Swing_Ammo" or _ammo isKindOf "Chainsaw_Swing_Ammo") then {
_findNearestTree = [];
{
@@ -37,24 +37,36 @@ if (_ammo isKindOf "Hatchet_Swing_Ammo") then {
_damage = damage _tree;
if (DZE_TEMP_treedmg < _damage) then {
- //diag_log ("DAMAGE: " + str(damage _tree));
-
- _countOut = 1;
- _itemOut = "PartWoodPile";
-
- _nearByPile= nearestObjects [getPosATL player, ["WeaponHolder"],2];
- if (count _nearByPile == 0) then {
- _item = createVehicle ["WeaponHolder", getPosATL player, [], 1, "CAN_COLLIDE"];
- _item addMagazineCargoGlobal [_itemOut,_countOut];
- player reveal _item;
- } else {
- _item = _nearByPile select 0;
- _item addMagazineCargoGlobal [_itemOut,_countOut];
+ if (_damage < 0.95) then {
+ if("" == typeOf _tree) then {
+ _tree setDamage 0.95;
+ };
};
- _distance = 60;
- [_unit,_distance,false,getPosATL player] spawn player_alertZombies;
+ //diag_log ("DAMAGE: " + str(damage _tree));
+ if (round(random 1) > 0.5) then {
+
+ _countOut = 1;
+ _itemOut = "PartWoodPile";
+
+ if(_weapon == "Chainsaw") then {
+ _itemOut = "PartWoodLumber";
+ };
+
+ _nearByPile= nearestObjects [getPosATL player, ["WeaponHolder"],2];
+ if (count _nearByPile == 0) then {
+ _item = createVehicle ["WeaponHolder", getPosATL player, [], 1, "CAN_COLLIDE"];
+ _item addMagazineCargoGlobal [_itemOut,_countOut];
+ player reveal _item;
+ } else {
+ _item = _nearByPile select 0;
+ _item addMagazineCargoGlobal [_itemOut,_countOut];
+ };
+
+ _distance = 60;
+ [player,_distance,false,getPosATL player] spawn player_alertZombies;
+ };
};
DZE_TEMP_treedmg = _damage;
};
diff --git a/SQF/dayz_code/compile/player_traderMenu.sqf b/SQF/dayz_code/compile/player_traderMenu.sqf
index 5e412dabd..4c1a99528 100644
--- a/SQF/dayz_code/compile/player_traderMenu.sqf
+++ b/SQF/dayz_code/compile/player_traderMenu.sqf
@@ -3,6 +3,9 @@ TraderDialogCatList = 12000;
TraderDialogItemList = 12001;
TraderDialogBuyPrice = 12002;
TraderDialogSellPrice = 12003;
+TraderDialogBuyBtn = 12004;
+TraderDialogSellBtn = 12005;
+TraderDialogCurrency = 12006;
TraderCurrentCatIndex = -1;
TraderCatList = -1;
@@ -41,17 +44,17 @@ TraderDialogLoadItemList = {
_item = _x select 1;
_name = _item select 0;
_type = _item select 1;
- switch (true) do {
- case (_type == 1): {
+ switch (true) do {
+ case (_type == 1): {
_type = "CfgMagazines";
};
- case (_type == 2): {
+ case (_type == 2): {
_type = "CfgVehicles";
};
- case (_type == 3): {
+ case (_type == 3): {
_type = "CfgWeapons";
- };
- };
+ };
+ };
// Display Name of item
_textPart = getText(configFile >> _type >> _name >> "displayName");
@@ -59,7 +62,7 @@ TraderDialogLoadItemList = {
_qty = _x select 2;
// Buy Data from array
- _buy = _x select 3;
+ _buy = _x select 3;
_bqty = _buy select 0;
_bname = _buy select 1;
_btype = _buy select 2;
@@ -164,7 +167,17 @@ TraderDialogShowPrices = {
if (_index < 0) exitWith {};
while {count TraderItemList < 1} do { sleep 1; };
_item = TraderItemList select _index;
+
+ _qty = {_x == (_item select 3)} count magazines player;
+
ctrlSetText [TraderDialogBuyPrice, format["%1 %2", _item select 2, _item select 4]];
+
+ if(_qty == 0) then {
+ ctrlEnable [TraderDialogBuyBtn, false];
+ } else {
+ ctrlEnable [TraderDialogBuyBtn, true];
+ };
+
ctrlSetText [TraderDialogSellPrice, format["%1 %2", _item select 5, _item select 7]];
};
diff --git a/SQF/dayz_code/init/compiles.sqf b/SQF/dayz_code/init/compiles.sqf
index 3073fc06a..9621dfc41 100644
--- a/SQF/dayz_code/init/compiles.sqf
+++ b/SQF/dayz_code/init/compiles.sqf
@@ -108,7 +108,7 @@ if (!isDedicated) then {
player_sleep = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_sleep.sqf";
//player_mineOre = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_mineOre.sqf";
player_antiWall = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_antiWall.sqf";
- player_deathBoard = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\list_playerDeaths.sqf";
+ player_deathBoard = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\list_playerDeathsAlt.sqf";
player_upgradeVehicle = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_upgradeVehicle.sqf";
diff --git a/SQF/dayz_epoch/models/model.cfg b/SQF/dayz_epoch/models/model.cfg
index 3d46925e7..572e72f6e 100644
--- a/SQF/dayz_epoch/models/model.cfg
+++ b/SQF/dayz_epoch/models/model.cfg
@@ -1,15 +1,131 @@
//The Class "CfgSkeletons" defines all moving objects.
class CfgSkeletons {
+
+ class Head
+ {
+ isDiscrete = 0;
+ skeletonInherit = "";
+ skeletonBones[] =
+ {
+ "neck","",
+ "neck1","neck",
+ "head","neck1",
+ "lBrow","head",
+ "mBrow","head",
+ "rBrow","head",
+ "lMouth","head",
+ "mMouth","head",
+ "rMouth","head",
+ "eyelids","head",
+ "LLip","head"
+ };
+ };
+
+ class OFP2_ManSkeleton
+ {
+ isDiscrete = 0;
+ skeletonInherit = "Head";
+ skeletonBones[] =
+ {
+ "weapon","",
+ "launcher","",
+ "Camera","",
+ "Spine","",
+ "Spine1","",
+ "Spine2","",
+ "Spine3","",
+ "Pelvis","",
+ //Left upper side
+ "LeftShoulder","",
+ "LeftArm","",
+ "LeftArmRoll","",
+ "LeftForeArm","",
+ "LeftForeArmRoll","",
+ "LeftHand","",
+ "LeftHandRing","",
+ "LeftHandRing1","",
+ "LeftHandRing2","",
+ "LeftHandRing3","",
+ "LeftHandPinky1","",
+ "LeftHandPinky2","",
+ "LeftHandPinky3","",
+ "LeftHandMiddle1","",
+ "LeftHandMiddle2","",
+ "LeftHandMiddle3","",
+ "LeftHandIndex1","",
+ "LeftHandIndex2","",
+ "LeftHandIndex3","",
+ "LeftHandThumb1","",
+ "LeftHandThumb2","",
+ "LeftHandThumb3","",
+
+ //Right upper side
+ "RightShoulder","",
+ "RightArm","",
+ "RightArmRoll","",
+ "RightForeArm","",
+ "RightForeArmRoll","",
+ "RightHand","",
+ "RightHandRing","",
+ "RightHandRing1","",
+ "RightHandRing2","",
+ "RightHandRing3","",
+ "RightHandPinky1","",
+ "RightHandPinky2","",
+ "RightHandPinky3","",
+ "RightHandMiddle1","",
+ "RightHandMiddle2","",
+ "RightHandMiddle3","",
+ "RightHandIndex1","",
+ "RightHandIndex2","",
+ "RightHandIndex3","",
+ "RightHandThumb1","",
+ "RightHandThumb2","",
+ "RightHandThumb3","",
+ //Left lower side
+ "LeftUpLeg","",
+ "LeftUpLegRoll","",
+ "LeftLeg","",
+ "LeftLegRoll","",
+ "LeftFoot","",
+ "LeftToeBase","",
+ //Right lower side
+ "RightUpLeg","",
+ "RightUpLegRoll","",
+ "RightLeg","",
+ "RightLegRoll","",
+ "RightFoot","",
+ "RightToeBase",""
+ };
+ };
+
+
//Always create class "default" first.
//Your actual config-entry should be a derivate of this.
- class Default {
+
+ class Default;
+
+ class Default_Mod : Default {
isDiscrete = 1;
skeletonInherit = "";
skeletonBones[] = {};
};
+
+ class Chain_Saw: Default
+ {
+ skeletonInherit = "Default";
+ skeletonBones[] =
+ {
+ "stozar","",
+ "vlajka",""
+ };
+ };
+
+
+
//the derivate of your skeleton from claa "Default".
- class wood_door_skeleton : Default {
+ class wood_door_skeleton : Default_Mod {
isDiscrete=1;
skeletonInherit="";
@@ -24,7 +140,7 @@ class CfgSkeletons {
// The last entry gets no comma
};
- class locked_wood_door_skeleton : Default {
+ class locked_wood_door_skeleton : Default_Mod {
isDiscrete=1;
skeletonInherit="";
@@ -40,7 +156,7 @@ class CfgSkeletons {
};
//the derivate of your skeleton from claa "Default".
- class garage_door_skeleton : Default {
+ class garage_door_skeleton : Default_Mod {
isDiscrete=1;
skeletonInherit="";
@@ -56,7 +172,7 @@ class CfgSkeletons {
};
// locked garage door
- class locked_garage_door_skeleton : Default {
+ class locked_garage_door_skeleton : Default_Mod {
isDiscrete=1;
skeletonInherit="";
@@ -71,7 +187,7 @@ class CfgSkeletons {
// The last entry gets no comma
};
- class locked_steel_garage_skeleton : Default {
+ class locked_steel_garage_skeleton : Default_Mod {
isDiscrete=1;
skeletonInherit="";
@@ -86,7 +202,7 @@ class CfgSkeletons {
// The last entry gets no comma
};
- class steel_garage_skeleton : Default {
+ class steel_garage_skeleton : Default_Mod {
isDiscrete=1;
skeletonInherit="";
@@ -100,7 +216,7 @@ class CfgSkeletons {
};
// The last entry gets no comma
};
- class steel_door_skeleton : Default {
+ class steel_door_skeleton : Default_Mod {
isDiscrete=1;
skeletonInherit="";
@@ -115,7 +231,7 @@ class CfgSkeletons {
// The last entry gets no comma
};
- class locked_steel_door_skeleton : Default {
+ class locked_steel_door_skeleton : Default_Mod {
isDiscrete=1;
skeletonInherit="";
@@ -140,13 +256,31 @@ class CfgModels {
class rotation;
class translation;
- // And again: class default
- class Default {
- sectionsInherit="";
- sections[]={};
- skeleton="";
- class Animations {};
+ class Default;
+
+ class chainsaw : Default {
+ sections[] = {"latka"};
};
+
+ class Head: Default {
+ sections[] =
+ {
+ "osobnost",
+ "brejle"
+ };
+ skeletonName = "Head";
+ };
+ class ArmaMan : Default
+ {
+ sections[] =
+ {
+ "osobnost","Head_Injury","Body_Injury","l_leg_inju ry","l_arm_injury","r_arm_injury","r_leg_injury" ,
+ "clan"
+ };
+ skeletonName = "OFP2_ManSkeleton";
+ };
+
+
// Your own "class default"
class wood_door {
diff --git a/SQF/dayz_epoch/textures/Saw_co.paa b/SQF/dayz_epoch/textures/Saw_co.paa
new file mode 100644
index 000000000..061f032ab
Binary files /dev/null and b/SQF/dayz_epoch/textures/Saw_co.paa differ
diff --git a/SQF/dayz_epoch/textures/Saw_smdi.paa b/SQF/dayz_epoch/textures/Saw_smdi.paa
new file mode 100644
index 000000000..30127cd9d
Binary files /dev/null and b/SQF/dayz_epoch/textures/Saw_smdi.paa differ
diff --git a/SQF/dayz_epoch/textures/chainsaw.rvmat b/SQF/dayz_epoch/textures/chainsaw.rvmat
new file mode 100644
index 000000000..34ac60236
--- /dev/null
+++ b/SQF/dayz_epoch/textures/chainsaw.rvmat
@@ -0,0 +1,92 @@
+ambient[]={0.49019608,0.49019608,0.49019608,1};
+diffuse[]={0.49019608,0.49019608,0.49019608,1};
+forcedDiffuse[]={0,0,0,0};
+emmisive[]={0,0,0,1};
+specular[]={0.65490198,0.65490198,0.65490198,1};
+specularPower=200;
+PixelShaderID="Super";
+VertexShaderID="Super";
+class Stage1
+{
+ texture="z\addons\dayz_epoch\textures\saw_nohq.paa";
+ uvSource="tex";
+ class uvTransform
+ {
+ aside[]={1,0,0};
+ up[]={0,1,0};
+ dir[]={0,0,0};
+ pos[]={0,0,0};
+ };
+};
+class Stage2
+{
+ texture="#(argb,8,8,3)color(0.5,0.5,0.5,1,DT)";
+ uvSource="tex";
+ class uvTransform
+ {
+ aside[]={1,0,0};
+ up[]={0,1,0};
+ dir[]={0,0,0};
+ pos[]={0,0,0};
+ };
+};
+class Stage3
+{
+ texture="#(argb,8,8,3)color(0,0,0,0,MC)";
+ uvSource="tex";
+ class uvTransform
+ {
+ aside[]={1,0,0};
+ up[]={0,1,0};
+ dir[]={0,0,0};
+ pos[]={0,0,0};
+ };
+};
+class Stage4
+{
+ texture="#(argb,8,8,3)color(1,1,1,1,AS)";
+ uvSource="tex";
+ class uvTransform
+ {
+ aside[]={1,0,0};
+ up[]={0,1,0};
+ dir[]={0,0,0};
+ pos[]={0,0,0};
+ };
+};
+class Stage5
+{
+ texture="z\addons\dayz_epoch\textures\Saw_smdi.paa";
+ uvSource="tex";
+ class uvTransform
+ {
+ aside[]={1,0,0};
+ up[]={0,1,0};
+ dir[]={0,0,0};
+ pos[]={0,0,0};
+ };
+};
+class Stage6
+{
+ texture="#(ai,32,128,1)fresnel(1.3,7.0)";
+ uvSource="tex";
+ class uvTransform
+ {
+ aside[]={1,0,0};
+ up[]={0,1,0};
+ dir[]={0,0,0};
+ pos[]={0,0,0};
+ };
+};
+class Stage7
+{
+ texture="ca\data\env_land_co.paa";
+ uvSource="tex";
+ class uvTransform
+ {
+ aside[]={1,0,0};
+ up[]={0,1,0};
+ dir[]={0,0,0};
+ pos[]={0,0,0};
+ };
+};
diff --git a/SQF/dayz_epoch/textures/cs_parts.rvmat b/SQF/dayz_epoch/textures/cs_parts.rvmat
new file mode 100644
index 000000000..82a86bda1
--- /dev/null
+++ b/SQF/dayz_epoch/textures/cs_parts.rvmat
@@ -0,0 +1,92 @@
+ambient[]={0.47843137,0.47843137,0.47843137,1};
+diffuse[]={0.47843137,0.47843137,0.47843137,1};
+forcedDiffuse[]={0,0,0,0};
+emmisive[]={0,0,0,1};
+specular[]={0.70588237,0.70588237,0.70588237,0.16};
+specularPower=200;
+PixelShaderID="Super";
+VertexShaderID="Super";
+class Stage1
+{
+ texture="z\addons\dayz_epoch\textures\cs_parts_nohq.paa";
+ uvSource="tex";
+ class uvTransform
+ {
+ aside[]={1,0,0};
+ up[]={0,1,0};
+ dir[]={0,0,0};
+ pos[]={0,0,0};
+ };
+};
+class Stage2
+{
+ texture="#(argb,8,8,3)color(0.5,0.5,0.5,1,DT)";
+ uvSource="tex";
+ class uvTransform
+ {
+ aside[]={1,0,0};
+ up[]={0,1,0};
+ dir[]={0,0,0};
+ pos[]={0,0,0};
+ };
+};
+class Stage3
+{
+ texture="#(argb,8,8,3)color(0,0,0,0,MC)";
+ uvSource="tex";
+ class uvTransform
+ {
+ aside[]={1,0,0};
+ up[]={0,1,0};
+ dir[]={0,0,0};
+ pos[]={0,0,0};
+ };
+};
+class Stage4
+{
+ texture="#(argb,8,8,3)color(1,1,1,1,AS)";
+ uvSource="tex";
+ class uvTransform
+ {
+ aside[]={1,0,0};
+ up[]={0,1,0};
+ dir[]={0,0,0};
+ pos[]={0,0,0};
+ };
+};
+class Stage5
+{
+ texture="z\addons\dayz_epoch\textures\cs_parts_smdi.paa";
+ uvSource="tex";
+ class uvTransform
+ {
+ aside[]={1,0,0};
+ up[]={0,1,0};
+ dir[]={0,0,0};
+ pos[]={0,0,0};
+ };
+};
+class Stage6
+{
+ texture="#(ai,32,128,1)fresnel(1.3,7.3)";
+ uvSource="tex";
+ class uvTransform
+ {
+ aside[]={1,0,0};
+ up[]={0,1,0};
+ dir[]={0,0,0};
+ pos[]={0,0,0};
+ };
+};
+class Stage7
+{
+ texture="ca\data\env_land_co.paa";
+ uvSource="tex";
+ class uvTransform
+ {
+ aside[]={1,0,0};
+ up[]={0,1,0};
+ dir[]={0,0,0};
+ pos[]={0,0,0};
+ };
+};
diff --git a/SQF/dayz_epoch/textures/cs_parts_co.paa b/SQF/dayz_epoch/textures/cs_parts_co.paa
new file mode 100644
index 000000000..6a445adcd
Binary files /dev/null and b/SQF/dayz_epoch/textures/cs_parts_co.paa differ
diff --git a/SQF/dayz_epoch/textures/cs_parts_nohq.paa b/SQF/dayz_epoch/textures/cs_parts_nohq.paa
new file mode 100644
index 000000000..df63a1ada
Binary files /dev/null and b/SQF/dayz_epoch/textures/cs_parts_nohq.paa differ
diff --git a/SQF/dayz_epoch/textures/cs_parts_smdi.paa b/SQF/dayz_epoch/textures/cs_parts_smdi.paa
new file mode 100644
index 000000000..93688a282
Binary files /dev/null and b/SQF/dayz_epoch/textures/cs_parts_smdi.paa differ
diff --git a/SQF/dayz_epoch/textures/saw_nohq.paa b/SQF/dayz_epoch/textures/saw_nohq.paa
new file mode 100644
index 000000000..8a4ff2bf7
Binary files /dev/null and b/SQF/dayz_epoch/textures/saw_nohq.paa differ
diff --git a/SQF/dayz_sfx/chainsaw/running1.ogg b/SQF/dayz_sfx/chainsaw/running1.ogg
new file mode 100644
index 000000000..16edd47f4
Binary files /dev/null and b/SQF/dayz_sfx/chainsaw/running1.ogg differ
diff --git a/SQF/dayz_sfx/chainsaw/running2.ogg b/SQF/dayz_sfx/chainsaw/running2.ogg
new file mode 100644
index 000000000..6331b1d25
Binary files /dev/null and b/SQF/dayz_sfx/chainsaw/running2.ogg differ
diff --git a/SQF/dayz_sfx/chainsaw/start-attempt.ogg b/SQF/dayz_sfx/chainsaw/start-attempt.ogg
new file mode 100644
index 000000000..a6a46c7ba
Binary files /dev/null and b/SQF/dayz_sfx/chainsaw/start-attempt.ogg differ