Galv’s Army Manager V.1.1

Demo – Version 1.0 > (Demo uses old version)

#------------------------------------------------------------------------------#
#  Galv's Army Manager
#------------------------------------------------------------------------------#
#  For: RPGMAKER VX ACE
#  Version 1.1
#  Requested by Rue
#-------------------------------------------------------------------------------
#  2014-02-08 - Version 1.1 - Fixed a bug with a_icon script call
#-------------------------------------------------------------------------------
#  This script was designed for tactical battle system games to manager party
#  members (your army). You can arrange, dismiss, equip, etc. your units from
#  this scene as well as display some army and game related information.
#-------------------------------------------------------------------------------
 
#-------------------------------------------------------------------------------
#  NOTE TAG - ACTORS OR CLASSES
#-------------------------------------------------------------------------------
#  <a_icon: x>    # icon displayed left of actor in the army manager. This icon
#                 # will only appear if you set the ICONTYPES accordingly
#-------------------------------------------------------------------------------
 
#-------------------------------------------------------------------------------
#  SCRIPT CALLS
#-------------------------------------------------------------------------------
#  manage_army         # Calls the army manager scene
#
#  a_icon(id,icon_id)  # Change an actor's icon during game.
#  a_access(id,x)      # if x is false cannot access actor at all. Default true
#  a_cmd(id,:cmd,x)    # used to enable/disable commands for certain actors
#                      # :cmd is the CMD ID of the command (further down)
#                      # x can be true or false to disable/enable commands
#
#  armyname("Name")    # Changes the name of your army
#-------------------------------------------------------------------------------
#  EXAMPLES
#  a_cmd(1,:dismiss,false) # Disable the "DISMISS" command for actor 1
#  a_cmd(4,:order,true)    # Enable the "ORDER" command for actor 4.
#                          # All commands are true (enabled) by default
#-------------------------------------------------------------------------------
 
($imported ||= {})["Galv_ArmyManager"] = true
module GARMY
 
#-------------------------------------------------------------------------------
#
#  * SETTINGS
#
#-------------------------------------------------------------------------------
 
  # Some Default Settings
 
  NO_ACTOR_ICON = 186   # Icon ID used if you don't tag actor with <a_icon: x>
  NO_CLASS_ICON = 162   # Icon ID used if you don't tag class with <a_icon: x>
  NO_WEAPON_ICON = 186  # Icon ID used if nothing is equipped
 
  ICONTYPE1 = :actor    # these ICONTYPES can be :actor, :class or :weapon
  ICONTYPE2 = :weapon   # This will show either the class icon, actor icon (if
                        # ou note tagged them) or the equipped weapon icon to
                        # the left of the actor's sprite.
 
  SPRITE_X_POS = 1.6    # width of box divided by this number to position the
                        # character sprite. (2 is central). Default 1.6
 
  B_MEMBERS = false     # highlight members in party that are 'battle members'
                        # true or false
  B_MEMBER_COLOR = 16   # windowskin color for battle member highlight box that
                        # appears if B_MEMBERS = true
 
  # Army Info
 
  UNIT_COUNT = "Units: "           # Party member count text
  HIGH_LEVEL = "Highest Level: "   # Highest level text
  TIME = "Time: "                  # Time text
  FUNDS = "Funds: "                # Gold amount text
  INFOVAR1 = 1                     # Variable id used to display in info window
  INFOVAR2 = 2                     # Variable id used to display in info window
                                   # Displays the variable name beside these.
 
  # Sounds
 
  DISMISS_SE = ["Blow8",100,100]     # ["SE_Name",volume,pitch] for dimiss SE
  ORDER_SE = ["Wind7",100,100]       # ["SE_Name",volume,pitch] for order SE
 
  #  Command Setup
  #  (Command list appears when you select a unit from your army)
 
  CMDS = {
 
# CMD ID => ["NAME",    :Scene_Class, switch, icon],
  :equip   => ["EQUIP",   :Scene_Equip, 1,      161],
  :status  => ["STATUS",  :Scene_Status,0,      236],
  :order   => ["ORDER",   :order,       0,      12],  # Change only "NAME"
  :dismiss => ["DISMISS", :dismiss,     0,      187], # Change only "NAME"
 
  #:class   => ["JOB",     :Scene_Class, 0,      121],  # Example yanfly class
  #:item    => ["USE ITEM", :Scene_Item, 0,      261],
 
  } # don't touch
 
