Skip to content

Add TriTalk, a PDA Messaging App - #464

Draft
rebaserHEAD wants to merge 2 commits into
Triad-Sector:mainfrom
rebaserHEAD:feat/tritalk-pda-messenger
Draft

Add TriTalk, a PDA Messaging App#464
rebaserHEAD wants to merge 2 commits into
Triad-Sector:mainfrom
rebaserHEAD:feat/tritalk-pda-messenger

Conversation

@rebaserHEAD

@rebaserHEAD rebaserHEAD commented Aug 4, 2026

Copy link
Copy Markdown
Collaborator

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 ActiveRadio on Common and goes through RadioSendAttemptEvent, RadioReceiveAttemptEvent and HasActiveServer, 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

  • I have read relevant guidelines/documentation.
  • I have added media to this PR or it does not require an ingame showcase.
  • I can confirm this PR contains either no AI-generated content, or AI-generated content that meets our guidelines.

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 _DV namespace with class names kept as NanoChat* so future Delta-V merges stay mechanical.

  • RadioSystem.HasActiveServer is now public
  • LogProbeCartridgeSystem is now partial
  • LogProbeUiFragment.UpdateState takes the state object instead of (string, List<PulledAccessLog>)
  • New ActiveProgramChangedEvent on CartridgeLoaderSystem
  • New NameIdentifierSystem.ReleaseUniqueName

Changelog
🆑

  • add: TriTalk, a PDA messaging app. Examine an ID card to see its number. Needs a powered telecomms server in range, same as your headset.
  • add: TriTalk lists issued IDs in a directory. You can unlist your own number.
  • add: LogProbe can pull message history off a TriTalk card.

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.
@github-actions

github-actions Bot commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

RSI Diff Bot; head commit 0c6a33f merging into ec7d1b0
This PR makes changes to 1 or more RSIs. Here is a summary of all changes:

Resources/Textures/_DV/Misc/program_icons.rsi

State Old New Status
nanochat Added

Resources/Textures/_DV/Objects/Devices/cartridge.rsi

State Old New Status
cart-chat Added

@mnva0

mnva0 commented Aug 4, 2026

Copy link
Copy Markdown
Collaborator

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

@rebaserHEAD

Copy link
Copy Markdown
Collaborator Author

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.

@rebaserHEAD
rebaserHEAD marked this pull request as draft August 4, 2026 15:01
@rebaserHEAD

Copy link
Copy Markdown
Collaborator Author

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.

@rebaserHEAD

Copy link
Copy Markdown
Collaborator Author

This is blocked by an engine upgrade to 285 or 286 so... Ugh.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

C# FTL Changes to localization files size/L Sprites UI YML

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants