I've created spaghetti so this is what I've resorted to
This commit is contained in:
parent
8708e5e52e
commit
d8c1aaf0f6
|
@ -6,15 +6,31 @@ local this = {}
|
||||||
|
|
||||||
local function log(level, ...) if config.logLevel >= level then common.log(...) end end
|
local function log(level, ...) if config.logLevel >= level then common.log(...) end end
|
||||||
|
|
||||||
|
-- cellEvaluators can't require checks because checks already requires cellEvaluators
|
||||||
|
-- this means I have too much spaghetti
|
||||||
|
local function isIgnoredNPCLite(npc)
|
||||||
|
local obj = npc.baseObject and npc.baseObject or npc.object
|
||||||
|
|
||||||
|
local isGuard = obj.isGuard or (obj.name and (obj.name:lower():match("guard") and true or false) or false) -- maybe this should just be an if else
|
||||||
|
local isVampire = obj.head and (obj.head.vampiric and true or false) or false
|
||||||
|
|
||||||
|
return config.ignored[obj.id:lower()] or
|
||||||
|
config.ignored[obj.sourceMod:lower()] or
|
||||||
|
isGuard or
|
||||||
|
isVampire
|
||||||
|
end
|
||||||
|
|
||||||
-- cell worth is combined worth of all NPCs
|
-- cell worth is combined worth of all NPCs
|
||||||
this.calculateCellWorth = function(cell, proprietor)
|
this.calculateCellWorth = function(cell, proprietor)
|
||||||
local worth = 0
|
local worth = 0
|
||||||
|
|
||||||
local msg = "breakdown:\n"
|
local msg = "breakdown:\n"
|
||||||
for innard in cell:iterateReferences(tes3.objectType.npc) do
|
for innard in cell:iterateReferences(tes3.objectType.npc) do
|
||||||
local total = npcEvaluators.calculateNPCWorth(innard, innard == proprietor and cell or nil).total
|
if not isIgnoredNPCLite(innard) then
|
||||||
worth = worth + total
|
local total = npcEvaluators.calculateNPCWorth(innard, innard == proprietor and cell or nil).total
|
||||||
msg = msg .. string.format("%s worth:%s, ", innard.object.name, total)
|
worth = worth + total
|
||||||
|
msg = msg .. string.format("%s worth:%s, ", innard.object.name, total)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
log(common.logLevels.medium, "[CELLEVAL] Calculated worth of %s for cell %s", worth, cell.id)
|
log(common.logLevels.medium, "[CELLEVAL] Calculated worth of %s for cell %s", worth, cell.id)
|
||||||
|
@ -29,18 +45,20 @@ this.pickCellFaction = function(cell)
|
||||||
|
|
||||||
-- count all the npcs with factions
|
-- count all the npcs with factions
|
||||||
for npc in cell:iterateReferences(tes3.objectType.npc) do
|
for npc in cell:iterateReferences(tes3.objectType.npc) do
|
||||||
local faction = npc.object.faction
|
if not isIgnoredNPCLite(npc) then
|
||||||
|
local faction = npc.object.faction
|
||||||
|
|
||||||
if faction then
|
if faction then
|
||||||
if not npcs.allFactions[faction.id] then npcs.allFactions[faction.id] = {total = 0, percentage = 0} end
|
if not npcs.allFactions[faction.id] then npcs.allFactions[faction.id] = {total = 0, percentage = 0} end
|
||||||
|
|
||||||
if not npcs.allFactions[faction.id].master or npcs.allFactions[faction.id].master.object.factionIndex <
|
if not npcs.allFactions[faction.id].master or npcs.allFactions[faction.id].master.object.factionIndex <
|
||||||
npc.object.factionIndex then npcs.allFactions[faction.id].master = npc end
|
npc.object.factionIndex then npcs.allFactions[faction.id].master = npc end
|
||||||
|
|
||||||
npcs.allFactions[faction.id].total = npcs.allFactions[faction.id].total + 1
|
npcs.allFactions[faction.id].total = npcs.allFactions[faction.id].total + 1
|
||||||
|
end
|
||||||
|
|
||||||
|
npcs.total = npcs.total + 1
|
||||||
end
|
end
|
||||||
|
|
||||||
npcs.total = npcs.total + 1
|
|
||||||
end
|
end
|
||||||
|
|
||||||
-- pick out all the factions that make up a percentage of the cell greater than the configured value
|
-- pick out all the factions that make up a percentage of the cell greater than the configured value
|
||||||
|
|
Loading…
Reference in a new issue