#============================================================================== # ■ RGSS3 防具タイプ別装備可能数指定 Ver1.01 by 星潟 #------------------------------------------------------------------------------ # それぞれの防具タイプ別に、同時に装備可能な数を指定します。 # アクターと職業のメモ欄を用いて # 個別に装備可能数拡張値を設定する事もできます。 # また、相性の悪い最強装備コマンドは削除されます。 # この機能は装備画面以外での装備変更は考慮していませんのでご注意ください。 #------------------------------------------------------------------------------ # ★個別の装備可能数拡張値 設定例 # # アクターか職業のメモ欄に下記のように入力します。 # # <防具タイプ限界増加:3,1> # # これで、そのアクターの防具タイプID3の防具タイプの装備可能数が # 本来の基本防具タイプ別装備可能限界数で指定した数値から1増加します。 #============================================================================== module E_AT_PLURAL #基本防具タイプ別装備可能限界数を設定。 #先頭から防具タイプID1番、2番……となっています。 # 「,」(鍵括弧は除く)で区切って記入して下さい。 PLURAL_DATA = [1,1,1,1,1,1] #防具タイプ別装備可能数拡張値の設定用キーワードを指定します。 WORD = "防具タイプ限界増加" #装備コマンド桁数を指定します。 COLM = 2 end class Window_EquipCommand < Window_HorzCommand #-------------------------------------------------------------------------- # コマンドリストの作成 #-------------------------------------------------------------------------- alias make_command_list_delete_optimize_plural make_command_list def make_command_list make_command_list_delete_optimize_plural @list.delete_if {|h| h[:symbol] == :optimize} end #-------------------------------------------------------------------------- # 桁数の取得 #-------------------------------------------------------------------------- def col_max E_AT_PLURAL::COLM end end class Window_EquipItem < Window_ItemList #-------------------------------------------------------------------------- # アイテムを許可状態で表示するかどうか #-------------------------------------------------------------------------- alias enable_plural_seal? enable? def enable?(item) #通常処理でのフラグを取得する。 flag = enable_plural_seal?(item) #通常処理の時点でフラグを満たさない場合はそのまま返す。 return flag if !flag #アイテムが存在しない場合はフラグを返す。 return flag unless item #アイテムが防具でない場合はフラグを返す。 return flag unless item.is_a?(RPG::Armor) #処理データとして0を準備 data = 0 #アクターの装備別に処理。 @actor.equips.each_with_index { |e, i| #装備品が防具でない場合は飛ばす。 next unless e.is_a?(RPG::Armor) #スロットウィンドウのインデックスと #処理上の装備インデックスが一致している場合は飛ばす。 next if i == @slot_id #装備中アイテムの防具タイプと #装備しようとしている物の装備品の防具タイプが一致している場合は #処理データに1を加える。 data += 1 if e.atype_id == item.atype_id} #個別の装備可能数拡張値を取得します。 @plural_plus_data = 0 @plural_plus_data += make_e_at_plural[0][item.atype_id.to_s.to_sym] != nil ? make_e_at_plural[0][item.atype_id.to_s.to_sym] : 0 @plural_plus_data += make_e_at_plural[1][item.atype_id.to_s.to_sym] != nil ? make_e_at_plural[1][item.atype_id.to_s.to_sym] : 0 #処理データが指定した防具タイプの限界数より低い場合のみtrueを返す。 return data < E_AT_PLURAL::PLURAL_DATA[item.atype_id - 1] + @plural_plus_data end def make_e_at_plural #判定用データが存在しない場合、もしくは #判定用データのアクターが現在のアクターと異なる場合は #データを組みなおす。 if @plural_actor == nil or @plural_actor != @actor @plural_actor = @actor @plural_data = [$data_actors[@actor.id].e_at_plural,$data_classes[@actor.class_id].e_at_plural] end #データを返す。 return @plural_data end end class RPG::BaseItem def e_at_plural #キャッシュが存在する場合はキャッシュを返す。 return @e_at_plural if @e_at_plural != nil #ハッシュを生成。 @e_at_plural = {} #メモ欄の行別にデータを取得。 self.note.each_line {|l| data = l.scan(/<#{E_AT_PLURAL::WORD}[::](\S+),(\S+)>/).flatten next if data == nil or data.size != 2 @e_at_plural[data[0].to_sym] = data[1].to_i } #ハッシュを返す。 @e_at_plural end end