Skip to content

Releases: DooDesch-Mods/ScheduleOne-Personnel

v2.2.0

Choose a tag to compare

@github-actions github-actions released this 13 Aug 16:15
cf7fa11

Changes in 2.2.0

Fixed

  • An NPC whose pack sets only a skin colour gets matching eyelids. They fell back to the default tan, which
    read as pale lids on any dark skin.
  • Face layers are placed the way the game reads them: the mouth first, the facial hair second. A pack that
    listed them in another order had a detail layer drawn in the hair colour.
  • Face layers past the fifth are dropped and named in the log. They used to overwrite the facial hair instead.
  • Body layers past the eighth are dropped on the S1API prefab path too. Only the runtime path had that
    ceiling, so a prefab NPC lost a garment with nothing said.

What's Changed

  • ci: let GitHub generate the release notes under ours by @DooDesch in #1
  • ci: post a real embed to the Discord feed on release by @DooDesch in #2
  • ci: link Nexus in the Discord release embed by @DooDesch in #3
  • fix(build): stop defaulting the deploy to the real game installation by @DooDesch in #4
  • ci: take the release version from the tag, not from the csproj by @DooDesch in #5
  • docs: link the README at docs.doodesch.de by @DooDesch in #6
  • ci: give the Nexus changelog field plain text, not BBCode by @DooDesch in #7
  • Place face layers by role, default eyelids to the skin colour by @DooDesch in #8

New Contributors

Full Changelog: v2.1.1...v2.2.0

v2.1.1

Choose a tag to compare

@github-actions github-actions released this 01 Aug 14:28

Changes in 2.1.1

Changed

  • Runs on Schedule I 0.4.6f11.
  • Needs S1API 3.1.1, up from 3.0.5. Update it along with the mod.

v2.1.0

Choose a tag to compare

@github-actions github-actions released this 30 Jul 20:42

Changes in 2.1.0

Writing a schedule meant guessing coordinates, because the game shows none anywhere. Now the console
hands them to you.

Added

  • Dev-console commands for pack authors (console has to be enabled in Settings):
    • personnel pos [HH:MM] - the spot you are standing on, as [x, y, z] or as a finished walkTo
      action for that time.
    • personnel spawn - the same spot as a spawn block, with rotationY and region filled in.
    • personnel route HH:MM - collects a step per stop in UserData/Personnel/route.json;
      personnel route show prints the block ready to paste into "schedule": [ ... ], clear
      starts over.
    • personnel npcs [filter] - loaded definitions, and where the physical ones are right now.
    • personnel help - the list.
  • Results are copied to the clipboard and written to the MelonLoader log, with an in-game
    notification confirming the command ran.

v2.0.0

Choose a tag to compare

@github-actions github-actions released this 22 Jul 18:05

Changes in 2.0.0

NPC mods without code: a pack manifest can now describe everything an NPC needs - where it spawns,
what it does all day, its economy role - and Personnel spawns it as a real world NPC on its own.

Added

  • autoRegister (pack level) / spawn.auto (per NPC): Personnel registers opted-in NPCs as real,
    networked, saved world NPCs with no consumer mod involved. A kill switch lives in the settings
    (EnableAutoRegister). Packs that already ship a consumer DLL are safe: a compiled NPC class for
    the same id always wins over the generated one.
  • spawn grew rotationY (spawn yaw), region (now actually applied) and physical. Non-physical
    NPCs are phone contacts only - no world body, no pathing cost. Default: physical exactly when the
    NPC has a schedule.
  • schedule: full daily schedules in the manifest - walkTo, stayInBuilding, sit,
    useVendingMachine, useAtm, useSlotMachine, locationDialogue, locationAction,
    driveToCarPark, dealSignal. Times are "HH:MM" strings.
  • relationships: delta, unlocked, unlockType, connections (by NPC id).
  • customer: the whole customer economy - spending, orders per week, preferred day/time, standards,
    direct approach, first sample, mutual relation requirement, call-police chance, dependence,
    affinities, preferred properties.
  • dealer: type, cut, signing fee, home, completed-deals variable, quality tolerances. Definitions
    with a dealer block now get the proper dealer base prefab (previously manifest dealers were built
    on the civilian prefab).
  • inventory: random cash range, startup items (with quantities), clear-each-night.
  • contact: mapMarker: false removes the phone-map marker, visible: false (experimental) skips
    the contact unlock.
  • behavior.aggression, maxHealth and scale are now actually applied to spawned NPCs.
  • Id stability: an authored id in the manifest is respected (previously always derived from folder
    and name), packId pins the derivation prefix, and saveId lets a renamed NPC keep matching old
    saves. schemaVersion marks the manifest format (current: 2).
  • Distant custom NPCs get a proper billboard impostor instead of a blank one (on S1API builds that
    support impostor configuration).

Changed

  • Pack and NPC registration order is now deterministic across machines - co-op peers agree on it.
  • Contact unlock and map marker are unchanged by default but can be opted out per NPC.

v1.1.0

Choose a tag to compare

@github-actions github-actions released this 08 Jul 14:26

Changes in 1.1.0

Fixed

  • Custom NPCs now show their real name in the phone Contacts app (previously "???") and can be found
    on the map. Personnel unlocks each spawned NPC's contact and gives it a map marker.

Added

  • Opt-in economy roles via a pack's behavior.conversation: "customer" or "dealer" makes the NPC
    a real customer or dealer, while the default "none" stays a plain, non-economy contact.
  • API.AddMapMarker(GameObject) to add a map marker to any live custom NPC.

v1.0.0

Choose a tag to compare

@github-actions github-actions released this 06 Jul 23:04

Changes in 1.0.0

Initial release.

Added

  • NPC pack loading from UserData/Personnel/Packs/<PackName>/ (manifest.json + optional PNGs),
    with per-pack log lines listing the loaded NPC ids.
  • Deep appearance definitions mirroring the S1API avatar-settings surface: body, skin, hair, face,
    eyes, eyebrows, clothing layers, accessories, and custom PNG layers loaded from the pack folder.
  • Duplicate-proof NPC ids, always derived as packname_npcname (normalized); manifest id fields
    are ignored.
  • PersonnelNpc base class: one tiny subclass per NPC turns a pack definition into a full S1API NPC
    (prefab, networking, save/load handled by S1API).
  • Public API: All, TryGet, Register, BuildAvatarSettings(def), ApplyAppearance(avatar, def),
    ConfigureFromDef(builder, def), OnReloaded, Reload.
  • Bundled example pack (off by default, LoadExamplePack) with two NPCs as a copyable template.
  • Mod Manager & Phone App settings integration.