Skip to content

Allow Smellers to smell Scent bearers directly - #5544

Merged
walksanatora merged 1 commit into
ss14Starlight:starlight-devfrom
Sparlight:scent-additions
Aug 10, 2026
Merged

Allow Smellers to smell Scent bearers directly#5544
walksanatora merged 1 commit into
ss14Starlight:starlight-devfrom
Sparlight:scent-additions

Conversation

@Sparlight

Copy link
Copy Markdown
Contributor

Short description

Allow a Smeller to smell someone directly if they have a Scent.

Why we need to add this

It made the most sense to do this. The current way you smell someone directly is by hugging them and then smelling yourself. Very weird and unintuitive action.
This turned out to be more effort than I had anticipated, and I was gonna bundle this in with a few extra things like an olfactory implant. Turns out these are all a bit chunky so I'm gonna part these out for easier review and handling.

Media (Video/Screenshots)

image

Checks

  • I do not require assistance to complete the PR.
  • Before posting/requesting review of a PR, I have verified that the changes work.
  • I have added screenshots/videos of the changes, or this PR does not change in-game mechanics.
  • I affirm that my changes are licensed under the MIT License and grant permission for use in this repository under its conditions.

Changelog

🆑 Sparlight

  • add: Individuals that can smell can now smell anything with a scent directly now, in addition to the scent traces left behind on them.

@Sparlight
Sparlight requested a review from a team August 6, 2026 15:40
@github-actions github-actions Bot added Changes: UI Changes: C# S: Needs Review Status: Requires additional reviews before being fully accepted. Not to be replaced by S: Approved. labels Aug 6, 2026
@coderabbitai

coderabbitai Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Summary

Smellers can now smell an entity’s current Scent directly. They no longer need to hug the entity and smell themselves. Scent traces remain available.

User impact

  • The sniff window shows a direct tracking option when the target has a Scent.
  • The window separates the target’s Scent from recorded scent traces.
  • Empty-state text now distinguishes between no traces and no available Scent.
  • Tracking accepts both the target’s current Scent and recorded traces.

Notable changes

  • ScentSniffBoundUserInterfaceState now carries nullable OwnScentId.
  • ScentSniffMenu.UpdateEntries accepts and displays ownScentId.
  • ScentSystem includes the target’s Scent when it builds sniff state and validates tracking requests.
  • New English localization covers direct tracking and empty trace states.

Risk areas

  • Existing callers must provide the new ScentSniffBoundUserInterfaceState constructor argument.
  • Tracking validation must continue to reject unrelated or stale scent IDs.
  • The UI must handle targets without a Scent and targets without scent traces.
  • No test or validation evidence is included in the available PR context.

Guideline gaps

  • No validation evidence is provided.
  • No explanatory documentation or changelog entry is shown.

Walkthrough

The scent sniff flow now reports an entity’s own scent separately from scent traces. The client displays a tracking row for that scent, and the server accepts it as a valid tracking target.

Changes

Own Scent Tracking

Layer / File(s) Summary
Scent state and tracking
Content.Shared/_Starlight/Scent/ScentSniffUi.cs, Content.Server/_Starlight/Scent/Systems/ScentSystem.cs
The sniff state carries an optional own-scent ID. Sniffing supports targets without scent traces, and tracking accepts the target’s own scent or a recorded trace.
Scent menu integration
Content.Client/_Starlight/Scent/ScentSniffBoundUserInterface.cs, Content.Client/_Starlight/Scent/ScentSniffMenu.xaml.cs
The client passes the own-scent ID to the menu and renders a clickable tracking row before trace entries.
Scent menu localization
Resources/Locale/en-US/_Starlight/scent/scent.ftl
Added localized text for own-scent tracking and empty trace results.

Estimated code review effort: 2 (Simple) | ~10 minutes

Sequence Diagram(s)

sequenceDiagram
    participant ScentSniffMenu
    participant ScentSniffBoundUserInterface
    participant ScentSystem

    ScentSniffBoundUserInterface->>ScentSystem: Request sniff state
    ScentSystem-->>ScentSniffBoundUserInterface: Return entries and own scent ID
    ScentSniffBoundUserInterface->>ScentSniffMenu: Update entries with own scent ID
    ScentSniffMenu->>ScentSystem: Track selected scent
    ScentSystem-->>ScentSniffMenu: Accept own scent or trace
Loading

Possibly related PRs

Suggested labels: S: Untriaged, size/S

Suggested reviewers: redmushie

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title clearly and concisely describes the primary change: allowing Smellers to smell entities with scents directly.
Description check ✅ Passed The description explains the direct-scent smelling change, its rationale, scope, and user-visible behavior.

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions github-actions Bot added the S: Untriaged Status: Indicates an item has not been triaged and doesn't have appropriate labels. label Aug 6, 2026
@Sparlight

Copy link
Copy Markdown
Contributor Author

what da

@Sparlight

Copy link
Copy Markdown
Contributor Author
image image yeah ok github just give up

I'll re-run CI later then.

@Sparlight

Copy link
Copy Markdown
Contributor Author

Closing to re-run CI.

@Sparlight Sparlight closed this Aug 7, 2026
@Sparlight Sparlight reopened this Aug 7, 2026
@github-actions github-actions Bot added the size/S label Aug 7, 2026
@starlightgithub starlightgithub Bot added S: Approved Status: Reviewed and approved by at least one maintainer or dev; a PR may require another approval. and removed S: Needs Review Status: Requires additional reviews before being fully accepted. Not to be replaced by S: Approved. labels Aug 10, 2026
@walksanatora
walksanatora added this pull request to the merge queue Aug 10, 2026
Merged via the queue into ss14Starlight:starlight-dev with commit 0cffc5f Aug 10, 2026
33 of 43 checks passed
starlightgithub Bot added a commit that referenced this pull request Aug 10, 2026
@coderabbitai coderabbitai Bot mentioned this pull request Aug 11, 2026
4 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Changes: C# Changes: UI S: Approved Status: Reviewed and approved by at least one maintainer or dev; a PR may require another approval. S: Untriaged Status: Indicates an item has not been triaged and doesn't have appropriate labels. size/S

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants