おはようございます 今日は川の清掃です
それはどうでもいい
bbsにあった遅延スキルの発動タイミングがおかしくなる場合があるという件(同じスキルのwaitが5になったり8になったりする)
手をつけてるうちにそれらしいの見つけて調べてみました
下の画像はスキルコマンドを選択した段階でコントローラーを操作していない状態での魔力の泉の遅延位置です wait9ですね
そして以下の画像は十字キーを操作して再度魔力の泉に合わせた時の遅延位置です スキルウインドウの裏にいるので見にくいですがwait6になっています
かいつまんでいうと行動順の操作はスキルの場合update_skill_forecastというメソッドで処理がなされています
そして@order_manegerのdef insertというメソッドで行動順のコマの位置処理をしているらしいです
#--------------------------------------------------------------------------
# ● 指定のバトラーをユニットとして追加します。
# battler 追加するバトラー
# waiting_time 待ち時間
# forecast 行動順の予想ユニットかどうかのフラグ
# skill スキルの使用待ちかどうかのフラグ
#
# start_skill_selectionからのinsertはunit=nilである
# よってwaiting_timeがそのまま適用されてしまい順番がおかしくなる
# 処理追加
#--------------------------------------------------------------------------
def insert(battler, waiting_time, forecast = false, skill = nil)
waiting_time = waiting_time.round
unit = find_unit(battler)
unless unit == nil
index = @units.index(unit)
if forecast
if skill == nil
unit.waiting_time = waiting_time
else #遅延スキルの場合
unit.waiting_time = calculate_unit_order(battler, waiting_time)
#~ p unit.waiting_time
end
end
unit.forecast = forecast
unit.usable_item = skill
sort
update_waiting_time_plus
@listener.insert(unit) unless index == @units.index(unit)
return
end
new_unit = OrderUnit.new(battler, waiting_time, forecast, skill)
@units.push(new_unit)
sort
update_waiting_time_plus
@listener.insert(new_unit)
end
一部改造しています 注釈に少し書いていますがアクターコマンドからスキルウインドウを開いた一発目のupdate_skill_forecastは
start_skill_selectionというメソッドから実行されています ここから実行された場合def insertには遅延待ちのユニット(画像だとヴァージニア)が行動順に描画されていないため
unit = nilとなり new_unit = OrderUnit.new(battler, waiting_time, forecast, skill) が適用される事になります
そしてスキルウインドウを操作して再度魔力の泉に合わせた場合 既に行動順に自身が組み込まれているため
再度合わせた場合はunit != nilとなり unless unit == nil内での処理が適用さるわけです
各々のwaiting_timeの計算処理が異なるため異なった待ち時間になってしまう という事らしいですね
river's clean working at 8:00 am