MENU

【GearSwap】召喚士のMote-libs用コード

召喚士のMote-libsコードです。

召喚士はあまり力を入れてないので、本気で組んでいません。とりあえずのコードです。

詳しい使い方は【GearSwap】Mote-libs召喚士の使い方をご覧ください。

目次

ソースコード

Mote-libsでは、ジョブロジック部分(ジョブ名.lua)と装備セット部分(ジョブ名_gear.lua)を切り分けていますので、次のような階層構造になっています。

GearSwap/
  └ data/
    ├ SMN.lua
    ├ smn_avatar.lua
    └ キャラクター名/
      └ SMN_gear.lua

注意点

ジョブロジック

function get_sets()
    mote_include_version = 2
    include('Mote-Include.lua')
    set_language('japanese')
end

function job_setup()
    state.Buff['神獣の加護'] = buffactive['神獣の加護'] or false
    include('smn_avatar')
    state.OffenseMode:options('Normal')
    state.IdleMode:options('Normal')
    state.BloadPactText = M(false, '履行テキスト')
end

function user_setup()
    send_command('wait 5; gs c set IdleMode Normal; gs c lockstyleset')
    send_command('input /si item;')
end

function customize_idle_set(idleSet)
    idleSet = set_combine(idleSet, weapon)
    if pet.isvalid then
        if pet.status == 'Engaged' then
            idleSet = set_combine(idleSet, sets.idle.Avatar.Melee)
        elseif state.Buff['神獣の加護'] then
            idleSet = set_combine(idleSet, sets.idle.Avatar.Favor)
        else
            idleSet = set_combine(idleSet, sets.idle.Avatar)
        end
    else
        idleSet = set_combine(idleSet, sets.idle)
    end    
    return idleSet
end

function job_self_command(cmdParams, eventArgs)
    if cmdParams[1] == 'lockstyleset' then
        send_command('input /lockstyleset '..lockstyleset)
    elseif cmdParams[1] == 'Idle' then
        if player.status == 'Idle'then 
            equip(get_idle_set()) 
        else
            equip(get_melee_set()) 
        end
    elseif cmdParams[1] == 'bp' then
        bp_commnad(cmdParams)
    elseif cmdParams[1] == 'spirit' then
        spirit_command()
    elseif cmdParams[1] =='BloadPactText' then
        if state.BloadPactText.value then
            showText()
        else
            hideText()
        end
    end
end

function job_buff_change(buff, gain)
    if buff == "睡眠" then
        if gain then -- 睡眠状態
            equip({main="プライムスタッフ"})
        end
    elseif buff == "アストラルパッセージ" then
        if gain then
            equip(sets.midcast.Pet.AvatarPhysicalPacts)
            disable(all)
        else
            enable(all)
            if player.status == 'Idle'then 
                equip(get_idle_set()) 
            else
                equip(get_melee_set()) 
            end
        end
    end
end

装備セット


