class Scene_Equip #========================================================= # Closes extra windows #========================================================= alias g7_ms_scene_equip_main main def main @additional_initialize_done = false g7_ms_scene_equip_main for i in 5...@item_windows.size @item_windows[i].dispose unless @item_windows[i].nil? end end #========================================================= # Initialize the extra right windows #========================================================= def g7_ms_scene_equip_additional_initialize unless @additional_initialize_done @item_windows = [] @item_windows[0] = @item_window1 #weapon @item_windows[1] = @item_window2 #shield @item_windows[2] = @item_window3 #helmet @item_windows[3] = @item_window4 #armor @item_windows[4] = @item_window5 #acc nb_old_windows = @item_windows.size for i in nb_old_windows...@actor.armor_slots.max+1 @item_windows.push(Window_EquipItem.new(@actor, i) ) #add the remaining #windows for extra slots @item_windows[i].help_window = @help_window end @item_windows.push(Window_EquipOffHand.new(@actor, 0)) @item_windows[-1].help_window = @help_window if G7_MS_MOD::WINDOWS_STRETCH #if windows_stretch is true, stretch window h = (@actor.weapon_slots.size + @actor.armor_slots.size + 1) * 32 h2 = (G7_MS_MOD::MAX_SHOW_SLOTS+1) * 32 h = [h, h2].min @right_window.height = h if @right_window.index > @actor.weapon_slots.size + @actor.armor_slots.size - 1 @right_window.index = @actor.weapon_slots.size + @actor.armor_slots.size - 1 end if @left_window.y + @left_window.height == 256 @left_window.height = @right_window.height elsif G7_MS_MOD::HELP_AT_BOTTOM == true and @left_window.height == 416 then @left_window.height -= 64 #make left window shorter end y_pos = (@right_window.y + @right_window.height) y_space = 480 - y_pos #if help at bottom, reduce bottom item window size if G7_MS_MOD::HELP_AT_BOTTOM == true then y_space -= 64 end for item_window in @item_windows next if item_window.nil? item_window.y = y_pos item_window.height = y_space end end @additional_initialize_done = true end end alias g7_ms_scene_equip_refresh refresh #========================================================= # Refresh and make visible the correct right window #========================================================= def refresh #this part is used to refresh the equipped item at the right window g7_ms_scene_equip_additional_initialize @actor.translucent_texts.fill(false) @actor.equip_type_force = index_to_equip_part(@right_window.index) @right_window.item_fix_on @right_window.scroll_fix_on save = @right_window.index @right_window.index = index_to_equip_kind(@right_window.index) if @right_window.index == 0 and @actor.ignore_offhand? != true then if @actor.nb_offhand_required(save) > 0 then @right_window.index = @item_windows.size-1 end end @actor.equip_from_menu = true @actor.equip_mode = 'STORE' #ensure current equipment will get properly stored # and reequiped @item_window = @item_windows[@right_window.index] @item_windows[@right_window.index].visible = true for i in 0...@item_windows.size if i != @right_window.index then @item_windows[i].visible = false end end #equip and remove item g7_ms_scene_equip_refresh @actor.equip_from_menu = false @actor.equip_mode = nil @actor.equip_type_force = nil @right_window.index = save @right_window.scroll_fix_off @right_window.item_fix_off if @item_window.index != @old_index @right_window.refresh end @old_index = @item_window.index end #========================================================= # Convert the right_window.index to equip_type #========================================================= alias g7_ms_scene_equip_update_item update_item def update_item #this changes the @right_window.index to the correct value #to take account of extra slots @actor.equip_type_force = index_to_equip_part(@right_window.index) @right_window.item_fix_on @right_window.scroll_fix_on save = @right_window.index @right_window.index = index_to_equip_kind(@right_window.index) @actor.equip_from_menu = true g7_ms_scene_equip_update_item #equip item @actor.equip_from_menu = false @actor.equip_type_force = nil # if not in item_window screen if @item_window.index == -1 #if shield-weapon can modify each other if @actor.shield_hand_wield == true and if @right_window.index == @actor.shield_hand_slot then @item_windows[0].refresh @item_windows[-1].refresh elsif @right_window.index == 0 @item_windows[@actor.shield_hand_slot].refresh #refresh shield slot end end if @right_window.index == 0 and @actor.ignore_offhand? != true then if @item_window == @item_windows[-1] then @item_windows[0].refresh elsif @item_window == @item_windows[0] then @item_windows[-1].refresh end end end @right_window.index = save @right_window.scroll_fix_off @right_window.item_fix_off @actor.equip_type_force = nil end #========================================================= # Convert index to equip part #========================================================= def index_to_equip_part(index) #return index of slot in the array [0, @actor.armor_slots, actor.weapon_slots] if index >= @actor.weapon_slots.size #if armor return index - (@actor.weapon_slots.size - 1) elsif index >= 1 #if extra weapon return index + [@actor.armor_slots.size, 4].max #make it last else return 0 end end #========================================================= # Convert index to equip kind #========================================================= def index_to_equip_kind(index) #return index of slot in either actor.weapon_slots or actor.armor_slots i = index_to_equip_part(index) if index >= @actor.weapon_slots.size #if armor set = @actor.armor_slots[i-1] else #if weapon i = i == 0 ? 0 : i - [@actor.armor_slots.size, 4].max set = @actor.weapon_slots[i] end return set != nil ? set : 0 end end #end scene_equip #========================================================= # Window_EquipRight #========================================================= class Window_EquipRight < Window_Selectable def item_fix_on #fix window @fixed_item = @data[self.index] @fixed = true end def item_fix_off #stop fixing window @fixed_item = nil @fixed = false end #========================================================= # Dont scroll right window if you press L or R #========================================================= def update if Input.repeat?(Input::R) or Input.repeat?(Input::L) then return else super end end #========================================================= # Draws equipped items with support of translucent and cursed items #========================================================= def draw_item_name(item, x, y, translucent = false) if item == nil return end bitmap = RPG::Cache.icon(item.icon_name) if item.cursed self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24)) self.contents.font.color = G7_MS_MOD::CURSED_COLOR elsif translucent self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), 128) self.contents.font.color = disabled_color else self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24)) self.contents.font.color = normal_color end self.contents.draw_text(x + 28, y, 212, 32, item.name) end alias g7_ms_window_equipright_item item #========================================================= # Prevent needless update of item quantities in item window #========================================================= def item #this ensures that the number of items doesn't get updated if you move #cursor in item window return @fixed_item if @fixed return g7_ms_window_equipright_item end #========================================================= # Change the height of right windows to fit the slots #========================================================= alias g7_ms_window_equipright_initialize initialize def initialize(actor) #init with a different height g7_ms_window_equipright_initialize(actor) h = (actor.weapon_slots.size + actor.armor_slots.size) * 32 #total height #of right window self.contents = Bitmap.new(width - 32, h) #change the height refresh end #========================================================= # Shows the slot names and the name of the items you have equipped #========================================================= def refresh #remplaced method to show caption of all items and slot self.contents.clear @data = [] #------------------------------------------------------------------------------ #Begin Multi-slot equipment script Edit #------------------------------------------------------------------------------ self.contents.font.name = G7_MS_MOD::FONT_NAME for i in 0...@actor.weapon_slots.size @data.push($data_weapons[@actor.weapon_ids[i]]) #push name of weapon end for i in 0...@actor.armor_slots.size @data.push($data_armors[@actor.armor_ids[i]]) #push name of armor end @caption = [] for i in 0...@actor.weapon_slots.size @caption.push(@actor.weapon_slot_names[i]) #push name of weapon slots end for i in 0...@actor.armor_slots.size @caption.push(@actor.armor_slot_names[@actor.armor_slots[i]-1]) #push name of armor slot end @item_max = @data.size if @actor.translucent_texts == nil then @actor.translucent_texts = Array.new end for i in 0...@data.size if @caption[i] != nil self.contents.font.color = system_color self.contents.draw_text(4, 32 * i, 92, 32, @caption[i]) #draw name of slots end draw_item_name(@data[i], 92, 32 * i, @actor.translucent_texts[i]) #draw name of equipment end #support for other script if defined? xrxs_additional_refresh xrxs_additional_refresh end #------------------------------------------------------------------------------ # End Multi-slot equipment script Edit #------------------------------------------------------------------------------ end end #========================================================= # New class to show equipitem in offhand #========================================================= class Window_EquipOffHand < Window_EquipItem def refresh if self.contents != nil self.contents.dispose self.contents = nil end @data = [] # Add equippable weapons weapon_set = $data_classes[@actor.class_id].weapon_set for i in 1...$data_weapons.size if $game_party.weapon_number(i) > 0 and weapon_set.include?(i) weapon = $data_weapons[i] if weapon.needs_offhand == false if G7_MS_MOD::TWOHANDED_IN_OFFHAND != false and weapon.nb_hands <= 1 then @data.push(weapon) end end end end # Add blank page @data.push(nil) # Make a bit map and draw all items @item_max = @data.size self.contents = Bitmap.new(width - 32, row_max * 32) self.contents.font.name = G7_MS_MOD::FONT_NAME #self.contents.font.size = 24 for i in 0...@item_max-1 draw_item(i) end if G7_MS_MOD::SHOW_REMOVE then i += 1 x = 4 + i % @column_max * (288 + 32) y = i / @column_max * 32 self.contents.draw_text(x+4, y, 100, 32, '[Remove]') end end end class Window_Selectable < Window_Base def scroll_fix_on @scroll_fixed = true end def scroll_fix_off @scroll_fixed = false update_cursor_rect end #========================================================= # Prevents unwanted scrolling #========================================================= alias g7_ms_update_cursor_rect update_cursor_rect def update_cursor_rect #This prevents the windows from scrolling if scroll is fixed #This was added to ensure that if there are few slots, the right equip #screen doesn't scroll needlessly return if @scroll_fixed g7_ms_update_cursor_rect end #========================================================= # Shows a new status window if Status_window_arrange is true #========================================================= if G7_MS_MOD::STATUS_WINDOW_ARRANGE class Window_Status < Window_Base def refresh #------------------------------------------------------------------------------ #Begin Multi-slot equipment script Edit #------------------------------------------------------------------------------ self.contents.font.name = G7_MS_MOD::FONT_NAME #------------------------------------------------------------------------------ # End Multi-slot equipment script Edit #------------------------------------------------------------------------------ self.contents.clear draw_actor_graphic(@actor, 40, 112) draw_actor_name(@actor, 4, 0) draw_actor_class(@actor, 4 + 144, 0) draw_actor_level(@actor, 96, 32) draw_actor_state(@actor, 96, 64) draw_actor_hp(@actor, 96, 112, 172) draw_actor_sp(@actor, 96, 144, 172) draw_actor_parameter(@actor, 96, 192, 0) draw_actor_parameter(@actor, 96, 224, 1) draw_actor_parameter(@actor, 96, 256, 2) draw_actor_parameter(@actor, 96, 304, 3) draw_actor_parameter(@actor, 96, 336, 4) draw_actor_parameter(@actor, 96, 368, 5) draw_actor_parameter(@actor, 96, 400, 6) #------------------------------------------------------------------------------ #Begin Multi-slot equipment script Edit #------------------------------------------------------------------------------ if G7_MS_MOD::EVADE draw_actor_parameter(@actor, 96, 432, 7) # activate if you have a draw_actor_paramter method that draw evade end self.contents.font.color = system_color self.contents.draw_text(320, 16, 80, 32, 'Exp') self.contents.draw_text(320, 48, 80, 32, 'Nastêpny') self.contents.font.color = normal_color self.contents.draw_text(320 + 80, 16, 84, 32, @actor.exp_s, 2) self.contents.draw_text(320 + 80, 48, 84, 32, @actor.next_rest_exp_s, 2) self.contents.font.color = system_color self.contents.draw_text(320, 80, 96, 32, 'Ekwipunek') for i in 0...@actor.weapon_slots.size draw_item_name($data_weapons[@actor.weapon_ids[i]], 320 + 16, 80 + 24 * (i+1)) end for i in 0...@actor.armor_slots.size draw_item_name($data_armors[@actor.armor_ids[i]], 320 + 16, 200 + 24 * (i - 4 + @actor.weapon_slots.size)) end #------------------------------------------------------------------------------ # End Multi-slot equipment script Edit #------------------------------------------------------------------------------ end end end end