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

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

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

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

WindowerでFF11ライフ
オリジナル共通ファイル | WindowerでFF11ライフ 各ジョブのメンテナンス性を向上させるために、重複する処理を共通ファイルにまとめました。 このファイルはWindower\addons\GearSwap\data\user-globals.luaに保存します...

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

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

目次

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

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

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

  • リジェネ
  • ファランクス
  • リフレシュ
  • プロテス
  • シェル
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

注意点

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

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

コメント

コメント一覧 (11件)

  • いつもありがとうございます。
    ナや剣で詠唱中断装備→ファランクス効果アップ装備で完了の記事は読んだのですが
    この他者と自分の詠唱で自動で着替えるのと両立はできないでしょうか?
    他人と自分がファラ詠唱→詠唱中断装備→ファラ効果アップで完了、みたいなのです。

    • これはバグなので「被強化バフ対応」の部分を修正しました。
      次のファイルを更新してください。
      https://github.com/ktgreeds/GearSwap/blob/main/data/user-globals.lua

      修正内容としては、「if not windower.wc_match(original,player.name..’*’) then」を追加しています。
      originalの先頭には詠唱者の名前がセットされておりましたので、先頭に自分以外の名前がある場合にのみ後続処理を流すように変更しました。
      本来はspell.target.typeで判断するべきなのですが、このファンクションにはspellがないため、強引に判断する方法をとっています。

  • いつからかナイトで他人からのファラ着替えできなくなっちゃいました。
    少し前の保存していたデータだと動きます。(user-globals.lua:340のequip(sets.midcast.IncreasedPhalanx)がsets.midcast.Phalanxだったころ)

    Gearswapリネームによる再ダウンロード、日本語Libに上書き、PLD PLDgear再度ダウンロート再配置でも他ファランクス着替えが発生しません。
    チャットフィルターは全てoffでございます。
    とここまで書いてよく見ればプロシェルリジェネカーズナも着替えられていないです。
    何か解決の糸口をご教授願えますと幸いでございます。

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

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

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

コメントする

目次