#3 狩人ではじめるGearSwap(近接攻撃編)[FF11]

狩人は遠隔攻撃でTPをためるほか、近接攻撃でTPをためることもあります。
その場合、WSを使用した後は近接攻撃用の装備に着替えます。
WSを使用した後、マクロを使って手動で切り替えてもよいですが、
今回はself_command関数を使って、シチュエーションに合せて装備を切り替える方法を試してみます。

Windowerをはじめとする外部ツールの使用は自己責任で。


まず、GearSwapには任意の文字列をユーザースクリプトに送ることができるコマンドがあります。
ゲーム内のチャットラインで

//gs c <文字列>

と入力すると、ユーザースクリプトのself_command関数が呼ばれ、引数のcommandに<文字列>が入ってきます。

この機能を使用して実装としては

//gs c melee

と入力すると、「WS後の装備が近接装備になる近接攻撃モード」、もう一度入力すると「WS後の装備が遠隔装備になる遠隔攻撃モード」というように入力する度に切り替わるするようにします。

function get_sets()
    set_language('japanese')
    …
    
    -- self_command用フラグ
    is_melee = false -- 初期値はfalseで、遠隔攻撃モード-- 近接攻撃装備
    sets.aftercast.melee = {
        head={ name="ダンペニングタム", augments={'DEX+10','Accuracy+15','Mag. Acc.+15','Quadruple Attack +3',}},
        body={ name="アデマジャケット+1", augments={'DEX+12','AGI+12','Accuracy+20',}},
        hands={ name="アデマリスト+1", augments={'DEX+12','AGI+12','Accuracy+20',}},
        legs={ name="サムヌータイツ", augments={'STR+10','DEX+10','"Dbl.Atk."+3','"Triple Atk."+3',}},
        feet={ name="ヘルクリアブーツ", augments={'Accuracy+30','"Triple Atk."+4','Attack+30',}},
        neck="コンバタントトルク",
        waist="ウィンバフベルト+1",
        left_ear="テロスピアス",
        right_ear="素破の耳",
        left_ring="守りの指輪",
        right_ring="シーリチリング+1",
        back="ルーパインケープ",
    }
end


-- アクション後の装備を指定する関数
function aftercast(spell)
    if player.status == 'Engaged' then -- 抜刀中
        if is_melee then
            equip(sets.aftercast.melee) -- 近接装備
        else
            equip(sets.midcast.ra) -- 遠隔装備
        end
    end
end

-- ユーザーのコマンドを受け取る関数
function self_command(command)
    if command == 'melee' then
        if not is_melee then
            is_melee = true
            windower.add_to_chat(122,'近接モードに変更')
        else
            is_melee = false
            windower.add_to_chat(122,'遠隔モードに変更')
        end
   end
end

self_command関数でフラグ(is_melee)を切り替えて、そのフラグをaftercast関数で判定し装備を切り替えます。

私はパッドでFF11をプレイしているため、チャットラインにコマンドを入力するのは面倒なので、標準のマクロに登録しています。
標準のマクロからWindowerのコマンドを呼び出すには、'/console'を使います。マクロに以下のように登録すると動作します。

/console gs c melee

この場合、'gs'に'/'や'//'は必要ありません。

このようなコマンドによる装備切り替えはフォーマルハウトやアナイアレイターなど射撃間隔によって装備を替えたり、サムライロールの有無によって装備を替えたり、いろいろ応用できると思います。

マクロの話が出たので、1つ便利なGearSwapのコマンドを紹介します。
ユーザースクリプト上で定義した装備に着替えるコマンドです。
例えば、今回使用した近接装備は'sets.aftercast.melee'という変数に保存されています。
チャットライン上で

//gs equip sets.aftercast.melee

とすると、その変数に定義されている装備に着替えることができます。
とっさにカット装備に着替える時などマクロに登録しておくと便利です。