2025/7/9 オリジナル共通ファイルにて被強化バフを受けた際の自動着替えが行えるようになりました

他者から強化バフを受けてGearSwapで自動着替えを行う方法

GearSwapは自分のアクションに応じて着替えを行うツールです。

基本的には他者からのバフ魔法を受けるタイミングで着替えを行うことはできないのですが、他者(フェイスを含む)からのバフ魔法でも自動で着替える方法を見つけましたので、オリジナル共通ファイルに追記しています。

最新版を取得し直してもらえれば使える状態になります。

あわせて読みたい
【Mote-libs】オリジナル共通ファイル メンテナンス性を向上させるために、処理を共通化しました。 このファイルはWindower\addons\GearSwap\data\user-globals.luaで保存します。 このファイルはGearSwapが...

できるだけ良い状態でバフ魔法は受けたいですが、リジェネやプロテスなどはプレイヤーが不意に更新してくることが普通ですので、これらのバフ魔法を手動で対応することは難しいです。だから自動で対応できるようにしました。

一応想定通り動いている状態ではありますが、作りたての機能ですので不具合など起こる可能性はあることをご理解ください。

目次

他者からのバフ魔法で自動着替えを行う方法

オリジナル共通ファイルを使っている前提で説明します。

仕組み的には、バトルメッセージから読み取って判断しており、次の魔法をパーティメンバーが詠唱開始、または自身で詠唱したときにのみ反応するようになっています。

  • リジェネ
  • ファランクス
  • リフレシュ
  • プロテス
  • シェル
require('sets')
require('chat')
filter_mode = S{51,52}
windower.register_event("incoming text", function(original, modified, original_mode, modified_mode, blocked)
    if filter_mode:contains(original_mode) then
        if windower.wc_match(original,windower.to_shift_jis('*リジェネ*')) then
            equip(sets.midcast.Regenerated)
        elseif windower.wc_match(original,windower.to_shift_jis('*ファランクス*')) then
            equip(sets.midcast.Phalanx)
        elseif windower.wc_match(original,windower.to_shift_jis('*リフレシュ*')) then
            equip(sets.midcast.Refresh)
        elseif windower.wc_match(original,windower.to_shift_jis('*プロテス*')) then
            equip(sets.midcast.Protect)
        elseif windower.wc_match(original,windower.to_shift_jis('*シェル*')) then
            equip(sets.midcast.Shell)
        end
    end
end)

たとえば、ファランクスを受ける際に自動的に着替えるためには、該当ジョブの装備定義でファランクス性能アップセットsets.midcast.Phalanxを用意してください。

この定義がある場合にのみ着替えが行われます。

魔法を受けた後は、待機装備(戦闘中ならengaged装備)へ自動的に戻るようになっています。

function user_buff_change(buff, gain)
    if state.Buff['睡眠'] then
        equip({main=gear.Slip})
        equip({range=gear.Slip})
    elseif buff == "ファランクス" and not gain then
        windower.add_to_chat(167,'■■■ ファランクス切れ ■■■')
    elseif buff == "八双" and not gain then
        windower.add_to_chat(167,'■■■ 八双切れ ■■■')
    elseif buff == "コルア展開" and not gain then
        windower.add_to_chat(167,'■■■ インデ切れ ■■■')
    elseif buff == 'リジェネ' and gain then
        Idle()
    elseif buff == 'ファランクス' and gain then
        Idle()
    elseif buff == 'リフレシュ' and gain then
        Idle()
    elseif buff == 'プロテス' and gain then
        Idle()
    elseif buff == 'シェル' and gain then
        Idle()
   end
end

注意点

一応パーティメンバーからの魔法に関してフィルタをかけていますが、アライアンスが詠唱する魔法の動作は未確認です。

挙動がおかしくて鬱陶しい場合は、チャットフィルターでアライアンス(仲間から)の部分をフィルターして対応してください。

コメント

コメント一覧 (2件)

  • お世話になってます、実装してみましたが
    自分にファランクスの効果が入った状況でしか装備の戻りが起きないですね
    (例)
    Aにファランクスの定義を組んである状況で BがA以外のキャラにファランクス2を唱えた場合
    Aに着替えが発生するけどBの詠唱が終わっても装備の巻き戻りが起きない
    それほど大問題では無いですけど一応報告です

    • 装備の巻き戻りの条件は、自分にバフがかかった状態で判断しているので、例のパターンではそうなりますよね。
      ファランクス2の場合は自分にかかった場合だけで判断する条件を追加することができますが、ファランクス1は範囲化もありますのでファランクス1の場合は実現できなさそうです。

      ま、なにか面倒なことが起こらない限りしばらく様子を見ます。
      ご連絡ありがとうございます。

コメントする

目次