canton plazas are treated the same as waistworks
too using open Vivec mods, I forgot they existed as separate cells lmao
This commit is contained in:
parent
d643eae274
commit
e8964622c4
|
@ -12,7 +12,7 @@ this.logString = this.modName:gsub("%s?%b()%s?", "")
|
|||
|
||||
-- for config
|
||||
this.logLevels = {none = 0, small = 1, medium = 2, large = 3}
|
||||
this.waist = {neither = 0, exterior = 1, public = 2}
|
||||
this.canton = {neither = 0, exterior = 1, public = 2}
|
||||
|
||||
-- for runtime data
|
||||
this.publicHouseTypes = {
|
||||
|
@ -20,7 +20,7 @@ this.publicHouseTypes = {
|
|||
guildhalls = "Guildhalls",
|
||||
temples = "Temples",
|
||||
homes = "Homes",
|
||||
cantonworks = "Cantonworks"
|
||||
cantons = "Cantons"
|
||||
}
|
||||
-- }}}
|
||||
|
||||
|
@ -97,7 +97,7 @@ this.pickPublicHouseType = function(cell)
|
|||
elseif id:match("temple") then
|
||||
return this.publicHouseTypes.temples
|
||||
elseif id:match("canalworks") or cell.id:match("waistworks") then
|
||||
return this.publicHouseTypes.cantonworks
|
||||
return this.publicHouseTypes.cantons
|
||||
elseif (id:match("house") and not id:match("trade")) or id:match("manor") or id:match("tower") then
|
||||
return this.publicHouseTypes.homes
|
||||
else
|
||||
|
@ -121,9 +121,24 @@ this.checkModdedCell = function(cellId)
|
|||
return id
|
||||
end
|
||||
|
||||
-- waistworks and plaza
|
||||
this.isPublicCantonCell = function(cell)
|
||||
-- (cell.id:lower():match("waistworks") or cell.id:lower():match(""))
|
||||
local id = cell.id:lower()
|
||||
|
||||
-- hardcoded for now to avoid too many false positives
|
||||
return id:match("waistworks") or
|
||||
id:match("vivec, .* plaza") or -- vvardenfell
|
||||
id:match("almas thirr, plaza") or -- mainland
|
||||
id:match("molag mar, plaza") -- no-frills closed molag mar
|
||||
end
|
||||
|
||||
-- any interior canton cell
|
||||
this.isCantonWorksCell = function(cell)
|
||||
local id = cell.id:lower()
|
||||
return id:match("waistworks") or id:match("canalworks") or id:match("underworks")
|
||||
return this.isPublicCantonCell(cell) or
|
||||
id:match("canalworks") or
|
||||
id:match("underworks")
|
||||
end
|
||||
|
||||
this.isCantonCell = function(cell)
|
||||
|
|
|
@ -34,7 +34,7 @@ local defaultConfig = {
|
|||
minimumTrespassDisposition = 50, -- if player's disposition with NPC is less than this value, interaction is disabled
|
||||
-- door settings
|
||||
lockDoors = true,
|
||||
waistWorks = common.waist.interior,
|
||||
cantonCells = common.canton.interior,
|
||||
-- debug settings
|
||||
logLevel = common.logLevels.none
|
||||
}
|
||||
|
|
|
@ -80,7 +80,6 @@ this.isIgnoredCell = function(cell)
|
|||
return config.ignored[cell.id:lower()] -- or config.ignored[cell.sourceMod:lower()] -- or wilderness
|
||||
end
|
||||
|
||||
-- ! this one depends on tes3 ! --
|
||||
this.fargothCheck = function()
|
||||
local fargothJournal = tes3.getJournalIndex({id = "MS_Lookout"})
|
||||
if not fargothJournal then return false end
|
||||
|
@ -195,12 +194,12 @@ this.isPublicHouse = function(cell)
|
|||
return true
|
||||
end
|
||||
|
||||
-- if it's a waistworks cell, it's public, with no proprietor
|
||||
if config.waistWorks == common.waist.public and cell.id:match("waistworks") then
|
||||
-- if it's a waistworks or plaza cell, it's public, with no proprietor
|
||||
if config.cantonCells == common.canton.public and common.isPublicCantonCell(cell) then
|
||||
dataTables.createPublicHouseTableEntry(cell, nil, city, publicHouseName,
|
||||
cellEvaluators.calculateCellWorth(cell),
|
||||
cellEvaluators.pickCellFaction(cell),
|
||||
common.publicHouseTypes.cantonworks)
|
||||
common.publicHouseTypes.cantons)
|
||||
return true
|
||||
end
|
||||
|
||||
|
@ -344,11 +343,12 @@ end
|
|||
|
||||
-- travel agents, their steeds, and argonians stick around
|
||||
this.isBadWeatherNPC = function(npc)
|
||||
log(common.logLevels.large, "[CHECKS] NPC Inclement Weather: %s is %s%s", npc.object.name, npc.object.race.id,
|
||||
this.offersTravel(npc) and ", travel agent" or "")
|
||||
local is = this.offersTravel(npc) or config.badWeatherClassRace[npc.object.race.id] or
|
||||
config.badWeatherClassRace[npc.object.class.id]
|
||||
log(common.logLevels.large, "[CHECKS] %s, %s%s is inclement weather NPC? %s", npc.object.name, npc.object.race.id,
|
||||
this.offersTravel(npc) and ", travel agent" or "", is)
|
||||
|
||||
return this.offersTravel(npc) or config.badWeatherClassRace[npc.object.race.id] or
|
||||
config.badWeatherClassRace[npc.object.class.id]
|
||||
return is
|
||||
end
|
||||
|
||||
return this
|
||||
|
|
|
@ -102,8 +102,8 @@ this.pickHomeForNPC = function(cell, npc)
|
|||
-- if nothing was found, then we'll settle on Canton works cell, if the cell is a Canton
|
||||
if common.isCantonCell(cell) then
|
||||
if common.runtimeData.publicHouses.byType[city] and
|
||||
common.runtimeData.publicHouses.byType[city][common.publicHouseTypes.cantonworks] then
|
||||
local canton = table.choice(common.runtimeData.publicHouses.byType[city][common.publicHouseTypes.cantonworks])
|
||||
common.runtimeData.publicHouses.byType[city][common.publicHouseTypes.cantons] then
|
||||
local canton = table.choice(common.runtimeData.publicHouses.byType[city][common.publicHouseTypes.cantons])
|
||||
log(common.logLevels.medium, "[HOUSING] Picking works %s, %s for %s", canton.city, canton.name, npc.object.name)
|
||||
|
||||
if canton then return dataTables.createHomedNPCTableEntry(npc, canton.cell, cell, false) end
|
||||
|
|
|
@ -74,7 +74,7 @@ local function applyChanges(cell)
|
|||
|
||||
-- Interior cell, except Canton cells, don't do anything
|
||||
if checks.isInteriorCell(cell) and
|
||||
not (config.waistWorks == common.waist.exterior and common.isCantonWorksCell(cell)) then return end
|
||||
not (config.cantonCells == common.canton.exterior and common.isCantonWorksCell(cell)) then return end
|
||||
|
||||
-- don't do anything to public houses
|
||||
if checks.isPublicHouse(cell) then return end
|
||||
|
|
|
@ -76,17 +76,17 @@ category:createSlider({
|
|||
})
|
||||
|
||||
category:createDropdown({
|
||||
label = "Treat Canton waistworks as exteriors, public spaces, or neither",
|
||||
label = "Treat canton plaza and waistworks cells as exteriors, public spaces, or neither",
|
||||
description = "If canton cells are treated as exterior, inside NPCs will be disabled, and doors will be locked.\n" ..
|
||||
"If they're treated as public spaces, inside NPCs won't be disabled, and homeless NPCs will be moved inside " ..
|
||||
"(if configured to do so).\n\nIf neither, canton cells will be treated as any other.",
|
||||
options = {
|
||||
{label = "Neither", value = common.waist.neither},
|
||||
{label = "Exterior", value = common.waist.exterior},
|
||||
{label = "Public", value = common.waist.public}
|
||||
{label = "Neither", value = common.canton.neither},
|
||||
{label = "Exterior", value = common.canton.exterior},
|
||||
{label = "Public", value = common.canton.public}
|
||||
},
|
||||
defaultSetting = common.waist.neither,
|
||||
variable = createTableVar("waistWorks")
|
||||
defaultSetting = common.canton.neither,
|
||||
variable = createTableVar("cantonCells")
|
||||
})
|
||||
|
||||
category:createYesNoButton({
|
||||
|
|
Loading…
Reference in a new issue