feat(content): smuggler inventory item specs (#441)
Three physical inventory items for the smuggler archetype per D-065: manifest copy, corridor access token, personal comm log. Each item links to KG FactIds, defines confrontation leverage mechanics, and creates risk/reward carry decisions. All flagged contraband. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
+281
@@ -0,0 +1,281 @@
|
||||
# Smuggler Physical Inventory — v0.1 Item Specs
|
||||
# Ticket: #441 | Sprint: 6 | Decision: D-065
|
||||
# Author: Mellanie (copy), covering Paula (narrative systems) + Gestalt (content architecture)
|
||||
#
|
||||
# D-065: Knowledge is the primary "inventory" for all characters. The smuggler
|
||||
# additionally gets 3 physical items because the smuggler's word doesn't carry
|
||||
# institutional weight — they need tangible proof for leverage.
|
||||
#
|
||||
# All items are contraband. All items are private (information boundary, D-010).
|
||||
# Not visible to other entities unless revealed via search, scan, or confrontation.
|
||||
#
|
||||
# Server reads these specs via CarriedBy component + Take/Place verbs (#424).
|
||||
# Client renders via inventory UI (#438) — 3x3 grid UI, bottom-right, mapped to 1-9 hotkeys.
|
||||
#
|
||||
# Voice: smuggler internal perspective. Descriptions are diegetic — the character
|
||||
# is looking at an item in their pocket. Not neutral game text.
|
||||
#
|
||||
# Cross-references:
|
||||
# Sprint 5: #297 Kael FRIEND pack, #298 Sera FRIEND pack
|
||||
# NPC profiles: npcs/kael-davan.yaml, npcs/sera-venn.yaml
|
||||
# Knowledge graph: global/knowledge/investigation.yaml, contraband.yaml
|
||||
# Smuggler voice: docs/design/smuggler-voice-card.md, docs/design/voice-patterns.md
|
||||
|
||||
archetype: smuggler
|
||||
capacity: 9
|
||||
items:
|
||||
|
||||
# ================================================================
|
||||
# ITEM 1: Manifest Copy
|
||||
# Proves cargo discrepancy. The paper trail the ring can't deny.
|
||||
# ================================================================
|
||||
|
||||
- item_id: "item:manifest-copy"
|
||||
display_name: "Manifest Copy"
|
||||
description: >
|
||||
Cargo manifest from last cycle. Three containers that don't match
|
||||
the dock log. Kael's handwriting on the margins — weight corrections
|
||||
that never got filed.
|
||||
flavor_text: "Should've burned this weeks ago."
|
||||
contraband: true
|
||||
portable: true
|
||||
|
||||
knowledge_links:
|
||||
- fact_id: "investigation.manifest_discrepancy"
|
||||
relationship: "proves"
|
||||
confidence_granted: "knows_details"
|
||||
notes: >
|
||||
Physical proof of cargo routing irregularities. The manifest shows
|
||||
three containers rerouted during shift transition with weights that
|
||||
don't reconcile. Cross-ref: Kael dialogue the-terminal_d_008
|
||||
("Manifest says this one's forty kilos over") and the-terminal_d_018
|
||||
("Manifest's clean on my end").
|
||||
- fact_id: "investigation.cargo_anomaly"
|
||||
relationship: "corroborates"
|
||||
confidence_granted: "knows_of"
|
||||
notes: >
|
||||
The weight discrepancies on this manifest are consistent with
|
||||
unlicensed lattice components hidden in standard freight containers.
|
||||
|
||||
confrontation:
|
||||
usable_against:
|
||||
- target: "npc:kael-davan"
|
||||
leverage_type: "evidence"
|
||||
notes: >
|
||||
Kael's handwriting is on the manifest. Presenting this forces
|
||||
acknowledgment of ring involvement. Gentle confrontation: "I've
|
||||
got the manifest, Kael. Your handwriting." Harsh: "Want to explain
|
||||
the weight corrections, or should I show Nils?"
|
||||
- target: "npc:voss"
|
||||
leverage_type: "pressure"
|
||||
notes: >
|
||||
Voss cleared the schedule windows that made the rerouting possible.
|
||||
The manifest doesn't name Voss directly, but the timing proves
|
||||
complicity. Leverage for information, not confession.
|
||||
- target: "npc:nils-davan"
|
||||
leverage_type: "insurance"
|
||||
notes: >
|
||||
If Nils pushes for higher volume or threatens the smuggler,
|
||||
the manifest is proof that the operation exists. Mutually
|
||||
assured destruction — Nils can't deny it without denying Kael.
|
||||
risk_if_found: >
|
||||
A copied manifest with annotated discrepancies is direct evidence
|
||||
of smuggling awareness. If security or the detective finds this,
|
||||
it links the smuggler to cargo irregularities immediately.
|
||||
|
||||
gameplay:
|
||||
acquisition: "Starting inventory. The smuggler copied this last cycle as insurance."
|
||||
take_verb: true
|
||||
place_verb: true
|
||||
place_contexts:
|
||||
- "dead_drop_location"
|
||||
- "personal_space"
|
||||
notes: >
|
||||
Risk/reward: carrying it means evidence walks with you. Placing it
|
||||
means it could be found by anyone who accesses the location. The
|
||||
smuggler copied it because trust in the ring is eroding — Nils is
|
||||
pushing volume, Kael is distracted, Voss is getting nervous.
|
||||
|
||||
# ================================================================
|
||||
# ITEM 2: Corridor Access Token
|
||||
# Proves ring membership. The key that opens doors you shouldn't enter.
|
||||
# ================================================================
|
||||
|
||||
- item_id: "item:access-token"
|
||||
display_name: "Access Token"
|
||||
description: >
|
||||
Maintenance corridor keycard. Kael slipped it to me three weeks ago.
|
||||
Gets you past the service hatches into B-7. No legitimate reason to
|
||||
have this.
|
||||
flavor_text: "Hope it still works."
|
||||
contraband: true
|
||||
portable: true
|
||||
|
||||
knowledge_links:
|
||||
- fact_id: "location.corridor_b7_restricted"
|
||||
relationship: "proves_access"
|
||||
confidence_granted: "direct"
|
||||
notes: >
|
||||
Physical proof of unauthorized access to restricted maintenance
|
||||
corridors. Corridor B-7 is where the ring operates during shift
|
||||
transitions and night cycles. Cross-ref: Kael FRIEND arc phase 3
|
||||
(smuggler observes Kael in Corridor B-7).
|
||||
- fact_id: "relationship.ring_membership"
|
||||
relationship: "corroborates"
|
||||
confidence_granted: "knows_details"
|
||||
notes: >
|
||||
Possessing this token proves connection to the ring's infrastructure.
|
||||
Legitimate maintenance workers use Commission-issued access.
|
||||
This is a copied token — ring-internal distribution.
|
||||
|
||||
confrontation:
|
||||
usable_against:
|
||||
- target: "npc:kael-davan"
|
||||
leverage_type: "shared_guilt"
|
||||
notes: >
|
||||
Kael gave this to the smuggler. Both are implicated. Not leverage
|
||||
against Kael so much as proof of shared position — "We're in this
|
||||
together." Useful for demanding honesty about the exit attempt.
|
||||
- target: "npc:devra"
|
||||
leverage_type: "proof_of_standing"
|
||||
notes: >
|
||||
Showing the token to Devra proves operational involvement. Opens
|
||||
ring-internal dialogue that would otherwise require vouching.
|
||||
The token is a credential, not a weapon.
|
||||
risk_if_found: >
|
||||
Unauthorized corridor access token found on a dock worker. Security
|
||||
would flag this immediately. The detective's analytical lattice would
|
||||
connect it to Corridor B-7 activity patterns. No plausible cover.
|
||||
|
||||
gameplay:
|
||||
acquisition: "Starting inventory. Kael provided it three weeks before session start."
|
||||
take_verb: true
|
||||
place_verb: true
|
||||
place_contexts:
|
||||
- "dead_drop_location"
|
||||
- "personal_space"
|
||||
functional: true
|
||||
functional_notes: >
|
||||
The access token actually opens Corridor B-7 service hatches. Carrying
|
||||
it grants physical access to restricted maintenance corridors. Without
|
||||
it, the smuggler cannot enter ring operating spaces. Gameplay tension:
|
||||
you need it to do ring work, but carrying it is incriminating.
|
||||
|
||||
# ================================================================
|
||||
# ITEM 3: Personal Comm Log
|
||||
# Bridge between knowledge and provable leverage. The receipts.
|
||||
# ================================================================
|
||||
|
||||
- item_id: "item:comm-log"
|
||||
display_name: "Comm Log"
|
||||
description: >
|
||||
Three months of messages. Times, names, drop schedules. Nils
|
||||
arranging volumes, Kael confirming routes, Renn reporting handoffs.
|
||||
Everything the ring said it never said.
|
||||
flavor_text: "Should've wiped these. Didn't."
|
||||
contraband: true
|
||||
portable: true
|
||||
|
||||
knowledge_links:
|
||||
- fact_id: "contraband.supply_chain"
|
||||
relationship: "proves"
|
||||
confidence_granted: "knows_details"
|
||||
notes: >
|
||||
The comm log contains operational messages about lattice component
|
||||
shipments — arrival windows, container IDs, handoff confirmations.
|
||||
This is the full supply chain in text. Cross-ref: D-037 (contraband
|
||||
is unlicensed lattice components, not weapons).
|
||||
- fact_id: "relationship.trust_network"
|
||||
relationship: "proves"
|
||||
confidence_granted: "knows_details"
|
||||
notes: >
|
||||
Messages between Nils, Kael, Renn, Devra, and the smuggler. The comm
|
||||
log maps the ring's social structure — who coordinates with whom,
|
||||
who reports to whom. Cross-ref: triangle hub-power (Voss-Kael-Nils)
|
||||
and triangle worried-partner (Naia-Kael-Sera).
|
||||
- fact_id: "investigation.shift_mismatch"
|
||||
relationship: "corroborates"
|
||||
confidence_granted: "knows_of"
|
||||
notes: >
|
||||
Several messages reference shift timing — "window's clear at 14:15"
|
||||
or "Voss moved the rotation, new window at 14:30." Corroborates
|
||||
the pattern that shift manipulations enable smuggling operations.
|
||||
|
||||
confrontation:
|
||||
usable_against:
|
||||
- target: "npc:nils-davan"
|
||||
leverage_type: "mutually_assured"
|
||||
notes: >
|
||||
Nils's name is in the messages. Arranging volumes, setting
|
||||
schedules, confirming drops. If Nils tries to cut the smuggler
|
||||
out or shift blame, the comm log proves his coordination role.
|
||||
The nuclear option.
|
||||
- target: "npc:kael-davan"
|
||||
leverage_type: "evidence"
|
||||
notes: >
|
||||
Kael's route confirmations are in the log. But more importantly,
|
||||
the log shows Kael's messages STOPPING three weeks ago — silence
|
||||
that correlates with the exit attempt. The absence is evidence.
|
||||
"You stopped answering, Kael. I noticed."
|
||||
- target: "npc:renn"
|
||||
leverage_type: "pressure"
|
||||
notes: >
|
||||
Renn's handoff reports are recorded. Leverage for cooperation
|
||||
or information if the smuggler needs to pressure a ring member
|
||||
without going through Nils.
|
||||
risk_if_found: >
|
||||
Three months of incriminating communications naming ring members,
|
||||
shipment details, and operational timing. This is the single most
|
||||
damaging item the smuggler carries. If the detective finds it,
|
||||
the entire ring is compromised. If Nils finds it, the smuggler
|
||||
kept records against explicit protocol.
|
||||
|
||||
gameplay:
|
||||
acquisition: "Starting inventory. The smuggler has been saving messages as insurance."
|
||||
take_verb: true
|
||||
place_verb: true
|
||||
place_contexts:
|
||||
- "dead_drop_location"
|
||||
- "personal_space"
|
||||
notes: >
|
||||
The comm log is the smuggler's most powerful and most dangerous item.
|
||||
It proves the supply chain, maps the trust network, and corroborates
|
||||
shift manipulation. It's also the item that most clearly differentiates
|
||||
the smuggler from the detective — the detective builds a case from
|
||||
observation and institutional access. The smuggler already HAS the case.
|
||||
The question is what to do with it.
|
||||
|
||||
# ================================================================
|
||||
# SCHEMA NOTES (for Gestalt / content pipeline)
|
||||
# ================================================================
|
||||
#
|
||||
# Item spec schema (proposed for content/_schema/item-spec.schema.json):
|
||||
# required: item_id, display_name, description, contraband, portable
|
||||
# optional: flavor_text, knowledge_links[], confrontation{}, gameplay{}
|
||||
#
|
||||
# knowledge_links[]:
|
||||
# fact_id: string (matches global/knowledge/*.yaml fact_id)
|
||||
# relationship: enum [proves, corroborates, suggests]
|
||||
# confidence_granted: enum [suspects, knows_of, knows_details, direct]
|
||||
# notes: string (authoring context, not displayed in-game)
|
||||
#
|
||||
# confrontation.usable_against[]:
|
||||
# target: string (canonical NPC id)
|
||||
# leverage_type: enum [evidence, pressure, shared_guilt, insurance,
|
||||
# proof_of_standing, mutually_assured]
|
||||
# notes: string (authoring context)
|
||||
#
|
||||
# confrontation.risk_if_found: string (consequence description)
|
||||
#
|
||||
# gameplay:
|
||||
# acquisition: string (how the player gets this item)
|
||||
# take_verb: bool (can be picked up)
|
||||
# place_verb: bool (can be placed in world)
|
||||
# place_contexts: list<string> (valid placement locations)
|
||||
# functional: bool (does the item DO something beyond evidence?)
|
||||
# functional_notes: string (what it does)
|
||||
#
|
||||
# Display constraints (per D-065):
|
||||
# - description: max 2 sentences, ~30 words, smuggler voice
|
||||
# - flavor_text: max 1 sentence, ~10 words
|
||||
# - UI: 3x3 grid, bottom-right, mapped to 1-9 hotkeys
|
||||
Reference in New Issue
Block a user