#============================================================================== # ■ RGSS2 オート戦闘時スキル封印 Ver1.05 by 星潟 #------------------------------------------------------------------------------ # オート戦闘時に、指定したスキルの使用価値を0とします。 # (基本的に、指定スキルの使用価値が0の場合は使用する事はありません) # # Ver1.01 戦闘中にタイミングよくキャンセルボタンと封印指定を # 同時に押した際にエラー落ちする不具合を修正。 # # Ver1.02 封印/解除後のインデックスが直前に使ったスキルになってしまう不具合を修正。 # 他、動作を少しだけ調整。 # # Ver1.03 封印不能アクターを指定できるようになりました。 # バージョンアップ前に封印されていた場合でもバージョンアップ後は無効。 # # Ver1.04-1.05 Ver1.03の不具合を修正。 #============================================================================== module AB_SSS #封印スキル指定時のキー #デフォルトではYとしてありますが #これはキーボード上のYではなく内部のコマンド処理上のYです。 #ゲームパッド設定時に出てくるものですね。 # #キーボード上でのキーはSキーとなります。 KEY = Input::Y #封印スキルのスキル名表示色を指定 COLOR = 4 #封印スキル設定禁止アクターIDを指定 #例1. #Actor = [1] #アクターID1は封印スキルを指定できない #例2. #Actor = [1,2,3] #アクターID1・2・3は封印スキルを指定できない Actor = [] end class Game_Actor < Game_Battler attr_accessor :seal_skill def seal_skill_execute(skill) @seal_skill ||= [] sid = skill.id seal_skill.include?(sid) ? @seal_skill.delete(sid) : @seal_skill.push(sid) end def seal_skill @seal_skill ||= [] AB_SSS::Actor.include?(self.id) ? [] : @seal_skill end end class Window_Skill < Window_Selectable alias draw_item_name_seal draw_item_name unless $! def draw_item_name(item, x, y, enabled = true) if item != nil && @actor != nil && @actor.seal_skill.include?(item.id) draw_icon(item.icon_index, x, y, enabled) self.contents.font.color = text_color(AB_SSS::COLOR) self.contents.font.color.alpha = enabled ? 255 : 128 self.contents.draw_text(x + 24, y, 172, WLH, item.name) else draw_item_name_seal(item, x, y, enabled) end end end class Game_BattleAction alias evaluate_skill_seal evaluate_skill def evaluate_skill if @battler.actor? if @battler.seal_skill.include?(skill.id) @value = 0 return end end evaluate_skill_seal end end class Scene_Skill < Scene_Base alias update_skill_selection_seal update_skill_selection def update_skill_selection update_skill_selection_seal return if @skill_window == nil if Input.trigger?(AB_SSS::KEY) return if AB_SSS::Actor.include?(@actor.id) skill = @skill_window.skill return if !skill @actor.seal_skill_execute(skill) Sound.play_load @skill_window.refresh end end end class Scene_Battle < Scene_Base alias update_skill_selection_seal update_skill_selection def update_skill_selection update_skill_selection_seal return if @skill_window == nil if Input.trigger?(AB_SSS::KEY) return if AB_SSS::Actor.include?(@actor.id) skill = @skill_window.skill return if !skill @active_battler.seal_skill_execute(skill) Sound.play_load @skill_window.refresh end end end