Handle boiled waterbottles < 10oz

should fix #1838 Translation fixes are probably necessary
This commit is contained in:
icomrade
2016-12-29 15:50:53 -05:00
parent 3176e1619d
commit c64c181f95
6 changed files with 399 additions and 30 deletions

View File

@@ -1,4 +1,4 @@
private ["_bottletext","_tin1text","_tin2text","_tintext","_hasbottleitem","_hastinitem","_qty","_dis","_sfx","_bottleInfected"];
private ["_bottletext","_tin1text","_tin2text","_tintext","_hastinitem","_qty","_dis","_sfx","_WB2Add"];
if (dayz_actionInProgress) exitWith {localize "str_epoch_player_22" call dayz_rollingMessages;};
dayz_actionInProgress = true;
@@ -7,27 +7,27 @@ _bottletext = getText (configFile >> "CfgMagazines" >> "ItemWaterBottle" >> "dis
_tin1text = getText (configFile >> "CfgMagazines" >> "TrashTinCan" >> "displayName");
_tin2text = getText (configFile >> "CfgMagazines" >> "ItemSodaEmpty" >> "displayName");
_tintext = format["%1 / %2",_tin1text,_tin2text];
_hasbottleitem = (("ItemWaterBottle" in magazines player) || {"ItemWaterBottleInfected" in magazines player} || {"ItemWaterBottleSafe" in magazines player});
_hastinitem = false;
//_hasbottleitem = (("ItemWaterBottle" in magazines player) || {"ItemWaterBottleInfected" in magazines player} || {"ItemWaterBottleSafe" in magazines player});
_qty = 0;
_qty = _qty + ({
_x in ["ItemWaterBottleInfected","ItemWaterBottle","ItemWaterBottleSafe","ItemWaterbottle1oz","ItemWaterbottle2oz","ItemWaterbottle3oz","ItemWaterbottle4oz","ItemWaterbottle5oz","ItemWaterbottle6oz","ItemWaterbottle7oz","ItemWaterbottle8oz","ItemWaterbottle9oz"];
} count magazines player);
a_player_boil = true;
player removeAction s_player_boil;
//s_player_boil = -1;
_bottleInfected = if ("ItemWaterBottleInfected" in magazines player) then {true} else {false};
//_bottleInfected = if ("ItemWaterBottleInfected" in magazines player) then {true} else {false};
/* //canteens are metal, we only use canteens in Epoch
_hastinitem = false;
{
if (_x in magazines player) exitWith {_hastinitem = true;};
} count boil_tin_cans;
if (!_hasbottleitem) exitWith {format[localize "str_player_31",_bottletext,localize "str_player_31_fill"] call dayz_rollingMessages; a_player_boil = false;};
if (!_hastinitem) exitWith {format[localize "str_player_31",_tintext,localize "str_player_31_fill"] call dayz_rollingMessages; a_player_boil = false;};
if (_hasbottleitem and _hastinitem) then {
_qty = 0;
_qty = _qty + ({_x == "ItemWaterBottleInfected"} count magazines player);
_qty = _qty + ({_x == "ItemWaterBottle"} count magazines player);
_qty = _qty + ({_x == "ItemWaterBottleSafe"} count magazines player);
*/
if (_qty > 0) then {
player playActionNow "Medic";
uiSleep 1;
_dis=10;
@@ -35,29 +35,35 @@ if (_hasbottleitem and _hastinitem) then {
[player,_sfx,0,false,_dis] call dayz_zombieSpeak;
[player,_dis,true,(getPosATL player)] call player_alertZombies;
uiSleep 5;
for "_x" from 1 to _qty do {
if ("ItemWaterBottleInfected" in magazines player) then {
player removeMagazine "ItemWaterBottleInfected";
} else {
if ("ItemWaterBottleSafe" in magazines player) then {
player removeMagazine "ItemWaterBottleSafe";
} else {
player removeMagazine "ItemWaterBottle";
};
_WB2Add = "ItemWaterBottleBoiled";
switch (true) do {
case ("ItemWaterBottleInfected" in magazines player): { player removeMagazine "ItemWaterBottleInfected"; };
case ("ItemWaterBottleSafe" in magazines player): { player removeMagazine "ItemWaterBottleSafe"; };
case ("ItemWaterBottle" in magazines player): { player removeMagazine "ItemWaterBottle"; };
case ("ItemWaterbottle1oz" in magazines player): { player removeMagazine "ItemWaterbottle1oz"; _WB2Add = "ItemWaterbottle1ozBoiled"; };
case ("ItemWaterbottle2oz" in magazines player): { player removeMagazine "ItemWaterbottle2oz"; _WB2Add = "ItemWaterbottle2ozBoiled"; };
case ("ItemWaterbottle3oz" in magazines player): { player removeMagazine "ItemWaterbottle3oz"; _WB2Add = "ItemWaterbottle3ozBoiled"; };
case ("ItemWaterbottle4oz" in magazines player): { player removeMagazine "ItemWaterbottle4oz"; _WB2Add = "ItemWaterbottle4ozBoiled"; };
case ("ItemWaterbottle5oz" in magazines player): { player removeMagazine "ItemWaterbottle5oz"; _WB2Add = "ItemWaterbottle5ozBoiled"; };
case ("ItemWaterbottle6oz" in magazines player): { player removeMagazine "ItemWaterbottle6oz"; _WB2Add = "ItemWaterbottle6ozBoiled"; };
case ("ItemWaterbottle7oz" in magazines player): { player removeMagazine "ItemWaterbottle7oz"; _WB2Add = "ItemWaterbottle7ozBoiled"; };
case ("ItemWaterbottle8oz" in magazines player): { player removeMagazine "ItemWaterbottle8oz"; _WB2Add = "ItemWaterbottle8ozBoiled"; };
case ("ItemWaterbottle9oz" in magazines player): { player removeMagazine "ItemWaterbottle9oz"; _WB2Add = "ItemWaterbottle9ozBoiled"; };
};
if (dayz_waterBottleBreaking && {[0.1] call fn_chance}) then {
player addMagazine "ItemWaterBottleDmg";
//systemChat (localize ("str_waterbottle_broke"));
localize "str_waterbottle_broke" call dayz_rollingMessages;
} else {
player addMagazine "ItemWaterBottleBoiled";
player addMagazine _WB2Add;
};
};
format [localize "str_player_boiledwater",_qty] call dayz_rollingMessages;
} else {
localize "str_player_02" call dayz_rollingMessages;
//localize "str_player_02" call dayz_rollingMessages;
format[localize "str_player_31",_bottletext,localize "str_player_31_fill"] call dayz_rollingMessages;
};
a_player_boil = false;

View File

@@ -23,7 +23,7 @@ class ItemActions
};
};
*/
private ["_tradeComplete","_onLadder","_canDo","_selectedRecipeOutput","_proceed","_itemIn","_countIn","_missing","_missingQty","_qty","_itemOut","_countOut","_started","_finished","_animState","_isMedic","_removed","_tobe_removed_total","_textCreate","_textMissing","_selectedRecipeInput","_selectedRecipeInputStrict","_num_removed","_removed_total","_temp_removed_array","_abort","_waterLevel","_waterLevel_lowest","_reason","_isNear","_missingTools","_hastoolweapon","_selectedRecipeTools","_distance","_crafting","_needNear","_item","_baseClass","_num_removed_weapons","_outputWeapons","_inputWeapons","_randomOutput","_craft_doLoop","_selectedWeapon","_selectedMag","_sfx"];
private ["_tradeComplete","_onLadder","_canDo","_selectedRecipeOutput","_boiled","_proceed","_itemIn","_countIn","_missing","_missingQty","_qty","_itemOut","_countOut","_started","_finished","_animState","_isMedic","_removed","_tobe_removed_total","_textCreate","_textMissing","_selectedRecipeInput","_selectedRecipeInputStrict","_num_removed","_removed_total","_temp_removed_array","_abort","_waterLevel","_waterLevel_lowest","_reason","_isNear","_missingTools","_hastoolweapon","_selectedRecipeTools","_distance","_crafting","_needNear","_item","_baseClass","_num_removed_weapons","_outputWeapons","_inputWeapons","_randomOutput","_craft_doLoop","_selectedWeapon","_selectedMag","_sfx"];
if (dayz_actionInProgress) exitWith {localize "str_epoch_player_63" call dayz_rollingMessages;};
dayz_actionInProgress = true;
@@ -44,6 +44,7 @@ _outputWeapons = [];
_selectedRecipeOutput = [];
_onLadder = (getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder")) == 1;
_canDo = (!r_drag_sqf && !r_player_unconscious && !_onLadder);
_boiled = false;
// Need Near Requirements
_needNear = getArray (configFile >> _baseClass >> _item >> "ItemActions" >> _crafting >> "neednearby");
@@ -195,6 +196,9 @@ if (_canDo) then {
//diag_log format["debug remove: %1 of: %2", _configParent, _x];
if (_x == "ItemWaterbottle" || _configParent == "ItemWaterbottle") then {
_waterLevel = floor((getNumber(configFile >> "CfgMagazines" >> _x >> "wateroz")) - 1);
if (_x in ["ItemWaterbottle9ozBoiled","ItemWaterbottle8ozBoiled","ItemWaterbottle7ozBoiled","ItemWaterbottle6ozBoiled","ItemWaterbottle5ozBoiled","ItemWaterbottle4ozBoiled","ItemWaterbottle3ozBoiled","ItemWaterbottle2ozBoiled","ItemWaterBottleBoiled"]) then {
_boiled = true;
};
};
_temp_removed_array set [count _temp_removed_array,_x];
};
@@ -236,7 +240,11 @@ if (_canDo) then {
_countOut = _x select 1;
if (_itemOut == "ItemWaterbottleUnfilled") then {
if (_waterLevel > 0) then {
_itemOut = format["ItemWaterbottle%1oz",_waterLevel];
if (_boiled) then {
_itemOut = format["ItemWaterbottle%1ozBoiled",_waterLevel];
} else {
_itemOut = format["ItemWaterbottle%1oz",_waterLevel];
};
};
};
// diag_log format["Checking for water level: %1", _waterLevel];