0.3.7.011

This commit is contained in:
vbawol 2016-01-07 22:32:52 -06:00
parent b8dac3481e
commit f7f5d25af4
15 changed files with 29119 additions and 85 deletions

View File

@ -14,9 +14,13 @@
[ADDED-WIP] Tin Bars (ItemTinBar,ItemTinBar10oz). [ADDED-WIP] Tin Bars (ItemTinBar,ItemTinBar10oz).
[ADDED-WIP] Plywood sheets in small and large stacks (ItemPlywood,ItemPlywoodPack). [ADDED-WIP] Plywood sheets in small and large stacks (ItemPlywood,ItemPlywoodPack).
[Changed] Change all publicVariableServer calls to use remoteExec calls for better performance. [Changed] Change all publicVariableServer calls to use remoteExec calls for better performance.
[Fixed] Incorrectly being able to sell/buy items from a dead trader.
[Fixed] Snakes now require line of sight to bite player.
[Fixed] Custom epoch swing animations for Hatchet and sledge now work correctly. [Fixed] Custom epoch swing animations for Hatchet and sledge now work correctly.
[Fixed] Boss Sapper incorrectly cleaned up before detonation.
**Server** **Server**
[Added] Setting to control random magazine ammo counts in loot spawner. CfgEpochClient -> randomizeMagazineAmmoCount (default: true) [Added] Setting to control random magazine ammo counts in loot spawner. CfgEpochClient -> randomizeMagazineAmmoCount (default: true)
[Changed] Earthquakes with mineral veins spawn chances increased with less players.
[Changed] Driver or passengers of a driverless can now control vehicle locks. Also only the owner can control locks from outside of a occupied vehicle. [Changed] Driver or passengers of a driverless can now control vehicle locks. Also only the owner can control locks from outside of a occupied vehicle.
[Changed] Commented out Halloween masks from loot tables. [Changed] Commented out Halloween masks from loot tables.
[Updated] New Battleye remoteExec.txt for added remoteExec calls. [Updated] New Battleye remoteExec.txt for added remoteExec calls.

View File