#-------------------------------------------------------------------------------
#  EXPLANATION:
#-------------------------------------------------------------------------------
#  CMD ID = unique identifier for the menu command (scripting purposes). Use
#           anything here but do not change :order or :dismiss or those options
#           will no longer function. You can, however, remove them.
#  "NAME" = Menu command text
#  :Scene_Class = The name of the scene class as a symbol
#  switch = a swith ID. Turn this switch ON to disable the menu command
#  icon = the icon ID to go with the menu command
#-------------------------------------------------------------------------------
 
#-------------------------------------------------------------------------------
#
#  * END OF SETTINGS
#
#-------------------------------------------------------------------------------
 
end # GARMY
 
    #----------------------#
#---|   Game_Interpreter   |----------------------------------------------------
    #----------------------#
 
class Game_Interpreter
  def manage_army; SceneManager.call(Scene_Army); end
  def a_access(id,status); $game_actors[id].a_accessible = status; end
  def a_cmd(id,cmd_name,status)
    $game_actors[id].a_cmds[cmd_name] = status
  end
  def a_icon(id,icon_id); $game_actors[id].a_icon = icon_id; end
  def armyname(name); $game_party.armyname = name; end
end # Game_Interpreter
 
    #----------------#
#---|   Game_Party   |----------------------------------------------------------
    #----------------#
 
class Game_Party
  attr_accessor :last_atroop
  attr_accessor :armyname
 
  alias galv_garmy_gp_initialize initialize
  def initialize
    @armyname = "Unnamed Army"
    galv_garmy_gp_initialize
  end
end # Game_Party
 
    #------------------#
#---|   SceneManager   |--------------------------------------------------------
    #------------------#
 
module SceneManager
  def self.gcall(scene_class)
    @stack.push(@scene)
    @scene = Kernel.const_get(scene_class).new
  end
end # SceneManager
 
    #----------------------#
#---|   RPG::CLASS/ACTOR   |----------------------------------------------------
    #----------------------#
 
class RPG::Class
  def a_icon
    if @a_icon.nil?
      if @note =~ /<a_icon: (.*)>/i
        @a_icon = $1.to_i
      else
        @a_icon = GARMY::NO_CLASS_ICON
      end
    end
    @a_icon
  end
end # RPG::Class
class RPG::Actor
  def a_icon
    if @a_icon.nil?
      if @note =~ /<a_icon: (.*)>/i
        @a_icon = $1.to_i
      else
        @a_icon = GARMY::NO_ACTOR_ICON
      end
    end
    @a_icon
  end
end # RPG::Class
 
    #----------------#
#---|   Game_Actor   |----------------------------------------------------------
    #----------------#
 
class Game_Actor
  attr_accessor :a_accessible
  attr_accessor :a_cmds
  attr_accessor :a_icon
 
  alias galv_garmy_ga_setup setup
  def setup(actor_id)
    @a_accessible = true
    @a_icon = $data_actors[actor_id].a_icon
    @a_cmds = {}
    GARMY::CMDS.each { |cmd| @a_cmds[cmd[0]] = true }
    galv_garmy_ga_setup(actor_id)
  end
end # Game_Actor
 
    #-----------------#
#---|   Scene_Army    |---------------------------------------------------------
    #-----------------#
 
class Scene_Army < Scene_MenuBase
  def start
    super
    create_help_window
    create_info_window
    create_troop_window
    create_command_window
    create_face_window
  end
 
