mirror of
https://github.com/EpochModTeam/DayZ-Epoch.git
synced 2025-12-15 21:29:59 +03:00
Rename SQF/dayz_server/compile/server_spawnInfectedCamps.sqf to Server Files/Archive/dayz_server/compile/server_spawnInfectedCamps.sqf
Archive Vanilla event file.
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
/*
|
||||
Spawns infected camps
|
||||
|
||||
Author:
|
||||
Foxy
|
||||
*/
|
||||
|
||||
#include "\z\addons\dayz_code\util\Math.hpp"
|
||||
#include "\z\addons\dayz_code\loot\Loot.hpp"
|
||||
|
||||
//Number of infected camps to spawn
|
||||
#define CAMP_NUM 3
|
||||
|
||||
//Minimum distance between camps
|
||||
#define CAMP_MIN_DIST 300
|
||||
|
||||
//Base class of objects to add loot to
|
||||
#define CAMP_CONTAINER_BASE "IC_Tent"
|
||||
|
||||
//Loot per tent
|
||||
#define LOOT_MIN 10
|
||||
#define LOOT_MAX 20
|
||||
|
||||
//Random objects per camp
|
||||
#define OBJECT_MIN 4
|
||||
#define OBJECT_MAX 12
|
||||
|
||||
//Radius around the camp in which random objects are spawned
|
||||
#define OBJECT_RADIUS_MIN 8
|
||||
#define OBJECT_RADIUS_MAX 13
|
||||
|
||||
#define SEARCH_CENTER getMarkerPos "center"
|
||||
#define SEARCH_RADIUS (getMarkerSize "center") select 0
|
||||
#define SEARCH_EXPRESSION "(5 * forest) + (4 * trees) + (3 * meadow) - (20 * houses) - (30 * sea)" //+ (3 * meadow) - (20 * houses) - (30 * sea)
|
||||
#define SEARCH_PRECISION 30
|
||||
#define SEARCH_ATTEMPTS 10
|
||||
|
||||
private
|
||||
[
|
||||
"_typeGroup",
|
||||
"_lootGroup",
|
||||
"_objectGroup",
|
||||
"_type",
|
||||
"_position",
|
||||
"_composition",
|
||||
"_compositionObjects",
|
||||
"_objectPos"
|
||||
];
|
||||
|
||||
_typeGroup = Loot_GetGroup("InfectedCampType");
|
||||
_lootGroup = Loot_GetGroup("InfectedCamp");
|
||||
_objectGroup = Loot_GetGroup("InfectedCampObject");
|
||||
|
||||
for "_i" from 1 to (CAMP_NUM) do
|
||||
{
|
||||
//Select type of camp
|
||||
_type = Loot_SelectSingle(_typeGroup);
|
||||
_composition = _type select 1;
|
||||
|
||||
//Find a position
|
||||
|
||||
for "_j" from 1 to (SEARCH_ATTEMPTS) do
|
||||
{
|
||||
_position = ((selectBestPlaces [SEARCH_CENTER, SEARCH_RADIUS, SEARCH_EXPRESSION, SEARCH_PRECISION, 1]) select 0) select 0;
|
||||
_position set [2, 0];
|
||||
|
||||
//Check if a camp already exists within the minimum distance
|
||||
if (count (_position nearObjects [CAMP_CONTAINER_BASE,CAMP_MIN_DIST]) < 1) exitWith {};
|
||||
};
|
||||
|
||||
diag_log format ["DEBUG: Spawning an infected camp (%1) at %2", _composition, _position];
|
||||
|
||||
//Spawn composition
|
||||
_compositionObjects = [_position, random 360,_composition] call spawnComposition;
|
||||
|
||||
//Add loot to containers
|
||||
{
|
||||
if (_x isKindOf (CAMP_CONTAINER_BASE)) then
|
||||
{
|
||||
Loot_InsertCargo(_x, _lootGroup, round Math_RandomRange(LOOT_MIN, LOOT_MAX));
|
||||
};
|
||||
} forEach _compositionObjects;
|
||||
|
||||
//Spawn objects around the camp
|
||||
{
|
||||
_objectPos = [_position, OBJECT_RADIUS_MIN, OBJECT_RADIUS_MAX, 5] call fn_selectRandomLocation;
|
||||
|
||||
Loot_Spawn(_x, _objectPos);
|
||||
|
||||
} forEach Loot_Select(_objectGroup, round Math_RandomRange(OBJECT_MIN, OBJECT_MAX));
|
||||
};
|
||||
Reference in New Issue
Block a user