calculateDamageVariation
Definition
-- @/lua/ge/extensions/gameplay/util/damageAssessment.lua:272
local function calculateDamageVariation(tableNumbers, maxValue)
if not tableNumbers or #tableNumbers <= 1 then
return 0
end
maxValue = (maxValue or params.maxDamagePerCell) / 2
-- Calculate mean
local sum = 0
for _, value in ipairs(tableNumbers) do
sum = sum + value
end
local mean = sum / #tableNumbers
-- Calculate variance
local variance = 0
for _, value in ipairs(tableNumbers) do
local adjustedValue = math.max(value, 0)
variance = variance + (adjustedValue - mean) ^ 2
end
variance = variance / #tableNumbers
-- Calculate standard deviation and normalize
local stdDev = math.sqrt(variance)
return math.min(stdDev / maxValue, 1.0)
end
Callers
@/lua/ge/extensions/gameplay/util/damageAssessment.lua
end
textualDamageLocations.damagedLocations[location.name].damageVariation = calculateDamageVariation(cellDamages, textualDamageLocations.damagedLocations[location.name].maxCellDamage)
textualDamageLocations.damagedLocations[location.name].intensity = textualDamageLocations.damagedLocations[location.name].totalDamage / (maxCellDamage * #location.damageRequirements.cells)