diff --git a/SQF/dayz_code/config.cpp b/SQF/dayz_code/config.cpp index 6f53116e4..6b75bba18 100644 --- a/SQF/dayz_code/config.cpp +++ b/SQF/dayz_code/config.cpp @@ -1983,7 +1983,31 @@ class HeliCrash_No50s: Default { 0.03 }; }; - + class SupplyDrop: Default { + zombieChance = 1; + maxRoaming = 3; + zombieClass[] = {"zZombie_Base","z_hunter","z_hunter","z_hunter","z_villager1","z_villager2","z_villager3","z_doctor","z_soldier_pilot","z_soldier_heavy"}; + lootChance = 1; + lootPos[] = {}; + itemType[] = { + { "PartPlywoodPack","magazine" }, + { "PartPlankPack","magazine" }, + { "CinderBlocks","magazine" }, + { "MortarBucket","magazine" }, + { "bulk_PartGeneric","magazine" }, + { "bulk_ItemSandbag","magazine"}, + { "bulk_ItemTankTrap","magazine"}, + }; + itemChance[] = { + 0.20, + 0.15, + 0.10, + 0.10, + 0.20, + 0.10, + 0.15, + }; + }; class MassGrave: Default { zombieChance = 1; maxRoaming = 3; diff --git a/SQF/dayz_server/modules/supply_drop.sqf b/SQF/dayz_server/modules/supply_drop.sqf new file mode 100644 index 000000000..0518af4fa --- /dev/null +++ b/SQF/dayz_server/modules/supply_drop.sqf @@ -0,0 +1,58 @@ +private ["_guaranteedLoot","_randomizedLoot","_spawnChance","_spawnMarker","_spawnRadius","_crashModel","_lootTable","_spawnRoll","_position","_crash","_config","_num","_itemTypes","_index","_weights","_cntWeights","_nearby","_itemType"]; + +_guaranteedLoot = 4; +_randomizedLoot = 8; +_spawnChance = 0.50; +_spawnMarker = 'center'; +_spawnRadius = (HeliCrashArea/2); + +_spawnRoll = random 1; +if (_spawnRoll <= _spawnChance) then { + + _crashModel = ["Misc_cargo_cont_tiny"] call BIS_fnc_selectRandom; + + _lootTable = "SupplyDrop"; + + //_crashName = getText (configFile >> "CfgVehicles" >> _crashModel >> "displayName"); + + _position = [getMarkerPos _spawnMarker,0,_spawnRadius,10,0,2000,0] call BIS_fnc_findSafePos; + + //diag_log(format["CRASHSPAWNER: Spawning '%1' with loot table '%2' NOW! (%3) at: %4", _crashName, _lootTable, time, str(_position)]); + + _crash = createVehicle [_crashModel,_position, [], 0, "CAN_COLLIDE"]; + + // Randomize the direction the wreck is facing + _crash setDir round(random 360); + + _crash setPos _position; + + // I don't think this is needed (you can't get "in" a crash), but it was in the original DayZ Crash logic + //dayz_serverObjectMonitor set [count dayz_serverObjectMonitor,_crash]; + + //_crash setVariable ["ObjectID","1",true]; + + // Disable simulation server side + _crash enableSimulation false; + + _num = (round(random _randomizedLoot)) + _guaranteedLoot; + + _config = configFile >> "CfgBuildingLoot" >> _lootTable; + _itemTypes = [] + getArray (_config >> "itemType"); + _index = dayz_CBLBase find toLower(_lootTable); + _weights = dayz_CBLChances select _index; + _cntWeights = count _weights; + + for "_x" from 1 to _num do { + //create loot + _index = floor(random _cntWeights); + _index = _weights select _index; + _itemType = _itemTypes select _index; + [_itemType select 0, _itemType select 1, _position, 5] call spawn_loot; + }; + + // ReammoBox is preferred parent class here, as WeaponHolder wouldn't match MedBox0 and other such items. + _nearby = _position nearObjects ["ReammoBox", sizeOf(_crashModel)]; + { + _x setVariable ["permaLoot",true]; + } forEach _nearBy; +}; \ No newline at end of file diff --git a/Server Files/MPMissions/DayZ_Epoch_1.Takistan/init.sqf b/Server Files/MPMissions/DayZ_Epoch_1.Takistan/init.sqf index a274a3349..9131f0d99 100644 --- a/Server Files/MPMissions/DayZ_Epoch_1.Takistan/init.sqf +++ b/Server Files/MPMissions/DayZ_Epoch_1.Takistan/init.sqf @@ -26,7 +26,7 @@ MaxDynamicDebris = 500; // Default = 100 dayz_MapArea = 12000; // Default = 10000 dayz_maxLocalZombies = 40; // Default = 40 -EpochEvents = [["any","any","any","any",30,"crash_spawner"],["any","any","any","any",0,"crash_spawner"]]; +EpochEvents = [["any","any","any","any",30,"crash_spawner"],["any","any","any","any",0,"crash_spawner"],["any","any","any","any",15,"supply_drop"]]; dayz_fullMoonNights = true; //Load in compiled functions diff --git a/Server Files/MPMissions/DayZ_Epoch_10.Mountains_ACR/init.sqf b/Server Files/MPMissions/DayZ_Epoch_10.Mountains_ACR/init.sqf index 90cdaf87e..8d481bd34 100644 --- a/Server Files/MPMissions/DayZ_Epoch_10.Mountains_ACR/init.sqf +++ b/Server Files/MPMissions/DayZ_Epoch_10.Mountains_ACR/init.sqf @@ -26,7 +26,7 @@ MaxDynamicDebris = 100; // Default = 100 dayz_MapArea = 8000; // Default = 10000 dayz_maxLocalZombies = 40; // Default = 40 -EpochEvents = [["any","any","any","any",30,"crash_spawner"],["any","any","any","any",0,"crash_spawner"]]; +EpochEvents = [["any","any","any","any",30,"crash_spawner"],["any","any","any","any",0,"crash_spawner"],["any","any","any","any",15,"supply_drop"]]; dayz_fullMoonNights = true; //Load in compiled functions diff --git a/Server Files/MPMissions/DayZ_Epoch_11.Chernarus/init.sqf b/Server Files/MPMissions/DayZ_Epoch_11.Chernarus/init.sqf index 8a0847d29..d3919e782 100644 --- a/Server Files/MPMissions/DayZ_Epoch_11.Chernarus/init.sqf +++ b/Server Files/MPMissions/DayZ_Epoch_11.Chernarus/init.sqf @@ -26,7 +26,7 @@ MaxDynamicDebris = 500; // Default = 100 dayz_MapArea = 14000; // Default = 10000 dayz_maxLocalZombies = 30; // Default = 30 -EpochEvents = [["any","any","any","any",30,"crash_spawner"],["any","any","any","any",0,"crash_spawner"]]; +EpochEvents = [["any","any","any","any",30,"crash_spawner"],["any","any","any","any",0,"crash_spawner"],["any","any","any","any",15,"supply_drop"]]; dayz_fullMoonNights = true; //Load in compiled functions diff --git a/Server Files/MPMissions/DayZ_Epoch_12.isladuala/init.sqf b/Server Files/MPMissions/DayZ_Epoch_12.isladuala/init.sqf index a9a271bfb..be8acba86 100644 --- a/Server Files/MPMissions/DayZ_Epoch_12.isladuala/init.sqf +++ b/Server Files/MPMissions/DayZ_Epoch_12.isladuala/init.sqf @@ -26,7 +26,7 @@ MaxDynamicDebris = 400; // Default = 100 dayz_MapArea = 9000; // Default = 10000 dayz_maxLocalZombies = 40; // Default = 40 -EpochEvents = [["any","any","any","any",30,"crash_spawner"],["any","any","any","any",0,"crash_spawner"]]; +EpochEvents = [["any","any","any","any",30,"crash_spawner"],["any","any","any","any",0,"crash_spawner"],["any","any","any","any",15,"supply_drop"]]; dayz_fullMoonNights = true; //Load in compiled functions diff --git a/Server Files/MPMissions/DayZ_Epoch_13.Tavi/init.sqf b/Server Files/MPMissions/DayZ_Epoch_13.Tavi/init.sqf index 95fe40165..2c71fa912 100644 --- a/Server Files/MPMissions/DayZ_Epoch_13.Tavi/init.sqf +++ b/Server Files/MPMissions/DayZ_Epoch_13.Tavi/init.sqf @@ -26,7 +26,7 @@ MaxDynamicDebris = 700; // Default = 100 dayz_MapArea = 20000; // Default = 10000 dayz_maxLocalZombies = 40; // Default = 40 -EpochEvents = [["any","any","any","any",30,"crash_spawner"],["any","any","any","any",0,"crash_spawner"]]; +EpochEvents = [["any","any","any","any",30,"crash_spawner"],["any","any","any","any",0,"crash_spawner"],["any","any","any","any",15,"supply_drop"]]; dayz_fullMoonNights = true; // new stuff diff --git a/Server Files/MPMissions/DayZ_Epoch_15.namalsk/init.sqf b/Server Files/MPMissions/DayZ_Epoch_15.namalsk/init.sqf index d9fd911cf..76a284fa6 100644 --- a/Server Files/MPMissions/DayZ_Epoch_15.namalsk/init.sqf +++ b/Server Files/MPMissions/DayZ_Epoch_15.namalsk/init.sqf @@ -25,7 +25,7 @@ MaxVehicleLimit = 300; // Default = 50 MaxDynamicDebris = 500; // Default = 100 dayz_MapArea = 8000; // Default = 10000 -EpochEvents = [["any","any","any","any",30,"crash_spawner"],["any","any","any","any",0,"crash_spawner"]]; +EpochEvents = [["any","any","any","any",30,"crash_spawner"],["any","any","any","any",0,"crash_spawner"],["any","any","any","any",15,"supply_drop"]]; dayz_fullMoonNights = true; // new stuff diff --git a/Server Files/MPMissions/DayZ_Epoch_16.Panthera2/init.sqf b/Server Files/MPMissions/DayZ_Epoch_16.Panthera2/init.sqf index c4adc54c2..e642f55c3 100644 --- a/Server Files/MPMissions/DayZ_Epoch_16.Panthera2/init.sqf +++ b/Server Files/MPMissions/DayZ_Epoch_16.Panthera2/init.sqf @@ -33,7 +33,7 @@ dayz_tameDogs = true; DynamicVehicleDamageLow = 0; // Default: 0 DynamicVehicleDamageHigh = 100; // Default: 100 -EpochEvents = [["any","any","any","any",30,"crash_spawner"],["any","any","any","any",0,"crash_spawner"]]; +EpochEvents = [["any","any","any","any",30,"crash_spawner"],["any","any","any","any",0,"crash_spawner"],["any","any","any","any",15,"supply_drop"]]; dayz_fullMoonNights = true; // DZEdebug = true; diff --git a/Server Files/MPMissions/DayZ_Epoch_17.Chernarus/init.sqf b/Server Files/MPMissions/DayZ_Epoch_17.Chernarus/init.sqf index 8a0847d29..d3919e782 100644 --- a/Server Files/MPMissions/DayZ_Epoch_17.Chernarus/init.sqf +++ b/Server Files/MPMissions/DayZ_Epoch_17.Chernarus/init.sqf @@ -26,7 +26,7 @@ MaxDynamicDebris = 500; // Default = 100 dayz_MapArea = 14000; // Default = 10000 dayz_maxLocalZombies = 30; // Default = 30 -EpochEvents = [["any","any","any","any",30,"crash_spawner"],["any","any","any","any",0,"crash_spawner"]]; +EpochEvents = [["any","any","any","any",30,"crash_spawner"],["any","any","any","any",0,"crash_spawner"],["any","any","any","any",15,"supply_drop"]]; dayz_fullMoonNights = true; //Load in compiled functions diff --git a/Server Files/MPMissions/DayZ_Epoch_18.Sara/init.sqf b/Server Files/MPMissions/DayZ_Epoch_18.Sara/init.sqf index 634c12b6b..80aef75a5 100644 --- a/Server Files/MPMissions/DayZ_Epoch_18.Sara/init.sqf +++ b/Server Files/MPMissions/DayZ_Epoch_18.Sara/init.sqf @@ -26,7 +26,7 @@ MaxDynamicDebris = 350; // Default = 100 dayz_MapArea = 12000; // Default = 10000 dayz_maxLocalZombies = 40; // Default = 40 -EpochEvents = [["any","any","any","any",30,"crash_spawner"],["any","any","any","any",0,"crash_spawner"]]; +EpochEvents = [["any","any","any","any",30,"crash_spawner"],["any","any","any","any",0,"crash_spawner"],["any","any","any","any",15,"supply_drop"]]; dayz_fullMoonNights = true; //Load in compiled functions diff --git a/Server Files/MPMissions/DayZ_Epoch_2.Utes/init.sqf b/Server Files/MPMissions/DayZ_Epoch_2.Utes/init.sqf index d83685bc2..85aa96b0a 100644 --- a/Server Files/MPMissions/DayZ_Epoch_2.Utes/init.sqf +++ b/Server Files/MPMissions/DayZ_Epoch_2.Utes/init.sqf @@ -26,7 +26,7 @@ MaxDynamicDebris = 150; // Default = 100 dayz_MapArea = 4000; // Default = 10000 dayz_maxLocalZombies = 40; // Default = 40 -EpochEvents = [["any","any","any","any",30,"crash_spawner"],["any","any","any","any",0,"crash_spawner"]]; +EpochEvents = [["any","any","any","any",30,"crash_spawner"],["any","any","any","any",0,"crash_spawner"],["any","any","any","any",15,"supply_drop"]]; dayz_fullMoonNights = true; //Load in compiled functions diff --git a/Server Files/MPMissions/DayZ_Epoch_3.Shapur_BAF/init.sqf b/Server Files/MPMissions/DayZ_Epoch_3.Shapur_BAF/init.sqf index 5b22bf3ad..b2048998b 100644 --- a/Server Files/MPMissions/DayZ_Epoch_3.Shapur_BAF/init.sqf +++ b/Server Files/MPMissions/DayZ_Epoch_3.Shapur_BAF/init.sqf @@ -26,7 +26,7 @@ MaxDynamicDebris = 50; // Default = 100 dayz_MapArea = 2000; // Default = 10000 dayz_maxLocalZombies = 40; // Default = 40 -EpochEvents = [["any","any","any","any",30,"crash_spawner"],["any","any","any","any",0,"crash_spawner"]]; +EpochEvents = [["any","any","any","any",30,"crash_spawner"],["any","any","any","any",0,"crash_spawner"],["any","any","any","any",15,"supply_drop"]]; dayz_fullMoonNights = true; //Load in compiled functions diff --git a/Server Files/MPMissions/DayZ_Epoch_4.Zargabad/init.sqf b/Server Files/MPMissions/DayZ_Epoch_4.Zargabad/init.sqf index fff0d077a..42d062a51 100644 --- a/Server Files/MPMissions/DayZ_Epoch_4.Zargabad/init.sqf +++ b/Server Files/MPMissions/DayZ_Epoch_4.Zargabad/init.sqf @@ -26,7 +26,7 @@ MaxDynamicDebris = 300; // Default = 100 dayz_MapArea = 8000; // Default = 10000 dayz_maxLocalZombies = 30; // Default = 40 -EpochEvents = [["any","any","any","any",30,"crash_spawner"],["any","any","any","any",0,"crash_spawner"]]; +EpochEvents = [["any","any","any","any",30,"crash_spawner"],["any","any","any","any",0,"crash_spawner"],["any","any","any","any",15,"supply_drop"]]; dayz_fullMoonNights = true; //Load in compiled functions diff --git a/Server Files/MPMissions/DayZ_Epoch_5.Bootcamp_ACR/init.sqf b/Server Files/MPMissions/DayZ_Epoch_5.Bootcamp_ACR/init.sqf index 1b76699c0..ce9c4b7d0 100644 --- a/Server Files/MPMissions/DayZ_Epoch_5.Bootcamp_ACR/init.sqf +++ b/Server Files/MPMissions/DayZ_Epoch_5.Bootcamp_ACR/init.sqf @@ -26,7 +26,7 @@ MaxDynamicDebris = 50; // Default = 100 dayz_MapArea = 4000; // Default = 10000 dayz_maxLocalZombies = 40; // Default = 40 -EpochEvents = [["any","any","any","any",30,"crash_spawner"],["any","any","any","any",0,"crash_spawner"]]; +EpochEvents = [["any","any","any","any",30,"crash_spawner"],["any","any","any","any",0,"crash_spawner"],["any","any","any","any",15,"supply_drop"]]; dayz_fullMoonNights = true; //Load in compiled functions diff --git a/Server Files/MPMissions/DayZ_Epoch_6.Dingor/init.sqf b/Server Files/MPMissions/DayZ_Epoch_6.Dingor/init.sqf index 0ca4181e3..5bcbaaf07 100644 --- a/Server Files/MPMissions/DayZ_Epoch_6.Dingor/init.sqf +++ b/Server Files/MPMissions/DayZ_Epoch_6.Dingor/init.sqf @@ -26,7 +26,7 @@ MaxDynamicDebris = 500; // Default = 100 dayz_MapArea = 12000; // Default = 10000 dayz_maxLocalZombies = 40; // Default = 40 -EpochEvents = [["any","any","any","any",30,"crash_spawner"],["any","any","any","any",0,"crash_spawner"]]; +EpochEvents = [["any","any","any","any",30,"crash_spawner"],["any","any","any","any",0,"crash_spawner"],["any","any","any","any",15,"supply_drop"]]; dayz_fullMoonNights = true; diff --git a/Server Files/MPMissions/DayZ_Epoch_7.Lingor/init.sqf b/Server Files/MPMissions/DayZ_Epoch_7.Lingor/init.sqf index 881d1ad9c..1338dabc1 100644 --- a/Server Files/MPMissions/DayZ_Epoch_7.Lingor/init.sqf +++ b/Server Files/MPMissions/DayZ_Epoch_7.Lingor/init.sqf @@ -26,7 +26,7 @@ MaxDynamicDebris = 500; // Default = 100 dayz_MapArea = 12000; // Default = 10000 dayz_maxLocalZombies = 40; // Default = 40 -EpochEvents = [["any","any","any","any",30,"crash_spawner"],["any","any","any","any",0,"crash_spawner"]]; +EpochEvents = [["any","any","any","any",30,"crash_spawner"],["any","any","any","any",0,"crash_spawner"],["any","any","any","any",15,"supply_drop"]]; dayz_fullMoonNights = true; diff --git a/Server Files/MPMissions/DayZ_Epoch_8.ProvingGrounds_PMC/init.sqf b/Server Files/MPMissions/DayZ_Epoch_8.ProvingGrounds_PMC/init.sqf index fc005f14b..e4a03aac1 100644 --- a/Server Files/MPMissions/DayZ_Epoch_8.ProvingGrounds_PMC/init.sqf +++ b/Server Files/MPMissions/DayZ_Epoch_8.ProvingGrounds_PMC/init.sqf @@ -26,7 +26,7 @@ MaxDynamicDebris = 100; // Default = 100 dayz_MapArea = 4000; // Default = 10000 dayz_maxLocalZombies = 40; // Default = 40 -EpochEvents = [["any","any","any","any",30,"crash_spawner"],["any","any","any","any",0,"crash_spawner"]]; +EpochEvents = [["any","any","any","any",30,"crash_spawner"],["any","any","any","any",0,"crash_spawner"],["any","any","any","any",15,"supply_drop"]]; dayz_fullMoonNights = true; //Load in compiled functions diff --git a/Server Files/MPMissions/DayZ_Epoch_9.Woodland_ACR/init.sqf b/Server Files/MPMissions/DayZ_Epoch_9.Woodland_ACR/init.sqf index 74af5988c..2cab257e3 100644 --- a/Server Files/MPMissions/DayZ_Epoch_9.Woodland_ACR/init.sqf +++ b/Server Files/MPMissions/DayZ_Epoch_9.Woodland_ACR/init.sqf @@ -26,7 +26,7 @@ MaxDynamicDebris = 100; // Default = 100 dayz_MapArea = 8000; // Default = 10000 dayz_maxLocalZombies = 40; // Default = 40 -EpochEvents = [["any","any","any","any",30,"crash_spawner"],["any","any","any","any",0,"crash_spawner"]]; +EpochEvents = [["any","any","any","any",30,"crash_spawner"],["any","any","any","any",0,"crash_spawner"],["any","any","any","any",15,"supply_drop"]]; dayz_fullMoonNights = true; //Load in compiled functions diff --git a/Server Files/MPMissions/TEMPLATE/init.sqf b/Server Files/MPMissions/TEMPLATE/init.sqf index 2a4d242ad..08f926e9f 100644 --- a/Server Files/MPMissions/TEMPLATE/init.sqf +++ b/Server Files/MPMissions/TEMPLATE/init.sqf @@ -25,7 +25,7 @@ MaxVehicleLimit = 50; // Default = 50 MaxDynamicDebris = 100; // Default = 100 dayz_MapArea = 4000; // Default = 10000 dayz_maxLocalZombies = 40; // Default = 40 -EpochEvents = [["any","any","any","any",30,"crash_spawner"],["any","any","any","any",0,"crash_spawner"]]; +EpochEvents = [["any","any","any","any",30,"crash_spawner"],["any","any","any","any",0,"crash_spawner"],["any","any","any","any",15,"supply_drop"]]; dayz_fullMoonNights = true;