@ -1,4 +1,4 @@
/*%FSM<COMPILE "C:\Program Files (x86)\Bohemia Interactive\Tools\FSM Editor Personal Edition\scriptedFSM.cfg, sapperAlt">*/ /*%FSM<COMPILE "F:\Program Files (x86)\Bohemia Interactive\Tools\FSM Editor Personal Edition\scriptedFSM.cfg, sapperAlt">*/
/*%FSM<HEAD>*/ /*%FSM<HEAD>*/
/* /*
item0[] = {"sapper",0,250,-225.000000,-325.000000,-125.000000,-275.000000,0.000000,"sapper"}; item0[] = {"sapper",0,250,-225.000000,-325.000000,-125.000000,-275.000000,0.000000,"sapper"};
@ -35,12 +35,12 @@ item30[] = {"stalking",4,218,-50.000000,50.000000,50.000000,100.000000,5.000000,
item31[] = {"Wait_random",4,218,-225.000000,-200.000000,-125.000000,-150.000000,10.000000,"Wait random"}; item31[] = {"Wait_random",4,218,-225.000000,-200.000000,-125.000000,-150.000000,10.000000,"Wait random"};
item32[] = {"groan",4,218,200.000000,375.000000,300.000000,425.000000,5.000000,"groan"}; item32[] = {"groan",4,218,200.000000,375.000000,300.000000,425.000000,5.000000,"groan"};
item33[] = {"detonate",4,218,125.000000,-350.000000,225.000000,-300.000000,70.000000,"detonate"}; item33[] = {"detonate",4,218,125.000000,-350.000000,225.000000,-300.000000,70.000000,"detonate"};
item34[] = {"end",1,250,975.000000,0.000000,1075.000000,50.000000,0.000000,"end"}; item34[] = {"end",1,250,1050.000000,-25.000000,1150.000000,25.000000,0.000000,"end"};
item35[] = {"Wait_to_delete",4,218,975.000000,150.000000,1075.000000,200.000000,10.000000,"Wait to delete"}; item35[] = {"Wait_to_delete",4,218,1050.000000,125.000000,1150.000000,175.000000,10.000000,"Wait to delete"};
item36[] = {"handle_dispose",2,250,525.000000,125.000000,625.000000,175.000000,0.000000,"handle dispose"}; item36[] = {"handle_dispose",2,250,525.000000,125.000000,625.000000,175.000000,0.000000,"handle dispose"};
item37[] = {"Wait_1_5_sec",4,218,650.000000,300.000000,750.000000,350.000000,0.000000,"Wait" \n "1.5 sec"}; item37[] = {"Wait_1_5_sec",4,218,525.000000,350.000000,625.000000,400.000000,0.000000,"Wait" \n "1.5 sec"};
item38[] = {"do_boom",2,4346,650.000000,225.000000,750.000000,275.000000,0.000000,"do boom"}; item38[] = {"do_boom",2,250,650.000000,225.000000,750.000000,275.000000,0.000000,"do boom"};
item39[] = {"_",8,218,800.000000,300.000000,850.000000,325.000000,0.000000,""}; item39[] = {"_",8,218,800.000000,225.000000,875.000000,275.000000,0.000000,""};
item40[] = {"do_groan",2,250,225.000000,500.000000,325.000000,550.000000,0.000000,"do groan"}; item40[] = {"do_groan",2,250,225.000000,500.000000,325.000000,550.000000,0.000000,"do groan"};
item41[] = {"do_stalk",2,250,-200.000000,50.000000,-100.000000,100.000000,0.000000,"do stalk"}; item41[] = {"do_stalk",2,250,-200.000000,50.000000,-100.000000,100.000000,0.000000,"do stalk"};
item42[] = {"do_loiter_big",2,250,350.000000,500.000000,450.000000,550.000000,0.000000,"do loiter big"}; item42[] = {"do_loiter_big",2,250,350.000000,500.000000,450.000000,550.000000,0.000000,"do loiter big"};
@ -63,7 +63,9 @@ item58[] = {"feeling",4,218,775.000000,-50.000000,875.000000,0.000000,50.000000,
item59[] = {"charging",4,218,-50.000000,225.000000,50.000000,275.000000,5.000000,"charging"}; item59[] = {"charging",4,218,-50.000000,225.000000,50.000000,275.000000,5.000000,"charging"};
item60[] = {"stalk",4,218,375.000000,-275.000000,475.000000,-225.000000,20.000000,"stalk"}; item60[] = {"stalk",4,218,375.000000,-275.000000,475.000000,-225.000000,20.000000,"stalk"};
item61[] = {"not_shot",4,218,900.000000,125.000000,1000.000000,175.000000,10.000000,"not shot"}; item61[] = {"not_shot",4,218,900.000000,125.000000,1000.000000,175.000000,10.000000,"not shot"};
item62[] = {"finished_boom",2,250,900.000000,225.000000,1000.000000,275.000000,0.000000,"finished boom"}; item62[] = {"finished_boom",2,250,900.000000,300.000000,1000.000000,350.000000,0.000000,"finished boom"};
item63[] = {"Wait_for_Explosi",4,218,650.000000,350.000000,750.000000,400.000000,0.000000,"Wait for Explosion"};
item64[] = {"Remove_corpse",2,4346,775.000000,300.000000,875.000000,350.000000,0.000000,"Remove corpse"};
link0[] = {0,31}; link0[] = {0,31};
link1[] = {1,2}; link1[] = {1,2};
link2[] = {2,3}; link2[] = {2,3};
@ -126,7 +128,7 @@ link58[] = {35,34};
link59[] = {36,57}; link59[] = {36,57};
link60[] = {36,61}; link60[] = {36,61};
link61[] = {37,38}; link61[] = {37,38};
link62[] = {38,39}; link62[] = {38,63};
link63[] = {39,62}; link63[] = {39,62};
link64[] = {40,6}; link64[] = {40,6};
link65[] = {41,30}; link65[] = {41,30};
@ -154,8 +156,10 @@ link86[] = {59,4};
link87[] = {60,2}; link87[] = {60,2};
link88[] = {61,62}; link88[] = {61,62};
link89[] = {62,35}; link89[] = {62,35};
globals[] = {25.000000,1,0,0,16777215,640,480,1,248,6316128,1,-343.543304,1069.998291,679.913574,-353.385406,1000,731,1}; link90[] = {63,64};
window[] = {2,-1,-1,-1,-1,542,56,1081,17,3,1018}; link91[] = {64,39};
globals[] = {25.000000,1,0,0,16777215,640,480,1,253,6316128,1,-209.204178,1204.337524,679.913574,-353.385406,1000,880,1};
window[] = {2,-1,-1,-1,-1,655,130,1155,130,3,1018};
*//*%FSM</HEAD>*/ *//*%FSM</HEAD>*/
class FSM class FSM
{ {
@ -1040,25 +1044,19 @@ class FSM
class do_boom class do_boom
{ {
name = "do_boom"; name = "do_boom";
init = /*%FSM<STATEINIT""">*/"" \n init = /*%FSM<STATEINIT""">*/"[_sBomb, player, Epoch_personalToken,_sapper,_sapper] remoteExec [""EPOCH_server_handle_sapperObjs"",2];" \n
"[_sBomb, player, Epoch_personalToken,_sapper,_sapper] remoteExec [""EPOCH_server_handle_sapperObjs"",2];" \n
"" \n
"_sBomb = objNull;" \n
"" \n
"deleteVehicle _sapper;" \n
"" \n
"_doneBoom = true;" \n "_doneBoom = true;" \n
""/*%FSM</STATEINIT""">*/; ""/*%FSM</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/; precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links class Links
{ {
/*%FSM<LINK "_">*/ /*%FSM<LINK "Wait_for_Explosi">*/
class _ class Wait_for_Explosi
{ {
priority = 0.000000; priority = 0.000000;
to="finished_boom"; to="Remove_corpse";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/; precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/""/*%FSM</CONDITION""">*/; condition=/*%FSM<CONDITION""">*/"isNull(_sBomb)"/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/; action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
}; };
/*%FSM</LINK>*/ /*%FSM</LINK>*/
@ -1409,11 +1407,32 @@ class FSM
}; };
}; };
/*%FSM</STATE>*/ /*%FSM</STATE>*/
/*%FSM<STATE "Remove_corpse">*/
class Remove_corpse
{
name = "Remove_corpse";
init = /*%FSM<STATEINIT""">*/"deleteVehicle _sapper;"/*%FSM</STATEINIT""">*/;
precondition = /*%FSM<STATEPRECONDITION""">*/""/*%FSM</STATEPRECONDITION""">*/;
class Links
{
/*%FSM<LINK "_">*/
class _
{
priority = 0.000000;
to="finished_boom";
precondition = /*%FSM<CONDPRECONDITION""">*/""/*%FSM</CONDPRECONDITION""">*/;
condition=/*%FSM<CONDITION""">*/""/*%FSM</CONDITION""">*/;
action=/*%FSM<ACTION""">*/""/*%FSM</ACTION""">*/;
};
/*%FSM</LINK>*/
};
};
/*%FSM</STATE>*/
}; };
initState="sapper"; initState="sapper";
finalStates[] = finalStates[] =
{ {
"end" "end",
}; };
}; };
/*%FSM</COMPILE>*/ /*%FSM</COMPILE>*/

