Project1
标题:
MOG_Adv_Battle_Hud + Yanfly Combat Log 两个冲突问题
[打印本页]
作者:
ninesound
时间:
2013-9-13 18:51
标题:
MOG_Adv_Battle_Hud + Yanfly Combat Log 两个冲突问题
本帖最后由 ninesound 于 2013-9-13 19:07 编辑
問題1.jpg
(84.27 KB, 下载次数: 17)
下载附件
保存到相册
2013-9-13 18:52 上传
問題2.jpg
(105.3 KB, 下载次数: 16)
下载附件
保存到相册
2013-9-13 18:52 上传
如上面图片
装了战斗纪录器之后
按下去选项的字不会消失
该如何解决……?
失礼了
已经附上脚本
这是战斗纪录器的
#==============================================================================
#
# ▼ Yanfly Engine Ace - Combat Log Display v1.02
# -- Last Updated: 2012.01.24
# -- Level: Easy
# -- Requires: n/a
#
#==============================================================================
$imported = {} if $imported.nil?
$imported["YEA-CombatLogDisplay"] = true
#==============================================================================
# ▼ Updates
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# 2012.01.24 - Bug Fixed: Confirm window crash with Battle Command List.
# 2012.01.16 - Prevented subsequent line inserts.
# 2011.12.10 - Started Script and Finished.
#
#==============================================================================
# ▼ Introduction
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# Sometimes text appears way too fast in the battle system or sometimes players
# may miss what kind of information was delivered on-screen. For times like
# that, being able to access the combat log would be important. The combat log
# records all of the text that appears in the battle log window at the top.
# The player can access the combat log display any time during action selection
# phase. Sometimes, players can even review over the combat log to try and
# figure out any kinds of patterns enemies may even have.
#
#==============================================================================
# ▼ 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.
#
#==============================================================================
# ▼ 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 COMBAT_LOG
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# - Combat Log Settings -
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
# Adjust the settings here to modify how the combat log works for your
# game. You can change the command name and extra text that gets fitted
# into the combat log over time. If you don't want specific text to appear,
# just set the text to "" and nothing will show.
#=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
COMMAND_NAME = "Log" # Command list name.
LINE_COLOUR = 0 # Line colour for separators.
LINE_COLOUR_ALPHA = 48 # Opacity of the line colour.
TEXT_BATTLE_START = "\\c[4]Battle Start!" # Battle start text.
TEXT_TURN_NUMBER = "\\c[4]Turn Number: \\c[6]%d" # Turn number text.
end # COMBAT_LOG
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.
#==============================================================================
#==============================================================================
# ■ Window_BattleLog
#==============================================================================
class Window_BattleLog < Window_Selectable
#--------------------------------------------------------------------------
# new method: combatlog_window=
#--------------------------------------------------------------------------
def combatlog_window=(window)
@combatlog_window = window
end
#--------------------------------------------------------------------------
# new method: combatlog
#--------------------------------------------------------------------------
def combatlog(text)
return if @combatlog_window.nil?
return if text == ""
@combatlog_window.add_line(text)
end
#--------------------------------------------------------------------------
# alias method: add_text
#--------------------------------------------------------------------------
alias window_battlelog_add_text_cld add_text
def add_text(text)
combatlog(text)
window_battlelog_add_text_cld(text)
end
#--------------------------------------------------------------------------
# alias method: replace_text
#--------------------------------------------------------------------------
alias window_battlelog_replace_text_cld replace_text
def replace_text(text)
combatlog(text)
window_battlelog_replace_text_cld(text)
end
#--------------------------------------------------------------------------
# Start Ace Battle Engine Compatibility
#--------------------------------------------------------------------------
if $imported["YEA-BattleEngine"]
#--------------------------------------------------------------------------
# alias method: display_current_state
#--------------------------------------------------------------------------
alias window_battlelog_display_current_state_cld display_current_state
def display_current_state(subject)
window_battlelog_display_current_state_cld(subject)
return if YEA::BATTLE::MSG_CURRENT_STATE
return if subject.most_important_state_text.empty?
combatlog(subject.name + subject.most_important_state_text)
end
#--------------------------------------------------------------------------
# alias method: display_use_item
#--------------------------------------------------------------------------
alias window_battlelog_display_use_item_cld display_use_item
def display_use_item(subject, item)
window_battlelog_display_use_item_cld(subject, item)
return if YEA::BATTLE::MSG_CURRENT_ACTION
if item.is_a?(RPG::Skill)
combatlog(subject.name + item.message1)
unless item.message2.empty?
combatlog(item.message2)
end
else
combatlog(sprintf(Vocab::UseItem, subject.name, item.name))
end
end
#--------------------------------------------------------------------------
# alias method: display_counter
#--------------------------------------------------------------------------
alias window_battlelog_display_counter_cld display_counter
def display_counter(target, item)
window_battlelog_display_counter_cld(target, item)
return if YEA::BATTLE::MSG_COUNTERATTACK
combatlog(sprintf(Vocab::CounterAttack, target.name))
end
#--------------------------------------------------------------------------
# alias method: display_reflection
#--------------------------------------------------------------------------
alias window_battlelog_display_reflection_cld display_reflection
def display_reflection(target, item)
window_battlelog_display_reflection_cld(target, item)
return if YEA::BATTLE::MSG_REFLECT_MAGIC
combatlog(sprintf(Vocab::MagicReflection, target.name))
end
#--------------------------------------------------------------------------
# alias method: display_substitute
#--------------------------------------------------------------------------
alias window_battlelog_display_substitute_cld display_substitute
def display_substitute(substitute, target)
window_battlelog_display_substitute_cld(substitute, target)
return if YEA::BATTLE::MSG_SUBSTITUTE_HIT
combatlog(sprintf(Vocab::Substitute, substitute.name, target.name))
end
#--------------------------------------------------------------------------
# alias method: display_failure
#--------------------------------------------------------------------------
alias window_battlelog_display_failure_cld display_failure
def display_failure(target, item)
window_battlelog_display_failure_cld(target, item)
return if YEA::BATTLE::MSG_FAILURE_HIT
if target.result.hit? && !target.result.success
combatlog(sprintf(Vocab::ActionFailure, target.name))
end
end
#--------------------------------------------------------------------------
# alias method: display_critical
#--------------------------------------------------------------------------
alias window_battlelog_display_critical_cld display_critical
def display_critical(target, item)
window_battlelog_display_critical_cld(target, item)
return if YEA::BATTLE::MSG_CRITICAL_HIT
if target.result.critical
text = target.actor? ? Vocab::CriticalToActor : Vocab::CriticalToEnemy
combatlog(text)
end
end
#--------------------------------------------------------------------------
# alias method: display_miss
#--------------------------------------------------------------------------
alias window_battlelog_display_miss_cld display_miss
def display_miss(target, item)
window_battlelog_display_miss_cld(target, item)
return if YEA::BATTLE::MSG_HIT_MISSED
if !item || item.physical?
fmt = target.actor? ? Vocab::ActorNoHit : Vocab::EnemyNoHit
else
fmt = Vocab::ActionFailure
end
combatlog(sprintf(fmt, target.name))
end
#--------------------------------------------------------------------------
# alias method: display_evasion
#--------------------------------------------------------------------------
alias window_battlelog_display_evasion_cld display_evasion
def display_evasion(target, item)
window_battlelog_display_evasion_cld(target, item)
return if YEA::BATTLE::MSG_EVASION
if !item || item.physical?
fmt = Vocab::Evasion
else
fmt = Vocab::MagicEvasion
end
combatlog(sprintf(fmt, target.name))
end
#--------------------------------------------------------------------------
# alias method: display_hp_damage
#--------------------------------------------------------------------------
alias window_battlelog_display_hp_damage_cld display_hp_damage
def display_hp_damage(target, item)
window_battlelog_display_hp_damage_cld(target, item)
return if YEA::BATTLE::MSG_HP_DAMAGE
return if target.result.hp_damage == 0 && item && !item.damage.to_hp?
combatlog(target.result.hp_damage_text)
end
#--------------------------------------------------------------------------
# alias method: display_mp_damage
#--------------------------------------------------------------------------
alias window_battlelog_display_mp_damage_cld display_mp_damage
def display_mp_damage(target, item)
window_battlelog_display_mp_damage_cld(target, item)
return if YEA::BATTLE::MSG_MP_DAMAGE
combatlog(target.result.mp_damage_text)
end
#--------------------------------------------------------------------------
# alias method: display_tp_damage
#--------------------------------------------------------------------------
alias window_battlelog_display_tp_damage_cld display_tp_damage
def display_tp_damage(target, item)
window_battlelog_display_tp_damage_cld(target, item)
return if YEA::BATTLE::MSG_TP_DAMAGE
combatlog(target.result.tp_damage_text)
end
#--------------------------------------------------------------------------
# alias method: display_added_states
#--------------------------------------------------------------------------
alias window_battlelog_display_added_states_cld display_added_states
def display_added_states(target)
window_battlelog_display_added_states_cld(target)
return if YEA::BATTLE::MSG_ADDED_STATES
target.result.added_state_objects.each do |state|
state_msg = target.actor? ? state.message1 : state.message2
next if state_msg.empty?
combatlog(target.name + state_msg)
end
end
#--------------------------------------------------------------------------
# alias method: display_removed_states
#--------------------------------------------------------------------------
alias window_battlelog_display_removed_states_cld display_removed_states
def display_removed_states(target)
window_battlelog_display_removed_states_cld(target)
return if YEA::BATTLE::MSG_REMOVED_STATES
target.result.removed_state_objects.each do |state|
next if state.message4.empty?
combatlog(target.name + state.message4)
end
end
#--------------------------------------------------------------------------
# alias method: display_buffs
#--------------------------------------------------------------------------
alias window_battlelog_display_buffs_cld display_buffs
def display_buffs(target, buffs, fmt)
window_battlelog_display_buffs_cld(target, buffs, fmt)
return if YEA::BATTLE::MSG_CHANGED_BUFFS
buffs.each do |param_id|
combatlog(sprintf(fmt, target.name, Vocab::param(param_id)))
end
end
#--------------------------------------------------------------------------
# End Ace Battle Engine Compatibility
#--------------------------------------------------------------------------
end # $imported["YEA-BattleEngine"]
end # Window_BattleLog
#==============================================================================
# ■ Window_CombatLog
#==============================================================================
class Window_CombatLog < Window_Selectable
#--------------------------------------------------------------------------
# initialize
#--------------------------------------------------------------------------
def initialize
@data = []
super(0, 0, Graphics.width, Graphics.height-120)
deactivate
hide
end
#--------------------------------------------------------------------------
# add_line
#--------------------------------------------------------------------------
def add_line(text)
return if text == "-" && @data[@data.size - 1] == "-"
@data.push(text)
@data.delete_at(0) while @data.size > 50 #
end
#--------------------------------------------------------------------------
# refresh
#--------------------------------------------------------------------------
def refresh
create_contents
draw_all_items
end
#--------------------------------------------------------------------------
# item_max
#--------------------------------------------------------------------------
def item_max; return @data.size; end
#--------------------------------------------------------------------------
# draw_item
#--------------------------------------------------------------------------
def draw_item(index)
text = @data[index]
return if text.nil?
rect = item_rect_for_text(index)
if text == "-"
draw_horz_line(rect.y)
else
draw_text_ex(rect.x, rect.y, text)
end
end
#--------------------------------------------------------------------------
# draw_horz_line
#--------------------------------------------------------------------------
def draw_horz_line(y)
line_y = y + line_height / 2 - 1
contents.fill_rect(4, line_y, contents_width-8, 2, line_colour)
end
#--------------------------------------------------------------------------
# line_colour
#--------------------------------------------------------------------------
def line_colour
colour = text_color(YEA::COMBAT_LOG::LINE_COLOUR)
colour.alpha = YEA::COMBAT_LOG::LINE_COLOUR_ALPHA
return colour
end
#--------------------------------------------------------------------------
# show
#--------------------------------------------------------------------------
def show
super
refresh
activate
select([item_max-1, 0].max)
end
#--------------------------------------------------------------------------
# hide
#--------------------------------------------------------------------------
def hide
deactivate
super
end
end # Window_CombatLog
#==============================================================================
# ■ Window_PartyCommand
#==============================================================================
class Window_PartyCommand < Window_Command
#--------------------------------------------------------------------------
# alias method: make_command_list
#--------------------------------------------------------------------------
alias window_partycommand_make_command_list_cld make_command_list
def make_command_list
window_partycommand_make_command_list_cld
return if $imported["YEA-BattleCommandList"]
add_command(YEA::COMBAT_LOG::COMMAND_NAME, :combatlog)
end
end # Window_PartyCommand
#==============================================================================
# ■ Scene_Battle
#==============================================================================
class Scene_Battle < Scene_Base
#--------------------------------------------------------------------------
# alias method: create_log_window
#--------------------------------------------------------------------------
alias scene_battle_create_log_window_cld create_log_window
def create_log_window
scene_battle_create_log_window_cld
create_combatlog_window
end
#--------------------------------------------------------------------------
# new method: create_combatlog_window
#--------------------------------------------------------------------------
def create_combatlog_window
@combatlog_window = Window_CombatLog.new
@log_window.combatlog_window = @combatlog_window
@combatlog_window.set_handler(:cancel, method(:close_combatlog))
@combatlog_window.add_line("-")
@combatlog_window.add_line(YEA::COMBAT_LOG::TEXT_BATTLE_START)
@combatlog_window.add_line("-")
end
#--------------------------------------------------------------------------
# new method: open_combatlog
#--------------------------------------------------------------------------
def open_combatlog
@combatlog_window.show
end
#--------------------------------------------------------------------------
# new method: close_combatlog
#--------------------------------------------------------------------------
def close_combatlog
@combatlog_window.hide
if $imported["YEA-BattleCommandList"]
if !@confirm_command_window.nil? && @confirm_command_window.visible
@confirm_command_window.activate
else
@party_command_window.activate
end
else
@party_command_window.activate
end
end
#--------------------------------------------------------------------------
# alias method: create_party_command_window
#--------------------------------------------------------------------------
alias create_party_command_window_cld create_party_command_window
def create_party_command_window
create_party_command_window_cld
@party_command_window.set_handler(:combatlog, method(:open_combatlog))
end
#--------------------------------------------------------------------------
# alias method: turn_start
#--------------------------------------------------------------------------
alias scene_battle_turn_start_cld turn_start
def turn_start
scene_battle_turn_start_cld
@combatlog_window.add_line("-")
text = sprintf(YEA::COMBAT_LOG::TEXT_TURN_NUMBER, $game_troop.turn_count)
@combatlog_window.add_line(text)
@combatlog_window.add_line("-")
end
#--------------------------------------------------------------------------
# alias method: execute_action
#--------------------------------------------------------------------------
alias scene_battle_execute_action_cld execute_action
def execute_action
@combatlog_window.add_line("-")
scene_battle_execute_action_cld
@combatlog_window.add_line("-")
end
#--------------------------------------------------------------------------
# alias method: turn_end
#--------------------------------------------------------------------------
alias scene_battle_turn_end_cld turn_end
def turn_end
scene_battle_turn_end_cld
@combatlog_window.add_line("-")
end
end # Scene_Battle
#==============================================================================
#
# ▼ End of File
#
#==============================================================================
复制代码
这是MOG的
#==============================================================================
# ■ BATTLE HUD SETTING
#==============================================================================
module MOG_BATTLE_HUD
# Ativar Battlers dos personagens em faces, deixe desativado em caso de haver
# outros scripts que usam battlers dos personagens em seu projeto.
BATTLER_FACE_ENABLE = true
#Definição geral da posição da HUD.
HUD_POSITION = [5,315]
#Definição da posição da face
FACE_POSITION = [60,30]
#Definição da posição do numero de HP.
HP_NUMBER_POSITION = [85,28]
#Definição da posição do medidor de HP.
HP_METER_POSITION = [27,37]
#Definição da posição do numero de MP.
MP_NUMBER_POSITION = [101,46]
#Definição da posição do medidor de MP.
MP_METER_POSITION = [43,55]
#Definição da posição do numero de TP.
TP_NUMBER_POSITION = [85,64]
#Definição da posição do medidor de TP.
TP_METER_POSITION = [27,73]
#Definição da posição das condições
STATES_POSITION = [5,1]
#Definição da posição do comando de batalha.
COMMAND_POSITION = [0,-145]
#Definição da posição do espaço da HUD entre os membros do grupo.
MEMBERS_SPACE = [136,0]
#Definição da prioridade da HUD.
BATTLE_HUD_Z = 0
#Definição da velocidade de animação dos medidores.
METER_FLOW_SPEED = 2
#Ativa o layout mais limpo nas janelas de item e skill.
ITEM_SKILL_WINDOWS_CLEAN_STYLE = true
#Definição da opacidade das janelas.
ITEM_SKILL_WINDOW_OPACITY = 0
end
#==============================================================================
# ■ Game Temp
#==============================================================================
class Game_Temp
attr_accessor :cache_battle_hud
#--------------------------------------------------------------------------
# ● Initialize
#--------------------------------------------------------------------------
alias mog_battle_hud_initialize initialize
def initialize
mog_battle_hud_initialize
pre_cache_battle_hud
end
#--------------------------------------------------------------------------
# ● Pre Cache Battle Hud
#--------------------------------------------------------------------------
def pre_cache_battle_hud
@cache_battle_hud = []
@cache_battle_hud.push(Cache.system("Battle_Hud_Number"))
@cache_battle_hud.push(Cache.system("Battle_Hud_Meter"))
@cache_battle_hud.push(Cache.system("Iconset"))
@cache_battle_hud.push(Cache.system("Battle_Hud_Layout"))
end
end
#==============================================================================
# ■ Battle_Hud
#==============================================================================
class Battle_Hud
include MOG_BATTLE_HUD
#--------------------------------------------------------------------------
# ● Initialize
#--------------------------------------------------------------------------
def initialize(actor)
[url=home.php?mod=space&uid=95897]@actor[/url] = actor
@x = HUD_POSITION[0] + (MEMBERS_SPACE[0] * @actor.index)
@y = HUD_POSITION[1] + (MEMBERS_SPACE[1] * @actor.index)
@flow_speed = 0
pre_cache
create_layout
create_hp_number
create_hp_meter
create_mp_number
create_mp_meter
create_tp_number
create_tp_meter
create_states
end
#--------------------------------------------------------------------------
# ● Pre Cache
#--------------------------------------------------------------------------
def pre_cache
$game_temp.pre_cache_battle_hud
[url=home.php?mod=space&uid=27178]@Number[/url] = $game_temp.cache_battle_hud[0]
@number_cw = @number.width / 10
@number_ch = @number.height / 4
@meter = $game_temp.cache_battle_hud[1]
@meter_cw = @meter.width / 3
@meter_ch = @meter.height / 3
@icon = $game_temp.cache_battle_hud[2]
end
#--------------------------------------------------------------------------
# ● Create Layout
#--------------------------------------------------------------------------
def create_layout
@layout = Sprite.new
@layout.bitmap = $game_temp.cache_battle_hud[3]
@layout.z = BATTLE_HUD_Z
@layout.x = @x
@layout.y = @y
end
#--------------------------------------------------------------------------
# ● Create HP Number
#--------------------------------------------------------------------------
def create_hp_number
@hp = @actor.hp
@hp_old = @actor.hp
@hp_ref = @hp_old
@hp_refresh = false
@hp_number = Sprite.new
@hp_number.bitmap = Bitmap.new((@number_cw * 6),@number_ch)
@hp_number.z = BATTLE_HUD_Z + 2
@hp_number.x = @x + HP_NUMBER_POSITION[0]
@hp_number.y = @y + HP_NUMBER_POSITION[1]
refresh_hp_number
end
#--------------------------------------------------------------------------
# ● Create HP Meter
#--------------------------------------------------------------------------
def create_hp_meter
@hp_meter = Sprite.new
@hp_meter.bitmap = Bitmap.new(@meter_cw,@meter_ch)
@hp_meter.z = BATTLE_HUD_Z + 1
@hp_meter.x = @x + HP_METER_POSITION[0]
@hp_meter.y = @y + HP_METER_POSITION[1]
@hp_flow = rand(@meter_cw * 2)
@hp_width_old = @meter_cw * @actor.hp / @actor.mhp
hp_flow_update
end
#--------------------------------------------------------------------------
# ● Hp Flow Update
#--------------------------------------------------------------------------
def hp_flow_update
@hp_meter.bitmap.clear
hp_width = @meter_cw * @actor.hp / @actor.mhp
hp_src_rect = Rect.new(@hp_flow, 0,hp_width, @meter_ch)
@hp_meter.bitmap.blt(0,0, @meter, hp_src_rect)
@hp_flow += METER_FLOW_SPEED
@hp_flow = 0 if @hp_flow >= @meter_cw * 2
end
#--------------------------------------------------------------------------
# ● Execute Damage Flow
#--------------------------------------------------------------------------
def execute_damage_flow(hp_width)
n = (@hp_width_old - hp_width).abs * 3 / 100
damage_flow = [[n, 2].min,0.5].max
@hp_width_old -= damage_flow
@hp_width_old = hp_width if @hp_width_old < hp_width
src_rect_old = Rect.new(@hp_flow, @meter_ch * 3,@hp_width_old, @meter_ch)
@hp_meter.bitmap.blt(0,0, @meter, src_rect_old)
end
#--------------------------------------------------------------------------
# ● Update HP Number
#--------------------------------------------------------------------------
def update_hp_number
@hp_refresh = true
n = 2 * (@actor.hp - @hp_old).abs / 100
hp_ref = [[n, 100].min,1].max
if @hp_old < @actor.hp
@hp += hp_ref
if @hp >= @actor.hp
@hp_old = @actor.hp
@hp = @actor.hp
@hp_ref = 0
end
elsif @hp_old > @actor.hp
@hp -= hp_ref
if @hp <= @actor.hp
@hp_old = @actor.hp
@hp = @actor.hp
@hp_ref = 0
end
end
end
#--------------------------------------------------------------------------
# ● Refresh HP Number
#--------------------------------------------------------------------------
def refresh_hp_number
@flow_speed = METER_FLOW_SPEED
@hp_number.bitmap.clear
number_value = @hp.abs.to_s.split(//)
hp_color = @hp < @actor.mhp * 30 / 100 ? @number_ch : 0
center_x = 0
for r in 0..number_value.size - 1
number_value_abs = number_value[r].to_i
src_rect = Rect.new(@number_cw * number_value_abs, hp_color, @number_cw, @number_ch)
@hp_number.bitmap.blt((@number_cw + 1) * r, 0, @number, src_rect)
center_x += 1
end
@hp_number.x = @x + HP_NUMBER_POSITION[0] - (center_x * (@number_cw + 1))
@hp_refresh = false if @hp == @actor.hp
end
#--------------------------------------------------------------------------
# ● Create MP Number
#--------------------------------------------------------------------------
def create_mp_number
@mp = @actor.mp
@mp_old = @actor.mp
@mp_ref = @mp_old
@mp_refresh = false
@mp_number = Sprite.new
@mp_number.bitmap = Bitmap.new((@number_cw * 6),@number_ch)
@mp_number.z = BATTLE_HUD_Z + 2
@mp_number.x = @x + MP_NUMBER_POSITION[0]
@mp_number.y = @y + MP_NUMBER_POSITION[1]
refresh_mp_number
end
#--------------------------------------------------------------------------
# ● Create MP Meter
#--------------------------------------------------------------------------
def create_mp_meter
@mp_meter = Sprite.new
@mp_meter.bitmap = Bitmap.new(@meter_cw,@meter_ch)
@mp_meter.z = BATTLE_HUD_Z + 1
@mp_meter.x = @x + MP_METER_POSITION[0]
@mp_meter.y = @y + MP_METER_POSITION[1]
@mp_flow = rand(@meter_cw * 2)
@mp_width_old = @meter_cw * @actor.mp / @actor.mmp rescue 0
mp_flow_update
end
#--------------------------------------------------------------------------
# ● Mp Flow Update
#--------------------------------------------------------------------------
def mp_flow_update
return if @actor.mmp == 0
@mp_meter.bitmap.clear
mp_width = @meter_cw * @actor.mp / @actor.mmp rescue 0
src_rect = Rect.new(@mp_flow, @meter_ch,mp_width, @meter_ch)
@mp_meter.bitmap.blt(0,0, @meter, src_rect)
@mp_flow += METER_FLOW_SPEED
@mp_flow = 0 if @mp_flow >= @meter_cw * 2
end
#--------------------------------------------------------------------------
# ● Update MP Number
#--------------------------------------------------------------------------
def update_mp_number
@mp_refresh = true
n = 2 * (@actor.mp - @mp_old).abs / 100
mp_ref = [[n, 100].min,1].max
if @mp_old < @actor.mp
@mp += mp_ref
if @mp >= @actor.mp
@mp_old = @actor.mp
@mp = @actor.mp
@mp_ref = 0
end
elsif @mp_old > @actor.mp
@mp -= mp_ref
if @mp <= @actor.mp
@mp_old = @actor.mp
@mp = @actor.mp
@mp_ref = 0
end
end
end
#--------------------------------------------------------------------------
# ● Refresh MP Number
#--------------------------------------------------------------------------
def refresh_mp_number
@flow_speed = METER_FLOW_SPEED
@mp_number.bitmap.clear
number_value = @mp.abs.to_s.split(//)
center_x = 0
for r in 0..number_value.size - 1
number_value_abs = number_value[r].to_i
src_rect = Rect.new(@number_cw * number_value_abs, @number_ch * 2, @number_cw, @number_ch)
@mp_number.bitmap.blt((@number_cw + 1) * r, 0, @number, src_rect)
center_x += 1
end
@mp_number.x = @x + MP_NUMBER_POSITION[0] - (center_x * (@number_cw + 1))
@mp_refresh = false if @mp == @actor.mp
end
#--------------------------------------------------------------------------
# ● Create TP Number
#--------------------------------------------------------------------------
def create_tp_number
@tp = @actor.tp
@tp_old = @actor.tp
@tp_ref = @tp_old
@tp_refresh = false
@tp_number = Sprite.new
@tp_number.bitmap = Bitmap.new((@number_cw * 6),@number_ch)
@tp_number.z = BATTLE_HUD_Z + 2
@tp_number.x = @x + TP_NUMBER_POSITION[0]
@tp_number.y = @y + TP_NUMBER_POSITION[1]
refresh_tp_number
end
#--------------------------------------------------------------------------
# ● Create TP Meter
#--------------------------------------------------------------------------
def create_tp_meter
@tp_meter = Sprite.new
@tp_meter.bitmap = Bitmap.new(@meter_cw,@meter_ch)
@tp_meter.z = BATTLE_HUD_Z + 1
@tp_meter.x = @x + TP_METER_POSITION[0]
@tp_meter.y = @y + TP_METER_POSITION[1]
@tp_flow = rand(@meter_cw * 2)
@tp_width_old = @meter_cw * @actor.tp / @actor.max_tp rescue 0
tp_flow_update
end
#--------------------------------------------------------------------------
# ● TP Flow Update
#--------------------------------------------------------------------------
def tp_flow_update
return if @actor.max_tp == 0
@tp_meter.bitmap.clear
tp_width = @meter_cw * @actor.tp / @actor.max_tp rescue 0
src_rect = Rect.new(@tp_flow, @meter_ch * 2,tp_width, @meter_ch)
@tp_meter.bitmap.blt(0,0, @meter, src_rect)
@tp_flow += METER_FLOW_SPEED
@tp_flow = 0 if @tp_flow >= @meter_cw * 2
end
#--------------------------------------------------------------------------
# ● Update TP Number
#--------------------------------------------------------------------------
def update_tp_number
@tp_refresh = true
n = 2 * (@actor.tp - @tp_old).abs / 100
tp_ref = [[n, 100].min,1].max
if @tp_old < @actor.tp
@tp += tp_ref
if @tp >= @actor.tp
@tp_old = @actor.tp
@tp = @actor.tp
@tp_ref = 0
end
elsif @tp_old > @actor.tp
@tp -= tp_ref
if @tp <= @actor.tp
@tp_old = @actor.tp
@tp = @actor.tp
@tp_ref = 0
end
end
end
#--------------------------------------------------------------------------
# ● Refresh TP Number
#--------------------------------------------------------------------------
def refresh_tp_number
@flow_speed = METER_FLOW_SPEED
@tp_number.bitmap.clear
number_value = @tp.truncate.to_s.split(//)
center_x = 0
for r in 0..number_value.size - 1
number_value_abs = number_value[r].to_i
src_rect = Rect.new(@number_cw * number_value_abs, @number_ch * 3, @number_cw, @number_ch)
@tp_number.bitmap.blt((@number_cw + 1) * r, 0, @number, src_rect)
center_x += 1
end
@tp_number.x = @x + TP_NUMBER_POSITION[0] - (center_x * (@number_cw + 1))
@tp_refresh = false if @tp == @actor.tp
end
#--------------------------------------------------------------------------
# ● Create_States
#--------------------------------------------------------------------------
def create_states
refresh_states
@status = Sprite.new
@status.bitmap = Bitmap.new(24,24)
@status.x = @x + STATES_POSITION[0]
@status.y = @y + STATES_POSITION[1]
@status_flow = -24
@states_speed = 50
@status.z = BATTLE_HUD_Z + 2
@old_states = @actor.states
flow_states
end
#--------------------------------------------------------------------------
# ● Flow_Status
#--------------------------------------------------------------------------
def flow_states
return if @actor.states.size == 0 and
[email protected]
@states_speed = 0
@status.bitmap.clear
src_rect = Rect.new(@status_flow,0, 24,24)
@status.bitmap.blt(0,0, @actor_status, src_rect)
@status.visible = @actor.states.size == 0 ? false : true
@status_flow += 1
@status_flow = -24 if @status_flow >= @states_size - 24
end
#--------------------------------------------------------------------------
# ● Refresh States
#--------------------------------------------------------------------------
def refresh_states
@old_states = @actor.states
@actor_status.dispose if @actor_status != nil
@states_size = @actor.states.size > 0 ? (48 * @actor.states.size) : 24
@actor_status = Bitmap.new(@states_size,24)
index = 0
for i in @actor.states
rect = Rect.new(i.icon_index % 16 * 24, i.icon_index / 16 * 24, 24, 24)
@actor_status.blt(48 * index , 0, @icon, rect)
index += 1
end
end
#--------------------------------------------------------------------------
# ● Dispose
#--------------------------------------------------------------------------
def dispose
return if @layout == nil
@layout.dispose
@hp_number.bitmap.dispose
@hp_number.dispose
@hp_meter.bitmap.dispose
@hp_meter.dispose
@mp_number.bitmap.dispose
@mp_number.dispose
@mp_meter.bitmap.dispose
@mp_meter.dispose
@tp_number.bitmap.dispose
@tp_number.dispose
@tp_meter.bitmap.dispose
@tp_meter.dispose
@status.bitmap.dispose
@status.dispose
@actor_status.dispose if @actor_status != nil
@layout = nil
end
#--------------------------------------------------------------------------
# ● Update
#--------------------------------------------------------------------------
def update
return if @meter == nil
update_hp_number if @hp_old != @actor.hp
refresh_hp_number if @hp_refresh
update_mp_number if @mp_old != @actor.mp
refresh_mp_number if @mp_refresh
update_tp_number if @tp_old != @actor.tp
refresh_tp_number if @tp_refresh
refresh_states if @old_states != @actor.states
@flow_speed += 1
if @flow_speed >= METER_FLOW_SPEED
@flow_speed = 0
hp_flow_update
tp_flow_update
mp_flow_update
end
flow_states
end
end
#==============================================================================
# ■ Game_System
#==============================================================================
class Game_System
attr_accessor :battler_hud
#--------------------------------------------------------------------------
# ● Initialize
#--------------------------------------------------------------------------
alias mog_adv_battle_hud_initialize initialize
def initialize
@battler_hud = false
mog_adv_battle_hud_initialize
end
end
#==============================================================================
# ■ Spriteset Battle
#==============================================================================
class Spriteset_Battle
#--------------------------------------------------------------------------
# ● Initialize
#--------------------------------------------------------------------------
alias mog_battle_hud_initialize initialize
def initialize
mog_battle_hud_initialize
create_battle_hud
end
#--------------------------------------------------------------------------
# ● Create Battle Hud
#--------------------------------------------------------------------------
def create_battle_hud
@battle_hud = []
for i in $game_party.battle_members
@battle_hud.push(Battle_Hud.new(i))
end
end
#--------------------------------------------------------------------------
# ● Dispose
#--------------------------------------------------------------------------
alias mog_battle_hud_dispose dispose
def dispose
mog_battle_hud_dispose
dispose_battle_hud
end
#--------------------------------------------------------------------------
# ● Dispose Battle Hud
#--------------------------------------------------------------------------
def dispose_battle_hud
return if @battle_hud == nil
@battle_hud.each {|sprite| sprite.dispose }
@battle_hud = nil
end
#--------------------------------------------------------------------------
# ● Update
#--------------------------------------------------------------------------
alias mog_battle_hud_update update
def update
mog_battle_hud_update
update_battle_hud
end
#--------------------------------------------------------------------------
# ● Update Battle Hud
#--------------------------------------------------------------------------
def update_battle_hud
return if @battle_hud == nil
@battle_hud.each {|sprite| sprite.update }
end
end
#==============================================================================
# ■ Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
include MOG_BATTLE_HUD
attr_accessor :hud_x
attr_accessor :hud_y
#--------------------------------------------------------------------------
# ● HUD X
#--------------------------------------------------------------------------
def hud_x
return HUD_POSITION[0] + (MEMBERS_SPACE[0] * index)
end
#--------------------------------------------------------------------------
# ● HUD Y
#--------------------------------------------------------------------------
def hud_y
return HUD_POSITION[1] + (MEMBERS_SPACE[1] * index)
end
end
#==============================================================================
# ■ Scene Battle
#==============================================================================
class Scene_Battle < Scene_Base
#--------------------------------------------------------------------------
# ● Create Party Command Window
#--------------------------------------------------------------------------
alias mog_battle_hud_create_party_command_window create_party_command_window
def create_party_command_window
mog_battle_hud_create_party_command_window
set_party_window_position
end
#--------------------------------------------------------------------------
# ● Set Party Window Position
#--------------------------------------------------------------------------
def set_party_window_position
@party_command_window.viewport = nil
return if $mog_rgss3_at_system != nil
a_index = []
for actor in $game_party.alive_members
a_index = [actor.hud_x, actor.hud_y]
break
end
return if a_index.empty?
@party_command_window.x = MOG_BATTLE_HUD::COMMAND_POSITION[0] + a_index[0]
@party_command_window.y = MOG_BATTLE_HUD::COMMAND_POSITION[1] + a_index[1]
end
#--------------------------------------------------------------------------
# ● Set Party Window Position
#--------------------------------------------------------------------------
alias mog_battle_hud_start_party_command_selection start_party_command_selection
def start_party_command_selection
set_party_window_position
mog_battle_hud_start_party_command_selection
end
#--------------------------------------------------------------------------
# ● Update
#--------------------------------------------------------------------------
alias mog_battle_hud_update_basic update_basic
def update_basic
mog_battle_hud_update_basic
update_command_window_visible
end
#--------------------------------------------------------------------------
# ● Update Command Window Visible
#--------------------------------------------------------------------------
def update_command_window_visible
@status_window.visible = @status_window.active ? true : false
@actor_command_window.visible = @actor_command_window.active ? true : false
@skill_window.visible = @skill_window.active ? true : false
@item_window.visible = @item_window.active ? true : false
end
#--------------------------------------------------------------------------
# ● Start Actor Command Selection
#--------------------------------------------------------------------------
alias mog_battle_hud_start_actor_command_selection start_actor_command_selection
def start_actor_command_selection
mog_battle_hud_start_actor_command_selection
@actor_command_window.viewport = nil
@actor_command_window.x = MOG_BATTLE_HUD::COMMAND_POSITION[0] + $game_party.members[BattleManager.actor.index].hud_x
@actor_command_window.y = MOG_BATTLE_HUD::COMMAND_POSITION[1] + $game_party.members[BattleManager.actor.index].hud_y
@party_command_window.x = @actor_command_window.x
@party_command_window.y = @actor_command_window.y
end
end
#==============================================================================
# ■ Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
include MOG_BATTLE_HUD
attr_accessor :battler_face
attr_accessor :battler_face_name
attr_accessor :screen_x
attr_accessor :screen_y
attr_accessor :screen_z
#--------------------------------------------------------------------------
# ● Initialize
#--------------------------------------------------------------------------
alias mog_battle_hud_initialize setup
def setup(actor_id)
mog_battle_hud_initialize(actor_id)
battler_sprite_setup
end
#--------------------------------------------------------------------------
# ● Battler Sprite Setup
#--------------------------------------------------------------------------
def battler_sprite_setup
@battler_face = [0,0,0]
@battler_face_name = @name + "_Face"
end
if BATTLER_FACE_ENABLE
#--------------------------------------------------------------------------
# ● Use Sprite?
#--------------------------------------------------------------------------
def use_sprite?
return true
end
end
end
#==============================================================================
# ■ Sprite_Battler
#==============================================================================
class Sprite_Battler < Sprite_Base
include MOG_BATTLE_HUD
#--------------------------------------------------------------------------
# ● Dispose
#--------------------------------------------------------------------------
alias mog_battler_face_dispose dispose
def dispose
mog_battler_face_dispose
dispose_battler_face
end
#--------------------------------------------------------------------------
# ● Update
#--------------------------------------------------------------------------
alias mog_battler_face_update update
def update
refresh_face_battler
mog_battler_face_update
update_battler_face
end
#--------------------------------------------------------------------------
# ● Refresh Face Battler
#--------------------------------------------------------------------------
def refresh_face_battler
return if @face_sprite != nil
return if @battler == nil
return if @battler.is_a?(Game_Enemy)
setup_battler_screen if @battler.screen_x == nil or $game_system.battler_hud
@face_sprite = Battler_Face_Sprite.new(self.viewport, @battler)
end
#--------------------------------------------------------------------------
# ● Setup Battler Screen
#--------------------------------------------------------------------------
def setup_battler_screen
$game_system.battler_hud = true
@battler.screen_x = FACE_POSITION[0] + HUD_POSITION[0] + (MEMBERS_SPACE[0] * @battler.index)
@battler.screen_y = FACE_POSITION[1] + HUD_POSITION[1] + (MEMBERS_SPACE[1] * @battler.index)
@battler.screen_z = 103 if @battler.screen_z == nil
end
#--------------------------------------------------------------------------
# ● Dispose Battler Face
#--------------------------------------------------------------------------
def dispose_battler_face
return if @face_sprite == nil
@face_sprite.dispose
end
#--------------------------------------------------------------------------
# ● Update Battler Face
#--------------------------------------------------------------------------
def update_battler_face
return if @face_sprite == nil
@face_sprite.update_actor_battler
end
#--------------------------------------------------------------------------
# ● Update Posiion
#--------------------------------------------------------------------------
alias mog_battler_face_update_position update_position
def update_position
mog_battler_face_update_position
update_face_z
end
#--------------------------------------------------------------------------
# ● Update Face Z
#--------------------------------------------------------------------------
def update_face_z
return if @face_sprite == nil
@face_sprite.update_face_z(self.z)
end
#--------------------------------------------------------------------------
# ● Update Collapse
#--------------------------------------------------------------------------
alias mog_battle_hud_update_collapse update_collapse
def update_collapse
if face_can_cancel_method?
self.opacity = 255
self.visible = true
return
end
mog_battle_hud_update_collapse
end
#--------------------------------------------------------------------------
# ● Update Instant Collapse
#--------------------------------------------------------------------------
alias mog_battle_hud_update_instant_collapse update_instant_collapse
def update_instant_collapse
if face_can_cancel_method?
self.opacity = 255
self.visible = true
return
end
mog_battle_hud_update_instant_collapse
end
#--------------------------------------------------------------------------
# ● Init Visibility
#--------------------------------------------------------------------------
alias mog_battle_face_init_visibility init_visibility
def init_visibility
if face_can_cancel_method?
self.opacity = 255
self.visible = true
return
end
mog_battle_face_init_visibility
end
#--------------------------------------------------------------------------
# ● Face Can Cancel Method
#--------------------------------------------------------------------------
def face_can_cancel_method?
return false if !BATTLER_FACE_ENABLE
return false if @battler.is_a?(Game_Enemy)
return false if !$game_system.battler_hud
return true
end
end
#==============================================================================
# ■ Battler Face Sprite
#==============================================================================
class Battler_Face_Sprite < Sprite
include MOG_BATTLE_HUD
#--------------------------------------------------------------------------
# ● Initialize
#--------------------------------------------------------------------------
def initialize(viewport = nil,battler)
super(viewport)
@battler = battler
@f_im = Cache.battler(@battler.battler_face_name, 0)
@f_cw = @f_im.width / 5
@f_ch = @f_im.height
self.bitmap = Bitmap.new(@f_cw,@f_ch)
x = -(@f_cw / 2) + FACE_POSITION[0] + HUD_POSITION[0] + (MEMBERS_SPACE[0] * @battler.index)
y = -@f_ch + FACE_POSITION[1] + HUD_POSITION[1] + (MEMBERS_SPACE[1] * @battler.index)
@org_pos = [x,y]
@battler.battler_face = [0,0,0]
@battler_visible = true
@low_hp = @battler.mhp * 30 / 100
@old_face_index = 0
self.z = @battler.screen_z
make_face(true)
end
#--------------------------------------------------------------------------
# ● Dispose
#--------------------------------------------------------------------------
def dispose
super
dispose_battler_face_sprite
end
#--------------------------------------------------------------------------
# ● Dispose Battler Face Sprite
#--------------------------------------------------------------------------
def dispose_battler_face_sprite
self.bitmap.dispose
@f_im.dispose
end
#--------------------------------------------------------------------------
# ● Update
#--------------------------------------------------------------------------
def update_face_sprite(battler)
@battler = battler
update_face_reset_time
update_face_effect
end
#--------------------------------------------------------------------------
# ● Face Base Setting
#--------------------------------------------------------------------------
def face_base_setting
self.x = @org_pos[0]
self.y = @org_pos[1]
self.zoom_x = 1
self.zoom_y = 1
self.mirror = false
end
#--------------------------------------------------------------------------
# ● Check Base Face
#--------------------------------------------------------------------------
def check_base_face(reset)
face_base_setting
return if @battler.battler_face[2] > 0
@battler.battler_face = [0,0,0] if reset and @battler.battler_face[1] != 2
@battler.battler_face[0] = 3 if @battler.hp < @low_hp
@battler.battler_face[0] = 4 if @battler.hp == 0
end
#--------------------------------------------------------------------------
# ● Make Face
#--------------------------------------------------------------------------
def make_face(reset = false)
self.bitmap.clear
check_base_face(reset)
src_rect_back = Rect.new(@f_cw * @battler.battler_face[0], 0, @f_cw, @f_ch)
self.bitmap.blt(0,0, @f_im, src_rect_back)
@old_face_index = @battler.battler_face[0]
end
#--------------------------------------------------------------------------
# ● Update Actor Battler
#--------------------------------------------------------------------------
def update_actor_battler
return if self.bitmap == nil
update_face_effect
update_face_reset_time
make_face if @old_face_index != @battler.battler_face[0]
end
#--------------------------------------------------------------------------
# ● Update Face Z
#--------------------------------------------------------------------------
def update_face_z(value)
self.z = value + 2
end
#--------------------------------------------------------------------------
# ● Update Face Reset Time
#--------------------------------------------------------------------------
def update_face_reset_time
return if @battler.battler_face[2] == 0
@battler.battler_face[2] -= 1
if @battler.battler_face[2] == 0 or
(@battler.hp < @low_hp and @battler.battler_face[0] == 0)
make_face(true)
end
end
#--------------------------------------------------------------------------
# ● Update Face Effect
#--------------------------------------------------------------------------
def update_face_effect
return if @battler.battler_face[2] == 0
case @battler.battler_face[1]
when 0
face_damage
when 1..2
face_heal
when 3
face_action
end
end
#--------------------------------------------------------------------------
# ● Face Damage
#--------------------------------------------------------------------------
def face_damage
self.x = (@org_pos[0] - (@battler.battler_face[2] /2)) + rand(@battler.battler_face[2])
end
#--------------------------------------------------------------------------
# ● Face Heal
#--------------------------------------------------------------------------
def face_heal
case @battler.battler_face[2]
when 20..40
self.zoom_x += 0.01
self.zoom_y = self.zoom_x
when 0..20
self.zoom_x -= 0.01
self.zoom_y = self.zoom_x
end
end
#--------------------------------------------------------------------------
# ● Face Action
#--------------------------------------------------------------------------
def face_action
case @battler.battler_face[2]
when 25..50
self.zoom_x += 0.01
self.zoom_y = self.zoom_x
self.mirror = true
when 0..25
self.zoom_x -= 0.01
self.zoom_y = self.zoom_x
self.mirror = false
end
self.zoom_x = self.zoom_x > 1.5 ? self.zoom_x = 1.5 : self.zoom_x < 1 ? 1 : self.zoom_x
self.zoom_y = self.zoom_y > 1.5 ? self.zoom_y = 1.5 : self.zoom_y < 1 ? 1 : self.zoom_y
end
end
#==============================================================================
# ■ Battle Manager
#==============================================================================
class << BattleManager
#--------------------------------------------------------------------------
# ● Battle End
#--------------------------------------------------------------------------
alias mog_battle_hud_battle_process_victory process_victory
def process_victory
execute_face_effect
mog_battle_hud_battle_process_victory
end
#--------------------------------------------------------------------------
# ● Prepare
#--------------------------------------------------------------------------
def execute_face_effect
for i in $game_party.members
i.battler_face = [1,2,40] if i.hp > 0
end
end
end
#==============================================================================
# ■ Game Action
#==============================================================================
class Scene_Battle < Scene_Base
#--------------------------------------------------------------------------
# ● Show Animations
#--------------------------------------------------------------------------
alias mog_battle_hud_show_animation show_animation
def show_animation(targets, animation_id)
make_face_action_battle
mog_battle_hud_show_animation(targets, animation_id)
end
#--------------------------------------------------------------------------
# ● Make Face Action
#--------------------------------------------------------------------------
def make_face_action_battle
return if
[email protected]
_a?(Game_Actor)
@subject.battler_face = [2,3,50]
end
end
#==============================================================================
# ■ Game Battler
#==============================================================================
class Game_Battler < Game_BattlerBase
#--------------------------------------------------------------------------
# ● Item Apply
#--------------------------------------------------------------------------
alias mog_battle_hud_item_apply item_apply
def item_apply(user, item)
old_hp = self.hp
old_mp = self.mp
mog_battle_hud_item_apply(user, item)
check_face_effect(old_hp,old_mp) if can_check_face_effect?(old_hp,old_mp)
end
#--------------------------------------------------------------------------
# ● Check Face Effect
#--------------------------------------------------------------------------
def check_face_effect(old_hp,old_mp)
if self.hp > old_hp or self.mp > old_mp
self.battler_face = [1,1,40]
elsif self.hp < old_hp
self.battler_face = [3,0,40]
end
end
#--------------------------------------------------------------------------
# ● Added New State
#--------------------------------------------------------------------------
alias mog_battle_hud_add_new_state add_new_state
def add_new_state(state_id)
mog_battle_hud_add_new_state(state_id)
if self.is_a?(Game_Actor)
self.battler_face = [1,1,40] if $data_states[state_id].note =~ /<Good State>/
self.battler_face = [3,0,40] if $data_states[state_id].note =~ /<Bad State>/
end
end
#--------------------------------------------------------------------------
# ● Regenerate HP
#--------------------------------------------------------------------------
alias mog_battle_hud_regenerate_hp regenerate_hp
def regenerate_hp
old_hp = self.hp
old_mp = self.mp
mog_battle_hud_regenerate_hp
check_face_effect(old_hp,old_mp) if can_check_face_effect?(old_hp,old_mp)
end
#--------------------------------------------------------------------------
# ● Regenerate MP
#--------------------------------------------------------------------------
alias mog_battle_hud_regenerate_mp regenerate_mp
def regenerate_mp
old_hp = self.hp
old_mp = self.mp
mog_battle_hud_regenerate_mp
check_face_effect(old_hp,old_mp) if can_check_face_effect?(old_hp,old_mp)
end
#--------------------------------------------------------------------------
# ● Can Check Face Effect
#--------------------------------------------------------------------------
def can_check_face_effect?(old_hp,old_mp)
return false if self.is_a?(Game_Enemy)
return true if old_hp != self.hp
return true if old_mp != self.mp
return false
end
end
#==============================================================================
# ■ Scene_Battle
#==============================================================================
class Scene_Battle < Scene_Base
#--------------------------------------------------------------------------
# ● Invoke Counter Attack
#--------------------------------------------------------------------------
alias mog_battle_hud_invoke_counter_attack invoke_counter_attack
def invoke_counter_attack(target, item)
mog_battle_hud_invoke_counter_attack(target, item)
if target.is_a?(Game_Actor) and target.battler_face[0] != 2
target.battler_face = [2,3,50]
end
end
#--------------------------------------------------------------------------
# ● Invoke Magic Reflection
#--------------------------------------------------------------------------
alias mog_battle_hud_invoke_magic_reflection invoke_magic_reflection
def invoke_magic_reflection(target, item)
mog_battle_hud_invoke_magic_reflection(target, item)
if target.is_a?(Game_Actor) and target.battler_face[0] != 2
target.battler_face = [2,3,50]
end
end
end
#==============================================================================
# ■ Scene Battle
#==============================================================================
class Scene_Battle < Scene_Base
#--------------------------------------------------------------------------
# ● select_enemy_selection
#--------------------------------------------------------------------------
alias mog_battle_cursor_select_enemy_selection select_enemy_selection
def select_enemy_selection
mog_battle_cursor_select_enemy_selection
if $mog_rgss3_battle_cursor != nil
@enemy_window.visible = false
@info_viewport.rect.width = 0
end
end
#--------------------------------------------------------------------------
# ● select_enemy_selection
#--------------------------------------------------------------------------
alias mog_battle_cursor_select_actor_selection select_actor_selection
def select_actor_selection
mog_battle_cursor_select_actor_selection
if $mog_rgss3_battle_cursor != nil
@actor_window.visible = false
@info_viewport.rect.width = 0
end
end
end
$mog_rgss3_battle_hud = true
复制代码
作者:
ninesound
时间:
2013-9-13 19:21
不好意思
已补上脚本
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1