#=============================================================================== # Armor Set Bonus # Version 1.4 # By Lettuce # # Description: Player can gain additional stats when they are equip 1 or more # pieces of equipment of the same set # #Note** these bonuses ADDS! For example, if you equip some items that belongs # to a set, and some from a different set, you get combined bonus # like 100% from first set and 20% from another set, you get 120% #==========================Configuration======================================== # Armor Set List # Add more sets in this format: #in this format: # SetID => [weaponID,armor1ID, armor2ID, armor3ID, armor4ID] Sets = { 1 => [1,2,9,15,24], 2 => [2,1,7,14,23], 3 => []} # Armor Set Bonus List # *Note "Set_Bonus must be in the same order as the "Sets" (above) # ie "Set_Bonus" with 1 as the key will be the bonus for Sets 1 above # #attribute 1:atk , 2:def , 3:spi, 4:agi, 5:hp, 6:mp, 7:cri, 8:eva #all values are in percentage # # *If you want to give bonus when there are 2 or more pieces of equipments, then # leave the first bonus empty (Example: Set 2) # Format: # BonusID => [ [Attribute,Amount], # when 1 piece is equiped # [Attribute,Amount], # when 2 pieces is equiped # [Attribute,Amount], # when 3 pieces is equiped # [Attribute,Amount], # when 4 pieces is equiped # [Attribute,Amount] ] # when 5 pieces is equiped Set_Bonus = { 1 => [ [1,5], #if equiped with one of these(2,9,15,24), gets 5% ATK [2,20], #if any 2 of these (2,9,15,24), gets 5% ATK and 20% DEF [5,100], #3 pieces gives 100 extra HP etc etc [6,20], [7,30] ], 2 => [ [1,1000], [3,1000], [2,2000], [5,1000], [6,2000]], 3 => [ [1,5], [2,20], [5,100], [7,2000], [8,50]] } Set_Names = { 1 => "Super Set", 2 => "Uber set", 3 => "Some set lol" } class Game_Actor < Game_Battler attr_accessor :bonus_set attr_accessor :bonus_set_pieces alias lettuce_eq_bonus_setup setup def setup(actor_id) lettuce_eq_bonus_setup(actor_id) @bonus_set = [] for i in 1..Sets.size weapons = [nil,Sets[i][0]] armors = [Sets[i][1],Sets[i][2],Sets[i][3],Sets[i][4]] if Sets[i].include?(@weapon_id) @bonus_set.push(i) if !@bonus_set.include?(i) end if Sets[i].include?(@armor4_id) @bonus_set.push(i) if !@bonus_set.include?(i) end if Sets[i].include?(@armor3_id) @bonus_set.push(i) if !@bonus_set.include?(i) end if Sets[i].include?(@armor2_id) @bonus_set.push(i) if !@bonus_set.include?(i) end if Sets[i].include?(@armor1_id) @bonus_set.push(i) if !@bonus_set.include?(i) end end @bonus_set_pieces = [] for i in 0...@bonus_set.size @bonus_set_pieces.push(0) end if !@bonus_set.empty? for i in 0...@bonus_set.size weapons = [nil,Sets[@bonus_set[i]][0]] armors = [Sets[@bonus_set[i]][1],Sets[@bonus_set[i]][2], Sets[@bonus_set[i]][3],Sets[@bonus_set[i]][4]] @bonus_set_pieces[i] += weapons.include?(@weapon_id) ? 1 : 0 @bonus_set_pieces[i] += armors.include?(@armor1_id) ? 1 : 0 @bonus_set_pieces[i] += armors.include?(@armor2_id) ? 1 : 0 @bonus_set_pieces[i] += armors.include?(@armor3_id) ? 1 : 0 @bonus_set_pieces[i] += armors.include?(@armor4_id) ? 1 : 0 end end end alias lettuce_eq_bonus_atk atk alias lettuce_eq_bonus_def def alias lettuce_eq_bonus_spi spi alias lettuce_eq_bonus_agi agi alias lettuce_eq_bonus_maxhp maxhp alias lettuce_eq_bonus_maxmp maxmp alias lettuce_eq_bonus_cri cri alias lettuce_eq_bonus_eva eva def atk default_val = lettuce_eq_bonus_atk final_val = default_val n = 100 if !@bonus_set.empty? for j in 0...@bonus_set.size for i in 0...@bonus_set_pieces[j] if Set_Bonus[@bonus_set[j]][i] != nil if Set_Bonus[@bonus_set[j]][i][0] == 1 n +=Set_Bonus[@bonus_set[j]][i][1] end end end end final_val *= n final_val /= 100 else final_val = default_val end return final_val end def def default_val = lettuce_eq_bonus_def final_val = default_val n = 100 if !@bonus_set.empty? for j in 0...@bonus_set.size for i in 0...@bonus_set_pieces[j] if Set_Bonus[@bonus_set[j]][i] != nil if Set_Bonus[@bonus_set[j]][i][0] == 2 n +=Set_Bonus[@bonus_set[j]][i][1] end end end end final_val *= n final_val /= 100 else final_val = default_val end return final_val end def spi default_val = lettuce_eq_bonus_spi final_val = default_val n = 100 if !@bonus_set.empty? for j in 0...@bonus_set.size for i in 0...@bonus_set_pieces[j] if Set_Bonus[@bonus_set[j]][i] != nil if Set_Bonus[@bonus_set[j]][i][0] == 3 n +=Set_Bonus[@bonus_set[j]][i][1] end end end end final_val *= n final_val /= 100 else final_val = default_val end return final_val end def agi default_val = lettuce_eq_bonus_agi final_val = default_val n = 100 if !@bonus_set.empty? for j in 0...@bonus_set.size for i in 0...@bonus_set_pieces[j] if Set_Bonus[@bonus_set[j]][i] != nil if Set_Bonus[@bonus_set[j]][i][0] == 4 n +=Set_Bonus[@bonus_set[j]][i][1] end end end end final_val *= n final_val /= 100 else final_val = default_val end return final_val end def maxhp default_val = lettuce_eq_bonus_maxhp final_val = default_val n = 100 if @bonus_set if !@bonus_set.empty? for j in 0...@bonus_set.size for i in 0...@bonus_set_pieces[j] if Set_Bonus[@bonus_set[j]][i] != nil if Set_Bonus[@bonus_set[j]][i][0] == 5 n += Set_Bonus[@bonus_set[j]][i][1] end end end end final_val *= n final_val /= 100 else final_val = default_val end end return final_val end def maxmp default_val = lettuce_eq_bonus_maxmp final_val = default_val n = 100 if @bonus_set if !@bonus_set.empty? for j in 0...@bonus_set.size for i in 0...@bonus_set_pieces[j] if Set_Bonus[@bonus_set[j]][i] != nil if Set_Bonus[@bonus_set[j]][i][0] == 6 n +=Set_Bonus[@bonus_set[j]][i][1] end end end end final_val *= n final_val /= 100 else final_val = default_val end end return final_val end def cri default_val = lettuce_eq_bonus_cri final_val = default_val n = 100 if !@bonus_set.empty? for j in 0...@bonus_set.size for i in 0...@bonus_set_pieces[j] if Set_Bonus[@bonus_set[j]][i] != nil if Set_Bonus[@bonus_set[j]][i][0] == 7 n +=Set_Bonus[@bonus_set[j]][i][1] end end end end final_val *= n final_val /= 100 else final_val = default_val end return final_val end def eva default_val = lettuce_eq_bonus_eva final_val = default_val n = 100 if !@bonus_set.empty? for j in 0...@bonus_set.size for i in 0...@bonus_set_pieces[j] if Set_Bonus[@bonus_set[j]][i] != nil if Set_Bonus[@bonus_set[j]][i][0] == 8 n +=Set_Bonus[@bonus_set[j]][i][1] end end end end final_val *= n final_val /= 100 else final_val = default_val end return final_val end def change_equip(equip_type, item, test = false) last_item = equips[equip_type] unless test return if $game_party.item_number(item) == 0 if item != nil $game_party.gain_item(last_item, 1) $game_party.lose_item(item, 1) end item_id = item == nil ? 0 : item.id case equip_type when 0 # Weapon @weapon_id = item_id unless two_hands_legal? # If two hands is not allowed change_equip(1, nil, test) # Unequip from other hand end when 1 # Shield @armor1_id = item_id unless two_hands_legal? # If two hands is not allowed change_equip(0, nil, test) # Unequip from other hand end when 2 # Head @armor2_id = item_id when 3 # Body @armor3_id = item_id when 4 # Accessory @armor4_id = item_id end @bonus_set = [] for i in 1..Sets.size weapons = [nil,Sets[i][0]] armors = [Sets[i][1],Sets[i][2],Sets[i][3],Sets[i][4]] if Sets[i].include?(@weapon_id) @bonus_set.push(i) if !@bonus_set.include?(i) end if Sets[i].include?(@armor4_id) @bonus_set.push(i) if !@bonus_set.include?(i) end if Sets[i].include?(@armor3_id) @bonus_set.push(i) if !@bonus_set.include?(i) end if Sets[i].include?(@armor2_id) @bonus_set.push(i) if !@bonus_set.include?(i) end if Sets[i].include?(@armor1_id) @bonus_set.push(i) if !@bonus_set.include?(i) end end @bonus_set_pieces = [] for i in 0...@bonus_set.size @bonus_set_pieces.push(0) end if !@bonus_set.empty? for i in 0...@bonus_set.size weapons = [nil,Sets[@bonus_set[i]][0]] armors = [Sets[@bonus_set[i]][1],Sets[@bonus_set[i]][2], Sets[@bonus_set[i]][3],Sets[@bonus_set[i]][4]] @bonus_set_pieces[i] += weapons.include?(@weapon_id) ? 1 : 0 @bonus_set_pieces[i] += armors.include?(@armor1_id) ? 1 : 0 @bonus_set_pieces[i] += armors.include?(@armor2_id) ? 1 : 0 @bonus_set_pieces[i] += armors.include?(@armor3_id) ? 1 : 0 @bonus_set_pieces[i] += armors.include?(@armor4_id) ? 1 : 0 end end end end class Window_Base < Window def draw_item_name(item, x, y, enabled = true) if item != nil is_set = false set_no = 0 if item.is_a?(RPG::Weapon) for i in 1..Sets.size weapons = [] weapons.push(Sets[i][0]) if weapons.include?(item.id) is_set = true set_no = i end end end if item.is_a?(RPG::Armor) for i in 1..Sets.size armors = [] armors.push(Sets[i][1]) armors.push(Sets[i][2]) armors.push(Sets[i][3]) armors.push(Sets[i][4]) if armors.include?(item.id) is_set = true set_no = i end end end draw_icon(item.icon_index, x, y, enabled) self.contents.font.color = normal_color self.contents.font.color.alpha = enabled ? 255 : 128 set_word = "" if is_set then set_word = "[" + Set_Names[set_no] + "]" end self.contents.font.size = Font.default_size self.contents.draw_text(x + 24, y, 172, WLH, item.name) self.contents.font.color = crisis_color self.contents.font.size = 12 self.contents.draw_text(x + 28, y+12, 172, WLH, set_word) self.contents.font.color = normal_color self.contents.font.size = Font.default_size end end end