function init_gear_sets()
    lockstyleset = 141

    sets.idle = {
        main={ name="エスピリトゥス", augments={'Summoning magic skill +15','Pet: Mag. Acc.+30','Pet: Damage taken -4%',}},
        sub="エランストラップ+1",
        ammo="ストンチタスラム+1",
        head="BCホーン+2",
        body="BCダブレット+2",
        hands="ニャメガントレ",
        legs="アシドゥイズボン+1",
        feet="バヤミサボ",
        neck="シビルスカーフ",
        waist="プラチナモグベルト",
        left_ear="パルーグピアス",
        right_ear={ name="ベコナーピアス+1", augments={'System: 1 ID: 1676 Val: 0','Pet: Accuracy+15 Pet: Rng. Acc.+15','Pet: Mag. Acc.+15','Damage taken-5%',}},
        left_ring="守りの指輪",
        right_ring="シュネデックリング",
        back="月明の羽衣",
    }
    
    sets.idle.Avatar = {
        main={ name="エスピリトゥス", augments={'Summoning magic skill +15','Pet: Mag. Acc.+30','Pet: Damage taken -4%',}},
        sub="エンキストラップ",
        ammo="ストンチタスラム+1",
        head="BCホーン+2",
        body="BCダブレット+2",
        hands="ニャメガントレ",
        legs="アシドゥイズボン+1",
        feet="バヤミサボ",
        neck="コーラーペンダント",
        waist="ルセデティサッシュ",
        left_ear="パルーグピアス",
        right_ear={ name="ベコナーピアス+1", augments={'System: 1 ID: 1676 Val: 0','Pet: Accuracy+15 Pet: Rng. Acc.+15','Pet: Mag. Acc.+15','Damage taken-5%',}},
        left_ring="守りの指輪",
        right_ring="シュネデックリング",
        back="月明の羽衣",
    }
    --エレメント待機装備
    sets.idle.Spirit       = set_combine(sets.idle.Avatar,{})
    --神獣の加護中
    sets.idle.Avatar.Favor = set_combine(sets.idle.Avatar,{})
    --神獣の攻撃中
    sets.idle.Avatar.Melee = set_combine(sets.idle.Avatar,{})  
    
    --履行短縮(バフ・デバフ)
    sets.precast.BloodPactWard = {
        ammo="エピタフサシェ",
        body="CNダブレット+2",
        feet="GLピガッシュ+1",
        back={ name="コンベイケープ", augments={'Summoning magic skill +4','Pet: Enmity+8','Blood Pact Dmg.+2','Blood Pact ab. del. II -2',}},
    }
    --履行短縮(物理履行・魔法履行)
    sets.precast.BloodPactRage = sets.precast.BloodPactWard

    sets.precast.FC = {
        ammo="サピエンスオーブ",
        head={ name="マーリンフード", augments={'"Mag.Atk.Bns."+24','"Fast Cast"+7','Mag. Acc.+1',}},
        body="インヤガジュバ+2",
        legs={ name="マーリンシャルワ", augments={'"Fast Cast"+6',}},
        feet={ name="マーリンクラッコー", augments={'"Fast Cast"+7','MND+5',}},
        neck="オルンミラトルク",
        waist="エンブラサッシュ",
        left_ear="マリグナスピアス",
        right_ear="エンチャンピアス+1",
        left_ring="キシャールリング",
        right_ring="メダダリング",
        back={ name="フィフォレケープ+1", augments={'Path: A',}},
    }
    
    --Relic
    sets.precast.JA['アストラルフロウ'] = {head="GLホーン+1"}
    --Empyrean
    sets.precast.JA['神獣の加護'] = {head="BCホーン+2"}
    sets.precast.JA['マナシード'] = {hads="BCブレーサー+2"}
    sets.precast.JA['エレメントサイフォン'] = {
        main={ name="エスピリトゥス", augments={'Summoning magic skill +15','Pet: Mag. Acc.+30','Pet: Damage taken -4%',}},
        head="BCホーン+2",
        body="バヤミローブ",
        hands="BCブレーサー+2",
        legs="BCスパッツ+2",
        feet="バヤミサボ",
        neck="インカンタートルク",
        waist="ルセデティサッシュ",
        left_ear="パルーグピアス",
        right_ear="ロードルピアス",
        left_ring="スティキニリング+1",
        right_ring="スティキニリング+1",
        back={ name="コンベイケープ", augments={'Summoning magic skill +4','Pet: Enmity+8','Blood Pact Dmg.+2','Blood Pact ab. del. II -2',}},
    }

    ---------------------------------------------------------------------------------------------------------------------------
    -- Midcast Sets
    ---------------------------------------------------------------------------------------------------------------------------    
    sets.midcast.Cure = {
        ammo="ストンチタスラム+1",
        head={ name="ヴァニヤフード", augments={'MP+50','"Cure" potency +7%','Enmity-6',}},
        body={ name="ロゼトジャズラン+1", augments={'Path: A',}},
        hands={ name="テルキネグローブ", augments={'"Cure" potency +7%','Enh. Mag. eff. dur. +10',}},
        legs="アシドゥイズボン+1",
        feet={ name="ヴァニヤクロッグ", augments={'MP+50','"Cure" potency +7%','Enmity-6',}},
        neck="オルンミラトルク",
        waist="コーネリアの黒帯",
        left_ear="シテレアパール",
        left_ring="スティキニリング+1",
        right_ring="スティキニリング+1",
        back="ソレムニティケープ",
    }
    
    sets.midcast['強化魔法'] = {
        head={ name="テルキネキャップ", augments={'"Conserve MP"+5','Enh. Mag. eff. dur. +10',}},
        body={ name="テルキネシャジュブ", augments={'"Conserve MP"+5','Enh. Mag. eff. dur. +10',}},
        hands={ name="テルキネグローブ", augments={'"Cure" potency +7%','Enh. Mag. eff. dur. +10',}},
        legs={ name="テルキネブラコーニ", augments={'"Conserve MP"+5','Enh. Mag. eff. dur. +10',}},
        feet={ name="テルキネピガッシュ", augments={'"Conserve MP"+5','Enh. Mag. eff. dur. +10',}},
        waist="エンブラサッシュ",
    }

    --魔法履行
    sets.midcast.Pet.AvatarMagicalPacts = {
        main={ name="エスピリトゥス", augments={'Summoning magic skill +15','Pet: Mag. Acc.+30','Pet: Damage taken -4%',}},
        sub="エランストラップ+1",
        ammo="エピタフサシェ",
        head="パルーグクラウン",
        body="BCダブレット+2",
        hands="BCブレーサー+2",
        legs="GLスパッツ+3",
        feet="ブンジサボ",
        neck="召喚士の首輪+2",
        waist="王将の帯",
        left_ear="パルーグピアス",
        right_ear={ name="ベコナーピアス+1", augments={'System: 1 ID: 1676 Val: 0','Pet: Accuracy+15 Pet: Rng. Acc.+15','Pet: Mag. Acc.+15','Damage taken-5%',}},
        left_ring="ヴァラールリング+1",
        right_ring="ヴァラールリング+1",
        back={ name="カンペストレケープ", augments={'Pet: Acc.+20 Pet: R.Acc.+20 Pet: Atk.+20 Pet: R.Atk.+20',}},
    }
    
    --物理履行
    sets.midcast.Pet.AvatarPhysicalPacts = {
        main={ name="エスピリトゥス", augments={'Summoning magic skill +15','Pet: Mag. Acc.+30','Pet: Damage taken -4%',}},
        sub="エランストラップ+1",
        ammo="エピタフサシェ",
        head="パルーグクラウン",
        body="BCダブレット+2",
        hands="BCブレーサー+2",
        legs="BCスパッツ+2",
        feet="ブンジサボ",
        neck="召喚士の首輪+2",
        waist="インカーネトサッシュ",
        left_ear="パルーグピアス",
        right_ear={ name="ベコナーピアス+1", augments={'System: 1 ID: 1676 Val: 0','Pet: Accuracy+15 Pet: Rng. Acc.+15','Pet: Mag. Acc.+15','Damage taken-5%',}},
        left_ring="ヴァラールリング+1",
        right_ring="ヴァラールリング+1",
        back={ name="カンペストレケープ", augments={'Pet: Acc.+20 Pet: R.Acc.+20 Pet: Atk.+20 Pet: R.Atk.+20',}},
    }

    --バフ履行
    sets.midcast.Pet.AvatarBuffWard = {
        main={ name="エスピリトゥス", augments={'Summoning magic skill +15','Pet: Mag. Acc.+30','Pet: Damage taken -4%',}},
        head="BCホーン+2",
        body="バヤミローブ",
        hands={ name="GLブレーサー+3", augments={'Inc. Sp. "Blood Pact" magic burst dmg.',}},
        legs="BCスパッツ+2",
        feet="バヤミサボ",
        neck="インカンタートルク",
        waist="ルセデティサッシュ",
        left_ear="パルーグピアス",
        right_ear="ロードルピアス",
        left_ring="スティキニリング+1",
        right_ring="スティキニリング+1",
        back={ name="コンベイケープ", augments={'Summoning magic skill +4','Pet: Enmity+8','Blood Pact Dmg.+2','Blood Pact ab. del. II -2',}},
    }
    --デバフ履行
    sets.midcast.Pet.AvatarDeBuffWard = set_combine(sets.midcast.Pet.AvatarBuffWard,{})
    -- 復履行
    sets.midcast.Pet.AvatarCure = set_combine(sets.midcast.Pet.AvatarBuffWard,{})

    sets.midcast.Pet['白魔法'] = sets.midcast.Pet.AvatarMagicalPacts 
    sets.midcast.Pet['精霊魔法'] = sets.midcast.Pet.AvatarMagicalPacts 
    sets.midcast.Pet['精霊魔法'].Resistant = sets.midcast.Pet.AvatarMagicalPacts


