RGSS2ネタ
RPGツクールVXをちょこちょこいじってます。今は色んなスクリプト集めてきて戦闘システムまわりを整備してるとこ。
http://xrxs.at-ninja.jp/
んで、上記「ちいさな本屋さん」で公開されてる属性活性エネルギーを導入したんだけど、FSMのフォーラムで報告されてたエラーを自分も確認。スキル発動時になんかよくわからんけど定義されてないよとか言われる。
その報告トピックにあったとおり、問題の箇所の記述を削除するとちゃんと動作したけど、これで問題が無いのかどうかは不明。でも単体で動作させても発生したエラーだから、たぶんバグだな。
そしてそのトピックでもうひとつ言われてたのが、活性が蓄積された状態で戦闘終了すると、活性が維持されて、次の戦闘に持ち込まれてしまうという問題。これは今回の修正箇所には関係なく、どうやら仕様らしい。
というわけで、戦闘終了時の活性初期化処理を自力で組み込んでみた。
Rubyの文法の何もかも分からず、メソッドって何それおいしいのな状態で作ったんでかなり怪しい。
ここの包括的なシステム構築にお世話になる人は多いと思うので、修正方法を公開してみます。というかこれくらい自力で余裕じゃってレベルかもしれないけど、自分のようなド素人の方のために。つか即導入できる素材の形にしてないですw
まず、「ユニット・マップ保持の属性活性エネルギー」の部分で
#活性初期化
def reset_energy
self.element_energies.clear
end
を追加。属性活性を消滅させる効果なんかにも応用できるかも。
次に、一番下に以下の記述を付け加えれば完成。
#===================================
# 戦闘終了時活性初期化
#===================================
class Scene_Battle < Scene_Base
#----------------
# ● 勝利の処理
#----------------
alias energy_reset_process_victory process_victory
def process_victory
make_victory_reset
energy_reset_process_victory
end
#----------------
# ● 戦闘勝利時
#----------------
def make_victory_reset
$game_party.reset_energy
end
#----------------
# ● 逃走の処理
#----------------
alias energy_reset_process_escape process_escape
def process_escape
make_escape_reset
energy_reset_process_escape
end
#----------------
# ● 戦闘逃走時
#----------------
def make_escape_reset
$game_party.reset_energy
end
#----------------
# ● 敗北の処理
#----------------
alias energy_reset_process_defeat process_defeat
def process_defeat
make_defeat_reset
energy_reset_process_defeat
end
#----------------
# ● 戦闘敗北時
#----------------
def make_defeat_reset
$game_party.reset_energy
end
end
戦闘終了自体を扱うクラスに直接定義できれば、結果に関わらず記述を一本化できるんだけどなあ。もうソース読み解いていくのが面倒だw
RPGツクールVXをちょこちょこいじってます。今は色んなスクリプト集めてきて戦闘システムまわりを整備してるとこ。
http://xrxs.at-ninja.jp/
んで、上記「ちいさな本屋さん」で公開されてる属性活性エネルギーを導入したんだけど、FSMのフォーラムで報告されてたエラーを自分も確認。スキル発動時になんかよくわからんけど定義されてないよとか言われる。
その報告トピックにあったとおり、問題の箇所の記述を削除するとちゃんと動作したけど、これで問題が無いのかどうかは不明。でも単体で動作させても発生したエラーだから、たぶんバグだな。
そしてそのトピックでもうひとつ言われてたのが、活性が蓄積された状態で戦闘終了すると、活性が維持されて、次の戦闘に持ち込まれてしまうという問題。これは今回の修正箇所には関係なく、どうやら仕様らしい。
というわけで、戦闘終了時の活性初期化処理を自力で組み込んでみた。
Rubyの文法の何もかも分からず、メソッドって何それおいしいのな状態で作ったんでかなり怪しい。
ここの包括的なシステム構築にお世話になる人は多いと思うので、修正方法を公開してみます。というかこれくらい自力で余裕じゃってレベルかもしれないけど、自分のようなド素人の方のために。つか即導入できる素材の形にしてないですw
まず、「ユニット・マップ保持の属性活性エネルギー」の部分で
#活性初期化
def reset_energy
self.element_energies.clear
end
を追加。属性活性を消滅させる効果なんかにも応用できるかも。
次に、一番下に以下の記述を付け加えれば完成。
#===================================
# 戦闘終了時活性初期化
#===================================
class Scene_Battle < Scene_Base
#----------------
# ● 勝利の処理
#----------------
alias energy_reset_process_victory process_victory
def process_victory
make_victory_reset
energy_reset_process_victory
end
#----------------
# ● 戦闘勝利時
#----------------
def make_victory_reset
$game_party.reset_energy
end
#----------------
# ● 逃走の処理
#----------------
alias energy_reset_process_escape process_escape
def process_escape
make_escape_reset
energy_reset_process_escape
end
#----------------
# ● 戦闘逃走時
#----------------
def make_escape_reset
$game_party.reset_energy
end
#----------------
# ● 敗北の処理
#----------------
alias energy_reset_process_defeat process_defeat
def process_defeat
make_defeat_reset
energy_reset_process_defeat
end
#----------------
# ● 戦闘敗北時
#----------------
def make_defeat_reset
$game_party.reset_energy
end
end
戦闘終了自体を扱うクラスに直接定義できれば、結果に関わらず記述を一本化できるんだけどなあ。もうソース読み解いていくのが面倒だw
コメント