# # 特定の装備の組み合わせで能力値アップ #  (C)2005 TYPE74RX-T # # ★ 装備箇所の数 # 通常は5ヶ所ですが、自分で増減している場合はこの数値を変更して下さい。 RX_T_EQUIP_SIZE = 5 # ★ パワーアップ専用の特殊ステートのID # ここでは 17 にしておりますが、このスクリプトのために設定した # ステートのIDに数値を変えて下さい。 RX_T_POWER_UP_STATE_NO = 17 # ★ 特殊な装備の組み合わせパターンテーブル # 下記はあくまで一例ですので、設定したい武具名にを変えて下さい。 RX_T_EQUIP_PATTERN = ["ブロンズソード", "ブロンズシールド", "ブロンズヘルム", "ブロンズアーマー", "@"] class Game_Actor < Game_Battler alias rx_t_equip equip def equip(equip_type, id) rx_t_equip(equip_type, id) # ★ 特殊装備効果判定へ rx_t_actor_equip_judge end #-------------------------------------------------------------------------- # ★ 特殊装備効果判定 #-------------------------------------------------------------------------- def rx_t_actor_equip_judge # 装備品の名前を別の変数に格納 # 装備する数を増やしている場合、適宜増やして下さい。 # 例:rx_t_equip_check[5] =(以下略) rx_t_equip_check = [] rx_t_equip_check[0] = ($data_weapons[@weapon_id] != nil ? $data_weapons[@weapon_id].name : nil) rx_t_equip_check[1] = ($data_armors[@armor1_id] != nil ? $data_armors[@armor1_id].name : nil) rx_t_equip_check[2] = ($data_armors[@armor2_id] != nil ? $data_armors[@armor2_id].name : nil) rx_t_equip_check[3] = ($data_armors[@armor3_id] != nil ? $data_armors[@armor3_id].name : nil) rx_t_equip_check[4] = ($data_armors[@armor4_id] != nil ? $data_armors[@armor4_id].name : nil) # ここで特定装備ポイントを初期化 rx_t_ok_pts = 0 for i in 0...RX_T_EQUIP_SIZE # 何を装備してもOKな箇所「@」であれば if RX_T_EQUIP_PATTERN[i] == "@" # 条件が揃ったものと見なし特定装備ポイントを1増やす rx_t_ok_pts += 1 else # 何か装備していて、且つ、特定の装備をしている場合 if rx_t_equip_check[i] != nil and rx_t_equip_check[i] == RX_T_EQUIP_PATTERN[i] # 特定装備ポイントを1増やす rx_t_ok_pts += 1 # 何も装備していない事が条件の場合 elsif rx_t_equip_check[i] == nil and RX_T_EQUIP_PATTERN[i] == nil # 特定装備ポイントを1増やす rx_t_ok_pts += 1 end end end # ステートを一旦初期化 remove_state(RX_T_POWER_UP_STATE_NO) # 特定の組み合わせの装備をしている(特定装備ポイントがRX_T_EQUIP_SIZEと同じ)なら if rx_t_ok_pts == RX_T_EQUIP_SIZE # 定数で決められた隠しステート(能力値アップ用)を付与する # 隠しステートにしておくと、見かけ上、装備によって # 能力値があがったように見せる事ができる。 add_state(RX_T_POWER_UP_STATE_NO) end end end class Window_Base < Window #-------------------------------------------------------------------------- # ★ 特殊装備効果の描画 # actor : アクター #-------------------------------------------------------------------------- def rx_t_actor_equip(actor) # 装備品の名前を別の変数に格納 # 装備する数を増やしている場合、適宜増やして下さい。 # 例:rx_t_equip_check[5] =(以下略) rx_t_equip_check = [] rx_t_equip_check[0] = ($data_weapons[actor.weapon_id] != nil ? $data_weapons[actor.weapon_id].name : nil) rx_t_equip_check[1] = ($data_armors[actor.armor1_id] != nil ? $data_armors[actor.armor1_id].name : nil) rx_t_equip_check[2] = ($data_armors[actor.armor2_id] != nil ? $data_armors[actor.armor2_id].name : nil) rx_t_equip_check[3] = ($data_armors[actor.armor3_id] != nil ? $data_armors[actor.armor3_id].name : nil) rx_t_equip_check[4] = ($data_armors[actor.armor4_id] != nil ? $data_armors[actor.armor4_id].name : nil) # ここで特定装備ポイントを初期化 rx_t_ok_pts = 0 for i in 0...RX_T_EQUIP_SIZE # 何を装備してもOKな箇所「@」であれば if RX_T_EQUIP_PATTERN[i] == "@" # 条件が揃ったものと見なし特定装備ポイントを1増やす rx_t_ok_pts += 1 else # 何か装備していて、且つ、特定の装備をしている場合 if rx_t_equip_check[i] != nil and rx_t_equip_check[i] == RX_T_EQUIP_PATTERN[i] # 特定装備ポイントを1増やす rx_t_ok_pts += 1 # 何も装備していない事が条件の場合 elsif rx_t_equip_check[i] == nil and RX_T_EQUIP_PATTERN[i] == nil # 特定装備ポイントを1増やす rx_t_ok_pts += 1 end end end # 最大HP/SPがステート変化によって上昇していた場合のために # 現在HP/SPを待避 #(メニュー画面でHP/SPが最大まで回復できるようにする) dummy_hp = actor.hp dummy_sp = actor.sp # ステートを一旦初期化 actor.remove_state(RX_T_POWER_UP_STATE_NO) # 特定の組み合わせの装備をしている(特定装備ポイントがRX_T_EQUIP_SIZEと同じ)なら if rx_t_ok_pts == RX_T_EQUIP_SIZE # 定数で決められた隠しステート(能力値アップ用)を付与する # 隠しステートにしておくと、見かけ上、装備によって # 能力値が上昇したように見せる事ができる。 actor.add_state(RX_T_POWER_UP_STATE_NO) end # 待避させていたHP/SPを代入 actor.hp = dummy_hp actor.sp = dummy_sp end end class Window_MenuStatus < Window_Selectable #-------------------------------------------------------------------------- # ● リフレッシュ #-------------------------------------------------------------------------- def refresh self.contents.clear @item_max = $game_party.actors.size for i in 0...$game_party.actors.size x = 64 y = i * 116 actor = $game_party.actors[i] # ★ 特殊装備効果の描画 rx_t_actor_equip(actor) draw_actor_graphic(actor, x - 40, y + 80) draw_actor_name(actor, x, y) draw_actor_class(actor, x + 144, y) draw_actor_level(actor, x, y + 32) draw_actor_state(actor, x + 90, y + 32) draw_actor_exp(actor, x, y + 64) draw_actor_hp(actor, x + 236, y + 32) draw_actor_sp(actor, x + 236, y + 64) end end end