Rando: Mark seen world items and chests in the Check Tracker#6987
Rando: Mark seen world items and chests in the Check Tracker#6987meldridge wants to merge 3 commits into
Conversation
Shuffled world items now mark their check as seen once the player has demonstrably seen the item on screen: freestanding items, gold skulltula token drops, heart pieces, small key drops, heart containers, Ruto's letter, the lake fire arrow, the bombchu bowling prizes, and the Lost Woods target reward. Being drawn is not proof of sight: the cull volume is larger than the view frustum (and enlarged further by Disable Draw Distance), and culling ignores walls entirely. An item counts as seen only when, for several consecutive game frames, it was drawn inside the real frustum, close enough to render at a recognizable size, and unoccluded on a ray from the camera eye. Eligible actors are exactly those whose randomizer handlers stamp an item entry while swapping the draw function to render it, so what was on screen is known. Marking is gated on that stamped entry faithfully representing the placed item: unobtainable items deliberately draw as a blue rupee, and recording those would reveal an item the player never saw. Ice trap disguises appear identically on both sides of that comparison, so a seen disguise records as its cover item, matching what the tracker already displays for seen checks. The treasure chest game rupees are excluded because their randomized draw renders through the Lens of Truth, so being drawn does not mean the player saw them. Mysterious Shuffle disables the feature entirely: its "?" model swap happens only in the draw call and is never written back to the actor, so the stamped entry a fidelity check would compare against is still the true item, not what was shown. Most check types also have no display-side mystery gate, so a false match here would print a name the player only ever saw disguised as "?". Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
When Chest Size And Texture Match Contents is on, a chest reveals its item category through its size and texture, so seeing one already tells the player the category. Mark that check with a new RCSHOW_CATEGORY status showing the category name -- not the item, which the chest never revealed. It is the lowest knowledge tier: a later item hint promotes it to seen, and opening the chest to collected. The chest scan rides the world-item per-frame handler and its visibility gauntlet. The mystery gate moves to the item path only: a mystery-shuffled item draws as "?" so seeing it reveals nothing, but a chest still shows its category under mystery, so that path marks regardless. The marking gate mirrors EnBox_UpdateTexture exactly, so the tracker only marks when the chest is actually drawn with a category-differentiated appearance. The category is recomputed at display time so it tracks the chest's dynamic downgrades (bombchus/bottle/skeleton key). The seven category labels are provided by a new ItemCategoryName() in item_category_adj (singular, as each names one check's contents). The previously-stubbed Color_Hinted_* CVars and "Hinted (WIP)" colour picker are wired up for the new status. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
I think we may want to require being a bit closer to check before marking. Other hard to see checks which we shouldn't mark: GV waterfall HP, DMC spire HP in smoke, freestanding rupees in KF bushes |
Most shuffle features route their items through EnItem00, so any new one would inherit seen-marking without review. Gate the world-item path on an explicit set of check types instead: standard checks, Skulltula tokens and boss rewards. Freestanding rupees and hearts are excluded - they sit inside bushes and grass, whose actor collision the occlusion ray cannot see, so they marked while hidden from the player. Also drop the awarded Bombchu Bowling prizes and the Lost Woods target prize, keeping only the two prizes displayed on the bowling counter. The awarded variants fly straight to Link and are collected immediately, so marking them as seen conveys nothing. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
Hm. It already excludes From my testing GV waterfall HP doesn't flag due to occlusion from the water, but I'll double-check this. As for DMC I think this one should mark, it's trivial to see what's there despite the smoke, and it's a check I always make as soon as I visit DMC. |
Follow-up to #6946 (now merged) and, to #6906 and #6934: this covers the other half of Issue #3762. Where #6946 marks checks from explicit gossip stone hints, this marks them from what the player actually sees in the world.
A shuffled world item marks its check as seen once you've "seen it": freestanding items, skulltula tokens, heart pieces and containers, key and heart drops, etc. Being drawn alone isn't enough to count as "seen" because the cull volume is larger than the view frustum (larger still with Disable Draw Distance) and ignores walls. So an item only counts after several consecutive frames drawn inside the real frustum, close enough to read, and unoccluded on a ray from the camera. Marking is gated on the drawn item faithfully matching the placed one. Unobtainable items draw as a blue rupee and are skipped, and ice trap disguises match on both sides so they record as their cover item, exactly as the tracker already shows them. Mysterious Shuffle disables it entirely, since the
?swap happens only at draw time.The maximum range at which items will mark as "seen" (
kSeenMaxDepth) is set to 1200. I tuned this based on the PoH on top of Dodongo's Cavern as the player is walking up the Death Mountain Trail, and also the Blue Tektite PoH in the Hyrule Field Grotto. This might need further tweaks with more playtesting on systems with lower resolutions.Chests get the same feature but at the category level. With Chest Size And Texture Match Contents on, a chest's appearance already gives away its item category as soon as the player sees it, so recording that category is spoiler-safe. A new
RCSHOW_CATEGORYstatus sits betweenRCSHOW_UNCHECKEDandRCSHOW_SEEN_OR_HINTED, and its label is recomputed on display so it follows the chest's dynamic downgrades (bombchus, bottle, skeleton key). If you're a completionist like me and end up opening every junk chest in grottos because you don't want to forget which checks you've done later in a rando, this is a huge quality of life improvement.One limitation is that occlusion is a single ray from the camera eye to the item, so a see-through-but-solid surface (webs in Deku Tree, the cage in Impa's house) reads as blocking. The same is true for the freestanding PoH at Lon Lon Ranch (seen through the crawlspace). I didn't want to risk spoilers so I've left these as gaps for now rather than complicate the tests. Suggestions welcome for how to improve these.
Screenshots:
Build Artifacts