#-----| CREATE STUFF |
 
  def create_help_window
    @help_window = Window_ArmyHelp.new
    @help_window.viewport = @viewport
  end
 
  def create_info_window
    @info_window = Window_ArmyInfo.new
    @info_window.viewport = @viewport
  end
 
  def create_troop_window
    wy = @help_window.height
    ww = Graphics.width
    wh = Graphics.height - @help_window.height - @info_window.height
    @troop_window = Window_Troops.new(0,wy,ww,wh)
    @troop_window.help_window = @help_window
    @troop_window.viewport = @viewport
    @troop_window.activate
    @troop_window.set_handler(:ok, method(:on_troop_ok))
    @troop_window.set_handler(:cancel, method(:return_scene))
  end
 
  def create_command_window
    wx = Graphics.width / 2
    wy = (Graphics.height - @info_window.height - @help_window.height) / 2
    @command_window = Window_ArmyCommand.new(wx,wy)
    @command_window.viewport = @viewport
    GARMY::CMDS.each { |cmd|
      handle = cmd[1][0].delete(' ').downcase.to_sym
      @command_window.set_handler(handle, method(:cmd))
    }
    @command_window.set_handler(:cancel, method(:back_to_troop))
    @command_window.y -= @command_window.height / 2 - @help_window.height
    @command_window.hide.deactivate
  end
 
  def create_face_window
    ww = @command_window.width
    wh = @command_window.height
    wx = @command_window.x
    wy = @command_window.y
    @face_window = Window_ArmyFace.new(wx,wy,ww,wh)
    @face_window.viewport = @viewport
    @face_window.hide
  end
 
#-----| HANDLERS |
 
  def cmd
    list = GARMY::CMDS.to_a
    cmd = @command_window.index
    symbol = list[cmd][1][1]
    if custom_action(symbol)
      custom_on_command_ok(symbol)
    else
      SceneManager.gcall(list[cmd][1][1])
    end
  end
 
  def custom_action(symbol)
    case symbol
    when :dismiss, :order
      return true
    else
      return false
    end
  end
 
  def custom_on_command_ok(symbol)
    case symbol
    when :dismiss
      do_dismiss
    when :order
      start_ordering
    end
  end
 
  def start_ordering
    if $game_party.last_atroop.a_cmds[:order]
      @troop_window.order_on
      @ordering = true
      @troop_window.psound = GARMY::ORDER_SE
    else
      Sound.play_buzzer
    end
    back_to_troop
  end
 
  def do_dismiss
    @troop_window.dismiss
    back_to_troop
  end
 
  def on_troop_ok
    if @ordering
      @troop_window.swap_actor
      @ordering = false
      back_to_troop
    else
      $game_party.last_atroop = actor
      $game_party.menu_actor = actor
      @command_window.refresh
      @face_window.refresh
      @command_window.show.activate
      @face_window.show.activate
    end
  end
 
  def back_to_troop
    @command_window.hide.deactivate
    @face_window.hide
    @troop_window.activate
  end
 
  def return_scene
    if @troop_window.ordering_on
      @ordering = false
      @troop_window.cancel_ordering
      @troop_window.activate
    else
      $game_party.last_atroop = nil
      SceneManager.return
    end
  end
 
#-----| OTHER STUFF |
 
  def actor; @troop_window.actor; end
 
  def terminate
    super
  end
 
  def update
    super
  end
end # Scene_Army < Scene_MenuBase
 
    #----------------------#
#---|   Window_ArmyHelp    |----------------------------------------------------
    #----------------------#
 
class Window_ArmyHelp < Window_Help
  def initialize
    super(1)
    @icons = []
  end
 
  def set_text(text)
    if text != @text
      @text = text
      refresh
    end
  end
 
  def clear
    set_text("")
    @icons = []
    @actor = nil
  end
 
  def set_item(actor)
    @actor = actor
    @icons = [get_icon(GARMY::ICONTYPE1,actor),get_icon(GARMY::ICONTYPE2,actor)]
    set_text(actor ? create_text(actor) : "")
  end
 
  def create_text(actor)
    n = actor.name
    c = actor.class.name
    l = Vocab::level_a + actor.level.to_s
    text = n + " - " + l + " " + c
    return text
  end
 
  def get_icon(icontype,actor)
    return 0 if !actor
    case icontype
    when :actor
      return actor.a_icon
    when :class
      return $data_classes[actor.class_id].a_icon
    when :weapon
      if actor.equips[0].nil?
        return GARMY::NO_WEAPON_ICON
      else
        return actor.equips[0].icon_index
      end
    else
      return 0
    end
  end
 
  def refresh
    contents.clear
    contents.font.size = 21 if Graphics.height < 480
    if !@icons.empty?
      draw_icon(@icons[0], 0, 0)
      draw_icon(@icons[1], 28, 0)
    end
    if @actor
      offset = Graphics.width >= 640 ? 0 : -100
      draw_actor_hp(@actor, 355 + offset, 0)
      draw_actor_mp(@actor, 490 + offset, 0)
      draw_text(62, 0, 280 + offset, line_height, @text)
    end
  end
