diff --git a/src/evac.lua b/src/evac.lua index dac99a9..984d1ec 100644 --- a/src/evac.lua +++ b/src/evac.lua @@ -1645,8 +1645,7 @@ Evac._internal.utils = { local _angle = math.atan2(_point.z, _point.x) for _i, _unit in pairs(_units) do - local _xOffset = math.cos(_angle) * math.random(_scatterRadius) - local _yOffset = math.sin(_angle) * math.random(_scatterRadius) + local _xOffset, _yOffset = Gremlin.utils.spawnPoints(_angle, _scatterRadius) _unitsOut[_i] = { type = typeTranslation[_side][_unit.type], diff --git a/src/gremlin.lua b/src/gremlin.lua index 27a9afa..57528e8 100644 --- a/src/gremlin.lua +++ b/src/gremlin.lua @@ -521,7 +521,24 @@ Gremlin = { end return tbl1 - end + end, + spawnPoints = function(_angle, _scatterRadius, _counter) + local _xOffset, _yOffset + + if _counter < 1 then + _counter = 0 + end + + if type(_scatterRadius) == 'table' then + _xOffset = math.cos(_angle) * math.random(_scatterRadius.min, _scatterRadius.max) * _counter + _yOffset = math.sin(_angle) * math.random(_scatterRadius.min, _scatterRadius.max) * _counter + else + _xOffset = math.cos(_angle) * math.random(_scatterRadius) * _counter + _yOffset = math.sin(_angle) * math.random(_scatterRadius) * _counter + end + + return _xOffset, _yOffset + end, }, -- Internal State diff --git a/src/waves.lua b/src/waves.lua index 3f1e3be..936f1fb 100644 --- a/src/waves.lua +++ b/src/waves.lua @@ -71,8 +71,7 @@ Waves._internal.spawnWave = function(_name, _wave) local _units = {} for _unitType, _unitCount in pairs(_groupData.units) do for i = 1, _unitCount do - local _xOffset = math.cos(_angle) * math.random(_groupData.scatter.min, _groupData.scatter.max) * #_units - local _yOffset = math.sin(_angle) * math.random(_groupData.scatter.min, _groupData.scatter.max) * #_units + local _xOffset, _yOffset = Gremlin.utils.spawnPoints(_angle, _groupData.scatter, #_units) table.insert(_units, { type = _unitType,