#==============================================================================
# □ 基于默认战斗系统的 选中的敌人闪烁效果 2016-03-17 By. 椎名YASHIRO
#------------------------------------------------------------------------------
# 可以在敌人备注里任意空行填上:<闪烁色: r,g,b,a>设置闪烁颜色,
# rgba分别是RGB颜色数字和ALPHA值,具体参考F1的Color类,
# 4个数字之间用半角逗号隔开,不要有其他东西出现,否则会出问题。
# 没设定闪烁色的敌人使用默认的白色闪烁。
#==============================================================================
class Spriteset_Battle
attr_accessor :enemy_sprites # 公开敌人精灵组
end
class RPG::Enemy < RPG::BaseItem
#-----------------------------------
# ○ 获取备注的闪烁颜色
#-----------------------------------
def flash_color
color_set = nil
self.note.each_line do |line|
if line[/^<闪烁色:\s?(.*)?>/]
color_set = $1.split(",").collect{|i| i.to_i}
end
end
return color_set.nil? ? default_flash_color : Color.new(*color_set)
end
#-----------------------------------
# ○ 备注没有设置闪烁颜色的时候默认的颜色
#-----------------------------------
def default_flash_color
return Color.new(255, 255, 255, 150)
end
end
class Sprite_Battler < Sprite_Base
#-----------------------------------
# ○ 获取战斗者(敌人)的闪烁颜色
#-----------------------------------
def flash_color
return unless @battler.is_a?(Game_Enemy)
return @battler.enemy.flash_color
end
#-----------------------------------
# ○ 设置闪烁标志
#-----------------------------------
def set_flash(n)
@flash_count = 0
@start_flash = n
end
#-----------------------------------
# ○ 更新“选择中”的闪烁效果
#-----------------------------------
def selecting_flash
return unless need_flash?
flash(flash_color, 60) if @flash_count % 60 == 0
@flash_count += 1
end
#-----------------------------------
# ○ 是否需要闪烁?
#-----------------------------------
def need_flash?
return (@start_flash and @battler and @battler.is_a?(Game_Enemy) and @battler.alive?)
end
#-----------------------------------
# ○ 画面更新
#-----------------------------------
alias sn_160317_update update
def update
sn_160317_update
selecting_flash
end
end
class Window_BattleEnemy < Window_Selectable
attr_accessor :scene_spriteset # 增加一个公开的界面精灵组
#-----------------------------------
# ○ 选择
#-----------------------------------
alias sn_160317_select select
def select(n)
if @scene_spriteset.nil?
sn_160317_select(n)
return
end
sn_160317_select(n)
@scene_spriteset.enemy_sprites.each do |e|
e.set_flash(e.battler.name == self.enemy.name)
end
end
#-----------------------------------
# ○ 清除所有敌人的闪烁标志
#-----------------------------------
def reset_toops_flash
@scene_spriteset.enemy_sprites.each do |e|
e.set_flash(false)
end
end
end
class Scene_Battle < Scene_Base
#-----------------------------------
# ○ 建立敌人选择窗口
#-----------------------------------
alias sn_160317_create_enemy_window create_enemy_window
def create_enemy_window
sn_160317_create_enemy_window
@enemy_window.scene_spriteset = @spriteset
end
#-----------------------------------
# ○ 选择敌人”确定“
#-----------------------------------
alias sn_160317_on_enemy_ok on_enemy_ok
def on_enemy_ok
sn_160317_on_enemy_ok
@enemy_window.reset_toops_flash
end
#-----------------------------------
# ○ 选择敌人”取消“
#-----------------------------------
alias sn_160317_on_enemy_cancel on_enemy_cancel
def on_enemy_cancel
sn_160317_on_enemy_cancel
@enemy_window.reset_toops_flash
end
end