some loggin + support for Local Lore - SS&C
(Silt Strider and Caravanner Dialogue)
This commit is contained in:
parent
c77806d846
commit
551bcfeba7
|
@ -165,6 +165,13 @@ this.isNPCPet = function(creature) -- > isPet, isLinkedToTravelNPC
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
this.isSiltStrider = function(activator)
|
||||||
|
local id = activator.object.id:lower()
|
||||||
|
log(common.logLevels.large, "[PROC] Is %s a silt strider??", id)
|
||||||
|
return id:match("siltstrider") or
|
||||||
|
id:match("kil_silt")
|
||||||
|
end
|
||||||
|
|
||||||
-- checks NPC class and faction in cells for block list and adds to publicHouse list
|
-- checks NPC class and faction in cells for block list and adds to publicHouse list
|
||||||
-- todo: rewrite this
|
-- todo: rewrite this
|
||||||
this.isPublicHouse = function(cell)
|
this.isPublicHouse = function(cell)
|
||||||
|
|
|
@ -11,6 +11,10 @@ local function log(level, ...) if config.logLevel >= level then common.log(...)
|
||||||
local this = {}
|
local this = {}
|
||||||
|
|
||||||
local function moveNPC(homeData)
|
local function moveNPC(homeData)
|
||||||
|
-- do some logging
|
||||||
|
log(common.logLevels.medium, "[PROC] Moving %s to home %s (%s, %s, %s)", homeData.npc.object.name, homeData.home.id,
|
||||||
|
homeData.homePosition.x, homeData.homePosition.y, homeData.homePosition.z)
|
||||||
|
|
||||||
local npc = homeData.npc
|
local npc = homeData.npc
|
||||||
|
|
||||||
-- add to in memory table
|
-- add to in memory table
|
||||||
|
@ -31,19 +35,18 @@ local function moveNPC(homeData)
|
||||||
cell = homeData.ogPlaceName
|
cell = homeData.ogPlaceName
|
||||||
}
|
}
|
||||||
|
|
||||||
|
-- do the move
|
||||||
tes3.positionCell({
|
tes3.positionCell({
|
||||||
cell = homeData.home,
|
cell = homeData.home,
|
||||||
reference = homeData.npc,
|
reference = homeData.npc,
|
||||||
position = homeData.homePosition,
|
position = homeData.homePosition,
|
||||||
orientation = homeData.homeOrientation
|
orientation = homeData.homeOrientation
|
||||||
})
|
})
|
||||||
|
|
||||||
log(common.logLevels.medium, "[PROC] Moving %s to home %s (%s, %s, %s)", homeData.npc.object.name, homeData.home.id,
|
|
||||||
homeData.homePosition.x, homeData.homePosition.y, homeData.homePosition.z)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
local function disableNPC(npc, cell)
|
local function disableNPC(npc, cell)
|
||||||
-- same thing as moveNPC, but disables instead
|
-- do some logging
|
||||||
|
log(common.logLevels.medium, "[PROC] Disabling un-homed %s", npc.name and npc.name or npc.id)
|
||||||
-- add to runtimeData
|
-- add to runtimeData
|
||||||
if checks.isBadWeatherNPC(npc) then
|
if checks.isBadWeatherNPC(npc) then
|
||||||
common.runtimeData.NPCs.disabledBadWeather[cell.id] = common.runtimeData.NPCs.disabledBadWeather[cell.id] or {}
|
common.runtimeData.NPCs.disabledBadWeather[cell.id] = common.runtimeData.NPCs.disabledBadWeather[cell.id] or {}
|
||||||
|
@ -58,11 +61,10 @@ local function disableNPC(npc, cell)
|
||||||
-- npc:disable() -- ! this one sometimes causes crashes
|
-- npc:disable() -- ! this one sometimes causes crashes
|
||||||
mwscript.disable({reference = npc}) -- ! this one is deprecated
|
mwscript.disable({reference = npc}) -- ! this one is deprecated
|
||||||
-- tes3.setEnabled({reference = npc, enabled = false}) -- ! but this one causes crashes too
|
-- tes3.setEnabled({reference = npc, enabled = false}) -- ! but this one causes crashes too
|
||||||
-- do some logging
|
|
||||||
log(common.logLevels.medium, "[PROC] Disabling un-homed %s", npc.name and npc.name or npc.id)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
local function putNPCsBack(npcData)
|
local function putNPCsBack(npcData)
|
||||||
|
log(common.logLevels.large, "[PROC] Moving back NPCs:\n%s", json.encode(npcData))
|
||||||
-- for i = #npcData, 1, -1 do
|
-- for i = #npcData, 1, -1 do
|
||||||
for id, data in pairs(npcData) do
|
for id, data in pairs(npcData) do
|
||||||
if data.npc.object then
|
if data.npc.object then
|
||||||
|
@ -90,9 +92,10 @@ local function putNPCsBack(npcData)
|
||||||
end
|
end
|
||||||
|
|
||||||
local function reEnableNPCs(npcs)
|
local function reEnableNPCs(npcs)
|
||||||
|
log(common.logLevels.large, "[PROC] Re-enabling NPCs:\n%s", json.encode(npcs))
|
||||||
for id, ref in pairs(npcs) do
|
for id, ref in pairs(npcs) do
|
||||||
|
log(common.logLevels.medium, "[PROC] Making attempt at re-enabling %s", id)
|
||||||
if ref.object and ref.disabled then
|
if ref.object and ref.disabled then
|
||||||
log(common.logLevels.medium, "[PROC] Enabling homeless %s", id)
|
|
||||||
|
|
||||||
-- ref:enable()
|
-- ref:enable()
|
||||||
mwscript.enable({reference = ref})
|
mwscript.enable({reference = ref})
|
||||||
|
@ -245,8 +248,7 @@ this.processSiltStriders = function(cell)
|
||||||
|
|
||||||
log(common.logLevels.small, "[PROC] Looking for silt striders to process in cell:%s", cell.id)
|
log(common.logLevels.small, "[PROC] Looking for silt striders to process in cell:%s", cell.id)
|
||||||
for activator in cell:iterateReferences(tes3.objectType.activator) do
|
for activator in cell:iterateReferences(tes3.objectType.activator) do
|
||||||
log(common.logLevels.large, "[PROC] Is %s a silt strider??", activator.object.id)
|
if checks.isSiltStrider(activator) then
|
||||||
if activator.object.id:match("siltstrider") then
|
|
||||||
if checks.isNight() or (checks.isInclementWeather() and not config.keepBadWeatherNPCs) then
|
if checks.isNight() or (checks.isInclementWeather() and not config.keepBadWeatherNPCs) then
|
||||||
if not activator.disabled then
|
if not activator.disabled then
|
||||||
log(common.logLevels.medium, "[PROC] Disabling silt strider %s!", activator.object.name)
|
log(common.logLevels.medium, "[PROC] Disabling silt strider %s!", activator.object.name)
|
||||||
|
|
Loading…
Reference in a new issue