#============================================================================== # # ▼ Yanfly Engine Ace - Skill Restrictions v1.02 # -- Last Updated: 2012.01.23 # -- Level: Normal, Hard, Lunatic # -- Requires: n/a # #============================================================================== $imported = {} if $imported.nil? $imported["YEA-SkillRestrictions"] = true #============================================================================== # ▼ Updates # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= # 2012.01.23 - Compatibility Update: Doppelganger # 2011.12.12 - Started Script and Finished. # - Added cooldown altering notetags for items. # #============================================================================== # ▼ Introduction # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= # Sometimes good game balance depends on restriction mechanics. Of these # mechanics include skill cooldowns, warmups, and the amount of times a skill # can be used (limited uses). Included in this script are features also to # lock cooldowns, reduce cooldown rates, change cooldown values for skills, # skill types, and more. If this isn't enough restriction power, switches may # be used to restrict skills from being used as well as even code. # #============================================================================== # ▼ Instructions # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= # To install this script, open up your script editor and copy/paste this script # to an open slot below ▼ Materials/素材 but above ▼ Main. Remember to save. # # ----------------------------------------------------------------------------- # Actor Notetags - These notetags go in the actors notebox in the database. # ----------------------------------------------------------------------------- # # A battler afflicted with cooldown lock will not have cooldowns count down # every turn until the cooldown lock is removed. # # # When cooldowns are applied from using skills in battle, the cooldown rate can # reduce or increase the finalized amount of turns a battler would need to wait # before being able to use that skill again. # # # Lowers/Raises the amount of turns needed to pass in battle before the warmup # skills become available for usage. # # ----------------------------------------------------------------------------- # Class Notetags - These notetags go in the class notebox in the database. # ----------------------------------------------------------------------------- # # A battler afflicted with cooldown lock will not have cooldowns count down # every turn until the cooldown lock is removed. # # # When cooldowns are applied from using skills in battle, the cooldown rate can # reduce or increase the finalized amount of turns a battler would need to wait # before being able to use that skill again. # # # Lowers/Raises the amount of turns needed to pass in battle before the warmup # skills become available for usage. # # ----------------------------------------------------------------------------- # Skill Notetags - These notetags go in the skills notebox in the database. # ----------------------------------------------------------------------------- # # Causes the skill to have a cooldown of x once it's used in battle. Skills # with cooldowns cannot be used again until cooldown reaches 0 or until the # battle is over. # # # # This will cause the target's cooldowns for every skill to increase by x or # decrease by x. This selects skills indiscriminately. # # # # This will cause the target's specific skill x to receive a change in cooldown # by either an increase or decrease of y amount. # # # # This will cause all of the skills with skill type x to have its cooldowns # changed by y amount. +y increases cooldown turns while -y decreases turns. # # # This will allow the skill to only be usable x times throughout the course of # battle. Once the skill is used x times, it is disabled until the battle is # over. This effect only takes place during battle. # # # Causes the skill to be sealed until the x turns pass in battle. There's no # way to speed up a warmup manually with the exception of warmup rates. # # # This will restrict the skill if switch x is ON. If switch x is OFF, this # skill will no longer be restricted. # # # # This will restrict the skill if any of the x switches are ON. If all of them # are off, then the skill will not be restricted. # # # # This will restrict the skill if all of the x switches are ON. If any of them # are off, then the skill will not be restricted. # # # string # string # # For the more advanced users, replace string with code to determine whether # or not the skill is restricted. If multiple lines are used, they are all # considered part of the same line. # # ----------------------------------------------------------------------------- # Item Notetags - These notetags go in the items notebox in the database. # ----------------------------------------------------------------------------- # # # This will cause the target's cooldowns for every skill to increase by x or # decrease by x. This selects skills indiscriminately. # # # # This will cause the target's specific skill x to receive a change in cooldown # by either an increase or decrease of y amount. # # # # This will cause all of the skills with skill type x to have its cooldowns # changed by y amount. +y increases cooldown turns while -y decreases turns. # # ----------------------------------------------------------------------------- # Weapon Notetags - These notetags go in the weapons notebox in the database. # ----------------------------------------------------------------------------- # # A battler afflicted with cooldown lock will not have cooldowns count down # every turn until the cooldown lock is removed. # # # When cooldowns are applied from using skills in battle, the cooldown rate can # reduce or increase the finalized amount of turns a battler would need to wait # before being able to use that skill again. # # # Lowers/Raises the amount of turns needed to pass in battle before the warmup # skills become available for usage. # # ----------------------------------------------------------------------------- # Armour Notetags - These notetags go in the armours notebox in the database. # ----------------------------------------------------------------------------- # # A battler afflicted with cooldown lock will not have cooldowns count down # every turn until the cooldown lock is removed. # # # When cooldowns are applied from using skills in battle, the cooldown rate can # reduce or increase the finalized amount of turns a battler would need to wait # before being able to use that skill again. # # # Lowers/Raises the amount of turns needed to pass in battle before the warmup # skills become available for usage. # # ----------------------------------------------------------------------------- # Enemy Notetags - These notetags go in the enemies notebox in the database. # ----------------------------------------------------------------------------- # # A battler afflicted with cooldown lock will not have cooldowns count down # every turn until the cooldown lock is removed. # # # When cooldowns are applied from using skills in battle, the cooldown rate can # reduce or increase the finalized amount of turns a battler would need to wait # before being able to use that skill again. # # # Lowers/Raises the amount of turns needed to pass in battle before the warmup # skills become available for usage. # # ----------------------------------------------------------------------------- # State Notetags - These notetags go in the states notebox in the database. # ----------------------------------------------------------------------------- # # A battler afflicted with cooldown lock will not have cooldowns count down # every turn until the cooldown lock is removed. # # # When cooldowns are applied from using skills in battle, the cooldown rate can # reduce or increase the finalized amount of turns a battler would need to wait # before being able to use that skill again. # # # Lowers/Raises the amount of turns needed to pass in battle before the warmup # skills become available for usage. # #============================================================================== # ▼ Compatibility # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= # This script is made strictly for RPG Maker VX Ace. It is highly unlikely that # it will run with RPG Maker VX without adjusting. # #============================================================================== module YEA module SKILL_RESTRICT #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # - Cooldown Settings - #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # Skills with cooldowns cannot be used for some number of turns. Adjust the # settings here on how cooldowns appear in the menu. Cooldowns are only # applied in battle. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- COOLDOWN_COLOUR = 6 # Colour used from "Window" skin. COOLDOWN_SIZE = 20 # Font size used for cooldowns. COOLDOWN_SUFFIX = "%sCD" # Suffix used for cooldowns. COOLDOWN_ICON = 0 # Icon used for cooldowns. Set 0 to disable. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # - Warmup Settings - #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # Skills with warmups are unaffected by cooldowns. They become available to # use after a certain number of turns have passed. Warmups are only applied # in battle. Cooldown Rates do not affect warmups but Warmup Rates do. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- WARMUP_COLOUR = 5 # Colour used from "Window" skin. WARMUP_SIZE = 20 # Font size used for warmups. WARMUP_SUFFIX = "%sWU" # Suffix used for warmups. WARMUP_ICON = 0 # Icon used for warmups. Set 0 to disable. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # - Limited Use Settings - #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # Some skills have limited uses per battle. These limited uses are reset # at the start and end of each battle and do not apply when used outside of # battle. There are no effects that can affect limited uses. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- LIMITED_COLOUR = 8 # Colour used from "Window" skin. LIMITED_SIZE = 16 # Font size used for used up. LIMITED_TEXT = "Used" # Text used for used up. LIMITED_ICON = 0 # Icon used for used up. Set 0 to disable. end # SKILL_RESTRICT end # YEA #============================================================================== # ▼ Editting anything past this point may potentially result in causing # computer damage, incontinence, explosion of user's head, coma, death, and/or # halitosis so edit at your own risk. #============================================================================== module YEA module REGEXP module BASEITEM COOLDOWN_RATE = /<(?:COOL_DOWN_RATE|cooldown rate):[ ](\d+)([%%])>/i COOLDOWN_LOCK = /<(?:COOL_DOWN_LOCK|cooldown lock)>/i WARMUP_RATE = /<(?:WARM_UP_RATE|warmup rate):[ ](\d+)([%%])>/i end # BASEITEM module SKILL COOLDOWN = /<(?:COOL_DOWN|cooldown):[ ](\d+)>/i WARMUP = /<(?:WARM_UP|warmup):[ ](\d+)>/i LIMITED_USES = /<(?:LIMITED_USES|limited uses):[ ](\d+)>/i CHANGE_COOLDOWN = /<(?:CHANGE_COOL_DOWN|change cooldown):[ ]([\+\-]\d+)>/i STYPE_COOLDOWN = /<(?:STYPE_COOL_DOWN|stype cooldown)[ ](\d+):[ ]([\+\-]\d+)>/i SKILL_COOLDOWN = /<(?:SKILL_COOL_DOWN|skill cooldown)[ ](\d+):[ ]([\+\-]\d+)>/i RESTRICT_IF_SWITCH = /<(?:RESTRICT_IF_SWITCH|restrict if switch):[ ](\d+)>/i RESTRICT_ANY_SWITCH = /<(?:RESTRICT_ANY_SWITCH|restrict any switch):[ ]*(\d+(?:\s*,\s*\d+)*)>/i RESTRICT_ALL_SWITCH = /<(?:RESTRICT_ALL_SWITCH|restrict all switch):[ ]*(\d+(?:\s*,\s*\d+)*)>/i RESTRICT_EVAL_ON = /<(?:RESTRICT_EVAL|restrict eval)>/i RESTRICT_EVAL_OFF = /<\/(?:RESTRICT_EVAL|restrict eval)>/i end # SKILL module ITEM CHANGE_COOLDOWN = /<(?:CHANGE_COOL_DOWN|change cooldown):[ ]([\+\-]\d+)>/i STYPE_COOLDOWN = /<(?:STYPE_COOL_DOWN|stype cooldown)[ ](\d+):[ ]([\+\-]\d+)>/i SKILL_COOLDOWN = /<(?:SKILL_COOL_DOWN|skill cooldown)[ ](\d+):[ ]([\+\-]\d+)>/i end # ITEM end # REGEXP end # YEA #============================================================================== # ■ Icon #============================================================================== module Icon #-------------------------------------------------------------------------- # self.cooldown #-------------------------------------------------------------------------- def self.cooldown; return YEA::SKILL_RESTRICT::COOLDOWN_ICON; end #-------------------------------------------------------------------------- # self.warmup #-------------------------------------------------------------------------- def self.warmup; return YEA::SKILL_RESTRICT::WARMUP_ICON; end #-------------------------------------------------------------------------- # self.limited #-------------------------------------------------------------------------- def self.limited; return YEA::SKILL_RESTRICT::LIMITED_ICON; end end # Icon #============================================================================== # ■ Numeric #============================================================================== class Numeric #-------------------------------------------------------------------------- # new method: group_digits #-------------------------------------------------------------------------- unless $imported["YEA-CoreEngine"] def group; return self.to_s; end end # $imported["YEA-CoreEngine"] end # Numeric #============================================================================== # ■ DataManager #============================================================================== module DataManager #-------------------------------------------------------------------------- # alias method: load_database #-------------------------------------------------------------------------- class < 0 } when YEA::REGEXP::SKILL::RESTRICT_ALL_SWITCH $1.scan(/\d+/).each { |num| @restrict_all_switch.push(num.to_i) if num.to_i > 0 } #--- when YEA::REGEXP::SKILL::RESTRICT_EVAL_ON @restrict_eval_on = true when YEA::REGEXP::SKILL::RESTRICT_EVAL_OFF @restrict_eval_off = true else @restrict_eval += line.to_s if @restrict_eval_on #--- end } # self.note.split #--- end end # RPG::Skill #============================================================================== # ■ RPG::Item #============================================================================== class RPG::Item < RPG::UsableItem #-------------------------------------------------------------------------- # public instance variables #-------------------------------------------------------------------------- attr_accessor :change_cooldown attr_accessor :skill_cooldown #-------------------------------------------------------------------------- # common cache: load_notetags_srs #-------------------------------------------------------------------------- def load_notetags_srs @change_cooldown = {} @skill_cooldown = {} #--- self.note.split(/[\r\n]+/).each { |line| case line #--- when YEA::REGEXP::ITEM::CHANGE_COOLDOWN @change_cooldown[0] = $1.to_i when YEA::REGEXP::ITEM::STYPE_COOLDOWN @change_cooldown[$1.to_i] = $2.to_i when YEA::REGEXP::ITEM::SKILL_COOLDOWN @skill_cooldown[$1.to_i] = $2.to_i #--- end } # self.note.split #--- end end # RPG::Item #============================================================================== # ■ Game_BattlerBase #============================================================================== class Game_BattlerBase #-------------------------------------------------------------------------- # alias method: initialize #-------------------------------------------------------------------------- alias game_battlerbase_initialize_srs initialize def initialize game_battlerbase_initialize_srs reset_cooldowns reset_times_used end #-------------------------------------------------------------------------- # new method: reset_cooldowns #-------------------------------------------------------------------------- def reset_cooldowns @cooldown = {} end #-------------------------------------------------------------------------- # new method: reset_times_used #-------------------------------------------------------------------------- def reset_times_used @times_used = {} end #-------------------------------------------------------------------------- # alias method: skill_conditions_met? #-------------------------------------------------------------------------- alias game_battlerbase_skill_conditions_met_srs skill_conditions_met? def skill_conditions_met?(skill) return false if skill_restriction?(skill) return game_battlerbase_skill_conditions_met_srs(skill) end #-------------------------------------------------------------------------- # alias method: pay_skill_cost #-------------------------------------------------------------------------- alias game_battlerbase_pay_skill_cost_srs pay_skill_cost def pay_skill_cost(skill) game_battlerbase_pay_skill_cost_srs(skill) pay_skill_cooldown(skill) end #-------------------------------------------------------------------------- # new method: skill_restriction? #-------------------------------------------------------------------------- def skill_restriction?(skill) if $game_party.in_battle return true if cooldown?(skill) > 0 return true if warmup?(skill) > $game_troop.turn_count return true if limit_restricted?(skill) end return true if switch_restricted?(skill) return true if restrict_eval?(skill) return false end #-------------------------------------------------------------------------- # new method: cooldown? #-------------------------------------------------------------------------- def cooldown?(skill) skill = skill.id if skill.is_a?(RPG::Skill) return @cooldown[skill].nil? ? 0 : @cooldown[skill] end #-------------------------------------------------------------------------- # new method: warmup?(skill) #-------------------------------------------------------------------------- def warmup?(skill) skill = skill.id if skill.is_a?(RPG::Skill) return [$data_skills[skill].warmup * wur, 0].max.to_i end #-------------------------------------------------------------------------- # new method: limit_restricted? #-------------------------------------------------------------------------- def limit_restricted?(skill) return false if skill.limited_uses <= 0 return times_used?(skill) >= skill.limited_uses end #-------------------------------------------------------------------------- # new method: times_used? #-------------------------------------------------------------------------- def times_used?(skill) skill = skill.id if skill.is_a?(RPG::Skill) return @times_used[skill].nil? ? 0 : @times_used[skill] end #-------------------------------------------------------------------------- # new method: update_times_used #-------------------------------------------------------------------------- def update_times_used(skill) skill = skill.id if skill.is_a?(RPG::Skill) reset_times_used if @times_used.nil? @times_used[skill] = 0 if @times_used[skill].nil? @times_used[skill] += 1 end #-------------------------------------------------------------------------- # new method: cdr #-------------------------------------------------------------------------- def cdr n = 1.0 if actor? n *= self.actor.cooldown_rate n *= self.class.cooldown_rate for equip in equips next if equip.nil? n *= equip.cooldown_rate end else n *= self.enemy.cooldown_rate if $imported["YEA-Doppelganger"] && !self.class.nil? n *= self.class.cooldown_rate end end for state in states next if state.nil? n *= state.cooldown_rate end return n end #-------------------------------------------------------------------------- # new method: pay_skill_cooldown #-------------------------------------------------------------------------- def pay_skill_cooldown(skill) return unless $game_party.in_battle skill = skill.id if skill.is_a?(RPG::Skill) set_cooldown(skill, $data_skills[skill].cooldown * cdr) end #-------------------------------------------------------------------------- # new method: set_cooldown #-------------------------------------------------------------------------- def set_cooldown(skill, amount = 0) return unless $game_party.in_battle skill = skill.id if skill.is_a?(RPG::Skill) @cooldown[skill] = [amount, 0].max.to_i end #-------------------------------------------------------------------------- # new method: cooldown_lock? #-------------------------------------------------------------------------- def cooldown_lock? if actor? return true if self.actor.cooldown_lock return true if self.class.cooldown_lock for equip in equips next if equip.nil? return true if equip.cooldown_lock end else return true if self.enemy.cooldown_lock end for state in states next if state.nil? return true if state.cooldown_lock end return false end #-------------------------------------------------------------------------- # new method: update_cooldowns #-------------------------------------------------------------------------- def update_cooldowns(amount = -1, stype_id = 0, skill_id = 0) return if cooldown_lock? reset_cooldowns if @cooldown.nil? for skill in skills skill = $data_skills[skill] if !skill.is_a?(RPG::Skill) next if stype_id != 0 && skill.stype_id != stype_id next if skill_id != 0 && skill.id != skill_id set_cooldown(skill, cooldown?(skill) + amount) end end #-------------------------------------------------------------------------- # new method: wur #-------------------------------------------------------------------------- def wur n = 1.0 if actor? n *= self.actor.warmup_rate n *= self.class.warmup_rate for equip in equips next if equip.nil? n *= equip.warmup_rate end else n *= self.enemy.warmup_rate if $imported["YEA-Doppelganger"] && !self.class.nil? n *= self.class.warmup_rate end end for state in states next if state.nil? n *= state.warmup_rate end return n end #-------------------------------------------------------------------------- # new method: switch_restricted? #-------------------------------------------------------------------------- def switch_restricted?(skill) return true if restrict_any_switch?(skill) return true if restrict_all_switch?(skill) return false end #-------------------------------------------------------------------------- # new method: restrict_any_switch? #-------------------------------------------------------------------------- def restrict_any_switch?(skill) for switch_id in skill.restrict_any_switch return true if $game_switches[switch_id] end return false end #-------------------------------------------------------------------------- # new method: restrict_all_switch? #-------------------------------------------------------------------------- def restrict_all_switch?(skill) return false if skill.restrict_all_switch == [] for switch_id in skill.restrict_all_switch return false unless $game_switches[switch_id] end return true end #-------------------------------------------------------------------------- # new method: restrict_eval? #-------------------------------------------------------------------------- def restrict_eval?(skill) return false if skill.restrict_eval == "" return eval(skill.restrict_eval) end end # Game_BattlerBase #============================================================================== # ■ Game_Battler #============================================================================== class Game_Battler < Game_BattlerBase #-------------------------------------------------------------------------- # alias method: on_battle_start #-------------------------------------------------------------------------- alias game_battler_on_battle_start_srs on_battle_start def on_battle_start game_battler_on_battle_start_srs reset_cooldowns reset_times_used end #-------------------------------------------------------------------------- # alias method: on_battle_end #-------------------------------------------------------------------------- alias game_battler_on_battle_end_srs on_battle_end def on_battle_end game_battler_on_battle_end_srs reset_cooldowns reset_times_used end #-------------------------------------------------------------------------- # alias method: item_apply #-------------------------------------------------------------------------- alias game_battler_item_apply_srs item_apply def item_apply(user, item) game_battler_item_apply_srs(user, item) updated_limited_uses(user, item) end #-------------------------------------------------------------------------- # new method: updated_limited_uses #-------------------------------------------------------------------------- def updated_limited_uses(user, item) return unless $game_party.in_battle return if item.nil? return unless item.is_a?(RPG::Skill) user.update_times_used(item) end #-------------------------------------------------------------------------- # alias method: item_user_effect #-------------------------------------------------------------------------- alias game_battler_item_user_effect_srs item_user_effect def item_user_effect(user, item) game_battler_item_user_effect_srs(user, item) apply_cooldown_changes(user, item) end #-------------------------------------------------------------------------- # new method: apply_cooldown_changes #-------------------------------------------------------------------------- def apply_cooldown_changes(user, item) return unless $game_party.in_battle return if item.nil? #--- if item.change_cooldown != {} for key in item.change_cooldown stype_id = key[0] update_cooldowns(item.change_cooldown[stype_id], stype_id) end @result.success = true end #--- if item.skill_cooldown != {} for key in item.skill_cooldown skill_id = key[0] update_cooldowns(item.skill_cooldown[skill_id], 0, skill_id) end @result.success = true end end end # Game_Battler #============================================================================== # ■ Game_Enemy #============================================================================== class Game_Enemy < Game_Battler #-------------------------------------------------------------------------- # new method: skills #-------------------------------------------------------------------------- def skills data = [] for action in enemy.actions next if data.include?(action.skill_id) data.push(action.skill_id) end return data end end # Game_Enemy #============================================================================== # ■ Game_Unit #============================================================================== class Game_Unit #-------------------------------------------------------------------------- # new method: update_restrictions #-------------------------------------------------------------------------- def update_restrictions for member in members; member.update_cooldowns; end end end # Game_Unit #============================================================================== # ■ Window_Base #============================================================================== class Window_Base < Window #-------------------------------------------------------------------------- # new methods: restrict_colours #-------------------------------------------------------------------------- def cooldown_colour; text_color(YEA::SKILL_RESTRICT::COOLDOWN_COLOUR); end; def warmup_colour; text_color(YEA::SKILL_RESTRICT::WARMUP_COLOUR); end; def limited_colour; text_color(YEA::SKILL_RESTRICT::LIMITED_COLOUR); end; end # Window_Base #============================================================================== # ■ Window_SkillList #============================================================================== class Window_SkillList < Window_Selectable #-------------------------------------------------------------------------- # alias method: draw_item #-------------------------------------------------------------------------- alias window_skilllist_draw_item_srs draw_item def draw_item(index) if skill_restriction?(index) draw_skill_restriction(index) else window_skilllist_draw_item_srs(index) end end #-------------------------------------------------------------------------- # new method: skill_restriction? #-------------------------------------------------------------------------- def skill_restriction?(index) skill = @data[index] return false if @actor.nil? return @actor.skill_restriction?(skill) end #-------------------------------------------------------------------------- # new method: draw_item #-------------------------------------------------------------------------- def draw_skill_restriction(index) skill = @data[index] rect = item_rect(index) rect.width -= 4 draw_item_name(skill, rect.x, rect.y, enable?(skill)) if @actor.limit_restricted?(skill) draw_skill_limited(rect, skill) elsif @actor.cooldown?(skill) > 0 draw_skill_cooldown(rect, skill) elsif warmup_restriction?(skill) draw_skill_warmup(rect, skill) else draw_skill_cost(rect, skill) end end #-------------------------------------------------------------------------- # new method: draw_skill_limited #-------------------------------------------------------------------------- def draw_skill_limited(rect, skill) change_color(limited_colour, enable?(skill)) icon = Icon.limited if icon > 0 draw_icon(icon, rect.x + rect.width-24, rect.y, enable?(skill)) rect.width -= 24 end contents.font.size = YEA::SKILL_RESTRICT::LIMITED_SIZE text = YEA::SKILL_RESTRICT::LIMITED_TEXT draw_text(rect, text, 2) reset_font_settings end #-------------------------------------------------------------------------- # new method: draw_skill_cooldown #-------------------------------------------------------------------------- def draw_skill_cooldown(rect, skill) change_color(cooldown_colour, enable?(skill)) icon = Icon.cooldown if icon > 0 draw_icon(icon, rect.x + rect.width-24, rect.y, enable?(skill)) rect.width -= 24 end contents.font.size = YEA::SKILL_RESTRICT::COOLDOWN_SIZE value = @actor.cooldown?(skill) text = sprintf(YEA::SKILL_RESTRICT::COOLDOWN_SUFFIX, value.group) draw_text(rect, text, 2) reset_font_settings end #-------------------------------------------------------------------------- # new method: warmup_restriction? #-------------------------------------------------------------------------- def warmup_restriction?(skill) return false unless $game_party.in_battle return @actor.warmup?(skill) > $game_troop.turn_count end #-------------------------------------------------------------------------- # new method: draw_skill_warmup #-------------------------------------------------------------------------- def draw_skill_warmup(rect, skill) change_color(warmup_colour, enable?(skill)) icon = Icon.warmup if icon > 0 draw_icon(icon, rect.x + rect.width-24, rect.y, enable?(skill)) rect.width -= 24 end contents.font.size = YEA::SKILL_RESTRICT::WARMUP_SIZE value = @actor.warmup?(skill) - $game_troop.turn_count text = sprintf(YEA::SKILL_RESTRICT::WARMUP_SUFFIX, value.group) draw_text(rect, text, 2) reset_font_settings end end # Window_SkillList #============================================================================== # ■ Scene_Battle #============================================================================== class Scene_Battle < Scene_Base #-------------------------------------------------------------------------- # alias method: turn_start #-------------------------------------------------------------------------- alias scene_battle_turn_start_srs turn_start def turn_start $game_party.update_restrictions $game_troop.update_restrictions scene_battle_turn_start_srs end end # Scene_Battle #============================================================================== # # ▼ End of File # #==============================================================================