# 設定項目_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ class RPG::BaseItem SHIELDS_POS = 0 unless defined?(SHIELDS_POS)# armors 関数で返される配列上での盾の位置(通常は0) # IDの配列により設定する項目 # ※別途 real_two_swords を使用していない場合 特に意味なし WEAPON_SIZE_1 = [] # 小型武器として扱う武器の属性ID配列 WEAPON_SIZE_2 = [] # 中型以上の武器として扱う武器の属性ID配列 # 以下、任意の数の ID範囲・単独ID による配列により設定する項目 # 例 SHIELD_SIZE_1 = [116..135,180,226,270..365] # ID 116〜135 180 226 270〜365 の装備の種別が 盾 の防具が 盾サイズ1 #以下、IDを利用する記述。1..20の様なRangeか、単独の数値の配列により指定する。 #例)[1,8,20,45..60] 1、8、20、と45..60のIDの防具が対象 # 盾サイズ0(両手武器と二刀流に制限がない) SHIELD_SIZE_0 = [] # 盾サイズ1(両手武器が使え 二つ目の武器が中型以上でなければ二刀流もできる) SHIELD_SIZE_1 = [] # ※別途 real_two_swords を使用していない場合 盾サイズ0・1でも二刀流はできない # 盾サイズ2(両手武器は使えるが二刀流は一切できない) SHIELD_SIZE_2 = [] # 盾サイズ3(両手武器も二刀流は一切できない) SHIELD_SIZE_3 = [1..999] end # 設定終了_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ =begin ★ks_両手持・二刀流可能盾 制作 MaidensnowOnline 暴兎 使用プロジェクトを公開する場合、readme等に当HP名とそのアドレスを記述してください。 使用報告はしてくれると喜びます。 盾のIDによって 両手持ちの武器や 二刀流と共存できるかを変えられるスクリプト 二刀流と盾を共存させる場合は 別途real_two_swords のスクリプトが必要 再定義されるメソッド Game_Actor クラス内 two_hands_legal? エリアスされるメソッド なし できるだけ上に配置することが推奨 =end $imported = {} unless $imported $imported[:two_hand_and_shield] = true class NilClass def weapon_size ; return 0 ; end def shield_size ; return 0 ; end end class Numeric def weapon_size ; return 0 ; end def shield_size ; return 0 ; end end class RPG::BaseItem def self.shiled_pos return SHIELDS_POS end def weapon_size ; return 0 ; end def shield? ; return false ; end def shield_size ; return 0 ; end end class RPG::Weapon def weapon_size return 2 unless (WEAPON_SIZE_2 & element_set).empty? return 1 unless (WEAPON_SIZE_1 & element_set).empty? return 0 end end class RPG::Armor SHIELD_SIZE_SETS = [SHIELD_SIZE_0,SHIELD_SIZE_1,SHIELD_SIZE_2,SHIELD_SIZE_3] def shield? ; return kind == 0 ; end def shield_size return 0 unless kind == 0 for i in 0...SHIELD_SIZE_SETS.size for set in SHIELD_SIZE_SETS[i] if set.is_a?(Range) return i if (set) === @id else return i if set == @id end end end return 0 end end #============================================================================== # ■ Game_Actors #------------------------------------------------------------------------------ #  アクターの配列を扱うクラスです。このクラスのインスタンスは $game_actors で # 参照されます。 #============================================================================== $imported = {} unless $imported class Game_Actor def shield return armor(RPG::BaseItem::SHIELDS_POS) end #-------------------------------------------------------------------------- # ● 両手装備合法判定 #-------------------------------------------------------------------------- def two_hands_legal?# Game_Actor 再定義 if weapons[0] && weapons[0].two_handed return false if weapons[1] return false if armors[RPG::BaseItem.shiled_pos].shield_size > 2 end if weapons[1] && weapons[1].two_handed return false if @weapon_id != 0 return false if armors[RPG::BaseItem.shiled_pos].shield_size > 2 end return true end def shield_legal?# Game_Actor 再定義 shiled = armors[RPG::BaseItem.shiled_pos] if weapons[0] != nil and weapons[0].two_handed return false if shiled.shield_size > 2 end if weapons[1] != nil return false if shiled.shield_size > 1 return false if shiled.shield_size > 0 && weapons[1].weapon_size > 1 end return true end def coexist?(wep = weapons, shield = armors[RPG::BaseItem.shiled_pos])# Game_Actor return false if wep[0] && !wep[0].is_a?(RPG::Weapon) #p [wep[0].name, wep[1].name, shield.name] if wep[0] != nil and wep[0].two_handed return false if wep[1] return false if shield.shield_size > 2 end return false if wep[1] && !wep[1].is_a?(RPG::Weapon) if wep[1] != nil && wep[1].two_handed return false if @weapon_id != 0 return false if shield.shield_size > 1 end return false if shield && !(shield.is_a?(RPG::Armor) && shield.kind == 0) return true end if $imported[:real_two_swords_style] alias can_off_hand_attack_for_two_hand_and_shield can_off_hand_attack? def can_off_hand_attack?(obj = nil, no_check_battler = false)# Game_Actor alias return false if shield.shield_size > 2 return false if shield.shield_size > 1 && weapons[1].weapon_size > 0 return can_off_hand_attack_for_two_hand_and_shield(obj, no_check_battler) end end# if $imported[:real_two_swords_style] end