バフの効果がアップするタイミングは3パターンあります。
- アビリティ発動時に効果アップするもの
- アクション実行時に効果アップするもの
- 装備中に効果アップするもの(マナウォールなど)
レリックやエンピなど、各装備でどのようなタイミングで装備しておけば良いのかについては、用語辞典で確認してください。
Mote-libsでこれらの着替え方法について説明します。
1.アビリティ発動時
アビリティを発動した瞬間に着替える方法です。
sets.precast.JA['アジュールロー'] = {hands="LLバズバンド+1"}
Mote-libsでは、上記の様にアビリティ名を指定して装備を定義するだけで、該当するアビリティが発動したタイミングで自動的に該当する装備を選択して着替えを行ってくれます。
2.アクション実行時
魔法着弾時に装備していなければ効果がない装備に着替える方法です。
ジョブロジックの定義
私が使用している学者のロジックで説明します。
Mote-libsではアクティブになっているバフを「state.Buff」で管理する機能がありまして、どのバフを管理するのかを「job_setup」で定義しています。詳しくはやまみかんさんのブログで解説されておりますので、参考にしてください。
function job_setup()
state.Buff['気炎万丈の章'] = buffactive['気炎万丈の章'] or false
state.Buff['意気昂然の章'] = buffactive['意気昂然の章'] or false
state.Buff['令狸執鼠の章'] = buffactive['令狸執鼠の章'] or false
state.Buff['震天動地の章'] = buffactive['震天動地の章'] or false
state.Buff['電光石火の章'] = buffactive['電光石火の章'] or false
state.Buff['疾風迅雷の章'] = buffactive['疾風迅雷の章'] or false
state.Buff['簡素清貧の章'] = buffactive['簡素清貧の章'] or false
state.Buff['勤倹小心の章'] = buffactive['勤倹小心の章'] or false
state.Buff['虚誘掩殺の策'] = buffactive['虚誘掩殺の策'] or false
state.Buff['机上演習:蓄積中'] = buffactive['机上演習:蓄積中'] or false
include('weather_obi')
end
バフがアクティブになっている状態で、効果アップ装備に着替えるためには「job_post_midcast」で処理を定義しなければいけませんので、次のように実装しています。
もう少しシンプルにすることもできるのですが、わかりやすくするためにスキル毎に分けて書いています。
function job_post_midcast(spell, action, spellMap, eventArgs)
if spell.skill == '強化魔法' then
for buff,active in pairs(state.Buff) do
if active and sets.buff[buff] then
equip(sets.buff[buff])
end
end
elseif spell.skill == '精霊魔法' then
equip(get_hachirin(spell.element))
for buff,active in pairs(state.Buff) do
if active and sets.buff[buff] then
equip(sets.buff[buff])
end
end
if state.VagaryMode.value then
equip(sets.Vagary)
end
elseif spell.skill == '暗黒魔法' then
for buff,active in pairs(state.Buff) do
if active and sets.buff[buff] then
equip(sets.buff[buff])
end
end
elseif spell.skill == '回復魔法' then
if spellMap == 'Cure' and spell.target.type == 'MONSTER' then
equip(set_combine(sets.midcast['精霊魔法'],get_hachirin(spell.element),{main="デイブレイクワンド", sub="アムラピシールド"}))
for buff,active in pairs(state.Buff) do
if active and sets.buff[buff] then
equip(sets.buff[buff])
end
end
else
equip(set_combine(get_hachirin(spell.element),{back="黄昏の羽衣"}))
end
end
end
このコードの中がで大事な部分が次の処理になります。
for buff,active in pairs(state.Buff) do
if active and sets.buff[buff] then
equip(sets.buff[buff])
end
end
この処理は、sets.buffで監視しているバフがアクティブになっているものを一つずつ探し、該当する装備に着替える処理です。
アクティブになっているバフをループで処理し、アクティブになっているバフがある場合に該当装備に着替えてくれます。例えば、気炎万丈の章がアクティブになっているのなら、sets.buff[‘気炎万丈の章’]に該当する装備を選択して着替えます。
装備の定義
装備の定義名は、sets.buff「’アビリティ名’」で必ず合わせてください。
監視したいアビリティ名をstate.Buffで管理して、着替えたい装備をsets.buffで定義したものが次のコードです。
sets.buff['気炎万丈の章'] = {head = "ABボネット+3"}
sets.buff['意気昂然の章'] = {head = "ABボネット+3"}
sets.buff['令狸執鼠の章'] = {hands= "ABブレーサー+3"}
sets.buff['簡素清貧の章'] = {legs = "ABパンツ+3"}
sets.buff['勤倹小心の章'] = {legs = "ABパンツ+3"}
sets.buff['電光石火の章'] = {feet = "PDローファー+3"}
sets.buff['疾風迅雷の章'] = {feet = "PDローファー+3"}
sets.buff['虚誘掩殺の策'] = {feet = "ABローファー+3"}
sets.buff['震天動地の章'] = {
main="ハーミットワンド",
sub="玄冥盾",
ammo="ストンチタスラム+1",
head={ name="ブリスタサリット+1", augments={'Path: A',}},
body={ name="ロゼトジャズラン+1", augments={'Path: A',}},
hands="ローゲイスカフス",
legs={ name="AMスロップス+1", augments={'MP+80','"Mag.Atk.Bns."+25','Enmity-6',}},
legs="ピンガズボン",
feet="トゥティアサボ",
neck="上級近衛騎士カラー",
waist="コーネリアの黒帯",
left_ear="エテオレートピアス",
right_ear="ハーティーピアス",
left_ring="守りの指輪",
right_ring={ name="ゼラチナスリング+1", augments={'Path: A',}},
back={ name="フィフォレケープ+1", augments={'Path: A',}},
}
3.装備中に効果アップするもの
マナウォールや机上演習など、バフがアクティブの間、効果アップに着替える続ける方法です。
机上演習の場合
自分が何をやりたいのかによって実装方法は変わってきます。
私の場合は、待機装備で机上演習の効果アップ装備に着替えられればOKなので、次のよう実装しています。
function customize_idle_set(idleSet)
local weapon = sets.weapons[state.Weapons.value]
idleSet = set_combine(idleSet, weapon)
if state.Buff['机上演習:蓄積中'] then
idleSet = set_combine(idleSet, sets.buff['机上演習'])
elseif state.VagaryMode.value then
idleSet = set_combine(idleSet, sets.Vagary)
end
return idleSet
end
sets.buff['机上演習'] = {
head="ACボード+3",
body="PDガウン+3",
waist="エンブラサッシュ",
left_ear="サバントピアス",
}
マナウォールの場合
マナウォールがアクティブになったタイミングで、足の装備を変更不可にセットします。
disable(‘feet’)にセットすると、GearSwapを経由する着替えが一切行われなくなりますので、FC装備や魔攻装備に着替えても足だけ変更されません。
背装備も着替え不可にしたいのであれば、disable(‘back’)を追加してください。
function job_buff_change(buff, gain)
if buff == "マナウォール" then
if gain then
equip(sets.buff['マナウォール'])
disable('feet')
else
enable('feet')
if player.status == 'Idle'then
equip(get_idle_set())
else
equip(get_melee_set())
end
end
end
end
sets.buff['マナウォール'] ={feet="WCサボ+3"}
コメント