Status
Not open for further replies.

OffeNDer

Veteran
Veteran
Joined
Jan 15, 2013
Messages
80
Reaction score
2
Primarily Uses
Hello,
 
 
i need small help to edit MOG Script Advanced Battle Hud,

first of all, i managed to change the way of finding the animated face by doing this

  def battler_sprite_setup

      @battler_face = [0,0,0]

#~       @battler_face_name = @name + "_Face"

      @battler_face_name = face_name + "-" + (face_index + 1).to_s

  end

i removed @battler_face_name = @name + "_Face"

 

and added @battler_face_name = face_name + "-" + (face_index + 1).to_s

 

so the animated face is now the same name as the Face Graphic...

 

 

but the problem is when i use event to change Actor Graphic and Actor Face

 

the animated face don't change .... they still the old one 

 

for example 

 

the first animated Face was  Actor_1-1.png  

 

and when i changed the actor graphic to actor 2 face 3 ( it will be like this Actor_2-3,png) 

 

the animated face don't change from Actor_1-1.png to Actor_2-3,png .......  it's still Actor_1-1.png animated face.....

 

 

any idea how to update the Animated face when the character Graphic change ..?

 

 

Thanks,

The Script:

 
Code:
#==============================================================================# +++ MOG - Advanced Battle Hud (v2.6) +++#==============================================================================# By Moghunter # [URL="http://www.atelier-rgss.com/#==============================================================================%23"]http://www.atelier-rgss.com/#==============================================================================#[/URL] Sistema de hud avançado de batalha.#==============================================================================# ================================================= =============================# ● History (Version History)# ================================================= =============================# V 2.6 - Improved coding# V 2.5 - Improved performance# - Bugfix.# ================================================= =============================## Battle_AT_Layout.png# Battle_AT_Meter.png## ================================================= =============================# ■ - FACE ANIMATED CHARACTER - (Optional)# ================================================= =============================# 1 - Save the images of the faces of the characters in the folder.## GRAPHICS / Battlers /## 2 - Name the image with the same character name. (EG - Hertor.png)# 3 - The width of the image must be divided by 5. (The choice of size# Face that is free from height divided by the width is equal to 5)## ================================================= =============================#==============================================================================# ■ 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)            @actor = 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      @number = $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 !@status.visible      @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(face_name + "-" + (face_index + 1).to_s  #--------------------------------------------------------------------------    def battler_sprite_setup      @battler_face = [0,0,0]#~       @battler_face_name = @name + "_Face"      @battler_face_name = face_name + "-" + (face_index + 1).to_s  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 !@subject.is_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 
 

Shaz

Global Moderators
Global Mod
Joined
Mar 2, 2012
Messages
42,504
Reaction score
14,835
First Language
English
Primarily Uses
RMMV
That is because the face is determined when the battler is set up.

Add this:

Code:
class Game_Actor < Game Battler  #--------------------------------------------------------------------------  # * Change Graphics  #--------------------------------------------------------------------------  alias mog_battle_hud_set_graphic set_graphic  def set_graphic(character_name, character_index, face_name, face_index)    mog_battle_hud_set_graphic(character_name, character_index, face_name, face_index)    battler_sprite_setup  endend
 

OffeNDer

Veteran
Veteran
Joined
Jan 15, 2013
Messages
80
Reaction score
2
Primarily Uses
Thanks, it's working!

now i don't need to make clone character to change the animated face 
 

Shaz

Global Moderators
Global Mod
Joined
Mar 2, 2012
Messages
42,504
Reaction score
14,835
First Language
English
Primarily Uses
RMMV
This thread is being closed, due to being solved. If for some reason you would like this thread re-opened, please report this post and leave a message why. Thank you.
 
Status
Not open for further replies.

Latest Threads

Latest Profile Posts

DarkAdria wrote on  Masked 's profile.
Hello, sorry to bother you. I have tried to send you a private message, but it indicates that due to the privacy settings it is not possible.
Some time ago, I finished my project and made a port for Android. Because the original idea was to play the game with a keyboard on PC, playing it with a mouse caused some bugs. (max 420 characters)...
Another day, Another migraine, I found out that the game is broken about the .... Stuff.... Im not best at coding and, I got this billion error, so no choice, I think the error is from Yanfly's SkillMastery...... Fixing it...
Today I got my first shot of the COVID vaccine (Sputnik V). I was very worried. I didn't feel the prick at all. I do not observe any side effects yet.
I should stop staring at the screen too long. neck hurt

Forum statistics

Threads
112,383
Messages
1,067,950
Members
146,035
Latest member
dragonspeedx
Top