Implemented a system to queue and process spell or item cast requests
Queue can store multiple casts prioritized by time requested (FIFO), allowing interactions such as using an item + casting a spell immediately after a cast finishes
One key difference is that the 335a client does not send CMSG_CAST_SPELL packets while on GCD, making queueing spells during casts that last the duration of GCD not possible (like instant cast corruption). Only spells queued during the end of a current spell cast (<400ms) will be queued. CMSG_USE_ITEM are sent when on GCD, so items can be queued during GCD e.g., casting a 1.5s spell and queuing a potion is possible
Target branch(es): 335/6x
Issues addressed: Fixes #50
Tests performed: (Does it build, tested in-game, etc)
warlock 80 at a target dummy, trained spells, engi gloves, trinket, potion of speed
testing with a longer time window might be useful SPELL_QUEUE_TIME_WINDOW = 400 to 1000/2000/...
Changes proposed:
Uses similar flow logic as TC master and Cata preservation, with some structural differences.
One key difference is that the 335a client does not send
CMSG_CAST_SPELL
packets while on GCD, making queueing spells during casts that last the duration of GCD not possible (like instant cast corruption). Only spells queued during the end of a current spell cast (<400ms) will be queued.CMSG_USE_ITEM
are sent when on GCD, so items can be queued during GCD e.g., casting a 1.5s spell and queuing a potion is possibleTarget branch(es): 335/6x
Issues addressed: Fixes #50
Tests performed: (Does it build, tested in-game, etc) warlock 80 at a target dummy, trained spells, engi gloves, trinket, potion of speed
testing with a longer time window might be useful
SPELL_QUEUE_TIME_WINDOW = 400
to 1000/2000/...tswow 78f99d423ae9
Known issues and TODO list: