#==========================================================================
=====
#--------------------------=�€� Skill Cooldown �€�=---------------------------------
#---------------------------=�€� by: DrDhoom �€�=-----------------------------------
# Version: 1.1
# Date Published: 05 - 04 - 2011
# Battle Addon
# RPGMakerID Community
#-------------------------------------------------------------------------------
# Introduction:
# This script make a skill have cooldown.
#-------------------------------------------------------------------------------
# Compatibility:
# - Tankentai Sideview Battle System
# - Wij's Battle Macros
# Note: not tested in other battle system
#-------------------------------------------------------------------------------
# How to use:
# - Insert this script above Main
# - Insert under all Battle System Core Script
#===============================================================================
module Dhoom
module SkillCooldown
SHOW_COOLDOWN_NUMBER = true #true = cooldown number of skill show
# at the end of skill name
#RGB Color
COOLDOWN_COLOR = Color.new(255,0,0,128)
SKILL_CD = [] #<----Don't delete this line # 괄호에 쿨타임이 될 숫자를 삽입합니다.
#SKILL_CD[skill id] = number of cooldown (1 is minimum number) # 첫번째 괄호에 스킬번호를 넣습니다.
SKILL_CD[1] = 1 # 쿨타임 1, 해당 주석은 문제가 되면 삭제해주세요.
SKILL_CD[2] = 9 # 쿨타임 9, 해당 주석은 문제가 되면 삭제해주세요.
end
end
#===============================================================================
# Start
#===============================================================================
#-------------------------------------------------------------------------------
# Window Base
#-------------------------------------------------------------------------------
class Window_Base
def draw_skill_cooldown_name(item, x, y, enabled = true)
if item != nil
if @actor.skill_cooldown(item.id) != nil
if @actor.skill_cooldown(item.id)!= 0
cd_color = Dhoom::SkillCooldown::COOLDOWN_COLOR
draw_icon(item.icon_index, x, y, enabled)
self.contents.font.color = cd_color
if Dhoom::SkillCooldown::SHOW_COOLDOWN_NUMBER
self.contents.draw_text(x + 24, y, 172, WLH, item.name + '(' +@actor.skill_cooldown(item.id).to_s + ')')
else
self.contents.draw_text(x + 24, y, 172, WLH, item.name)
end
else
draw_icon(item.icon_index, x, y, enabled)
self.contents.font.color = normal_color
self.contents.font.color.alpha = enabled ? 255 : 128
self.contents.draw_text(x + 24, y, 172, WLH, item.name)
end
else
draw_icon(item.icon_index, x, y, enabled)
self.contents.font.color = normal_color
self.contents.font.color.alpha = enabled ? 255 : 128
self.contents.draw_text(x + 24, y, 172, WLH, item.name)
end
end
end
end
#-------------------------------------------------------------------------------
# Window Skill
#-------------------------------------------------------------------------------
class Window_Skill < Window_Selectable
def draw_item(index)
rect = item_rect(index)
self.contents.clear_rect(rect)
skill = @data[index]
if skill != nil
rect.width -= 4
enabled = @actor.skill_can_use?(skill)
draw_skill_cooldown_name(skill, rect.x, rect.y, enabled)
self.contents.draw_text(rect, @actor.calc_mp_cost(skill), 2)
end
end
end
#-------------------------------------------------------------------------------
# Game Actor
#-------------------------------------------------------------------------------
class Game_Actor
alias dsc_actor_setup setup
alias dsc_skill_can_use? skill_can_use?
def setup(actor_id)
dsc_actor_setup(actor_id)
@skill_cooldown = []
end
def make_cooldown_value(id)
@skill_cooldown[id] = Dhoom::SkillCooldown::SKILL_CD[id]
if $imported == nil
@skill_cooldown[id] += 1
elsif $imported["TankentaiATB"]
@skill_cooldown[id] -= 0
elsif $imported["TankentaiSideview"]
@skill_cooldown[id] += 1
else
@skill_cooldown[id] += 1
end
end
def skill_cooldown(id)
return @skill_cooldown[id]
end
def decrease_cooldown(id)
@skill_cooldown[id] -= 1
end
def reset_cooldown(id)
@skill_cooldown[id] = 0
end
def skill_can_use?(skill)
if skill_cooldown(skill.id) != nil
return false if skill_cooldown(skill.id) != 0
end
dsc_skill_can_use?(skill)
end
end
#-------------------------------------------------------------------------------
# Scene Battle
#-------------------------------------------------------------------------------
class Scene_Battle < Scene_Base
alias dsc_battle_end battle_end
alias dsc_execute_action_skill execute_action_skill
alias dsc_start_actor_command_selection start_actor_command_selection
def battle_end(result)
for actor in $game_party.members
for skill in actor.skills
actor.reset_cooldown(skill.id)
end
end
dsc_battle_end(result)
end
def execute_action_skill
dsc_execute_action_skill
skill = @active_battler.action.skill
if Dhoom::SkillCooldown::SKILL_CD[skill.id] != nil
@active_battler.make_cooldown_value(skill.id)
end
end
def start_actor_command_selection
dsc_start_actor_command_selection
if @active_battler != nil and @active_battler.actor?
for skill in @active_battler.skills
if @active_battler.skill_cooldown(skill.id) != nil
if @active_battler.skill_cooldown(skill.id) != 0
@active_battler.decrease_cooldown(skill.id)
end
end
end
elsif @commander !=nil
for skill in @commander.skills
if @commander.skill_cooldown(skill.id) != nil
if @commander.skill_cooldown(skill.id) != 0
@commander.decrease_cooldown(skill.id)
end
end
end
end
end
end
#===============================================================================
# End
#===============================================================================
현재 학교라서 구체적인 실험은 하지 못했습니다.
다른 쿨타임 관련 스크립트는 http://rmrk.net/index.php?topic=47726.0 [ 겸 출처 ]