HarbourMasters / Shipwright

3.27k stars 490 forks source link

Track Golden Skulltula death #4562

Open serprex opened 3 days ago

serprex commented 3 days ago

Hi, trying to dip my toes into contributing with a simple idea: mark item as seen after golden skulltula dies, similar to items seen in shop. This can be useful for cases where one can kill GS with projectiles but can't yet reach

I realize this could be argued on, some skulltulas like ones behind rocks need tricks to see even tho you can kill them with clips. Could always have a list of GS which this ignores

It works enough that after GS dies tracker is updated, but oddly game soft locks when Link goes to collect reward (still able to pause, just can't move)

Build Artifacts

Malkierian commented 3 days ago

The softlock is unrelated to any of your changes, I'll be merging a fix for it soon.

As for marking them as seen, the main issues I've had are coming up with ways to make sure the item actor is visible before marking as seen, that's the only reason I didn't include it in the original concept. Same with freestanding items. How do you know the player can see them? That's what would make it unlikely for me to approve this, which doesn't account for that. The goal for the tracker is to never give more information than the player themselves could actually know at a basic level.

However, I don't know how many skulltulas there are that aren't actually visible all the time anyway, and I might be OK with an exclusion list for the ones that aren't.

serprex commented 3 days ago

Proposed exclusions:

Pepper0ni commented 2 days ago

In addition to killing skulls you can't see, there's the issue in race settings where the player can turn around and do other things during the animation, and then look at the tracker to see if it's worth going back for instead of taking the effort to look at it.

Another potential issue is distance. IIRC default draw distance is lower than the bows range, so the tracker could identify items beyond visual viewing range. There's also the issue that some item/location combos are simply difficult to scout at a distance, giving the tracker a different advantage.

Also, how does this system account for ice traps? Shops have the name in the store that acts as a tell, skull drops do not.

serprex commented 2 days ago

Seems fair to disable this in races. Can put it behind tracker setting

Also, how does this system account for ice traps? Shops have the name in the store that acts as a tell, skull drops do not.

this is using RCSHOW_SEEN which shops immediately apply, only after shop cursor hovers does it get set to RCSHOW_IDENTIFIED. RCSHOW_SEEN handles listing traps as what they look like

I suppose the best way about it would be ray cast collision check that also checks that line stays within camera perspective, along with a min distance check. Then issue is only if the item has fake wall between itself & player. At that point it could be used for all visible items

Aside, tracker already leaks some info: it tells vanilla vs MQ when entering dungeon, which is sooner than difference may be clear. If it wanted to be safe the distinction should wait until at least one check is found

Malkierian commented 2 days ago

No, I specifically went through every entrance, both from the front and from the boss door, to list out which ones are visually obvious from the start between vanilla and MQ, and the tracker otherwise doesn't set whether it's vanilla or MQ until the first check is collected.

Malkierian commented 2 days ago

The one exception to that was Ice Cavern, where it's audibly obvious instead (vanilla doesn't have the boulder rolling toward the entrance), and the audio cue is quickly visually corroborated.

Pepe20129 commented 2 days ago

I think a good solution for the race problem is to track the item once you Z-target it instead of when you kill the skull as that ensures that you've seen it.

Malkierian commented 2 days ago

Are drops from gold skulltulas always targetable?

Malkierian commented 2 days ago

One possible issue with that is that there are quite a few instances where you can kill the GS and see the drop from a distance greater than targeting distance.