Battle Manager
The battle_manager
object is a lua wrapper for the battle
object provided by the game code. The battle_manager
provides access to all functionality provided by battle
as well as numerous enhancements and extensions.
Any calls made to a battle_manager
which aren't recognised as functions are passed to the underlying battle
object. In this way, the battle_manager
object automatically provides the full interface of a battle
object.
Loaded in Battle |
-
battle_manager:new()
-
Creates and returns a battle_manager object. Only one battle_manager object may be created in a session - attempting to create a second just returns the first.
Returns:
battle_manager
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 123
-
battle_manager:out(string
output)
-
Prints a string to the console for debug purposes. The string is prepended with a timestamp.
Parameters:
1
string
output
Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 289
-
battle_manager:get_tm()
-
Directly access the timer_manager object the battle manager creates and stores internally. It shouldn't be necessary to do this too often, as the battle manager exposes its most useful functions.
Returns:
timer_manager
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 307
-
battle_manager:get_battle_ui_manager()
-
Retrieves a handle to a
battle_ui_manager
object from the battle manager. One is created if it hasn't been created before.Returns:
battle_ui_manager
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 315
-
battle_manager:get_battle_folder()
-
Returns the path to the battle script folder.
Returns:
string
path
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 328
-
battle_manager:get_origin()
-
Returns a vector position at the world origin.
Returns:
vector
origin
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 336
-
battle_manager:ui_component()
-
A wrapper for ui_component. Searches the UI heirarchy and returns a uicomponent object with the supplied name. This overrides the base ui_component function provided by the underlying
battle
object, which returns a component object (which must be converted to be a UIComponent before use).Returns:
uicomponent
ui component, or false if not found
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 344
-
battle_manager:is_any_cutscene_running()
-
Returns true if any cutscene object is currently showing a cutscene.
Returns:
boolean
is cutscene running
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 382
-
battle_manager:is_any_unit_selected()
-
Queries the UI and returns true if any unit cards are selected.
Returns:
boolean
any unit selected
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 400
-
battle_manager:are_all_units_selected()
-
Queries the UI and returns true if all unit cards are selected.
Returns:
boolean
all units selected
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 429
-
battle_manager:get_player_alliance_num()
-
Returns the alliance number of the player's alliance.
Returns:
integer
alliance number
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 455
-
battle_manager:get_non_player_alliance_num()
-
Returns the alliance number of the non-player alliance.
Returns:
integer
alliance number
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 463
-
battle_manager:get_player_alliance()
-
Returns the local player's alliance object.
Returns:
alliance
player alliance
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 475
-
battle_manager:get_non_player_alliance()
-
Returns the alliance object of the local player's enemy.
Returns:
alliance
enemy alliance
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 483
-
battle_manager:player_is_attacker()
-
Returns true if the local player is the attacker in the battle.
Returns:
boolean
player is attacker
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 491
-
battle_manager:get_player_army()
-
Returns the local player's army object.
Returns:
army
player's army
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 499
-
battle_manager:get_first_non_player_army()
-
Returns the first army of the enemy alliance to the local player.
Returns:
army
enemy army
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 507
-
battle_manager:assault_equipment_exists([
keystring
])
-
Returns
true
if any assault equipment with the optional supplied key exists on the battlefield. If no key is supplied then the function returns true if any assault equipment exists.Parameters:
1
optional, default value=nil
Assault equipment key, from the
battlefield_siege_vehicles
table. If no key is supplied then the function returnstrue
if any assault equipment is present.Returns:
equipment existsboolean
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 515
-
battle_manager:is_minor_settlement_battle()
-
Returns
true
if the battle type issettlement_unfortified
, indicating a minor settlement battle.Returns:
is minor settlement battleboolean
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 541
-
battle_manager:is_major_settlement_battle()
-
Returns
true
if the battle type issettlement_standard
, indicating a major settlement battle.Returns:
is major settlement battleboolean
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 549
-
battle_manager:random_number([number
max value])
-
Returns a random number. If no max value is supplied then the value returned is a float between 0 and 1. If a max value is supplied, then the value returned is an integer value from 1 to the max value. This is safe to use in multiplayer.
Parameters:
1
number
optional, default value=nil
max value
Returns:
random
number
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 567
-
battle_manager:random_sort(
numerically-indexed tabletable
)
-
Randomly sorts a numerically-indexed table. This is safe to use in multiplayer, but will destroy the supplied table. It is faster than
battle_manager:random_sort_copy
.
Note that records in this table that are not arranged in an ascending numerical index will be lost.
Note also that the supplied table is overwritten with the randomly-sorted table, which is also returned as a return value.Parameters:
1
Numerically-indexed table. This will be overwritten by the returned, randomly-sorted table.
Returns:
randomly-sorted tabletable
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 581
-
battle_manager:random_sort_copy(
numerically-indexed tabletable
)
-
Randomly sorts a numerically-indexed table. This is safe to use in multiplayer, and will preserve the original table, but it is marginally slower than
battle_manager:random_sort
.
Note that records in the source table that are not arranged in an ascending numerical index will not be copied (they will not be deleted, however).Parameters:
1
Numerically-indexed table.
Returns:
randomly-sorted tabletable
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 610
-
battle_manager:setup_battle(function
deployment end callback)
-
Packaged function to set up a scripted battle on startup, and register a function to be called when the deployment phase ends (i.e. when battle starts).
setup_battle
will suppress a variety of unit sounds and steal input focus until the combat phase begins.Parameters:
1
function
deployment end callback
Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 639
-
battle_manager:register_phase_change_callback(string
phase name, function
callback)
-
Registers a function to be called when a specified phase change occurs. Phase change notifications are sent to the script by the game when the battle changes phases, from 'Deployment' to 'Deployed' and on to 'VictoryCountdown' and 'Complete'. The battle manager writes output to the console whenever a phase change occurs, regardless of whether any callback has been registered for it.
This wraps the underlying functionality provided bybattle:register_battle_phase_handler
. See that function's documentation for a list of phase change events that may be listened for.Parameters:
1
string
phase name
2
function
callback
Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 670
-
battle_manager:get_current_phase()
-
Returns the name of the current battle phase.
Returns:
phase namestring
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 695
-
battle_manager:winner_alliance_id()
-
Returns the winning alliance id. Only makes sense after the battle is completed.( I.e. in `Complete` phase)
Returns:
winning alliance idnumber
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 718
-
battle_manager:register_unit_selection_callback(unit
subject unit, function
callback)
-
Registers a function to be called when a specified unit is selected by the player.
Parameters:
1
unit
subject unit
2
function
callback
Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 735
-
battle_manager:unregister_unit_selection_callback(unit
subject unit)
-
Unregisters a function registered with
battle_manager:register_unit_selection_callback
.Parameters:
1
unit
subject unit
Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 763
-
battle_manager:register_command_handler_callback(string
command, function
callback, [string
callback name])
-
Registers a function to be called when a command event is issued by the game. The function will be called with the command handler context supplied as a single argument, which can be queried for further information depending upon the command.
This wraps the underlying functionality provided bybattle:register_command_handler
. See the documentation of that function for more information about what command events can be listened for, and what contextual information those events provide.Parameters:
1
string
Command name to listen for.
2
function
Callback to call when the command is triggered by the game.
3
string
optional, default value=nil
Optional name by which this callback handler can be removed.
Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 803
-
battle_manager:unregister_command_handler_callback(string
command name, string
callback name)
-
Unregisters a callback function registered with
battle_manager:register_command_handler_callback
. The callback function is specified by the command name and callback name specified when setting the callback up.Parameters:
1
string
command name
2
string
callback name
Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 857
-
battle_manager:register_input_handler_callback(string
input, function
callback, [string
callback name])
-
Registers a function to be called when an input event is issued by the game. This wraps the underlying functionality provided by
battle:register_input_handler
. See the documentation of that function for more information about what input events can be listened for.Parameters:
1
string
Input name to listen for.
2
function
Callback to call when the input is triggered by the game.
3
string
optional, default value=nil
Optional name by which this input handler can be removed.
Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 920
-
battle_manager:unregister_input_handler_callback(string
command name, string
callback name)
-
Unregisters a callback function registered with
battle_manager:register_input_handler_callback
. The callback function is specified by the input name and callback name specified when setting the callback up.Parameters:
1
string
command name
2
string
callback name
Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 973
-
battle_manager:steal_escape_key_with_callback(string
callback name, function
callback)
-
Steals the escape key if it wasn't stolen before, and registers a callback to be called if the player presses it. The callback entry must be registered with a unique string name, by which it may be cancelled later if desired.
Multiple escape key callbacks may be registered at one time, although only the most recently-registered callback is notified when the ESC key is pressed. Once an ESC key callback is called it is removed from the list, and the next ESC key press causes the next most recent callback to be notified, and so-on.Parameters:
1
string
callback name
2
function
callback
Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 1037
-
battle_manager:release_escape_key_with_callback(string
callback name to cancel)
-
Cancels an escape key callback registered with
battle_manager:steal_escape_key_with_callback
by name.Parameters:
1
string
callback name to cancel
Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 1081
-
battle_manager:setup_victory_callback(function
callback to call)
-
Establishes a function to be called when the battle enters VictoryCountdown phase i.e. someone has won. This function also sets the duration of the victory countdown to infinite, meaning the battle will never end until
battle_manager:end_battle
is called. This allows calling scripts to do things like set up an outro cutscene or play some advice that wouldn't fit into the standard victory countdown duration (10 seconds).Parameters:
1
function
callback to call
Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 1142
-
battle_manager:end_battle()
-
Causes a battle to immediately end when it enters the VictoryCountdown phase, or to immediately end if it is already in that phase. This function is most commonly used to end a battle that has entered the VictoryCountdown phase after
battle_manager:setup_victory_callback
has been called.Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 1156
-
battle_manager:register_results_callbacks(
player victory callback
function,
player defeat callback
function
) -
Old-style battle-ending handlers. These can still be used but won't get called until the battle results screen is shown. Registers player victory and player defeat callbacks to be called at the end of the battle.
Parameters:
1
function
player victory callback
2
function
player defeat callback
Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 1163
-
battle_manager:slow_game_over_time(
start game speed
number,
target game speed
number,
duration in ms
number,
steps
number
) -
Changes game speed from one value to another over a total time (note that this will be elongated by the slowing action) over a given number of steps. Note that the script engine only updates once every 1/10th of a second so specifying steps of less than this will have weird results. Speeds are specified as multiples of normal game speed, so a value of 2 would be twice normal speed, 0.5 would be half, and so on.
Parameters:
1
number
start game speed
2
number
target game speed
3
number
duration in ms
4
number
steps
Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 1216
-
battle_manager:pause()
-
Pauses the battle.
Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 1260
-
battle_manager:modify_battle_speed(
speednumber
, [
silentboolean
])
-
Wrapper for the
battle:modify_battle_speed
function, that prints output and notifies other systems that the model tick speed has changed.Parameters:
1
New battle speed, as a unary proportion of normal speed. Supply a value of 1 to set the battle speed to normal, 0.5 for half speed, 0 for pause etc.
2
optional, default value=false
Silent flag - do not print output.
Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 1267
These wrapper functions expose functionality provided by the timer_manager
. It is highly recommended to use battle_manager:callback
or battle_manager:repeat_callback
in place of register_singleshot_timer
and register_repeating_timer
, the latter are mainly provided for legacy support.
-
battle_manager:callback(function
callback to call, number
delay in ms, [string
callback name])
-
Exposes the callback function from the
timer_manager
object. Instructs the timer manager to call a supplied function after a supplied delay. A string name for the callback may also be supplied with which the callback may be later cancelled usingbattle_manager:remove_process
.Parameters:
1
function
callback to call
2
number
delay in ms
3
string
optional, default value=nil
callback name
Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 1330
-
battle_manager:repeat_callback(function
callback to call, number
delay in ms, [string
callback name])
-
Exposes the repeat_callback function from the
timer_manager
object. Instructs the timer manager to call a supplied function after a supplied delay, and then repeatedly after the same delay. A string name for the callback may also be supplied with which the callback may be later cancelled usingbattle_manager:remove_process
.Parameters:
1
function
callback to call
2
number
delay in ms
3
string
optional, default value=nil
callback name
Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 1340
-
battle_manager:register_singleshot_timer(string
function name, number
time in ms)
-
Exposes the register_singleshot_timer function from the
timer_manager
object.Parameters:
1
string
function name
2
number
time in ms
Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 1350
-
battle_manager:register_repeating_timer(string
function name, number
time in ms)
-
Exposes the register_repeating_timer function from the
timer_manager
object.Parameters:
1
string
function name
2
number
time in ms
Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 1359
-
battle_manager:unregister_timer(string
function name)
-
Exposes the unregister_timer function from the
timer_manager
object.Parameters:
1
string
function name
Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 1368
A watch is a process that continually polls a supplied condition. When it is true, the watch process waits for a supplied period, and then calls a supplied target function. Watches provide battle scripts with a fire-and-forget method of polling the state of the battle, and of being notified when that state changes in some crucial way.
-
battle_manager:watch(
condition
function,
condition
function,
wait time
number,
target callback
function,
watch name
[string]
) -
Establishes a new watch. A supplied condition function is repeated tested and, when it returns true, a supplied target function is called. A wait period between the condition being met and the target being called must also be specified. A name for the watch may optionally be specified to allow other scripts to cancel it.
The condition must be a function that returns a value - when that value is true (or evaluates to true) then the watch condition is met. The watch then waits the supplied time offset, which is specified in ms as the second parameter, before calling the callback supplied in the third parameter.Parameters:
1
function
condition
2
function
Condition. Must be a function that returns a value. When the returned value is true, or evaluates to true, then the watch condition is met.
3
number
Time in ms that the watch waits once the condition is met before triggering the target callback
4
function
Target callback
5
string
optional, default value=nil
Name for this watch process. Giving a watch a name allows it to be stopped/cancelled with
battle_manager:remove_process
.Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 1389
-
battle_manager:remove_process(string
name)
-
Stops and removes any watch OR callback with the supplied name. Returns true if any were found, false otherwise.
Parameters:
1
string
name
Returns:
boolean
any removed
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 1564
-
battle_manager:remove_process_from_watch_list(string
name)
-
Stops and removes any watch with the supplied name. Returns true if any were found, false otherwise. Best practice is to use remove_process instead of this.
Parameters:
1
string
name
Returns:
boolean
any removed
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 1576
-
battle_manager:print_watch_list()
-
Debug command to dump the watch list to the console.
Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 1604
-
battle_manager:clear_watches_and_callbacks()
-
Cancels all running watches and callbacks. It's highly recommend to not call this except for debug purposes (and rarely, even then).
Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 1619
-
battle_manager:set_load_balancing()
-
By default the watch system performs load balancing, where it tries to stagger its running watches so they don't all process on the same tick. If this is causes problems for any reason it can be disabled with
set_load_balancing
. Supply a boolean parameter to enable or disable load balancing.Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 1634
The advisor queueing functionality allows the calling script to queue advisor messages so they don't clumsily collide with each other during playback.
-
battle_manager:queue_advisor(
advice key
string,
forced duration
[number],
debug
[boolean],
start callback
[function],
start callback wait
[number],
condition
[playback]
) -
Enqueues a line of advice for delivery to the player. If there is no other advice playing, or nothing is blocking the advisor system, then the advice gets delivered immediately. Otherwise, the supplied advice will be queued and shown at an appropriate time.
The function must be supplied an advice key from the advice_levels/advice_threads tables as its first parameter, unless the advisor entry is set to be debug (see below).
The third parameterParameters:
1
string
Advice key from the advice_levels/advice_threads table.
If the advice entry is set to be debug (see third parameter) the text supplied here will instead be shown directly in the advisor window (debug only)
2
number
optional, default value=0
Forced duration in ms. This is a period that this advice must play for before another item of advice is allowed to start. By default, items of advice will only remain queued while the active advice is actually audibly playing, but by setting a duration the active advice can be held on-screen for longer than the length of its associated soundfile (unless it is closed by the player). This is useful during development to hold advice on-screen when no soundfile yet exists, and also for tutorial scripts which often wish to ensure that an item of advice is shown on-screen for a certain duration.
3
boolean
optional, default value=false
Sets whether the advice line is debug. If set to true, the text supplied as the first parameter is displayed in the advisor window as-is, without using it as a lookup key in the advice_levels table.
4
function
optional, default value=nil
Start callback. If a function is supplied here it is called when the advice is actually played.
5
number
optional, default value=0
Start callback wait period in ms. If a duration is specified it causes a delay between the advice being played and the start callback being called.
6
playback
optional, default value=nil
Playback condition. If specified, it compels the advisor system to check this condition immediately before playing the advisor entry to decide whether to actually proceed. This must be supplied as a function block that returns a result. If this result evaluates to true, the advice is played.
Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 1658
-
battle_manager:stop_advisor_queue([boolean
close advisor], [boolean
force immediate stop])
-
Cancels any running advice, and clears any subsequent advice that may be queued.
Parameters:
1
boolean
optional, default value=false
Closes the advisor if it's open
2
boolean
optional, default value=false
Forces immediate stop. By default the stopping action takes a short amount of time - the game seems happier with this. If set to true, this flag bypasses this behaviour. User beware.
Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 1831
-
battle_manager:advice_cease()
-
Stops the advisor queue and prevents any more advice from being queued. The advice system will only subsequently restart if
battle_manager:advice_resume
is called.Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 1856
-
battle_manager:advice_resume()
-
Allows advice to resume after
battle_manager:advice_cease
called.Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 1865
-
battle_manager:stop_advice_on_battle_end()
-
Establishes a listener which stops the advice system as soon as the battle results panel appears.
Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 1872
-
battle_manager:set_close_queue_advice([boolean
value])
-
Sets whether the advisor system should close the advisor panel once an item of advice has finished playing. By default this is set to false, so use this function to turn this behaviour on.
Parameters:
1
boolean
optional, default value=true
value
Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 1894
-
battle_manager:has_advice_played_this_battle()
-
Returns true if any advice has played in this battle session
Returns:
boolean
advice has played
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 1906
-
battle_manager:modify_advice([boolean
show button], [boolean
show highlight])
-
Modifies the advisor panel to show the progress/close button in the bottom right, and also to highlight this button with an animated ring around it. This setting will persist across subsequent items of advice in a battle session until modified again.
Parameters:
1
boolean
optional, default value=false
Show progress/close button.
2
boolean
optional, default value=false
Show highlight on close button.
Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 1914
-
battle_manager:progress_on_advice_dismissed(
callback to call
function,
delay
[number],
highlight on finish
[boolean]
) -
Calls a supplied callback when the advisor panel is closed for any reason.
Parameters:
1
function
Callback to call.
2
number
optional, default value=0
Delay in ms after the adisor closes before calling the callback.
3
boolean
optional, default value=false
Highlight the advisor close button upon finishing the currently-playing advice. This is useful for script that knows the advisor is playing, wants to highlight the close button when it finishes and be notified of when the player closes the advisor in any case.
Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 1969
-
battle_manager:cancel_progress_on_advice_dismissed()
-
Cancels a running
battle_manager:progress_on_advice_dismissed
process.Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 2086
-
battle_manager:progress_on_advice_dismissed_immediate_highlight()
-
Causes a
battle_manager:progress_on_advice_dismissed
process that is listening for the advice to finish so that it can highlight the close button (i.e. the third parameter was set to true) to cancel this listener.Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 2095
-
battle_manager:progress_on_advice_finished(function
callback to call, [number
delay], [number
playtime])
-
Calls a supplied callback when the advisor has stopped playing an audible sound.
Parameters:
1
function
Callback to call.
2
number
optional, default value=0
Delay in ms after the adisor stops before calling the callback.
3
number
optional, default value=5000
Playing time for the advice item. This sets a time after which
battle_manager:progress_on_advice_finished
will begin to actively poll whether the advice is still playing, as well as listening for the finish event. This is useful as it ensure this function works even during development when the advisor sound files have not yet been recorded.Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 2102
-
battle_manager:cancel_progress_on_advice_finished()
-
Cancels a running
battle_manager:progress_on_advice_finished
process.Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 2168
Upon creation, the battle manager automatically creates an objectives manager object which it stores internally. Most of these functions provide a passthrough interface to the most commonly-used functions on the objectives manager. See the documentation on the objectives_manager
page for more details.
Note that battle_manager:set_locatable_objective
is native to the battle manager and is not related to the objectives manager.
-
battle_manager:set_objective(string
objective key, [number
param a], [number
param b])
-
Pass-through function for
objectives_manager:set_objective
on the objectives manager. Sets up a scripted objective for the player, which appears in the scripted objectives panel. This objective can then be updated, removed, or marked as completed or failed by the script at a later time.
A key to the scripted_objectives table must be supplied with set_objective, and optionally one or two numeric parameters to show some running count related to the objective. To update these parameter values later,set_objective
may be re-called with the same objective key and updated values.Parameters:
1
string
Objective key, from the scripted_objectives table.
2
number
optional, default value=nil] number param a, First numeric objective parameter. If set, the objective will be presented to the player in the form [objective text]: [param a
First numeric objective parameter. If set, the objective will be presented to the player in the form [objective text]: [param a]. Useful for showing a running count of something related to the objective.
3
number
optional, default value=nil] number param b, Second numeric objective parameter. A value for the first must be set if this is used. If set, the objective will be presented to the player in the form [objective text]: [param a] / [param b
Second numeric objective parameter. A value for the first must be set if this is used. If set, the objective will be presented to the player in the form [objective text]: [param a] / [param b]. Useful for showing a running count of something related to the objective.
Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 2192
-
battle_manager:complete_objective(string
objective key)
-
Pass-through function for
objectives_manager:complete_objective
on the objectives manager. Marks a scripted objective as completed for the player to see. Note that it will remain on the scripted objectives panel until removed withbattle_manager:remove_objective
.
Note also that is possible to mark an objective as complete before it has been registered withbattle_manager:set_objective
- in this case, it is marked as complete as soon asbattle_manager:set_objective
is called.Parameters:
1
string
Objective key, from the scripted_objectives table.
Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 2203
-
battle_manager:fail_objective(string
objective key)
-
Pass-through function for
objectives_manager:fail_objective
on the objectives manager. Marks a scripted objective as failed for the player to see. Note that it will remain on the scripted objectives panel until removed withbattle_manager:remove_objective
.Parameters:
1
string
Objective key, from the scripted_objectives table.
Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 2212
-
battle_manager:remove_objective(string
objective key)
-
Pass-through function for
objectives_manager:remove_objective
on the objectives manager. Removes a scripted objective from the scripted objectives panel.Parameters:
1
string
Objective key, from the scripted_objectives table.
Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 2220
-
battle_manager:activate_objective_chain(
chain name
string,
objective key
string,
number param a
[number],
number param b
[number]
) -
Pass-through function for
objectives_manager:activate_objective_chain
. Starts a new objective chain - see the documentation on theobjectives_manager
page for more details.Parameters:
1
string
Objective chain name.
2
string
Key of initial objective, from the scripted_objectives table.
3
number
optional, default value=nil
First numeric parameter - see the documentation for
battle_manager:set_objective
for more details4
number
optional, default value=nil
Second numeric parameter - see the documentation for
battle_manager:set_objective
for more detailsReturns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 2228
-
battle_manager:update_objective_chain(
chain name
string,
objective key
string,
number param a
[number],
number param b
[number]
) -
Pass-through function for
objectives_manager:update_objective_chain
. Updates an existing objective chain - see the documentation on theobjectives_manager
page for more details.Parameters:
1
string
Objective chain name.
2
string
Key of initial objective, from the scripted_objectives table.
3
number
optional, default value=nil
First numeric parameter - see the documentation for
battle_manager:set_objective
for more details4
number
optional, default value=nil
Second numeric parameter - see the documentation for
battle_manager:set_objective
for more detailsReturns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 2239
-
battle_manager:end_objective_chain(string
chain name)
-
Pass-through function for
objectives_manager:end_objective_chain
. Ends an existing objective chain - see the documentation on theobjectives_manager
page for more details.Parameters:
1
string
Objective chain name.
Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 2250
-
battle_manager:reset_objective_chain(string
chain name)
-
Pass-through function for
objectives_manager:reset_objective_chain
. Resets an objective chain so that it may be called again - see the documentation on theobjectives_manager
page for more details.Parameters:
1
string
Objective chain name.
Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 2258
-
battle_manager:set_locatable_objective(
objective key
string,
camera position
vector,
camera target
vector,
zoom duration
number
) -
Sets up a locatable objective in battle. This will appear in the scripted objectives list alongside a zoom-to button which, when clicked, will zoom the camera to a location on the battlefield. The key of the objective text, as well as the camera position/target and zoom duration must all be supplied. The button visibility, on-click listener, and camera movements are all handled in script (which means the camera movement doesn't work when paused..)
Parameters:
1
string
Objective key, from the scripted_objectives table.
2
vector
Final camera position.
3
vector
Final camera target.
4
number
Duration of camera movement in seconds.
Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 2266
These functions provide a passthrough interface to the most commonly-used functions on the infotext manager, which the battle manager creates automatically.
-
battle_manager:add_infotext(object
first param, ...
additional infotext strings)
-
Pass-through function for
infotext_manager:add_infotext
. Adds one or more lines of infotext to the infotext panel - see the documentation on theinfotext_manager
page for more details.Parameters:
1
object
Can be a string key from the advice_info_texts table, or a number specifying an initial delay in ms after the panel animates onscreen and the first infotext item is shown.
2
...
Additional infotext strings to be shown.
add_infotext
fades each of them on to the infotext panel in a visually-pleasing sequence.Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 2338
-
battle_manager:remove_infotext(string
infotext key)
-
Pass-through function for
infotext_manager:remove_infotext
. Removes a line of infotext from the infotext panel.Parameters:
1
string
infotext key
Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 2347
-
battle_manager:clear_infotext()
-
Pass-through function for
infotext_manager:clear_infotext
. Clears the infotext panel.Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 2355
-
battle_manager:show_subtitle(string
subtitle key, [boolean
full key supplied], [boolean
force subtitle on])
-
Shows a cutscene subtitle on-screen.
Parameters:
1
string
subtitle key
2
boolean
optional, default value=false
Full localised key supplied. If false, or if no value supplied, the script assumes that the key is from the scripted_subtitles table and pads the supplied key out accordingly.
If the key has been supplied in the full localisation format (i.e.
[table]_[field_of_text]_[key_from_table]
), set this to true.3
boolean
optional, default value=false
Forces the subtitle to display, overriding the user's preferences.
Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 2373
-
battle_manager:hide_subtitles()
-
Hides any currently-shown subtitle.
Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 2436
Help messages are used primarily in quest battles. They are text messages faded onto the HUD above the army panel, that persist for a time and then fade off. The battle manager queues them so they don't overwrite one another.
-
battle_manager:queue_help_message(
key
string,
duration
[number],
fade time
[number],
high priority
[boolean],
play after battle victory
[boolean],
callback
[function]
) -
Enqueues a help message for showing on-screen.
Parameters:
1
string
Help message key, from the scripted_objectives table.
2
number
optional, default value=5000
Duration that the message will persist on-screen for in ms. If this is specified then a fade time must also be set.
3
number
optional, default value=2000
Time that the message will take to fade on/fade off in ms. If this is specified then a duration must also be set.
4
boolean
optional, default value=false
Set this to true to set this message to high priority. High priority messages are bumped to the top of the queue.
5
boolean
optional, default value=false
By default, help messages won't play after the battle has been won. Set this to true to allow this message to play after this point.
6
function
optional, default value=nil
Callback to call when the message actually starts to show on-screen.
Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 2467
-
battle_manager:enable_camera_movement([boolean
enable movement])
-
Allows script to prevents player movement of the camera without stealing input - other game interactions are still permitted. Supply false as an argument to disable camera movement.
Parameters:
1
boolean
optional, default value=true
enable movement
Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 2599
-
battle_manager:cache_camera()
-
Caches the current position/target of the camera for later retrieval.
Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 2613
-
battle_manager:get_cached_camera_pos()
-
Gets the cached position of the camera. This must be called after the position has been cached with
battle_manager:cache_camera
(else it will return false).Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 2622
-
battle_manager:get_cached_camera_targ()
-
Gets the cached target of the camera. This must be called after the position has been cached with
battle_manager:cache_camera
(else it will return false).Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 2629
The camera movement tracker is used by some tutorial scripts to track how the player is moving the camera.
-
battle_manager:start_camera_movement_tracker()
-
Starts the camera movement tracker. Only tutorial scripts which need to query camera tracker information need to do this.
Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 2650
-
battle_manager:stop_camera_movement_tracker()
-
Stops the camera movement tracker.
Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 2662
-
battle_manager:get_camera_altitude_change()
-
Gets the difference in camera altitude between now and when the tracker was started. The returned value is absolute (always positive).
Returns:
number
difference in m
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 2679
-
battle_manager:get_camera_distance_travelled()
-
Gets the total distance the camera has travelled between now and when the tracker was started. This distance is not exact, but gives the calling script an indication of how much the player is moving the camera.
Returns:
number
distance in m
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 2694
-
battle_manager:show_ui([boolean
should show])
-
Shows/hides the battle UI from script.
Parameters:
1
boolean
optional, default value=true
should show
Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 2742
-
battle_manager:show_army([boolean
should show], [boolean
immediate])
-
Shows/hides the army panel.
Parameters:
1
boolean
optional, default value=true
Should show.
2
boolean
optional, default value=false
Hide immediately. If the first parameter is false and this is true, the panel will not animate offscreen but will instead immediately disappear.
Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 2761
-
battle_manager:show_winds_of_magic_panel([boolean
should show], [boolean
immediate])
-
Shows/hides the winds of magic panel
Parameters:
1
boolean
optional, default value=true
Should show.
2
boolean
optional, default value=false
Hide immediately. If the first parameter is false and this is true, the panel will not animate offscreen but will instead immediately disappear.
Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 2785
-
battle_manager:show_portrait_panel([boolean
should show], [boolean
immediate])
-
Shows/hides the unit portrait panel.
Parameters:
1
boolean
optional, default value=true
Should show.
2
boolean
optional, default value=false
Hide immediately. If the first parameter is false and this is true, the panel will not animate offscreen but will instead immediately disappear.
Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 2809
-
battle_manager:show_top_bar([boolean
should show], [boolean
immediate])
-
Shows/hides the top bar on the battle interface.
Parameters:
1
boolean
optional, default value=true
Should show.
2
boolean
optional, default value=false
Hide immediately. If the first parameter is false and this is true, the panel will not animate offscreen but will instead immediately disappear.
Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 2833
-
battle_manager:show_radar_frame([boolean
should show], [boolean
immediate])
-
Shows/hides the radar.
Parameters:
1
boolean
optional, default value=true
Should show.
2
boolean
optional, default value=false
Hide immediately. If the first parameter is false and this is true, the panel will not animate offscreen but will instead immediately disappear.
Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 2857
-
battle_manager:show_start_battle_button([boolean
should show], [boolean
is multiplayer])
-
Shows/hides the start battle button.
Parameters:
1
boolean
optional, default value=true
Should show.
2
boolean
optional, default value=false
Set this to true if this is a multiplayer battle.
Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 2881
-
battle_manager:show_ui_options_panel([boolean
should show])
-
Shows/hides the ui options rollout panel.
Parameters:
1
boolean
optional, default value=true
should show
Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 2910
-
battle_manager:enable_spell_browser_button([boolean
should enable])
-
Enables/disables the spell browser button on the battle interface. A disabled button will still be visible, but greyed-out.
Parameters:
1
boolean
optional, default value=true
should enable
Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 2936
-
battle_manager:enable_ui_hiding([boolean
should enable])
-
Enables/disables UI hiding. With UI hiding disabled the player will not be able to hide the UI by pressing K or alt-K. This function does not prevent the script from being able to hide or show the UI.
Parameters:
1
boolean
optional, default value=true
should enable
Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 2961
-
battle_manager:is_ui_hiding_enabled()
-
Returns false if UI hiding has been disabled with
battle_manager:enable_ui_hiding
, otherwise true.Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 2976
The Engagement monitor is a set of processes that continually query the battle state and either store information for other scripts to look up or trigger events for other scripts to listen to. The engagement monitor doesn't start automatically, but must be started by scripts that need the processing and information that it requires, mostly advice/tutorial scripts.
The Engagement monitor tracks the following information:
- the distance between the two alliances on the battlefield, which other scripts can query instead of continually working it out themselves which is potentially expensive.
- the number/proportion of the player's alliance that is engaged in melee/under fire.
- the average altitude of both the player and enemy alliance.
The Engagement monitor also triggers the following events:
- tScriptEventBattleArmiesEngaging, when the two sides close to within 100m or once more than 40% of the player's army is under fire.
- ScriptEventPlayerGeneralWounded, if the player's general is wounded (they must be invincible).
- ScriptEventPlayerGeneralDies, if the player's general dies (not invincible).
- ScriptEventEnemyGeneralWounded, if the enemy general is wounded (they must be invincible).
- ScriptEventEnemyGeneralDies, if the enemy general dies (not invincible).
- ScriptEventPlayerGeneralRouts, if the player's general routs.
- ScriptEventEnemyGeneralRouts, if the enemy general routs.
- ScriptEventPlayerUnitRouts, if one of the player's units routs.
- ScriptEventPlayerUnitRallies, if one of the player's units rallies.
- ScriptEventEnemyUnitRouts, if one of the enemy units routs.
It also triggers ScriptEventPlayerApproachingVictoryPoint as an approximation of the player approaching a victory point. The implementation for this can charitably be described as a best guess - it happens two minutes after the player docks to the walls or the gate.
-
battle_manager:start_engagement_monitor()
-
Starts the engagement monitor. This must be called before the "Deployed" phase change occurs (i.e. before the end of deployment).
Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 3012
-
battle_manager:get_distance_between_forces()
-
Returns the cached distance between the two alliances.
battle_manager:start_engagement_monitor
must have been called before the battle started for this to work.Returns:
number
distance
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 3335
-
battle_manager:get_num_units_engaged()
-
Returns the number of units in the player's alliance engaged in melee.
battle_manager:start_engagement_monitor
must have been called before the battle started for this to work.Returns:
number
engaged
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 3347
-
battle_manager:get_proportion_engaged()
-
Returns the proportion of units in the player's alliance engaged in melee. This proportion will be a unary value (0 - 1).
battle_manager:start_engagement_monitor
must have been called before the battle started for this to work.Returns:
number
proportion engaged
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 3359
-
battle_manager:get_num_units_under_fire()
-
Returns the number of units in the player's alliance under missile fire.
battle_manager:start_engagement_monitor
must have been called before the battle started for this to work.Returns:
number
under fire
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 3371
-
battle_manager:get_proportion_under_fire()
-
Returns the proportion of units in the player's alliance engaged in melee. This proportion will be a unary value (0 - 1).
battle_manager:start_engagement_monitor
must have been called before the battle started for this to work.Returns:
number
proportion engaged
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 3383
-
battle_manager:get_player_army_altitude()
-
Returns the average altitude of the player's army in m.
Returns:
number
average altitude
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 3395
-
battle_manager:get_enemy_army_altitude()
-
Returns the average altitude of the enemy army in m.
Returns:
number
average altitude
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 3407
-
battle_manager:stop_engagement_monitor()
-
Stops the engagement monitor.
Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 3419
-
battle_manager:start_terrain_composite_scene(string
key, [string
group name], [number
delay])
-
Starts a composite scene with the supplied key. If an optional group name is set then this composite scene will not play if another from the same group is active, but will instead be enqueued. When a composite scene in a group stops and a second in the same group is enqueued, then that second scene will begin to play automatically.
Parameters:
1
string
Composite scene key.
2
string
optional, default value=false
Composite group name.
3
number
optional, default value=false
Delay in milliseconds to wait before starting if this composite scene becomes enqueued behind another (allowing a minimum time separation between composite scenes of the same group to be specified). This has no effect if no group name is specified.
Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 3439
-
battle_manager:stop_terrain_composite_scene(string
key)
-
Stops a composite scene with the supplied key. If this composite scene was specified as belonging to a group when it was started, and other composite scenes in that group are enquened, then the next one will begin to play automatically (after an optional delay).
Parameters:
1
string
Composite scene key.
Returns:
nil
defined in ../working_data/script/_lib/lib_battle_manager.lua, line 3512