end

召喚獣定義ファイル

bp = {}
bp['Carbuncle'] = {
    rage = {
        [1] = {name='ポイズンネイル', desc='突属性物理(貫通)'},
        [2] = {name='プチメテオ', desc='光属性'},
        [3] = {name='ホーリーミスト', desc='光属性'},
    },
    ward = {
        buff = {
            [1] = {name='ルビーの輝き', desc='物理・魔法防御UP'},
            [2] = {name='ルビーの癒しII', desc='範囲HP回復'},
            [3] = {name='ルビーの安らぎ', desc='状態異常回復'},
            [4] = {name='ルビーの贖罪', desc='敵対心減少'},
            [5] = {name='ルビーの煌き', desc='ステータスUP'},
            [6] = {name='ルビーの癒し', desc='HP回復'},
        },
    },
    astralflow = {
        [1] = {name='シアリングライト', desc='光属性'},
    },
}
bp['Titan'] = {
    rage = {
        [1] = {name='クラッグスロー', desc='斬属性遠隔(重力/切断),スロウ'},
        [2] = {name='ジオクラッシュ', desc='土属性, スタン'},
        [3] = {name='マウンテンバスター', desc='打属性物理(重力/効果),バインド'},
        [4] = {name='メガリススロー', desc='斬属性遠隔(硬化),スロウ'},
        [5] = {name='ロックバスター', desc='打属性物理(振動),バインド'},
        [6] = {name='ロックスロー', desc='斬属性遠隔(切断),スロウ'},
        [7] = {name='ストーンII', desc='土属性'},
        [8] = {name='ストーンIV', desc='土属性'},
    },
    ward = {
        buff = {
            [1] = {name='大地の守り', desc='範囲ストンスキン'},
            [2] = {name='大地の鎧', desc='範囲大ダメ軽減'},
        },
    },
    astralflow = {
        [1] = {name='アースフューリー', desc='土属性'},
    },
}
bp['Leviathan'] = {
    rage = {
        [1] = {name='スピニングダイブ', desc='斬属性物理(湾曲/炸裂)'},
        [2] = {name='グランドフォール', desc='水属性'},
        [3] = {name='テールウィップ', desc='打属性物理(炸裂),ヘヴィ'},
        [4] = {name='バラクーダダイブ', desc='斬属性物理(振動)'},
        [7] = {name='ウォータII', desc='水属性'},
        [8] = {name='ウォータIV', desc='水属性'},
    },
    ward = {
        buff = {
            [1] = {name='湧水', desc='範囲HP状態異常回復'},
            [2] = {name='スージングカレント', desc='被ケアル回復量UP'},
        },
        debuff = {
            [1] = {name='スロウガ', desc='範囲スロウ'},
            [2] = {name='タイダルロア', desc='範囲攻撃力DOWN'},
        }
    },
    astralflow = {
        [1] = {name='タイダルウェイブ', desc='水属性'},
    },
}
bp['Garuda'] = {
    rage = {
        [1] = {name='プレデタークロー', desc='斬属性3回(分解/切断)'},
        [2] = {name='ウインドブレード', desc='風属性'},
        [3] = {name='クロー', desc='突属性物理(炸裂)'},
        [7] = {name='エアロII',desc='風属性'},
        [8] = {name='エアロIV', desc='風属性'},
    },
    ward = {
        buff = {
            [1] = {name='ヘイスガII', desc='範囲ヘイストII'},
            [2] = {name='風の囁き', desc='範囲HP回復'},
            [3] = {name='真空の鎧', desc='範囲ブリンク'},
            [4] = {name='真空の具足', desc='範囲移動速度UP'},
            [5] = {name='ヘイスガ', desc='範囲ヘイスト'},
        },
    },
    astralflow = {
        [1] = {name='エリアルブラスト', desc='風属性'},
    },
}
bp['Ifrit'] = {
    rage = {
        [1] = {name='フレイムクラッシュ', desc='格闘属性3回+火属性(核熱/振動)'},
        [2] = {name='メテオストライク', desc='火属性'},
        [3] = {name='コンフラグストライク', desc='火属性,バーン'},
        [4] = {name='ダブルパンチ', desc='打属性2回(収縮)'},
        [5] = {name='バーニングストライク', desc='打属性+火属性(振動)'},
        [6] = {name='パンチ', desc='打属性物理(溶解)'},
        [7] = {name='ファイアII', desc='火属性'},
        [8] = {name='ファイアIV', desc='火属性'},
    },
    ward = {
        buff = {
            [1] = {name='紅蓮の咆哮', desc='範囲ウォークライ'},
            [2] = {name='灼熱の咆哮', desc='範囲エンファイア'},
        },
    },
    astralflow = {
        [1] = {name='インフェルノ', desc='火属性'},
    },
}
bp['Shiva'] = {
    rage = {
        [1] = {name='ラッシュ', desc='格闘属性5回(湾曲/切断)'},
        [2] = {name='ヘヴンリーストライク', desc='氷属性'},
        [3] = {name='ダブルスラップ', desc='打属性2回(切断)'},
        [4] = {name='アクスキック', desc='打属性物理(硬化)'},
        [7] = {name='ブリザドII', desc='氷属性'},
        [8] = {name='ブリザドIV', desc='氷属性'},
    },
    ward = {
        buff = {
            [1] = {name='クリスタルブレシング', desc='範囲TPボーナス+250'},
            [2] = {name='凍てつく鎧', desc='範囲アイススパイク'},
        },
        debuff = {
            [1] = {name='スリプガ', desc='範囲睡眠'},
            [2] = {name='ダイヤモンドストーム', desc='回避率DOWN'},
        }
    },
    astralflow = {
        [1] = {name='ダイヤモンドダスト', desc='氷属性'},
    },
}
bp['Ramuh'] = {
    rage = {
        [1] = {name='ボルトストライク', desc='打属性3回(分解/切断),スタン'},
        [2] = {name='サンダースパーク', desc='範囲雷属性, 麻痺'},
        [3] = {name='サンダーストーム', desc='雷属性'},
        [4] = {name='カオスストライク', desc='打属性3回(分解/貫通),スタン'},
        [5] = {name='ショックストライク', desc='打属性物理(衝撃),スタン'},
        [7] = {name='サンダーII', desc='雷属性'},
        [8] = {name='サンダーIV', desc='雷属性'},
    },
    ward = {
        buff ={
            [1] = {name='雷鼓', desc='範囲エンサンダー'},
            [2] = {name='雷電の鎧', desc='範囲ショックスパイク'},
        },
        debuff = {
            [1] = {name='スタンガ', desc='範囲スタン'},
        }
    },
    astralflow = {
        [1] = {name='ジャッジボルト', desc='雷属性'},
    },
}
bp['Fenrir'] = {
    rage = {
        [1] = {name='エクリプスバイト', desc='斬属性3回(重力/切断)'},
        [2] = {name='インパクト', desc='闇属性, 全ステータスDOWN'},
        [3] = {name='ルナーベイ', desc='闇属性'},
        [4] = {name='クレセントファング', desc='突属性物理(貫通),麻痺'},
        [5] = {name='ムーンリットチャージ', desc='打属性物理(収縮),暗闇'},
    },
    ward = {
        buff = {
            [1] = {name='上弦の唸り', desc='範囲ステータスUP'},
            [2] = {name='下弦の咆哮', desc='命中, 回避率UP'},
            [3] = {name='ヘヴンズハウル', desc='HPまたはMP吸収'},
        },
        debuff = {
            [1] = {name='ルナークライ', desc='命中, 回避率DOWN'},
            [2] = {name='ルナーロア', desc='2効果ディペル'},
        }
    },
    astralflow = {
        [1] = {name='ハウリングムーン', desc='闇属性'},
    },
}
bp['Diabolos'] = {
    rage = {
        [1] = {name='ブラインドサイド', desc='格闘属性物理(重力/貫通)'},
        [2] = {name='ナイトテラー', desc='闇属性'},
        [3] = {name='ネザーブラスト', desc='闇属性'},
        [4] = {name='カミサドー', desc='打属性物理(収縮)'},
    },
    ward = {
        buff = {
            [1] = {name='ドリームシュラウド', desc='魔攻, 魔防UP'},
            [2] = {name='ノクトシールド', desc='範囲ファランクス'},
        },
        debuff = {
            [1] = {name='ソ\\ムノレンス', desc='範囲ヘヴィ'},
            [2] = {name='アルティメットテラー', desc='範囲ステータスDOWN'},
            [3] = {name='パボルノクターナス', desc='デス'}
        },
    },
    astralflow = {
        [1] = {name='ルイナスオーメン', desc='HP割合ダメ'},
    },
}
bp['Cait Sith'] = {
    rage = {
        [1] = {name='リーガルガッシュ', desc='斬属性3回(湾曲/炸裂)'},
        [2] = {name='レベル?ホーリー', desc='光属性'},
        [3] = {name='リーガルスクラッチ', desc='斬属性3回(切断)'},
    },
    ward = {
        buff = {
            [1] = {name='レイズII', desc=''},
            [2] = {name='リレイズII', desc=''},
        },
        debuff = {
            [1] = {name='ミュインララバイ', desc='範囲睡眠, TPリセット'},
            [2] = {name='イアリーアイ', desc='静寂, アムネジア(視線判定)'},
        }
    },
    astralflow = {
        [1] = {name='アルタナフェーバー', desc='範囲アレイズ, リレイズ'},
    },
}
bp['Odin'] = {
    rage = {},
    ward = {
        buff = {},
        debuff = {}
    },
    astralflow = {
        [1] = {name='斬鉄剣', desc='範囲デス'},
    },
}
bp['Alexander'] ={
    rage = {},
    ward = {
        buff = {},
        debuff = {}
    },
    astralflow = {
        [1] = {name='絶対防御', desc='被ダメカット, レジスト率UP'},
    },
}
bp['Atomos'] = {
    rage = {},
    ward = {
        buff = {},
        debuff = {}
    },
    astralflow = {
        [1] = {name='ディコンストラクション', desc='強化吸収'},
        [2] = {name='クロノスフト', desc='強化付与'},
    },
}
bp['Siren'] = {
    rage = {
        [1] = {name='ヒステリックアサルト', desc='突属性3回(分解/貫通),HP吸収'},
        [2] = {name='ソ\\ニックバフェット', desc='風属性,ディスペル'},
        [3] = {name='ラウンドハウス', desc='打属性'},
        [4] = {name='ウェルト', desc='斬属性'},
        [7] = {name='トルネドII', desc='風属性'},
    },
    ward = {
        buff ={
            [1] = {name='風の守り', desc='範囲魔法バリア'},
            [2] = {name='シヌーク', desc='範囲アクアベール'},
            [3] = {name='疾風の刃', desc='範囲エンエアロ'},
        },
        debuff = {
            [1] = {name='ルナティックボイス', desc='範囲静寂'},
            [2] = {name='修羅のエレジー', desc='エレジー'},
        }
    },
    astralflow = {
        [1] = {name='クラーサクコール', desc='風属性'},
    },
}

bp_physical=S{'パンチ','ロックスロー','バラクーダダイブ','クロー','アクスキック','ショックストライク','カミサドー','リーガルスクラッチ','ポイズンネイル',
            'ムーンリットチャージ','クレセントファング','ロックバスター','テールウィップ','ダブルパンチ','メガリススロー','ダブルスラップ','エクリプスバイト',
            'マウンテンバスター','スピニングダイブ','プレデタークロー','ラッシュ','カオスストライク','クラッグスロー','ボルトストライク','リーガルガッシュ',
            'クラッグスロー','ブラインドサイド','ヒステリックアサルト','ラウンドハウス','ウェルト'}

bp_hybrid=S{'バーニングストライク','フレイムクラッシュ'}

bp_magical=S{'インフェルノ','アースフューリー','タイダルウェイブ','エリアルブラスト','ダイヤモンドダスト','ジャッジボルト','シアリングライト','ハウリングムーン',
            'ルイナスオーメン','ファイアII','ストーンII','ウォータII','エアロII','ブリザドII','サンダーII','サンダースパーク','ソムノレンス',
            'プチメテオ','ファイアIV','ストーンIV','ウォータIV','エアロIV','ブリザドIV','サンダーIV','ネザーブラスト','メテオストライク',
            'ジオクラッシュ','グランドフォール','ウインドブレード','ヘヴンリーストライク','サンダーストーム','レベル?ホーリー','ホーリーミスト','ルナーベイ',
            'ナイトテラー','コンフラグストライク','斬鉄剣','インパクト','ソニックバフェット','トルネドII'}

