From 293babb69add1a6ef64368671745c5e6d4a05a5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lilian=20J=C3=B3nsd=C3=B3ttir?= Date: Sat, 15 Aug 2020 17:15:42 -0700 Subject: [PATCH] hackish workaround for not having npc.mobile (not using it atm) --- MWSE/mods/celediel/NPCsGoHome/main.lua | 46 +++++++++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/MWSE/mods/celediel/NPCsGoHome/main.lua b/MWSE/mods/celediel/NPCsGoHome/main.lua index f300d93..f051d2d 100644 --- a/MWSE/mods/celediel/NPCsGoHome/main.lua +++ b/MWSE/mods/celediel/NPCsGoHome/main.lua @@ -53,16 +53,60 @@ local function checkModdedCell(cellId) return id end +-- patented by Merlord +local yeet = function(reference) + -- tes3.positionCell({reference = reference, position = {0, 0, 10000}}) + reference:disable() + timer.delayOneFrame(function() mwscript.setDelete({reference = reference}) end) +end + +-- very todd workaround +local function getFightFromSpawnedReference(id) + -- Spawn a reference of the given id in toddtest + local toddTest = tes3.getCell("toddtest") + + log(common.logLevels.medium, "Spawning %s in %s", id, toddTest.id) + + local ref = tes3.createReference({ + object = id, + -- cell = toddTest, + cell = tes3.getPlayerCell(), + -- position = zeroVector, + position = {0, 0, 10000}, + orientation = zeroVector + }) + + local fight = ref.mobile.fight + + log(common.logLevels.medium, "Got fight of %s, time to yeet %s", fight, id) + + yeet(ref) + + return fight +end + -- {{{ npc evaluators -- NPCs barter gold + value of all inventory items -local function calculateNPCWorth(npc) +local function calculateNPCWorth(npc, merchantCell) local worth = npc.object.barterGold if npc.object.inventory then for _, item in pairs(npc.object.inventory) do worth = worth + (item.object.value or 0) end end + if merchantCell then -- if we pass a cell argument + for box in merchantCell:iterateReferences(tes3.objectType.container) do -- loop over each container + if box.inventory then -- if it's not empty + for item in tes3.iterate(box.inventory) do -- loop over its items + if npc.object.baseObject:tradesItemType(item.objectType) then -- if the NPC sells that type + worth = worth + item.object.value -- add its value to the NPCs total value + end + end + end + end + end + return worth end