end # Window_ArmyHelp < Window_Help 
 
    #--------------------#
#---|   Window_Troops    |------------------------------------------------------
    #--------------------#
 
class Window_Troops < Window_Selectable
  attr_accessor :pending_index
  attr_accessor :ordering_on
  attr_accessor :psound
 
  def initialize(x, y, width, height)
    super
    @data = []
    @last_index ||= 0
    @animtime = 0
    @walk = 0
    @pending_index = -1
    refresh
    select_last
  end
 
#------| Sizes and Stuff |
 
  def item_width
    (width - standard_padding * 2 + spacing) / col_max - spacing
  end
  def item_height; item_width; end
  def spacing; return 10; end
  def col_max; return 6; end
  def item_max; @data ? @data.size : 1; end
  def actor; @data && index >= 0 ? @data[index] : nil; end
 
  def current_item_enabled?
    enable?(@data[index])
  end
 
  def include?(actor)
    return false if actor.nil?
    return true
  end
 
  def enable?(actor)
    return false if !actor
    return false if !actor.a_accessible
    return false if @ordering_on && !actor.a_cmds[:order]
    return true
  end
 
  def make_item_list
    @data = $game_party.members.select {|actor| include?(actor) }
    @data.push(nil) if include?(nil)
  end
 
  def select_last
    select(@data.index($game_party.last_atroop) || 0)
  end
 
  def swap_actor
    $game_party.swap_order($game_party.last_atroop.index,index)
    @pending_index = -1
    @ordering_on = nil
    refresh
  end
 
  def actor_rect(index)
    rect = Rect.new
    rect.width = item_width
    rect.height = item_height
    rect.x = index % col_max * (item_width + spacing)
    rect.y = index / col_max * item_height
    rect
  end
 
  def offset
    Graphics.height < 480 ? 0 : 10
  end
 
  def draw_item(index)
    actor = @data[index]
    if actor
      rect = actor_rect(index)
      rect.width -= 4
      draw_in_battle_party(index) if GARMY::B_MEMBERS
      draw_selected(index)
      draw_actor_text(actor,rect.x + 2,rect.y + 38 + offset, enable?(actor),
        rect.width)
      draw_character(actor.character_name, actor.character_index,
        rect.x + item_width / GARMY::SPRITE_X_POS - 1, rect.y + 38 + offset,
        enable?(actor),index)
    end
  end
 
  def draw_selected(index)
    if index == @pending_index
      pendrect = item_rect(index)
      pendrect.x += 1
      pendrect.y += 1
      pendrect.width -= 2
      pendrect.height -= 2
      contents.fill_rect(pendrect, pending_color)
    end
  end
 
  def draw_in_battle_party(index)
    if index < $game_party.max_battle_members
      rect = item_rect(index)
      w = 1
      c = text_color(GARMY::B_MEMBER_COLOR)
      trect = Rect.new(rect.x,rect.y,rect.width,w)
      lrect = Rect.new(rect.x,rect.y,w,rect.height)
      rrect = Rect.new(rect.x + rect.width - w,rect.y,w,rect.height)
      brect = Rect.new(rect.x,rect.y + rect.height - w,rect.width,w)
      contents.fill_rect(trect,c)
      contents.fill_rect(lrect,c)
      contents.fill_rect(rrect,c)
      contents.fill_rect(brect,c)
    end
  end
 
  def square_color
 
  end
 
  def draw_actor_text(actor, x, y, enabled = true, w)
    return unless actor
    icon1 = get_icon(GARMY::ICONTYPE1,actor)
    icon2 = get_icon(GARMY::ICONTYPE2,actor)
    draw_icon(icon1, x + 6, y - 20, enabled)
    draw_icon(icon2, x + 18, y - 20, enabled)
    change_color(normal_color, enabled)
    contents.font.size = 18
    draw_text(x, y, w, line_height, actor.name,1)
    contents.font.size = 16
    lvl = Vocab::level_a + actor.level.to_s
    cname = actor.class.name
    draw_text(x + 10, y - 40, w, line_height, lvl,0)
    draw_text(x, y + 16, w, line_height, cname,1)
  end
 
  def get_icon(icontype,actor)
    case icontype
    when :actor
      return actor.a_icon
    when :class
      return $data_classes[actor.class_id].a_icon
    when :weapon
      if actor.equips[0].nil?
        return GARMY::NO_WEAPON_ICON
      else
        return actor.equips[0].icon_index
      end
    else
      return 0
    end
  end
 
  def draw_character(character_name, character_index, x, y,enabled,i)
    return unless character_name
    bitmap = Cache.character(character_name)
    sign = character_name[/^[\!\$]./]
    if sign && sign.include?('$')
      cw = bitmap.width / 3
      ch = bitmap.height / 4
    else
      cw = bitmap.width / 12
      ch = bitmap.height / 8
    end
    n = character_index
    step = 0
    step = @walk if enabled && i == index
    src_rect = Rect.new((n%4*3+1+step)*cw, (n/4*4)*ch, cw, ch)
    contents.blt(x - cw / 2, y - ch, bitmap, src_rect, enabled ? 255 : 150)
  end
 
  def update_help
    @help_window.set_item(actor)
  end
 
  def refresh
    make_item_list
    create_contents
    draw_all_items
  end
 
  def order_on
    @ordering_on = true
    @pending_index = index
    refresh
  end
 
  def cancel_ordering
    @ordering_on = nil
    @pending_index = -1
    refresh
  end
 
  def dismiss
    $game_party.remove_actor(actor.id)
    refresh
  end
 
  def update
    super
    update_walk
    redraw_item(index)
  end
 
  def update_walk
    @animtime += 1
    if @animtime == 10
      case @walk
      when 1; @walk -= 1
      when -1; @walk += 1
      when 0
        if @step == 1
          @walk = -1; @step = 0
        else
          @walk = 1; @step = 1
        end
      end
      @animtime = 0
    end
  end
 
  def cursor_down(wrap = false); super; cursor_move_extras; end
  def cursor_up(wrap = false); super; cursor_move_extras; end
  def cursor_left(wrap = false); super; cursor_move_extras; end
  def cursor_right(wrap = false); super; cursor_move_extras; end
 
  def cursor_move_extras
    @walk = 0
    @animtime = 0
    redraw_item(@last_index)
    @last_index = index
  end
 
  def process_ok
    if current_item_enabled?
      psound
      Input.update
      deactivate
      call_ok_handler
    else
      Sound.play_buzzer
    end
  end
 
  def psound
    if @psound.nil?
      Sound.play_ok
    else
      name,vol,pitch = @psound
      RPG::SE.new(name,vol,pitch).play
      @psound = nil
    end
  end
