#◆◇◆◇◆ ☆ 隠し装備スクリプト ver 1.01 ◇◆◇◆◇ # ☆ マスタースクリプト ver 2.00 以降専用 # サポート掲示板 http://www2.ezbbs.net/21/minto-aaa/ # by みんと =begin 更新履歴 ver 1.01(2008/2/4) 隠し装備(戦闘背景)をアクター別に設定できるように変更 セクション指定上下関係 スキル習得装備 ↓ このスクリプト 説明 スキル習得装備との併用がオススメです。 戦闘中のみ有効な隠し装備(防具)を設定できます。 設定できる隠し装備は ・特定のスキル使用した際 ・現在の戦闘背景が特定の戦闘背景の場合 の2パターンです。 ● 隠し装備(スキル)の説明 特定のスキルを使用した際に装備される隠し装備です。 この隠し装備はクラス設定で装備できなくても強制的に装備されます。 また、この隠し装備には有効ターンが設定できます。 隠し装備の有効ターンには防具の値段を使用します。 値段が1なら1ターンの間有効な隠し装備となります。 オーバードライブ等のスキルに有効かもしれません。 別の隠し装備スキルで上書きされます。 ● 隠し装備(戦闘背景)の説明 現在の戦闘背景が特定の戦闘背景の場合、 アクター別に装備される隠し装備です。 ですので、防具のボーナスやオートステートなどを利用すれば、 アクター毎に得意、不得意なフィールドなどが設定できます。 (あるアクターは川だと強いが陸では弱い等) また、この隠し装備はクラス設定が有効です。 クラスチェンジ前後で属性が違う場合等にご活用ください。 この隠し装備には有効ターンは設定できません。 別の隠し装備背景で上書きされます。 なお、隠し装備は全て戦闘終了で解除されます。 =end #============================================================================== # ☆ MINTO #------------------------------------------------------------------------------ # 様々なフラグを扱うメインモジュールです。 #============================================================================== module MINTO # 隠し装備スクリプトを有効化 ( true で有効 / false で無効 ) RGSS["secret_equip"] = true end # 隠し装備スクリプトが有効な場合に以降の処理を実行する if MINTO::RGSS["secret_equip"] == true then #============================================================================== # ☆ カスタマイズ #------------------------------------------------------------------------------ # 機能のカスタマイズをここで行います。 #============================================================================== module MINTO #------------------------------------------------------------------------- # ☆ 隠し装備の設定 #------------------------------------------------------------------------- def self.setup_secret_equip # 隠し装備用のデータを初期化(変更しない) @secret_equip = {} # スキルを使った際の隠し装備 # 記述例 : @secret_equip[スキルID] = 装備品(防具)のID @secret_equip[1] = 2 @secret_equip[2] = 3 @secret_equip[3] = 4 # 戦闘背景の隠し装備 # 必要な戦闘背景毎に下記のように初期定義してください。 # 初期定義・記述例 : @secret_equip["戦闘背景名"] = {} @secret_equip["001-Grassland01"] = {} # 隠し装備の設定 # 例 : @secret_equip["戦闘背景名"][アクターID] = 装備品(防具)のID # 設定されていない場合は隠し装備が外れます @secret_equip["001-Grassland01"][1] = 2 end #------------------------------------------------------------------------- # ☆ 隠し装備データの取得 #------------------------------------------------------------------------- def self.secret_equip # データを返す return @secret_equip end # 隠し装備用の設定を読み込む self.setup_secret_equip end #============================================================================== # ☆ MINTO_Actor_01 #------------------------------------------------------------------------------ # Game_Actorクラスの機能を強化するためのモジュールです。 #============================================================================== module MINTO_Actor_01 #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- def initialize # 隠し装備用のデータを初期化 @secret1_id = 0 @secret2_id = 0 @secret_turn = 0 # スーパークラスの処理に以降 super() end #-------------------------------------------------------------------------- # ● 隠し装備ID(スキル)の取得 #-------------------------------------------------------------------------- def secret1_id # 無効なデータの場合は初期化 @secret1_id ||= 0 # IDを返す return @secret1_id end #-------------------------------------------------------------------------- # ● 隠し装備ID(戦闘背景)の取得 #-------------------------------------------------------------------------- def secret2_id # 無効なデータの場合は初期化 @secret2_id ||= 0 # IDを返す return @secret2_id end #-------------------------------------------------------------------------- # ● 隠し装備制限ターンの取得 #-------------------------------------------------------------------------- def secret_turn # 無効なデータの場合は初期化 @secret_turn ||= 0 # 隠し装備制限ターンを返す return @secret_turn end #-------------------------------------------------------------------------- # ● 隠し装備の解除 # index : 解除するインデックス(スキル, 戦闘背景) #-------------------------------------------------------------------------- def secret_equip_out(index) # 現在装備している隠し装備(スキル)を取得 old_equip1 = Data_Armors.data[self.secret1_id] # 現在装備している隠し装備(戦闘背景)を取得 old_equip2 = Data_Armors.data[self.secret2_id] # 解除インデックスに応じて分岐 case index # 全て解除 when 0 then # オートステートを更新 update_auto_state(old_equip1, nil) update_auto_state(old_equip2, nil) # 隠し装備を初期化 self.secret1_id = 0 self.secret2_id = 0 self.secret_turn = 0 # 隠し装備(スキル)を解除 when 1 then # オートステートを更新 update_auto_state(old_equip1, nil) # 隠し装備(スキル)を初期化 self.secret1_id = 0 self.secret_turn = 0 # 隠し装備(戦闘背景)を解除 when 2 then # オートステートを更新 update_auto_state(old_equip2, nil) # 隠し装備(戦闘背景)を初期化 self.secret2_id = 0 end end #-------------------------------------------------------------------------- # ● 腕力の取得 #-------------------------------------------------------------------------- def str # スーパークラスの処理に以降 n = super # 装備している隠し装備を取得 armor1 = Data_Armors.data[self.secret1_id] armor2 = Data_Armors.data[self.secret2_id] # 隠し装備の補正値を加算 n += armor1 != nil ? armor1.str_plus : 0 n += armor2 != nil ? armor2.str_plus : 0 # 能力値を返す return n end #-------------------------------------------------------------------------- # ● 器用さの取得 #-------------------------------------------------------------------------- def dex # スーパークラスの処理に以降 n = super # 装備している隠し装備を取得 armor1 = Data_Armors.data[self.secret1_id] armor2 = Data_Armors.data[self.secret2_id] # 隠し装備の補正値を加算 n += armor1 != nil ? armor1.dex_plus : 0 n += armor2 != nil ? armor2.dex_plus : 0 # 能力値を返す return n end #-------------------------------------------------------------------------- # ● 素早さの取得 #-------------------------------------------------------------------------- def agi # スーパークラスの処理に以降 n = super # 装備している隠し装備を取得 armor1 = Data_Armors.data[self.secret1_id] armor2 = Data_Armors.data[self.secret2_id] # 隠し装備の補正値を加算 n += armor1 != nil ? armor1.agi_plus : 0 n += armor2 != nil ? armor2.agi_plus : 0 # 能力値を返す return n end #-------------------------------------------------------------------------- # ● 魔力の取得 #-------------------------------------------------------------------------- def int # スーパークラスの処理に以降 n = super # 装備している隠し装備を取得 armor1 = Data_Armors.data[self.secret1_id] armor2 = Data_Armors.data[self.secret2_id] # 隠し装備の補正値を加算 n += armor1 != nil ? armor1.int_plus : 0 n += armor2 != nil ? armor2.int_plus : 0 # 能力値を返す return n end #-------------------------------------------------------------------------- # ● 物理防御の取得 #-------------------------------------------------------------------------- def pdef # スーパークラスの処理に以降 n = super # 装備している隠し装備を取得 armor1 = Data_Armors.data[self.secret1_id] armor2 = Data_Armors.data[self.secret2_id] # 隠し装備の補正値を加算 n += armor1 != nil ? armor1.pdef : 0 n += armor2 != nil ? armor2.pdef : 0 # 能力値を返す return n end #-------------------------------------------------------------------------- # ● 魔法防御の取得 #-------------------------------------------------------------------------- def mdef # スーパークラスの処理に以降 n = super # 装備している隠し装備を取得 armor1 = Data_Armors.data[self.secret1_id] armor2 = Data_Armors.data[self.secret2_id] # 隠し装備の補正値を加算 n += armor1 != nil ? armor1.mdef : 0 n += armor2 != nil ? armor2.mdef : 0 # 能力値を返す return n end #-------------------------------------------------------------------------- # ● 回避修正の取得 #-------------------------------------------------------------------------- def eva # スーパークラスの処理に以降 n = super # 装備している隠し装備を取得 armor1 = Data_Armors.data[self.secret1_id] armor2 = Data_Armors.data[self.secret2_id] # 隠し装備の補正値を加算 n += armor1 != nil ? armor1.eva : 0 n += armor2 != nil ? armor2.eva : 0 # 能力値を返す return n end #-------------------------------------------------------------------------- # ● スキルの効果適用 # user : スキルの使用者 (バトラー) # skill : スキル(RPG::Skill) # data : 多段攻撃γ用のデータ #-------------------------------------------------------------------------- def skill_effect(user, skill, data = nil) # 戦闘中の場合 if $game_temp.in_battle == true then # 隠し装備を更新 user.secret_set(skill.id) end # 多段攻撃γが有効な場合 if MINTO::RGSS["Multi_Attackγ"] == true then # スーパークラスの処理に以降 return super(user, skill, data) # 多段攻撃γが無効な場合 else # スーパークラスの処理に以降 return super(user, skill) end end end #============================================================================== # ☆ MINTO_Sprite_Battler_01 #------------------------------------------------------------------------------ # Sprite_Battlerクラスの機能を強化するためのモジュールです。 #============================================================================== module MINTO_Sprite_Battler_01 #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- def update # バトラーが変更された場合 if @last_battler != @battler then # バトラーがアクターの場合 if @battler.class == Game_Actor then # 隠し装備(戦闘背景)を更新 @battler.secret_set(nil, $game_temp.battleback_name) end end # スーパークラスの処理に以降 super end end #============================================================================== # ■ Game_Temp #------------------------------------------------------------------------------ #  セーブデータに含まれない、一時的なデータを扱うクラスです。このクラスのイン # スタンスは $game_temp で参照されます。 #============================================================================== class Game_Temp #-------------------------------------------------------------------------- # ● 戦闘中フラグの変更 # flag : 新しいフラグ #-------------------------------------------------------------------------- def in_battle=(flag) # フラグを変更 @in_battle = flag # 戦闘終了の場合 if @in_battle == false then # ループ処理(パーティー) for actor in $game_party.actors do # 隠し装備を全て解除 actor.secret_equip_out(0) end end end #-------------------------------------------------------------------------- # ● ターン数の変更 # turn : 新しいターン数 #-------------------------------------------------------------------------- def battle_turn=(turn) # ターン数を変更 @battle_turn = turn # ループ処理(パーティー) for actor in $game_party.actors do # 隠し装備制限ターンが設定されている場合 if actor.secret_turn != 0 then # 隠し装備制限ターンを減らす actor.secret_turn -= 1 # 隠し装備制限ターンが 0 になった場合 if actor.secret_turn == 0 then # 隠し装備(スキル)を解除 actor.secret_equip_out(1) end end end end end #============================================================================== # ■ Game_Actor #------------------------------------------------------------------------------ #  アクターを扱うクラスです。このクラスは Game_Actors クラス ($game_actors) # の内部で使用され、Game_Party クラス ($game_party) からも参照されます。 #============================================================================== class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # ● システムインクルード #-------------------------------------------------------------------------- include MINTO_Actor_01 # みんとアクター #-------------------------------------------------------------------------- # ● 公開インスタンス変数 #-------------------------------------------------------------------------- attr_writer :secret1_id # 隠し装備(スキル) attr_writer :secret2_id # 隠し装備(戦闘背景) attr_writer :secret_turn # 隠し制限ターン #-------------------------------------------------------------------------- # ● スキルの取得 # 使用エイリアス : secret_equip_skills #-------------------------------------------------------------------------- alias :secret_equip_skills :skills def skills # 元の処理を実行 skill = secret_equip_skills # スキル習得装備が有効な場合 if MINTO::RGSS["equip_skill"] == true then # 隠し装備(スキル)が有効な場合 if self.secret1_id != 0 then # スキルを加算 skill += [Data_Armors.data[self.secret1_id].a_skill] skill += [Data_Armors.data[self.secret1_id].a_skill1] skill += [Data_Armors.data[self.secret1_id].a_skill2] skill += [Data_Armors.data[self.secret1_id].a_skill3] skill += [Data_Armors.data[self.secret1_id].a_skill4] end # 隠し装備(戦闘背景)が有効な場合 if self.secret2_id != 0 then # スキルを加算 skill += [Data_Armors.data[self.secret2_id].a_skill] skill += [Data_Armors.data[self.secret2_id].a_skill1] skill += [Data_Armors.data[self.secret2_id].a_skill2] skill += [Data_Armors.data[self.secret2_id].a_skill3] skill += [Data_Armors.data[self.secret2_id].a_skill4] end end # 無効なスキルを除外 master_skill = skill & skill - [0] # データを返す return master_skill end #-------------------------------------------------------------------------- # ● 隠し装備セット # skill : 隠し装備用のスキルID # field : 戦闘背景 # hold : 隠し装備固定フラグ #-------------------------------------------------------------------------- def secret_set(skill = nil, field = nil, hold = false) # スキルが有効な場合 if skill != nil then # 隠し装備(スキル)が有効な場合 if MINTO.secret_equip[skill] != nil then # 隠し装備(スキル)を解除 self.secret_equip_out(1) # 新しい隠し装備のIDを取得 id = MINTO.secret_equip[skill] # 新しい隠し装備を取得 new_equip = Data_Armors.data[id] # オートステートを更新 update_auto_state(nil, new_equip) # 隠し装備(スキル)をセット self.secret1_id = id # 隠し装備固定フラグが オフ の場合 if hold == false then # 隠し装備解除ターンをセット self.secret_turn = Data_Armors.data[id].price end end end # 戦闘背景が有効な場合 if field != nil then # 隠し装備(戦闘背景)を解除 self.secret_equip_out(2) # 隠し装備(戦闘背景)が有効な場合 if MINTO.secret_equip[field] != nil then # 新しい隠し装備のIDを取得 id = MINTO.secret_equip[field][self.id].to_i # 装備可能な防具を取得 armor_set = Data_Classes.data[self.class_id].armor_set # 装備が許可されている場合 if armor_set.include?(id) == true then # 新しい隠し装備を取得 new_equip = Data_Armors.data[id] # オートステートを更新 update_auto_state(nil, new_equip) # 隠し装備をセット self.secret2_id = id end end end end end #============================================================================== # ■ Sprite_Battler #------------------------------------------------------------------------------ #  バトラー表示用のスプライトです。Game_Battler クラスのインスタンスを監視し、 # スプライトの状態を自動的に変化させます。 #============================================================================== class Sprite_Battler < RPG::Sprite #-------------------------------------------------------------------------- # ● システムインクルード #-------------------------------------------------------------------------- include MINTO_Sprite_Battler_01 # みんとスプライトバトラー end #============================================================================== # ■ Spriteset_Battle #------------------------------------------------------------------------------ #  バトル画面のスプライトをまとめたクラスです。このクラスは Scene_Battle クラ # スの内部で使用されます。 #============================================================================== class Spriteset_Battle #-------------------------------------------------------------------------- # ● フレーム更新 # 使用エイリアス : secret_equip_update #-------------------------------------------------------------------------- alias :secret_equip_update :update def update # バトルバックのファイル名が現在のものと違う場合 if @battleback_name != $game_temp.battleback_name then # ループ処理(パーティー) for actor in $game_party.actors do # 隠し装備(戦闘背景)を更新 actor.secret_set(nil, $game_temp.battleback_name) end end # 元の処理を実行 secret_equip_update end end end