Add TriTalk, a PDA Messaging App - #464
Conversation
Ports Delta-V's NanoChat cartridge and rebrands it to TriTalk. Delivery is map-scoped: the cartridge carries ActiveRadio on Common and goes through RadioSendAttemptEvent, RadioReceiveAttemptEvent and HasActiveServer, so message reach is identical to headset reach. Ships already carry telecomms servers and FTL with them, which makes a ship its own relay. C# namespaces and class names stay NanoChat* under _DV/ so future Delta-V merges land mechanically. Everything a player sees is rebranded through locale values and prototype ids. Upstream files touched, all marked: - CartridgeLoaderSystem: ActiveProgramChangedEvent, needed by background programs - RadioSystem: HasActiveServer made public - LogType: TriTalk = 12500 - NameIdentifierSystem: new ReleaseUniqueName - LogProbe: scans a card for its message history instead of access logs - ContentKeyFunctions, keybinds, rebind tab: conversation cycling Admin logging diverges from upstream on purpose. All five call sites use LogType.TriTalk so one filter covers the app including the microwave lines, the send log records the acting player as well as the card (upstream logs only the card, which has no ActorComponent, so the row lands with no player attached and is invisible to a player filter), and contact relabelling is now logged. Two number-pool fixes this fork needs and Delta-V does not. Numbers are returned to the pool on card shutdown, since ships are bought and sold all round and each sale would otherwise drain the pool permanently. And an exhausted pool no longer assigns the silent 0 fallback, which would give every later card #0000 and cross-deliver their messages; minValue is 1 so the sentinel is unambiguous. Sprites are from Delta-V by kushbreth, CC-BY-SA-3.0 and CC0, attributed in the RSI metas.
The directory previously listed every named card in the entity world, which on a station is roughly "everyone" but here also picks up spares in lockers, console printouts, lathe prints and forged cards, on maps you have never visited. Adds NanoChatCardComponent.Registered, set only when a card is handed to a player at spawn via PlayerSpawnCompleteEvent. The directory sweep requires it, and SetListNumber refuses to change the listing on an unregistered card, so a forged ID is permanently off the books rather than merely defaulted off. The client greys the toggle out with a tooltip instead of offering a button the server will ignore. A stolen ID stays listed under its registered owner, which is what makes the directory usable as evidence. Deliberately not keyed off station records. A card carries exactly one StationRecordKey and three writers stamp it (station spawn, sector spawn, and the shipyard purchase fallback), so record keying is too unstable to hang a player-visible directory on. The shipyard code says as much about itself. Also comments out the borg and station AI directory sweeps. Silicons here carry no CartridgeLoader, which exists only on PDA entities in this fork, so they cannot run the program and those queries never matched anything.
|
I'm a bit confused reading the description. The changelog and description imply that a range was added to headsets for all channels? Shortband is the only exception to "nigh-global radio" I've heard of |
It is TECHNICALLY correct since while you're on something like an expedition (which cuts you off from other chat channels) these also lose signal. That might be something I need to add actually... I don't think they will hold messages or indicate that they can't be sent when a player makes a map transition that doesn't have a comms server on it. |
|
Moving this to a draft for now. Someone asked me if the app needs to be closed and re-opened to see the messages and after a bit of looking I'm finding that bug still exists. That said there is also an overhaul done to the PDA cartridge system that was done upstream that I think I'm also going to pull in from wizden which should also fix the notes app. |
|
This is blocked by an engine upgrade to 285 or 286 so... Ugh. |

About the PR
Ports Delta-V's NanoChat and rebrands it TriTalk, a PDA messaging app. An ID card issued at spawn carries a 4 digit number, and you can message any other number from the PDA.
Delivery runs through the existing radio gates rather than its own path: the cartridge carries
ActiveRadioon Common and goes throughRadioSendAttemptEvent,RadioReceiveAttemptEventandHasActiveServer, so a message reaches exactly as far as a headset would. Flying out on an expedition drops you off the sector network until you come back.Why / Balance
Quiet one-to-one comms for a sector where crews fly separate ships. Hopefully keeps the chatter out of broadband.
The directory only lists IDs issued to a player at spawn, and an unregistered card can't opt itself in, so spares, console printouts and forged cards stay off the books permanently. A stolen ID stays listed under its registered owner, which is what makes the directory worth anything as evidence. Messages log to admin logs under their own
LogType, and a LogProbe pulls a card's history in round.Media
I'll throw some pix of this here tomorrow
Requirements
How to test
Spawn two characters and examine each ID for its number, then message one from the other through Look up numbers. A spare ID pulled out of a locker should not appear in the lookup and its List number toggle should be greyed out. Unpower the telecomms server on the map and sends should start failing, with the lookup reporting no relay in range. LogProbe a card for its contacts and message history, and microwave one to scramble or wipe it. Builds clean and the server boots with no prototype errors, but none of this has been seen running yet, so it wants a proper in-game pass before merge.
Breaking changes
New code sits under the
_DVnamespace with class names kept asNanoChat*so future Delta-V merges stay mechanical.RadioSystem.HasActiveServeris now publicLogProbeCartridgeSystemis now partialLogProbeUiFragment.UpdateStatetakes the state object instead of(string, List<PulledAccessLog>)ActiveProgramChangedEventonCartridgeLoaderSystemNameIdentifierSystem.ReleaseUniqueNameChangelog
🆑