/** * ExileClient_object_item_consume * * Exile Mod * www.exilemod.com * © 2015 Exile Mod Team * * This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License. * To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/. */ private["_itemClassName","_consumingConfig","_configEffects","_feedbackString","_effectAttributeId","_effectValue","_effectDuration","_effectUnit","_effect","_addPlusCharacter","_bloodAlcohol","_bloodAlcoholComment","_animations","_animationIndex","_stopBleeding","_configSounds","_numberOfConfigSounds","_returnItemClass"]; _itemClassName = _this select 0; if !(_itemClassName in (magazines player)) exitWith {false}; switch (_itemClassName) do { case "Exile_Item_PowerDrink": { _playerMoney = player getVariable ['ExileMoney', 0]; _lockerMoney = player getVariable ['ExileLocker', 0]; _playerMoney = _playerMoney + 1; _poptabsplayer = _playerMoney + _lockerMoney; player setVariable ['ExilePopTabsCheck', _poptabsplayer]; player setVariable ['ExileMoney', _playerMoney, true]; player setVariable ['ExileLocker', _lockerMoney, true]; format['setPlayerMoney:%1:%2', _playerMoney, player getVariable ['ExileDatabaseID', 0]] call ExileServer_system_database_query_fireAndForget; ["SuccessTitleAndText", ["From PowerDrink", format ["%1", "1"]]] call ExileClient_gui_toaster_addTemplateToast; }; case "Exile_Item_EnergyDrink": { _playerMoney = player getVariable ['ExileMoney', 0]; _lockerMoney = player getVariable ['ExileLocker', 0]; _playerMoney = _playerMoney + 1; _poptabsplayer = _playerMoney + _lockerMoney; player setVariable ['ExilePopTabsCheck', _poptabsplayer]; player setVariable ['ExileMoney', _playerMoney, true]; player setVariable ['ExileLocker', _lockerMoney, true]; format['setPlayerMoney:%1:%2', _playerMoney, player getVariable ['ExileDatabaseID', 0]] call ExileServer_system_database_query_fireAndForget; ["SuccessTitleAndText", ["From EnergyDrink", format ["%1", "1"]]] call ExileClient_gui_toaster_addTemplateToast; }; case "Exile_Item_MountainDupe": { _playerMoney = player getVariable ['ExileMoney', 0]; _lockerMoney = player getVariable ['ExileLocker', 0]; _playerMoney = _playerMoney + 1; _poptabsplayer = _playerMoney + _lockerMoney; player setVariable ['ExilePopTabsCheck', _poptabsplayer]; player setVariable ['ExileMoney', _playerMoney, true]; player setVariable ['ExileLocker', _lockerMoney, true]; format['setPlayerMoney:%1:%2', _playerMoney, player getVariable ['ExileDatabaseID', 0]] call ExileServer_system_database_query_fireAndForget; ["SuccessTitleAndText", ["From MountainDupe", format ["%1", "1"]]] call ExileClient_gui_toaster_addTemplateToast; }; case "Exile_Item_ChocolateMilk": { _playerMoney = player getVariable ['ExileMoney', 0]; _lockerMoney = player getVariable ['ExileLocker', 0]; _playerMoney = _playerMoney + 1; _poptabsplayer = _playerMoney + _lockerMoney; player setVariable ['ExilePopTabsCheck', _poptabsplayer]; player setVariable ['ExileMoney', _playerMoney, true]; player setVariable ['ExileLocker', _lockerMoney, true]; format['setPlayerMoney:%1:%2', _playerMoney, player getVariable ['ExileDatabaseID', 0]] call ExileServer_system_database_query_fireAndForget; ["SuccessTitleAndText", ["From ChocolateMilk", format ["%1", "1"]]] call ExileClient_gui_toaster_addTemplateToast; }; }; if( isClass(configFile >> "CfgMagazines" >> _itemClassName >> "Interactions" >> "Consuming") ) then { _consumingConfig = configFile >> "CfgMagazines" >> _itemClassName >> "Interactions" >> "Consuming"; _configEffects = getArray (_consumingConfig >> "effects"); _feedbackString = ""; { _effectAttributeId = _x select 0; _effectValue = _x select 1; _effectDuration = _x select 2; _effectUnit = if (_effectAttributeId isEqualTo 4) then {"‰"} else {"%"}; _effect = [ _effectAttributeId, _effectValue, _effectDuration, time, _effectValue ]; _addPlusCharacter = if (_effectValue > 0) then { "+" } else { "" }; if( _effectDuration == 0 ) then { _feedbackString = _feedbackString + format["%1: %2%3%4
", (ExileClientPlayerEffectNames select _effectAttributeId), _addPlusCharacter, _effectValue, _effectUnit]; } else { _feedbackString = _feedbackString + format["%1: %2%3%4/%5s
", (ExileClientPlayerEffectNames select _effectAttributeId), _addPlusCharacter, _effectValue, _effectUnit, _effectDuration]; }; if (_effectAttributeId isEqualTo 4) then { _bloodAlcohol = (ExileClientPlayerAttributes select 4); _bloodAlcohol = (_bloodAlcohol + _effectValue) max 0; ExileClientPlayerAttributes set [4, _bloodAlcohol]; if (_bloodAlcohol > 0) then { _bloodAlcoholComment = "You feel tipsy."; if (_bloodAlcohol >= 3) then { _bloodAlcoholComment = "You are drunk as a skunk."; } else { if (_bloodAlcohol >= 2) then { _bloodAlcoholComment = "You are boozed-up."; } else { if (_bloodAlcohol >= 1) then { _bloodAlcoholComment = "You are drunk."; }; }; }; systemChat format["Your blood alcohol level is now %1%2. %3", _bloodAlcohol, "‰", _bloodAlcoholComment]; }; if (ExileClientDeliriumThread isEqualTo -1) then { call ExileClient_object_player_thread_delirium; ExileClientDeliriumThread = [20, ExileClient_object_player_thread_delirium, [], true] call ExileClient_system_thread_addtask; }; } else { ExileClientPlayerEffects pushBack _effect; }; } foreach _configEffects; _animations = getArray (_consumingConfig >> "animations"); if !(_animations isEqualTo []) then { if ((vehicle player) isEqualTo player) then { _animationIndex = call ExileClient_util_animation_getMatrixIndex; player playMove (_animations select _animationIndex); }; }; _stopBleeding = getNumber (_consumingConfig >> "stopBleeding"); if (_stopBleeding isEqualTo 1) then { player setBleedingRemaining 0; }; _configSounds = getArray (_consumingConfig >> "sounds"); _numberOfConfigSounds = count _configSounds; if( _numberOfConfigSounds > 0 ) then { playSound (_configSounds select (floor (random _numberOfConfigSounds))); }; player removeItem _itemClassName; _returnItemClass = getText (_consumingConfig >> "returnedItem"); if( _returnItemClass != "" ) then { player addItem _returnItemClass; }; if( _feedbackString != "") then { ["SuccessTitleAndText", ["Consumed item!", _feedbackString]] call ExileClient_gui_toaster_addTemplateToast; }; }; true