Jump to content
TearofElandil

[Solved] Script Change Request - Change picture for MogHunter's Actor CM

Recommended Posts

Hello there, sorry to be asking this, but I was stuck on this issue for awhile...
 
I'm using Moghunter's Actor Picture CM script, and it creates an actor image in the format of (Actor+Battler.id.png) in battles. I was wondering if there's someone kind enough to help me out by adding a function which can CHANGE the actor image mid-battle by, for example, flipping a switch. So for example normally I'd use Actor1.png for Actor1 which is Eric, but Eric casts a spell called "Transform" which will change his actor image to Actor2.png instead.
 
(I initially wanted to add a swapping actor functionality to achieve this effect, but this seems incompatible with Moghunter scripts overall).
 
Thank you for reading! Here's the code and the demo.
 
#==============================================================================
# +++ MOG - ACTOR PICTURE CM  (v2.1) +++
#==============================================================================
# By Moghunter
# https://atelierrgss.wordpress.com/
#==============================================================================
# Apresenta a imagem do personagem durante a seleção de comandos, com efeitos
# animados.
#==============================================================================
# ● Definindo o nome das imagens dos battlers.
#==============================================================================
# 1 - As imagens devem ser gravadas na pasta
#
# GRAPHICS/PICTURES
#
# 2 - Nomeie os  arquivos de imagens da seguinte forma.
#
#
# ACTOR + ID
#
# EG
#
# ACTOR1.png
#
#==============================================================================
# ● Histórico (Version History)
#==============================================================================
# v2.1 - Melhoria na codificação.
# v2.0 - Correção de não atualizar as imagens dos battlers quando se
#        adiciona ou remove um battler no meio da batalha.
#==============================================================================
module MOG_ACTOR_PICTURE_CM
  #Posição da imagem do battler. (Para fazer ajustes)
  PICTURE_POSITION = [0, 0]

  #Definição da opacidade da imagem.
  PICTURE_OPACITY = 255

  #Velocidade de deslize
  SLIDE_SPEED = 40

  #Ativar o efeito da imagem respirando.
  BREATH_EFFECT = true

  #Definição da prioridade  da imagem na tela.
  PICTURE_PRIORITY_Z = 101
end

$imported = {} if $imported.nil?
$imported[:actor_picture_cm] = true

#===============================================================================
# ■ Game Temp
#===============================================================================
class Game_Temp

  attr_accessor :bpicture_cm_need_refresh

  #--------------------------------------------------------------------------
  # ● Initialize
  #--------------------------------------------------------------------------
  alias mog_battler_cm_initialize initialize
  def initialize
      @bpicture_cm_need_refresh = false
      mog_battler_cm_initialize
  end

end