bp_debuff=S{'ルナークライ','ミュインララバイ','ナイトメア','ルナーロア','スロウガ','アルティメットテラー','スリプガ','イアリーアイ','タイダルロア',
            'ダイヤモンドストーム','スタンガ','パボルノクターナス','ルナティックボイス','修羅のエレジー'}

bp_buff=S{'ルビーの輝き','凍てつく鎧','雷鼓','紅蓮の咆哮','電雷の鎧','上弦の唸り','ヘイスガ','ノクトシールド',
            '下弦の咆哮','ドリームシュラウド','大地の守り','真空の具足','灼熱の咆哮','ルビーの安らぎ','ヘヴンズハウル',
            'ルビーの煌き','ヘイスガII','クリスタルブレシング','真空の鎧','大地の鎧','スージングカレント','絶対防御','風の守り','シヌーク','疾風の刃'}

bp_other=S{'ルビーの癒し','レイズII','リレイズII','風の囁き','ルビーの贖罪','湧水','ルビーの癒しII','アルタナフェーバー'}

avatar_list=S{'Shiva','Ramuh','Garuda','Leviathan','Diabolos','Titan','Fenrir','Ifrit','Carbuncle','Fire Spirit','Air Spirit','Ice Spirit',
            'Thunder Spirit','Light Spirit','Dark Spirit','Earth Spirit','Water Spirit','Cait Sith','Alexander','Odin','Atomos'}

spirit_element = {}
spirit_element['火']='火精霊召喚'
spirit_element['土']='土精霊召喚'
spirit_element['水']='水精霊召喚'
spirit_element['風']='風精霊召喚'
spirit_element['氷']='氷精霊召喚'
spirit_element['雷']='雷精霊召喚'
spirit_element['光']='光精霊召喚'
spirit_element['闇']='闇精霊召喚'

-- 弱天候
weather = {}
weather['熱波'] = '火'
weather['雨'] = '水'
weather['雷'] = '雷'
weather['砂塵'] = '土'
weather['風'] = '風'
weather['雪'] = '氷'
weather['オーロラ'] = '光'
weather['妖霧'] = '闇'

-- 強天候
weather_strong = {}
weather_strong['灼熱波'] = '火'
weather_strong['スコール'] = '水'
weather_strong['雷雨'] = '雷'
weather_strong['砂嵐'] = '土'
weather_strong['暴風'] = '風'
weather_strong['吹雪'] = '氷'
weather_strong['神光'] = '光'
weather_strong['闇'] = '闇'

-- 弱点属性
weaken_element = {}
weaken_element['火'] = '水'
weaken_element['水'] = '雷'
weaken_element['雷'] = '土'
weaken_element['土'] = '風'
weaken_element['風'] = '氷'
weaken_element['氷'] = '火'
weaken_element['光'] = '闇'
weaken_element['闇'] = '光'

--[[
//gs c bp rage [number] [target]
//gs c bp ward buff [number] [target]
//gs c bp ward debuff [number] [target]
//gs c bp astralflow [number] [target]
    target: t, st
]]
function bp_commnad(args)
    if args[1]:lower() == 'bp' then
        if not pet.isvalid then
            windower.add_to_chat(122,'No avatar currently available.')
            return
        end

        if not args[2] then
            windower.add_to_chat(123,'No bp type given.')
            return
        end

        local bp_type = args[2]:lower()

        if bp_type == 'rage' or bp_type == 'astralflow' then

            if bp_type == 'astralflow' and not buffactive['アストラルフロウ'] then
                windower.add_to_chat(122,'Cannot use Astral Flow Blood Pact at this time.')
                return
            end

            if not args[3] then
                windower.add_to_chat(123,'No bp number given.')
                return
            end

            local rage_number = tonumber(args[3])

            if not bp[pet.name][bp_type][rage_number] then
                windower.add_to_chat(123,'Unknown rage type: '..tostring(bp_type)..' '..tostring(rage_number))
                return
            end

            if not args[4] then
                windower.add_to_chat(123,'No target given.')
                return
            end

            local target = args[4]:lower()

            if target ~= 't' and target ~= 'st' then
                windower.add_to_chat(123,'Invalid target: '..tostring(target))
				return
            end

            local bp_name = bp[pet.name][bp_type][rage_number]['name']
            local target_type = gearswap.res.job_abilities:with('ja', bp_name:gsub('\\','')).targets
            -- windower.add_to_chat(122, pacts[pact][pet.name])
            local target_str = '<me>'
            if target_type['Enemy'] then
                if target == 'st' then
                    target_str = '<stnpc>'
                else
                    target_str = '<t>'
                end
            elseif target_type['Party'] then
                if target == 'st' then
                    target_str = '<stpc>'
                else
                    target_str = '<t>'
                end
            elseif target_type['Self'] then
                if target == 'st' then
                    target_str = '<stpc>'
                else
                    target_str = '<me>'
                end
            else
                target_str = '<st>'
            end

            -- windower.add_to_chat(122,pacts[pact][pet.name]..' '..target_str)
            send_command('input /pet '..windower.to_shift_jis(bp[pet.name][bp_type][rage_number]['name'])..' '..target_str)

        elseif bp_type == 'ward' then
            if not args[3] then
                windower.add_to_chat(123,'No ward type given.')
                return
            end
            local ward_type = args[3]:lower()

            if not args[4] then
                windower.add_to_chat(123,'No bp number given.')
                return
            end

            local ward_number = tonumber(args[4])

            if not bp[pet.name][bp_type][ward_type][ward_number] then
                windower.add_to_chat(123,'Unknown ward type: '..tostring(bp_type)..' '..tostring(ward_type)..' '..tostring(ward_number))
                return
            end

            if not args[5] then
                windower.add_to_chat(123,'No target given.')
                return
            end

            local target = args[5]:lower()

            if target ~= 't' and target ~= 'st' then
                windower.add_to_chat(123,'Invalid target: '..tostring(target))
				return
            end

            local bp_name = bp[pet.name][bp_type][ward_type][ward_number]['name']
            local target_type = gearswap.res.job_abilities:with('ja', bp_name:gsub('\\','')).targets
            -- windower.add_to_chat(122, pacts[pact][pet.name])
            local target_str = '<me>'
            if target_type['Enemy'] then
                if target == 'st' then
                    target_str = '<stnpc>'
                else
                    target_str = '<t>'
                end
            elseif target_type['Party'] then
                if target == 'st' then
                    target_str = '<stpc>'
                else
                    target_str = '<t>'
                end
            elseif target_type['Self'] then
                if target == 'st' then
                    target_str = '<stpc>'
                else
                    target_str = '<me>'
                end
            else
                target_str = '<st>'
            end

            -- windower.add_to_chat(122,pacts[pact][pet.name]..' '..target_str)
            send_command('input /pet '..windower.to_shift_jis(bp[pet.name][bp_type][ward_type][ward_number]['name'])..' '..target_str)
        else
            windower.add_to_chat(123,'Invalid bp type: '..tostring(bp_type))
        end

    end
end

function spirit_command()
    local w_strong = weather_strong[world.weather]
    local w_normal = weather[world.weather]
    local spirit_str = spirit_element[world.day_element]
    if w_strong then
        spirit_str = spirit_element[w_strong]
    elseif w_normal and world.day_element ~= weaken_element[w_normal] then
        spirit_str = spirit_element[w_normal]
    else
        spirit_str = spirit_element[world.day_element]
    end

    send_command('input /magic '..windower.to_shift_jis(spirit_str)..' <me>')
end

local texts = require('texts')
bp_box = texts.new('${name}\n${hpp}%\n神獣の加護: ${favor_state}\n契約の履行:\n${pact}',{text={font='meiryo', size=9}, pos={x=30, y=150}, padding = 5, bg={alpha=180}})

function showText()
    bp_box:show()
end

function hideText()
    bp_box:hide()
end
function bp_update()
    if buffactive['神獣の加護'] then
        bp_box.favor_state = '\\cs(50,50,255)ON\\cr'
    else
        bp_box.favor_state = '\\cs(255,50,50)OFF\\cr'
    end
    local lines = L{}
    bp_box.pact = ''
    if pet.name then
        bp_box.name = pet.name
        bp_box.hpp = pet.hpp

        if bp[pet.name] then
--            lines:append('Rage(幻術)')
--            if bp[pet.name]['rage'] then
--                -- for i,v in ipairs(bp[pet.name]['rage']) do
--                --     lines:append('%s: %s: %s':format(i,v['name'], v['desc']))
--                -- end
--                for i = 1, 8 do
--                    local v = bp[pet.name]['rage'][i]
--                    if v then
--                        lines:append('%s: %s: %s':format(i,v['name'], v['desc']))
--                    end
--                end
--            end
--            lines:append('')
--            lines:append('Ward(験術)')
            if bp[pet.name]['ward']['buff'] then
                lines:append('Buff:')
                for i,v in ipairs(bp[pet.name]['ward']['buff']) do
                    lines:append('%s: %s: %s':format(i,v['name'], v['desc']))
                end
            end
            lines:append('')
            if bp[pet.name]['ward']['debuff'] then
                lines:append('Debuff:')
                for i,v in ipairs(bp[pet.name]['ward']['debuff']) do
                    lines:append('%s: %s: %s':format(i,v['name'], v['desc']))
                end
            end
--            lines:append('')
--            lines:append('アストラルフロー')
--            if bp[pet.name]['astralflow'] then
--                for i,v in ipairs(bp[pet.name]['astralflow']) do
--                    lines:append('%s: %12s: %s':format(i,v['name'], v['desc']))
--                end
--            end
        end
    else
        bp_box.name = 'No Avatar'
        bp_box.hpp = '0'
    end
    if lines:length() > 0 then
        bp_box.pact = lines:concat('\n')
    end
end

function bp_destroy()
    bp_box:destroy()
end

local update_time = 0
local update_interval = 1
-- windower.register_event('prerender', function()
--     local curr = os.clock()
--     if curr > frame_time + update_interval then
--         frame_time = curr
--         bp_update()
--     end
-- end)

