Files
DayZ-Epoch/SQF/dayz_code/actions/player_breakin.sqf
ebaydayz e69364991c New config variable dayz_toolBreaking
Tool breaking is disabled by default.

Also made all scripts use Epoch sledge, which is a different model from
vanilla sledge.

PK_DZ was a duplicate of the new PKM_DZ.
2016-04-03 16:34:14 -04:00

156 lines
3.8 KiB
Plaintext

private ["_brokein","_isOk","_hasSledgeHammer","_gps","_vars","_hasToolbox","_hasCrowbar","_limit","_proceed","_counter",
"_dis","_sfx","_roll","_animState","_started","_finished","_isMedic","_isGate"];
_target = _this select 3;
_pos = getPos _target;
_isGate = (typeOf cursorTarget) in ["WoodenGate_2","WoodenGate_3","WoodenGate_4"];
_limit = 2 + round(random 3);
_hasSledgeHammer = "ItemSledge" in items player;
_hasCrowbar = "ItemCrowbar" in items player;
if (!_hasSledgeHammer) exitWith {
titleText ["You need a SledgeHammer to break into this compound" , "PLAIN DOWN"];
uiSleep 1;
};
if (!_hasCrowbar) exitWith {
titleText ["You need a crowbar to break into this compound." , "PLAIN DOWN"];
uiSleep 1;
};
_isOk = true;
_proceed = false;
_counter = 0;
_brokein = false;
while {_isOk} do {
//Check if we have the tools to start
_hasSledgeHammer = "ItemSledge" in items player;
_hasCrowbar = "ItemCrowbar" in items player;
if (!_hasSledgeHammer) exitWith {
_proceed = nil;
titleText ["You need a sledge hammer to break into a gate." , "PLAIN DOWN"];
uiSleep 1;
};
if (!_hasCrowbar) exitWith {
_proceed = nil;
titleText ["You need a crowbar to break into a gate." , "PLAIN DOWN"];
uiSleep 1;
};
//Run animation
player playActionNow "Medic";
//Run SFX
_dis=20;
_sfx = "repair";
[player,_sfx,0,false,_dis] call dayz_zombieSpeak;
[player,_dis,true,(getPosATL player)] spawn player_alertZombies;
//Setup Vars
r_interrupt = false;
_animState = animationState player;
r_doLoop = true;
_started = false;
_finished = false;
//run animation loop
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;
_finished = false;
};
uiSleep 0.1;
};
r_doLoop = false;
//Interrupt and end
if(!_finished) exitWith {
_isOk = false;
_proceed = false;
};
//Everything happened as it should
if(_finished) then {
//Add to Counter
_counter = _counter + 1;
//start chance to gain access.
if ([0.01] call fn_chance) then {
//stop loop
_isOk = false;
//Set Done var
_proceed = true;
if (_isGate) then {
_brokein = true;
_target setVariable ["isOpen", "1", true];
};
};
};
if (dayz_toolBreaking) then {
//Chances to damage tools
if ([0.02] call fn_chance) then {
player removeWeapon "ItemSledge";
player addMagazine "ItemSledgeHandle";
player addMagazine "ItemSledgeHead";
titleText ["Your SledgeHammer handle has snapped." , "PLAIN DOWN"];
};
if ([0.04] call fn_chance) then {
player removeWeapon "ItemCrowbar";
player addWeapon "ItemCrowbarBent";
titleText ["Your crowbar has bent." , "PLAIN DOWN"];
};
};
if(_counter == _limit) exitWith {
//stop loop
_isOk = false;
//Set Done var
_proceed = true;
};
titleText [format["Breaking into compound, attempt (%1 of %2).", _counter,_limit], "PLAIN DOWN"];
uiSleep 0.03;
};
//Tool issues
if (isnil "_proceed") exitwith {};
//Interrupted for some reason
if (!_proceed) then {
r_interrupt = false;
if (vehicle player == player) then {
[objNull, player, rSwitchMove,""] call RE;
player playActionNow "stop";
};
titleText ["Break in cancelled." , "PLAIN DOWN"];
};
// Working-Factor for chopping wood.
["Working",0,[100,15,10,0]] call dayz_NutritionSystem;
//Completed but no success.
if (_proceed and !_brokein) then {
titleText [format["Break in attempt completed with little success", _counter,_limit], "PLAIN DOWN"];
};
//Completed and successful
if (_proceed and _brokein) then {
titleText ["Break in attempt successful.", "PLAIN DOWN", 0.3];
//Open Gate.
_target animate ["DoorR", 1];
_target animate ["DoorL", 1];
};