続・バフ/デバフの効果時間について

以前、GearSwap等でバフ/デバフの効果時間を正しく取得できなくなることについて、記事を書きました。
yyoshisaur.hatenablog.com
上記の記事では、次にカウンタが1周するのは2022年6月1日と書きました。そろそろカウンタが1周するので注意しておかないと、と思っていました。

この現象が発生する原因はパケット内効果時間を表す値をUNIX時間に変換するためのオフセットがハードコーディングされているためでした。
この問題について進展があったので、今回続編として書いています。


GearSwapでは、このオフセットをハードコーディングせず、incoming 0x037の"Timestamp"と"Time offset?"からオフセットを計算するように修正されました。
今後はGearSwapではバフ/デバフの効果時間がこの問題でおかしくなることはなさそうです。
(今のところ、修正はGearSwapのみでlibs/packets/fields.luaはそのままのようです。)
github.com
github.com


この修正の元ネタは以下のアドオンのようです。
github.com

local vana_time = p['Timestamp'] * 60 - math.floor(p['Time offset?'])
state.offset = math.floor(os.time() - vana_time % 0x100000000 / 60)



2022/06/03 追記
libs/packets/fields.luaも更新されました。
こちらはオフセットの値の更新になったみたいです。

github.com

    bufftime = function(ts)
        return fn(1009810800 + (ts / 60) + 0x100000000 / 60 * 9) -- increment last number every 2.27 years
    end


少しリファクタリングされて、マジックナンバーが減って分かりやすくなりました。
カウンタが1周した際は現在'9'の部分を+1させていけば良いようになりました。
次にカウンタが1周するのは、2024年09月07日です。