<META content="Namo WebEditor v6.0" name=generator> 장비 화면을 개조 시킨 스크립트입니다. 최강 장비, 전체해제 항목이 추가되 었습니다. 최강 장비는 무기의 경우 공경력, 방어구는 물리 방어도가 가장 높은 장비품이 자동으로 선택 됩니다. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ #_/ ◆장비 화면 개조 - KGC_EquipAlter◆ #_/---------------------------------------------------------------------------- #_/ 장비 화면을 개조해,[최강 장비][전해제]기능을 추가합니다. #_/ [최강 장비]는 「무기·순·두·신체」마셔 변경합니다(장식품은 무시). #_/============================================================================ #_/ ≪장비 확장[EquipExtension]≫보다 위 #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ #============================================================================== # ★ 커스터마이즈 항목 ★ #===== ========================================================================= module KGC # ◆「장비 변경」명칭 EA_STRING_EQUIP = "장비 변경" # ◆「최강 장비」명칭 EA_STRING_STRONGEST_EQUIP = "최강 장비" # ◆「전체 해제」명칭 EA_STRING_ALL_RELEASE = "전체 해제" # ◆「장비 변경」헬프 EA_HELP_EQUIP = "장비 무기를 변경합니다. " # ◆「최강 장비」헬프 EA_HELP_STRONGEST_EQUIP = "자동적으로, 가장 강력한 장비로 변경합니다." # ◆「전체 해제」헬프 EA_HELP_ALL_RELEASE = "모든 장비품을 제외합니다. " end #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★ $imported["EquipAlter"] = true # 優先度設定用?性(未使用) $game_special_elements["equip_prior"] = /最?優先度(d+)/ #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★ #============================================================================== # ■ Window_EquipControl #------------------------------------------------------------------------------ # ?備?面で、操作を選?するウィンドウです。 #============================================================================== class Window_EquipControl < Window_Selectable #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- def initialize super(0, 0, 640, 64) self.contents = Bitmap.new(width - 32, height - 32) @commands = [KGC::EA_STRING_EQUIP, KGC::EA_STRING_STRONGEST_EQUIP, KGC::EA_STRING_ALL_RELEASE] @item_max = @commands.size @column_max = @commands.size @item_width = (width - 32) / @commands.size self.z = 1000 self.index = 0 refresh end #-------------------------------------------------------------------------- # ● リフレッシュ #-------------------------------------------------------------------------- def refresh for i in 0...@commands.size rect = Rect.new(@item_width * i, 0, @item_width, 32) self.contents.fill_rect(rect, Color.new(0, 0, 0, 0)) self.contents.font.color = system_color self.contents.draw_text(rect, @commands[i], 1) end end #-------------------------------------------------------------------------- # ● カ?ソルの矩形更新 #-------------------------------------------------------------------------- def update_cursor_rect if index != -1 self.cursor_rect.set(@item_width * index, 0, @item_width, 32) end end #-------------------------------------------------------------------------- # ● ヘルプテキスト更新 #-------------------------------------------------------------------------- def update_help case self.index when 0 @help_window.set_text(KGC::EA_HELP_EQUIP) when 1 @help_window.set_text(KGC::EA_HELP_STRONGEST_EQUIP) when 2 @help_window.set_text(KGC::EA_HELP_ALL_RELEASE) end end end #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★ #============================================================================== # ■ Window_EquipLeft #============================================================================== class Window_EquipLeft < Window_Base #-------------------------------------------------------------------------- # ● 公開インスタンス?? #-------------------------------------------------------------------------- attr_accessor :new_equip # 選?中の?備品 attr_accessor :last_str # ?更前の腕力 attr_accessor :last_dex # ?更前の器用さ attr_accessor :last_agi # ?更前の素早さ attr_accessor :last_int # ?更前の魔力 #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- alias initialize_KGC_EquipAlter initialize def initialize(actor) # 元の?理を?行 initialize_KGC_EquipAlter(actor) # 初期能力値を保存 @new_equip, @last_equip = nil, nil @last_str = @actor.str @last_dex = @actor.dex @last_agi = @actor.agi @last_int = @actor.int end #-------------------------------------------------------------------------- # ● リフレッシュ #-------------------------------------------------------------------------- def refresh self.contents.clear draw_actor_name(@actor, 4, 0) draw_actor_level(@actor, 4, 32) if $imported["EquipExtension"] && KGC::EEX_USE_EP if KGC::EEX_DRAW_EP_MAX self.contents.font.color = system_color self.contents.draw_text(140, 0, 32, 32, KGC::EEX_EP_NAME) self.contents.font.color = @actor.ep == 0 ? knockout_color : normal_color self.contents.draw_text(172, 0, 24, 32, @actor.ep.to_s, 2) self.contents.font.color = normal_color self.contents.draw_text(196, 0, 16, 32, "/", 1) self.contents.draw_text(212, 0, 24, 32, @actor.max_ep.to_s, 2) else self.contents.font.color = system_color self.contents.draw_text(180, 0, 32, 32, KGC::EEX_EP_NAME) self.contents.font.color = @actor.ep == 0 ? knockout_color : normal_color self.contents.draw_text(212, 0, 24, 32, @actor.ep.to_s, 2) end end self.contents.font.color = system_color self.contents.draw_text(4, 64, 72, 32, $data_system.words.atk) self.contents.draw_text(4, 96, 72, 32, $data_system.words.pdef) self.contents.draw_text(4, 128, 72, 32, $data_system.words.mdef) self.contents.draw_text(120, 32, 72, 32, $data_system.words.str) self.contents.draw_text(120, 64, 72, 32, $data_system.words.dex) self.contents.draw_text(120, 96, 72, 32, $data_system.words.agi) self.contents.draw_text(120, 128, 72, 32, $data_system.words.int) if @new_atk != nil self.contents.font.color = @actor.atk > @new_atk ? text_color(2) : @actor.atk < @new_atk ? text_color(3) : normal_color self.contents.draw_text(80, 64, 36, 32, @new_atk.to_s, 2) else self.contents.font.color = normal_color self.contents.draw_text(80, 64, 36, 32, @actor.atk.to_s, 2) end if @new_pdef != nil self.contents.font.color = @actor.pdef > @new_pdef ? text_color(2) : @actor.pdef < @new_pdef ? text_color(3) : normal_color self.contents.draw_text(80, 96, 36, 32, @new_pdef.to_s, 2) else self.contents.font.color = normal_color self.contents.draw_text(80, 96, 36, 32, @actor.pdef.to_s, 2) end if @new_mdef != nil self.contents.font.color = @actor.mdef > @new_mdef ? text_color(2) : @actor.mdef < @new_mdef ? text_color(3) : normal_color self.contents.draw_text(80, 128, 36, 32, @new_mdef.to_s, 2) else self.contents.font.color = normal_color self.contents.draw_text(80, 128, 36, 32, @actor.mdef.to_s, 2) end if @new_str != nil self.contents.font.color = @last_str > @new_str ? text_color(2) : @last_str < @new_str ? text_color(3) : normal_color self.contents.draw_text(200, 32, 36, 32, @new_str.to_s, 2) else self.contents.font.color = normal_color self.contents.draw_text(200, 32, 36, 32, @actor.str.to_s, 2) end if @new_dex != nil self.contents.font.color = @last_dex > @new_dex ? text_color(2) : @last_dex < @new_dex ? text_color(3) : normal_color self.contents.draw_text(200, 64, 36, 32, @new_dex.to_s, 2) else self.contents.font.color = normal_color self.contents.draw_text(200, 64, 36, 32, @actor.dex.to_s, 2) end if @new_agi != nil self.contents.font.color = @last_agi > @new_agi ? text_color(2) : @last_agi < @new_agi ? text_color(3) : normal_color self.contents.draw_text(200, 96, 36, 32, @new_agi.to_s, 2) else self.contents.font.color = normal_color self.contents.draw_text(200, 96, 36, 32, @actor.agi.to_s, 2) end if @new_int != nil self.contents.font.color = @last_int > @new_int ? text_color(2) : @last_int < @new_int ? text_color(3) : normal_color self.contents.draw_text(200, 128, 36, 32, @new_int.to_s, 2) else self.contents.font.color = normal_color self.contents.draw_text(200, 128, 36, 32, @actor.int.to_s, 2) end end #-------------------------------------------------------------------------- # ● ?備?更後のパラメ?タ設定 #-------------------------------------------------------------------------- def set_new_parameters(new_atk, new_pdef, new_mdef, new_st = [nil, nil, nil, nil]) if @new_atk != new_atk || @new_pdef != new_pdef || @new_mdef != new_mdef || @new_str != new_st[0] || @new_dex != new_st[1] || @new_agi != new_st[2] || @new_int != new_st[3] @new_atk = new_atk @new_pdef = new_pdef @new_mdef = new_mdef @new_str = new_st[0] @new_dex = new_st[1] @new_agi = new_st[2] @new_int = new_st[3] @last_equip = @new_equip refresh return end end end #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★ #============================================================================== # ■ Window_EquipRight #============================================================================== class Window_EquipRight < Window_Selectable #-------------------------------------------------------------------------- # ● オブジェクト初期化 # actor : アクタ? #-------------------------------------------------------------------------- alias initialize_KGC_EquipAlter initialize def initialize(actor) # 元の?理を?行 initialize_KGC_EquipAlter(actor) self.active = false end end #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★ #============================================================================== # ■ Scene_Equip #============================================================================== class Scene_Equip #-------------------------------------------------------------------------- # ● オブジェクト初期化 # actor_index : アクタ?インデックス # equip_index : ?備インデックス #-------------------------------------------------------------------------- alias initialize_KGC_EquipAlter initialize def initialize(actor_index = 0, equip_index = 0) # 元の?理を?行 initialize_KGC_EquipAlter(actor_index, equip_index) # ?備タイプを定義 if $imported["EquipExtension"] actor = $game_party.actors[@actor_index] @equip_type = actor.equip_type.dup if actor.two_swords? for i in 1...actor.ts_number @equip_type[i] = 0 end end else @equip_type = [0, 1, 2, 3, 4] end end #-------------------------------------------------------------------------- # ● メイン?理 #-------------------------------------------------------------------------- alias main_KGC_EquipAlter main def main # 操作ウィンドウを作成 @control_window = Window_EquipControl.new @control_window.back_opacity = 160 @control_window.y = 64 if $imported["HelpExtension"] # 元の?理を?行 main_KGC_EquipAlter # ウィンドウを解放 @control_window.dispose end #-------------------------------------------------------------------------- # ● リフレッシュ #-------------------------------------------------------------------------- unless $imported["EquipExtension"] def refresh # アイテムウィンドウの可視?態設定 @item_window1.visible = (@right_window.index == 0) @item_window2.visible = (@right_window.index == 1) @item_window3.visible = (@right_window.index == 2) @item_window4.visible = (@right_window.index == 3) @item_window5.visible = (@right_window.index == 4) # 現在?備中のアイテムを取得 item1 = @right_window.item # 現在のアイテムウィンドウを @item_window に設定 case @right_window.index when 0 @item_window = @item_window1 when 1 @item_window = @item_window2 when 2 @item_window = @item_window3 when 3 @item_window = @item_window4 when 4 @item_window = @item_window5 end # ライトウィンドウがアクティブの場合 if @right_window.active # ?備?更後のパラメ?タを消去 @left_window.set_new_parameters(nil, nil, nil) end # アイテムウィンドウがアクティブの場合 if @item_window.active # 現在選?中のアイテムを取得 item2 = @item_window.item # ?備を?更 last_hp = @actor.hp last_sp = @actor.sp if $imported["EquipDetailSetting"] @actor.equip(@right_window.index, item2 == nil ? 0 : item2.id, true) else @actor.equip(@right_window.index, item2 == nil ? 0 : item2.id) end # ?備?更後のパラメ?タを取得 new_atk = @actor.atk new_pdef = @actor.pdef new_mdef = @actor.mdef new_st = [@actor.str, @actor.dex, @actor.agi, @actor.int] # ?備を?す @actor.equip(@right_window.index, item1 == nil ? 0 : item1.id) @actor.hp = last_hp @actor.sp = last_sp # レフトウィンドウに描? @left_window.set_new_parameters(new_atk, new_pdef, new_mdef, new_st) end end end #-------------------------------------------------------------------------- # ● フレ?ム更新 #-------------------------------------------------------------------------- def update if @control_window.help_window == nil @control_window.help_window = @help_window end # ウィンドウを更新 @left_window.update @right_window.update @item_window.update @control_window.update refresh # ライトウィンドウがアクティブの場合: update_right を呼ぶ if @right_window.active update_right return end # アイテムウィンドウがアクティブの場合: update_item を呼ぶ if @item_window.active update_item return end # 操作ウィンドウがアクティブの場合: update_control を呼ぶ if @control_window.active update_control return end end #-------------------------------------------------------------------------- # ● フレ?ム更新 (ライトウィンドウがアクティブの場合) #-------------------------------------------------------------------------- def update_right # B ボタンが押された場合 if Input.trigger?(Input::B) # キャンセル SE を演奏 $game_system.se_play($data_system.cancel_se) # 操作ウィンドウに切り替え @right_window.active = false @control_window.active = true @control_window.visible = true # リフレッシュ refresh return end # C ボタンが押された場合 if Input.trigger?(Input::C) # ?備固定の場合 if @actor.equip_fix?(@right_window.index) # ブザ? SE を演奏 $game_system.se_play($data_system.buzzer_se) return end # 決定 SE を演奏 $game_system.se_play($data_system.decision_se) # アイテムウィンドウをアクティブ化 @right_window.active = false @item_window.active = true @item_window.index = 0 return end end #-------------------------------------------------------------------------- # ● フレ?ム更新 (操作ウィンドウがアクティブの場合) #-------------------------------------------------------------------------- def update_control # B ボタンが押された場合 if Input.trigger?(Input::B) # キャンセル SE を演奏 $game_system.se_play($data_system.cancel_se) # メニュ??面に切り替え $scene = Scene_Menu.new(2) return end # C ボタンが押された場合 if Input.trigger?(Input::C) # カ?ソル位置で分岐 case @control_window.index when 0 # ?備?更 # 決定 SE を演奏 $game_system.se_play($data_system.decision_se) # ライトウィンドウに切り替え @right_window.active = true @right_window.index = 0 if @right_window.index == -1 @control_window.active = false @control_window.visible = false when 1 # 最??備 # ?備 SE を演奏 $game_system.se_play($data_system.equip_se) # ?備最大?を取得 if $imported["EquipExtension"] mx = @equip_type.size else mx = 5 end for i in 0...mx # ?備固定の場合は次へ next if @actor.equip_fix?(i) # ?備の種類で分岐 tw = $imported["EquipExtension"] && @actor.two_swords? case i when (tw ? 0...@actor.ts_number : 0) # 武器 # 最?武器?備 equip_strongest_weapon(i) when (tw ? @actor.ts_number : 1)...mx # 防具 # 最?防具?備 equip_strongest_armor(@equip_type[i], i) end end # 初期能力を更新 @left_window.last_str = @actor.str @left_window.last_dex = @actor.dex @left_window.last_agi = @actor.agi @left_window.last_int = @actor.int # レフトウィンドウを初期化 @left_window.set_new_parameters(nil, nil, nil) # ウィンドウをリフレッシュ @left_window.refresh @right_window.refresh @item_window1.refresh @item_window2.refresh @item_window3.refresh @item_window4.refresh @item_window5.refresh if $imported["EquipExtension"] && KGC::EEX_EQUIP_TYPE_EXT.size > 0 for i in 0...KGC::EEX_EQUIP_TYPE_EXT.size eval("@item_window#{i + 6}.refresh") end end when 2 # 全解除 # ?備 SE を演奏 $game_system.se_play($data_system.equip_se) # ?備最大?を取得 if $imported["EquipExtension"] mx = @equip_type.size else mx = 5 end for i in 0...mx # ?備固定でない場合は解除 @actor.equip(i, 0) unless @actor.equip_fix?(i) end # 初期能力を更新 @left_window.last_str = @actor.str @left_window.last_dex = @actor.dex @left_window.last_agi = @actor.agi @left_window.last_int = @actor.int # レフトウィンドウを初期化 @left_window.set_new_parameters(nil, nil, nil) # ウィンドウをリフレッシュ @left_window.refresh @right_window.refresh @item_window1.refresh @item_window2.refresh @item_window3.refresh @item_window4.refresh @item_window5.refresh if $imported["EquipExtension"] && KGC::EEX_EQUIP_TYPE_EXT.size > 0 for i in 0...KGC::EEX_EQUIP_TYPE_EXT.size eval("@item_window#{i + 6}.refresh") end end end return end # R ボタンが押された場合 if Input.trigger?(Input::R) # カ?ソル SE を演奏 $game_system.se_play($data_system.cursor_se) # 次のアクタ?へ @actor_index += 1 @actor_index %= $game_party.actors.size # 別の?備?面に切り替え $scene = Scene_Equip.new(@actor_index, @right_window.index) return end # L ボタンが押された場合 if Input.trigger?(Input::L) # カ?ソル SE を演奏 $game_system.se_play($data_system.cursor_se) # 前のアクタ?へ @actor_index += $game_party.actors.size - 1 @actor_index %= $game_party.actors.size # 別の?備?面に切り替え $scene = Scene_Equip.new(@actor_index, @right_window.index) return end end #-------------------------------------------------------------------------- # ● フレ?ム更新 (アイテムウィンドウがアクティブの場合) #-------------------------------------------------------------------------- alias update_item_KGC_EquipAlter update_item def update_item # 選?中の?備品を更新 @left_window.new_equip = @item_window.item # B ボタンが押された場合 if Input.trigger?(Input::B) # キャンセル SE を演奏 $game_system.se_play($data_system.cancel_se) # レフトウィンドウを初期化 @left_window.new_equip = nil @left_window.set_new_parameters(nil, nil, nil) # ライトウィンドウをアクティブ化 @right_window.active = true @item_window.active = false @item_window.index = -1 return end # C ボタンが押された場合 if Input.trigger?(Input::C) # アイテムウィンドウで現在選?されているデ?タを取得 item = @item_window.item if $imported["EquipExtension"] && KGC::EEX_USE_EP # EP判定 if item != nil && item.ep_cost > @actor.ep # ブザ? SE を演奏 $game_system.se_play($data_system.buzzer_se) return end end # ?備 SE を演奏 $game_system.se_play($data_system.equip_se) # ?備を?更 @actor.equip(@right_window.index, item == nil ? 0 : item.id) # オ?トステ?トを更新 if $imported["EquipDetailSetting"] if $imported["EquipExtension"] && @actor.two_swords? @actor.update_auto_state(nil, $data_weapons[@actor.weapon_id(@right_window.index)], true) else @actor.update_auto_state(nil, $data_weapons[@actor.weapon_id], true) end end if $imported["EquipExtension"] for i in (@actor.two_swords? ? @actor.ts_number : 1)...@actor.equip_type.size @actor.update_auto_state(nil, $data_armors[@actor.armor_id[i]]) end else for i in 1..4 @actor.update_auto_state(nil, $data_armors[eval("@actor.armor#{i}_id")]) end end # 初期能力を更新 @left_window.last_str = @actor.str @left_window.last_dex = @actor.dex @left_window.last_agi = @actor.agi @left_window.last_int = @actor.int # ライトウィンドウをアクティブ化 @right_window.active = true @item_window.active = false @item_window.index = -1 # レフトウィンドウを初期化 @left_window.new_equip = nil @left_window.set_new_parameters(nil, nil, nil) # ライトウィンドウ、アイテムウィンドウの?容を再作成 @right_window.refresh @item_window1.refresh @item_window2.refresh @item_window3.refresh @item_window4.refresh @item_window5.refresh if $imported["EquipExtension"] && KGC::EEX_EQUIP_TYPE_EXT.size > 0 for i in 0...KGC::EEX_EQUIP_TYPE_EXT.size eval("@item_window#{i + 6}.refresh") end end return end # 元の?理を?行 update_item_KGC_EquipAlter end #-------------------------------------------------------------------------- # ● 最?武器?備 #-------------------------------------------------------------------------- def equip_strongest_weapon(type) # 武器リストを初期化 weapons = [] # ?備可能な武器を追加 weapon_set = $data_classes[@actor.class_id].weapon_set for i in 1...$data_weapons.size if $game_party.weapon_number(i) > 0 && weapon_set.include?(i) weapons.push($data_weapons[i]) end end # ?備可能な武器が無い場合は?る return if weapons == [] # 武器リストを逆順(IDの大きい順)に?べ替え weapons = weapons.reverse # 最?武器を初期化 strongest_weapon = weapons[0] # 最?武器を取得(攻?力で判定) for weapon in weapons strongest_weapon = weapon if strongest_weapon.atk < weapon.atk end # 現在の?備を取得 now_weapon = $data_weapons[$imported["EquipExtension"] && @actor.two_swords? ? @actor.weapon_id(type) : @actor.weapon_id] # 何も?備していない場合 if now_weapon == nil # ?備を?更 @actor.equip(type, strongest_weapon.id) # 現在の?備より?い場合 elsif strongest_weapon.atk > now_weapon.atk # ?備を?更 @actor.equip(type, strongest_weapon.id) end end #-------------------------------------------------------------------------- # ● 最?防具?備 # type : 防具の種類 # index : ?備箇所 #-------------------------------------------------------------------------- def equip_strongest_armor(type, index) # ?飾品の場合は?る return if type == 4 # 防具リストを初期化 armors = [] # ?備可能な防具を追加 armor_set = $data_classes[@actor.class_id].armor_set for i in 1...$data_armors.size if $game_party.armor_number(i) > 0 && armor_set.include?(i) if $data_armors[i].kind == type - 1 armors.push($data_armors[i]) end end end # ?備可能な防具が無い場合は?る return if armors == [] # 防具リストを逆順(IDの大きい順)に?べ替え armors = armors.reverse # 最?防具を初期化 strongest_armor = armors[0] # 最?防具を取得(物理防御で判定) for armor in armors strongest_armor = armor if strongest_armor.pdef < armor.pdef end # 現在の?備を取得 now_armor = $data_armors[$imported["EquipExtension"] ? @actor.armor_id[index] : eval("@actor.armor#{index}_id")] # 何も?備していない場合 if now_armor == nil # ?備を?更 @actor.equip(index, strongest_armor.id) # 現在の?備より?い場合 elsif strongest_armor.pdef > now_armor.pdef # ?備を?更 @actor.equip(index, strongest_armor.id) end end end