2015-07-24 14:16:25 +00:00
|
|
|
/*
|
|
|
|
Carnival Event
|
|
|
|
by Aaron Clark - EpochMod.com
|
2017-02-28 18:33:58 +00:00
|
|
|
|
2015-07-24 14:16:25 +00:00
|
|
|
Improvements and or bugfixes and other contributions are welcome via the github:
|
2016-06-13 16:54:19 +00:00
|
|
|
https://github.com/EpochModTeam/Epoch/tree/release/Sources/epoch_server_settings/EpochEvents/CarnivalSpawner.sqf
|
2015-07-24 14:16:25 +00:00
|
|
|
*/
|
2017-05-02 12:35:38 +00:00
|
|
|
//[[[cog import generate_private_arrays ]]]
|
2017-11-13 20:54:50 +00:00
|
|
|
private ["_cfgEpoch", "_debug", "_showMarkers", "_limit", "_counter", "_others", "_distFromOthers", "_position", "_goodPos", "_objs","_item", "_lootPos", "_loot", "_debugMkr", "_markers", "_originalColors", "_decayMarkerColor", "_compromisedColor", "_decayTime", "_serverSettingsConfig", "_timeMultiplier", "_rEvents", "_thisEvent"];
|
2017-05-02 12:35:38 +00:00
|
|
|
//[[[end]]]
|
2017-11-12 23:39:03 +00:00
|
|
|
_cfgEpoch = configFile >> "CfgEpoch" >> worldname;
|
|
|
|
_debug = if(getNumber(_cfgEpoch >> "debugCarnivalSpawner") isEqualTo 1)then{true}else{false};
|
|
|
|
_limit = getNumber(_cfgEpoch >> "maxCarnivalSpawns");
|
|
|
|
_counter = missionNameSpace getVariable["EPOCH_carnivalCounter",0];
|
|
|
|
_others = missionNameSpace getVariable["EPOCH_carnivals", [[0,0,0]] ];
|
|
|
|
_distFromOthers = getNumber(_cfgEpoch >> "distFromOtherCarnivals");
|
2015-06-04 14:11:41 +00:00
|
|
|
|
2017-11-12 23:39:03 +00:00
|
|
|
//STOP THE SCRIPT AND EXIT IF THE COUNTER IS TOO HIGH.
|
|
|
|
if (_counter >= _limit) exitWith {
|
|
|
|
if (_debug) then {diag_log "DEBUG: suppressed carnival spawn over limit"};
|
|
|
|
};
|
|
|
|
|
|
|
|
for "_i" from 0 to 100 step 1 do {
|
|
|
|
_position = [epoch_centerMarkerPosition, 0, EPOCH_dynamicVehicleArea, 10, 0, 1000, 0] call BIS_fnc_findSafePos;
|
|
|
|
_goodPos = true;
|
|
|
|
|
|
|
|
_goodPos = [_position, true, true, true, _others, _distFromOthers] call EPOCH_server_isNearChecks;
|
|
|
|
|
|
|
|
if(_goodPos)then{
|
|
|
|
_i = 100;
|
|
|
|
}else{
|
|
|
|
_position = [];
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
_objs = [];
|
|
|
|
if ((count _position) == 2) then{
|
|
|
|
// CREATE THE CARNIVAL AREA AND LOOT
|
|
|
|
_item = createVehicle["ferrisWheel_EPOCH", _position, [], 0.0, "CAN_COLLIDE"];
|
|
|
|
_objs pushBack _item;
|
|
|
|
_lootPos = [_position,1,20,3,1,20,0] call BIS_fnc_findSafePos;
|
|
|
|
_loot = createVehicle["container_epoch", _lootPos, [], 0.0, "CAN_COLLIDE"];
|
|
|
|
_loot setMass 220;
|
|
|
|
_loot setVariable["EPOCH_Loot",false,true];
|
|
|
|
|
|
|
|
if(_debug)then{
|
|
|
|
_debugMkr = createMarker [str(_lootPos),_lootPos];
|
|
|
|
_debugMkr setMarkerShape "ICON";
|
|
|
|
_debugMkr setMarkerType "mil_dot";
|
|
|
|
_debugMkr setMarkerColor "ColorRed";
|
|
|
|
};
|
|
|
|
|
2015-06-04 14:11:41 +00:00
|
|
|
{
|
2017-11-12 23:39:03 +00:00
|
|
|
_item = createVehicle[_x, _position, [], 80, "NONE"];
|
|
|
|
_objs pushBack _item;
|
2015-06-04 14:11:41 +00:00
|
|
|
sleep 1;
|
2017-11-12 23:39:03 +00:00
|
|
|
} forEach (getArray(_cfgEpoch >> "carnivalSpawnedObjects"));
|
|
|
|
|
|
|
|
// SET UP THE MARKER.
|
|
|
|
_markers = [];
|
|
|
|
_originalColors = [];
|
|
|
|
_showMarkers = if(getNumber(_cfgEpoch >> "showCarnivalMarkers") isEqualTo 1)then{true}else{false};
|
|
|
|
_decayMarkerColor = getText(_cfgEpoch >> "carnivalDecayMarkerColor");
|
|
|
|
_compromisedColor = getText(_cfgEpoch >> "carnivalCompromisedColor");
|
|
|
|
if (_showMarkers) then{
|
|
|
|
_markers = ["Carnival",_position] call EPOCH_server_createGlobalMarkerSet;
|
|
|
|
{
|
|
|
|
_originalColors pushBack (getMarkerColor _x);
|
|
|
|
}forEach _markers;
|
|
|
|
|
|
|
|
// Check for HeightenedPlayerVsPlayer false and remove comprimised coloring
|
|
|
|
if!(getNumber(_cfgEpoch >> "HeightenedPlayerVsPlayer") isEqualTo 1)then{
|
|
|
|
_compromisedColor = getMarkerColor (_markers select 0);
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
// TICK COUNTER + 1 SPAWNED PLANT PATCH.
|
|
|
|
_counter = _counter + 1;
|
|
|
|
missionNameSpace setVariable["EPOCH_carnivalCounter",_counter];
|
|
|
|
|
|
|
|
// ADD POSITION TO OTHERS ARRAY
|
|
|
|
missionNameSpace setVariable["EPOCH_carnivals", _others + [_position]];
|
|
|
|
|
|
|
|
// SEND EVENT TO MONITOR
|
|
|
|
_decayTime = getNumber(_cfgEpoch >> "carnivalDecayTime");
|
|
|
|
_serverSettingsConfig = configFile >> "CfgEpochServer";
|
|
|
|
_timeMultiplier = ([_serverSettingsConfig, "timeMultiplier", 1] call EPOCH_fnc_returnConfigEntry);
|
|
|
|
_rEvents = missionNameSpace getVariable["EPOCH_RunningEvents",[]];
|
|
|
|
_thisEvent = [_lootPos, [_loot], _objs,"carnivalCounter", diag_tickTime, (_decayTime * _timeMultiplier), _showMarkers, _markers, _originalColors, _decayMarkerColor, _compromisedColor];
|
|
|
|
missionNameSpace setVariable["EPOCH_RunningEvents",_rEvents + [_thisEvent]];
|
|
|
|
if (_debug) then {
|
|
|
|
diag_log format["EPOCHDebug: carnivalSpawner-%1", missionNameSpace getVariable["EPOCH_RunningEvents",[]]];
|
2015-06-04 14:11:41 +00:00
|
|
|
};
|
2015-07-24 14:16:25 +00:00
|
|
|
};
|