end # Window_Troops < Window_Selectable
 
    #------------------------#
#---|   Window_ArmyCommand   |--------------------------------------------------
    #------------------------#
 
class Window_ArmyCommand < Window_Command
  def initialize(x,y)
    super(x,y)
    self.opacity = 255
    self.back_opacity = 255
  end
 
  def window_width; return 160; end
  def visible_line_number; item_max; end
 
  def make_command_list
    @cmd_index = []
    GARMY::CMDS.each { |cmd|
      text = cmd[1][0]
      handle = text.delete(' ').downcase.to_sym
      add_command(text,handle,check_enabled($game_switches[cmd[1][2]],cmd[0],text))
      @cmd_index << cmd[0]
    }
  end
 
  def check_enabled(switch,cmd,text)
    return false if switch
    return false if cmd == :dismiss && $game_party.members.count <= 1
    if $game_party.last_atroop
      return false if !$game_party.last_atroop.a_cmds[cmd]
    end
    return true
  end
 
  def draw_item(index)
    change_color(normal_color, command_enabled?(index))
    recti = item_rect_for_text(index)
    recti.x += 26
    draw_text(recti, command_name(index), alignment)
    draw_icon(GARMY::CMDS[@cmd_index[index]][3],0,recti.y)
  end
 
  def process_ok
    if current_item_enabled?
      psound
      Input.update
      deactivate
      call_ok_handler
    else
      Sound.play_buzzer
    end
  end
 
  def psound
    if current_symbol == :dismiss
      name,vol,pitch = GARMY::DISMISS_SE
      RPG::SE.new(name,vol,pitch).play
      @psound = nil
    else
      Sound.play_ok
    end
  end
