- #============================================================================== 
- # ▲スロット式装備システム(RGSS3) 
- # 武器に「スロット数」というパラメータを設定し、 
- # その数だけ装飾品を装備できるようにします。 
- # 武器を変えれば、スロット数も変動します。 
- ################################################### 
- #  设定槽数方法:在武器的备注栏写   ############### 
- #  <技能槽 x>  (x是任意数字)       ############### 如果你懂脚本 
- #  即可。                         ############### 那么可以在120行 
- ################################################# 改有关的正则式 
- # 制作元:Lemon slice [url]http://www.lemon-slice.net/[/url] 
- #============================================================================== 
- #============================================================================== 
- # ■ Game_Actor 
- #------------------------------------------------------------------------------ 
- #  アクターを扱うクラスです。このクラスは Game_Actors クラス($game_actors) 
- # の内部で使用され、Game_Party クラス($game_party)からも参照されます。 
- #============================================================================== 
-   
- class Game_Actor < Game_Battler 
-   #-------------------------------------------------------------------------- 
-   # ● 装備品の初期化 
-   #     equips : 初期装備の配列 
-   #-------------------------------------------------------------------------- 
-   def init_equips(equips) 
-     @equips = Array.new(equip_slots.size) { Game_BaseItem.new } 
-     equips.each_with_index do |item_id, i| 
-       etype_id = index_to_etype_id(i) 
-       slot_id = empty_slot(etype_id) 
-       @equips[slot_id].set_equip(etype_id == 0, item_id) if slot_id 
-     end 
-     if equip_slots.size > @equips.size 
-       size = equip_slots.size - @equips.size 
-       size.times { @equips.push(Game_BaseItem.new) } 
-     end 
-     refresh 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ● 装備の変更 
-   #     slot_id : 装備スロット ID 
-   #     item    : 武器/防具(nil なら装備解除) 
-   #-------------------------------------------------------------------------- 
-   def change_equip(slot_id, item, dev_flag = false) 
-     return unless trade_item_with_party(item, equips[slot_id]) 
-     return if item && equip_slots[slot_id] != item.etype_id 
-     if equip_slots.size > @equips.size 
-       size = equip_slots.size - @equips.size 
-       size.times { @equips.push(Game_BaseItem.new) } 
-     end 
-     @equips[slot_id].object = item 
-     return if dev_flag 
-     skill_slot_reset 
-     release_unequippable_items 
-     refresh 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ● スキルスロット数の更新 
-   #-------------------------------------------------------------------------- 
-   def skill_slot_reset 
-     if equip_slots.size > @equips.size 
-       size = equip_slots.size - @equips.size 
-       size.times { @equips.push(Game_BaseItem.new) } 
-     elsif equip_slots.size < @equips.size 
-       size = @equips.size - equip_slots.size 
-       size.times do 
-         change_equip(-1, nil, true) 
-         @equips.pop 
-       end 
-     end 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ● 装備を全て外す 
-   #-------------------------------------------------------------------------- 
-   def clear_equipments 
-     5.times do |i| 
-       change_equip(i, nil) if equip_change_ok?(i) 
-     end 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ● 最強装備 
-   #-------------------------------------------------------------------------- 
-   def optimize_equipments 
-     clear_equipments 
-     4.times do |i| 
-       next if !equip_change_ok?(i) 
-       items = $game_party.equip_items.select do |item| 
-         item.etype_id == equip_slots[i] && 
-         equippable?(item) && item.performance >= 0 
-       end 
-       change_equip(i, items.max_by {|item| item.performance }) 
-     end 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ● 装備スロットの配列を取得 
-   #-------------------------------------------------------------------------- 
-   def equip_slots 
-     slot = [0,1,2,3]                       # 通常 
-     slot = [0,0,2,3] if dual_wield?        # 二刀流 
-     skill_slots.times { slot.push(4) } 
-     return slot 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ● スキルスロットの最大数を取得 
-   #-------------------------------------------------------------------------- 
-   def skill_slots 
-     if dual_wield? 
-       slot1 = set_skill_slots(weapons[0]) 
-       slot2 = set_skill_slots(weapons[1]) 
-       slot = slot1 + slot2 
-     else 
-       slot = set_skill_slots(weapons[0]) 
-     end 
-     return [[slot, slot].min, 1].max 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ● スキルスロットの最大数を設定 
-   #-------------------------------------------------------------------------- 
-   def set_skill_slots(weapon) 
-     return 0 if weapon == nil 
-     n = /<技能槽\s+(\d+)>/ =~ weapon.note ? $1.to_i : 1 #被修改 
-     return n 
-   end 
- end 
- #============================================================================== 
- # ■ Window_EquipSlot 
- #------------------------------------------------------------------------------ 
- #  装備画面で、アクターが現在装備しているアイテムを表示するウィンドウです。 
- #============================================================================== 
-   
- class Window_EquipSlot < Window_Selectable 
-   #-------------------------------------------------------------------------- 
-   # ● 項目の描画 
-   #-------------------------------------------------------------------------- 
-   def draw_item(index) 
-     return unless @actor 
-     rect = item_rect_for_text(index) 
-     change_color(system_color, enable?(index)) 
-     draw_text(rect.x, rect.y, 92, line_height, slot_name(index)) if index <= 4 
-     draw_item_name(@actor.equips[index], rect.x + 92, rect.y, enable?(index)) 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ● リフレッシュ 
-   #-------------------------------------------------------------------------- 
-   def refresh 
-     create_contents 
-     draw_all_items 
-   end 
- end 
- #============================================================================== 
- # ■ Window_Status 
- #------------------------------------------------------------------------------ 
- #  ステータス画面で表示する、フル仕様のステータスウィンドウです。 
- #============================================================================== 
-   
- class Window_Status < Window_Selectable 
-   #-------------------------------------------------------------------------- 
-   # ● ブロック 3 の描画 
-   #-------------------------------------------------------------------------- 
-   def draw_block3(y) 
-     draw_parameters(32, y) 
-   end 
- end 
- #============================================================================== 
- # ■ Window_StatusEquip 
- #------------------------------------------------------------------------------ 
- #  ステータス画面で、アクターが現在装備しているアイテムを表示するウィンドウです。 
- #============================================================================== 
-   
- class Window_StatusEquip < Window_Selectable 
-   #-------------------------------------------------------------------------- 
-   # ● オブジェクト初期化 
-   #-------------------------------------------------------------------------- 
-   def initialize 
-     x = 272 
-     y = line_height * 7 
-     width = 224 
-     super(x, y, width, window_height) 
-     self.back_opacity = 0 
-     self.opacity = 0 
-     self.active = true 
-     self.index = 0 
-     [url=home.php?mod=space&uid=95897]@actor[/url] = nil 
-     refresh 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ● ウィンドウ高さの取得 
-   #-------------------------------------------------------------------------- 
-   def window_height 
-     fitting_height(visible_line_number) 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ● 表示行数の取得 
-   #-------------------------------------------------------------------------- 
-   def visible_line_number 
-     return 6 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ● アクターの設定 
-   #-------------------------------------------------------------------------- 
-   def actor=(actor) 
-     return if @actor == actor 
-     @actor = actor 
-     refresh 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ● フレーム更新 
-   #-------------------------------------------------------------------------- 
-   def update 
-     super 
-     if @item_window 
-       @item_window.slot_id = index < 4 ? index : 4 
-     end 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ● 項目数の取得 
-   #-------------------------------------------------------------------------- 
-   def item_max 
-     @actor ? @actor.equip_slots.size : 0 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ● アイテムの取得 
-   #-------------------------------------------------------------------------- 
-   def item 
-     @actor ? @actor.equips[index] : nil 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ● 項目の描画 
-   #-------------------------------------------------------------------------- 
-   def draw_item(index) 
-     return unless @actor 
-     rect = item_rect_for_text(index) 
-     change_color(system_color, true) 
-     draw_item_name(@actor.equips[index], rect.x, rect.y, true) 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ● リフレッシュ 
-   #-------------------------------------------------------------------------- 
-   def refresh 
-     create_contents 
-     draw_all_items 
-   end 
- end 
- #============================================================================== 
- # ■ Scene_Status 
- #------------------------------------------------------------------------------ 
- #  ステータス画面の処理を行うクラスです。 
- #============================================================================== 
-   
- class Scene_Status < Scene_MenuBase 
-   #-------------------------------------------------------------------------- 
-   # ● 開始処理 
-   #-------------------------------------------------------------------------- 
-   def start 
-     super 
-     @status_window = Window_Status.new(@actor) 
-     @status_window.set_handler(:cancel,   method(:return_scene)) 
-     @status_window.set_handler(:pagedown, method(:next_actor)) 
-     @status_window.set_handler(:pageup,   method(:prev_actor)) 
-     create_slot_window 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ● スロットウィンドウの作成 
-   #-------------------------------------------------------------------------- 
-   def create_slot_window 
-     @slot_window = Window_StatusEquip.new 
-     @slot_window.actor = @actor 
-   end 
-   #-------------------------------------------------------------------------- 
-   # ● アクターの切り替え 
-   #-------------------------------------------------------------------------- 
-   def on_actor_change 
-     @status_window.actor = @actor 
-     @status_window.activate 
-     @slot_window.actor = @actor 
-   end 
- end