#============================================================================== # ■ RGSS3 アイテムステータス改変Ver1.01 by 星潟 #------------------------------------------------------------------------------ # このスクリプトを導入することでアイテムステータスウィンドウを # ドーピングアイテムの使用に適した形式に変更します。 # 明らかに不要な職業等の記述を排除し # 新たに攻撃力・防御力・魔法力・魔法防御・敏捷・運の値をウィンドウ内に追加します。 #============================================================================== module DETAIL_STATUS MHP = "MHP" MMP = "MMP" ATK = "攻撃" DEF = "防御" MAT = "魔力" MDF = "魔防" AGI = "敏捷" LUK = "運" #4桁ステータス用にステータスの数値の幅を追加(不要な場合は0) WIDTH_PLUS = 36 end #============================================================================== # ■ Scene_ItemBase #------------------------------------------------------------------------------ #  アイテム画面とスキル画面の共通処理を行うクラスです。 #============================================================================== class Scene_ItemBase < Scene_MenuBase #-------------------------------------------------------------------------- # ● アクターウィンドウの作成 #-------------------------------------------------------------------------- def create_actor_window @actor_window = Window_MenuActorExtra.new @actor_window.set_handler(:ok, method(:on_actor_ok)) @actor_window.set_handler(:cancel, method(:on_actor_cancel)) end end #============================================================================== # ■ Window_MenuActor #------------------------------------------------------------------------------ #  アイテムやスキルの使用対象となるアクターを選択するウィンドウです。 #============================================================================== class Window_MenuActorExtra < Window_MenuStatus #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- def initialize super(0, 0) self.visible = false end #-------------------------------------------------------------------------- # ● 能力値の描画 #-------------------------------------------------------------------------- def draw_actor_param(actor, x, y, param_id) w_p = DETAIL_STATUS::WIDTH_PLUS change_color(system_color) draw_text(x, y, 120, line_height, param_short_name(param_id)) change_color(normal_color) draw_text(x + 45 - w_p, y, 36 + w_p, line_height, actor.param(param_id), 2) end #-------------------------------------------------------------------------- # ● HP の描画 #-------------------------------------------------------------------------- def draw_actor_hp(actor, x, y, width = 140) draw_gauge(x + 28, y, width, actor.hp_rate, hp_gauge_color1, hp_gauge_color2) change_color(system_color) draw_text(x + 28, y, 30, line_height, Vocab::hp_a) draw_current_and_max_values(x, y, width, actor.hp, actor.mhp, hp_color(actor), normal_color) end #-------------------------------------------------------------------------- # ● MP の描画 #-------------------------------------------------------------------------- def draw_actor_mp(actor, x, y, width = 140) draw_gauge(x + 28, y, width, actor.mp_rate, mp_gauge_color1, mp_gauge_color2) change_color(system_color) draw_text(x + 28, y, 30, line_height, Vocab::mp_a) draw_current_and_max_values(x, y, width, actor.mp, actor.mmp, mp_color(actor), normal_color) end #-------------------------------------------------------------------------- # ● 現在値/最大値を分数形式で描画 # current : 現在値 # max : 最大値 # color1 : 現在値の色 # color2 : 最大値の色 #-------------------------------------------------------------------------- def draw_current_and_max_values(x, y, width, current, max, color1, color2) change_color(color1) xr = x + width if width < 96 draw_text(xr - 2, y, 82, line_height, current, 2) else draw_text(xr - 112, y, 82, line_height, current, 2) change_color(color2) draw_text(xr - 32, y, 12, line_height, "/", 2) draw_text(xr - 52, y, 82, line_height, max, 2) end end def param_short_name(param_id) case param_id when 0 name = DETAIL_STATUS::MHP when 1 name = DETAIL_STATUS::MMP when 2 name = DETAIL_STATUS::ATK when 3 name = DETAIL_STATUS::DEF when 4 name = DETAIL_STATUS::MAT when 5 name = DETAIL_STATUS::MDF when 6 name = DETAIL_STATUS::AGI when 7 name = DETAIL_STATUS::LUK end return name end #-------------------------------------------------------------------------- # ● 項目の描画 #-------------------------------------------------------------------------- def draw_item(index) actor = $game_party.members[index] enabled = $game_party.battle_members.include?(actor) rect = item_rect(index) draw_item_background(index) draw_actor_face(actor, 0, rect.y + 1, enabled) draw_actor_name(actor, 100, rect.y) draw_actor_icons(actor, 100, rect.y + line_height * 1) draw_actor_hp(actor, 190, rect.y + line_height * 0) draw_actor_mp(actor, 190, rect.y + line_height * 1) draw_actor_param(actor, 100, rect.y + line_height * 2, 2) draw_actor_param(actor, 100, rect.y + line_height * 3, 3) draw_actor_param(actor, 190, rect.y + line_height * 2, 4) draw_actor_param(actor, 190, rect.y + line_height * 3, 5) draw_actor_param(actor, 280, rect.y + line_height * 2, 6) draw_actor_param(actor, 280, rect.y + line_height * 3, 7) end #-------------------------------------------------------------------------- # ● 決定ボタンが押されたときの処理 #-------------------------------------------------------------------------- def process_ok $game_party.target_actor = $game_party.members[index] unless @cursor_all call_ok_handler end #-------------------------------------------------------------------------- # ● 前回の選択位置を復帰 #-------------------------------------------------------------------------- def select_last select($game_party.target_actor.index || 0) end #-------------------------------------------------------------------------- # ● アイテムのためのカーソル位置設定 #-------------------------------------------------------------------------- def select_for_item(item) @cursor_fix = item.for_user? @cursor_all = item.for_all? if @cursor_fix select($game_party.menu_actor.index) elsif @cursor_all select(0) else select_last end end end