Merge remote-tracking branch 'refs/remotes/upstream/master'

This commit is contained in:
oiad
2016-11-11 01:18:55 +13:00
20 changed files with 65 additions and 113 deletions

View File

@@ -10,7 +10,6 @@ class AT_Zupa_BlueButton: ZSC_RscButtonMenu {
class AdvancedTrading
{
idd = 711197;
onLoad = "uiNamespace setVariable ['AdvancedTrading', _this select 0]";
class Controls {
class RscText_ATBackground1: ZSC_RscText
{

View File

@@ -1,7 +1,7 @@
class DoorManagement
{
idd = 711195;
onLoad = "uiNamespace setVariable ['DoorManagement', _this select 0]";
onLoad = "if (DZE_doorManagementMustBeClose) then {(_this select 0) displayCtrl 7108 ctrlSetText localize 'STR_EPOCH_HUMANS_NEARBY';};";
class Controls {
class RscText_7100: ZSC_RscTextT
{
@@ -80,7 +80,7 @@ class DoorManagement
class RscText_7108: ZSC_RscTextT
{
idc = 7108;
text = $STR_EPOCH_HUMANS_NEARBY;
text = $STR_MP_PLAYERS;
x = 0.31 * safezoneW + safezoneX;
y = 0.38 * safezoneH + safezoneY;
w = 0.13 * safezoneW;

View File

@@ -1,7 +1,7 @@
class PlotManagement
{
idd = 711194;
onLoad = "uiNamespace setVariable ['PlotManagement', _this select 0]";
onLoad = "if (DZE_plotManagementMustBeClose) then {(_this select 0) displayCtrl 7015 ctrlSetText localize 'STR_EPOCH_HUMANS_NEARBY';};";
class Controls {
class RscText_7000: ZSC_RscTextT
{
@@ -92,8 +92,8 @@ class PlotManagement
class RscText_7008: ZSC_RscTextT
{
idc = -1;
text = $STR_EPOCH_HUMANS_NEARBY;
idc = 7015;
text = $STR_MP_PLAYERS;
x = 0.31 * safezoneW + safezoneX;
y = 0.38 * safezoneH + safezoneY;
w = 0.13 * safezoneW;

View File

@@ -17,7 +17,7 @@ Please see configVariables.sqf for the value of gems (DZE_GemWorthArray) and the
*/
private ["_objectID","_objectUID","_target","_objects","_requirements","_count","_objects_filtered","_ctrl","_itemText","_type","_amount","_success","_wealth","_message1","_message2","_option"];
private ["_objectID","_objectUID","_target","_objects","_requirements","_count","_objects_filtered","_itemText","_type","_amount","_success","_wealth","_message1","_message2","_option","_line1","_line2","_plotDialog"];
disableSerialization;
if (dayz_actionInProgress) exitWith {localize "STR_EPOCH_ACTIONS_2" call dayz_rollingMessages;};
@@ -36,6 +36,9 @@ _objects = nearestObjects [_target, DZE_maintainClasses, DZE_maintainRange];
_objects_filtered = [];
_requirements = [];
_count = 0;
_plotDialog = findDisplay 711194;
_line1 = _plotDialog displayCtrl 7012;
_line2 = _plotDialog displayCtrl 7013;
_req = {
private ["_count","_amount","_itemText"];
@@ -48,7 +51,7 @@ _req = {
};
_maintain = {
private ["_requirements","_count","_amount","_itemText","_wealth","_success","_message1","_message2","_ctrl","_enoughMoney","_moneyInfo"];
private ["_requirements","_count","_amount","_itemText","_wealth","_success","_message1","_message2","_enoughMoney","_moneyInfo"];
_count = count (_this select 0);
_requirements = _count call _req;
@@ -96,10 +99,8 @@ _maintain = {
["Working",0,[100,15,10,0]] call dayz_NutritionSystem;
if (DZE_permanentPlot) then {
_ctrl = (uiNamespace getVariable "PlotManagement") displayCtrl 7012;
_ctrl ctrlSetText _message1;
_ctrl = (uiNamespace getVariable "PlotManagement") displayCtrl 7013;
_ctrl ctrlSetText _message2;
_line1 ctrlSetText _message1;
_line2 ctrlSetText _message2;
} else {
_message1 call dayz_rollingMessages;
};
@@ -114,10 +115,8 @@ _maintain = {
};
_message2 = " ";
if (DZE_permanentPlot) then {
_ctrl = (uiNamespace getVariable "PlotManagement") displayCtrl 7012;
_ctrl ctrlSetText _message1;
_ctrl = (uiNamespace getVariable "PlotManagement") displayCtrl 7013;
_ctrl ctrlSetText _message2;
_line1 ctrlSetText _message1;
_line2 ctrlSetText _message2;
} else {
_message1 call dayz_rollingMessages;
};
@@ -147,8 +146,7 @@ switch _option do {
if (_count == 0) then {
_message1 = localize "STR_EPOCH_PLOTMANAGEMENT_MAINTAIN_NONE";
if (DZE_permanentPlot) then {
_ctrl = (uiNamespace getVariable "PlotManagement") displayCtrl 7012;
_ctrl ctrlSetText _message1;
_line1 ctrlSetText _message1;
} else {
_message1 call dayz_rollingMessages;
};
@@ -161,8 +159,7 @@ switch _option do {
_message1 = format [localize "STR_EPOCH_PLOTMANAGEMENT_MAINTAIN_PRICE", _count,_requirements select 1,""];
};
if (DZE_permanentPlot) then {
_ctrl = (uiNamespace getVariable "PlotManagement") displayCtrl 7012;
_ctrl ctrlSetText _message1;
_line1 ctrlSetText _message1;
} else {
_message1 call dayz_rollingMessages;
};
@@ -175,8 +172,7 @@ switch _option do {
};
if (_count != count _objects) then {
if (DZE_permanentPlot) then {
_ctrl = (uiNamespace getVariable "PlotManagement") displayCtrl 7013;
_ctrl ctrlSetText _message2;
_line2 ctrlSetText _message2;
} else {
_message2 call dayz_rollingMessages;
};

View File

@@ -16,5 +16,5 @@ if (_count / DZE_BuildingLimit * 100 > 75) then {
_colour = "#ff0000";
};
_ctrl = ((uiNamespace getVariable "PlotManagement") displayCtrl 7014);
_ctrl = findDisplay 711194 displayCtrl 7014;
_ctrl ctrlSetStructuredText parseText format["<t color='%3'>%1 / %2</t>" , _count, DZE_BuildingLimit,_colour];

View File

@@ -1,43 +0,0 @@
/*
Created exclusively for ArmA2:OA - DayZMod.
Please request permission to use/alter from R4Z0R49.
*/
//"Infected Camps: [[[7020.76,4072.34,0],40],[[10066.8,12114.3,0],20],[[10033.4,12525,0],20],[[9125.71,7742.72,0],40],[[6057.93,2655.66,0],40]]"
//Server_InfectedCamps, [[[_basePos],_amount,_radius]]
//diag_log(str(__FILE__));
private ["_markerstr","_counter","_camp","_campName","_campPos","_campAmount","_campRadius","_trigger","_trgcode","_array"];
_array = _this;
_counter = 0;
{
_counter = _counter + 1;
_camp = _x;
_campName = format["BaseCamp_%1",_counter];
//diag_log ("Camp: " +str(_x));
_campPos = _camp select 0;
//diag_log ("CampPos: " +str(_campPos));
_campAmount = _camp select 1;
//diag_log ("CampAmont: " +str(_campAmount));
_campRadius = _camp select 2;
//diag_log ("CampRadius: " +str(_campRadius));
/*
_trigger = createTrigger["EmptyDetector",_campPos];
_trigger setTriggerArea[_campRadius,_campRadius+100,false];
_trigger setTriggerActivation["ANY","PRESENT",false];
_trgcode = format["[%1,%2] call camp_spawnZombies;",_campPos,_campAmount];
_trigger setTriggerStatements["player in thislist", _trgcode, ""];
//_trigger setTriggerTimeout [0, 5, 3, false];
*/
if ("ItemMap_Debug" in items player) then {
_markerstr = createMarker [_campName,_campPos];
_markerstr setMarkerColor "ColorRed";
_markerstr setMarkerShape "ELLIPSE";
_markerstr setMarkerBrush "Border";
_markerstr setMarkerSizeLocal [_campRadius, _campRadius];
};
} foreach _array;

View File

@@ -8,7 +8,7 @@ dayz_matchboxCount = false; // Enable match stick count. After five uses matches
dayz_toolBreaking = false; //Sledgehammer, crowbar and pickaxe have a chance to break when used.
dayz_waterBottleBreaking = false; // Water bottles have a chance to break when boiling and require duct tape to fix
dayz_tameDogs = false; // Allow taming dogs with raw meat
dayz_townGenerator = false; // Spawn vanilla map junk instead of Epoch DynamicDebris. Currently only compatible with Chernarus. Need to add coordinates for other maps.
dayz_townGenerator = false; // Spawn vanilla map junk instead of Epoch DynamicDebris. Currently only compatible with Chernarus.
dayz_townGeneratorBlackList = []; // Town generator will not spawn junk within 150m of these positions. Example for Chernarus trader cities: [[4053,11668,0],[11463,11349,0],[6344,7806,0],[1606,7803,0],[12944,12766,0],[5075,9733,0],[12060,12638,0]]
DynamicVehicleDamageLow = 0; // Min damage random vehicles can spawn with
@@ -27,7 +27,7 @@ DZE_DeathMsgDynamicText = false; // Display death messages as dynamicText in the
DZE_DeathMsgCutText = false; // Display death messages as cutText
DZE_DeathScreen = true; // True=Use Epoch death screen (Trade city obituaries have been amended) False=Use DayZ death screen (You are dead)
DZE_HaloJump = true; // Enable halo jumping out of air vehicles above 400m
DZE_NameTags = 1; // Name displays when looking at player up close 0 = Off, 1= On, 2 = Player choice
DZE_NameTags = 0; // Name displays when looking at player up close 0 = Off, 1= On, 2 = Player choice
DZE_ForceNameTagsInTrader = false; // Force name display when looking at player up close in traders. Overrides player choice.
DZE_HumanityTargetDistance = 25; // Distance to show name tags (red for bandit, blue for hero, green for friend)
DZE_HeartBeat = false; // Enable heartbeat sound when looking at bandit (<= -3000 humanity) up close
@@ -35,7 +35,7 @@ DZE_HeliLift = true; // Enable Epoch heli lift system
DZE_RestrictSkins = []; // Clothes that players are not allowed to wear. i.e. ["Skin_GUE_Soldier_CO_DZ","Skin_GUE_Soldier_2_DZ"] etc.
DZE_UI = "vanilla"; //"vanilla","epoch","dark" UI status icons style. Dark accommodates color blind people.
DZE_VanillaUICombatIcon = true; //Display or hide combat UI icon if using DZE_UI = "vanilla"; otherwise it has no affect.
MaxAmmoBoxes = 3; // Max number of random Supply_Crate_DZE to spawn around the map
MaxAmmoBoxes = 3; // Max number of random Supply_Crate_DZE filled with vehicle ammo to spawn around the map
MaxMineVeins = 50; // Max number of random mine veins to spawn around the map
timezoneswitch = 0; // Changes murderMenu times with this offset in hours.
DZE_SafeZonePosArray = []; //Prevent players in safeZones from being killed if their vehicle is destroyed. Format is [[[3D POS], RADIUS],[[3D POS], RADIUS]]; Ex. DZE_SafeZonePosArray = [[[6325.6772,7807.7412,0],150],[[4063.4226,11664.19,0],150]];
@@ -51,10 +51,10 @@ DZE_salvageLocked = true; //Enable or disable salvaging of locked vehicles, usef
DZE_ConfigTrader = true; // Use config files for traders instead of database. Loads faster and uses less network traffic. False enables database traders with legacy trader menu.
DZE_serverLogTrades = true; // Log trades to server RPT (sent with publicVariableServer on every trade)
DZE_GemWorthArray = [["ItemTopaz",15000], ["ItemObsidian",20000], ["ItemSapphire",25000], ["ItemAmethyst",30000], ["ItemEmerald",35000], ["ItemCitrine",40000], ["ItemRuby",45000]]; //array of gem prices, works only in advanced trading
DZE_SaleRequiresKey = false; //Require the player has the key for a vehicle in order to sell it. The key can be in the player's toolbelt or backpack, or the vehicle's inventory. False by default
DZE_SaleRequiresKey = false; //Require the player has the key for a vehicle in order to sell it. The key can be in the player's toolbelt, backpack, or the vehicle's inventory.
DZE_TRADER_SPAWNMODE = false; // Vehicles purchased at traders will be parachuted in
Z_AT_FolderLocation = '\z\addons\dayz_code\actions\AdvancedTrading';
Z_VehicleDistance = 40; // Distance that a vehicle needs to be to see it's content or to sell it.
Z_VehicleDistance = 40; // Distance a vehicle needs to be to see its content or sell it.
Z_AllowTakingMoneyFromBackpack = true; // When buying items with DEFAULT CURRENCY to any inventory. Do you allow the trader to take money from your backpack.
Z_AllowTakingMoneyFromVehicle = true; // When buying items with DEFAULT CURRENCY to any inventory. Do you allow the trader to take money from your vehicle.
Z_SingleCurrency = false; // Does your server use a single currency system?
@@ -64,7 +64,7 @@ DZE_MoneyStorageClasses = []; // If using single currency this is an array of ob
// Plot Management and Plot for Life
DZE_permanentPlot = true; // Plot ownership saves after death. Enables Plot for Life by @RimBlock and Plot Management by @DevZupa.
DZE_plotManagementMustBeClose = true; //Players must be within 10m of pole to be added as a plot friend.
DZE_plotManagementMustBeClose = false; //Players must be within 10m of pole to be added as a plot friend.
DZE_PlotManagementAdmins = []; //Array of admin PlayerUIDs enclosed in quotations, UIDs in this list are able to access every pole's management menu and delete or build any buildable with a pole nearby
DZE_MaxPlotFriends = 6; //Maximum number of friends allowed on a plot pole.
DZE_PlotOwnership = true; //allows plot owner to take ownership of buildables (excluding lockable items) near a plot pole. Useful for servers that allow base capturing so the new owner can modify/delete/upgrade existing structures
@@ -82,7 +82,7 @@ DZE_buildMaxHeightDistance = 10; // Max distance player can raise or lower objec
// Door Management
DZE_doorManagement = true; // Enable Door Management by @DevZupa.
DZE_doorManagementMustBeClose = true; //Players must be within 10m of door to be added as a door friend.
DZE_doorManagementMustBeClose = false; //Players must be within 10m of door to be added as a door friend.
DZE_doorManagementAdmins = []; //Array of admin PlayerUIDs enclosed in quotations, UIDs in this list are able to access every door's management menu and open it
DZE_doorManagementAllowManualCode = true; //Allows opening doors still using PIN
DZE_doorManagementMaxFriends = 10; //Maximum number of friends allowed on a door.

View File

@@ -13,5 +13,4 @@ dayz_groupDisbandThread = _group spawn {
{[_x] joinSilent grpNull} count (units _this);
deleteGroup _this;
dayz_myGroup = [];
};

View File

@@ -1,5 +1,5 @@
// Two second loop
private ["_count","_found","_group","_hasGPS","_index","_marker","_markBody","_markGroup","_markSelf","_pos","_self","_uid","_vehicle"];
private ["_count","_found","_group","_hasGPS","_index","_marker","_markBody","_markGroup","_markSelf","_pos","_self","_vehicle"];
_group = player call dayz_filterGroup;
@@ -10,14 +10,6 @@ if (dayz_requireRadio && {count _group > 1} && {!("ItemRadio" in items player)})
localize "STR_EPOCH_RADIO_CONTACT_LOST" call dayz_rollingMessages;
};
{
_uid = getPlayerUID _x;
if (!(_uid in dayz_myGroup) && _x != player) then {
dayz_myGroup set [count dayz_myGroup,_uid];
systemChat format [localize "STR_EPOCH_PLAYER_JOINED",name _x];
};
} count _group;
if (visibleMap or !isNull findDisplay 88890) then {
_hasGPS = "ItemGPS" in items player;
_markBody = (dayz_markBody == 1 or (dayz_markBody == 2 && _hasGPS));

View File

@@ -3,8 +3,14 @@ private ["_add","_inviter","_recipient","_uid","_unit"];
_add = _this select 0;
_uid = _this select 1;
if (typeName _add == "OBJECT") exitWith {
(group player) selectLeader _add;
if (typeName _add == "SCALAR") exitWith {
switch _add do {
case -1: { (group player) selectLeader _uid; }; //Promote
case 1: { systemChat format[localize "STR_EPOCH_PLAYER_JOINED",_uid]; };
case 2: { systemChat format[localize "STR_EPOCH_PLAYER_KICKED",name (_uid call dayz_getPlayer)]; };
case 3: { systemChat format[localize "STR_EPOCH_PLAYER_LEFT",_uid]; };
case 4: { localize "STR_EPOCH_GROUP_DISBANDED" call dayz_rollingMessages; };
};
};
// Update active invites on all machines with the change

View File

@@ -1,19 +1,20 @@
private ["_leader","_oldGroup"];
private ["_leader","_oldGroup","_savedGroup"];
uiSleep 1;
if (count (units group player) > 1) then {
[player] joinSilent grpNull;
};
if (count dayz_myGroup > 1 && {!dayz_requireRadio or {dayz_requireRadio && "ItemRadio" in items player}}) then {
_savedGroup = PVCDZ_plr_Login select 10;
if (count _savedGroup > 1 && {!dayz_requireRadio or {dayz_requireRadio && "ItemRadio" in items player}}) then {
{
//Only auto join player into group if leader is in their savedGroup
_leader = leader _x;
if (getPlayerUID _leader in dayz_myGroup) exitWith {
if (getPlayerUID _leader in _savedGroup) exitWith {
_oldGroup = group player;
[player] joinSilent _x;
if (count (units _oldGroup) == 0) then {deleteGroup _oldGroup;};
systemChat format [localize "STR_EPOCH_REJOINED_GROUP",name _leader];
format[localize "STR_EPOCH_REJOINED_GROUP",name _leader] call dayz_rollingMessages;
// Update saved group in DB
PVDZ_Server_UpdateGroup = [1,player];

View File

@@ -27,12 +27,6 @@ if (!isNull _inviter) then {
_oldGroup = group player;
[player] joinSilent (group _inviter);
if (count (units _oldGroup) == 0) then {deleteGroup _oldGroup;};
{
_uid = getPlayerUID _x;
if !(_uid in dayz_myGroup) then {
dayz_myGroup set [count dayz_myGroup,_uid];
};
} count (units group player);
// Update saved group in DB
PVDZ_Server_UpdateGroup = [1,player];

View File

@@ -8,7 +8,6 @@ _target = _targetUID call dayz_getPlayer;
if (isNull _target or _target == player or player != leader group player) exitWith {};
[_target] joinSilent grpNull;
dayz_myGroup = dayz_myGroup - [_targetUID];
PVDZ_Server_UpdateGroup = [2,player,_targetUID];
publicVariableServer "PVDZ_Server_UpdateGroup";

View File

@@ -11,5 +11,4 @@ dayz_groupLeaveThread = [] spawn {
//Wait for response from server to confirm group finished updating in DB
waitUntil {!isNil "dayz_groupLeft"};
[player] joinSilent grpNull;
dayz_myGroup = [];
};

View File

@@ -1,7 +1,8 @@
private ["_event","_groupUIDs","_newGroup","_player","_playerUID","_save"];
private ["_event","_groupUIDs","_name","_newGroup","_player","_playerUID","_save","_unit"];
_event = _this select 0;
_player = _this select 1;
_name = if (alive _player) then {name _player} else {"unknown"};
_playerUID = getPlayerUID _player;
if (_event < 3) then {
@@ -11,7 +12,7 @@ if (_event < 3) then {
if (_event == -1) exitWith {
//Promote _player
PVDZ_groupInvite = [_player,0];
PVDZ_groupInvite = [-1,_player];
(owner (leader group _player)) publicVariableClient "PVDZ_groupInvite";
};
@@ -28,7 +29,8 @@ _newGroup = switch _event do {
case 1: {_groupUIDs};
//Kick (target was already kicked from group)
case 2: {
format["CHILD:204:%1:%2:%3:",(_this select 2),dayZ_instance,[]] call server_hiveWrite;
_name = _this select 2; //Kicked player's UID
format["CHILD:204:%1:%2:%3:",_name,dayZ_instance,[]] call server_hiveWrite;
_groupUIDs
};
//Leave
@@ -39,14 +41,24 @@ _newGroup = switch _event do {
};
//Disband
case 4: {
_name = 0; //Not needed
dayz_groupDisbanded = true;
(owner _player) publicVariableClient "dayz_groupDisbanded";
[]
};
};
// Update all group members' saved group in DB
//Update all group members' saved group in DB
{
_save = if (_event == 3 && _x == _playerUID) then {[]} else {_newGroup};
format["CHILD:204:%1:%2:%3:",_x,dayZ_instance,_save] call server_hiveWrite;
} count _groupUIDs;
} count _groupUIDs;
//Notify group members of the change
PVDZ_groupInvite = [_event,_name];
{
_unit = getPlayerUID _x;
if (_unit in _groupUIDs && {_unit != _playerUID}) then {
owner _x publicVariableClient "PVDZ_groupInvite";
};
} count allUnits;

View File

@@ -145,8 +145,6 @@ if (!isDedicated) then {
//System
player_spawn_2 = compile preprocessFileLineNumbers "\z\addons\dayz_code\system\player_spawn_2.sqf";
infectedcamps = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\object_infectedcamps.sqf";
//camp_spawnZombies = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\camp_spawnZombies.sqf"; //Server compile, used for loiter behaviour
//Crafting
fn_updateCraftUI = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_updateCraftUI.sqf";

View File

@@ -10,7 +10,6 @@
"PVCDZ_veh_SetFuel" addPublicVariableEventHandler {(_this select 1) spawn local_setFuel};
"PVCDZ_veh_engineSwitch" addPublicVariableEventHandler {(_this select 1) spawn dayz_engineSwitch};
"PVCDZ_OpenTarget_Reset" addPublicVariableEventHandler { OpenTarget_Time = diag_tickTime; }; //reset OpenTarget timer
//"dayzInfectedCamps" addPublicVariableEventHandler {(_this select 1) call infectedcamps};
// EPOCH ADDITIONS
"PVDZE_veh_Lock" addPublicVariableEventHandler {(_this select 1) call local_lockUnlock};

View File

@@ -572,7 +572,6 @@ TimeOutDisplayed = false;
if (isServer) then {
dead_bodyCleanup = [];
needUpdate_objects = [];
Server_InfectedCamps = [];
//dayz_spawnCrashSite_clutterCutter=0; // helicrash spawn... 0: loot hidden in grass, 1: loot lifted, 2: no grass
//dayz_spawnInfectedSite_clutterCutter=0; // infected base spawn... 0: loot hidden in grass, 1: loot lifted, 2: no grass
//Objects to remove when killed.

View File

@@ -16317,6 +16317,12 @@
<English>You invited %1 to join the group.</English>
<German>Du hast %1 eingeladen der Gruppe beizutreten.</German>
</Key>
<Key ID="STR_EPOCH_PLAYER_KICKED">
<English>%1 was kicked from the group.</English>
</Key>
<Key ID="STR_EPOCH_PLAYER_LEFT">
<English>%1 left the group.</English>
</Key>
<Key ID="STR_EPOCH_PLAYER_JOINED">
<English>%1 joined the group.</English>
<German>%1 ist der Gruppe beigetreten.</German>
@@ -16357,6 +16363,9 @@
<Russian>распускать</Russian>
<German>Auflösen</German>
</Key>
<Key ID="STR_EPOCH_GROUP_DISBANDED">
<English>The group disbanded</English>
</Key>
<Key ID="STR_EPOCH_LEAVE">
<English>Leave</English>
<Russian>Оставлять</Russian>

View File

@@ -486,7 +486,6 @@ class FSM
"_isHiveOk = false;" \n
"_newPlayer = false;" \n
"_isInfected = false;" \n
"dayz_myGroup = [];" \n
"_characterCoins = 0;" \n
"_globalCoins = 0;" \n
"_CoinsSpecial = 0;" \n
@@ -495,7 +494,6 @@ class FSM
" _isHiveOk = _msg select 7;" \n
" _newPlayer = _msg select 8;" \n
" _isInfected = _msg select 9;" \n
" dayz_myGroup = _msg select 10;" \n
" _characterCoins = _msg select 11;" \n
" _globalCoins = _msg select 12;" \n
" _CoinsSpecial = _msg select 13;" \n
@@ -1136,11 +1134,6 @@ class FSM
name = "Initialize";
itemno = 31;
init = /*%FSM<STATEINIT""">*/"if (_debug == 1) then {diag_log [diag_tickTime,'Initialize'];};" \n
"" \n
"if (!isNil ""dayzInfectedCamps"") then {" \n
" //diag_log (""Infected Camps: "" +str(dayzInfectedCamps));" \n
" dayzInfectedCamps call infectedcamps;" \n
"};" \n
"" \n
"//Medical" \n
"dayz_medicalH = [] execVM ""\z\addons\dayz_code\medical\init_medical.sqf""; //Medical Monitor Script (client only)" \n