スペシャルなエフェクト

休止中にもらっていたコメントについて、すこし調べてみました。


ガリーハデスのSPアビリティのエフェクトの検知についてです。
ガリーのハデスはSPアビリティのエフェクトが発生したタイミングで弱点となる属性が変化します。
エフェクトだけが発生し、アビリティ名などはログには出力されません。
アクションのパケットを観察してみるとエフェクト発生時に"NPC TP finish"のパケットが来ていることがわかります。
通常はNPC TP finish"のパケットのact.paramには対応するアビリティのID(monster_abilities)が入っています。しかし、エフェクトだけの場合、不定値ではないがIDとして見ると急所突きや怒りの一撃など関係のなさそうなものが入っています。
その他になにかエフェクトを判断できそうな要素がないか調べてみると、act.targets[1].actions[1].animationに値の意味はわかりませんが、エフェクトに対応して連番で数値が入っています。animationという要素名からキャラクターの動作に関係ありそうですが、よくわかりません。
animationの値の意味がわからないので、確実に判定できるかはわかりません。
メナスカミールの大羊族(オヴィム)Cherti、ベガリーのハデス上下(BF版)、ウォンテッドのヒッドヘーグ(Hidhaegg)で確認してみましたが、どれもエフェクトとanimationの値は対応していて判定できているように見えました。
ほかにもっとよい判定方法があるかもしれません。

require('luau')

sp_anime = L{432, 433, 434, 435, 436, 437, 438, 439}
 -- 弱点はハデス用
sp_element = {
    [432] = '火(弱点 雷)',
    [433] = '氷(弱点 水)', 
    [434] = '風(弱点 火)', 
    [435] = '土(弱点 氷)', 
    [436] = '水(弱点 風)', 
    [437] = '雷(弱点 土)', 
    [438] = '光', 
    [439] = '闇', 
}

windower.register_event('action', function(act)
    if act.category == 11 then 
        if act.targets and act.targets[1].actions then
            if sp_anime:contains(act.targets[1].actions[1].animation) then
                    -- log(string.format('param:%d, anime:%d, react:%d', act.param, act.targets[1].actions[1].animation, act.targets[1].actions[1].reaction))
                    log(sp_element[act.targets[1].actions[1].animation])
            end
        end
    end
end)

オデシージェールAT4のBumbaはanimationの値が異なっていました。
体感(笑)ですが、Bumbaは雷属性?エフェクトが紫色になっていたり(雷属性エフェクトは黄色っぽい)するので、参照しているエフェクトが違うのかもしれません。モグパケットが足りなかったので、すべて調べられていないですが値は以下のような感じでした。

sp_bumba = L{2618, 2619, 2620, 2621, 2622, 2623, 2624, 2625}
sp_element_bumba = {
    [2618] = '火',
    [2619] = '水', 
    [2620] = '風', 
    [2621] = '土', 
    [2622] = '雷', 
    [2623] = '氷', 
    [2624] = '光', 
    [2625] = '闇', 
}

2022/02/10
BumbannounceよりエフェクトのanimationのIDを補完