大変遅くなりました。
前者は加入処理時にも瀕死効果の初期化を行うようにしました。
あと、ステート付加時のアニメーションをステートごとに指定できるようにアップデートしています。
※2019/10/3 不具合が出たので、
元のトピックに修正版を添付しています。
後者は「MPがちょうどなくなる時に使えるようにするのか使えないようにするのか」が判別できなかったので
とりあえずオプションで付けました。
あと、普通にHP0で倒してもMP0でない場合に復活する不具合を修正しました。
コード: 全て選択
# MP戦闘不能を持つキャラはMPがちょうど0になる場合スキルを使用できない
BATTLER_NOUSEMP_DEATH = true
class RPG::BaseItem
def mp0_death
return @mp0_death if !@mp0_death.nil?
@mp0_death = (note =~ /<MP戦闘不能>/ ? true : false)
end
end
class Game_BattlerBase
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
alias mp0_death_refresh refresh
def refresh
mp0_death_refresh
check_mp0_death
end
def check_mp0_death
if mp0_death?
(@hp == 0 || @mp == 0) ? add_state(death_state_id) :
remove_state(death_state_id)
end
end
def mp0_death?
feature_objects.any?{|a|a.mp0_death}
end
end
if BATTLER_NOUSEMP_DEATH
class Game_BattlerBase
#--------------------------------------------------------------------------
# ● スキル使用コストの支払い可能判定
#--------------------------------------------------------------------------
alias mp0_death_skill_cost_payable? skill_cost_payable?
def skill_cost_payable?(skill)
return false if !mp0_death_skill_cost_payable?(skill)
!mp0_death? || mp > skill_mp_cost(skill)
end
end
else
class Game_BattlerBase
#--------------------------------------------------------------------------
# ● リフレッシュ
#--------------------------------------------------------------------------
def refresh
mp0_death_refresh
return if SceneManager.scene.instance_variable_get(:@subject) == self
check_mp0_death
end
end
class Scene_Battle
#--------------------------------------------------------------------------
# ● 戦闘行動終了時の処理
#--------------------------------------------------------------------------
alias mp0_death_process_action_end process_action_end
def process_action_end
@subject.check_mp0_death
@log_window.display_changed_states(@subject)
mp0_death_process_action_end
end
end
end
大変どうでもいいことなのですが、TOMO様の後半のスクリプトだとMPダメージでトドメがさせないんですよね……。だから拙作はこんな変な形になってるんですが