mirror of
https://github.com/Kelsidavis/WoWee.git
synced 2026-03-24 00:00:13 +00:00
Fix buff bar: opcode merge, isBuff flag, and duration countdown
Root cause: OpcodeTable::loadFromJson() cleared all mappings before loading the expansion JSON, so any WotLK opcode absent from Turtle WoW's opcodes.json (including SMSG_AURA_UPDATE and SMSG_AURA_UPDATE_ALL) was permanently lost. Changed loadFromJson to patch/merge on top of existing defaults so only explicitly listed opcodes are overridden. Also fix isBuff border color: was testing flag 0x02 (effect 2 active) instead of 0x80 (negative/debuff flag). Add client-side duration countdown: AuraSlot.receivedAtMs is stamped when the packet arrives; getRemainingMs(nowMs) subtracts elapsed time so buff tooltips show accurate remaining duration instead of stale snapshot.
This commit is contained in:
parent
df0bfaea4f
commit
55fd692c1a
4 changed files with 32 additions and 9 deletions
|
|
@ -7162,7 +7162,14 @@ void GameHandler::handleAuraUpdate(network::Packet& packet, bool isAll) {
|
|||
if (isAll) {
|
||||
auraList->clear();
|
||||
}
|
||||
for (const auto& [slot, aura] : data.updates) {
|
||||
uint64_t nowMs = static_cast<uint64_t>(
|
||||
std::chrono::duration_cast<std::chrono::milliseconds>(
|
||||
std::chrono::steady_clock::now().time_since_epoch()).count());
|
||||
for (auto [slot, aura] : data.updates) {
|
||||
// Stamp client timestamp so the UI can count down duration locally
|
||||
if (aura.durationMs >= 0) {
|
||||
aura.receivedAtMs = nowMs;
|
||||
}
|
||||
// Ensure vector is large enough
|
||||
while (auraList->size() <= slot) {
|
||||
auraList->push_back(AuraSlot{});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue