【GearSwap】魔道剣士のMote-libs用コード

魔道剣士のMote-libsコードです。

目次

ソースコード

ファイル構成

GearSwap/
  └ data/
    ├ Common.lua(共通ファイル
    ├ RUN.lua(ジョブロジック)
    └ キャラクター名/
      └ RUN_gear.lua(装備定義)

ジョブロジック

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

function job_setup()
    Initialize()
    state.Buff['エンボルド']       = buffactive['エンボルド'] or false
    state.Buff['ファストキャスト'] = buffactive['ファストキャスト'] or false
end

function user_setup()
    -- gs c cycle OffenseMode
    state.OffenseMode:options('Normal','Stp','Parry')
    
    -- gs c cycle IdleMode
    state.IdleMode:options('Normal','Refresh')
    
    -- gs c cycle MainWeapons
    state.MainWeapons  = M{'Epeolatry'}

    -- gs c cycle SubWeapons
    state.SubWeapons  = M{'Khonsu','BalaramaGrip'}

    -- gs c cycle RuneText
    state.RuneText = M(false, 'ルーン')
end

function user_unload()
    text_destroy()          
end

function user_post_midcast(spell, action, spellMap, eventArgs)
    if spell.skill == '強化魔法' then
        if state.Buff['エンボルド'] then
            equip(sets.buff['エンボルド'])
        end
    end
end


function job_post_midcast(spell, action, spellMap, eventArgs) 
    local fc=70/100
    if buffactive['ファストキャスト'] then
        --フサルクトラウザ装備時メリポのインスパイア1につき+12%
        fc = fc + 12/100
    end
    if player.sub_job == '赤' then
        fc = fc + 15/100
    end
    if fc >= 80/100 then
        fc = 80/100
    end

    if string.find(spell.type, 'Magic') then
        equip(sets.Hpboost)

        equip(sets.midcast.interruption)
        local adjust=0.9
        local cast_time = (spell.cast_time*(1-fc))*adjust    
        
        if spellMap == 'Cure' then
            eventArgs.handled = true
            send_command('wait '..cast_time..'; gs equip sets.Hpboost; gs equip sets.midcast.Cure')

        elseif spellMap == 'Phalanx' then
            eventArgs.handled = true
            send_command('wait '..cast_time..'; gs equip sets.Hpboost; gs equip sets.midcast.Phalanx')

        elseif spellMap == 'Stoneskin' then
            eventArgs.handled = true
            send_command('wait '..cast_time..'; gs equip sets.Hpboost; gs equip sets.midcast.Stoneskin')

        elseif spellMap == 'Regen' then
            eventArgs.handled = true
            send_command('wait '..cast_time..'; gs equip sets.Hpboost; gs equip sets.midcast.Regen')

        elseif spell.skill == '強化魔法' then
            eventArgs.handled = true
            send_command('wait '..cast_time..'; gs equip sets.Hpboost; gs equip sets.midcast.EnhancingMagic')
        else
            eventArgs.handled = true
            send_command('wait '..cast_time..'; gs equip sets.Hpboost; gs equip sets.Enmity')
        end
    end
end

function job_buff_change(buff, gain)
    if buff == 'ファランクス' and not gain then
        windower.add_to_chat(167,'■■■■■ファランクス切れ■■■■■')

    elseif buff == 'バットゥタ' and gain then
        send_command('gs c set OffenseMode Parry')

    elseif buff == 'バットゥタ' and not gain then
        send_command('gs c set OffenseMode Normal')

    elseif buff == 'エンボルド' and gain then
        equip(sets.buff['エンボルド'])

    elseif buff == 'エンボルド' and not gain then
        send_command('gs c Idle')
    end
end

function customize_idle_set(idleSet)
    local weapon = customize_weapon_set()
    idleSet = set_combine(idleSet, weapon)
    if state.Buff['エンボルド']  then
        idleSet = set_combine(idleSet, sets.buff['エンボルド'] )
    end
    return idleSet
end

function customize_melee_set(meleeSet)
    local weapon = customize_weapon_set()
    meleeSet = set_combine(meleeSet, weapon)
    if state.Buff['エンボルド']  then
        idleSet = set_combine(idleSet, sets.buff['エンボルド'] )
    end
    return meleeSet
end

function customize_weapon_set()
    --武器のセット
    local weapon = nil
    weapon = set_combine(weapon,{main=sets.Weapons[state.MainWeapons.value]})
    weapon = set_combine(weapon,{sub=sets.Weapons[state.SubWeapons.value]})
    return weapon
end

function job_self_command(cmdParams, eventArgs)
    if cmdParams[1] == 'lockstyleset' then
        send_command('input /lockstyleset '..lockstyleset)

    elseif cmdParams[1] == 'Idle' then
        Idle()

    elseif cmdParams[1] == 'Medicine' then
        Medicine()

    elseif cmdParams[1] == 'Enmity' then
        ActionEnmity()
        --EnmityAll()
        
    elseif cmdParams[1] == 'EnmityRange' then
        ActionEnmityRange()

    elseif cmdParams[1] =='RuneText' then
        if state.RuneText.value then
            showText()
        else
            hideText()
        end
    end
end

local texts = require('texts')
message={
    [1] = {name='イグニス ', desc1='火:',desc2='(氷:',desc3='麻痺、バインド)'},
    [2] = {name='ゲールス ', desc1='氷:',desc2='(風:',desc3='静寂、ヘヴィ)'},
    [3] = {name='フラブラ ', desc1='風:',desc2='(土:',desc3='石化、テラー、スロウ)'},
    [4] = {name='テッルス ', desc1='土:',desc2='(雷:',desc3='スタン)'},
    [5] = {name='スルポール', desc1='雷:',desc2='(水:',desc3='毒)'},
    [6] = {name='ウンダ  ', desc1='水:',desc2='(火:',desc3='病気、悪疫、アムネジア)'},
    [7] = {name='ルックス ', desc1='光:',desc2='(闇:',desc3='呪い、睡眠)'},
    [8] = {name='テネブレイ', desc1='闇:',desc2='(光:',desc3='魅了、睡眠)'},
}
text_box = texts.new('${text}',{text={font='Meiryo', size=10}, pos={x=10, y=220}, padding = 5, bg={alpha=180}})
text_box.text='属性      耐性\n'..
'\\cs(255,128,128)'..message[1].desc1..message[1].name..message[1].desc2..message[1].desc3..'\\cr'..'\n'..
'\\cs(128,255,255)'..message[2].desc1..message[2].name..message[2].desc2..message[2].desc3..'\\cr'..'\n'..
'\\cs(128,255,128)'..message[3].desc1..message[3].name..message[3].desc2..message[3].desc3..'\\cr'..'\n'..
'\\cs(255,255,128)'..message[4].desc1..message[4].name..message[4].desc2..message[4].desc3..'\\cr'..'\n'..
'\\cs(255,128,255)'..message[5].desc1..message[5].name..message[5].desc2..message[5].desc3..'\\cr'..'\n'..
'\\cs(128,128,255)'..message[6].desc1..message[6].name..message[6].desc2..message[6].desc3..'\\cr'..'\n'..
'\\cs(255,255,255)'..message[7].desc1..message[7].name..message[7].desc2..message[7].desc3..'\\cr'..'\n'..
'\\cs(128,128,128)'..message[8].desc1..message[8].name..message[8].desc2..message[8].desc3..'\\cr'

function showText()
    text_box:show()
end

function hideText()
    text_box:hide()
end

function text_destroy()
    text_box:destroy()
end

装備定義

function init_weaponns()
    --デフォルト武器を設定
    send_command('gs c set MainWeapons Epeolatry')
    send_command('gs c set SubWeapons Khonsu')
end
function init_gear_sets()
    lockstyleset = 151

    sets.buff['エンボルド'] = {back="ディバートケープ"}
    
    sets.Weapons = {}
    sets.Weapons.Epeolatry              = {name="エピオラトリー"}
    sets.Weapons.BalaramaGrip           = {name="バララマグリップ"}
    sets.Weapons.Khonsu                 = {name="コーンスー"}
    
    sets.Hpboost={
		neck={ name="アンムーヴカラー+1",priority=14},
        waist={ name="プラチナモグベルト",priority=16},
        left_ring={ name="ゼラチナスリング+1", augments={'Path: A',},priority=13},
        right_ring={ name="月明の指輪",priority=12},
        back={ name="月明の羽衣",priority=15},
    }

    sets.Enmity = {
        ammo="アイアンゴベット",
        head="ハリタスヘルム",
        body="エメットハーネス+1",
        hands="クーリスグローブ",
        legs="ERレグガード+3",
        feet="ERグリーヴ+3",
        neck="月光の首飾り",
        waist={ name="プラチナモグベルト",priority=16},
        left_ear={ name="オノワイヤリング+1", augments={'Path: A',},priority=15},
        right_ear={ name="クリプティクピアス",priority=12},
        left_ring={ name="ゼラチナスリング+1", augments={'Path: A',},priority=14},
        right_ring={ name="アイワツリング",priority=13},
        back={ name="オーグマケープ", augments={'VIT+20','Eva.+20 /Mag. Eva.+20','VIT+10','Enmity+10','DEF+50',}},
	}

    sets.idle = {
        ammo="ストンチタスラム+1",
        head="無の面",
        body="ERサーコート+3",
        hands="ERガントレ+3",
        legs="ERレグガード+3",
        feet="ERグリーヴ+3",
        neck={ name="ウォーダチャーム+1", augments={'Path: A',}},
        waist={ name="プラチナモグベルト",priority=16},
        left_ear={ name="オノワイヤリング+1", augments={'Path: A',},priority=15},
        right_ear={ name="エリラズピアス+1", augments={'System: 1 ID: 1676 Val: 0','Accuracy+12','Mag. Acc.+12','Damage taken-4%',}},
        left_ring={name="ヴェクサーリング+1",priority=14},
        right_ring="シュネデックリング",
        back={ name="オーグマケープ", augments={'VIT+20','Eva.+20 /Mag. Eva.+20','VIT+10','Enmity+10','DEF+50',}},
    }

    sets.idle.Refresh = set_combine(sets.idle, {
        ammo="ストンチタスラム+1",
        head="無の面",
        body={ name="RNコート+3",hp=218,},
        hands={ name="ヘルクリアグローブ", augments={'Spell interruption rate down -6%','Attack+5','"Refresh"+2','Accuracy+8 Attack+8',}},
        legs={ name="ヘルクリアトラウザ", augments={'Pet: VIT+10','"Subtle Blow"+10','"Refresh"+2','Accuracy+8 Attack+8',}},
        feet={ name="ヘルクリアブーツ", augments={'"Mag.Atk.Bns."+17','STR+9','"Refresh"+2',}},
        neck="シビルスカーフ",
    })

	sets.idle.Physical = set_combine(sets.idle, {
		left_ring="フォテファイリング",
		right_ring="ワーデンリング"
	})

    sets.engaged = {
        ammo="ストンチタスラム+1",
        head="無の面",
        body="ERサーコート+3",
        hands="ERガントレ+3",
        legs="ERレグガード+3",
        feet="ERグリーヴ+3",
        neck={ name="アンムーヴカラー+1", augments={'Path: A',},priority=15},
        waist={ name="プラチナモグベルト",priority=16},
        left_ear="シェリダピアス",
        right_ear={ name="エリラズピアス+1", augments={'System: 1 ID: 1676 Val: 0','Accuracy+12','Mag. Acc.+12','Damage taken-4%',}},
        left_ring="シーリチリング+1",
        right_ring="シーリチリング+1",
        back={ name="オーグマケープ", augments={'VIT+20','Eva.+20 /Mag. Eva.+20','VIT+10','Enmity+10','DEF+50',}},
    }
    sets.engaged.Stp = {
        ammo="ストンチタスラム+1",
        head="無の面",
        body="アシェーラハーネス",
        hands={ name="アデマリスト+1", augments={'DEX+12','AGI+12','Accuracy+20',}},
        legs="ERレグガード+3",
        feet="ERグリーヴ+3",
        neck="コンバタントトルク",
        waist={ name="プラチナモグベルト",priority=16},
        left_ear="シェリダピアス",
        right_ear={ name="エリラズピアス+1", augments={'System: 1 ID: 1676 Val: 0','Accuracy+12','Mag. Acc.+12','Damage taken-4%',}},
        left_ring="シーリチリング+1",
        right_ring="シーリチリング+1",
        back="無の外装",
    }
    sets.engaged.Parry=set_combine(sets.engaged,{ head="無の面", hands="トゥルムミトン+1",legs="ERレグガード+3",feet="トゥルムレギンス+1",})
    
    --
    -- ■■■■■ precast ■■■■■
    --
    sets.precast.JA['E.スフォルツォ']       = set_combine(sets.Enmity,{body="FUコート+3"})
    sets.precast.JA['イグニス']             = set_combine(sets.Enmity,{})
    sets.precast.JA['ヴァリエンス']         = set_combine(sets.Enmity,{body="RNコート+3",legs="FUトラウザ+3"})
    sets.precast.JA['ヴァレション']         = set_combine(sets.Enmity,{body="RNコート+3",legs="FUトラウザ+3"})
    sets.precast.JA['ウンダ']               = set_combine(sets.Enmity,{})
    sets.precast.JA['エンボルド']           = set_combine(sets.Enmity,{})
    sets.precast.JA['オディリックサブタ']   = set_combine(sets.Enmity,{})
    sets.precast.JA['ガンビット']           = set_combine(sets.Enmity,{hands="RNミトン+3"})
    sets.precast.JA['ゲールス']             = set_combine(sets.Enmity,{})
    sets.precast.JA['スルポール']           = set_combine(sets.Enmity,{})
    sets.precast.JA['スワイプ']             = set_combine(sets.Enmity,{})
    sets.precast.JA['センチネル']           = set_combine(sets.Enmity,{})
    sets.precast.JA['ソードプレイ']         = set_combine(sets.Enmity,{hands="FUミトン+3"})
    sets.precast.JA['テッルス']             = set_combine(sets.Enmity,{})
    sets.precast.JA['テネブレイ']           = set_combine(sets.Enmity,{})
    sets.precast.JA['バットゥタ']           = set_combine(sets.Enmity,{head="FUバンド+3"})
    sets.precast.JA['ビベイシャス']         = set_combine(sets.Enmity,{head="ERガレア+3",legs="RNトラウザ+2",neck="インカンタートルク",left_ring="スティキニリング+1",right_ring="スティキニリング+1"})
    sets.precast.JA['フラブラ']             = set_combine(sets.Enmity,{})
    sets.precast.JA['フルーグ']             = set_combine(sets.Enmity,{feet="RNブーツ+2"})
    sets.precast.JA['ランジ']               = set_combine(sets.Enmity,{})
    sets.precast.JA['リエモン']             = set_combine(sets.Enmity,{})
    sets.precast.JA['ルックス']             = set_combine(sets.Enmity,{})
    sets.precast.JA['レイク']               = set_combine(sets.Enmity,{feet="FUブーツ+3"})
    sets.precast.JA['ワンフォアオール']     = set_combine(sets.Enmity,{})

    sets.precast.FC = {
        ammo="サピエンスオーブ",
        head="RNバンド+3",
        body="ERサーコート+3",
        hands={ name="レイライングローブ", augments={'Accuracy+15','Mag. Acc.+15','"Mag.Atk.Bns."+15','"Fast Cast"+3',}},
        legs={ name="ニャメフランチャ", augments={'Path: B',}},
        feet={ name="カマイングリーヴ", augments={'HP+60','STR+10','INT+10',}},
        neck="オルンミラトルク",
        waist={ name="プラチナモグベルト",priority=16},
        left_ear={ name="オノワイヤリング+1", augments={'Path: A',},priority=15},
        right_ear={ name="エテオレートピアス",priority=13},
        left_ring="メダダリング",
        right_ring={ name="月明の指輪",priority=14},
        back={ name="オーグマケープ", augments={'HP+60','Eva.+20 /Mag. Eva.+20','"Fast Cast"+10','Damage taken-5%',}},
    }
  
    sets.precast.WS.Critical = {
    }

    sets.precast.WS.Damage = {
        ammo="オシャシャの原論文",
        head="ニャメヘルム",
        body="ニャメメイル",
        hands="ニャメガントレ",
        legs="ニャメフランチャ",
        feet="ニャメソルレット",
        neck="無の喉輪",
        waist={ name="セールフィベルト+1", augments={'Path: A',}},
        left_ear="シェリダピアス",
        right_ear={ name="胡蝶のイヤリング", augments={'Accuracy+4','TP Bonus +250',}},
        left_ring="イラブラットリング",
        right_ring="王将の指輪",
        back="無の外装",
    }

    sets.precast.WS.Magic = {
        ammo="コイストボダー",
        head="ニャメヘルム",
        body="ニャメメイル",
        hands="ニャメガントレ",
        legs="ニャメフランチャ",
        feet="ニャメソルレット",
        neck="シビルスカーフ",
        waist={ name="セールフィベルト+1", augments={'Path: A',}},
        left_ear={ name="胡蝶のイヤリング", augments={'Accuracy+4','TP Bonus +250',}},
        right_ear="フリオミシピアス",
        left_ring={ name="メタモルリング+1", augments={'Path: A',}},
        right_ring="メダダリング",
        back="無の外装",
    }

    sets.precast.WS['ハードスラッシュ']     = sets.precast.WS.Damage 
    sets.precast.WS['パワースラッシュ']     = sets.precast.WS.Damage 
    sets.precast.WS['フロストバイト']       = sets.precast.WS.Magic 
    sets.precast.WS['フリーズバイト']       = sets.precast.WS.Magic 
    sets.precast.WS['ショックウェーブ']     = sets.precast.WS.Damage 
    sets.precast.WS['クレセントムーン']     = sets.precast.WS.Damage 
    sets.precast.WS['シックルムーン']       = sets.precast.WS.Damage 
    sets.precast.WS['スピンスラッシュ']     = sets.precast.WS.Damage 
    sets.precast.WS['グラウンドストライク'] = sets.precast.WS.Damage 
    sets.precast.WS['ヘラクレススラッシュ'] = sets.precast.WS.Magic 
    sets.precast.WS['レゾルーション']       = sets.precast.WS.Damage 
    sets.precast.WS['デミディエーション']   = sets.precast.WS.Damage 
    sets.precast.WS['フィンブルヴェト']     = sets.precast.WS.Damage 

    --
    -- ■■■■■ midcast ■■■■■
    --
    sets.midcast.interruption = {
        ammo="ストンチタスラム+1",
        head="ERガレア+3",
        body="アダマンアーマー",
        hands={ name="ローハイドグローブ", augments={'HP+50','Accuracy+15','Evasion+20',}},
        legs={ name="カマインクウィス+1", augments={'HP+80','STR+12','INT+12',}},
        feet="ERグリーヴ+3",
        neck="月光の首飾り",
        waist="オドンブラサッシュ",
        left_ear={ name="オノワイヤリング+1", augments={'Path: A',},priority=14},
        right_ear="磁界の耳",
        left_ring="守りの指輪",
        right_ring={ name="月明の指輪",priority=15},
        back={ name="月明の羽衣",priority=16}
	}

    sets.midcast.EnhancingMagic = {
        ammo="ストンチタスラム+1",
        head="ERガレア+3",
        body="アダマンアーマー",
        hands="RNミトン+3",
        legs={ name="FUトラウザ+3", augments={'Enhances "Inspire" effect',}},
        feet="ERグリーヴ+3",
        neck="インカンタートルク",
        waist="コーネリアの黒帯",
        left_ear="ミミルピアス",
        right_ear={ name="エリラズピアス+1", augments={'System: 1 ID: 1676 Val: 0','Accuracy+12','Mag. Acc.+12','Damage taken-4%',}},
        left_ring="守りの指輪",
        right_ring={ name="月明の指輪",priority=15},
        back={ name="月明の羽衣",priority=16}
    }

    sets.midcast.Stoneskin= set_combine(sets.midcast.EnhancingMagic ,{
        body="アダマンアーマー",
        hands="ストーンマフラ",
        legs="ヘイヴンホーズ",
        neck="ストーンゴルゲット",
        waist="ジーゲルサッシュ",
        left_ear="アースクライピアス",
        back={ name="月明の羽衣",priority=16},
    })

    sets.midcast.Phalanx = {
        main={ name="ザルフィカール", augments={'Weapon Skill Acc.+14','Pet: AGI+3','Phalanx +2',}},
        sub="ウトゥグリップ",
        ammo="ストンチタスラム+1",
        head={ name="FUバンド+3", augments={'Enhances "Battuta" effect',}},
        body={ name="ヘルクリアベスト", augments={'STR+10','Pet: STR+9','Phalanx +5','Mag. Acc.+3 "Mag.Atk.Bns."+3',}},
        hands={ name="ヘルクリアグローブ", augments={'Magic Damage +1','Crit. hit damage +3%','Phalanx +4','Accuracy+10 Attack+10','Mag. Acc.+20 "Mag.Atk.Bns."+20',}},
        legs={ name="ヘルクリアトラウザ", augments={'AGI+8','Attack+7','Phalanx +4','Accuracy+1 Attack+1','Mag. Acc.+2 "Mag.Atk.Bns."+2',}},
        feet={ name="ヘルクリアブーツ", augments={'Weapon skill damage +2%','"Fast Cast"+3','Phalanx +5','Accuracy+16 Attack+16',}},
        neck="インカンタートルク",
        waist={ name="プラチナモグベルト",priority=16},
        left_ear={ name="オノワイヤリング+1", augments={'Path: A',},priority=14},
        right_ear="ミミルピアス",
        left_ring={ name="ゼラチナスリング+1", augments={'Path: A',},priority=13},
        right_ring={ name="月明の指輪",priority=15},
        back={ name="ディバートケープ", augments={'Enmity+1','"Embolden"+15','"Dbl.Atk."+3',}},
    }

    sets.midcast.Regen = set_combine(sets.midcast.EnhancingMagic,{head="RNバンド+3",body="FUコート+3",neck="サクロゴルゲット",waist="スローダベルト"})

    sets.midcast.Cure = sets.Enmity

end

カスタマイズ注意点

  • ご自身の装備ファストキャスト数値を、job_midcastのfcに反映してください。
  • インスパイア(メリポ)の数値によってFC値が変わりますので、ご注意ください。

コメント

コメント一覧 (5件)

  • 98行目 sets.precast.JA[‘スライトソード’] = set_combine(sets.Enmity,{hands=”FUミトン+3″})

    ですが、[‘スライトソード’]はジョブ特性ですので、
    正しくは、
    90行目 sets.precast.JA[‘ソードプレイ’] = set_combine(sets.Enmity,{})

    90行目 sets.precast.JA[‘ソードプレイ’] = set_combine(sets.Enmity,{hands=”FUミトン+3″})

    かと思われます。

    • ご指摘ありがとうございます。
      魔道剣士は、不慣れなものでして・・・

      用語辞典を参考に作ったので、理解できておりませんでした。
      誤り部分を修正して反映しました。
      また何か待ち該当あれば教えてください!

  • そうなんですね、自分で組むとき気にしてたんですっきりしました。
    ありがとうございます

  • 自分で試せてないので申し訳ないですが
    ロジック
    13  state.Buff[“エンボルド”] = buffactive[“エンボルド”] or false → ’エンボルト’
    ギア
    69-94 装備は ’’ → ””   じゃ無くても動きますか?

    • ダブルクォーテーションとシングルクォーテーションが統一されていないけど動くのか?
      ということですね?

      システム的には問題ありません。
      普通に動きます。

      ただ、あちこちからコピペして作っているため、混在した状態になっていてすっきりしない書き方になっています。

      どちらかで統一した方がよさそうなので、全コードチェックしておきます。

コメントする

目次