end # Window_ArmyCommand < Window_Command
 
    #---------------------#
#---|   Window_ArmyInfo   |-----------------------------------------------------
    #---------------------#
 
class Window_ArmyInfo < Window_Base
  def initialize(line_number = 2)
    super(0, Graphics.height - window_height, Graphics.width, window_height)
    refresh
  end
 
  def window_height
    h = h480? ? 30 : 0
    fitting_height(3) + h
  end
 
  def h480?; Graphics.height >= 480; end
 
  def setup_info
    w = contents.width
    o = h480? ? 18 : 0
    h = line_height
    y = line_height + o
    y2 = h * 2 + o * 1.4
    contents.font.size = 21 if !h480?
    change_color(system_color)
    draw_text(0,0,contents.width,line_height,$game_party.armyname,1)
    change_color(normal_color)
    draw_horz_line(h - 4) if h480?
    draw_text(0,y,w,h,GARMY::UNIT_COUNT + $game_party.members.count.to_s,0)
    draw_text(0,y,w,h,GARMY::HIGH_LEVEL + highlevel,1)
    draw_text(0,y,w,h,GARMY::TIME + time_text,2)
    draw_text(0,y2,w,h,GARMY::FUNDS + $game_party.gold.to_s + currency,0)
    if GARMY::INFOVAR1 > 0
      v = GARMY::INFOVAR1
      n = $data_system.variables[v]
      draw_text(0,y2,w,h,n + $game_variables[v].to_s,1)
    end
    if GARMY::INFOVAR2 > 0
      v = GARMY::INFOVAR2
      n = $data_system.variables[v]
      draw_text(0,y2,w,h,n + $game_variables[v].to_s,2)
    end
  end
 
  def currency; Vocab::currency_unit; end
 
  def highlevel
    ($game_party.members.max_by { |k,v| k.level }).level.to_s
  end
 
  def time_text
    sprintf("%02d:%02d:%02d", (Graphics.frame_count / 60**2) / 60,
      Graphics.frame_count / 60**2 % 60,
      Graphics.frame_count / 60 % 60)
  end
 
  def draw_horz_line(y)
    line_y = y + line_height / 2 - 1
    contents.fill_rect(0, line_y, contents_width, 2, line_color)
  end
 
  def line_color
    color = normal_color
    color.alpha = 48
    color
  end
 
  def update
    refresh
  end
 
  def refresh
    contents.clear
    setup_info
  end
end # Window_ArmyInfo < Window_Base
 
    #---------------------#
#---|   Window_ArmyFace   |-----------------------------------------------------
    #---------------------#
 
class Window_ArmyFace < Window_Base
  def initialize(x,y,w,h)
    super(x - w,y,w,h)
    self.opacity = 255
    self.back_opacity = 255
  end
 
  def draw_cont
    fy = (contents.height - 96) / 2
    fx = (contents.width - 96) / 2
    draw_actor_face($game_party.last_atroop, fx, fy)
  end
 
  def refresh
    contents.clear
    draw_cont
  end