View File

@ -101,21 +101,20 @@ _unifiedInteract = {
switch _interactOption do { switch _interactOption do {
case 0: { case 0: {
_magCount = getNumber (_config >> "count"); _magazineSizeMax = getNumber (_config >> "count");
// allow repack for all magazines with greater than 1 bullet // allow repack for all magazines with greater than 1 bullet
if (_magCount > 1) then { if (_magazineSizeMax > 1) then {
_ammoTotal = 0; _magazineSize = 0;
_magazinesAmmoFull = magazinesAmmoFull player; _magazinesAmmoFull = magazinesAmmoFull player;
{ {
if (_item isEqualTo (_x select 0)) then { if (_item isEqualTo (_x select 0)) then {
_ammoTotal = _ammoTotal + (_x select 1); if (!(_x select 2)) then {
_magazineSize = _magazineSize + (_x select 1);
};
}; };
} forEach _magazinesAmmoFull; } forEach _magazinesAmmoFull;
_magazineSize = _ammoTotal;
_magazineSizeMax = _magCount;
// remove all // remove all
player removeMagazines _item; player removeMagazines _item;
@ -123,12 +122,14 @@ switch _interactOption do {
for "_i" from 1 to floor (_magazineSize / _magazineSizeMax) do for "_i" from 1 to floor (_magazineSize / _magazineSizeMax) do
{ {
player addMagazine [_item, _magazineSizeMax]; player addMagazine [_item, _magazineSizeMax];
//diag_log format ["DEBUG: added full mag %1", _magazineSizeMax];
}; };
// Add last non full magazine // Add last non full magazine
if ((_magazineSize % _magazineSizeMax) > 0) then { if ((_magazineSize % _magazineSizeMax) > 0) then {
player addMagazine [_item, floor (_magazineSize % _magazineSizeMax)]; player addMagazine [_item, floor (_magazineSize % _magazineSizeMax)];
//diag_log format ["DEBUG: added remainder %1", floor (_magazineSize % _magazineSizeMax)];
}; };
_dt = ["<t size='0.8' shadow='0' color='#99ffffff'>Ammo Repacked</t>", 0, 1, 5, 2, 0, 1] spawn bis_fnc_dynamictext; _dt = ["<t size='0.8' shadow='0' color='#99ffffff'>Ammo Repacked</t>", 0, 1, 5, 2, 0, 1] spawn bis_fnc_dynamictext;
}; };
}; };
case 1: _unifiedInteract; // Eat 1 case 1: _unifiedInteract; // Eat 1

View File

@ -53,7 +53,7 @@ if (!isNull EPOCH_currentTarget && vehicle player == player) then {
case 0: { case 0: {
_stability = 100 - round(damage _currentTarget * 100); _stability = 100 - round(damage _currentTarget * 100);
_icon = "\x\addons\a3_epoch_code\Data\UI\loading_bar_%1.paa"; _icon = "\x\addons\a3_epoch_code\Data\UI\loading_bar_%1.paa";
_text = "Press (Inventory)"; _text = "";
if (_stability < 50) then { if (_stability < 50) then {
_color = [1, 0.5, 0, 0.7]; _color = [1, 0.5, 0, 0.7];

View File

@ -46,7 +46,7 @@ if !(isNull _this && alive _this) then {
_bleedAmount = 30; _bleedAmount = 30;
_bloodpAmount = 3; _bloodpAmount = 3;
_soundEffect = "snake_bite0"; _soundEffect = "snake_bite0";
_canSee = true; _canSee = !(lineIntersects[eyePos _this, aimPos player, _this, player]);
_ppEffect = 0; _ppEffect = 0;
}; };
case "Snake2_random_EPOCH": { case "Snake2_random_EPOCH": {
@ -57,7 +57,7 @@ if !(isNull _this && alive _this) then {
_bleedAmount = 30; _bleedAmount = 30;
_bloodpAmount = 3; _bloodpAmount = 3;
_soundEffect = "snake_bite0"; _soundEffect = "snake_bite0";
_canSee = true; _canSee = !(lineIntersects[eyePos _this, aimPos player, _this, player]);
_ppEffect = 0; _ppEffect = 0;
}; };
case "GreatWhite_F": { case "GreatWhite_F": {

View File

@ -21,32 +21,6 @@ if (isNull _target) then {
}; };
if (!isNull _target) then { if (!isNull _target) then {
if (alive _target) then {
/*
if ((_target isKindOf "LandVehicle") || (_target isKindOf "Air") || (_target isKindOf "Ship") || (_target isKindOf "Tank")) then {
_dialog = "InteractVehicle";
};
if (_ctrl) then {
if (_target isKindOf "Constructions_static_F" || _target isKindOf "Constructions_foundation_F") then {
_dialog = "InteractBaseBuilding";
};
};
*/
/*
if (_target isKindOf "Man") then {
if (_target != player) then {
if (!isPlayer _target) then {
if ((_target getVariable["AI_SLOT", -1]) != -1) then {
_dialog = "InteractNPC";
};
};
};
};
*/
};
if (_forceGear) then { if (_forceGear) then {
player action ["Gear", _target]; player action ["Gear", _target];
_handled = true; _handled = true;
@ -57,4 +31,4 @@ if (!isNull _target) then {
}; };
}; };
}; };
_handled _handled

View File

@ -1,3 +1,5 @@
private["_ok"]; private["_ok"];
if (isNull _this) exitWith {};
if !(alive _this) exitWith {};
_ok = createdialog "MissionSelect"; _ok = createdialog "MissionSelect";
if (!_ok) exitWith {}; if (!_ok) exitWith {};

View File

@ -1,14 +1,16 @@
private ["_index","_type","_config","_name","_picture","_qty","_items","_qtys","_ok","_vehicles","_aiItems","_target","_slot"]; private ["_index","_type","_config","_name","_picture","_qty","_items","_qtys","_ok","_vehicles","_aiItems","_target","_slot"];
_target = cursorTarget; _target = cursorTarget;
_slot = _target getVariable ["AI_SLOT",-1]; if (alive _target) then {
if (_slot != -1) then { _slot = _target getVariable ["AI_SLOT",-1];
EPOCH_lastNPCtradeTarget = _target; if (_slot != -1) then {
closeDialog 0; EPOCH_lastNPCtradeTarget = _target;
_ok = createdialog "TradeNPCMenu"; closeDialog 0;
if (!_ok) exitWith {}; _ok = createdialog "TradeNPCMenu";
9992 cutRsc["EpochGameUI2", "PLAIN", 2, false]; if (!_ok) exitWith {};
((uiNamespace getVariable "EPOCH_EpochGameUI2") displayCtrl 21208) ctrlSetText format["%1", EPOCH_playerCrypto]; 9992 cutRsc["EpochGameUI2", "PLAIN", 2, false];
{lbAdd[42100,_x];lbAdd[42101,_x]} forEach ["All","Magazines","Items","Vehicles"]; ((uiNamespace getVariable "EPOCH_EpochGameUI2") displayCtrl 21208) ctrlSetText format["%1", EPOCH_playerCrypto];
lbSetCurSel[42100, 0]; {lbAdd[42100,_x];lbAdd[42101,_x]} forEach ["All","Magazines","Items","Vehicles"];
lbSetCurSel[42101, 0]; lbSetCurSel[42100, 0];
}; lbSetCurSel[42101, 0];
};
};

View File

@ -25,9 +25,9 @@ private["_item", "_currQty", "_tradeType", "_itemWorth", "_aiItems", "_itemClass
if (!isNil "EPOCH_TRADE_COMPLETE") exitWith {}; if (!isNil "EPOCH_TRADE_COMPLETE") exitWith {};
if (!isNil "EPOCH_TRADE_STARTED") exitWith{}; if (!isNil "EPOCH_TRADE_STARTED") exitWith{};
if (!isNull _this) exitWith{};
if (!isNull _this) then { if (alive _this) then {
_config = 'CfgPricing' call EPOCH_returnConfig; _config = 'CfgPricing' call EPOCH_returnConfig;

View File

@ -24,8 +24,8 @@ class CfgActionMenu
dyna_distance = "(player distance dyna_cursorTarget) < 5"; dyna_distance = "(player distance dyna_cursorTarget) < 5";
dyna_buildMode = "([10] call EPOCH_fnc_cursorTarget) call EPOCH_checkBuild;"; dyna_buildMode = "([10] call EPOCH_fnc_cursorTarget) call EPOCH_checkBuild;";
dyna_isVehicle = "if !(isNull dyna_cursorTarget && alive dyna_cursorTarget) then {((dyna_cursorTarget isKindOf 'LandVehicle') || (dyna_cursorTarget isKindOf 'Air') || (dyna_cursorTarget isKindOf 'Ship') || (dyna_cursorTarget isKindOf 'Tank'))} else {false}"; dyna_isVehicle = "if (!(isNull dyna_cursorTarget) && alive dyna_cursorTarget) then {((dyna_cursorTarget isKindOf 'LandVehicle') || (dyna_cursorTarget isKindOf 'Air') || (dyna_cursorTarget isKindOf 'Ship') || (dyna_cursorTarget isKindOf 'Tank'))} else {false}";
dyna_isTrader = "if !(isNull dyna_cursorTarget && alive dyna_cursorTarget) then {((dyna_cursorTarget isKindOf 'Man') && (dyna_cursorTarget != player) && (!isPlayer dyna_cursorTarget) && ((dyna_cursorTarget getVariable['AI_SLOT', -1]) != -1))} else {false}"; dyna_isTrader = "if (!(isNull dyna_cursorTarget) && alive dyna_cursorTarget) then {((dyna_cursorTarget isKindOf 'Man') && (dyna_cursorTarget != player) && (!isPlayer dyna_cursorTarget) && ((dyna_cursorTarget getVariable['AI_SLOT', -1]) != -1))} else {false}";
dyna_locked = "locked dyna_cursorTarget in [2,3]"; dyna_locked = "locked dyna_cursorTarget in [2,3]";
dyna_lockedInVehicle = "locked vehicle player in [2,3]"; dyna_lockedInVehicle = "locked vehicle player in [2,3]";
}; };

File diff suppressed because it is too large Load Diff

View File

@ -513,6 +513,13 @@ class Epoch_Sapper_F: Epoch_Sapper_base_F
}; };
}; };
}; };
class Epoch_SapperG_F : Epoch_Sapper_F {
scope = 2;
displayName = "Sapper (Toxic)";
moves = "CfgMovesMaleSdr3";
hiddenSelections[] = {"camo","remains"};
hiddenSelectionsTextures[] = {"x\addons\a3_epoch_assets\textures\sapper\sapper_green_eco.paa",""};
};
class Epoch_SapperB_F : Epoch_Sapper_base_F class Epoch_SapperB_F : Epoch_Sapper_base_F
{ {
scope = 2; scope = 2;

View File

@ -115,10 +115,10 @@ class CfgAnimationSourceSounds
class CfgCommands class CfgCommands
{ {
// allowedHTMLLoadURIs[] += // think this adds to an existing array // allowedHTMLLoadURIs[] += // think this adds to an existing array?
allowedHTMLLoadURIs[] = allowedHTMLLoadURIs[] +=
{ {
"https://raw.githubusercontent.com/epochmodteam/epoch/test/changelog.html" //there are some issues with capitalization used in github links "http://epochmod.com*"
}; };
}; };

View File

@ -6,19 +6,23 @@
Improvements and or bugfixes and other contributions are welcome via the github: Improvements and or bugfixes and other contributions are welcome via the github:
https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_server_settings/EpochEvents/Earthquake.sqf https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_server_settings/EpochEvents/Earthquake.sqf
*/ */
private ["_marker","_minerals","_randomIndex","_item","_plyrsNearEpicenter","_position"]; private ["_marker","_minerals","_randomIndex","_item","_plyrsNearEpicenter","_position","_chance"];
_position = [epoch_centerMarkerPosition, 0, EPOCH_dynamicVehicleArea, 10, 0, 1000, 0] call BIS_fnc_findSafePos; _position = [epoch_centerMarkerPosition, 0, EPOCH_dynamicVehicleArea, 10, 0, 1000, 0] call BIS_fnc_findSafePos;
if ((count _position) == 2) then{ if ((count _position) == 2) then{
_plyrsNearEpicenter = _position nearEntities[["Epoch_Male_F", "Epoch_Female_F"], 1000]; _plyrsNearEpicenter = _position nearEntities[["Epoch_Male_F", "Epoch_Female_F"], 1000];
if !(_plyrsNearEpicenter isEqualTo[]) then{ if !(_plyrsNearEpicenter isEqualTo[]) then{
if ((random 1) > 0.5) then{ // decrease chance with more players
_chance = linearConversion [1, 100, (count allPlayers), 0, 0.5, true];
if ((random 1) > _chance) then {
// send earthquake to each player in zone // send earthquake to each player in zone
{ {
[["earthQuake", _position], (owner _x)] call EPOCH_sendPublicVariableClient; [["earthQuake", _position], (owner _x)] call EPOCH_sendPublicVariableClient;
}forEach _plyrsNearEpicenter; }forEach _plyrsNearEpicenter;
_minerals = ["MineralDepositCopper_EPOCH", "MineralDepositGold_EPOCH", "MineralDepositSilver_EPOCH"]; _minerals = ["MineralDepositCopper_EPOCH", "MineralDepositGold_EPOCH", "MineralDepositSilver_EPOCH"];
_randomIndex = floor(random(count _minerals)); _randomIndex = floor(random(count _minerals));
_item = createVehicle[(_minerals select _randomIndex), _position, [], 0.0, "CAN_COLLIDE"]; _item = createVehicle[(_minerals select _randomIndex), _position, [], 0.0, "CAN_COLLIDE"];
if (EPOCH_showEarthQuakes) then{ if (EPOCH_showEarthQuakes) then{
_marker = createMarker[str(_position), _position]; _marker = createMarker[str(_position), _position];