失礼致します。
以前、faida様にこちらのスクリプト(viewtopic.php?f=46&t=2666)を作って頂いたのですが、
戦闘途中で仲間を加入させ、その仲間が瀕死状態になると、each_with_indexのno methodエラーが生じます。
恐らく、戦闘開始処理でinit_crisis_effectsが実行されている為、途中で加入する仲間の処理が定義されてないと
思われます。恐縮ではありますが、このエラーを修正していただけないでしょうか?
又、こちらのスクリプト(viewtopic.php?f=46&t=1927)に関しても、スキルに設定されたMPが現在MPと同じである場合、エネミーがスキルを使用(その瞬間MPは0)してしまって、そのままエラーを吐いてしまいます。
よろしくお願いします。
【解決済み】エラー修正
【解決済み】エラー修正
最後に編集したユーザー nira [ 2018年2月28日(水) 09:58 ], 累計 1 回
Re: エラー修正
大変遅くなりました。
前者は加入処理時にも瀕死効果の初期化を行うようにしました。
あと、ステート付加時のアニメーションをステートごとに指定できるようにアップデートしています。
※2019/10/3 不具合が出たので、元のトピックに修正版を添付しています。
後者は「MPがちょうどなくなる時に使えるようにするのか使えないようにするのか」が判別できなかったので
とりあえずオプションで付けました。
あと、普通にHP0で倒してもMP0でない場合に復活する不具合を修正しました。大変どうでもいいことなのですが、TOMO様の後半のスクリプトだとMPダメージでトドメがさせないんですよね……。だから拙作はこんな変な形になってるんですが
前者は加入処理時にも瀕死効果の初期化を行うようにしました。
あと、ステート付加時のアニメーションをステートごとに指定できるようにアップデートしています。
※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
最後に編集したユーザー faida [ 2019年10月03日(木) 22:06 ], 累計 1 回
------------------------------------------------------------------
自作の(改造でない)スクリプト、プラグイン素材に
関しては、リードミーもしくは作中に
「faida」と記名していただければ
利用可能です。
自作の(改造でない)スクリプト、プラグイン素材に
関しては、リードミーもしくは作中に
「faida」と記名していただければ
利用可能です。