#===============================================================================
# ■ Sprite_Battler_CM
#===============================================================================
class Sprite_Battler_CM < Sprite
  include MOG_ACTOR_PICTURE_CM

  #--------------------------------------------------------------------------
  # ● Initialize
  #--------------------------------------------------------------------------
  def initialize(viewport = nil,battler_id = -1)
      super(viewport)
      filename = "Actor" + battler_id.to_s
      self.bitmap = Cache.picture(filename) rescue nil
      self.bitmap = Cache.picture("") if self.bitmap == nil
      sc = (Graphics.width / 2)  - (self.bitmap.width / 2) + PICTURE_POSITION[0]
      @size = [self.bitmap.width + PICTURE_POSITION[0] ,sc]    
      self.visible = false ;  self.opacity = 0 ; self.z = PICTURE_PRIORITY_Z
      self.ox = 0 ; self.oy = self.bitmap.height ; self.x = -@size[0]
      self.y = (Graphics.height + 10) + PICTURE_POSITION[1] ; @cm_visible = false  
      @breach_effect = [1.0,0] ; @battler_id = battler_id  ; @active =  false
  end

  #--------------------------------------------------------------------------
  # ● Dispose
  #--------------------------------------------------------------------------
  def dispose
      super
      self.bitmap.dispose
  end

  #--------------------------------------------------------------------------
  # ● Update
  #--------------------------------------------------------------------------
  def update
      super
      update_slide
  end

  #--------------------------------------------------------------------------
  # ● Active Battler
  #--------------------------------------------------------------------------    
  def active_battler(battler_id)
      @active = @battler_id == battler_id ? true : false
      self.visible = true if @active ; @cm_visible = false if !@active
  end

  #--------------------------------------------------------------------------
  # ● Refresh Battler CM
  #--------------------------------------------------------------------------      
  def refresh_battler(cm_visible, battler_index)
      @cm_visible = cm_visible
      active_battler(battler_index)
  end

  #--------------------------------------------------------------------------
  # ● Update Slide
  #--------------------------------------------------------------------------
  def update_slide    
      if !@cm_visible
           self.x -= SLIDE_SPEED if self.x > -@size[0]
           self.opacity -= 25
           if self.x <= -@size[0] or self.opacity == 0
              self.visible = false ; self.opacity = 0 ; self.x = -@size[0]
           end  
        else
           self.x += SLIDE_SPEED if self.x < @size[1]
           self.x = @size[1] if self.x > @size[1]
           self.opacity += 10 if self.opacity < PICTURE_OPACITY
           self.opacity = PICTURE_OPACITY if self.opacity > PICTURE_OPACITY
           update_breath_effect
      end        
      self.visible = false if can_force_hide?
  end

  #--------------------------------------------------------------------------
  # ● Can Force Hide
  #--------------------------------------------------------------------------
  def can_force_hide?
      return true if $game_temp.blitz_commands_phase if $imported[:mog_blitz_commands]
      return true if $game_temp.chain_action_phase if $imported[:mog_active_chain]
      return false
  end
     
  #--------------------------------------------------------------------------
  # ● Update Breath Effect
  #--------------------------------------------------------------------------  
  def update_breath_effect
      return if !BREATH_EFFECT
      @breach_effect[1] += 1
      case @breach_effect[1]
         when 0..30 ; @breach_effect[0] += 0.0004
         when 31..50 ; @breach_effect[0] -= 0.0004
         else ; @breach_effect[1] = 0 ; @breach_effect[0] = 1.truncate
      end
      self.zoom_y = @breach_effect[0]
  end

  #--------------------------------------------------------------------------
  # ● Force Hide
  #--------------------------------------------------------------------------  
  def force_hide
      @cm_visible = false ; self.visible = false ; self.x = -@size[0]
      self.opacity = 0
  end

end

#===============================================================================
# ■ Spriteset_Battle
#===============================================================================
class Spriteset_Battle

  #--------------------------------------------------------------------------
  # ● Create Actors
  #--------------------------------------------------------------------------  
  alias mog_battler_cm_create_actors create_actors
  def create_actors
      mog_battler_cm_create_actors
      create_battler_pictures
  end

  #--------------------------------------------------------------------------
  # ● Dispose
  #--------------------------------------------------------------------------  
  alias mog_battler_cm_dispose dispose
  def dispose
      mog_battler_cm_dispose
      dispose_battler_cm
  end

  #--------------------------------------------------------------------------
  # ● Update
  #--------------------------------------------------------------------------  
  alias mog_battler_cm_update update
  def update
      mog_battler_cm_update
      update_battler_cm
  end  

  #--------------------------------------------------------------------------
  # ● Create Battler Pictures
  #--------------------------------------------------------------------------  
  def create_battler_pictures
      @battler_pictures = []
      for i in $game_party.battle_members
          @battler_pictures.push(Sprite_Battler_CM.new(nil,i.id))
      end  
  end  

  #--------------------------------------------------------------------------
  # ● Dispose Battler CM
  #--------------------------------------------------------------------------  
  def dispose_battler_cm
      return if @battler_pictures == nil
      @battler_pictures.each {|sprite| sprite.dispose if sprite != nil }
  end

  #--------------------------------------------------------------------------
  # ● Update Battler CM
  #--------------------------------------------------------------------------  
  def update_battler_cm
      refresh_battler_cm if $game_temp.bpicture_cm_need_refresh
      return if @battler_pictures == nil
      @battler_pictures.each {|sprite| sprite.update }
  end  
   
  #--------------------------------------------------------------------------
  # ● Update CM Pictures
  #--------------------------------------------------------------------------    
  def update_cm_picture(cm_visible, battler_index)
      return if @battler_pictures == nil
      @battler_pictures.each {|sprite| sprite.refresh_battler(cm_visible, battler_index) }
  end

  #--------------------------------------------------------------------------
  # ● CM Force Hide
  #--------------------------------------------------------------------------    
  def cm_force_hide
      return if @battler_pictures == nil
      @battler_pictures.each {|sprite| sprite.force_hide }
  end
   
  #--------------------------------------------------------------------------
  # ● Refresh Battler CM
  #--------------------------------------------------------------------------    
  def refresh_battler_cm
      $game_temp.bpicture_cm_need_refresh = false
      dispose_battler_cm ; create_battler_pictures
  end