windower.register_event('time change', function(new, old)
    local curr = os.clock()
    if curr > update_time + update_interval then
        update_time = curr
        bp_update()
    end
end)
ちょっとだけPR

コメント

コメント一覧 (4件)

  • お世話になっております
    こちらのコードをマルっとコピペしたところ6行目にエラーが出ている模様?
    6行目を削除( main={ name=エスピリトゥス, ~~)してみた所やはり同じエラーが出ます
    GearSwap:Error Loading file (smn_gear.lua):…Progeam_Files(x86)~~/smn_gear.lua]6:unexpec($I

    エラー画像
    https://tadaup.jp/1a7f7fb20.png
    パス:0120

    • こちらでは再現できない系のエラーですね。
      今現在も普通に動いています。

      Mote-Utilityの556行目を見ると、装備プロパティを取得しているような箇所でエラーになったように思えます。
      6行目のmain={ name=”エスピリトゥス”, augments={‘Summoning magic skill +15′,’Pet: Mag. Acc.+30′,’Pet: Damage taken -4%’,}},
      を削除してエラーが出る理由が分かりません。

      ごくまれにWindower自体が不具合っぽい動きをすることがあるので、次を試してみてください。
      ①エスピリトゥス以外の武器に書き換え(プロパティ属性のない武器でコード内の全箇所)
      ②エスピリトゥスのプロパティ属性を消す(main=”エスピリトゥス”,
      ③Windowerの再起動
      ④PCの再起動

      よろしくお願いします。

  • いつもありがとうございます

    装備ファイルの一部の部分が何の仕事してるのかが、いまいちピントきてません
    ご教示ください

    function init_gear_sets()
    – ジョブに変えたときに装備するロックスタイルセット
    lockstyleset = 141
    – アビリティ使用時優先する装備
    sets.precast.JA[‘アストラルフロウ’] = {}
    sets.precast.JA[‘エレメントサイフォン’] = {}
    sets.precast.JA[‘マナシード’] = {}
    sets.precast.JA[‘神獣の加護’] = {}
    – デフォルト装備
    sets.idle = { }
    – ペットがいる時装備
    sets.idle.Avatar = { }
    – エレが居る時↑の装備になる
    sets.idle.Spirit = sets.idle.Avatar
    – ?
    sets.idle.Avatar.Favor = sets.idle.Avatar
    – ?
    sets.idle.Avatar.Melee = sets.idle.Avatar

    –履行短縮
    – 契約の履行使用前 ?
    sets.precast.BloodPactWard = { }
    – 契約の履行使用前 ?
    sets.precast.BloodPactRage = sets.precast.BloodPactWard

    –ファストキャスト装備
    sets.precast.FC = { }

    —————————————————————————————————————————
    — Midcast Sets 詠唱中装備
    —————————————————————————————————————————
    –ケアル詠唱時
    sets.midcast.Cure = {  }
    –強化魔法詠唱時
    sets.midcast[‘強化魔法’] = { }
    – 契約の履行(魔法着弾時)
    sets.midcast.Pet.AvatarMagicalPacts = { }
    – 契約の履行(物理着弾時)
    sets.midcast.Pet.AvatarPhysicalPacts = { }
    –不明
    sets.midcast.Pet.AvatarBuffWard = { }

    sets.midcast.Pet.AvatarCure = set_combine(sets.midcast.Pet.AvatarBuffWard,{})
    sets.midcast.Pet.AvatarDeBuffWard = set_combine(sets.midcast.Pet.AvatarBuffWard,{})

    — Spirits cast magic spells, which can be identified in standard ways.
    sets.midcast.Pet[‘白魔法’] = sets.midcast.Pet.AvatarMagicalPacts
    sets.midcast.Pet[‘精霊魔法’] = sets.midcast.Pet.AvatarMagicalPacts
    sets.midcast.Pet[‘精霊魔法’].Resistant = sets.midcast.Pet.AvatarMagicalPacts

    • ?マークが付いている箇所について返答します。

      ①sets.idle.Avatar.Favor = sets.idle.Avatar
      神獣の加護時の装備セットです。
      ただし、sets.idle.AvatarでBCホーンをセットしているなら、この定義を利用する必要はありません。
      カスタイズ用の定義です。利用しなくて問題ありません。

      ②sets.idle.Avatar.Melee = sets.idle.Avatar
      神獣の攻撃用の定義です。
      ペット命中など、ペットの通常攻撃に装備に着替える際のカスタマイズにお使いください。
      私はペットで通常攻撃をすることがないので、これらの定義を利用していません。
      どこかからのコピペで組んだのだと思うのですが、使ったことがないので正しく機能するか確認していません。

      ③sets.precast.BloodPactWard = { }
      契約の履行前 バフ・デバフ履行の短縮装備セットです。

      ④sets.precast.BloodPactRage = sets.precast.BloodPactWard
      契約の履行前 物理・魔法履行の短縮装備セットです。

      ⑤sets.midcast.Pet.AvatarBuffWard
      バフ・デバフの装備セットです。
      主に召喚スキルをブーストするために使います。

コメントする

目次