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
if the player can dismiss all the actors and how the fate of the main character?
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.
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.
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.
Thanks! It works!
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
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
Thanks again for your quick response and awesome script =D
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]).
I’m sure there is but you should ask in a forum or something as I don’t have time to help everyone with this stuff :(
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
In the script settings they use variables:
INFOVAR1 = 1 # Variable id used to display in info window
INFOVAR2 = 2 # Variable id used to display in info window
You use control variables to change them.
How do I do that?
“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.
thank’s galv for this script :)
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!
Sorry, this is a new scene and the map is not running in the background.
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?
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.
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.
You’d need another plugin to do that – scenes don’t work that way by default unfortunately.
Drat, oh well. Thanks your help and your great work!