end

#===============================================================================
# ■ Scene_Battle
#===============================================================================
class Scene_Battle < Scene_Base

 if $imported["YEA-CommandEquip"]
 #--------------------------------------------------------------------------
 # * Command Equip
 #--------------------------------------------------------------------------  
  alias mog_yfcm_command_equip command_equip
  def command_equip
      @spriteset.cm_force_hide
      mog_yfcm_command_equip
  end
  end

  #--------------------------------------------------------------------------
  # ● Update
  #--------------------------------------------------------------------------      
  alias mog_cm_picture_update_basic update_basic
  def update_basic
      mog_cm_picture_update_basic
      update_picture_visible
  end

  #--------------------------------------------------------------------------
  # ● Update Battler CM Active
  #--------------------------------------------------------------------------    
  def update_picture_visible
      return if @actor_command_window.nil?
      cm_visible = can_cm_picture_visible?    
      cm_id = BattleManager.actor.id rescue -1
      @spriteset.update_cm_picture(cm_visible, cm_id)
  end

  #--------------------------------------------------------------------------
  # ● Can CM Picture Visible
  #--------------------------------------------------------------------------      
  def can_cm_picture_visible?
      if $imported[:mog_atb_system]
          return false if $game_system.atb_type != 0
          return false if $game_message.visible
          return false if $game_temp.battle_end
          return false if $game_temp.end_phase_duration[1] > 0
      end
      return false if $imported[:mog_active_chain] and $game_temp.active_chain
      return false if $imported[:mog_blitz_commands] and $game_temp.blitz_commands_phase
      return false if @party_command_window.active
      return false if BattleManager.actor.nil?
      return false if @actor_window.active
      return false if @enemy_window.active
      return true if @actor_command_window.active
      return true if @item_window.active
      return true if @skill_window.active
      return false
  end

end

#==============================================================================
# ** Game Interpreter
#==============================================================================
class Game_Interpreter

 #--------------------------------------------------------------------------
 # ● Command_129
 #--------------------------------------------------------------------------
 alias mog_bpic_cm_command_129 command_129
 def command_129
     mog_bpic_cm_command_129
     $game_temp.bpicture_cm_need_refresh = true if SceneManager.scene_is?(Scene_Battle)
 end

 #--------------------------------------------------------------------------
 # ● Command 335
 #--------------------------------------------------------------------------
 alias mog_bpic_cm_command_335 command_335
 def command_335
     mog_bpic_cm_command_335
     $game_temp.bpicture_cm_need_refresh = true if SceneManager.scene_is?(Scene_Battle)
 end

end

#==============================================================================
# ** Game Party
#==============================================================================
class Game_Party < Game_Unit
   
 #--------------------------------------------------------------------------
 # ● Swap Order
 #--------------------------------------------------------------------------
 alias mog_bpic_cm_swap_order swap_order
 def swap_order(index1, index2)
      mog_bpic_cm_swap_order(index1, index2)
      $game_temp.bpicture_cm_need_refresh = true if SceneManager.scene_is?(Scene_Battle)
 end

end

 

 
It can be found in the demo here:
 
Edited by TearofElandil

Share this post


Link to post
Share on other sites
Hi,
 
Sorry for posting again so quickly, but this is a post for the solution, so don't want anyone to miss this...
 
After a few more intense Google searches, changing the battler images are in the BATTLE_HUD script, NOT the Actor Picture. What you'll need to do is call this script in the battle field:
 
battler_face_name(1,"Face_2")[/CODE]


 
See Glasses' post in this link for further details:
 
 
Thanks a lot :):)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×