fix: Skip GetItem animation for externally received other-slot items#39
fix: Skip GetItem animation for externally received other-slot items#39keraion wants to merge 1 commit into
Conversation
aMannus
left a comment
There was a problem hiding this comment.
Funnily enough this wasn't actually what I had in mind when I made the issue. The idea was to completely skip any mention of receiving the externally received archipelago items as they're basically worthless to players. But I also don't know how difficult it would even be, as normally setting that flag is what makes it enter the randomizer queue to begin with, so this may be either impossible or more complex than I thought.
I like this solution before we delve into something like that though, and I could totally see adding a checkbox so people can skip GI's for all externally received items period as more of a "don't interupt my gameplay" kind of deal. But we can do that later.
Long story short, this is great, lgtm!
|
I'll take that suggestion as a follow up. I can look at the code to see how the queuing works to see if we can suppress it. I think that would be a nice QoL thing. |
Feel free, but yes let's do that in a follow up PR. We can land this before then. |
The idea is adding an
isExternalstate in the queue which flags when we get an item for another slot from an external source. This mostly worked except for items that would collect in that same scene. If the scene fired aFlags_Set*it would then see it as a "local" check, requeue it and it would play the GI animation. In those cases, we needed to add a guard while theRandomizerOnExternalCheckHandlerwas processing to keep those as external.I tested this locally with a few players configured in the MW. Ran
/collect Player2and all the items were animation skipped. The usual progressive items picked up off the ground and in chests animated as normal. I also reloaded where progressive items were acquired, the reload skips the animation as expected.One thing to note is this expects everything in
RandomizerOnExternalCheckHandlerto be run synchronously (it does today) for the RAII guard to work correctly. If anything gets deferred we run the risk of the animation not getting skipped.