ページ 1 / 1
【RGSS3】身代わり条件チェックの項目追加
Posted: 2021年3月27日(土) 21:54
by せくもん
いつもお世話になっております。
現在制作中のゲームではScene_Battleの639行目以降を
コード: 全て選択
#--------------------------------------------------------------------------
# ● 身代わり条件チェック
#--------------------------------------------------------------------------
def check_substitute(target, item)
target.hp > 0 && (!item || !item.certain?) && (!item.for_all?)
end
の様に改変し、身代わり発動の条件を
1.味方のHP残量に関わらず身代わりをする。
2.命中タイプ『必中』のスキルは身代わりしない。
3.敵全体を攻撃するスキルは身代わりしない。
と設定しています。
ここから更に
4.ステートID:13(隠れる)を付加したアクター・エネミーの全攻撃スキルは身代わりしない。
5.装飾品・エネミーのメモ欄に<物理身代わり無効>の記述のある物理攻撃スキルは身代わりしない。
6.装飾品・エネミーのメモ欄に<魔法身代わり無効>の記述のある魔法攻撃スキルは身代わりしない。
といった条件を追加したいのですが、どの様にスクリプトを記述したらよいでしょうか?
Re: 【RGSS3】身代わり条件チェックの項目追加
Posted: 2021年3月28日(日) 02:06
by 名無し蛙
せくもん さんが書きました:5.装飾品・エネミーのメモ欄に<物理身代わり無効>の記述のある物理攻撃スキルは身代わりしない。
6.装飾品・エネミーのメモ欄に<魔法身代わり無効>の記述のある魔法攻撃スキルは身代わりしない。
これはタグ付けされた装備品を装備したアクター、またはエネミーが使用する物理(魔法)攻撃スキルは
被対象陣営が持つ身代わり能力を貫通する、という意味で合ってますか?
つまり上記の(隠れる)ステートを機能限定した下位互換と。
拡張性を考えると三つとも独自特徴化する方法をオススメします。
コード: 全て選択
module Frog
FEATURE_SPECIAL_FLAG = Game_BattlerBase::FEATURE_SPECIAL_FLAG
FLAG_SUBSTITUTE_PIERCE = 10
FLAG_SUBSTITUTE_PIERCE_PHYSICAL = 11
FLAG_SUBSTITUTE_PIERCE_MAGICAL = 12
end
class RPG::BaseItem
#--------------------------------------------------------------------------
# ● note解析
#--------------------------------------------------------------------------
def note_analyze
@note.each_line do |text|
case text.chomp
when "<身代わり無効>"
@features.push Feature.new(Frog::FEATURE_SPECIAL_FLAG, Frog::FLAG_SUBSTITUTE_PIERCE)
when "<物理身代わり無効>"
@features.push Feature.new(Frog::FEATURE_SPECIAL_FLAG, Frog::FLAG_SUBSTITUTE_PIERCE_PHYSICAL)
when "<魔法身代わり無効>"
@features.push Feature.new(Frog::FEATURE_SPECIAL_FLAG, Frog::FLAG_SUBSTITUTE_PIERCE_MAGICAL)
end
end
end
end
class << DataManager
#--------------------------------------------------------------------------
# ○ 通常のデータベースをロード
#--------------------------------------------------------------------------
alias :_ex_features_load_normal_database :load_normal_database
def load_normal_database
_ex_features_load_normal_database
container = $data_actors + $data_enemies + $data_armors + $data_states
container.compact.each do |data_iterator|
data_iterator.note_analyze
end
end
end
class Game_BattlerBase
#--------------------------------------------------------------------------
# ● 貫通アイテムか?
#--------------------------------------------------------------------------
def item_pierce?(item)
special_flag(Frog::FLAG_SUBSTITUTE_PIERCE) ||
(special_flag(Frog::FLAG_SUBSTITUTE_PIERCE_PHYSICAL) && item.physical?) ||
(special_flag(Frog::FLAG_SUBSTITUTE_PIERCE_MAGICAL) && item.magical?)
end
end
class Scene_Battle < Scene_Base
#--------------------------------------------------------------------------
# ○ 身代わり条件チェック
#--------------------------------------------------------------------------
def check_substitute(target, item)
target.hp > 0 && (!item || !item.certain?) && (!item.for_all?) && !@subject.item_pierce?(item)
end
end
流石に戦闘動作チェックは面倒くさくてしていないですが大した事はしていないので動くはず
隠れるステートには<身代わり無効>タグも付けておいてください
※半角記号と全角記号が入り混じっていると気持ち悪いので修正。記号<>は半角で統一します。
<身代わり無効>
<物理身代わり無効>
<魔法身代わり無効>
Re: 【RGSS3】身代わり条件チェックの項目追加
Posted: 2021年3月28日(日) 22:31
by せくもん
名無し蛙様、ご返答ありがとうございます。
>これはタグ付けされた装備品を装備したアクター、またはエネミーが使用する物理(魔法)攻撃スキルは
>被対象陣営が持つ身代わり能力を貫通する、という意味で合ってますか?
言葉足らずで申し訳ございません。その意味で合っています。
こちらで戦闘動作チェックをした所、想定通りの動きを確認できました。
どうもありがとうございました。