Open Infinitay opened 4 weeks ago
Currently trying to find a way to implement this as a part of #56 changes; however I'm having trouble with the implementation. I can't think of a way that can appropriately handle multiple consecutive degradations to different pouches. It would be viable to implement it by checking to see if the pouch is close to degrading again similar to seeing if a regular pouch will degrade soon. Unfortunately, I can't find any consistency in how a pouch is calculated to degrade after another degrade.
Take the following chart for a Large Essence Pouch for example: The number of fills I was able to do before it degraded again is not constant. Furthermore, if my data collection was right, then why was 4 max skipped?
I could make it such that when a player interacts with a degraded pouch, they are forced to wait a tick before performing any other fill pouch actions. This could possibly slow RC down especially if a player chooses to use degraded pouches. However, in GOTR players could still use a degraded pouch if they don't care about repairing it and instead search the Rift Guardian for a new pouch, or maybe they're waiting until they finish their game. Forcing the delay will just impact their gameplay in a way you wouldn't really want. Yet, without properly tracking additional degrade counts, it could result in incorrect states.
Potential work arounds:
Perhaps it's just best to only handle one max degrade and just validating the inventory state later. Sure, it'll lead to incorrect stored state, but at least it wouldn't break the plugin. If anything, give an indicator the stored count could be incorrect (eg. 12*
or 12?
)
Large pouch max stored: 12 (original) followed by these consecutive degradations: 9 -> 8 -> 7 -> 6 -> 5 -> 3 -> Removed ("Your pouch has decayed beyond any further use")
Reflect degradation state on the stored essence count. Currently, if a pouch degrades again and user stores essence, the plugin state could be invalid an a user will have to recheck their pouch.
Potential work-around until this is implemented: Listen for a degradation and flag the stored essence count on the pouch as
unknownStored