ページ 1 / 1
【解決済】 VXAce ステートの行動制約について
Posted: 2020年2月10日(月) 23:27
by しろう
お世話になってます。
また質問させて下さい。
行動制約のあるステート、例えば「行動できない」眠りや「味方を攻撃する」混乱などは
戦闘中、自分の行動順番が来る前に掛かると本来の行動がキャンセルされてそのターンは何もしませんよね。
「行動できない」制約ならこれでも良いのですが「味方を攻撃する」や特徴で自動戦闘を付けているステートは掛かったターン中にも制約行動や自動戦闘行動を反映させたいのですが方法はあるでしょうか?
もしあればその方法を教えて頂きたいです。
宜しくお願いします。
Re: VXAce ステートの行動制約について
Posted: 2020年2月12日(水) 03:42
by ぽんぽこねるそん
行動制約で行動がキャンセルされるのを変えるには
コード: 全て選択
class Game_Battler < Game_BattlerBase
#--------------------------------------------------------------------------
# ● 行動制約が生じたときの処理
#--------------------------------------------------------------------------
def on_restrict
clear_actions unless movable?
states.each do |state|
remove_state(state.id) if state.remove_by_restriction
end
end
end
こんな感じで戦闘行動のクリアに対して条件を付ければいいかと思います。
上の例だと行動不能ならクリアするようにしています。
自動戦闘は
コード: 全て選択
class Scene_Battle < Scene_Base
#--------------------------------------------------------------------------
# ● 戦闘行動の処理
#--------------------------------------------------------------------------
def process_action
return if scene_changing?
if !@subject || !@subject.current_action
@subject = BattleManager.next_subject
@subject.make_actions if @subject && @subject.actor? && @subject.auto_battle?
end
return turn_end unless @subject
if @subject.current_action
@subject.current_action.prepare
if @subject.current_action.valid?
@status_window.open
execute_action
end
@subject.remove_current_action
end
process_action_end unless @subject.current_action
end
end
こんな感じで行動する時に自動戦闘になっていたら
その時に自動戦闘の行動を作ってやればいいかと思います。
Re: VXAce ステートの行動制約について
Posted: 2020年2月13日(木) 02:30
by しろう
ありがとうございます!
挙動の確認出来ました。