GE Lua Documentation

Press F to search!

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)