Repository navigation
fix(seed): add items_event_sets bridge for Radio (item 5168) — unblocks SGC_W1 mission 1561 - #605
BangRocket wants to merge 1 commit into
Conversation
…ks SGC_W1 mission 1561 (#334) Radio (5168) had no items_event_sets row, so the client offered no Use option and OnItemUse::5168 never fired — softlocking mission 1561 (chains 3021/3025). Add the standard quest-item-use binding (5168 -> ability 597 on EVENT_ItemUse=5), mirroring the vial/GDO rows, and bump the sequence setval to 2768 so a future sequence insert can't collide. Live-DB guard load_item_event_set_abilities_binds_radio_use runs the real loader against the seed and asserts (5168, 5) -> 597; it fails in CI if the INSERT is dropped. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Warning Review limit reached
Next review available in: 40 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Run ID: 📒 Files selected for processing (2)
✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
Summary
Radio (item 5168) had no row in
resources.items_event_sets. The SGW client treats that table as the authoritative "can this item be used?" gate, so with no row the Radio shows no Use option and the cell-sideOnItemUse::5168trigger never fires — softlocking SGC_W1 mission 1561 (chains 3021 "use radio → advance to bomb defusal" and 3025 "use radio → complete mission" can never run).Fix is a single seed
INSERTmirroring the other quest-item-use rows (item 19 Ambernol vial → 1374, item 1893 GDO → 597, both onevent_id = 5/EVENT_ItemUse):2768is the next freeitem_event_id(prior max +setvalwere both 2767); thesetvalat the end of the file is bumped to 2768 in the same edit so a future sequence-driven insert doesn't collide.Verified against the seed before editing:
items.sqlwithcontainer_sets = '{2}'(mission tab) — only the events bridge was missing.abilities.sql— the same ability the vial/GDO rows use.sgc_w1_chains.sqlboth trigger onitem_use '5168'and already exist.items_event_setsrow for 5168.Testing
Live-DB regression
load_item_event_set_abilities_binds_radio_use(inspawner/tests/live_db_loaders.rs) runs the real loader against the seeded DB and asserts(5168, 5) → 597. It self-skips locally viarequire_db_or_skip!and runs in CI against the freshdb/database.sql-loaded Postgres; dropping the seedINSERTmakes it fail there.I chose a loader-backed seed guard over a chain-replay test on 3021/3025 because those chains exist independently of this row — a replay test would pass with or without the fix, so it wouldn't guard the change. The server's
UseInventoryItempath firesItemUsedwithout consultingitems_event_sets(the chain decides consumption), so this row is specifically the client-side usability gate; the loader guard is the tightest revertable check for it.No doc update:
docs/content/mission-chains.mdandassociation-map.mdalready document the two-step radio-use flow as the intended (canonical) behavior — none claimed it was broken, so there's no known-gap note to flip.Closes #334
🤖 Generated with Claude Code