赞 | 6 |
VIP | 0 |
好人卡 | 0 |
积分 | 62 |
经验 | 5874 |
最后登录 | 2024-9-19 |
在线时间 | 1007 小时 |
Lv4.逐梦者
- 梦石
- 1
- 星屑
- 5174
- 在线时间
- 1007 小时
- 注册时间
- 2012-5-14
- 帖子
- 69
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
求到了一个VA的伤害显示脚本,但是伤害显示的字体和我系统字体不一样,感觉这个伤害显示的字体不是很好看,想改成系统用的字体,请问怎么修改法?
$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 => 4, # Delay between each popup. :no_delay => [:critical, :drained, :weakpoint, :resistant, :absorbed], }, # Configuration for words. :word_setting => { :default => "%s", # SprintF for Default. :hp_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 CP", # SprintF for MP damage. :tp_heal => "+%s CP", # SprintF for MP healing. :drained => "吸收", # Text display for draining HP/MP. :critical => "要害!", # Text display for critical hit. :missed => "未命中", # Text display for missed attack. :evaded => "避开!", # Text display for evaded attack. :nulled => "格挡", # Text display for nulled attack. :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 => "弱点", # Appears if foe is weak to element. :resistant => "抵抗", # Appears if foe is resistant to element. :immune => "免疫", # Appears if foe is immune to element. :absorbed => "吸收", # 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, 20, true, false, Font.default_name], :hp_dmg => [246, 255, 0, 30, true, false, Font.default_name], :hp_heal => [93, 255, 108, 20, true, false, Font.default_name], :mp_dmg => [213, 46, 255, 20, true, false, Font.default_name], :mp_heal => [0, 150, 255, 20, true, false, Font.default_name], :tp_dmg => [255, 255, 255, 20, true, false, Font.default_name], :tp_heal => [255, 255, 255, 20, true, false, Font.default_name], :drained => [255, 255, 255, 20, true, false, Font.default_name], :critical => [255, 174, 0, 40, true, false, Font.default_name], :missed => [255, 255, 255, 20, true, false, Font.default_name], :evaded => [255, 255, 255, 20, true, false, Font.default_name], :nulled => [255, 255, 255, 20, true, false, Font.default_name], :failed => [255, 255, 255, 20, true, false, Font.default_name], :add_state => [255, 120, 0, 20, true, false, Font.default_name], :rem_state => [255, 120, 0, 20, true, false, Font.default_name], :dur_state => [255, 120, 0, 20, true, false, Font.default_name], :weakpoint => [255, 0, 0, 20, true, false, Font.default_name], :resistant => [255, 212, 238, 20, true, false, Font.default_name], :immune => [207, 207, 207, 30, true, false, Font.default_name], :absorbed => [255, 255, 255, 20, true, false, Font.default_name], :add_buff => [216, 129, 166, 20, true, false, Font.default_name], :add_debuff => [216, 129, 166, 20, true, false, Font.default_name], :lvup => [186, 255, 0, 20, false, false, Font.default_name], }, # Configuration for popup effect. :effect_setting => { # Type => [Effect sequence], :default => [:up, :wait], :hp_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 = :hp_dmg if @result.hp_drain < 0 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 create_popup(["", nil], rule) if @result.critical if @result.hp_damage != 0 rule = :hp_dmg if @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
$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 => 4, # Delay between each popup.
:no_delay => [:critical, :drained, :weakpoint, :resistant, :absorbed],
},
# Configuration for words.
:word_setting => {
:default => "%s", # SprintF for Default.
:hp_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 CP", # SprintF for MP damage.
:tp_heal => "+%s CP", # SprintF for MP healing.
:drained => "吸收", # Text display for draining HP/MP.
:critical => "要害!", # Text display for critical hit.
:missed => "未命中", # Text display for missed attack.
:evaded => "避开!", # Text display for evaded attack.
:nulled => "格挡", # Text display for nulled attack.
: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 => "弱点", # Appears if foe is weak to element.
:resistant => "抵抗", # Appears if foe is resistant to element.
:immune => "免疫", # Appears if foe is immune to element.
:absorbed => "吸收", # 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, 20, true, false, Font.default_name],
:hp_dmg => [246, 255, 0, 30, true, false, Font.default_name],
:hp_heal => [93, 255, 108, 20, true, false, Font.default_name],
:mp_dmg => [213, 46, 255, 20, true, false, Font.default_name],
:mp_heal => [0, 150, 255, 20, true, false, Font.default_name],
:tp_dmg => [255, 255, 255, 20, true, false, Font.default_name],
:tp_heal => [255, 255, 255, 20, true, false, Font.default_name],
:drained => [255, 255, 255, 20, true, false, Font.default_name],
:critical => [255, 174, 0, 40, true, false, Font.default_name],
:missed => [255, 255, 255, 20, true, false, Font.default_name],
:evaded => [255, 255, 255, 20, true, false, Font.default_name],
:nulled => [255, 255, 255, 20, true, false, Font.default_name],
:failed => [255, 255, 255, 20, true, false, Font.default_name],
:add_state => [255, 120, 0, 20, true, false, Font.default_name],
:rem_state => [255, 120, 0, 20, true, false, Font.default_name],
:dur_state => [255, 120, 0, 20, true, false, Font.default_name],
:weakpoint => [255, 0, 0, 20, true, false, Font.default_name],
:resistant => [255, 212, 238, 20, true, false, Font.default_name],
:immune => [207, 207, 207, 30, true, false, Font.default_name],
:absorbed => [255, 255, 255, 20, true, false, Font.default_name],
:add_buff => [216, 129, 166, 20, true, false, Font.default_name],
:add_debuff => [216, 129, 166, 20, true, false, Font.default_name],
:lvup => [186, 255, 0, 20, false, false, Font.default_name],
},
# Configuration for popup effect.
:effect_setting => {
# Type => [Effect sequence],
:default => [:up, :wait],
:hp_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 = :hp_dmg if @result.hp_drain < 0
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
create_popup(["", nil], rule) if @result.critical
if @result.hp_damage != 0
rule = :hp_dmg if @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
|
|