Releases: DooDesch-Mods/ScheduleOne-Personnel
Releases · DooDesch-Mods/ScheduleOne-Personnel
Release list
v2.2.0
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
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
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 finishedwalkTo
action for that time.personnel spawn- the same spot as aspawnblock, withrotationYandregionfilled in.personnel route HH:MM- collects a step per stop inUserData/Personnel/route.json;
personnel route showprints 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
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.spawngrewrotationY(spawn yaw),region(now actually applied) andphysical. 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: falseremoves the phone-map marker,visible: false(experimental) skips
the contact unlock.behavior.aggression,maxHealthandscaleare now actually applied to spawned NPCs.- Id stability: an authored
idin the manifest is respected (previously always derived from folder
and name),packIdpins the derivation prefix, andsaveIdlets a renamed NPC keep matching old
saves.schemaVersionmarks 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
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
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); manifestidfields
are ignored. PersonnelNpcbase 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.