end # Window_ArmyFace < Window_Base

22 thoughts on “Galv’s Army Manager V.1.1

  1. ACS says:

    if the player can dismiss all the actors and how the fate of the main character?

    • Galv says:

      Please read the settings. You can set actors you choose to not be able to be moved or dismissed.
      Also, you cannot dismiss the last remaining member of your army.

  2. Ellen says:

    Hi Galv, I tried this in my game and got this error: “Script ‘Galv’s Army Manager line 50: syntax error occured. unexpected tIDENTIFIER, expecting keyword_end
    NO_ACTOR_ICON=186 #Icon used if you don’t…
    I tried this in a completely fresh new game and got the same message, so it’s not a conflicting script issue.

    • Galv says:

      Download the demo and copy the script from there. I am yet to work out why some people’s browsers copy non-existent characters that break the code.

  3. Ellen says:

    Thanks! It works!

  4. Yeolde says:

    Thank you so much for this script. It’s something I needed so badly!!
    I have noticed a bug when I call ‘a_icon(id,icon_id)’ through script.

    It says:
    Script’Game_Interpreter’ line 1411: NoMethodError occurred.
    undefined method ‘[]’ for nil:NilClass

    • Galv says:

      Thanks for reporting that – it is in fact a bug.
      Change line 132 from:
      def a_icon(id,icon_id); $game_actor[id].a_icon = icon_id; end
      to
      def a_icon(id,icon_id); $game_actors[id].a_icon = icon_id; end

      I updated the script on this page but not the demo

  5. Karen says:

    Hello Galv.
    Is there a way to add this to Ace Menu Engine? I can use “Common Event Commands” to do this (by adding common event with script call) but I prefer “Custom Commands” (:command => [“Display Name”, EnableSwitch, ShowSwitch, Handler Method]).

  6. Rico787USMC says:

    Hey Galv i wanted to know how can add where on your demo says Quest completed and reputation mine just shows 0 0 and thats it and also how to change the counters on it so that if they do gain rep so that the number changes

  7. Galv says:

    “Control Variables” is an event command. I recommend looking up some tutorials or ask in a forum if you don’t know how to use variables.

  8. JasonGames says:

    thank’s galv for this script :)

  9. Mercy says:

    Super late to the party, but is there any wall to call the Manage Army scene and still have parallel process common events running in the background? I have animated menus and timers for a soundtrack, but opening this (super useful) scene stops all of it. I have the scene interpreter and have labels in place to keep things moving during messsages, but I’m clueless as how to call this scene and not stop everything. Any help would be greatly appreciated!

  10. Mercy says:

    Thank you, I wasn’t expecting such a quick reply. The best work around I could come up with is to record the playtime before and after the scene is called and then to subtract the difference from my timers manually when the scene ends. It works well enough, but if the scene is open too long it just causes my BGM to loop instead of transitioning into the next song. But the timers at least catch up once the scene ends, particularly if the song hasn’t ended yet. Just to be clear, does it matter if these are common event parallel processes and not MAP processes?

    • Galv says:

      Not exactly sure what you are doing so I cannot answer that one. As long as they run when you need them to, not sure why it would matter, though.

      • Mercy says:

        My game has animated menus using common events and show picture to display the various frames. It also has a custom soundtrack with timers to stop playback after the song reaches its end so that it does not loop and randomly selects the next song to play, while ensuring that the same song isn’t played again for at least 10 more selections. In addition to the animated menu itself, these songs each have accompanying animated pics that slide in when the song stats, displaying the title and artist. Even if the pictures couldn’t be displayed within the army scene, if I could at least keep the jukebox common event running so that it plays and changes songs within the scene would be amazing. My game is a wrestling simulation game, so the army manager scene is going to be how the player manages their ‘roster’.

        TL;DR – They don’t or maybe even can’t run when I need them to, specifically with the scene open. The common event parallel process that controls my BGM is halted when the scene opens, I’d just like it to continue running in the background, if possible.

  11. Galv says:

    You’d need another plugin to do that – scenes don’t work that way by default unfortunately.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s