Go to file
2020-10-05 00:35:55 -07:00
MWSE/mods/celediel/NPCsGoHome ensure moved NPC data is unique 2020-10-05 00:35:55 -07:00
.gitignore I probably won't commit anything in that file 2020-08-23 18:47:17 -07:00
LICENSE added license, MIT 2020-10-04 10:58:28 -07:00
readme.md parity with default config 2020-10-04 01:42:53 -07:00

NPCs Go Home

A no-longer-lightweight fork of OEA's Lightweight Lua Scheduling version 1.1 (I implemented most of the changes from 1.2 though)

Things I've Added, Changed or Fixed

The "Big" Stuff

  • NPC "homes"
    • Outside NPCs who have homes (local cell that contains their name, i.e.: NPC Fargoth and cell "Seyda Neen, Fargoth's House") are currently paired with the inside cell of their home
    • Other NPCs are configurably paired with local public houses (Inns, temples, and guildhalls of their faction)
  • Option to move NPCs into their home rather than disable them
    • Working on a better variety of positions in cells
  • Moved NPCs persist on save/load

Other Stuff

  • Timer for updating everything, configurable interval
  • Disabled NPCs are reenabled even if the option to disable NPCs is off
  • Silt Striders and pack guars are disabled as well
  • Inclement weather toggle removed, in favour of dropdown with "None" option
  • Travel agents, their silt striders, and configured races/classes optionally stay in inclement weather
  • When locking doors, cells that contain NPCs of any class on the ignore list are left alone
    • Cells that are >= 67% (configurable) one faction will be public, if that faction is on the ignore list
    • Cells of player joined factions are also public
    • Additionally, NPCs in those cells can still be interacted with
  • Cells with no NPCs are not locked
  • Ignore list now supports NPC class and faction. Any interior cell with an NPC of ignored class or faction will not be locked, or have its NPCS disabled.

Debug / Devel Stuff

  • data/positions.lua contains positions used for NPC placement in homes and public houses
  • it's tedious work, so I haven't done many, so I've added debug some debug keybinds to help:
    • ctrl + c prints to mwse.log position data sorta properly formatted for positions.lua
    • alt + c prints to mwse.log all the current runtime data, found in common.runtimeData
      • includes: public houses and homes found for NPCs: cells that NPCs will be moved to, needing position data

WIP

  • Currently NPCs without a home are moved into local cells with matching faction, or a random public cell
  • NPCs are classed based on the worth of their equipped items, and inventory
    • NPC worth is a table of: equipped items worth, inventory items worth, barter gold and if a merchant with a cell, the worth of items in containers in that cell that the NPC sells is added, and the total of all calculated values
  • Public houses are classed based on the worth of NPCs in the cell

TODO

  • Move non-faction NPCs who don't have homes to temples or inns based on their "worth"
  • Pick temple for the poorest NPCs, or classed inns based on NPC/inn "worth"

Known issues

  • If NPCs in a town are moved, and the player moves far away from that town before they're moved back, then saves and reloads, those NPCs will probably stay moved. should be fixed
  • It's probably one big bowl of spaghetti