Original Source
- Original title: Trying to customize a damage pop up script and getting error
- Original author: pedrocarsamar
- Original date: June 22, 2022
- Source thread: https://forums.rpgmakerweb.com/threads/trying-to-customize-a-damage-pop-up-script-and-getting-error.148786/
- Source forum path: Game Development Engines > Ruby Game System (RGSS) Scripts > Learning Ruby and RGSSx
Summary
Hello. I'm trying to customize Battle Luna script, which is responsible for making damage popups appear in battle. Her* original script can be found in: ( * Sorry if I'm using the wrong pronoun. I have no idea what is the gender of this programmer) rmvxa-collection/Battle Damage Popup.rb at master · suppayami/rmvxa-collection My scripts collection for RPG Maker VX Ace. Contribute to suppayami/rmvxa-collection development by creating an account on GitHub.
Archived First Post
( * Sorry if I'm using the wrong pronoun. I have no idea what is the gender of this programmer)
rmvxa-collection/Battle Damage Popup.rb at master · suppayami/rmvxa-collection
In her script, you can customize the hp damage pop up at the first section, being referred as ":hp_dmg" and defined at the Game_BattlerBase section.
My problem with how her script is coded is that it doesn't distinguish the hp damage by the damage type. So, if you suffer physical or magical damage, the color of the popup will be the same.
I tried to overcome this by dumping the ":hp_dmg" rule and creating "ys_dmg" and ":mag_dmg" rules, which stand for physical damage and magical damage respectively. I've coded this way:
$imported = {} if $imported.nil?
$imported["YES-BattlePopup"] = true
#==============================================================================
# ■ BattleLuna
#==============================================================================
module BattleLuna
module Addon
BATTLE_POPUP = {
# Basic Configuration.
:basic_setting => {
:enable => true, # Set to false to disable popup.
:state_popup => true, # Set to false to disable state popup.
:buff_popup => true, # Set to false to disable buff popup.
:delay => 6, # Delay between each popup.
:no_delay => [:critical, :drained, :weakpoint, :resistant, :absorbed],
},
# Configuration for words.
:word_setting => {
:default => "%s", # SprintF for Default.
:pys_dmg => "-%s ", # SprintF for HP damage.
:mag_dmg => "-%s ", # SprintF for HP damage.
:hp_heal => "+%s ", # SprintF for HP healing.
:mp_dmg => "-%s MP", # SprintF for MP damage.
:mp_heal => "+%s MP", # SprintF for MP healing.
:tp_dmg => "-%s TP", # SprintF for MP damage.
:tp_heal => "+%s TP", # SprintF for MP healing.
:drained => "DRAIN", # Text display for draining HP/MP.
:critical => "CRITICAL!", # Text display for critical hit.
:missed => "MISS", # Text display for missed attack.
:evaded => "EVADE!", # Text display for evaded attack.
:nulled => "NULL", # Text display for nulled attack.
:failed => "FAILED", # Text display for a failed attack.
:add_state => "+%s", # SprintF for added states.
:rem_state => "-%s", # SprintF for removed states.
:dur_state => "%s", # SprintF for during states.
:weakpoint => "WEAKPOINT", # Appears if foe is weak to element.
:resistant => "RESIST", # Appears if foe is resistant to element.
:immune => "IMMUNE", # Appears if foe is immune to element.
:absorbed => "ABSORB", # Appears if foe can absorb the element.
:add_buff => "%s", # Appears when a positive buff is applied.
:add_debuff => "%s", # Appears when a negative buff is applied.
},
# Configuration for popup visual.
:style_setting => {
# Type => [Red, Green, Blue, Size, Bold, Italic, Font],
:default => [255, 255, 255, 32, true, false, Font.default_name],
:pys_dmg => [255, 50, 50, 32, true, false, Font.default_name],
:mag_dmg => [50, 50, 255, 32, true, false, Font.default_name],
:hp_heal => [255, 255, 255, 32, true, false, Font.default_name],
:mp_dmg => [255, 255, 255, 32, true, false, Font.default_name],
:mp_heal => [255, 255, 255, 32, true, false, Font.default_name],
:tp_dmg => [255, 255, 255, 32, true, false, Font.default_name],
:tp_heal => [255, 255, 255, 32, true, false, Font.default_name],
:drained => [255, 255, 255, 32, true, false, Font.default_name],
:critical => [255, 255, 255, 32, true, false, Font.default_name],
:missed => [255, 255, 255, 32, true, false, Font.default_name],
:evaded => [255, 255, 255, 32, true, false, Font.default_name],
:nulled => [255, 255, 255, 32, true, false, Font.default_name],
:failed => [255, 255, 255, 32, true, false, Font.default_name],
:add_state => [255, 255, 255, 32, true, false, Font.default_name],
:rem_state => [255, 255, 255, 32, true, false, Font.default_name],
:dur_state => [255, 255, 255, 32, true, false, Font.default_name],
:weakpoint => [255, 255, 255, 32, true, false, Font.default_name],
:resistant => [255, 255, 255, 32, true, false, Font.default_name],
:immune => [255, 255, 255, 32, true, false, Font.default_name],
:absorbed => [255, 255, 255, 32, true, false, Font.default_name],
:add_buff => [255, 255, 255, 32, true, false, Font.default_name],
:add_debuff => [255, 255, 255, 32, true, false, Font.default_name],
:lvup => [255, 255, 255, 20, false, false, Font.default_name],
},
# Configuration for popup effect.
:effect_setting => {
# Type => [Effect sequence],
:default => [:up, :wait],
:pys_dmg => [:jump_1, :jump_2, :wait],
:mag_dmg => [:jump_1, :jump_2, :wait],
:hp_heal => [:jump_1, :jump_2, :wait],
:mp_dmg => [:jump_1, :jump_2, :wait],
:mp_heal => [:jump_1, :jump_2, :wait],
:tp_dmg => [:jump_1, :jump_2, :wait],
:tp_heal => [:jump_1, :jump_2, :wait],
:drained => [:affect, :up , :wait],
:critical => [:affect, :up , :wait],
:missed => [:up , :wait],
:evaded => [:up , :wait],
:nulled => [:up , :wait],
:failed => [:up , :wait],
:add_state => [:affect, :up , :wait],
:rem_state => [:affect, :up , :wait],
:dur_state => [:affect, :up , :wait],
:weakpoint => [:affect, :up , :wait],
:resistant => [:affect, :up , :wait],
:immune => [:up , :wait],
:absorbed => [:affect, :up , :wait],
:add_buff => [:affect, :up , :wait],
:add_debuff => [:affect, :up , :wait],
:lvup => [:up, :wait],
},
:effect_setup => {
#:type => [ZoomX, ZoomY, StartX, StartY, MoveX, MoveY, Gravt, Opacity, Dur, Random],
:up => [1.0 , 1.0 , 0.0 , 0.0 , 0.0 , -1.0 , 0.0 , 255 , 32 , false ],
:jump_1 => [1.0 , 1.0 , 0.0 , 0.0 , 0.0 , -6.4 , 0.4 , 255 , 33 , false ],
:jump_2 => [1.0 , 1.0 , 0.0 , 0.0 , 0.0 , -3.2 , 0.2 , 255 , 33 , false ],
:wait => [1.0 , 1.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0 , 20 , false ],
:affect => [1.0 , 1.0 , 0.0 , -32.0 , 0.0 , 0.0 , 0.0 , 255 , 1 , false ],
},
} # End BATTLE_POPUP.
end # Addon
end # BattleLuna
#==============================================================================
# ■ Game_BattlerBase
#==============================================================================
class Game_BattlerBase
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_accessor :popups
#--------------------------------------------------------------------------
# new method: create_popup
#--------------------------------------------------------------------------
def create_popup(data, rule = :default)
return unless SceneManager.scene_is?(Scene_Battle)
return unless BattleLuna::Addon::BATTLE_POPUP[:basic_setting][:enable]
@popups ||= []
@popups.push([data, rule])
end
#--------------------------------------------------------------------------
# new method: make_damage_popups
#--------------------------------------------------------------------------
def make_damage_popups(user)
if @result.hp_drain != 0
rule = :drained
user.create_popup(["", nil], rule)
rule = :pys_dmg if @result.hp_drain < 0 && item.physical?
rule = :mag_dmg if @result.hp_drain < 0 && item.magical?
rule = :hp_heal if @result.hp_drain > 0
value = @result.hp_drain.abs
user.create_popup(["#{value}", nil], rule)
end
if @result.mp_drain != 0
rule = :drained
user.create_popup(["", nil], rule)
rule = :mp_dmg if @result.mp_drain < 0
rule = :mp_heal if @result.mp_drain > 0
value = @result.mp_drain.abs
user.create_popup(["#{value}", nil], rule)
end
#---
rule = :critical
check_dmg_type(item)
create_popup(["", nil], rule) if @result.critical
if @result.hp_damage != 0
rule = :pys_dmg if item.physical? && @result.hp_damage > 0
rule = :mag_dmg if item.magical? && @result.hp_damage > 0
rule = :hp_heal if @result.hp_damage < 0
value = @result.hp_damage.abs
create_popup(["#{value}", nil], rule)
end
if @result.mp_damage != 0
rule = :mp_dmg if @result.mp_damage > 0
rule = :mp_heal if @result.mp_damage < 0
value = @result.mp_damage.abs
create_popup(["#{value}", nil], rule)
end
if @result.tp_damage != 0
rule = :tp_dmg if @result.tp_damage > 0
rule = :tp_heal if @result.tp_damage < 0
value = @result.tp_damage.abs
create_popup(["#{value}", nil], rule)
end
end
#--------------------------------------------------------------------------
# alias method: erase_state
#--------------------------------------------------------------------------
alias battle_luna_dp_erase_state erase_state unless $imported["YEA-BattleEngine"]
def erase_state(state_id)
make_state_popup(state_id, :rem_state) if @states.include?(state_id)
if $imported["YEA-BattleEngine"]
game_battlerbase_erase_state_abe(state_id)
else
battle_luna_dp_erase_state(state_id)
end
end
#--------------------------------------------------------------------------
# new method: make_during_state_popup
#--------------------------------------------------------------------------
def make_during_state_popup
state_id = most_important_state_id
return if state_id == 0
make_state_popup(state_id, :dur_state)
end
#--------------------------------------------------------------------------
# new method: most_important_state_id
#--------------------------------------------------------------------------
def most_important_state_id
states.each {|state| return state.id unless state.message3.empty? }
return 0
end
#--------------------------------------------------------------------------
# new method: make_state_popup
#--------------------------------------------------------------------------
def make_state_popup(state_id, type)
return unless BattleLuna::Addon::BATTLE_POPUP[:basic_setting][:state_popup]
state = $data_states[state_id]
return if state.icon_index == 0
create_popup(["#{state.name}", state.icon_index], type)
end
#--------------------------------------------------------------------------
# new method: make_miss_popups
#--------------------------------------------------------------------------
def make_miss_popups(user, item)
return if dead?
if @result.missed
rule = :missed
create_popup(["", nil], rule)
end
if @result.evaded
rule = :evaded
create_popup(["", nil], rule)
end
if @result.hit? && !@result.success
rule = :failed
create_popup(["", nil], rule)
end
if @result.hit? && item.damage.to_hp?
if @result.hp_damage == 0 && @result.mp_damage == 0
rule = :nulled
create_popup(["", nil], rule)
end
end
end
#--------------------------------------------------------------------------
# new method: make_rate_popup
#--------------------------------------------------------------------------
def make_rate_popup(rate)
return if rate == 1.0
if rate > 1.0
rule = :weakpoint
elsif rate == 0.0
rule = :immune
elsif rate < 0.0
rule = :absorbed
else
rule = :resistant
end
create_popup(["", nil], rule)
end
#--------------------------------------------------------------------------
# new method: make_buff_popup
#--------------------------------------------------------------------------
def make_buff_popup(param_id, positive = true)
return unless BattleLuna::Addon::BATTLE_POPUP[:basic_setting][:buff_popup]
return unless SceneManager.scene_is?(Scene_Battle)
return unless alive?
name = Vocab::param(param_id)
if positive
rule = :add_buff
buff_level = 1
else
rule = :add_debuff
buff_level = -1
end
icon = buff_icon_index(buff_level, param_id)
create_popup(["#{name}", icon], rule)
end
end # Game_BattlerBase
#==============================================================================
# ■ Game_Battler
#==============================================================================
class Game_Battler < Game_BattlerBase
#--------------------------------------------------------------------------
# alias method: on_battle_end
#--------------------------------------------------------------------------
alias battle_luna_dp_on_battle_end on_battle_end
def on_battle_end
battle_luna_dp_on_battle_end
@popups ||= []
@popups.clear
end
#--------------------------------------------------------------------------
# alias method: item_apply
#--------------------------------------------------------------------------
alias battle_luna_dp_item_apply item_apply unless $imported["YEA-BattleEngine"]
def item_apply(user, item)
if $imported["YEA-BattleEngine"]
game_battler_item_apply_abe(user, item)
else
battle_luna_dp_item_apply(user, item)
end
@result.restore_damage
make_miss_popups(user, item)
make_damage_popups(user)
end
#--------------------------------------------------------------------------
# alias method: make_damage_value
#--------------------------------------------------------------------------
alias battle_luna_dp_make_damage_value make_damage_value unless $imported["YEA-BattleEngine"]
def make_damage_value(user, item)
if $imported["YEA-BattleEngine"]
game_battler_make_damage_value_abe(user, item)
else
battle_luna_dp_make_damage_value(user, item)
end
rate = item_element_rate(user, item)
make_rate_popup(rate)
end
#--------------------------------------------------------------------------
# alias method: execute_damage
#--------------------------------------------------------------------------
alias battle_luna_dp_execute_damage execute_damage unless $imported["YEA-BattleEngine"]
def execute_damage(user)
if $imported["YEA-BattleEngine"]
game_battler_execute_damage_abe(user)
else
battle_luna_dp_execute_damage(user)
end
#make_damage_popups(user)
end
#--------------------------------------------------------------------------
# alias method: item_effect_recover_hp
#--------------------------------------------------------------------------
alias battle_luna_dp_item_effect_recover_hp item_effect_recover_hp unless $imported["YEA-BattleEngine"]
def item_effect_recover_hp(user, item, effect)
if $imported["YEA-BattleEngine"]
game_battler_item_effect_recover_hp_abe(user, item, effect)
else
battle_luna_dp_item_effect_recover_hp(user, item, effect)
end
#make_damage_popups(user)
end
#--------------------------------------------------------------------------
# alias method: item_effect_recover_mp
#--------------------------------------------------------------------------
alias battle_luna_item_effect_recover_mp item_effect_recover_mp unless $imported["YEA-BattleEngine"]
def item_effect_recover_mp(user, item, effect)
if $imported["YEA-BattleEngine"]
game_battler_item_effect_recover_mp_abe(user, item, effect)
else
battle_luna_item_effect_recover_mp(user, item, effect)
end
#make_damage_popups(user)
end
#--------------------------------------------------------------------------
# alias method: item_effect_gain_tp
#--------------------------------------------------------------------------
alias battle_luna_item_effect_gain_tp item_effect_gain_tp unless $imported["YEA-BattleEngine"]
def item_effect_gain_tp(user, item, effect)
if $imported["YEA-BattleEngine"]
game_battler_item_effect_gain_tp_abe(user, item, effect)
else
battle_luna_item_effect_gain_tp(user, item, effect)
end
#make_damage_popups(user)
end
#--------------------------------------------------------------------------
# alias method: add_new_state
#--------------------------------------------------------------------------
alias battle_luna_dp_add_new_state add_new_state unless $imported["YEA-BattleEngine"]
def add_new_state(state_id)
if $imported["YEA-BattleEngine"]
game_battler_add_new_state_abe(state_id)
else
battle_luna_dp_add_new_state(state_id)
end
make_state_popup(state_id, :add_state) if @states.include?(state_id)
end
#--------------------------------------------------------------------------
# alias method: add_buff
#--------------------------------------------------------------------------
alias battle_luna_dp_add_buff add_buff unless $imported["YEA-BattleEngine"]
def add_buff(param_id, turns)
make_buff_popup(param_id, true)
if $imported["YEA-BattleEngine"]
game_battler_add_buff_abe(param_id, turns)
else
battle_luna_dp_add_buff(param_id, turns)
end
end
#--------------------------------------------------------------------------
# alias method: add_debuff
#--------------------------------------------------------------------------
alias battle_luna_dp_add_debuff add_debuff unless $imported["YEA-BattleEngine"]
def add_debuff(param_id, turns)
make_buff_popup(param_id, false)
if $imported["YEA-BattleEngine"]
game_battler_add_debuff_abe(param_id, turns)
else
battle_luna_dp_add_debuff(param_id, turns)
end
end
#--------------------------------------------------------------------------
# alias method: regenerate_all
#--------------------------------------------------------------------------
alias battle_luna_dp_regenerate_all regenerate_all unless $imported["YEA-BattleEngine"]
def regenerate_all
if $imported["YEA-BattleEngine"]
game_battler_regenerate_all_abe
else
battle_luna_dp_regenerate_all
end
return unless alive?
make_damage_popups(self)
end
end # Game_Battler
#==============================================================================
# ■ Sprite_Battler
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# new method: screen_x
#--------------------------------------------------------------------------
unless Game_Actor.instance_methods.include?(:screen_x)
def screen_x
0
end
end
#--------------------------------------------------------------------------
# new method: screen_y
#--------------------------------------------------------------------------
unless Game_Actor.instance_methods.include?(:screen_y)
def screen_y
0
end
end
#--------------------------------------------------------------------------
# new method: screen_z
#--------------------------------------------------------------------------
unless Game_Actor.instance_methods.include?(:screen_z)
def screen_y
0
end
end
end # Game_Actor
#==============================================================================
# ■ Sprite_Battler
#==============================================================================
class Sprite_Battler < Sprite_Base
#--------------------------------------------------------------------------
# alias method: initialize
#--------------------------------------------------------------------------
alias battle_luna_dp_initialize initialize
def initialize(viewport, battler = nil)
battle_luna_dp_initialize(viewport, battler)
@popups = []
@popup_delay = 0
end
#--------------------------------------------------------------------------
# alias method: setup_new_effect
#--------------------------------------------------------------------------
alias battle_luna_dp_setup_new_effect setup_new_effect
def setup_new_effect
battle_luna_dp_setup_new_effect
setup_popups
end
#--------------------------------------------------------------------------
# new method: setup_popups
#--------------------------------------------------------------------------
def setup_popups
setting = BattleLuna::Addon::BATTLE_POPUP
return unless @battler.use_sprite?
@battler.popups ||= []
@popup_delay -= 1
return if @popup_delay > 0
array = @battler.popups.shift
return if array.nil?
create_new_popup(array[0], array[1])
return if @battler.popups.size == 0
return if setting[:basic_setting][:no_delay].include?(array[1])
@popup_delay = setting[:basic_setting][:delay]
end
#--------------------------------------------------------------------------
# new method: create_new_popup
#--------------------------------------------------------------------------
def create_new_popup(data, rule)
return unless @battler
return unless SceneManager.scene.is_a?(Scene_Battle)
viewport = self.viewport
popup = Sprite_PopupLuna.new(viewport, @battler, data, rule)
@popups.push(popup)
end
#--------------------------------------------------------------------------
# alias method: update
#--------------------------------------------------------------------------
alias battle_luna_dp_update update
def update
battle_luna_dp_update
update_popups
end
#--------------------------------------------------------------------------
# new method: update_popups
#--------------------------------------------------------------------------
def update_popups
@popups.each { |popup| popup.update }
@popups.each_with_index { |sprite, index|
next unless sprite.disposed?
@popups[index] = nil
}
@popups.compact!
end
#--------------------------------------------------------------------------
# alias method: dispose
#--------------------------------------------------------------------------
alias battle_luna_dp_dispose dispose
def dispose
@popups.each { |popup| popup.dispose }
@popups.clear
battle_luna_dp_dispose
end
end # Sprite_Battler
#==============================================================================
# ■ Sprite_PopupLuna
#==============================================================================
class Sprite_PopupLuna < Sprite
#--------------------------------------------------------------------------
# initialize
#--------------------------------------------------------------------------
def initialize(viewport, battler, data, rule)
super(viewport)
@data = data
@rule = rule
#---
@style = rule
@style = :default unless setting[:style_setting].has_key?(@style)
@style = setting[:style_setting][@style]
#---
@effects = rule
@effects = :default unless setting[:effect_setting].has_key?(@effects)
@effects = setting[:effect_setting][@effects].dup
#---
@current_effect = nil
@duration = 0
@battler = battler
#---
start_popup
start_effect
update
end
#--------------------------------------------------------------------------
# setting
#--------------------------------------------------------------------------
def setting
BattleLuna::Addon::BATTLE_POPUP
end
#--------------------------------------------------------------------------
# start_popup
#--------------------------------------------------------------------------
def start_popup
self.bitmap = create_bitmap
self.x = @battler.screen_x
self.y = @battler.screen_y
self.ox = self.bitmap.width / 2
self.oy = self.bitmap.height
self.z = @battler.screen_z + 350
end
#--------------------------------------------------------------------------
# create_bitmap
#--------------------------------------------------------------------------
def create_bitmap
bw = Graphics.width
bw = bw + 48 if @data[1]
bh = @style[3] * 2
bitmap = Bitmap.new(bw, bh)
#---
bitmap.font.color.set(@style[0], @style[1], @style[2])
bitmap.font.size = @style[3]
bitmap.font.bold = @style[4]
bitmap.font.italic = @style[5]
bitmap.font.name = @style[6]
#---
dx = @data[1] ? 24 : 0; dy = 0
text = setting[:word_setting][@rule]
text = setting[:word_setting][:default] unless text
text = sprintf(text, @data[0])
bitmap.draw_text(dx, dy, bw - dx, bh, text, 1)
#---
text_width = bitmap.text_size(text).width
if @data[1]
icon_bitmap = Cache.system("Iconset")
icon_index = @data[1].to_i
rect = Rect.new(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24)
bitmap.blt((bw-text_width)/2-32, (bh - 24)/2, icon_bitmap, rect)
end
bitmap
end
#--------------------------------------------------------------------------
# start_effect
#--------------------------------------------------------------------------
def start_effect
@current_effect = @effects.shift
return dispose if @current_effect.nil?
effect = setting[:effect_setup][@current_effect]
@duration = effect[8]
#---
@zoom_x_rate = (effect[0] - self.zoom_x) / @duration
@zoom_y_rate = (effect[1] - self.zoom_y) / @duration
#---
@move_x = effect[4]
@move_y = effect[5]
if effect[9]
@move_x = @move_x * rand(0)
@move_x = rand(10) % 2 == 0 ? -@move_x : @move_x
end
#---
@gravity = effect[6]
#---
@opacity_rate = (effect[7] - self.opacity) / @duration.to_f
#---
self.x += effect[2]
self.y += effect[3]
end
#--------------------------------------------------------------------------
# update
#--------------------------------------------------------------------------
def update
super
update_zoom
update_move
update_opacity
update_effect
end
#--------------------------------------------------------------------------
# update_effect
#--------------------------------------------------------------------------
def update_effect
@duration -= 1
return if @duration > 0
start_effect
end
#--------------------------------------------------------------------------
# update_zoom
#--------------------------------------------------------------------------
def update_zoom
self.zoom_x += @zoom_x_rate
self.zoom_y += @zoom_y_rate
end
#--------------------------------------------------------------------------
# update_move
#--------------------------------------------------------------------------
def update_move
self.x += @move_x
self.y += @move_y
@move_y += @gravity
end
#--------------------------------------------------------------------------
# update_opacity
#--------------------------------------------------------------------------
def update_opacity
self.opacity += @opacity_rate
end
#--------------------------------------------------------------------------
# dispose
#--------------------------------------------------------------------------
def dispose
self.bitmap.dispose if self.bitmap
super
end
end # Sprite_PopupLuna
#==============================================================================
# ■ Window_BattleHelp
#==============================================================================
if $imported["YEA-BattleEngine"]
class Window_BattleHelp < Window_Help
#--------------------------------------------------------------------------
# alias method: update
#--------------------------------------------------------------------------
alias battle_luna_yea_be_update update
def update
battle_luna_yea_be_update
return unless $imported["YEA-BattleEngine"]
return unless @actor_window && @enemy_window
if !self.visible and @text != ""
@text = ""
return refresh
end
update_battler_name
end
end # Window_BattleHelp
end
#==============================================================================
# ■ Sprite_Battler
#==============================================================================
class Sprite_Battler < Sprite_Base
#--------------------------------------------------------------------------
# alias method: create_new_popup
# Compatible with YEA - Battle Engine.
#--------------------------------------------------------------------------
if $imported["YEA-BattleEngine"] && !$imported["YES-BattlePopup"]
alias battle_luna_yea_create_new_popup create_new_popup
def create_new_popup(value, rules, flags)
battle_luna_yea_create_new_popup(value, rules, flags)
@popups.each { |popup|
popup.viewport = nil
popup.z = @battler.screen_z + 1000
}
end
end
end # Sprite_Battler
#==============================================================================
# ■ Game_ActionResult
#==============================================================================
class Game_ActionResult
#--------------------------------------------------------------------------
# alias method: clear_stored_damage
#--------------------------------------------------------------------------
alias battle_luna_yea_clear_stored_damage clear_stored_damage if $imported["YEA-BattleEngine"]
def clear_stored_damage
battle_luna_yea_clear_stored_damage unless $imported["YES-BattlePopup"]
end
#--------------------------------------------------------------------------
# alias method: store_damage
#--------------------------------------------------------------------------
alias battle_luna_yea_store_damage store_damage if $imported["YEA-BattleEngine"]
def store_damage
battle_luna_yea_store_damage unless $imported["YES-BattlePopup"]
end
#--------------------------------------------------------------------------
# alias method: restore_damage
#--------------------------------------------------------------------------
alias battle_luna_yea_restore_damage restore_damage if $imported["YEA-BattleEngine"]
def restore_damage
battle_luna_yea_restore_damage unless $imported["YES-BattlePopup"]
end
end # Game_ActionResult
I'm a dumb dumb at ruby coding, but I thought this would be relatively easy. I changed the "make_damage_popups" method, by dumping the :hp_dmg rule and adding ys_dmg and :mag_dmg rules instead. The only thing I did was adding the conditions "item.physical?" and "item.magical?" to discriminate the damage type accordingly and updating the list of rules at the first section of the script. But it did not work, because I'm too stupid.
When an ally or enemy performs a damage move on battle, it returns an error:
"Script 'Battle Luna' line 178: NameError occurred. Undefined local variable of method `item´ for #<Game_Actor:0xac1910c>".
So, the script does not understand what in the world is "item.physical?" and "item.magical?" and I don't know why.
I've even tried to create a method for checking the type of damage and referring it to the class GameBattler. But it was useless and I got nuts.
Downloads / Referenced Files
Log in, then follow the RPG Maker Developers Group to see these download links.
Log in to downloadCreator Claims / Removal
If you are the original creator and want this listing reassigned, edited, or removed, join BMMPlay and contact the moderators with proof that matches the original RPG Maker Web profile, linked GitHub, itch.io page, or another public creator identity.
Replies (0)
No replies yet.
Topic Summary
Loading summary...