#============================================================================== # ■ RGSS3 条件特徴付与 Ver1.00 by 星潟 #------------------------------------------------------------------------------ # 特定条件を満たしている場合だけ # 特定の防具の特徴データを得られるようになります。 # 導入にはスクリプトに関する一定の知識が必要になる場合があります。 # (スクリプトによる追加効果等は得られない場合があります) #============================================================================== # アクター、エネミー、職業、武器、防具、ステートのメモ欄に指定 #------------------------------------------------------------------------------ # <条件特徴付与:58,state?(5)> # # ステートID5が付与されている場合のみ、防具58の特徴データを得る。 #------------------------------------------------------------------------------ # <条件特徴付与:58,enemy?&&state?(5)> # # エネミーであり、ステートID5が付与されている場合のみ、防具58の特徴データを得る。 #------------------------------------------------------------------------------ # <条件特徴付与:59,actor?&&weapons.any?{|i|i&&i.id==1}> # # アクターであり、武器ID1を装備している場合のみ # 防具59の特徴データを得る。 #------------------------------------------------------------------------------ # <条件特徴付与:59,actor?&&weapons.any?{|i|i&&i.wtype_id==1}> # # アクターであり、武器タイプ1の武器を装備している場合のみ # 防具59の特徴データを得る。 #------------------------------------------------------------------------------ # <条件特徴付与:59,actor?&&weapons.any?{|i|i&&(i.wtype_id==1||i.wtype_id==2)}> # # アクターであり、武器タイプ1、もしくは # 武器タイプ2の武器を装備している場合のみ防具59の特徴データを得る。 #------------------------------------------------------------------------------ # <条件特徴付与:60,actor?&&armors.any?{|i|i&&i.id==2}> # # アクターであり、防具ID2の防具を装備している場合のみ # 防具60の特徴データを得る。 #------------------------------------------------------------------------------ # <条件特徴付与:60,actor?&&armors.any?{|i|i&&i.atype_id==2}> # # アクターであり、防具タイプ2の防具を装備している場合のみ # 防具60の特徴データを得る。 #============================================================================== # 条件部分に半角スペースは使えませんのでご注意ください。 # 半角スペースを使いたい場合、スクリプト能力値のスクリプトを併用し # スクリプト能力値の記述を使用して下さい。 #============================================================================== module AddFOCondition #条件特徴付与の設定用キーワードを指定。 Word = "条件特徴付与" end class Game_Battler < Game_BattlerBase #-------------------------------------------------------------------------- # 条件特徴付与 #-------------------------------------------------------------------------- def add_fo_by_condition(fo) fa = [] @add_fo_by_condition_flag = true fo.each {|f| f.add_fo_by_condition.each {|a| f = $data_armors[a[0]] fa.push(f) if f && eval(a[1])}} @add_fo_by_condition_flag = nil fo + fa end end class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # 特徴を保持する全オブジェクトの配列取得 #-------------------------------------------------------------------------- alias feature_objects_add_fo_by_condition feature_objects def feature_objects if @add_fo_by_condition_flag return feature_objects_add_fo_by_condition else add_fo_by_condition(feature_objects_add_fo_by_condition) end end end class Game_Enemy < Game_Battler #-------------------------------------------------------------------------- # 特徴を保持する全オブジェクトの配列取得 #-------------------------------------------------------------------------- alias feature_objects_add_fo_by_condition feature_objects def feature_objects if @add_fo_by_condition_flag return feature_objects_add_fo_by_condition else add_fo_by_condition(feature_objects_add_fo_by_condition) end end end class RPG::BaseItem #-------------------------------------------------------------------------- # 条件特徴付与 #-------------------------------------------------------------------------- def add_fo_by_condition @add_fo_by_condition ||= create_add_fo_by_condition end #-------------------------------------------------------------------------- # 条件特徴付与のデータ作成 #-------------------------------------------------------------------------- def create_add_fo_by_condition a = [] note.each_line {|l| a.push([$1.to_i,$2.to_s]) if /<#{AddFOCondition::Word}[::](\d+),(\S+)>/ =~ l} a end end