#======================================================================= 
#  豪华版技能冷却系统 By 绿发的Eclair 
#  使用方法:在特技名称后面用半角逗号分割,写上冷却回合数。 
#  比如 十字斩,10 就是特技 十字斩 冷却10个回合了。 
#  注意这个冷却是敌我通用的,不只是我方,敌人也不会使用冷却中的技能哦。 
#  不想让特技窗口中显示冷却回合数, $冷却时间显示 = false 就行了。 
#  冲突性:存在,但是除了RTAB外似乎整合难度不大。 
#======================================================================= 
$冷却时间显示 = true 
module RPG 
  class Skill 
  def cold 
    return @name.split(/,/)[1] 
  end 
  def name(actor = nil) 
    if $冷却时间显示 and actor != nil and actor.cold[@id] != nil 
      a = (@name.split(/,/)[0] == nil ? 0 : @name.split(/,/)[0]) 
      return a + "(" + actor.cold[@id].to_s + "回合冷却)" 
    else 
      return (@name.split(/,/)[0] == nil ? 0 : @name.split(/,/)[0]) 
    end 
  end 
  end 
end 
class Game_Battler
  #--------------------------------------------------------------------------
  # ● 可以使用特技的判定
  #     skill_id : 特技 ID
  #--------------------------------------------------------------------------
   attr_accessor :cold
   alias initialize_cold :initialize
   def initialize
     @cold = {}
     initialize_cold
   end
   def set_cold(key,val)
     return if @cold[key] == nil
     @cold[key] += val
     @cold.delete(key) if @cold[key] <= 0
   end
   alias skill_can_use_addcold :skill_can_use? 
  def skill_can_use?(skill_id) 
    return false if @cold[skill_id] != nil 
    skill_can_use_addcold(skill_id) 
  end 
end 
#==============================================================================
# ■ Scene_Battle 
#------------------------------------------------------------------------------
#  处理战斗画面的类。
#==============================================================================

class Scene_Battle
   alias make_skill_action_result_addcold :make_skill_action_result
   def make_skill_action_result
     make_skill_action_result_addcold
     if @skill.cold.to_i != 0
     @active_battler.cold[@skill.id] = @skill.cold.to_i
     end
   end
   alias start_phase4_addcold :start_phase4
   def start_phase4
     start_phase4_addcold
   end    
 end 
 #==============================================================================
# ■ Window_Skill
#------------------------------------------------------------------------------
#  特技画面、战斗画面、显示可以使用的特技浏览的窗口。
#==============================================================================
class Window_Skill < Window_Selectable
     def draw_item(index)
     skill = @data[index]
     if @actor.skill_can_use?(skill.id)
       self.contents.font.color = normal_color
 else
       self.contents.font.color = disabled_color
     end
     x = 4 + index % 2 * (288 + 32)
     y = index / 2 * 32
     rect = Rect.new(x, y, self.width / @column_max - 32, 32)
     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
     bitmap = RPG::Cache.icon(skill.icon_name)
     opacity = self.contents.font.color == normal_color ? 255 : 128
     self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
     if $scene.is_a?(Scene_Battle)
     self.contents.draw_text(x + 28, y, 204, 32, skill.name(@actor), 0)
     else
     self.contents.draw_text(x + 28, y, 204, 32, skill.name, 0)
     end
     self.contents.draw_text(x + 232, y, 48, 32, skill.sp_cost.to_s, 2)if skill.occasion !=3
     self.contents.draw_text(x + 232, y, 48, 32, "被动", 2) if skill.occasion == 3
   end
end
#==============================================================================
# ■ Game_Enemy
#------------------------------------------------------------------------------
#  处理敌人的类。本类在 Game_Troop 类 ($game_troop) 的
# 内部使用。
#==============================================================================

class Game_Enemy < Game_Battler
     def make_action
     # 清除当前行动
     self.current_action.clear
     # 无法行动的情况
     unless self.movable?
       # 过程结束
       return
     end
     # 抽取现在有效的行动
     available_actions = []
     rating_max = 0
     for action in self.actions
       # 确认回合条件
       n = $game_temp.battle_turn
       a = action.condition_turn_a
       b = action.condition_turn_b
       if (b == 0 and n != a) or
          (b > 0 and (n < 1 or n < a or n % b != a % b))
         next
       end
       # 确认 HP 条件
       if self.hp * 100.0 / self.maxhp > action.condition_hp
         next
       end
       if self.cold[action.skill_id] != nil
         next
       end
       # 确认等级条件
       if $game_party.max_level < action.condition_level
         next
       end
       # 确认开关条件
       switch_id = action.condition_switch_id
       if switch_id > 0 and $game_switches[switch_id] == false
  next
       end
       # 符合条件 : 添加本行动
       available_actions.push(action)
       if action.rating > rating_max
         rating_max = action.rating
       end
     end
     # 最大概率值作为 3 合计计算(0 除外)
     ratings_total = 0
     for action in available_actions
       if action.rating > rating_max - 3
         ratings_total += action.rating - (rating_max - 3)
       end
     end
     # 概率合计不为 0 的情况下
     if ratings_total > 0
       # 生成随机数
       value = rand(ratings_total)
       # 设置对应生成随机数的当前行动
       for action in available_actions
         if action.rating > rating_max - 3
           if value < action.rating - (rating_max - 3)
             self.current_action.kind = action.kind
             self.current_action.basic = action.basic
             self.current_action.skill_id = action.skill_id
             self.current_action.decide_random_target_for_enemy
             return
           else
             value -= action.rating - (rating_max - 3)
           end
         end
       end
     end
   end
end
#======================================================================= 
#豪华版技能冷却系统 
#=======================================================================