Episodic Scripting

The episodic scripting interface is one of the two main interface provided by the campaign model to script. Unlike the campaign model hierarchy, which is used to query the state of the model, the episodic scripting interface is primarily used to make changes to the model.

The original documentation for the episodic scripting interface can be found here: Episodic Scripting interface. Note that a campaign must be loaded to generate this documentation.

Loaded in Campaign Loaded in Campaign
Loaded in Battle Loaded in Battle
Loaded in Frontend Loaded in Frontend
Back to top

Creation and Usage

This interface is automatically created and cached by the campaign_manager when the NewSession event is triggered. This happens very early in the loading sequence. Once created, functions on the episodic scripting interface may be called by calling the campaign manager.

Example - Specification:

-- assumes a campaign manager object called cm
cm:dismiss_advice()
Back to top

Character Lookups

Many function on the campaign manager perform actions on a character and/or the military force he or she commands. The character to perform the action on is commonly specified by a character lookup string. A character lookup string must be composed from one or more filters. See the table below for a list of filter types.

filter namedescription
factionFaction key, from the factions table.
typeAgent type, from the agent_types table.
abilityAgent ability, from the abilities table.
forenameForename, from the names table.
surnameSurname, from the names table.
xDisplay x co-ordinate - must be used in conjection with a y display co-ordinate and a radius.
yDisplay y co-ordinate - must be used in conjection with an x display co-ordinate and a radius.
rRadius around specified x/y display position.
garrisonSettlement name of a garrison to look in, from the campaign_map_settlements table.
character_cqiThe command queue index of a character. This is always unique.

Should the filters specified in the character lookup string return more than one eligible character then only the first of these is used in the function call. Generally, it's a good idea to ensure that filters will only return one character, so it's strongly recommended to solely use the character_cqi filter which will only ever match one character.

A filter may be specified in the lookup string in the form <filter_name>:<filter_value>. Multiple filters may be specified in a lookup string, separated by a comma. Furthermore, the campaign manager function campaign_manager:char_lookup_str can also be used to convert a character object, or its cqi number, into a character lookup string.

Example - Add trait to a character from the Achilles faction at a display position [123,456]:

cm:force_add_trait("faction:troy_main_dan_achilles,x:123,y:456,r:1", "trait_general_good", true)

Example - Remove all action points from a character with cqi 45:

cm:zero_action_points("character_cqi:45")

Example - Use the char_lookup_str function to disable movement for the faction leader of the Aetolians:

local char_grn_faction_leader = cm:get_faction("troy_main_dan_aetolians"):faction_leader()
cm:disable_movement_for_character(cm:char_lookup_str(char_grn_faction_leader))
Back to top

General Querying

cm:is_new_game()

Returns true if this a new campaign game, or false otherwise. A new game is one that has yet to be saved and reloaded.

Returns:

  1. boolean is new game

cm:is_benchmark_mode()

Returns true if this campaign is running in benchmark mode, meaning it was launched from the benchmark section in the graphics options.

Returns:

  1. boolean is benchmark mode

cm:model()

Returns a handle to the campaign model object.

Returns:

  1. userdata campaign model

cm:filesystem_lookup()

Perform a VFS lookup in the specified path (root is the data folder) for files matching the pattern. Returns a comma-delimited list of files found.

Returns:

  1. string file list

cm:compare_localised_string(uicomponent uicomponent, string label string)

Returns whether the supplied label string matches the text of a supplied uicomponent, taking localisation into account.

Parameters:

1

uicomponent

uicomponent

2

string

label string

Returns:

  1. boolean localisation matches
Back to top

Game Settings

cm:set_campaign_time_of_day(number time of day value)

Instantly sets the campaign time-of-day setting, by numeric value. Valid values are:

ValueDescription
0Normal day/night cycle
1Fast day/night cycle
2Slow day/night cycle
3Always morning
4Always noon
5Always evening
6Always night
7User's local time

Parameters:

1

number

time of day value

Returns:

  1. nil
Back to top

Saving and Loading

cm:save_named_value(string value name, data value to save, context context object)

Write a value to the savegame. This should only be called when the SavingGame event is received, and must be passed the context object supplied by that event.
It's recommended to use the saving functions provided by the campaign manager, listed in the Saving Game section of this documentation, instead of directly calling this function.

Parameters:

1

string

Value name.

2

data

Value to save. Can be a boolean, number or string.

3

context

context object

Returns:

  1. nil

cm:load_named_value(string value name, data default value, context context object)

Reads a value from a loading game. Should only be called when the LoadingGame event is received, and must be passed the context object supplied by that event.
It's recommended to use the loading functions provided by the campaign manager, listed in the Loading Game section of this documentation, instead of directly calling this function.

Parameters:

1

string

Value name.

2

data

This defines the type of the value to load from the savegame and also a default value which will be returned if no value with the specified name could be found in the savegame. Can be a boolean, number or string.

3

context

context object

Returns:

  1. data saved value, either a boolean, number or string.

cm:disable_saving_game(boolean should disable)

Prevents or allows the saving of the game.

Parameters:

1

boolean

should disable

Returns:

  1. nil

cm:is_saving_disabled()

Returns whether saving has currently been disabled with cm:disable_saving_game.

Returns:

  1. boolean saving is disabled

cm:save_game(string filename, string file description)

Save the game with the supplied filename and optional description. The description is only used when saving multiplayer games. A boolean value is returned to indicate whether the operation succeeded - the save operation can fail if the game is in the wrong state, such as if a character is currently moving.

Parameters:

1

string

filename

2

string

file description

Returns:

  1. boolean operation succeeded

cm:enable_start_turn_autosave(boolean enable)

Enables or disables autosaving at the start of turn. By default, turn-start autosaving is enabled - use this function to disable it.

Parameters:

1

boolean

enable

Returns:

  1. nil

cm:enable_legendary_mode_restrictions(boolean should enable)

Enable/Disable legendary mode restrictions, such as manual saving, battle rematch, etc. This doesn't change game difficulty.

Parameters:

1

boolean

should enable

Returns:

  1. nil

cm:autosave_at_next_opportunity()

Autosave the game at the next opportunity.

Returns:

  1. nil
Back to top

Time Triggers

The functions described in this section grant raw access to the creation and removal of time triggers in campaign. While it's possible to use them directly it is highly recommended to use the wrapper functions provided by the campaign_manager object in script. These are listed in the Timer Callbacks section of this documentation.

cm:add_time_trigger(string id, number interval, [boolean repeat])

Register a time trigger, in seconds. This will cause a TimeTrigger event to trigger after the specified interval.

Parameters:

1

string

ID for this time trigger. This will be supplied with the TimeTrigger event when it is triggered.

2

number

Interval after which to trigger the TimeTrigger event, in seconds.

3

boolean

optional, default value=false

Repeats the time trigger if set to true.

Returns:

  1. nil

cm:remove_time_trigger(string id)

Removes a time trigger by string id.

Parameters:

1

string

id

Returns:

  1. nil
Back to top

Ending Turn

cm:disable_end_turn(boolean should disable)

Prevents or allows ending turn.

Parameters:

1

boolean

should disable

Returns:

  1. nil

cm:end_turn()

Ends the turn for the current faction.

Returns:

  1. nil

cm:set_ai_uses_human_display_speed(boolean use human speed )

Forces or un-forces any characters visible to humans to move at normal speed during the end-turn sequence. Overrides set using this function are saved into the savegame.

Parameters:

1

boolean

use human speed

Returns:

  1. nil
Back to top

Advisor

cm:dismiss_advice()

Dismisses the advisor panel.

Returns:

  1. nil

cm:dismiss_advice_at_end_turn(boolean should dismiss)

Set whether or not advice should be dismissed on ending turn.

Parameters:

1

boolean

should dismiss

Returns:

  1. nil

cm:hide_advisor_without_infotexts()

Hides the advisor panel, leaving the infotext panel opened

Returns:

  1. nil
Back to top

Camera

The functions in this section make use of camera co-ordinates. These are specified by five numeric components:

  1. display x co-ordinate of camera target
  2. display y co-ordinate of camera target
  3. horizontal distance from target to camera
  4. horizontal bearing in radians of target from camera
  5. height of camera

Example - scroll_camera_with_direction usage:

Example of cm:scroll_camera_with_direction usage showing multiple groups of co-ordinates supplied in table containers.
cm:scroll_camera_with_direction(true, 7, {490.8, 276.6, 5.6, 1.01, 4.0}, {491.0, 276.0, 5.6, 1.59, 4.0})

cm:set_camera_position(number x, number y, number d, number b, number h)

Repositions the camera to the specified co-ordinates.

Parameters:

1

number

Display x co-ordinate of camera target.

2

number

Display y co-ordinate of camera target.

3

number

Horizontal distance from camera to target.

4

number

Horizontal bearing in radians of target from camera.

5

number

Height of camera.

Returns:

  1. nil

cm:get_camera_position()

Returns the current position of the camera.

Returns:

  1. number x, Display x co-ordinate of camera target.
  2. number y, Display y co-ordinate of camera target.
  3. number d, Horizontal distance from camera to target.
  4. number b, Horizontal bearing in radians of target from camera.
  5. number h, Height of camera.

cm:get_camera_position_cindy_format()

Returns the current position of the camera in format xyz position, xyz target.

Returns:

  1. number x, Display x co-ordinate of camera position.
  2. number y, Display y co-ordinate of camera position.
  3. number z, Display z co-ordinate of camera position.
  4. number x, Display x co-ordinate of camera target.
  5. number y, Display y co-ordinate of camera target.
  6. number z, Display z co-ordinate of camera target.

cm:scroll_camera(boolean adjust endpoint, number scroll time, vararg co-ordinate list)

Scroll the camera along a spline.

Parameters:

1

boolean

Adjust the endpoint to be valid for gameplay. Set this to true if control is to be restored to the player after this camera movement finishes. Set to false if another camera movement follows this one.

2

number

Scroll time in seconds

3

vararg

Vararg list of co-ordinates. Each co-ordinate must be specified in a table containing four number co-ordinate components.

Returns:

  1. nil

cm:scroll_camera_with_direction(boolean adjust endpoint, number scroll time, vararg co-ordinate list)

Scroll the camera along a list of co-ordinates that define a spline.

Parameters:

1

boolean

Adjust the endpoint to be valid for gameplay. Set this to true if control is to be restored to the player after this camera movement finishes. Set to false if another camera movement follows this one.

2

number

Scroll time in seconds

3

vararg

Vararg list of co-ordinates. Each co-ordinate must be specified in a table containing five number co-ordinate components.

Returns:

  1. nil

cm:stop_camera()

Stops a scrolling camera.

Returns:

  1. nil

cm:fade_scene(number brightness, number duration)

Fades the scene to black or back to picture over a specified period, starting from the current brightness.

Parameters:

1

number

Brightness, as a unary value. Supply a value of 0 to fade to black, supply a value of 1 to fade to picture, or supply a value in between to transition to a partially-faded picture.

2

number

Duration of the fade effect in seconds.

Returns:

  1. nil
Back to top

Movies and Cinematics

cm:register_instant_movie(string movie path)

Plays a fullscreen movie, by path from the data/Movies directory.

Parameters:

1

string

movie path

Returns:

  1. nil

cm:register_outro_movie(string movie path)

Plays a fullscreen movie for an outro, by path from the data/Movies directory. The campaign will exit once playback has completed.

Parameters:

1

string

movie path

Returns:

  1. nil

cm:play_movie_in_ui(string movie path)

Plays a movie in the movie panel, by path from the data/Movies directory.

Parameters:

1

string

movie path

Returns:

  1. nil

cm:cinematic()

Returns a cinematic script interface.

Returns:

  1. cinematics cinematic interface
Back to top

UI Manipulation

cm:override_ui(string ui override name, boolean activate override)

Activates or deactivates a ui override.

Parameters:

1

string

ui override name

2

boolean

activate override

Returns:

  1. nil

cm:stop_user_input(boolean stop input)

Stops or allows user input.

Parameters:

1

boolean

stop input

Returns:

  1. nil

cm:steal_user_input(boolean steal input)

Steals user input, so that input notifications are redirected to script. When keypresses are stolen by script the game calls a function called OnKeyPressed when a keypress occurs. This function can be declared in script to receive these notifications.

Parameters:

1

boolean

steal input

Returns:

  1. nil

cm:steal_escape_key(boolean steal escape key)

Steals the ESC key, so that keypresses on it are redirected to script. When keypresses are stolen by script the game calls a function called OnKeyPressed when a keypress occurs. This function can be declared in script to receive these notifications.

Parameters:

1

boolean

steal escape key

Returns:

  1. nil

cm:enable_ui(boolean enable ui)

Enables or disables the entire user interface.

Parameters:

1

boolean

enable ui

Returns:

  1. nil

cm:disable_shortcut(string component id, string function id, boolean should disable)

Disables or re-enables a shortcut by name. Shortcuts can be looked up in data/text/default_keys.xml.

Parameters:

1

string

Component id, specified by the component attibute of a func element.

2

string

Function id, specified by the name attribute of a func element.

3

boolean

Should disable.

Returns:

  1. nil

cm:disable_all_shortcuts(boolean disable)

Disable or enable all shortcuts.

Parameters:

1

boolean

disable

Returns:

  1. nil

cm:add_unit_model_overrides(string character lookup, string model key)

Swap a model for a certain character. This needs to be set up at a new session.

Parameters:

1

string

Character lookup string - see Character Lookups for more information.

2

string

model key

Returns:

  1. nil

cm:add_character_model_override(character character, string model key)

Swap a model for a specific character. Same as add_unit_model_overrides, but doesn't use the character lookup.

Parameters:

1

character

Character interface.

2

string

Model key, from the campaign_character_art_sets database table.

Returns:

  1. nil

cm:highlight_movement_extents(boolean should highlight)

Causes movement extents surrounded a selected character in the game to flash or not.

Parameters:

1

boolean

should highlight

Returns:

  1. nil

cm:highlight_selected_character_zoc(boolean should highlight)

Causes the zone of control surrounding a selected character in the game to flash or not.

Parameters:

1

boolean

should highlight

Returns:

  1. nil

cm:set_exclusive_visible_labels(table faction keys)

Sets a whitelist of factions whose labels should be visible on the campaign map. If a faction is not present in the whitelist then its labels will not be visible. If the whitelist is empty, then labels for all factions are visible.

Parameters:

1

table

Numerically-indexed table of faction keys.

Returns:

  1. nil
Back to top

Markers, VFX and Composite Scenes

cm:add_marker(string marker id, string marker type, number x, number y, number height)

Add a marker at a specified display position, using a specified marker type. These markers are distinct from VFX in that they are generally 2D, clickable UI elements at a position on the battlefield.

Parameters:

1

string

Unique id for this marker, by which it may be later removed.

2

string

Marker type. Supported marker types are move_to, select, pointer, move_to_vfx, select_vfx, look_at_vfx and objective.

3

number

x display position.

4

number

y display position.

5

number

height above water plane.

Returns:

  1. nil

cm:remove_marker(string marker id)

Removes a marker previously added using cm:add_marker, by marker id.

Parameters:

1

string

marker id

Returns:

  1. nil

cm:add_interactable_campaign_marker(
  
string unique id,
  string
marker info,
  number
x,
  number
y,
  number
radius,
  string
faction key,
  string
subculture key
)

Add an interactable campaign marker of a specified type to the campaign map at a specified logical location. A radius around the marker is specified. As matching campaign characters enter or leave this radius then AreaEntered/AreaExited events will be triggered.
Subculture and faction keys can be specified in order to filter what campaign characters should trigger the proximity events.
Interactable campaign markers can be used for game features such as encounters at sea.

Parameters:

1

string

Unique id for this campaign marker, by which it may be later removed with cm:remove_interactable_campaign_marker.

2

string

Marker info key. This should match a record from the campaign_interactable_marker_infos table.

3

number

Logical x position for the marker.

4

number

Logical y position for the marker.

5

number

Radius around the position at which to trigger AreaEntered/AreaExited events.

6

string

Faction key filter. A blank string can be supplied to omit this.

7

string

Subculture key filter. A blank string can be supplied to omit this.

Returns:

  1. nil

cm:add_interactable_campaign_marker_by_real_world_position(
  
string unique id,
  string
marker info,
  number
x,
  number
y,
  number
height,
  number
use terrain height,
  number
radius,
  string
faction key,
  string
subculture key
)

Add an interactable campaign marker of a specified type to the campaign map at a specified display location. A radius around the marker is specified. As matching campaign characters enter or leave this radius then AreaEntered/AreaExited events will be triggered.

Parameters:

1

string

Unique id for this campaign marker, by which it may be later removed with cm:remove_interactable_campaign_marker.

2

string

Marker info key. This should match a record from the campaign_interactable_marker_infos table.

3

number

Display x position for the marker.

4

number

Display y position for the marker.

5

number

Display height for the marker.

6

number

Use the terrain height for the marker.

7

number

Radius around the position at which to trigger AreaEntered/AreaExited events.

8

string

Faction key filter. A blank string can be supplied to omit this.

9

string

Subculture key filter. A blank string can be supplied to omit this.

Returns:

  1. nil

cm:add_interactable_campaign_port_marker(
  
string marker id,
  string
marker info,
  number
x,
  number
y,
  number
radius,
  string
faction key,
  string
subculture key
)

Adds an interactable campaign port marker to the campaign map at the specified logical location. A radius around the marker is specified. As matching campaign characters enter or leave this radius then AreaEntered/AreaExited events will be triggered.

Parameters:

1

string

Unique id for this marker, by which it may be later removed.

2

string

Marker info key, from the campaign_interactable_marker_infos database table.

3

number

Logical x position for the marker.

4

number

Logical y position for the marker.

5

number

Radius around the position at which to trigger AreaEntered/AreaExited events.

6

string

Faction key filter. A blank string can be supplied to omit this.

7

string

Subculture key filter. A blank string can be supplied to omit this.

Returns:

  1. nil

cm:add_blood_marker(
  string
id,
  string
info key,
  number
x,
  number
y,
  number
radius,
  
string faction key,
  string
subculture key,
  string
tooltip key
)

Add an interactable campaign blood marker to the campaign map at a specified logical position. A radius around the marker is specified. As matching campaign characters enter or leave this radius then AreaEntered/AreaExited events will be triggered.

Parameters:

1

string

Unique marker id.

2

string

Marker info key, from the campaign_interactable_marker_infos database table.

3

number

Logical position x.

4

number

Logical position y.

5

number

Radius.

6

string

Faction key, from the factions database table. A blank string can be provided to not filter by faction.

7

string

Subculture key from the subcultures database table.

8

string

Tooltip key, in the full [table]_[field]_[key] localisation format.

Returns:

  1. nil

cm:remove_interactable_campaign_marker(string unique id)

Removes an interactable campaign marker that was previously added with cm:add_interactable_campaign_marker, by unique id.

Parameters:

1

string

unique id

Returns:

  1. nil

cm:add_vfx(string vfx id, string vfx, number x, number y, number height)

Adds a vfx of a specified type at a specified display position. VFX are distinct from markers in that they are generally 3D graphical effects.

Parameters:

1

string

Unique id for this vfx, by which it may later be removed with cm:remove_vfx.

2

string

VFX type. This must be an entry from the vfx_event field of the campaign_vfx_lookups table.

3

number

x display position.

4

number

y display position.

5

number

height above water plane.

Returns:

  1. nil

cm:remove_vfx(string vfx id)

Removes a vfx previously added with cm:add_vfx, by vfx id.

Parameters:

1

string

vfx id

Returns:

  1. nil

cm:add_character_vfx(
  
number character cqi,
  string
vfx,
  boolean
show in shroud,
  boolean
show in fow,
  boolean
show on quad map
)

Adds a vfx to a specified character.

Parameters:

1

number

Command queue index of the character.

2

string

VFX type. This must be an entry from the vfx_event field of the campaign_vfx_lookups table.

3

boolean

Show this vfx even when the character is under the shroud.

4

boolean

Show this vfx even when the character is under fog of war.

5

boolean

Show this vfx even when the camera zoom level is on the quad map only rendering.

Returns:

  1. nil

cm:remove_character_vfx(number character cqi, string vfx)

Removes a vfx from a specified character.

Parameters:

1

number

Command queue index of the character.

2

string

VFX type. This must be an entry from the vfx_event field of the campaign_vfx_lookups table.

Returns:

  1. nil

cm:add_garrison_residence_vfx(
  
number garrison residence cqi,
  string
vfx,
  boolean
show in shroud,
  boolean
show in fow,
  boolean
show on quad map
)

Adds a vfx to a specified garrison residence/settlement.

Parameters:

1

number

Command queue index of the garrison residence.

2

string

VFX type. This must be an entry from the vfx_event field of the campaign_vfx_lookups table.

3

boolean

Show this vfx even when the garrison residence is under the shroud.

4

boolean

Show this vfx even when the garrison residence is under fog of war.

5

boolean

Show this vfx even when the camera zoom level is on the quad map only rendering.

Returns:

  1. nil

cm:remove_garrison_residence_vfx(number character cqi, string vfx)

Removes a vfx from a specified character.

Parameters:

1

number

Command queue index of the character.

2

string

VFX type. This must be an entry from the vfx_event field of the campaign_vfx_lookups table.

Returns:

  1. nil

cm:add_scripted_composite_scene_to_logical_position(
  
string name,
  string
composite scene,
  number
x,
  number
x,
  number
facing x,
  number
facing y,
  boolean
one shot,
  boolean
show in seen shroud,
  boolean
show in unseen shroud
)

Adds a composite scene at a specified logical position.

Parameters:

1

string

Unique name for this composite scene, by which it may later be removed with cm:remove_scripted_composite_scene.

2

string

Composite scene key from the campaign_composite_scenes table.

3

number

Logical x co-ordinate.

4

number

Logical y co-ordinate.

5

number

Logical x co-ordinate of a position this composite scene faces.

6

number

Logical y co-ordinate of a position this composite scene faces.

7

boolean

One shot - if set to true, this composite scene is not added to the internal list of scenes and can't later be removed with cm:remove_scripted_composite_scene. However, the name of one-shot scenes does not have to be unique.

8

boolean

Sets whether this composite scene should be drawn when in thin shroud over previously-seen terrain.

9

boolean

Sets whether this composite scene should be drawn when in thick shroud over unseen terrain.

Returns:

  1. boolean action successful

cm:add_scripted_composite_scene_to_settlement(
  
string name,
  string
composite scene,
  string
settlement key,
  number
facing x,
  number
facing y,
  boolean
one shot,
  boolean
show in seen shroud,
  boolean
show in unseen shroud
)

Adds a composite scene to a specified settlement.

Parameters:

1

string

Unique name for this composite scene, by which it may later be removed with cm:remove_scripted_composite_scene.

2

string

Composite scene key from the campaign_composite_scenes table.

3

string

Key of settlement to add the scene to, from the campaign_map_settlements table.

4

number

Logical x co-ordinate of a position this composite scene faces.

5

number

Logical y co-ordinate of a position this composite scene faces.

6

boolean

One shot - if set to true, this composite scene is not added to the internal list of scenes and can't later be removed with cm:remove_scripted_composite_scene. However, the name of one-shot scenes does not have to be unique.

7

boolean

Sets whether this composite scene should be drawn when in thin shroud over previously-seen terrain.

8

boolean

Sets whether this composite scene should be drawn when in thick shroud over unseen terrain.

Returns:

  1. boolean action successful

cm:add_scripted_composite_scene_to_settlement_port(
  
string name,
  string
composite scene,
  string
settlement key,
  number
facing x,
  number
facing y,
  boolean
one shot,
  boolean
show in seen shroud,
  boolean
show in unseen shroud
)

Adds a composite scene to the port slot of a specified settlement.

Parameters:

1

string

Unique name for this composite scene, by which it may later be removed with cm:remove_scripted_composite_scene.

2

string

Composite scene key from the campaign_composite_scenes table.

3

string

Key of settlement to add the scene to, from the campaign_map_settlements table.

4

number

Logical x co-ordinate of a position this composite scene faces.

5

number

Logical y co-ordinate of a position this composite scene faces.

6

boolean

One shot - if set to true, this composite scene is not added to the internal list of scenes and can't later be removed with cm:remove_scripted_composite_scene. However, the name of one-shot scenes does not have to be unique.

7

boolean

Sets whether this composite scene should be drawn when in thin shroud over previously-seen terrain.

8

boolean

Sets whether this composite scene should be drawn when in thick shroud over unseen terrain.

Returns:

  1. boolean action successful

cm:remove_scripted_composite_scene(string name)

Removes a composite scene previously added by script, by the unique name given.

Parameters:

1

string

name

Returns:

  1. nil

cm:has_scripted_composite_scene(string name)

Returns whether a composite scene with the specified name is currently active.

Parameters:

1

string

name

Returns:

  1. boolean scene is active
Back to top

Shroud

The shroud is the fog of war covering areas on the campaign map that have yet to be seen. The shroud on a region - the area surrounding and associated with a settlement - may be either covered, seen or visible.

  • Covered regions are shown with thick shroud which obscures land features, settlements and characters.
  • Seen regions are shown with thin shroud through which settlements and land features are shown, but not characters.
  • Visible regions are fully displayed.

The following functions allow some manipulation of the shroud. In all cases, the shroud is recalculated during the end-turn sequence, so modifications to the shroud are lost and have to re-applied at the start of the round or player's turn.

cm:show_shroud(boolean show)

Enables or disables the shroud.

Parameters:

1

boolean

show

Returns:

  1. nil

cm:take_shroud_snapshot(boolean save snapshot)

Caches the state of the shroud across the map, so that it may later be recalled with cm:restore_shroud_from_snapshot.

Parameters:

1

boolean

Saves the snapshot in to the savegame, so that it is restored when the game is reloaded.

Returns:

  1. nil

cm:restore_shroud_from_snapshot()

Restores the state of the shroud across the map after it has been cached with cm:take_shroud_snapshot.

Returns:

  1. nil

cm:reset_shroud_visibility(string faction key)

Resets the shroud to default for the specified faction, removing any per-faction customisations that have been added with other commands in this section.

Parameters:

1

string

Faction key, from the factions database table.

Returns:

  1. nil

cm:make_neighbouring_regions_visible_in_shroud()

Makes all neighbouring regions visible in the shroud, for all factions. This effect will persist until the next round.

Returns:

  1. nil

cm:make_neighbouring_regions_seen_in_shroud()

Makes all neighbouring regions seen in the shroud, for all factions. This effect will persist until the next round.

Returns:

  1. nil

cm:make_region_visible_in_shroud(string faction key, string region key)

Removes the shroud from a specified land region for a specific faction. The region specified must be a land region.

Parameters:

1

string

Faction key, from the factions table.

2

string

Region key, from the campaign_map_regions table.

Returns:

  1. nil

cm:make_region_seen_in_shroud(string faction key, string region key)

Sets the shroud state of a specified land region to seen, for a specific faction. The region specified must be a land region.

Parameters:

1

string

Faction key, from the factions table.

2

string

Region key, from the campaign_map_regions table.

Returns:

  1. nil

cm:is_region_seen_in_shroud(string faction key, string region key)

Returns whether the specified land region is marked as seen in the shroud for a particular faction.

Parameters:

1

string

Faction key, from the factions table.

2

string

Region key, from the campaign_map_regions table.

Returns:

  1. boolean is region seen

cm:make_sea_region_visible_in_shroud(string region key)

Removes the shroud from a specified sea region for all factions.

Parameters:

1

string

Region key, from the campaign_map_regions table.

Returns:

  1. nil

cm:make_sea_region_seen_in_shroud(string region key)

Sets the shroud state of a specified sea region for all factions to seen. The specified region must be a sea region.

Parameters:

1

string

Region key, from the campaign_map_regions table.

Returns:

  1. nil

cm:disable_movement_for_ai_under_shroud(string player faction key, string ai faction key)

Removes all action points for characters from the specified target faction if they are hidden under the shroud of the specified player faction. This is a one-time action, and should be called each turn if it's desired that AI movement for a faction be stopped until 'discovered' by the player.

Parameters:

1

string

player faction key

2

string

ai faction key

Returns:

  1. nil

cm:disable_shopping_for_ai_under_shroud(boolean should disable)

Prevents all factions hidden under the shroud from constructing or repairing buildings. Unlike other functions documented here this is a game-wide toggle and does not need to be set each turn. This should only be used in a singleplayer game.

Parameters:

1

boolean

should disable

Returns:

  1. nil
Back to top

Character and Military Force Creation

cm:create_force(
  
string faction key,
  string
unit list,
  string
region key,
  number
x,
  number
y,
  string
id,
  boolean
exclude unique characters
)

Creates an army or a navy at the specified position, belonging to the specified faction, with the specified list of units. If the faction doesn't exist on the campaign map then it will also be created.
Note that this function is automatically wrapped by campaign_manager:create_force, which requires a slightly different set of arguments. Unless this function is called directly on the game interface the campaign_manager wrapper function will be called, so preferentially refer to the documentation for that function instead of this.

Parameters:

1

string

Faction key from the factions table.

2

string

Unit list. This should be a comma-separated list of unit keys from the main_units table.

3

string

Region in which the force is created, from the campaign_map_regions table.

4

number

Logical x co-ordinate.

5

number

Logical y co-ordinate.

6

string

ID of force. A ScriptedForceCreated event is triggered once the military force is created, and this ID is included in the context of the event so that listening scripts can differentiate between multiple created forces.

7

boolean

Prevent this force from having a unique character appointed as its general.

Returns:

  1. nil

cm:create_force_with_general(
  
string faction key,
  string
unit list,
  string
region key,
  number
x,
  number
y,
  string
character type,
  string
character subtype,
  string
forename,
  string
clanname,
  string
surname,
  string
other name,
  string
id,
  boolean
make faction leader
)

Creates an army or a navy commanded by a specified character at the specified position, belonging to the specified faction, with the specified list of units. If the faction doesn't exist on the campaign map then it will also be created.
Note that this function is automatically wrapped by campaign_manager:create_force_with_general, which requires a slightly different set of arguments. Unless this function is called directly on the game interface the campaign_manager wrapper function will be called, so preferentially refer to the documentation for that function instead of this.

Parameters:

1

string

Faction key from the factions table.

2

string

Unit list. This should be a comma-separated list of unit keys from the main_units table.

3

string

Region in which the force is created, from the campaign_map_regions table.

4

number

Logical x co-ordinate.

5

number

Logical y co-ordinate.

6

string

Character type key, from the agents table.

7

string

Character subtype key, from the agent_subtypes table.

8

string

Forename id. This should be a value from the id field of the names table.

9

string

Clan name id. This should be a value from the id field of the names table. This can be used to grant a title such as "Admiral" or "Emperor". A blank string may be supplied to omit this.

10

string

Surname id. This should be a value from the id field of the names table. A blank string may be supplied to omit this.

11

string

Other name id. This should be a value from the id field of the names table. This is currently unused and should be set to a blank string.

12

string

ID of force. A ScriptedForceCreated event is triggered once the military force is created, and this ID is included in the context of the event so that listening scripts can differentiate between multiple created forces.

13

boolean

Make this character the faction leader.

Returns:

  1. nil

cm:create_force_with_existing_general(
  
string character lookup,
  string
faction key,
  string
unit list,
  string
region key,
  number
x,
  number
y,
  string
id
)

Creates an army or a navy commanded by a specified existing character at the specified position, belonging to the specified faction, with the specified list of units.
Note that this function is automatically wrapped by campaign_manager:create_force_with_existing_general, which requires a slightly different set of arguments. Unless this function is called directly on the game interface the campaign_manager wrapper function will be called, so preferentially refer to the documentation for that function instead of this.

Parameters:

1

string

Character lookup string specifying the character to appoint as force commander. See Character Lookups for more information.

2

string

Faction key from the factions table.

3

string

Unit list. This should be a comma-separated list of unit keys from the main_units table.

4

string

Region in which the force is created, from the campaign_map_regions table.

5

number

Logical x co-ordinate.

6

number

Logical y co-ordinate.

7

string

ID of force. A ScriptedForceCreated event is triggered once the military force is created, and this ID is included in the context of the event so that listening scripts can differentiate between multiple created forces.

Returns:

  1. nil

cm:create_force_from_family_member(
  
number family member cqi,
  string
faction key,
  string
unit list,
  string
region key,
  number
x,
  number
y,
  string
id
)

Creates an army or a navy, commanded by a specific character, specified by their family_member cqi value. This allows a character who is in the game but not present on the campaign map (e.g. they may be in the character pool, or they may have previously died) to be spawned and appointed as the commander of a new military force.
Note that this function is automatically wrapped by campaign_manager:create_force_from_family_member, which requires a slightly different set of arguments. Unless this function is called directly on the game interface the campaign_manager wrapper function will be called, so preferentially refer to the documentation for that function instead of this.

Parameters:

1

number

Command-queue index value of the family_member script interface associated with the character.

2

string

Faction key from the factions table.

3

string

Unit list. This should be a comma-separated list of unit keys from the main_units table.

4

string

Region in which the force is created, from the campaign_map_regions table.

5

number

Logical x co-ordinate.

6

number

Logical y co-ordinate.

7

string

ID of force. A ScriptedForceCreated event is triggered once the military force is created, and this ID is included in the context of the event so that listening scripts can differentiate between multiple created forces.

Returns:

  1. nil

cm:create_force_with_full_diplomatic_discovery(
  
string faction key,
  string
unit list,
  string
region key,
  number
x,
  number
y,
  string
id,
  boolean
exclude unique characters
)

Creates an army or a navy commanded by a specified existing character at the specified position, belonging to the specified faction, with the specified list of units.
This command is distinct from cm:create_force in that it forces factions who can see the created force to be diplomatically aware of the force's faction.
Note that this function is automatically wrapped by campaign_manager:create_force_with_full_diplomatic_discovery, which requires a slightly different set of arguments. Unless this function is called directly on the game interface the campaign_manager wrapper function will be called, so preferentially refer to the documentation for that function instead of this.

Parameters:

1

string

Faction key from the factions table.

2

string

Unit list. This should be a comma-separated list of unit keys from the main_units table.

3

string

Region in which the force is created, from the campaign_map_regions table.

4

number

Logical x co-ordinate.

5

number

Logical y co-ordinate.

6

string

ID of force. A ScriptedForceCreated event is triggered once the military force is created, and this ID is included in the context of the event so that listening scripts can differentiate between multiple created forces.

7

boolean

Prevent this force from having a unique character appointed as its general.

Returns:

  1. nil

cm:create_force_with_budget(
  
string faction key,
  string
region key,
  number
budget,
  number
unit count,
  boolean
attacking,
  number
x,
  number
y,
  string
id
)

Creates an army or a navy at the specified position, belonging to the specified faction, with units chosen based on the specified budget.
Note that this function is automatically wrapped by campaign_manager:create_force_with_budget, which requires a slightly different set of arguments. Unless this function is called directly on the game interface the campaign_manager wrapper function will be called, so preferentially refer to the documentation for that function instead of this.

Parameters:

1

string

Faction key from the factions table.

2

string

Region in which the force is created, from the campaign_map_regions table.

3

number

Budget for generating an army with.

4

number

Number of units to generate for the army.

5

boolean

Is the force on the attacking side.

6

number

Logical x co-ordinate.

7

number

Logical y co-ordinate.

8

string

ID of force. A ScriptedForceCreated event is triggered once the military force is created, and this ID is included in the context of the event so that listening scripts can differentiate between multiple created forces.

Returns:

  1. nil

cm:create_agent(string faction key, string agent type, string agent subtype, number x, number y, string id)

Create an agent/hero character at a specified position.

Parameters:

1

string

Faction key from the factions table.

2

string

Agent type from the agents table.

3

string

Agent subtype from the agent_subtypes table.

4

number

Logical x co-ordinate.

5

number

Logical y co-ordinate.

6

string

ID of agent. A ScriptedAgentCreated event is triggered once the character is created, and this ID is included in the context of the event so that listening scripts can differentiate between multiple created agents.

Returns:

  1. nil

cm:spawn_unique_agent(number faction cqi, string agent key, boolean force)

Creates a unique agent.

Parameters:

1

number

Faction cqi.

2

string

Agent record key, from the unique_agents table.

3

boolean

Force agent to spawn even if invalid.

Returns:

  1. nil

cm:spawn_unique_agent_at_region(number faction cqi, string agent key, number region cqi, boolean force)

Creates a unique agent in a specified region.

Parameters:

1

number

Faction cqi.

2

string

Agent record key, from the unique_agents table.

3

number

The cqi of the target region.

4

boolean

Force agent to spawn even if invalid.

Returns:

  1. nil

cm:spawn_unique_agent_at_character(
  
number faction cqi,
  string
agent key,
  number
character cqi,
  boolean
force
)

Creates a unique agent at or near the position of a specified character.

Parameters:

1

number

Faction cqi.

2

string

Agent record key, from the unique_agents table.

3

number

The cqi of the target character.

4

boolean

Force agent to spawn even if invalid.

Returns:

  1. nil

cm:spawn_character_to_pool(
  
string faction,
  string
forename,
  string
surname,
  string
clanname,
  string
othername,
  number
age,
  boolean
male,
  string
agent key,
  string
agent subtype key,
  boolean
immortal,
  string
art set
)

Spawns a new character in the specified faction's recruitment pool.

Parameters:

1

string

Faction key, from the factions table.

2

string

Forename key. This should be a value from the id field of the names table.

3

string

Surname key. This should be a value from the id field of the names table. A blank string may be supplied to omit this.

4

string

Clan name key. This should be a value from the id field of the names table. This can be used to grant a title such as "Admiral" or "Emperor". A blank string may be supplied to omit this.

5

string

Other name key. This should be a value from the id field of the names table. This is currently unused and should be set to a blank string.

6

number

Age of character.

7

boolean

Set this character to be male or female.

8

string

Agent record key, from the agents table.

9

string

Agent subtype key, from the agent_subtypes table.

10

boolean

Sets whether this character is immortal.

11

string

Art set override id, from the campaign_character_art_sets table. A blank string may be supplied to omit this.

Returns:

  1. nil

cm:spawn_character_into_family_tree(
  
string faction,
  string
forename,
  string
surname,
  string
clanname,
  string
othername,
  number
age,
  boolean
male,
  string
father,
  string
mother,
  boolean
immortal,
  string
art set,
  boolean
make heir
)

Spawns a new character into a position in the family tree of the specified faction.

Parameters:

1

string

Faction key, from the factions table.

2

string

Forename key. This should be a value from the id field of the names table.

3

string

Surname key. This should be a value from the id field of the names table. A blank string may be supplied to omit this.

4

string

Clan name key. This should be a value from the id field of the names table. This can be used to grant a title such as "Admiral" or "Emperor". A blank string may be supplied to omit this.

5

string

Other name key. This should be a value from the id field of the names table. This is currently unused and should be set to a blank string.

6

number

Age of character.

7

boolean

Set this character to be male or female.

8

string

Character lookup string specifying the father of the spawned character. For more information see the documentation on Character Lookups.

9

string

Character lookup string specifying the mother of the spawned character. For more information see the documentation on Character Lookups.

10

boolean

Sets whether this character is immortal.

11

string

Art set override id, from the campaign_character_art_sets table. A blank string may be supplied to omit this.

12

boolean

Make this character the faction heir.

Returns:

  1. nil

cm:respawn_character_to_pool_from_family_member(faction faction, family_member family member)

Respawns a character that exists in the game as a family member in to their faction's recruitment pool. This allows dead characters to be resurrected.

Parameters:

1

faction

Faction to which the character belongs.

2

family_member

family member interface associated with the character.

Returns:

  1. boolean character was successfully respawned

cm:respawn_convalescing_agent(string faction key, number x, number y, string character lookup)

Respawns an immortal agent that has been wounded.

Parameters:

1

string

Faction key of the faction to which the agent is to belong.

2

number

x logical co-ordinate of agent.

3

number

y logical co-ordinate of agent.

4

string

Character lookup string - see Character Lookups for more information.

Returns:

  1. nil

cm:spawn_rogue_army(string faction key, number x, number y)

Spawn a rogue army, will fail if the rogue army is alive or is flagged to naturally spawn.

Parameters:

1

string

Faction key, from the factions table.

2

number

X coordinate on the campaign map.

3

number

Y coordinate on the campaign map.

Returns:

  1. nil

cm:find_valid_spawn_location_for_character_from_settlement(
  
string faction key,
  string
region key,
  boolean
on sea,
  boolean
in same region,
  [number
preferred spawn distance]
)

Utilises the pathfinder to locate and return a valid spawn point for a character, based around a settlement. Returns -1, -1 if invalid.

Parameters:

1

string

Faction key, from the factions table.

2

string

Region key of settlement, from the campaign_map_regions table.

3

boolean

Specifies whether the position should be on the sea.

4

boolean

Specifies whether the spawn location should be in the same region as the specified settlement.

5

number

optional, default value=0

Specifies the distance at which the character should spawn.

Returns:

  1. logical x co-ordinate
  2. logical y co-ordinate

cm:find_valid_spawn_location_for_character_from_position(
  
string faction key,
  number
x,
  number
y,
  boolean
in same region,
  [number
preferred distance]
)

Utilises the pathfinder to locate and return a valid spawn point for a character, based around a position. Returns -1, -1 if invalid.

Parameters:

1

string

Faction key, from the factions table.

2

number

Logical x co-ordinate of position around which to search.

3

number

Logical y co-ordinate of position around which to search.

4

boolean

Specifies whether the spawn location should be in the same region as the specified position.

5

number

optional, default value=0

Preferred spawn distance, in logical hexes.

Returns:

  1. logical x co-ordinate
  2. logical y co-ordinate

cm:find_valid_spawn_location_for_character_from_character(
  
string faction key,
  string
character lookup,
  boolean
in same region,
  [number
preferred distance]
)

Utilises the pathfinder to locate and return a valid logical spawn point for a character, based around another character. Returns -1, -1 if invalid.

Parameters:

1

string

Faction key, from the factions table.

2

string

Character lookup string of subject character. For more information see the documentation on Character Lookups.

3

boolean

Specifies whether the spawn location should be in the same region as the specified character.

4

number

optional, default value=0

Preferred spawn distance, in logical hexes.

Returns:

  1. logical x co-ordinate
  2. logical y co-ordinate

cm:appoint_character_to_most_expensive_force(string character lookup)

Appoints the specified character to the command of the most expensive military force in their faction.

Parameters:

1

string

Character lookup string of subject character. For more information see the documentation on Character Lookups.

Returns:

  1. nil

cm:appoint_character_to_force(string character lookup, number military force cqi)

Appoints the specified character to the command of the specified military force.

Parameters:

1

string

Character lookup string of subject character. For more information see the documentation on Character Lookups.

2

number

Command-queue index of target military force.

Returns:

  1. nil

cm:lock_starting_general_recruitment(string startpos id, string faction key)

Locks recruitment of a starting general, preventing them from being created from the recruitment pool. This also works for characters that are convalescing. The character must be specified by startpos id.

Parameters:

1

string

Startpos id of the target character. This is looked up from the ID field of the start_pos_characters table. This function cannot be used to lock recruitment of a character not present in the startpos data.

2

string

Faction key of the character, from the factions table.

Returns:

  1. nil

cm:unlock_starting_general_recruitment(string startpos id, string faction key)

Unlocks recruitment of a starting general, allowing them to be recruited. This also works for characters that are convalescing. The character must be specified by startpos id.

Parameters:

1

string

Startpos id of the target character. This is looked up from the ID field of the start_pos_characters table. This function cannot be used to unlock recruitment of a character not present in the startpos data.

2

string

Faction key of the character, from the factions table.

Returns:

  1. nil
Back to top

Character and Force Manipulation

The functions in this section all give order or manipulate the state of characters in the game. They make extensive use of Character Lookups.

cm:add_agent_experience(string character lookup, number points)

Adds experience points to a specified character.

Parameters:

1

string

Character lookup string. For more information, see Character Lookups.

2

number

Experience points to award.

Returns:

  1. nil

cm:add_agent_experience_through_family_member(family_member family member, number points)

Adds experience points to a character specified by its family member script interface.

Parameters:

1

family_member

Persistent family_member interface.

2

number

Experience points to award.

Returns:

  1. nil

cm:add_experience_to_units_commanded_by_character(string character lookup, number level)

Increases the experience of all units commanded by a specified character, by a specified level.

Parameters:

1

string

Character lookup string. For more information, see Character Lookups.

2

number

Level to increase experience of units by.

Returns:

  1. nil

cm:add_experience_to_unit(number unit_cqi, number level)

Increase the experience of the given unit, by a specified level.

Parameters:

1

number

The cqi of the unit

2

number

Level to increase experience of unit by.

Returns:

  1. nil

cm:set_character_experience_disabled(boolean disable)

Disables or re-enables characters gaining experience across the whole campaign. This restriction is saved into the savegame, so only needs to be set once.

Parameters:

1

boolean

Disable experience. Set to false to re-enable.

Returns:

  1. nil

cm:grant_unit_to_character(string character lookup, boolean is_garrison, string unit key, number count)

Create and add a specifiec unit to a military force commanded by a specified character. The unit will only be created if there is room for it in the force.

Parameters:

1

string

Character lookup string. For more information, see Character Lookups.

2

boolean

Are the units for a garrison army. Set to false to grant to normal army.

3

string

Key of unit to create, from the main_units table.

4

number

[Optional] Number of untis to be added

Returns:

  1. nil

cm:grant_unit_to_character_above_limit(string character lookup, string unit key, number count)

Create and add a unit (specified by the unit key) to a character's army. The unit will be created even if their is no room for the unit in the force. Returns a table with the new units cqis'.

Parameters:

1

string

Character lookup string. For more information, see Character Lookups.

2

string

Key of unit to create, from the main_units table.

3

number

Number of untis to be added

Returns:

  1. table CQIs of the created units

cm:remove_unit_by_cqi(number cqi)

Destroy the unit with the specified cqi.

Parameters:

1

number

The cqi of the unit that should be destroyed

Returns:

  1. nil

cm:attack(string attacker, string defender, boolean lay siege)

Orders the specified character to attack a target character.
This function is wrapped by campaign_manager:attack, which performs certain pre-call checks to ensure that the command will succeed. The function may be called directly on the game_interface to bypass these.

Parameters:

1

string

Attacker character string - see Character Lookups.

2

string

Defender character string - see Character Lookups.

3

boolean

Instructs the attacker to lay siege to the garrison of the target character.

Returns:

  1. boolean command succeeded

cm:attack_queued(string attacker, string defender, boolean lay siege)

Orders the specified character to attack a target character with a queued action.
This function is wrapped by campaign_manager:attack_queued, which performs certain pre-call checks to ensure that the command will succeed. The function may be called directly on the game_interface to bypass these.

Parameters:

1

string

Attacker character string - see Character Lookups.

2

string

Defender character string - see Character Lookups.

3

boolean

Instructs the attacker to lay siege to the garrison of the target character.

Returns:

  1. boolean command succeeded

cm:attack_region(string attacker, string region name, [boolean should_attack_immediately])

Orders the specified character to initiate an attack on the settlement in a target region. If the character cannot initiate a battle (for example he or she currently has no method to defeat the fortifications) then nothing will happen.
This function is wrapped by campaign_manager:attack_region, which performs certain pre-call checks to ensure that the command will succeed. The function may be called directly on the game_interface to bypass these.

Parameters:

1

string

Attacker character string - see Character Lookups.

2

string

Target region name, from the campaign_map_regions database table.

3

boolean

optional, default value=true

Specify if the command should besiege the settlement or start the battle immediately.

Returns:

  1. boolean command succeeded

cm:attack_garrison_by_cqi(string attacker, number garrison cqi)

Orders the specified character to initiate an attack on a garrison residence, specified by cqi.
This function is wrapped by campaign_manager:attack_garrison_by_cqi, which performs certain pre-call checks to ensure that the command will succeed. The function may be called directly on the game_interface to bypass these.

Parameters:

1

string

Attacker character string - see Character Lookups.

2

number

Garrison residence cqi.

Returns:

  1. boolean command succeeded

cm:seek_exchange(string character lookup, string target character lookup, boolean show ui)

Orders one character to seek a unit exchange with a target character, allowing troops to be swapped between the two armies they command.
This function is wrapped by campaign_manager:seek_exchange, which performs certain pre-call checks to ensure that the command will succeed. The function may be called directly on the game_interface to bypass these.

Parameters:

1

string

Character lookup string. For more information, see Character Lookups.

2

string

Target character lookup string. For more information, see Character Lookups.

3

boolean

Shows the seek exchange UI.

Returns:

  1. boolean command succeeded

cm:move_to(string character lookup, number x, number y)

Orders the specified character to move to a specified logical position.
This function is wrapped by campaign_manager:move_to, which performs certain pre-call checks to ensure that the command will succeed. The function may be called directly on the game_interface to bypass these.

Parameters:

1

string

Character lookup string. For more information, see Character Lookups.

2

number

Logical x co-ordinate of target position.

3

number

Logical y co-ordinate of target position.

Returns:

  1. boolean command succeeded

cm:move_to_queued(string character lookup, number x, number y)

Orders the specified character to move to a specified logical position with a queued action.
This function is wrapped by campaign_manager:move_to_queued, which performs certain pre-call checks to ensure that the command will succeed. The function may be called directly on the game_interface to bypass these.

Parameters:

1

string

Character lookup string. For more information, see Character Lookups.

2

number

Logical x co-ordinate of target position.

3

number

Logical y co-ordinate of target position.

Returns:

  1. boolean command succeeded

cm:teleport_to(string character lookup, number x, number y)

Orders the specified character to immediately teleport to a specified logical position.
This function is wrapped by campaign_manager:teleport_to, which performs certain pre-call checks to ensure that the command will succeed. The function may be called directly on the game_interface to bypass these.

Parameters:

1

string

Character lookup string. For more information, see Character Lookups.

2

number

Logical x co-ordinate of target position.

3

number

Logical y co-ordinate of target position.

Returns:

  1. boolean command succeeded

cm:join_garrison(string character lookup, string settlement)

Orders the specified character to move into a specified garrison residence. The garrison is specified by settlement key.
This function is wrapped by campaign_manager:join_garrison, which performs certain pre-call checks to ensure that the command will succeed. The function may be called directly on the game_interface to bypass these.

Parameters:

1

string

Character lookup string. For more information, see Character Lookups.

2

string

Key of settlement containing the garrison residence, from the campaign_map_settlements table.

Returns:

  1. boolean command succeeded

cm:leave_garrison(string character lookup, number x, number y)

Orders the specified garrisoned character to leave their garrison and move to a specified logical position.

Parameters:

1

string

Character lookup string. For more information, see Character Lookups.

2

number

Logical x co-ordinate of target position.

3

number

Logical y co-ordinate of target position.

Returns:

  1. nil

cm:cancel_actions_for(string character lookup)

Immediately cancels the current actions of a specified character.

Parameters:

1

string

Character lookup string. For more information, see Character Lookups.

Returns:

  1. nil

cm:replenish_action_points(string character lookup)

Replenishes the action points of a specified character.

Parameters:

1

string

Character lookup string. For more information, see Character Lookups.

Returns:

  1. nil

cm:zero_action_points(string character lookup)

Removes all action points from a specified character.

Parameters:

1

string

Character lookup string. For more information, see Character Lookups.

Returns:

  1. nil

cm:set_rank_to_max(string character lookup)

Asssigns the maximum possible rank to the character specified. The rank assigned is returned.

Parameters:

1

string

Character lookup string. For more information, see Character Lookups.

Returns:

  1. number rank assigned

cm:kill_character(string character lookup, boolean destroy force)

Kills a specified character, and optionally also the entire military force they command.

Parameters:

1

string

Character lookup string. For more information, see Character Lookups.

2

boolean

Destroy the character and the entire military force they command.

Returns:

  1. nil

cm:kill_character_and_commanded_unit(string character lookup, boolean destroy force)

Kills a specified character and their associated unit, and optionally also the entire military force they command.

Parameters:

1

string

Character lookup string. For more information, see Character Lookups.

2

boolean

Destroy the character and the entire military force they command.

Returns:

  1. nil

cm:kill_character_and_commanded_unit_with_dt(
  
string character lookup,
  boolean
destroy force,
  string
death type
)

Kills a specified character and their associated unit with a death type, and optionally also the entire military force they command.

Parameters:

1

string

Character lookup string. For more information, see Character Lookups.

2

boolean

Destroy the character and the entire military force they command.

3

string

Death type from the death_types table.

Returns:

  1. nil

cm:instantly_make_force_local_rebel(military_force military force script interface)

Force the specified army to become local rebels in their current region or destroy the army if for some reason a rebellion couldn't be started. This can lead to faction becoming dead due to losing its last army. The original general will be killed so an army of 1 unit will be destroyed and no rebellion will be spawned.

Parameters:

1

military_force

The script interface of the target military force.

Returns:

  1. nil

cm:destroy_military_force(number military force cqi)

Destroys a military force.

Parameters:

1

number

The command queue index (CQI) of the military force

Returns:

  1. nil

cm:wound_character(string character lookup, number convalescence time)

Wounds a specified character, forcing them to convalesce for a specified number of turns before they can be re-appointed.

Parameters:

1

string

Character lookup string. For more information, see Character Lookups.

2

number

Number of turns this character should convalesce for until they can be re-appointed.

Returns:

  1. nil

cm:retire_character(string character lookup)

Forces a character in to retirement, removing them from the campaign map.

Parameters:

1

string

Character lookup string. For more information, see Character Lookups.

Returns:

  1. nil

cm:character_forced_invisible(string character lookup, boolean invisibility)

Makes the character invisible or turns them back to visible.

Parameters:

1

string

Character lookup string. For more information, see Character Lookups.

2

boolean

invisibility

Returns:

  1. nil

cm:force_agent_action_success_for_human(boolean force success)

Force the local player's faction to succeed at all agent actions.

Parameters:

1

boolean

force success

Returns:

  1. nil

cm:force_character_force_into_stance(string character lookup, string stance key)

Forces the military force commanded by the specified character into the specified stance.

Parameters:

1

string

Character lookup string. For more information, see Character Lookups.

2

string

Stance key, from the campaign_stances table.

Returns:

  1. nil

cm:set_only_allow_basic_recruit_stance(boolean force basic recruitment stances)

Stops all military forces from entering non-default recruitment stances, such as raiding camp stance.

Parameters:

1

boolean

force basic recruitment stances

Returns:

  1. nil

cm:remove_unit_from_character(string character lookup, string unit key)

Remove the first instance of the specified unit from the force commanded by the specified character.

Parameters:

1

string

Character lookup string. For more information, see Character Lookups.

2

string

Key of unit to remove, from the main_units table.

Returns:

  1. nil

cm:set_character_immortality(string character lookup, boolean is immortal)

Sets whether the specified character can die or not.

Parameters:

1

string

Character lookup string. For more information, see Character Lookups.

2

boolean

is immortal

Returns:

  1. nil

cm:set_character_unique(string character lookup, boolean is unique)

Sets whether the specified character is unique or not. This affects several aspects about how the game might treat that character such as when they might be available to recruit.

Parameters:

1

string

Character lookup string. For more information, see Character Lookups.

2

boolean

is unique

Returns:

  1. nil

cm:add_attack_of_opportunity_overrides(string character lookup, boolean force attack)

Forces a specified character to always or never perform an attack of opportunity, meaning they will always/never intercept when they get the chance. Once in place, this override can be removed with cm:remove_attack_of_opportunity_overrides.

Parameters:

1

string

Character lookup string. For more information, see Character Lookups.

2

boolean

Force an attack - if set to true the target character will always intercept, if set to false the character will always decline to intercept.

Returns:

  1. nil

cm:remove_attack_of_opportunity_overrides(string character lookup)

Removes any attack of opportunity override previously placed on the target character with cm:add_attack_of_opportunity_overrides.

Parameters:

1

string

Character lookup string. For more information, see Character Lookups.

Returns:

  1. nil

cm:unit_belongs_to_unit_set(string unit key, string unit set key)

Checks if a unit belongs to a unit set.

Parameters:

1

string

The key of the unit from the main_units table.

2

string

The key of the unit set from the unit_sets table.

Returns:

  1. boolean true if the unit belongs to the unit set

cm:set_army_trespass_disabled(boolean should disable)

Globally disable or enable army trespassing penalties.

Parameters:

1

boolean

should disable

Returns:

  1. nil

cm:set_character_path_traversal_speed_multiplier(character character, number multiplier)

Sets a locomotion speed multiplier of a character.

Parameters:

1

character

Character interface.

2

number

Multiplier value.

Returns:

  1. nil

cm:clear_character_path_traversal_speed_multiplier(character character)

Clears a locomotion speed multiplier of a character previously set with cm:set_character_path_traversal_speed_multiplier.

Parameters:

1

character

Character interface.

Returns:

  1. nil

cm:set_forced_fastest_round_speed(boolean force fastest)

Force or un-force the fastest round speed during the end-turn sequence. This is largely equivalent to the player clicking the skip button on the end-turn controls, except that unlike the player clicking the button the setting won't be applied to other campaigns.

Parameters:

1

boolean

force fastest

Returns:

  1. nil

cm:force_normal_character_locomotion_speed_for_turn(boolean is_enabled)

Forces any characters visible to humans to move at normal speed during the current turn if parameter is set to true.

Parameters:

1

boolean

Is normal speed enabled

Returns:

  1. nil

cm:faction_apply_character_loyalty_change(
  
string faction key,
  string
trait key,
  number
loyalty change,
  number
threshold
)

Change the loyalty of all characters in the given faction, having a given trait (if not empty string), by a given value w/o crossing a given threshold (that should have the same sign as the loyalty change).

Parameters:

1

string

Faction key from the factions table.

2

string

Trait key from the character_traits table.

3

number

Loyalty change

4

number

[Optional] Threshhold

Returns:

  1. nil

cm:apply_character_loyalty_change(number character cqi, number loyalty change, number threshold)

Change the character's loyalty by a given amount w/o crossing a given threshold (that should have the same sign as the loyalty change).

Parameters:

1

number

Command-queue index of the target character.

2

number

Loyalty change

3

number

[Optional] Threshhold

Returns:

  1. nil

cm:get_character(string character lookup)

Get a character interface from a lookup string. For more information, see Character Lookups.

Parameters:

1

string

Lookup string for the character

Returns:

  1. character character

cm:activate_stance_to_force(boolean allow, string stance key, number military force cqi)

Allow or disallow a military force from using a certain stance.

Parameters:

1

boolean

Whether to allow or disallow a stance.

2

string

Stance key from table campaign_stances.

3

number

Command-queue index of the military force.

Returns:

  1. nil

cm:replenish_units(string character lookup, number factor)

Replenish units for the specified character.

Parameters:

1

string

Character lookup string

2

number

Amount of hp to replenish as a percentage. Valid values are from 0.0 to 1.0

Returns:

  1. nil

cm:set_unit_soldiers_or_hitpoints(unit unit, number hp)

Update the unit's hp to the specified value. Clamped between 0 and start_soldiers_or_hitpoints.

Parameters:

1

unit

The unit we wish to modify

2

number

The new hp of the unit. The value will be clamped between 0 and start_soldiers_or_hitpoints

Returns:

  1. nil

cm:damage_garrison_units(string region key, number damage amount)

Damages any units in the target garrison.

Parameters:

1

string

Region key from the table regions

2

number

Damage amount as a percantage.

Returns:

  1. nil

cm:force_character_to_leave(number character cqi)

Forces the character to leave it's faction.

Parameters:

1

number

Command-queue index for the character

Returns:

  1. nil

cm:set_character_scripted_time_to_leave(character character, number time to live)

Sets the supplied character's scripted time to leave to the supplied number. This is displayed on the army banner as well.

Parameters:

1

character

Character we wish to leave.

2

number

How many turns from now should the character leave.

Returns:

  1. nil

cm:set_custom_army_info_icon(
  
number military_force_cqi,
  string
icon_id,
  string
icon_path,
  string
tooltip_title_key,
  string
tooltip_desc_key,
  number
param1,
  number
param2,
  number
param3
)

Sets the icon path and the tooltip of a custom icon in the army name plate on the campaign map. If you want normal tooltip, specify an empty string for the tooltip_desc_key. Not saved, entirely managed by scripts.

Parameters:

1

number

CQI of the target military force,

2

string

Custom key needed for the system, user defined.

3

string

Supply the full path of the icon that you wish to use, Example: "ui/skins/default/sp_icon_centaur.png"

4

string

Localisation key for the title. This should be supplied in the full [table]_[field]_[key] localisation format, or can be a blank string.

5

string

Localisation key for the tooltip. This should be supplied in the full [table]_[field]_[key] localisation format, or can be a blank string.

6

number

[Optional] Number to be used for string formatting of the tooltip %1%.

7

number

[Optional] Number to be used for string formatting of the tooltip %2%.

8

number

[Optional] Number to be used for string formatting of the tooltip %3%.

Returns:

  1. nil

cm:set_custom_army_info_icon_visibility(number military_force_cqi, string icon_id, boolean visible)

Shows or hides a custom icon in the army name plate on the campaign map, that was previously added via cm:set_custom_army_info_icon.
Not saved, entirely managed by scripts.

Parameters:

1

number

military_force_cqi

2

string

icon_id

3

boolean

visible

Returns:

  1. nil

cm:force_build_siege_equipment(military_force military force)

Shuffles available siege items and builds all possible items in the shuffled order. Returns number of siege items constructed.

Parameters:

1

military_force

military force

Returns:

  1. number number of siege items constructed

cm:force_remove_siege_equipment(military_force force)

Clears construction queue and removes all constructed siege equipment from the specified military force.

Parameters:

1

military_force

force

Returns:

  1. nil

cm:send_character_to_duel(string character lookup, number convalescence time)

Send a character to duel. They will be removed from the map.

Parameters:

1

string

Character lookup string. For more information, see Character Lookups.

2

number

Convalescence time in turns.

Returns:

  1. nil

cm:reserve_unit_cap(string faction key, string unit key)

Reserve a unit in regard to a unit cap. This behaves as if the unit is existing in an army somewhere, meaning the faction won't be able to recruit a capped unit that it otherwise could.

Parameters:

1

string

Faction key, from the factions database table.

2

string

Unit key, from the main_units database table.

Returns:

  1. nil

cm:release_unit_cap(string faction key, string unit key)

Release a unit cap reservation previously made with cm:reserve_unit_cap. Exercise caution using this function, as it releases the unit cap without checking that a reservation was previously placed.

Parameters:

1

string

Faction key, from the factions database table.

2

string

Unit key, from the main_units database table.

Returns:

  1. nil

cm:change_unit_health(number unit cqi, number health change)

Change the health of the given unit by a given fraction. This can be a positive number to heal the unit or a negative number to damage the unit.

Parameters:

1

number

Command-queue index value for the specified unit.

2

number

Health change value.

Returns:

  1. nil

cm:add_unit_stat_bonuses(number unit cqi, string stat bonus, number bonus value)

Add stat bonuses to a specified unit.

Parameters:

1

number

Command-queue index value for the specified unit.

2

string

Unit statistics bonus key, from the campaign_unit_stat_bonuses database table.

3

number

Bonus value.

Returns:

  1. nil

cm:add_unit_no_muster_recruitment(string character lookup, string unit key, number turns)

Create and add a unit mid-recruitment to a character's army. The unit will only be created if there is room for the unit in the force. The recruitment is free, and it will be converted to a unit in the provided set of turns. The recruitment reserves a unit slot in the army.

Parameters:

1

string

Character lookup string. For more information, see Character Lookups.

2

string

Unit key, from the main_units database table.

3

number

Turns over which the recruitment should take place.

Returns:

  1. nil

cm:reassign_character_to_faction(string character lookup, string faction key)

Reassign a character to another faction. Not used in the retail game and thus not properly tested. Use with cauton!

Parameters:

1

string

Character lookup string. For more information, see Character Lookups.

2

string

Faction key, from the factions database table.

Returns:

  1. nil

cm:make_adopted_child(string child lookup, string parent lookup)

Make a parent adopt a child

Parameters:

1

string

Character lookup string. For more information, see Character Lookups.

2

string

Character lookup string. For more information, see Character Lookups.

Returns:

  1. nil

cm:appoint_character_as_faction_heir(string character lookup, [boolean apply cost])

Appoint a character as heir to their faction (scion), optionally skipping applying the respective cost.

Parameters:

1

string

Character lookup string. For more information, see Character Lookups.

2

boolean

optional, default value=true

Whether resource cost should be applied. Resource cost is defined in resource_costs table with record phar_map_appoint_faction_heir_cost

Returns:

  1. nil

cm:marry_characters(string character lookup, string character lookup)

Marry the two specified characters, optionally providing marriage type among arranged/diplomatic/political, with the first being the default. The two characters must be in the same faction for arranged marriage and in different factions for the other two marriages. For diplomatic marriage, the first character is given away to the other faction.

Parameters:

1

string

Character lookup string. For more information, see Character Lookups.

2

string

Character lookup string. For more information, see Character Lookups.

Returns:

  1. nil

cm:arrange_marriage_to_new_random_character(string character lookup, [boolean apply cost])

Create a spouse for the specified character and marry the 2 characters

Parameters:

1

string

Character lookup string. For more information, see Character Lookups.

2

boolean

optional, default value=true

Whether resource cost should be applied. Resource cost is defined in resource_costs table with record phar_map_arranged_marriage_to_a_commoner_cost

Returns:

  1. nil

cm:divorce_character(string character lookup)

Divorce the specified character from their spouse. The given character's faction is the instigator of the divorce.

Parameters:

1

string

Character lookup string. For more information, see Character Lookups.

Returns:

  1. nil
Back to top

Mercenary Pools

cm:add_units_to_faction_mercenary_pool(number faction cqi, string unit key, number count)

Adds one or more of a specified unit to the specified faction's mercenary pool.

Parameters:

1

number

CQI of the subject faction.

2

string

Unit key, from the main_units table.

3

number

Number of units to add.

Returns:

  1. nil

cm:num_units_in_faction_mercenary_pool(number faction cqi, string unit key)

Return count of a specified unit in the factions mercenary pool.

Parameters:

1

number

CQI of the subject faction.

2

string

Unit key, from the main_units database table.

Returns:

  1. number count, Number of units in the faction mercenary pool.

cm:add_units_to_province_mercenary_pool_by_region(string region key, string unit key, number count)

Adds one or more of a specified unit to the specified province mercenary pool. The province is specified by a region within it.

Parameters:

1

string

Region key of a region within the target province, from the campaign_map_regions table.

2

string

Unit key, from the main_units database table.

3

number

Number of units to add.

Returns:

  1. nil

cm:add_unit_to_faction_mercenary_pool(
  
faction faction,
  string
unit key,
  number
count,
  number
replenishment chance,
  number
max units,
  number
max per turn,
  number
xp level,
  [string
faction restricted record],
  [string
subculture restricted record],
  [string
tech restricted record]
)

Add a unit to the mercenary pool of the specified faction. The new unit(s) will replace any existing entry with the same unit record.

Parameters:

1

faction

Subject faction.

2

string

Unit key, from the main_units database table.

3

number

Number of units to add to the mercenary pool.

4

number

replenishment chance percentage.

5

number

The max number of units that can be in the pool.

6

number

The max number of units that can be replenished in the pool per turn.

7

number

The experience level of the units when recruited.

8

string

optional, default value=nil

Faction restricted record.

9

string

optional, default value=nil

Subculture restricted record.

10

string

optional, default value=nil

Technology restricted record.

Returns:

  1. nil

cm:add_unit_to_faction_mercenary_pool_with_cooldown(
  
faction faction,
  string
unit key,
  number
count,
  number
cooldown,
  number
max units,
  number
units recharged,
  number
xp level,
  [string
faction restricted record],
  [string
subculture restricted record],
  [string
tech restricted record]
)

Add a unit to the mercenary pool of the specified faction, with a cooldown based recharge. The new unit(s) will replace any existing entry with the same unit record.

Parameters:

1

faction

Subject faction.

2

string

Unit key, from the main_units database table.

3

number

Number of units to add to the mercenary pool.

4

number

How frequently (in turns) the unit replenishes.

5

number

The max number of units that can be in the pool.

6

number

The number of units recharged each time the cooldown finishes.

7

number

The experience level of the units when recruited.

8

string

optional, default value=nil

Faction restricted record.

9

string

optional, default value=nil

Subculture restricted record.

10

string

optional, default value=nil

Technology restricted record.

Returns:

  1. nil

cm:add_custom_unit_to_faction_mercenary_pool(
  
string faction key,
  custom_unit
custom unit,
  number
count,
  number
replenishment chance,
  number
max units,
  number
max per turn,
  number
xp level,
  [string
faction restricted record],
  [string
subculture restricted record],
  [string
tech restricted record]
)

Add a custom_unit to the mercenary pool of the specified faction. The new unit(s) will replace any existing entry with the same unit record.

Parameters:

1

string

Faction key, from the factions table.

2

custom_unit

Custom unit to add.

3

number

Number of units to add to the mercenary pool.

4

number

replenishment chance percentage.

5

number

The max number of units that can be in the pool.

6

number

The max number of units that can be replenished in the pool per turn.

7

number

The experience level of the units when recruited.

8

string

optional, default value=nil

Faction restricted record.

9

string

optional, default value=nil

Subculture restricted record.

10

string

optional, default value=nil

Technology restricted record.

Returns:

  1. nil

cm:remove_unit_from_faction_mercenary_pool(faction faction, string unit key, string custom id)

Removes a unit from the specified faction mercenary pool. A custom id key may be supplied to further specify the unit to remove.

Parameters:

1

faction

Subject faction.

2

string

Unit key, from the main_units database table.

3

string

Custom id of unit to remove. A blank string may be supplied to specify no custom id.

Returns:

  1. nil

cm:get_max_units_in_faction_mercenary_pool(number faction cqi, string unit key, string custom id)

Returns the maximum supported number there can be of a specified unit in the specified faction's mercenary pool.

Parameters:

1

number

Faction command-queue index value.

2

string

Unit key, from the main_units database table.

3

string

Custom id of unit to look for. A blank string may be supplied to specify no custom id.

Returns:

  1. nil

cm:add_unit_to_province_mercenary_pool(
  
region region,
  string
unit key,
  number
count,
  number
chance,
  number
max units,
  number
max per turn,
  number
xp level,
  [string
faction restricted record],
  [string
subculture restricted record],
  [string
tech restricted record]
)

Adds one or more of a specified unit to the specified province mercenary pool. The province is specified by a region within it.

Parameters:

1

region

Region within the subject province.

2

string

Unit key, from the main_units database table.

3

number

Number of units to add to the mercenary pool.

4

number

Replenishment chance percentage.

5

number

The max number of units that can be in the pool.

6

number

The max number of units that can be replenished in the pool per turn.

7

number

The experience level of the units when recruited.

8

string

optional, default value=nil

Faction restricted record.

9

string

optional, default value=nil

Subculture restricted record.

10

string

optional, default value=nil

Technology restricted record.

Returns:

  1. nil

cm:remove_unit_from_province_mercenary_pool(region region, string unit key, string custom id)

Removes a unit from the specified province mercenary pool. A custom id key may be supplied to further specify the unit to remove.

Parameters:

1

region

Region within the target province.

2

string

Key of unit to remove.

3

string

Custom id of unit to remove. A blank string may be supplied to specify no custom id.

Returns:

  1. nil
Back to top

Area Triggers

cm:add_circle_area_trigger(
  
number x,
  number
y,
  number
radius,
  string
trigger name,
  string
character lookup,
  boolean
trigger on enter,
  boolean
trigger on exit,
  boolean
trigger once
)

Establishes a circular area trigger monitor around a specified display position, with a specified character lookup string filter. This monitor will trigger an AreaEntered or AreaExited script event if a character that matches the specified filter moves through the specified circular area boundary.

Parameters:

1

number

x display co-ordinate.

2

number

y display co-ordinate.

3

number

Radius of circle.

4

string

Trigger name. Multiple trigger areas with the same name behave as a single trigger.

5

string

Character lookup string, specifying characters for which this trigger area will fire events. For more information, see Character Lookups.

6

boolean

Specifies whether an AreaEntered event is fired when a matching character enters the trigger area.

7

boolean

Specifies whether an AreaExited event is fired when a matching character exits the trigger area.

8

boolean

Specifies whether the trigger continues monitoring after it fires its first event.

Returns:

  1. nil

cm:add_outline_area_trigger(
  
string trigger name,
  string
character lookup,
  boolean
trigger on enter,
  boolean
trigger on exit,
  boolean
trigger once,
  ...
co-ordinates
)

Establishes a area trigger monitor around a specified display position, with a specified character lookup string filter. The shape of the trigger area is specified by a series of supplied points. This monitor will trigger an AreaEntered or AreaExited script event if a character that matches the specified filter moves through the specified circular area boundary.

Parameters:

1

string

Trigger name. Multiple trigger areas with the same name behave as a single trigger.

2

string

Character lookup string, specifying characters for which this trigger area will fire events. For more information, see Character Lookups.

3

boolean

Specifies whether an AreaEntered event is fired when a matching character enters the trigger area.

4

boolean

Specifies whether an AreaExited event is fired when a matching character exits the trigger area.

5

boolean

Specifies whether the trigger continues monitoring after it fires its first event.

6

...

Variable number of display co-ordinates, each supplied as an indexed table containing an x and y co-ordinate.

Returns:

  1. nil

Example:

cm:add_outline_area_trigger(
    "test_trigger",
    "character_cqi:123",
    true,
    false,
    true,
    true,
    {0, 0},
    {0, 100},
    {100, 100},
    {100, 0}
);

cm:remove_area_trigger(string trigger name)

Removes any area triggers established with the supplied name.

Parameters:

1

string

trigger name

Returns:

  1. nil
Back to top

Traits, Skills and Ancillaries

cm:force_add_trait(string character lookup, string trait key, [number trait points])

Grant the specified trait to the specified character. If the character already has the trait, a trait point will be added.

Parameters:

1

string

Character lookup string. For more information, see Character Lookups.

2

string

Trait key, from the character_traits table.

3

number

optional, default value=1

Number of trait points to add.

Returns:

  1. nil

cm:force_remove_trait(string character lookup, string trait key)

Removes the specified trait from the specified character. If the character is past the point of no return in the trait, it will be removed anyway.

Parameters:

1

string

Character lookup string. For more information, see Character Lookups.

2

string

Trait key, from the character_traits table.

Returns:

  1. nil

cm:force_remove_all_traits(string character lookup)

Remove all traits from the specified character. If the character is past the point of no return in a trait, it will be removed anyway.

Parameters:

1

string

Character lookup string. For more information, see Character Lookups.

Returns:

  1. nil

cm:get_antitrait_for_trait(string trait key)

Returns the antitrait of a specified trait, based on the data in the trait_to_antitrait database table.

Parameters:

1

string

Trait key, from the character_traits table.

Returns:

  1. string antitrait key

cm:set_ignore_immortality_by_trait(string character lookup, boolean ignore immortality by trait)

Sets the ignore_immortality_by_trait flag of a character. This is useful, in conjunction with cm:set_character_immortality, to kill a character for certain, ignoring their immortality state.

Parameters:

1

string

Character lookup string. For more information, see Character Lookups.

2

boolean

ignore immortality by trait

Returns:

  1. nil

cm:get_traits_from_trait_info_with_prefix(string prefix)

Returns a numerically-indexed table containing all traits keys from the character_traits database table starting with the supplied prefix.

Parameters:

1

string

prefix

Returns:

  1. table table of trait keys

cm:reset_not_received_traits_progress(string character lookup)

Resets the point progress of all traits that are not yet leveled up for a specified character.

Parameters:

1

string

Character lookup string. For more information, see Character Lookups.

Returns:

  1. nil

cm:force_add_ancillary(string character lookup, string ancillary key, [boolean suppress event message])

Grant the specified ancillary to the specified character.

Parameters:

1

string

Character lookup string. For more information, see Character Lookups.

2

string

Ancillary key, from the ancillaries table.

3

boolean

optional, default value=false

Whether to suppress the event message that the ancillary was added.

Returns:

  1. nil

cm:force_add_and_equip_ancillary(
  
string character lookup,
  string
ancillary key,
  [boolean
suppress event message]
)

Grant the specified ancillary to the specified character and equips it. If another ancillary is equipped in the relevant slot then that ancillary is unequipped.

Parameters:

1

string

Character lookup string. For more information, see Character Lookups.

2

string

Ancillary key, from the ancillaries table.

3

boolean

optional, default value=false

Whether to suppress the event message that the ancillary was added.

Returns:

  1. nil

cm:force_remove_ancillary(string character lookup, string ancillary key, boolean remove to pool)

Remove the specified ancilliary from the specified character.

Parameters:

1

string

Character lookup string. For more information, see Character Lookups.

2

string

Ancillary key, from the ancillaries table.

3

boolean

Removes the ancillary from the character but leaves it in the pool of available ancillaries.

Returns:

  1. nil

cm:force_remove_all_ancillaries_of_type(string character lookup, string ancillary type)

Remove all ancillaries of the specified type from the specified force.

Parameters:

1

string

Character lookup string. For more information, see Character Lookups.

2

string

Ancillary type key, from the ancillary_types table.

Returns:

  1. nil

cm:add_ancillary_to_faction(string faction key, string ancillary key, boolean display event)

Grants the specified ancillary to the specified faction. The ancillary goes into that faction's ancillary pool, from where it may be equipped by a character.

Parameters:

1

string

Faction key, from the factions table.

2

string

Ancillary key, from the ancillaries table.

3

boolean

Sets whether the associated event feed event should be displayed.

Returns:

  1. nil

cm:force_remove_ancillary_from_faction(
  
string faction key,
  string
ancillary key,
  [boolean
remove from characters]
)

Remove all instances of the specified ancillary from every character, and the shared ancillary pool, of the specified faction.

Parameters:

1

string

Faction key, from the factions table.

2

string

Ancillary key, from the ancillaries table.

3

boolean

optional, default value=true

Remove from all characters

Returns:

  1. nil

cm:get_ancillary_category(string ancillary key)

Returns the category of a supplied ancillary. The returned category will be a key from the ancillaries_categories database table.

Parameters:

1

string

Ancillary key, from the ancillaries table.

Returns:

  1. string ancillary category key

cm:force_add_skill(string character lookup, string skill key)

Grant the specified skill to the specified character, or adds a point if they already have it.

Parameters:

1

string

Character lookup string. For more information, see Character Lookups.

2

string

Skill key, from the character_skills table.

Returns:

  1. nil

cm:force_remove_skill(string character lookup, string skill key, boolean refund skill point)

Forcibly removes a skill from a character.

Parameters:

1

string

Character lookup string. For more information, see Character Lookups.

2

string

Skill key, from the character_skills table.

3

boolean

Whether to refund a skill point when the skill is successfully removed.

Returns:

  1. nil

cm:force_reset_skills(string character lookup)

Completely resets the skill points of the target character. Does not remove background skills.

Parameters:

1

string

Character lookup string. For more information, see Character Lookups.

Returns:

  1. nil

cm:set_non_scripted_traits_disabled(boolean disable)

Prevents or allows the application of traits by common.trait, which is intended to be the general-purpose trait-adding function. cm:force_add_trait will still work even with this restriction in place.

Parameters:

1

boolean

disable

Returns:

  1. nil

cm:set_non_scripted_ancillaries_disabled(boolean disable)

Prevents or allows the application of ancillaries by common.ancillary, which is intended to be the general-purpose ancillary-adding function. cm:force_add_ancillary will still work even with this restriction in place.

Parameters:

1

boolean

disable

Returns:

  1. nil

cm:add_trait_to_character_by_family_member(
  
number family member cqi,
  string
trait key,
  boolean
show message,
  [trait
points]
)

Grants the specified trait to a character specified by a family member. If character object doesn't exist, the trait is added to the persistent data of the character.

Parameters:

1

number

family member cqi

2

string

trait key

3

boolean

show message

4

trait

optional, default value=1

points

Returns:

  1. nil
Back to top

Object Renaming

cm:change_localised_faction_name(string faction key, string name key)

Changes the name of a faction. The new name is specified by full localised text key, in the [table]_[key]_[field] format.

Parameters:

1

string

Faction key, from the factions table.

2

string

Localised name key, in the [table]_[key]_[field] format.

Returns:

  1. nil

cm:change_custom_faction_name(string faction key, string name)

Changes the name of a faction. The new name is specified directly as a string.

Parameters:

1

string

Faction key, from the factions table.

2

string

New name for the faction.

Returns:

  1. nil

cm:change_custom_settlement_name(settlement settlement, string name key)

Changes the name of a settlement. The new name is specified by full localised text key, in the [table]_[key]_[field] format.

Parameters:

1

settlement

Settlement object - see the campaign model hierarchy documentation for more information about this interface.

2

string

Localised name key, in the [table]_[key]_[field] format.

Returns:

  1. nil

cm:change_localised_settlement_name(settlement settlement, string name)

Changes the name of a faction. The new name is specified directly as a string.

Parameters:

1

settlement

Settlement object - see the campaign model hierarchy documentation for more information about this interface.

2

string

New name for the faction.

Returns:

  1. nil

cm:change_custom_region_name(region region, string name key)

Changes the name of a region. The new name is specified by full localised text key, in the [table]_[key]_[field] format. Note that the region name is not currently used for display - see cm:change_custom_settlement_name instead.

Parameters:

1

region

Region object - see the campaign model hierarchy documentation for more information about this interface.

2

string

Localised name key, in the [table]_[key]_[field] format.

Returns:

  1. nil

cm:change_localised_region_name(region region, string name)

Changes the name of a region. The new name is specified directly as a string. Note that the region name is not currently used for display - see cm:change_localised_settlement_name instead.

Parameters:

1

region

Region object - see the campaign model hierarchy documentation for more information about this interface.

2

string

New name for the region.

Returns:

  1. nil

cm:change_custom_unit_name(unit unit, string name key)

Changes the name of a unit. The new name is specified by full localised text key, in the [table]_[key]_[field] format.

Parameters:

1

unit

Unit object - see the campaign model hierarchy documentation for more information about this interface.

2

string

Localised name key, in the [table]_[key]_[field] format.

Returns:

  1. nil

cm:change_localised_unit_name(unit unit, string name)

Changes the name of a unit. The new name is specified directly as a string.

Parameters:

1

unit

Unit object - see the campaign model hierarchy documentation for more information about this interface.

2

string

New name for the unit.

Returns:

  1. nil

cm:set_custom_army_name_key(number military force cqi, string name key)

Sets a custom name key for the specified military force. The new name is specified by full localised text key, in the [table]_[key]_[field] format.

Parameters:

1

number

military force cqi

2

string

Localised name key, in the [table]_[key]_[field] format.

Returns:

  1. nil

cm:remove_custom_army_name_key(number military force cqi)

Removes any custom name associated with the supplied military force. The military force is specified by command queue index value.

Parameters:

1

number

military force cqi

Returns:

  1. nil
Back to top

Province and Faction Mechanics

cm:set_tax_rate(string faction key, number tax rate)

Sets the tax rate for a specified faction. The tax rate may be one of the following integer values:

ValueDescription
0minimal
1low
2normal
3high
4extortionate

Parameters:

1

string

Faction key, from the factions table.

2

number

Tax rate, from the table above.

Returns:

  1. nil

cm:exempt_region_from_tax(string region key, boolean exempt)

Exempts, or un-exempts, the province containing specified region from tax contributions.

Parameters:

1

string

Region key, from the campaign_map_regions table.

2

boolean

Exempt province from tax.

Returns:

  1. nil

cm:exempt_province_from_tax_for_all_factions_and_set_default(string region key, boolean exempt)

Exempt the province containing specified region from tax for all factions that own a settlement within it, and set the default for future factions.

Parameters:

1

string

Region key, from the campaign_map_regions table.

2

boolean

Exempt province from tax.

Returns:

  1. nil

cm:disable_rebellions_worldwide(boolean disable)

Disables or re-enables all rebellions across the map.

Parameters:

1

boolean

disable

Returns:

  1. nil

cm:force_rebellion_in_region(string region key, number units, number x, number y, boolean suppress message)

Force a rebellion of a specified size in the specified region.

Parameters:

1

string

Region key, from the campaign_map_regions table.

2

number

Maximum number of units in the spawned rebellion.

3

number

Logical x co-ordinate of target position.

4

number

Logical y co-ordinate of target position.

5

boolean

Suppress the event message related to the rebellion.

Returns:

  1. nil

cm:treasury_mod(string faction key, number amount)

Immediately modifies the treasury of the specified faction by the specified amount.

Parameters:

1

string

Faction key, from the factions table.

2

number

Treasury modification. This value must be positive.

Returns:

  1. nil

cm:get_unit_keys_from_faction_pool(string faction key)

Returns a numerically-indexed table with all unit keys given faction can currently recruit from the faction recruitment pool.

Parameters:

1

string

Faction key, from the factions table.

Returns:

  1. table table of unit keys

cm:set_public_order_of_province_for_region(string region key, number public order)

Sets the public order value for the province containing the specified region.

Parameters:

1

string

Region key, from the campaign_map_regions table.

2

number

Public order value.

Returns:

  1. nil

cm:set_public_order_disabled_for_province(string faction key, string province key, boolean disable)

Disables or re-enables public order in the specified province for a specified faction.

Parameters:

1

string

Faction key, from the factions database table.

2

string

Province key, from the provinces database table.

3

boolean

Should disable public order.

Returns:

  1. nil

cm:set_public_order_disabled_for_province_for_region(string region key, boolean disable)

Disables or re-enables public order in the province containing the specified region.

Parameters:

1

string

Region key, from the campaign_map_regions table.

2

boolean

Disable public order.

Returns:

  1. nil

cm:set_public_order_disabled_for_province_for_region_for_all_factions_and_set_default(
  
string region key,
  boolean
disable
)

Disables or re-enables public order in the province containing the specified region, for all factions that own settlements within the province, including factions that capture territory there in the future.

Parameters:

1

string

Region key, from the campaign_map_regions table.

2

boolean

Disable public order.

Returns:

  1. nil

cm:add_development_points_to_region(string region key, number development points)

Adds development points to the province containing the specified region.

Parameters:

1

string

Region key, from the campaign_map_regions table.

2

number

Developments points to add.

Returns:

  1. nil

cm:set_imperium_level_change_disabled(boolean disable)

Disables or re-enables imperium level changes across the whole campaign.

Parameters:

1

boolean

disable

Returns:

  1. nil

cm:set_region_abandoned(string region key)

Immediately sets the specified to be abandoned. Nothing will happen if an already-abandoned region is specified.

Parameters:

1

string

Region key, from the campaign_map_regions table.

Returns:

  1. nil

cm:set_region_can_be_traded_if_not_adjacent(string region key, boolean can_be_traded_if_not_adjacent)

Set if a region can be traded to other faction even when not adjacent to that faction

Parameters:

1

string

Region key, from the campaign_map_regions table.

2

boolean

can_be_traded_if_not_adjacent

Returns:

  1. nil

cm:transfer_region_to_faction(string region key, string faction key)

Immediately transfers ownership of the specified region to the specified faction.

Parameters:

1

string

Region key, from the campaign_map_regions table.

2

string

Faction key, from the factions table.

Returns:

  1. nil

cm:change_region_owner(string region key, string faction key)

Immediately transfers ownership of the specified region to the specified faction.

Parameters:

1

string

Region key, from the campaign_map_regions table.

2

string

Faction key, from the factions table.

Returns:

  1. nil

cm:change_region_slot_owner(string region key, string faction key)

Immediately transfers ownership of the specified region slot to the specified faction if said faction can own an foreign ERS or is the owner of the region.

Parameters:

1

string

Region slot key, extract via the slot script interface function "slot_key()".

2

string

Faction key, from the factions table.

Returns:

  1. nil

cm:create_storm_for_region(string region key, number storm strength, number duration, [string storm type])

Creates a storm of a given type in a given region. This calls the function of the same name on the game interface, but adds validation and output.

Parameters:

1

string

Region key, from the campaign_map_regions table.

2

number

Storm strength. The strength of existing storm instances can be looked up in the campaign_storms table.

3

number

Duration of the storm in turns.

4

string

optional, default value=false

Storm type, looked up from the campaign_storm_types table. By default, this is set to "land_storm" for a land region and "wandering_decaying_sea_storm" for a sea region.

Returns:

  1. nil

cm:clear_province_initiative(string province key, string faction key)

Cancels any currently-active province initiative for a specified province and faction.

Parameters:

1

string

Province key, from the provinces database table.

2

string

Faction key, from the factions database table.

Returns:

  1. nil

cm:set_technology_research_disabled(boolean disable)

Disable or re-enable technology functionality in game for the player.

Parameters:

1

boolean

disable

Returns:

  1. nil

cm:set_liberation_options_disabled(boolean disable)

Disables or re-enables post-battle liberation options for the player.

Parameters:

1

boolean

disable

Returns:

  1. nil

cm:set_ui_notification_of_victory_disabled(boolean disable)

Disable or re-enable notification of victory for the UI.

Parameters:

1

boolean

disable

Returns:

  1. nil

cm:remove_god_from_conflict(string god key)

Remove god from conflict by given god record key.

Parameters:

1

string

God key from the campaign_gods table.

Returns:

  1. nil

cm:politics_get_ministerial_posts(string faction key, number tier, boolean taken)

Gets the amount of ministerial posts that are available or unavailable in a given tier.

Parameters:

1

string

Faction key, from the factions table.

2

number

The tier in which to check for posts. -1 for all tiers

3

boolean

Whether to check for available or unavailable posts

Returns:

  1. number ministerial posts, The number of available or unavailable posts for the given tier

cm:politics_enabled(string faction key)

Checks if politics feature is enabled for faction

Parameters:

1

string

Faction key, from the factions table.

Returns:

  1. boolean enabled, Whether the politics feature is enabled or not.

cm:faction_set_potential_modifier(faction faction, number modifier value)

Sets an additive modifier for the faction potential of the specified faction.

Parameters:

1

faction

faction

2

number

modifier value

Returns:

  1. nil

cm:faction_set_total_potential_override_value(
  
faction faction,
  boolean
use override,
  number
override value
)

Sets an absolute override value for the faction potential of the specified faction.

Parameters:

1

faction

faction

2

boolean

use override

3

number

override value

Returns:

  1. nil

cm:faction_set_free_instant_constructions(string faction key, number constructions)

Sets the number of free instant constructions the specified faction has.

Parameters:

1

string

Faction key, from the factions database table.

2

number

Number of instant constructions.

Returns:

  1. nil

cm:get_random_desired_resource_from_faction(string faction key, [boolean most desired])

Returns a random resource from those that a faction most or least desires. If the optional flag is either true or not set, then a random resource from those the faction most desires is returned. If the optional flag is false then a random resource from those the faction least desires is returned. If the faction has no relevant resources it most or least desires, a random resource is returned.

Parameters:

1

string

Faction key, from the factions database table.

2

boolean

optional, default value=true

Pick random resource from most-desired resource list, instead of from the least-desired resource list.

Returns:

  1. nil

cm:set_battle_details_override_for_region(
  
string region key,
  string
battle type,
  string
redirection,
  string
redirection_catchment,
  string
time of day
)

Override the battle details for battles of the given type in the specified region (empty string for any if you want to default it). Pass 'suffix' for redirection_catchment if you want to use redirection as a suffix to the default map.

Parameters:

1

string

Region to override.

2

string

Override battle type.

3

string

Battle folder override.

4

string

Redirection catchement by key, make sure it's valid for the supplied battle type and battel folder combination.

5

string

Time of day override, valid options are empty string, "day" or "night".

Returns:

  1. nil

cm:set_can_autoresolve_settlement_battle(
  
string settlement key,
  boolean
can_autoresolve,
  [string
tooltip loc path]
)

Sets a flag weather attacker can autoresolve settlement battles for the supplied settlement by key.

Parameters:

1

string

Settlement to set the flag for.

2

boolean

New value for the flag.

3

string

optional, default value=nil] string tooltip loc path, Localisation key for the autoresolve button. This should be supplied in the full [table]_[field]_[key

Localisation key for the autoresolve button. This should be supplied in the full [table]_[field]_[key] localisation format, or can be a blank string.

Returns:

  1. nil

cm:set_custom_settlement_info_icon(
  
string region_key,
  string
icon_id,
  string
icon_path,
  string
tooltip_title_key,
  string
tooltip_desc_key,
  number
param1,
  number
param2,
  number
param3
)

Sets the icon path and the tooltip key of a custom icon in the settlement name plate on the campaign map. Not saved, entirely managed by scripts.

Parameters:

1

string

Region key of the target region.

2

string

Custom key needed for the system, user defined.

3

string

Supply the full path of the icon that you wish to use, Example: "ui/skins/default/sp_icon_centaur.png"

4

string

Localisation key for the title. This should be supplied in the full [table]_[field]_[key] localisation format, or can be a blank string.

5

string

Localisation key for the tooltip. This should be supplied in the full [table]_[field]_[key] localisation format, or can be a blank string.

6

number

[Optional] Number to be used for string formatting of the tooltip %1%.

7

number

[Optional] Number to be used for string formatting of the tooltip %2%.

8

number

[Optional] Number to be used for string formatting of the tooltip %3%.

Returns:

  1. nil

cm:set_custom_settlement_info_icon_visibility(string region_key, string icon_id, boolean visible)

Shows or hides a custom icon in the settlement name plate on the campaign map, that was previously added via cm:set_custom_settlement_info_icon.
Not saved, entirely managed by scripts.

Parameters:

1

string

region_key

2

string

icon_id

3

boolean

visible

Returns:

  1. nil

cm:set_fight_battle_at_night(string faction_key, boolean is_night_battle)

Sets/unsets the battle to be fought at night.

Parameters:

1

string

faction_key

2

boolean

is_night_battle

Returns:

  1. nil

cm:set_force_has_retreated_this_turn(character character)

Sets the has reatreated flag for the specified character

Parameters:

1

character

character

Returns:

  1. nil

cm:set_skip_all_but_faction(faction faction, boolean skip)

Enables or disables automatically skipping the turn for all except the faction specified. No turn-start notifications are sent for skipped turns. Avoid using in multiplayer!

Parameters:

1

faction

faction

2

boolean

skip

Returns:

  1. nil

cm:set_skip_for_faction(faction faction, boolean is_skipped)

Enables or disables automatically skipping the turn for the provided faction. No turn-start notifications are sent for skipped turns. Avoid using in multiplayer!

Parameters:

1

faction

faction

2

boolean

is_skipped

Returns:

  1. nil

cm:set_auto_end_turn_all_but_faction(faction faction, boolean skip)

Enables or disables automatically ending the turn for all factions, except the faction specified. Turn-start notifications are sent for factions that auto-end their turn. Avoid using in multiplayer!

Parameters:

1

faction

faction

2

boolean

skip

Returns:

  1. nil

cm:set_auto_end_turn_for_faction(faction faction, boolean is_skipped)

Enables or disables automatically ending the turn for the provided faction. Turn-start notifications are sent for factions that auto-end their turn. Avoid using in multiplayer!

Parameters:

1

faction

faction

2

boolean

is_skipped

Returns:

  1. nil

cm:set_unit_script_name_by_cqi(number unit_cqi, string script_name)

Set the script name (for usage in battle) for a unit by cqi.

Parameters:

1

number

unit_cqi

2

string

script_name

Returns:

  1. nil

cm:upgrade_unit(number unit_cqi, string unit_key)

Force a unit by CQI to upgrade to a unit by record.

Parameters:

1

number

Unit to upgrade.

2

string

Target unit record key.

Returns:

  1. nil

cm:set_region_supply_points(string region_key, number new_supply_points)

Set region's supply points

Parameters:

1

string

Target region record key.

2

number

New supply points value.

Returns:

  1. nil

cm:heal_region_garrison(number region cqi, number factor)

Heals the garrison army (and navy, where applicable) in the specified region by the specified factor or back to full health. The region is specified by cqi.

Parameters:

1

number

Command-queue index of the target region.

2

number

[optional] Amount of hp to replenish as a percentage. Valid values are from 0.0 to 1.0. Default is 1(full health).

Returns:

  1. nil

cm:change_dynasty_ruler(
  
string dynasty_line_key,
  string
new_ruling_faction_key,
  [boolean
won_legitimacy_war]
)

Changes the ruler of the current dynasty from the specified Dynasty Line (Legitimacy Path) to the faction leader of the specified faction

Parameters:

1

string

dynasty_line_key

2

string

new_ruling_faction_key

3

boolean

optional, default value=false

won_legitimacy_war

Returns:

  1. nil
Back to top

Missions

cm:trigger_mission(string faction key, string mission key, boolean fire immediately)

Instructs the campaign director to attempt to trigger a mission of a particular type, based on a mission record from the database. The mission will be triggered if its conditions, defined in the cdir_events_mission_option_junctions, pass successfully. The function returns whether the mission was successfully triggered or not.

Parameters:

1

string

Faction key, from the factions table.

2

string

Mission key, from the missions table.

3

boolean

Set the mission to fire immediately, instead of waiting for the start of the faction's turn. This also overrides any delay set in the mission data.

Returns:

  1. boolean mission triggered successfully

cm:trigger_custom_mission(string faction key, string mission key)

Triggers a specific custom mission from its database record key. This mission must be defined in the missions.txt file that accompanies each campaign.

Parameters:

1

string

Faction key, from the factions table.

2

string

Mission key, from missions.txt file.

Returns:

  1. nil

cm:trigger_custom_mission_from_string(string faction key, string mission)

Triggers a custom mission from a string passed into the function. The mission string must be supplied in a custom format - see the missions.txt that commonly accompanies a campaign for examples.

Parameters:

1

string

Faction key, from the factions table.

2

string

Mission definition string.

Returns:

  1. nil

cm:cancel_mission(string faction key, string mission key)

Cancels an active mission, using the mission key.

Parameters:

1

string

Faction key, from the factions table.

2

string

Mission key, from the missions table.

Returns:

  1. nil

cm:cancel_mission_by_id(string faction key, string custom id)

Cancels an active mission, using a custom id for the mission. A custom id can be set as a property in the text definition for a mission defined by string, prior to creation.

Parameters:

1

string

Faction key, from the factions table.

2

string

Custom id for the mission.

Returns:

  1. nil

cm:trigger_mission_with_targets(
  
number faction cqi,
  string
mission key,
  string
target faction cqi,
  string
secondary faction cqi,
  string
character cqi,
  string
military force cqi,
  string
region cqi,
  string
settlement cqi
)

Attempts to trigger a mission from database records with one or more target game objects. The game object or objects to associate the mission with are specified by command-queue index. The mission will need to pass any conditions set up in the cdir_events_mission_option_junctions table in order to trigger.
A value of 0 may be supplied to omit a particular type of target.

Parameters:

1

number

Command-queue index of the faction to which the mission is issued. This must be supplied.

2

string

Mission key, from the missions table.

3

string

Command-queue index of a target faction. 0 may be specified to omit this target (and other target arguments following this one).

4

string

Command-queue index of a second target faction. May be 0.

5

string

Command-queue index of a target character. May be 0.

6

string

Command-queue index of a target military force. May be 0.

7

string

Command-queue index of a target region. May be 0.

8

string

Command-queue index of a target settlement. May be 0.

Returns:

  1. nil

cm:toggle_mission_generation(boolean can generate)

Sets whether the campaign director system can generate missions or not.

Parameters:

1

boolean

can generate

Returns:

  1. nil

cm:add_custom_pending_mission_from_string(
  
faction recipient faction,
  faction
issuing faction,
  string
mission
)

Triggers a custom pending mission from a string passed into the function. A pending mission is a mission created but not formally issued to the recipient faction.
The mission string must be supplied in a custom format - see the missions.txt that commonly accompanies a campaign for examples.

Parameters:

1

faction

Recipient faction object.

2

faction

Issuing faction object.

3

string

Mission definition string.

Returns:

  1. nil

cm:clear_pending_missions(faction faction)

Clears any unissued pending missions for the supplied faction.

Parameters:

1

faction

Faction.

Returns:

  1. nil

cm:set_mission_display_faction(
  
string mission faction,
  string
display faction,
  string
mission key,
  [string
custom id]
)

Sets the faction displayed on the mission.

Parameters:

1

string

Faction key of the faction to which the mission is assigned, from the factions database table.

2

string

Faction key of the faction to display on the mission, from the factions database table.

3

string

Key of the mission, from the missions database table.

4

string

optional, default value=nil

Custom id of the target mission. A custom id can be set as a property in the text definition for a mission defined by string, prior to creation.

Returns:

  1. nil
Back to top

Scripted Missions

Campaign missions may be set up with a mission type of SCRIPTED. In this case, it is the responsibility of script to manage and complete the mission's objectives. The scripted mission_manager object provides an interface for the easy creation of missions of this type. The functions listed here are the code functions that the mission manager and other scripts can use to manage scripted missions.

cm:set_scripted_mission_text(string mission key, string script key, string text key)

Updates the text shown for a particular objective of a specified scripted mission. This can be used to update a representation of mission progress on the panel.

Parameters:

1

string

Mission key, from the missions table.

2

string

Key of the particular scripted objective associated with the mission.

3

string

Localised text key, in the full [table]_[field]_[key] format.

Returns:

  1. nil

cm:set_scripted_mission_position(string mission key, string script key, number x, number y)

Updates the map position related to a particular objective of a specified scripted mission. This can be used to update a mission's zoom-to target.

Parameters:

1

string

Mission key, from the missions table.

2

string

Key of the particular scripted objective associated with the mission.

3

number

Logical x co-ordinate of the updated position.

4

number

Logical y co-ordinate of the updated position.

Returns:

  1. nil

cm:complete_scripted_mission_objective(
  
string mission key,
  string
script key,
  boolean
is success,
  string
custom_id
)

Marks a particular objective associated with a specified scripted mission as either succeeded or failed. Once all objectives for a scripted mission are completed, the mission itself is completed.

Parameters:

1

string

Mission key, from the missions table.

2

string

Key of the particular scripted objective associated with the mission.

3

boolean

Objective was completed successfully.

4

string

Custom ID of the mission.

Returns:

  1. nil
Back to top

Incidents & Dilemmas

cm:trigger_incident(string faction key, string incident key, boolean fire immediately)

Instructs the campaign director to attempt to trigger a specified incident, based on record from the database. The incident will be triggered if its conditions, defined in the cdir_events_incident_option_junctions, pass successfully. The function returns whether the incident was successfully triggered or not.

Parameters:

1

string

Faction key, from the factions table.

2

string

Incident key, from the incidents table.

3

boolean

Set the incident to fire immediately.

Returns:

  1. boolean incident was triggered

cm:trigger_custom_incident(
  
string faction key,
  string
incident key,
  boolean
fire immediately,
  string
payload
)

Forces an incident to trigger. A payload string fragment specifying the incident consequences must be supplied.

Parameters:

1

string

Faction key, from the factions table.

2

string

Incident key, from the dilemmas table.

3

boolean

Set the incident to fire immediately.

4

string

Payload string. Check missions.txt for examples of how to structure a payload string.

Returns:

  1. nil

Example:

cm:trigger_custom_incident("troy_main_dan_achilles", "troy_main_test_incident", true, "payload{ faction_pooled_resource_transaction{resource troy_food;factor troy_resource_factor_faction;amount 5000;}"}");

cm:trigger_incident_with_targets(
  
number faction cqi,
  string
incident key,
  string
target faction cqi,
  string
secondary faction cqi,
  string
character cqi,
  string
military force cqi,
  string
region cqi,
  string
settlement cqi
)

Attempts to trigger an incident from database records with one or more target game objects. The game object or objects to associate the incident with are specified by command-queue index. The incident will need to pass any conditions set up in the cdir_events_incident_option_junctions table in order to trigger.
A value of 0 may be supplied to omit a particular type of target.

Parameters:

1

number

Command-queue index of the faction to which the incident is issued. This must be supplied.

2

string

Incident key, from the incidents table.

3

string

Command-queue index of a target faction. 0 may be specified to omit this target (and other target arguments following this one).

4

string

Command-queue index of a second target faction. May be 0.

5

string

Command-queue index of a target character. May be 0.

6

string

Command-queue index of a target military force. May be 0.

7

string

Command-queue index of a target region. May be 0.

8

string

Command-queue index of a target settlement. May be 0.

Returns:

  1. nil

cm:toggle_incident_generation(boolean can generate)

Sets whether the campaign director system can generate dilemmas or not.

Parameters:

1

boolean

can generate

Returns:

  1. nil

cm:trigger_dilemma(string faction key, string dilemma key, boolean fire immediately)

Instructs the campaign director to attempt to trigger a dilemma with a particular key, based on dilemma records from the database. The dilemma will be triggered if its conditions, defined in the cdir_events_dilemma_option_junctions, pass successfully. The function returns whether the dilemma was successfully triggered or not.

Parameters:

1

string

Faction key.

2

string

Dilemma key, from the dilemma table.

3

boolean

Set the incident to fire immediately.

Returns:

  1. boolean dilemma was triggered

cm:trigger_custom_dilemma(
  
string faction key,
  string
dilemma key,
  string
first choice payload,
  string
second choice payload
)

Triggers a custom dilemma with two choices, with the specified faction as the dilemma target.

Parameters:

1

string

Faction key, from the factions table.

2

string

Dilemma key, from the dilemmas table.

3

string

Payload key for the first choice of the dilemma, from the cdir_events_dilemma_payloads table.

4

string

Payload key for the second choice of the dilemma, from the cdir_events_dilemma_payloads table.

Returns:

  1. nil

cm:trigger_dilemma_with_targets(
  
number faction cqi,
  string
dilemma key,
  number
target faction cqi,
  number
secondary faction cqi,
  number
character cqi,
  number
military force cqi,
  number
region cqi,
  number
settlement cqi
)

Attempts to trigger a dilemma from database records with one or more target game objects. The game object or objects to associate the dilemma with are specified by command-queue index. The dilemma will need to pass any conditions set up in the cdir_events_dilemma_option_junctions table in order to trigger.
A value of 0 may be supplied to omit a particular type of target.

Parameters:

1

number

Command-queue index of the faction to which the dilemma is issued. This must be supplied.

2

string

Dilemma key, from the dilemmas table.

3

number

Command-queue index of a target faction. 0 may be specified to omit this target (and other target arguments following this one).

4

number

Command-queue index of a second target faction. May be 0.

5

number

Command-queue index of a target character. May be 0.

6

number

Command-queue index of a target military force. May be 0.

7

number

Command-queue index of a target region. May be 0.

8

number

Command-queue index of a target settlement. May be 0.

Returns:

  1. nil

cm:toggle_dilemma_generation(boolean can generate)

Sets whether the campaign director system can generate dilemmas or not.

Parameters:

1

boolean

can generate

Returns:

  1. nil

cm:trigger_intrigue(
  
string issuing faction,
  string
faction a key,
  string
faction b key,
  boolean
improve,
  boolean
exempt from cost
)

Triggers an intrigue incident which improves or worsens diplomatic relations between two supplied factions.

Parameters:

1

string

Key of the faction issuing the intrigue, from the factions database table.

2

string

Key of the first target faction, from the factions database table.

3

string

Key of the second target faction, from the factions database table.

4

boolean

Specifies that the intrigue should improve rather than worsen diplomatic relations between the target factions.

5

boolean

Specifies that the intrigue should not cost influence points for issuing faction.

Returns:

  1. nil
Back to top

Events and Suppression

cm:enable_auto_generated_missions(boolean enable)

Enable or disable non-scripted missions.

Parameters:

1

boolean

enable

Returns:

  1. nil

cm:set_event_generation_enabled(boolean enable)

Enables or disables random event generation by the campaign director system.

Parameters:

1

boolean

enable

Returns:

  1. nil

cm:show_message_event(
  
string faction key,
  string
title loc key,
  string
primary loc key,
  string
secondary loc key,
  boolean
persistent,
  number
index
)

Constructs and displays an event message.

Parameters:

1

string

Key of the faction to whom the event is targeted, from the factions table.

2

string

Localisation key for the event title. This should be supplied in the full [table]_[field]_[key] localisation format, or can be a blank string.

3

string

Localisation key for the primary detail of the event. This should be supplied in the full [table]_[field]_[key] localisation format, or can be a blank string.

4

string

Localisation key for the secondary detail of the event. This should be supplied in the full [table]_[field]_[key] localisation format, or can be a blank string.

5

boolean

Sets this event to be persistent instead of transient. Persistent events are saved to the event history which is accessible to the player.

6

number

Index indicating the type of event. This can be looked up by first finding a record in event_feed_message_events which relates to the event message being shown, then looking up the value in the campaign_groups field of this record in the campaign_group_member_criteria_values. This will provide one or more possible index values that may be used here.

Returns:

  1. nil

cm:show_configurable_message_event(
  
string faction key,
  string
title loc key,
  string
primary loc key,
  string
secondary loc key,
  number
index,
  number
param1,
  number
param2,
  number
param3
)

Show a configurable message event with the specified title, primary detail and secondary detail to the specified faction. You can configure their behavior by editing the scripted_persistent_configurable_event record.

Parameters:

1

string

Key of the faction to whom the event is targeted, from the factions table.

2

string

Localisation key for the event title. This should be supplied in the full [table]_[field]_[key] localisation format, or can be a blank string.

3

string

Localisation key for the primary detail of the event. This should be supplied in the full [table]_[field]_[key] localisation format, or can be a blank string.

4

string

Localisation key for the secondary detail of the event. This should be supplied in the full [table]_[field]_[key] localisation format, or can be a blank string.

5

number

Index indicating the type of event. This can be looked up by first finding a record in event_feed_message_events which relates to the event message being shown, then looking up the value in the campaign_groups field of this record in the campaign_group_member_criteria_values. This will provide one or more possible index values that may be used here.

6

number

[Optional] Number parameter for formatting.

7

number

[Optional] Number parameter for formatting.

8

number

[Optional] Number parameter for formatting.

Returns:

  1. nil

cm:show_message_event_ruler_skill_competencies(
  
string faction key,
  string
power key,
  number
competency points
)

Show a message event ruler_skill_competencies with the specified power name and competency points.

Parameters:

1

string

Key of the target faction, from the factions table.

2

string

Power key.

3

number

Competency points.

Returns:

  1. nil

cm:show_message_event_ruler_skill_surplus(
  
string faction key,
  string
power,
  string
position,
  string
region key,
  number
development points
)

Show a message event ruler_skill_surplus with the specified power name and competency points.

Parameters:

1

string

Key of the target faction, from the factions table.

2

string

Power key.

3

string

Court position key.

4

string

Region name, from the campaign_map_regions database table.

5

number

Development points.

Returns:

  1. nil

cm:add_event_feed_event(
  
string event key,
  string
str_param1,
  string
str_param2,
  string
str_param3,
  number
param1,
  number
param2,
  number
param3,
  number
index
)

Show an event feed message event by event_key with the specified params to the specified faction. The final parameter is the message event type index, used to pick message variants with different images and other details.

Parameters:

1

string

Key of the message event from the event_feed_message_events table. It doesn't support all message event enums. Check the code before using if it's supported.

2

string

[Optional] String parameter for formatting.

3

string

[Optional] String parameter for formatting.

4

string

[Optional] String parameter for formatting.

5

number

[Optional] Number parameter for formatting.

6

number

[Optional] Number parameter for formatting.

7

number

[Optional] Number parameter for formatting.

8

number

Index indicating the type of event. This can be looked up by first finding a record in event_feed_message_events which relates to the event message being shown, then looking up the value in the campaign_groups field of this record in the campaign_group_member_criteria_values. This will provide one or more possible index values that may be used here.

Returns:

  1. nil

cm:add_event_feed_message_new_victory_objective(
  
string faction key,
  string
category title key,
  string
category subtitle key,
  string
objective title key,
  string
description key,
  number
points
)

Shows an event feed message of type new_victory_objective or new_victory_objective_no_subcategory. The specific type is chosen based on whether string sub_category_title_key is empty.

Parameters:

1

string

Key of the faction to whom the event is targeted, from the factions table.

2

string

Localisation key for the event category title. This should be supplied in the full [table]_[field]_[key] localisation format, or can be a blank string.

3

string

Localisation key for the event category subtitle. This should be supplied in the full [table]_[field]_[key] localisation format, or can be a blank string.

4

string

Localisation key for the objective title. This should be supplied in the full [table]_[field]_[key] localisation format, or can be a blank string.

5

string

Localisation key for the objective description. This should be supplied in the full [table]_[field]_[key] localisation format, or can be a blank string.

6

number

Victory points reward.

Returns:

  1. nil

cm:show_message_event_located(
  
string faction key,
  string
title loc key,
  string
primary loc key,
  string
secondary loc key,
  number
x,
  number
y,
  boolean
persistent,
  number
index
)

Constructs and displays a event message with a zoom-to location.

Parameters:

1

string

Key of the faction to whom the event is targeted, from the factions table.

2

string

Localisation key for the event title. This should be supplied in the full [table]_[field]_[key] localisation format, or can be a blank string.

3

string

Localisation key for the primary detail of the event. This should be supplied in the full [table]_[field]_[key] localisation format, or can be a blank string.

4

string

Localisation key for the secondary detail of the event. This should be supplied in the full [table]_[field]_[key] localisation format, or can be a blank string.

5

number

Logical x co-ordinate of event target.

6

number

Logical y co-ordinate of event target.

7

boolean

Sets this event to be persistent instead of transient. Persistent events are saved to the event history which is accessible to the player.

8

number

Index indicating the type of event. This can be looked up by first finding a record in event_feed_message_events which relates to the event message being shown, then looking up the value in the campaign_groups field of this record in the campaign_group_member_criteria_values. This will provide one or more possible index values that may be used here.

Returns:

  1. nil

cm:suppress_all_event_feed_event_types(boolean activate suppression)

Activates or deactivates the episodic scripting event feed suppression system. Once activated, event messages of all types will be withheld from triggering until they are either whitelisted with cm:whitelist_event_feed_event_type or until suppression is lifted again with a subsequent call to this function. Once one of these two actions occurs, any event messages previously blocked will be triggered.
See also the equivalent UI-side suppression function CampaignUI.SuppressAllEventTypesInUI. This function should be used with care, as it can cause softlocks if dilemmas are suppressed. The UI-side functions are generally safer to use.
Message suppression using this system should not be maintained over the end-turn sequence.

Parameters:

1

boolean

activate suppression

Returns:

  1. nil

cm:whitelist_event_feed_event_type(string event type)

Whitelists an event type, allowing it to be shown despite suppression being activated with cm:suppress_all_event_feed_event_types. Event types are specified by a compound key from the event_feed_targeted_events table, by concatenating the values from the event and target fields from that table. See the documentation for the ui-side equivalent of this function, CampaignUI.WhiteListEventTypeInUI, for more information.
This function has no effect if suppression has not been activated with cm:suppress_all_event_feed_event_types.

Parameters:

1

string

Event type, specified with a compound key from the event_feed_targeted_events table.

Returns:

  1. nil

cm:event_feed_event_type_pending(string event type)

Returns whether any event messages of the supplied type are currently being blocked/withheld by event feed suppression. If this function returns true for a specified event type, then the withheld event messages may be shown by calling cm:whitelist_event_feed_event_type to lift the suppression on that event type, or by calling cm:suppress_all_event_feed_event_types to lift all suppression.

Parameters:

1

string

Event type, specified with a compound key from the event_feed_targeted_events table.

Returns:

  1. boolean event is currently pending

cm:disable_event_feed_events(
  
boolean should disable,
  string
category,
  string
subcategory,
  string
subcategory
)

Enable or disable event feed events by category, subcategory or event. Any of these types can be empty. This differs from event feed suppression in that messages blocked by this function will be discarded, never to be shown. This function is of most use for temporarily or momentarily blocking certain event messages that the game produces naturally for some reason. This function should be used with care, as it can cause a softlock if a dilemma is triggered while disabled.
Note that the event type lists are independent of one another, so if an event message is blocked by category, this restriction will not be lifted by unblocking by subcategory, for example.

Parameters:

1

boolean

Disable the event messages specified by the supplied filters. Supply false here to re-enable previously disabled event messages.

2

string

Event feed category to block, from the event_feed_categories table. Supply a blank string to not filter by category.

3

string

Event feed subcategory to block, from the event_feed_subcategories table. Supply a blank string to not filter by subcategory.

4

string

Event feed subcategory to block, from the event_feed_events table. Supply a blank string to not filter by event.

Returns:

  1. nil

cm:disable_all_event_feed_events(boolean should disable)

Enable or disable all event feed events.

Parameters:

1

boolean

True to disable, false to enable

Returns:

  1. nil

cm:set_ignore_end_of_turn_public_order(
  
boolean should disable,
  string
category,
  string
subcategory,
  string
subcategory
)

Enable or disable event feed events by category, subcategory or event. Any of these types can be empty. This differs from event feed suppression in that messages blocked by this function will be discarded, never to be shown. This function is of most use for temporarily or momentarily blocking certain event messages that the game produces naturally for some reason. This function should be used with care, as it can cause a softlock if a dilemma is triggered while disabled.
Note that the event type lists are independent of one another, so if an event message is blocked by category, this restriction will not be lifted by unblocking by subcategory, for example.

Parameters:

1

boolean

Disable the event messages specified by the supplied filters. Supply false here to re-enable previously disabled event messages.

2

string

Event feed category to block, from the event_feed_categories table. Supply a blank string to not filter by category.

3

string

Event feed subcategory to block, from the event_feed_subcategories table. Supply a blank string to not filter by subcategory.

4

string

Event feed subcategory to block, from the event_feed_events table. Supply a blank string to not filter by event.

Returns:

  1. nil
Back to top

Buildings and Slots

cm:add_restricted_building_level_record(string building key)

Disallow the construction of a specific building
See also the function cm:remove_restricted_building_level_record.
See also the function cm:add_restricted_building_level_record_for_faction.
See also the function cm:remove_restricted_building_level_record_for_faction.

Parameters:

1

string

building key

Returns:

  1. nil

cm:remove_restricted_building_level_record(string building key)

Allow the construction of a specific building again
See also the function cm:add_restricted_building_level_record.
See also the function cm:add_restricted_building_level_record_for_faction.
See also the function cm:remove_restricted_building_level_record_for_faction.

Parameters:

1

string

building key

Returns:

  1. nil

cm:add_restricted_building_level_record_for_faction(string faction key, string building key)

Disallow the construction of a specific building for a specific faction
See also the function cm:add_restricted_building_level_record.
See also the function cm:remove_restricted_building_level_record.
See also the function cm:remove_restricted_building_level_record_for_faction.

Parameters:

1

string

faction key

2

string

building key

Returns:

  1. nil

cm:remove_restricted_building_level_record_for_faction(string faction key, string building key)

Allow the construction of a specific building again for a specific faction
See also the function cm:add_restricted_building_level_record.
See also the function cm:remove_restricted_building_level_record.
See also the function cm:add_restricted_building_level_record_for_faction.

Parameters:

1

string

faction key

2

string

building key

Returns:

  1. nil

cm:instantly_build_building(string slot key, string building key, [boolean should ignore cost])

Instantly construct a building with the specified key, in the specified settlement slot. The slot is specified by slot key.

Parameters:

1

string

Slot key. This is the region key, from the campaign_map_regions database table, followed by a colon character and the slot number within the settlement, as a string.

2

string

Key of the building to build, from the building_levels database table.

3

boolean

optional, default value=false

Sets whether the cost of the building construction should be ignored or not.

Returns:

  1. nil

cm:instantly_downgrade_building(string slot key, boolean recoup costs, boolean silent)

Instantly downgrades the building in the speciifed settlement slot to the previous level. The slot is specified by slot key.

Parameters:

1

string

Slot key. This is the region key, from the campaign_map_regions database table, followed by a colon character and the slot number within the settlement, as a string.

2

boolean

Should the controlling faction recoup building costs from the downgrade.

3

boolean

Should the function notify other areas of the game that the downgrade is taking place. It is recommended to supply true here.

Returns:

  1. nil

cm:instantly_dismantle_foreign_slot_building(
  
string region key,
  string
faction key,
  number
foreign slot index
)

Instantly dismantle the building in the foreign specified slot.

Parameters:

1

string

region key

2

string

faction key

3

number

foreign slot index

Returns:

  1. nil

cm:region_slot_instantly_upgrade_building(slot slot, string building key)

Instantly upgrade the building in the specified slot to the specified building key.
See also the campaign_manager function campaign_manager:instantly_upgrade_building_in_region.

Parameters:

1

slot

Settlement slot containing the building.

2

string

Building key, from the building_levels table.

Returns:

  1. nil

cm:region_slot_instantly_dismantle_building(slot slot, boolean recoup costs, boolean silent)

Instantly dismantle the building in the specified slot. Slots keys are specified in the form <region_key>:<slot_number>, where the slot number is a zero-based integer index.

Parameters:

1

slot

Settlement slot containing the building.

2

boolean

Should the controlling faction recoup building costs from the dismantle action.

3

boolean

Should the function notify other areas of the game that the dismantling is taking place. It is recommended to supply true here.

Returns:

  1. nil

cm:region_slot_instantly_repair_building(slot slot)

Instantly repair the building in the specified slot. Slots keys are specified in the form <region_key>:<slot_number>, where the slot number is a zero-based integer index.

Parameters:

1

slot

slot

Returns:

  1. nil

cm:queue_building_construction(
  
string slot key,
  string
building key,
  number
turns override,
  boolean
ignore costs
)

Orders the construction in the specified slot of a building with the specified key. The number of turns the building takes to construct can be overridden, as well as whether to spend resources/development points on the construction.

Parameters:

1

string

Slot key. This is the region key, from the campaign_map_regions database table, followed by a colon character and the slot number within the settlement, as a string.

2

string

Key of the building to build, from the building_levels database table.

3

number

Turns to complete override. If a positive integer is supplied then this overrides the number of turns for the building to complete. If 0 is supplied then the building instantly completes. If -1 is supplied, then the building construction duration is not overridden.

4

boolean

Ignore the costs in resources and development points of the building construction, or not.

Returns:

  1. nil

cm:queue_building_dismantle(string slot key)

Orders the dismantling of the building in the specified slot.

Parameters:

1

string

Slot key. This is the region key, from the campaign_map_regions database table, followed by a colon character and the slot number within the settlement, as a string.

Returns:

  1. nil

cm:queue_building_repair(string slot key, boolean ignore costs)

Orders the repair of the building in the specified slot.

Parameters:

1

string

Slot key. This is the region key, from the campaign_map_regions database table, followed by a colon character and the slot number within the settlement, as a string.

2

boolean

Ignore the costs of the building construction, or not.

Returns:

  1. nil

cm:add_building_to_settlement_queue(slot slot, string building key)

Orders the construction in the specified slot of a building with the specified key.

Parameters:

1

slot

Target settlement slot.

2

string

Key of the building to build, from the building_levels database table.

Returns:

  1. nil

cm:instant_set_building_health_percent(string region key, string building key, number health percent)

Instantly set the health of a building.

Parameters:

1

string

Region key, from the campaign_map_regions table.

2

string

Building level or chain key, from either the building_levels or building_chains tables.

3

number

New health value of building, expressed as a number from 0 to 100.

Returns:

  1. nil

cm:set_building_can_repair(string region key, string building key, boolean can repair)

Overrides if a building can repair.

Parameters:

1

string

Region key, from the campaign_map_regions table.

2

string

Building level or chain key, from either the building_levels or building_chains tables.

3

boolean

Whether the building can repair or not

Returns:

  1. nil

cm:get_building_from_building_chain(string building chain key, number level)

Get the key of the building at the specified level from the specified building chain.

Parameters:

1

string

Building chain key, from the building_chains database table.

2

number

Level within chain to query. Valid values are 0-based, so a level of 0 specifies the first building in the chain.

Returns:

  1. string building key, from the building_levels database table.

cm:get_building_create_time(string building key)

Returns the number of turns the specified building would take to build.

Parameters:

1

string

Building key, from the building_levels database table.

Returns:

  1. number turns

cm:get_building_conversion_cost_record_key(string building key)

Returns the convert resource cost key for the specified building. A blank string is returned if no resource cost has been specified in the convert_resource_cost field for the building record in the building_levels database table.

Parameters:

1

string

Building key, from the building_levels database table.

Returns:

  1. string resource cost key, from the resource_costs database table.

cm:get_building_repair_override_cost_record_key(string building key)

Get the repair override cost record key for the specified building. Nothing is returned if no resource cost has been specified in the repair_resource_cost_override field for the building record in the building_levels database table.

Parameters:

1

string

Building key, from the building_levels database table.

Returns:

  1. string resource cost key, from the resource_costs database table.

cm:is_building_excluded_from_corvee_labour(string building key)

Returns whether the supplied building is excluded from corvee labour. Excluded buildings will be present in the building_level_corvee_labour_exclusions database table.

Parameters:

1

string

Building key, from the building_levels database table.

Returns:

  1. boolean is building excluded

cm:complete_recruitment_and_contruction_in_region(string region key)

Instantly complete recruitment and construction in region.

Parameters:

1

string

Region key, from the campaign_map_regions table.

Returns:

  1. nil

cm:override_building_chain_display(
  
string building chain key,
  string
override chain key,
  [string
region key]
)

Override the display of a building chain so that it appears as another building chain in the ui. A region key may optionally be specified to only override the building chain there. The override building chain must contain the same number of buildings as the chain being overridden.

Parameters:

1

string

Building chain key, from the building_chains table.

2

string

Override building chain key, also from the building_chains table.

3

string

optional, default value=nil

Region key, from the campaign_map_regions table.

Returns:

  1. nil

cm:add_building_to_force(number force cqi, string building key, boolean operation was successful)

Attempts to add a horde building to a military force. A slot must be available, or the force must contain a building that can be upgraded to the building specified.

Parameters:

1

number

Military force command-queue index value.

2

string

Building key, from the building_levels table.

3

boolean

operation was successful

Returns:

  1. nil

cm:remove_faction_foreign_slots_from_region(number faction cqi, number region cqi)

Removes the specified foreign slot set from the target region, for the target faction.

Parameters:

1

number

Command-queue index value of the target faction.

2

number

Command-queue index value of the target region.

Returns:

  1. nil

cm:add_settlement_model_override(string Settlement key, string Model name)

Use a different model for a settlement.

Parameters:

1

string

Settlement key

2

string

Model name

Returns:

  1. nil

cm:add_building_model_override(string Slot key, string Building key, string Model name)

Use a different model for a slot, generated slots are named: settlement_army-admin, settlement_culture, settlement_government, settlement_navy-admin, settlement_ordnance, settlement_minor, settlement_fortification.

Parameters:

1

string

Slot key

2

string

Building key

3

string

Model name

Returns:

  1. nil

cm:remove_settlement_model_override(string Settlement key)

Use the default model for the settlement.

Parameters:

1

string

Settlement key

Returns:

  1. nil

cm:remove_building_model_override(string Slot key, string Building key)

Use the default model for the building.

Parameters:

1

string

Slot key

2

string

Building key

Returns:

  1. nil
Back to top

Effect Bundles

Effects and effect bundles are the primary method by which campaign systems make gameplay balance modifications. The in-game benefits which technologies, buildings, rites and faction effects, amongst many other examples, are delivered through the activation of effect bundles.

cm:apply_effect_bundle(string effect bundle key, string faction key, number turns)

Apply an effect bundle to a faction for a number of turns, or indefinitely.

Parameters:

1

string

Effect bundle key, from the effect_bundles table.

2

string

Faction key, from the factions table.

3

number

Number of turns to apply the effect bundle for. -1 may be supplied to apply the effect indefinitely.

Returns:

  1. nil

cm:remove_effect_bundle(string effect bundle key, string faction key)

Removes a previously-applied effect bundle from a faction.

Parameters:

1

string

Effect bundle key, from the effect_bundles table.

2

string

Faction key, from the factions table.

Returns:

  1. nil

cm:apply_effect_bundle_to_character(string effect bundle key, number character cqi, number turns)

Apply an effect bundle to a character (by character cqi) for a number of turns (-1 turns means indefinitely).

Parameters:

1

string

Effect bundle key, from the effect_bundles table.

2

number

Command-queue index of the character

3

number

Number of turns to apply the effect bundle for. -1 may be supplied to apply the effect indefinitely.

Returns:

  1. nil

cm:remove_effect_bundle_from_character(string effect bundle key, number character cqi)

Remove a previously applied effect bundle from a character.

Parameters:

1

string

Effect bundle key, from the effect_bundles table.

2

number

Command-queue index of the character

Returns:

  1. nil

cm:apply_effect_bundle_to_force(string effect bundle key, number force cqi, number turns)

Apply an effect bundle to a military force for a number of turns, or indefinitely.

Parameters:

1

string

Effect bundle key, from the effect_bundles table.

2

number

Command-queue index of the military force.

3

number

Number of turns to apply the effect bundle for. -1 may be supplied to apply the effect indefinitely.

Returns:

  1. nil

cm:remove_effect_bundle_from_force(string effect bundle key, number force cqi)

Removes a previously-applied effect bundle from a military force.

Parameters:

1

string

Effect bundle key, from the effect_bundles table.

2

number

Command-queue index of the military force.

Returns:

  1. nil

cm:apply_effect_bundle_to_characters_force(string effect bundle key, number character cqi, number turns)

Apply an effect bundle to a military force for a number of turns, or indefinitely. The military force is specified by its commanding character.

Parameters:

1

string

Effect bundle key, from the effect_bundles table.

2

number

Command-queue index of the character commanding the military force.

3

number

Number of turns to apply the effect bundle for. -1 may be supplied to apply the effect indefinitely.

Returns:

  1. nil

cm:remove_effect_bundle_from_characters_force(string effect bundle key, number character cqi)

Removes a previously-applied effect bundle from a military force, specified by its commanding character.

Parameters:

1

string

Effect bundle key, from the effect_bundles table.

2

number

Command-queue index of the character commanding the military force.

Returns:

  1. nil

cm:apply_effect_bundle_to_region(string effect bundle key, string region key, number turns)

Apply an effect bundle to a campaign map region for a number of turns, or indefinitely.

Parameters:

1

string

Effect bundle key, from the effect_bundles table.

2

string

Region key, from the campaign_map_regions table.

3

number

Number of turns to apply the effect bundle for. -1 may be supplied to apply the effect indefinitely.

Returns:

  1. nil

cm:remove_effect_bundle_from_region(string effect bundle key, string region key)

Removes a previously-applied effect bundle from a campaign map region.

Parameters:

1

string

Effect bundle key, from the effect_bundles table.

2

string

Region key, from the campaign_map_regions table.

Returns:

  1. nil

cm:apply_effect_bundle_to_province(string effect bundle key, string region key, number turns)

Apply an effect bundle to a campaign map province for a number of turns, or indefinitely.

Parameters:

1

string

Effect bundle key, from the effect_bundles table.

2

string

Key of any region within the target province, from the campaign_map_regions table.

3

number

Number of turns to apply the effect bundle for. -1 may be supplied to apply the effect indefinitely.

Returns:

  1. nil

cm:remove_effect_bundle_from_province(string effect bundle key, string region key)

Removes a previously-applied effect bundle from a province.

Parameters:

1

string

Effect bundle key, from the effect_bundles table.

2

string

Key of any region within the target province, from the campaign_map_regions table.

Returns:

  1. nil

cm:create_new_custom_effect_bundle(string effect bundle key)

Creates a new custom effect bundle from the specified effect bundle record.

Parameters:

1

string

Effect bundle key, from the effect_bundles table.

Returns:

  1. custom_effect_bundle custom effect bundle

cm:apply_custom_effect_bundle_to_faction(
  
custom_effect_bundle effect bundle key,
  faction
faction script interface
)

Apply a custom effect bundle to a faction. Replaces any existing effect bundle with the same record.

Parameters:

1

custom_effect_bundle

Effect bundle key, from the effect_bundles table.

2

faction

The faction script interface of the target faction.

Returns:

  1. custom_effect_bundle custom effect bundle

cm:apply_custom_effect_bundle_to_character(
  
custom_effect_bundle effect bundle key,
  character
character script interface
)

Apply a custom effect bundle to a character. Replaces any existing effect bundle with the same record.

Parameters:

1

custom_effect_bundle

Effect bundle key, from the effect_bundles table.

2

character

The script interface of the target character.

Returns:

  1. custom_effect_bundle custom effect bundle

cm:apply_custom_effect_bundle_to_force(
  
custom_effect_bundle effect bundle key,
  military_force
military force script interface
)

Apply a custom effect bundle to a force. Replaces any existing effect bundle with the same record.

Parameters:

1

custom_effect_bundle

Effect bundle key, from the effect_bundles table.

2

military_force

The script interface of the target military force.

Returns:

  1. custom_effect_bundle custom effect bundle

cm:apply_custom_effect_bundle_to_characters_force(
  
custom_effect_bundle effect bundle key,
  character
character script interface
)

Apply a custom effect bundle to a characters force. Replaces any existing effect bundle with the same record.

Parameters:

1

custom_effect_bundle

Effect bundle key, from the effect_bundles table.

2

character

The script interface of the target character.

Returns:

  1. custom_effect_bundle custom effect bundle

cm:apply_custom_effect_bundle_to_region(
  
custom_effect_bundle effect bundle key,
  region
region script interface
)

Apply a custom effect bundle to a region. Replaces any existing effect bundle with the same record.

Parameters:

1

custom_effect_bundle

Effect bundle key, from the effect_bundles table.

2

region

The region object.

Returns:

  1. custom_effect_bundle custom effect bundle

cm:apply_custom_effect_bundle_to_faction_province(
  
custom_effect_bundle effect bundle key,
  region
region script interface
)

Apply a custom effect bundle to a faction province. Replaces any existing effect bundle with the same record.

Parameters:

1

custom_effect_bundle

Effect bundle key, from the effect_bundles table.

2

region

The region object.

Returns:

  1. custom_effect_bundle custom effect bundle

cm:remove_effect_bundle_from_faction_province(string effect bundle key, region region script interface)

Removes an effect bundle from a faction province.

Parameters:

1

string

Effect bundle key, from the effect_bundles table.

2

region

The region object.

Returns:

  1. nil
Back to top

Diplomacy

cm:force_diplomacy_new(
  
string source faction,
  string
target faction,
  number
bitmask,
  boolean
can offer,
  boolean
can accept
)

Disables or re-enables availability of a set of diplomacy types between factions described in the faction and target specifiers. Specifiers can be all, faction:<faction_key>, subculture:<subculture_key> or culture:<culture_key>.
The diplomacy types to be allowed or disallowed are specified with a bitmask. Diplomacy types can be included in the bitmask by adding the number corresponding to the diplomacy type to the mask value. This mapping is shown here:

Diplomacy TypeMask Value
trade agreement2^0
hard military access2^1
cancel hard military access2^2
military alliance2^3
regions2^4
technology2^5
state gift2^6
payments2^7
vassal2^8
subject2^9
peace2^10
war2^11
join war2^12
break trade2^13
break alliance2^14
hostages2^15
marriage2^16
non aggression pact2^17
soft military access2^18
cancel soft military access2^19
defensive alliance2^20
client state2^21
form confederation2^22
break non aggression pact2^23
break soft military access2^24
break defensive alliance2^25
break vassal2^26
break subject2^27
break client state2^28
state gift unilateral2^29
diplomatic gift2^30
single barters2^31
barter agreements2^32
cancel barters2^33
dominance2^34
all(2^35 - 1)
The function campaign_manager:force_diplomacy on the campaign_manager interface wraps this function, providing a more useable interface and console output. It's recommended to call that function rather than directly calling this one.

Parameters:

1

string

Specifier that specifies one or more source factions.

2

string

Specifier that specifies one or more target factions.

3

number

Bitmask.

4

boolean

Sets whether the source faction(s) can to offer deals of this diplomacy type to the target faction(s).

5

boolean

Sets whether the target faction(s) can accept deals of this diplomacy type from the source faction(s).

Returns:

  1. nil

cm:force_diplomacy_new_s(
  
string source faction,
  string
target faction,
  string
bitmask,
  boolean
can offer,
  boolean
can accept
)

Disables or re-enables availability of a set of diplomacy types between factions described in the faction and target specifiers. Specifiers can be all, faction:<faction_key>, subculture:<subculture_key> or culture:<culture_key>.
The diplomacy types to be allowed or disallowed are specified with a bitmask. Diplomacy types can be included in the bitmask by adding the number corresponding to the diplomacy type to the mask value. This mapping is shown here:

Diplomacy TypeMask Value
trade agreement2^0
hard military access2^1
cancel hard military access2^2
military alliance2^3
regions2^4
technology2^5
state gift2^6
payments2^7
vassal2^8
subject2^9
peace2^10
war2^11
join war2^12
break trade2^13
break alliance2^14
hostages2^15
marriage2^16
non aggression pact2^17
soft military access2^18
cancel soft military access2^19
defensive alliance2^20
client state2^21
form confederation2^22
break non aggression pact2^23
break soft military access2^24
break defensive alliance2^25
break vassal2^26
break subject2^27
break client state2^28
state gift unilateral2^29
diplomatic gift2^30
single barters2^31
barter agreements2^32
cancel barters2^33
dominance2^34
all(2^35 - 1)
In contrast to cm:force_diplomacy_new, the bitmask for cm:force_diplomacy_new_s is a string to prevent number overflows.
The function campaign_manager:force_diplomacy on the campaign_manager interface wraps this function, providing a more useable interface and console output. It's recommended to call that function rather than directly calling this one.

Parameters:

1

string

Specifier that specifies one or more source factions.

2

string

Specifier that specifies one or more target factions.

3

string

Bitmask.

4

boolean

Sets whether the source faction(s) can to offer deals of this diplomacy type to the target faction(s).

5

boolean

Sets whether the target faction(s) can accept deals of this diplomacy type from the source faction(s).

Returns:

  1. nil

cm:force_declare_war(
  
string attacking faction key,
  string
target faction key,
  boolean
invite attacker allies,
  boolean
invite defender allies,
  boolean
forced choice
)

Forces one faction to declare war on another.

Parameters:

1

string

Faction key of the attacking faction, from the factions table.

2

string

Faction key of the target faction, from the factions table.

3

boolean

Allows factions allied with the attacker to choose whether to join.

4

boolean

Allows factions allied with the defender to choose whether to join.

5

boolean

attacking faction will have lower treachery penalties if they have any treaties with target faction if this is true

Returns:

  1. nil

cm:force_make_vassal(string vassalising faction key, string vassal faction key, boolean forced choice)

Force one faction to vassalise another faction.

Parameters:

1

string

Key of the faction which will become the master, from the factions table.

2

string

Key of the faction which will become the vassal, from the factions table.

3

boolean

Vassalising faction will have lower treachery penalties if they are at war with vassal faction if this is true

Returns:

  1. nil

cm:force_make_subject(string subjugating faction key, string subject faction key, boolean forced choice)

Force one faction to subjugate another faction.

Parameters:

1

string

Key of the faction which will become the sovereign, from the factions table.

2

string

Key of the faction which will become the subject, from the factions table.

3

boolean

subjugating faction will have lower treachery penalties if they are at war with subject faction if this is true

Returns:

  1. nil

cm:force_alliance(
  
string first faction key,
  string
second faction key,
  boolean
is military alliance,
  boolean
forced choice
)

Force two factions to become defensive or military allies.

Parameters:

1

string

Faction key of the first faction, from the factions table.

2

string

Faction key of the second faction, from the factions table.

3

boolean

Specifies whether the alliance should be a military alliance. If false is supplied then the alliance is defensive.

4

boolean

first faction will have lower treachery penalties if they are at war with second faction if this is true

Returns:

  1. nil

cm:force_break_alliance(string first faction key, string second faction key, boolean force choice)

Force two factions to break their alliance.

Parameters:

1

string

First allied faction key, from the factions database table.

2

string

Second allied faction key, from the factions database table.

3

boolean

Spoofs to the diplomacy system that the choice to break the alliance was forced on the first faction e.g. as the lesser of two treacheries. This lessens the diplomatic penalty it incurs with the second faction.

Returns:

  1. nil

cm:force_grant_military_access(
  
string granting faction key,
  string
recipient faction key,
  boolean
is hard access,
  boolean
forced choice
)

Force one faction to grant another faction military access to its territory.

Parameters:

1

string

Faction key of the granting faction, from the factions table.

2

string

Faction key of the recipient faction, from the factions table.

3

boolean

Indicates whether this should be hard military access. This concept is currently unused.

4

boolean

granting faction will have lower treachery penalties if they are at war with recipient faction if this is true

Returns:

  1. nil

cm:force_make_peace(string first faction key, string second faction key, boolean forced choice)

Forces peace between two warring factions.

Parameters:

1

string

Faction key of the first faction, from the factions table.

2

string

Faction key of the second faction, from the factions table.

3

boolean

first faction will have lower treachery penalties if the war's duration is too low, if this is true

Returns:

  1. nil

cm:force_confederation(string proposing faction key, string target faction key)

Forces a proposing faction to subsume a target faction into its confederation.

Parameters:

1

string

Faction key of the proposing faction, from the factions table.

2

string

Faction key of the target faction, from the factions table. This faction will be subsumed into the confederation.

Returns:

  1. nil

cm:force_make_trade_agreement(string first faction key, string second faction key)

Forces a trade agreement between two specified factions. If no agreement is possible then nothing will happen.

Parameters:

1

string

Faction key of the first faction, from the factions table.

2

string

Faction key of the second faction, from the factions table.

Returns:

  1. nil

cm:make_diplomacy_available(string first faction key, string second faction key)

Makes diplomacy available between two factions, as if they had discovered each other on the campaign map.

Parameters:

1

string

Faction key of the first faction, from the factions table.

2

string

Faction key of the second faction, from the factions table.

Returns:

  1. nil

cm:faction_offers_peace_to_other_faction(string proposing faction key, string target faction key)

Compels one faction to offer peace to another faction that it's at war with. The target faction may decline.

Parameters:

1

string

Faction key of the first faction, from the factions table.

2

string

Faction key of the second faction, from the factions table.

Returns:

  1. nil

cm:faction_allow_trading(faction faction, boolean should_allow)

Enable/Disable trading for faction.

Parameters:

1

faction

faction

2

boolean

should_allow

Returns:

  1. nil

cm:steal_barter_agreement(
  
string originator faction key,
  string
target faction key,
  string
stealing faction key,
  number
agreement index
)

Steal the barter agreement of two other factions.

Parameters:

1

string

Originator faction key, from the factions database table.

2

string

Target faction key, from the factions database table.

3

string

Stealing faction key, from the factions database table.

4

number

Barter agreement index.

Returns:

  1. nil

cm:cancel_barter_agreement(
  
string originator faction key,
  string
target faction key,
  number
agreement index
)

Break barter agreement between two factions.

Parameters:

1

string

Originator faction key, from the factions database table.

2

string

Target faction key, from the factions database table.

3

number

Barter agreement index.

Returns:

  1. nil

cm:set_trespassing_diplomatic_penalty_enabled(boolean enable)

Enable/Disable the diplomatic penalty for trespassing.

Parameters:

1

boolean

enable

Returns:

  1. nil

cm:apply_dilemma_diplomatic_bonus(string faction a key, string faction a key, number bonus value)

Directly applies a diplomatic bonus or penalty between two factions, as if it had come from a dilemma. The bonus should be an integer between -6 and +6, each integer value of which corresponds to a change type (from PENALTY_XXXLARGE (-6) to BONUS_XXXLARGE (+6)) which carries a diplomatic attitude modifier that is actually applied.

Parameters:

1

string

First faction key.

2

string

Second faction key.

3

number

Bonus value (-6 to +6).

Returns:

  1. nil
Back to top

Restrictions

cm:add_event_restricted_unit_record(string unit key, [string tooltip key])

Adds a restriction preventing a specified unit from being a recruitment option for any faction.
This setting is saved into the campaign save file when the game is saved, and automatically re-established when the campaign is reloaded.

Parameters:

1

string

Unit key, from the main_units table.

2

string

optional, default value=nil] string tooltip key, Key of localised text in full [table]_[field]_[key

Key of localised text in full [table]_[field]_[key] format to show as a tooltip on the restricted unit icon. This can be omitted.

Returns:

  1. nil

cm:remove_event_restricted_unit_record(string unit key)

Removes a restriction previously added with cm:add_event_restricted_unit_record.

Parameters:

1

string

Unit key, from the main_units table.

Returns:

  1. nil

cm:add_event_restricted_unit_record_for_faction(string unit key, string faction key, [string tooltip key])

Adds a restriction preventing a specified unit from being a recruitment option for a specified faction.
This setting is saved into the campaign save file when the game is saved, and automatically re-established when the campaign is reloaded.

Parameters:

1

string

Unit key, from the main_units table.

2

string

Faction key, from the factions table.

3

string

optional, default value=nil] string tooltip key, Key of localised text in full [table]_[field]_[key

Key of localised text in full [table]_[field]_[key] format to show as a tooltip on the restricted unit icon. This can be omitted.

Returns:

  1. nil

cm:remove_event_restricted_unit_record_for_faction(string unit key, string faction key)

Removes a restriction previously added with cm:add_event_restricted_unit_record_for_faction.

Parameters:

1

string

Unit key, from the main_units table.

2

string

Faction key, from the factions table.

Returns:

  1. nil

cm:add_event_restricted_building_record(string building key, [string tooltip key])

Adds a restriction preventing a specified building from being a construction option for any faction.
This setting is saved into the campaign save file when the game is saved, and automatically re-established when the campaign is reloaded.

Parameters:

1

string

Building key, from the building_levels table.

2

string

optional, default value=nil] string tooltip key, Key of localised text in full [table]_[field]_[key

Key of localised text in full [table]_[field]_[key] format to show as a tooltip on the restricted building icon. This can be omitted.

Returns:

  1. nil

cm:remove_event_restricted_building_record(string building key)

Removes a restriction previously added with cm:add_event_restricted_building_record.

Parameters:

1

string

Building key, from the building_levels table.

Returns:

  1. nil

cm:add_event_restricted_building_record_for_faction(
  
string building key,
  string
faction key,
  [string
tooltip key]
)

Adds a restriction preventing a specified building from being a construction option for a specified faction.
This setting is saved into the campaign save file when the game is saved, and automatically re-established when the campaign is reloaded.

Parameters:

1

string

Building key, from the building_levels table.

2

string

Faction key, from the factions table.

3

string

optional, default value=nil] string tooltip key, Key of localised text in full [table]_[field]_[key

Key of localised text in full [table]_[field]_[key] format to show as a tooltip on the restricted building icon. This can be omitted.

Returns:

  1. nil

cm:remove_event_restricted_building_record_for_faction(string building key, string faction key)

Removes a restriction previously added with cm:add_event_restricted_building_record_for_faction.

Parameters:

1

string

Building key, from the building_levels table.

2

string

Faction key, from the factions table.

Returns:

  1. nil

cm:add_event_restricted_building_chain_record_for_faction(
  
string building chain key,
  string
faction key,
  [string
tooltip key]
)

Adds a restriction preventing buildings form a specified building chain from being a construction option for a specified faction.
This setting is saved into the campaign save file when the game is saved, and automatically re-established when the campaign is reloaded.

Parameters:

1

string

Building chain key, from the building_chains table.

2

string

Faction key, from the factions table.

3

string

optional, default value=nil] string tooltip key, Key of localised text in full [table]_[field]_[key

Key of localised text in full [table]_[field]_[key] format to show as a tooltip on the restricted building icon. This can be omitted.

Returns:

  1. nil

cm:remove_event_restricted_building_chain_record_for_faction(
  
string building chain key,
  string
faction key
)

Removes a restriction previously added with cm:add_event_restricted_building_chain_record_for_faction.

Parameters:

1

string

Building chain key, from the building_chains table.

2

string

Faction key, from the factions table.

Returns:

  1. nil

cm:add_event_restricted_building_record_with_manual_conversion(
  
string building key,
  [string
tooltip key]
)

Adds a restriction preventing a specified building from being a construction option for any faction, but sets them to be manualy converted for human factions if they acquire a region with them in it.
This setting is saved into the campaign save file when the game is saved, and automatically re-established when the campaign is reloaded.

Parameters:

1

string

Building key, from the building_levels table.

2

string

optional, default value=nil] string tooltip key, Key of localised text in full [table]_[field]_[key

Key of localised text in full [table]_[field]_[key] format to show as a tooltip on the restricted building icon. This can be omitted.

Returns:

  1. nil

cm:remove_event_restricted_building_record_with_manual_conversion(string building key)

Removes a restriction previously added with cm:add_event_restricted_building_record.

Parameters:

1

string

Building key, from the building_levels table.

Returns:

  1. nil

cm:add_event_restricted_building_record_for_faction_with_manual_conversion(
  
string building key,
  string
faction key,
  [string
tooltip key]
)

Adds a restriction preventing a specified building from being a construction option for a specified faction, but sets them to be manualy converted for human factions if they acquire a region with them in it.
This setting is saved into the campaign save file when the game is saved, and automatically re-established when the campaign is reloaded.

Parameters:

1

string

Building key, from the building_levels table.

2

string

Faction key, from the factions table.

3

string

optional, default value=nil] string tooltip key, Key of localised text in full [table]_[field]_[key

Key of localised text in full [table]_[field]_[key] format to show as a tooltip on the restricted building icon. This can be omitted.

Returns:

  1. nil

cm:remove_event_restricted_building_record_for_faction_with_manual_conversion(
  
string building key,
  string
faction key
)

Removes a restriction previously added with cm:add_event_restricted_building_record_for_faction_with_manual_conversion.

Parameters:

1

string

Building key, from the building_levels table.

2

string

Faction key, from the factions table.

Returns:

  1. nil

cm:add_event_restricted_building_chain_record_for_faction_with_manual_conversion(
  
string building chain key,
  string
faction key,
  [string
tooltip key]
)

Adds a restriction preventing buildings form a specified building chain from being a construction option for a specified faction, but sets them to be manualy converted for human factions if they acquire a region with them in it.
This setting is saved into the campaign save file when the game is saved, and automatically re-established when the campaign is reloaded.

Parameters:

1

string

Building chain key, from the building_chains table.

2

string

Faction key, from the factions table.

3

string

optional, default value=nil] string tooltip key, Key of localised text in full [table]_[field]_[key

Key of localised text in full [table]_[field]_[key] format to show as a tooltip on the restricted building icon. This can be omitted.

Returns:

  1. nil

cm:remove_event_restricted_building_chain_record_for_faction_with_manual_conversion(
  
string building chain key,
  string
faction key
)

Removes a restriction previously added with cm:add_event_restricted_building_chain_record_for_faction_with_manual_conversion.

Parameters:

1

string

Building chain key, from the building_chains table.

2

string

Faction key, from the factions table.

Returns:

  1. nil

cm:add_event_restricted_ancillary_type_equip_restriction_for_faction(
  
string ancillary key,
  string
faction key,
  [string
tooltip key]
)

Adds a restriction record for an ancillary type for a faction, preventing that faction from equipping an ancillary of that type.

Parameters:

1

string

Ancillary key, from the ancillaries database table.

2

string

Faction key, from the factions database table.

3

string

optional, default value=nil] string tooltip key, Key of localised text in full [table]_[field]_[key

Key of localised text in full [table]_[field]_[key] format to show as a tooltip on the restricted ancillary icon. This can be omitted.

Returns:

  1. nil

cm:remove_event_restricted_ancillary_type_equip_restriction_for_faction(
  
string ancillary key,
  string
faction key
)

Removes a restriction record for an ancillary type for a faction previously added with cm:add_event_restricted_ancillary_type_equip_restriction_for_faction, allowing that faction to equip an ancillary of that type again.

Parameters:

1

string

Ancillary key, from the ancillaries database table.

2

string

Faction key, from the factions database table.

Returns:

  1. nil

cm:add_event_restricted_province_initiative_record_for_faction(
  
string initiative key,
  string
faction key,
  [string
tooltip key]
)

Adds a restriction record for a province initiative for a faction, preventing that faction from enacting that province initiative.

Parameters:

1

string

Province initiative key, from the provincial_initiative_records database table.

2

string

Faction key, from the factions database table.

3

string

optional, default value=nil] string tooltip key, Key of localised text in full [table]_[field]_[key

Key of localised text in full [table]_[field]_[key] format to show as a tooltip on the restricted province initiative. This can be omitted.

Returns:

  1. nil

cm:remove_event_restricted_province_initiative_record_for_faction(
  
string initiative key,
  string
faction key
)

Removes a province initiative restriction record previously added with cm:add_event_restricted_province_initiative_record_for_faction, allowing that faction to use the specified province initiative again.

Parameters:

1

string

Province initiative key, from the provincial_initiative_records database table.

2

string

Faction key, from the factions database table.

Returns:

  1. nil

cm:add_event_restricted_province_initiative_record_for_province_for_faction(
  
string initiative key,
  string
province key,
  string
faction key,
  [string
tooltip key]
)

Adds a restriction record for a province initiative for a faction, for a specified province, preventing that faction from enacting the province initiative within that province.

Parameters:

1

string

Province initiative key, from the provincial_initiative_records database table.

2

string

Province key, from the provinces database table.

3

string

Faction key, from the factions database table.

4

string

optional, default value=nil] string tooltip key, Key of localised text in full [table]_[field]_[key

Key of localised text in full [table]_[field]_[key] format to show as a tooltip on the restricted province initiative. This can be omitted.

Returns:

  1. nil

cm:remove_event_restricted_province_initiative_record_for_province_for_faction(
  
string initiative key,
  string
province key,
  string
faction key
)

Removes a province initiative restriction record previously added with cm:add_event_restricted_province_initiative_record_for_province_for_faction, allowing that faction to use the specified province initiative within the specified province again.

Parameters:

1

string

Province initiative key, from the provincial_initiative_records database table.

2

string

Province key, from the provinces database table.

3

string

Faction key, from the factions database table.

Returns:

  1. nil

cm:lock_technology(string faction key, string technology key)

Lock a specified technology and all technologies that are children of it, for a specified faction.
This setting is saved into the campaign save file when the game is saved, and automatically re-established when the campaign is reloaded.

Parameters:

1

string

Faction key, from the factions table.

2

string

Technology key, from the technologies table.

Returns:

  1. nil

cm:unlock_technology(string faction key, string technology key)

Removes a lock previously placed with cm:lock_technology.

Parameters:

1

string

Faction key, from the factions table.

2

string

Technology key, from the technologies table.

Returns:

  1. nil

cm:instantly_complete_ongoing_research_for_faction(
  
string faction key,
  [boolean
should_only_first_ongoing_research]
)

Instantly complete the ongoing research for given faction

Parameters:

1

string

Faction key, from the factions table.

2

boolean

optional, default value=false

If true, it will complete only the first ongoing research.

Returns:

  1. nil

cm:disable_movement_for_character(string character lookup)

Prevents the specified character from moving, regardless of where the move order comes from, until movement is subsequently re-enabled with cm:enable_movement_for_faction or cm:enable_movement_for_character.
This setting is saved into the campaign save file when the game is saved, and automatically re-established when the campaign is reloaded.

Parameters:

1

string

Character lookup string - see Character Lookups for more information.

Returns:

  1. nil

cm:disable_movement_for_faction(string faction key)

Prevents all characters in the specified faction from moving, regardless of where the move order comes from, until movement is subsequently re-enabled with cm:enable_movement_for_faction or cm:enable_movement_for_character. Note that characters created in the faction after this restriction is applied will not have this restriction applied and will be able to move.
This setting is saved into the campaign save file when the game is saved, and automatically re-established when the campaign is reloaded.

Parameters:

1

string

Faction key, from the factions table.

Returns:

  1. nil

cm:enable_movement_for_character(string character lookup)

Re-enables movement for a specified character after it has been disabled with cm:disable_movement_for_character or cm:disable_movement_for_faction.

Parameters:

1

string

Character lookup string - see Character Lookups for more information.

Returns:

  1. nil

cm:enable_movement_for_faction(string faction key)

Re-enables movement for every character in the specified faction after it has been disabled with cm:disable_movement_for_character or cm:disable_movement_for_faction.

Parameters:

1

string

Faction key, from the factions table.

Returns:

  1. nil

cm:disable_pathfinding_restriction(number id)

Disables a pathfinding restriction layer. These are layers that can be built into the campaign map data that prevent the player from being able to move into an area on the map. By calling this function to lift a restriction, the player will be able to pathfind into the new area.

Parameters:

1

number

Pathfinding restriction layer id to un-restrict. Layers are numbered sequentially - lifting the restriction on one layer will also lift it on all layers with a lower numerical id.

Returns:

  1. nil

cm:add_restricted_unit_upgrade(string source_unit_key, string target_unit_key)

Restricts the supplied unit by key from performing unit upgrade to the supplied unit by key.

Parameters:

1

string

Base unit to be upgraded.

2

string

Target unit to be upgraded to.

Returns:

  1. nil

cm:remove_restricted_unit_upgrade(string source_unit_key, string target_unit_key)

Re-enables the supplied unit by key to performing unit upgrade to the supplied unit by key, after it has been disabled with cm:add_restricted_unit_upgrade.

Parameters:

1

string

Base unit to be upgraded.

2

string

Target unit to be upgraded to.

Returns:

  1. nil

cm:disallow_army_occupation_decision(number force cqi, string occupation_decision)

Disallows a specific army from performing a specific occupation decision.

Parameters:

1

number

Command-queue index value for the military force.

2

string

key from the settlement_occupation_options table.

Returns:

  1. nil

cm:remove_forced_occupation_decision_restrictions(number force cqi)

Removes any occupation decision restrictions previously imposed with cm:disallow_army_occupation_decision.

Parameters:

1

number

Command-queue index value for the military force.

Returns:

  1. nil

cm:disallow_faction_occupation_decision(faction faction script interface, string occupation_decision)

Disallows the faction's armies from performing a specific occupation decision.

Parameters:

1

faction

The faction script interface of the target faction.

2

string

key from the settlement_occupation_options table.

Returns:

  1. nil

cm:remove_forced_occupation_decision_restrictions_for_faction(faction faction script interface)

Removes any occupation decision restrictions previously imposed with cm:disallow_faction_occupation_decision.

Parameters:

1

faction

The faction script interface of the target faction.

Returns:

  1. nil
Back to top

Rituals

Rituals are faction-level spells that underpin a variety of racial effects. A list of all rituals in the game can be found in the rituals database table.

cm:perform_ritual(
  
string performing faction key,
  string
target faction key,
  string
ritual key,
  string
ritual chain key
)

Perform a ritual for a faction. The ritual must be available and valid for the action to succeed.

Parameters:

1

string

Faction key of the faction performing the ritual, from the factions table.

2

string

Faction key of the target faction of the ritual, from the factions table. An empty string may be supplied, in which case the performing faction is the target.

3

string

Ritual key, from the rituals database table.

4

string

Ritual chain key, from the ritual_chains database table.

Returns:

  1. nil

cm:rollback_linked_ritual_chain(string ritual chain key, number stage)

Rolls back a linked ritual chain to the specified stage. It is safe to call this function if the ritual chain isn't at this stage yet.

Parameters:

1

string

Ritual chain key, from the campaign_group_ritual_chains table.

2

number

Stage number.

Returns:

  1. nil

cm:set_ritual_unlocked(number faction cqi, string ritual key, boolean unlock)

Locks or unlocks a ritual for the specified faction.

Parameters:

1

number

Command-queue index value for the target faction.

2

string

Ritual key, from the rituals database table.

3

boolean

Unlock the ritual.

Returns:

  1. nil

cm:set_ritual_chain_unlocked(number faction cqi, string ritual chain key, boolean unlock)

Locks or unlocks a chain of rituals for the specified faction.

Parameters:

1

number

Command-queue index value for the target faction.

2

string

Ritual chain key, from the ritual_chains database table.

3

boolean

Unlock the ritual chain.

Returns:

  1. nil

cm:set_ritual_in_chain_unlocked(
  
number faction cqi,
  string
ritual key,
  string
ritual chain key,
  boolean
unlock
)

Locks or unlocks a ritual in a chain for the specified faction.

Parameters:

1

number

Command-queue index value for the target faction.

2

string

Ritual key, from the rituals database table.

3

string

Ritual chain key, from the ritual_chains database table.

4

boolean

Unlock the ritual chain.

Returns:

  1. nil
Back to top

Racial Mechanics

The functions described in this section affect racial mechanics that are generally specific to one or only a few races in the game. Avoid calling them for factions that aren't party to the racial mechanic in question.

cm:modify_faction_slaves_in_a_faction(string faction key, number change)

Modify the number of faction slaves in the specified faction. The change can be positive or negative. This function will only have an affect if the target faction makes use of the slaves mechanic.

Parameters:

1

string

Faction key, from the factions table.

2

number

Value to modify slaves by.

Returns:

  1. nil

cm:modify_faction_slaves_in_a_faction_province(string region key, number change)

Modify the number of faction slaves in the province containing a specified region. The change can be positive or negative. This function will only have an affect if the target faction makes use of the slaves mechanic.

Parameters:

1

string

Region key, from the campaign_map_regions table.

2

number

Value to modify slaves by.

Returns:

  1. nil

cm:faction_economics_recalculate_background_income(string faction key)

Force a recalculation of the background income for the specified faction. This is done in order for the AI to know how much background income does it has.

Parameters:

1

string

Faction key, from the factions table.

Returns:

  1. nil

cm:province_spawn_pooled_resource(string province key, string resource key)

Spawn pooled_resource in province. Clamped to pool bounds.

Parameters:

1

string

Province key, from the provinces table.

2

string

Pooled resource key, from the pooled_resources table.

Returns:

  1. nil

cm:consume_pooled_resource(string province key, string resource key, number amount)

Consumes the specified pooled resource from the specified province, reducing the total amount avaliable in the deposit.

Parameters:

1

string

Province key, from the provinces table.

2

string

Pooled resource key, from the pooled_resources table.

3

number

Amount of resource to add. This value CANNOT be negative.

Returns:

  1. nil

cm:faction_add_pooled_resource(string faction key, string resource key, string factor key, number amount)

Add the specified amount to the specified resource pool (type of resource), as the specified factor (type of change). The supplied value will be clamped to pool and factor bounds.

Parameters:

1

string

Faction key, from the factions table.

2

string

Pooled resource key, from the pooled_resources table.

3

string

Change factor key, from the pooled_resource_factors table.

4

number

Amount of resource to add. This value can be negative.

Returns:

  1. nil

cm:faction_apply_resource_transaction(faction faction, custom_resource_cost cost)

Apply the specified resource cost transaction to the supplied faction

Parameters:

1

faction

Faction to apply the resoruce cost

2

custom_resource_cost

Resource cost

Returns:

  1. nil

cm:faction_add_post_battle_looted_resource(
  
string faction key,
  string
resource key,
  string
factor key,
  number
amount,
  [boolean
should_apply_resource_transaction]
)

Add the specified amount to the specified pool for the loot in pending pattle participant. (must have active pending battle). Amount can be negative. Optionally (yes - by default) apply a resource transaction on that amount.

Parameters:

1

string

Faction key, from the factions table.

2

string

Pooled resource key, from the pooled_resources table.

3

string

Change factor key, from the pooled_resource_factors table.

4

number

Amount of resource to add. This value can be negative.

5

boolean

optional, default value=true

Whether to apply the resource transaction.

Returns:

  1. nil

cm:faction_set_free_embed_informants(string faction key, number informants)

Sets a new value for the number of available informants in a faction.

Parameters:

1

string

Faction key, from the factions database table.

2

number

Number of informants.

Returns:

  1. nil

cm:faction_add_post_battle_motivation_change(number character cqi, number amount)

Tells a pending battle object that there has been motivation changes to a character. Used to display to the user, doesn't actually change anything. Only works on characters in the currently pending battle.

Parameters:

1

number

Command queue index of the character whose motivation is changed

2

number

The amount of the change. Positive or negative value.

Returns:

  1. nil

cm:faction_set_food_factor_multiplier(string faction key, string food factor key, number multiplier)

Sets the multiplier of a scripted food type for a specified faction. The amount of food of this type this faction will earn per-turn will be multiplied by this amount.

Parameters:

1

string

Faction key, from the factions table.

2

string

Food factor key, from the food_factors table.

3

number

Multiplier.

Returns:

  1. nil

cm:faction_set_food_factor_value(string faction key, string food factor key, number modifier)

Sets the per-turn modifier of a scripted food type for a specified faction. This is the amount of food of this type this faction will earn per-turn.

Parameters:

1

string

Faction key, from the factions table.

2

string

Food factor key, from the food_factors table.

3

number

Modifier.

Returns:

  1. nil

cm:faction_mod_food_factor_value(string faction key, string food factor key, number modifier)

Modifies the per-turn modifier of a scripted food type for a specified faction. This is the amount of food of this type this faction will earn per-turn.
The supplied value is added to the existing modifier value.

Parameters:

1

string

Faction key, from the factions table.

2

string

Food factor key, from the food_factors table.

3

number

Modifier.

Returns:

  1. nil

cm:notify_hatshepsut_expedition_started(string faction key, string realm final destination)

Notifies the game that a Hatshepsut expedition has started for the specified faction.

Parameters:

1

string

Faction key, from the factions table.

2

string

Realm final destination.

Returns:

  1. nil

cm:notify_hatshepsut_expedition_resource_cashed_out(
  
string faction key,
  string
resource key,
  number
amount
)

Notifies the game that a Hatshepsut expedition is cashing out.

Parameters:

1

string

Faction key, from the factions table.

2

string

Resource key, from the pooled_resources database table.

3

number

Amount of resource.

Returns:

  1. nil

cm:notify_khufu_stage_construction_started(string faction key, string wonder key, string stage key)

Notifies the game that construction has started on a Khufu wonder stage.

Parameters:

1

string

Faction key, from the factions table.

2

string

Wonder key.

3

string

Stage key.

Returns:

  1. nil

cm:notify_khufu_stage_construction_completed(string faction key, string wonder key, string stage key)

Notifies the game that construction has completed on a Khufu wonder stage.

Parameters:

1

string

Faction key, from the factions table.

2

string

Wonder key.

3

string

Stage key.

Returns:

  1. nil

cm:notify_khufu_wonder_attacked(
  
string attacking faction key,
  string
wonder key,
  boolean
wonder owner won,
  boolean
is attacker player
)

Notifies the game that a Khufu wonder has been attacked.

Parameters:

1

string

Attacking faction key, from the factions table.

2

string

Wonder key.

3

boolean

Indicates that the wonder owner win the battle.

4

boolean

Indicates that the attacking faction was controlled by a player.

Returns:

  1. nil

cm:notify_muwatalli_token_of_gratitude_gained(string faction key, string action key)

Notifies the game that a Muwatalli token of gratitude has been gained by a faction.

Parameters:

1

string

Faction key, from the factions table.

2

string

Action key.

Returns:

  1. nil

cm:notify_tudhaliya_title_assigned_to_prince(string faction key, string title key)

Notifies the game that a Tudhaliya title has been assigned to a Prince.

Parameters:

1

string

Faction key of the prince, from the factions database table.

2

string

Tudhaliya title key, from the ancillaries database table.

Returns:

  1. nil

cm:apply_prince_battle_diplomatic_bonus(
  
string master faction key,
  string
vassal faction key,
  boolean
battle won
)

Applies a Tudhaliya prince battle diplomatic bonus to the specified vassal faction.

Parameters:

1

string

Master or sovereign faction key, from the factions database table.

2

string

Vassal or subject faction key, from the factions database table.

3

boolean

Indicates that the recently-fought battle was won.

Returns:

  1. nil

cm:apply_prince_idle_diplomatic_bonus(
  
string master faction key,
  string
vassal faction key,
  boolean
in vassal territory
)

Applies a Tudhaliya prince idling diplomatic bonus to the specified vassal faction.

Parameters:

1

string

Master or sovereign faction key, from the factions database table.

2

string

Vassal or subject faction key, from the factions database table.

3

boolean

Indicates that the Prince was idling in the vassal's territory.

Returns:

  1. nil

cm:notify_legitimacy_war_updated(
  
string faction key,
  string
ruling faction key,
  string
state,
  number
start turn,
  number
legitimacy,
  number
ruler legitimacy,
  number
attitude,
  string
pretenders,
  string
political state
)

Notifies the game about an update in the status of a legitimacy war.

Parameters:

1

string

Faction key, from the factions database table.

2

string

Ruling faction key, from the factions database table.

3

string

Update state.

4

number

Start turn of war.

5

number

Faction legitimacy value.

6

number

Ruling faction legitimacy value.

7

number

Attitude value towards ruling faction.

8

string

Comma-separated list of pretender faction keys.

9

string

Political state id.

Returns:

  1. nil

cm:notify_legitimacy_war_ended(
  
string ruling faction key,
  number
start turn,
  number
war length,
  string
political state
)

Notifies the game that a legitimacy war has ended.

Parameters:

1

string

New ruling faction key, from the factions database table.

2

number

Start turn of war.

3

number

Length of war in turns.

4

string

Political state id.

Returns:

  1. nil

cm:notify_legitimacy_special_ancillary_equipped_and_available(
  
string faction key,
  string
equipped ancillaries,
  string
political state
)

Notifies the game about special legitimacy ancillaries that are equipped or that are available for faction.

Parameters:

1

string

Ruling faction key, from the factions database table.

2

string

Commas-separated string of ancillary keys equipped by the faction.

3

string

Political state id.

Returns:

  1. nil

cm:notify_crown_power_used(string ruling faction key, string power, string political state)

Notifies the game that a crown power has been used.

Parameters:

1

string

Ruling faction key, from the factions database table.

2

string

Crown power used.

3

string

Political state id.

Returns:

  1. nil

cm:notify_court_action_used(string faction key, string action name, string action subname)

Notifies the game that a court action has been used.

Parameters:

1

string

Faction key, from the factions database table.

2

string

Court action name.

3

string

Court action subname.

Returns:

  1. nil

cm:notify_court_position_gained(string faction key, string position)

Notifies the game that a court position has been gained by a faction.

Parameters:

1

string

Faction key, from the factions database table.

2

string

Court position name.

Returns:

  1. nil

cm:set_new_civilization_level(string new level)

Sets a new campaign-wide civilization level. Currently-valid civilisation levels area "collapse", "crisis", "prosperity", "custom_1", ... "custom_12".

Parameters:

1

string

new level

Returns:

  1. nil

cm:notify_ambition_status_changed(string faction key, string ambition key, string new status)

Notifies the game that the status of an ambition has changed. Valid status values are currently "picked", "completed", "cancelled", "expired" and "failed".

Parameters:

1

string

Faction key, from the factions database table.

2

string

Ambition key, from the missions database table.

3

string

New status.

Returns:

  1. nil

cm:notify_ambition_list_displayed(string faction key, string ambitions)

Notifies the game that an ambition list is being displayed for a faction.

Parameters:

1

string

Faction key, from the factions database table.

2

string

Comma-separated list of ambitions being displayed. Each ambition is a key from the missions database table.

Returns:

  1. nil

cm:set_is_sacred_egyptian_region(string region key, boolean is sacred)

Sets whether a region is a sacred egyptian region.

Parameters:

1

string

Region key, from the regions table.

2

boolean

Is the region a sacred egyptian region.

Returns:

  1. nil

cm:set_is_sacred_hatti_region(string region key, boolean is sacred)

Set whether a region is a sacred hatti region.

Parameters:

1

string

Region key, from the regions table.

2

boolean

Is the region a sacred hatti region.

Returns:

  1. nil

cm:add_realm(string realm key)

Inform the model of the existence of a realm with the supplied key.

Parameters:

1

string

Realm key.

Returns:

  1. nil

cm:set_region_realm(string region key, string realm key)

Sets the realm associated with a region.

Parameters:

1

string

Region key, from the regions table.

2

string

Realm key.

Returns:

  1. nil

cm:add_god_to_realm(string realm key, string god name, string icon path)

Add a god to the specified realm.

Parameters:

1

string

Realm key.

2

string

God localised name key. Localisation key for the title. This should be supplied in the full [table]_[field]_[key] localisation format.

3

string

God icon path, from the working data folder.

Returns:

  1. nil

cm:add_overriden_god_for_region(string realm key, string god name, string icon path)

Add a god override for a specific region, replacing any gods associated with the region's realm.

Parameters:

1

string

Realm key.

2

string

God localised name key. Localisation key for the title. This should be supplied in the full [table]_[field]_[key] localisation format.

3

string

God icon path, from the working data folder.

Returns:

  1. nil

cm:notify_god_total_favour_changed(string faction key, string god key, number favour)

Notifies the game that the total favour for a particular god has changed.

Parameters:

1

string

Faction key, from the factions database table.

2

string

God key.

3

number

Total favour.

Returns:

  1. nil

cm:notify_sea_peoples_invasion_army(
  
number military force cqi,
  string
target type,
  string
target key,
  string
target faction key,
  number
target pos x,
  number
target pos y
)

Notifies the game that a Sea Peoples invasion army has appeared.

Parameters:

1

number

military force cqi

2

string

target type

3

string

target key

4

string

target faction key

5

number

target pos x

6

number

target pos y

Returns:

  1. nil

cm:add_blood_river(string id, string tooltip key, number x, number y)

Adds a blood river to the campaign map, or updates an existing one if there is already a blood river with the given id.

Parameters:

1

string

Unique river id.

2

string

Tooltip key, in the full [table]_[field]_[key] localisation format.

3

number

Logical position x.

4

number

Logical position y.

Returns:

  1. nil

cm:clear_campaign_blood_rivers()

Clears all blood rivers on the campaign map.

Returns:

  1. nil

cm:set_info_additional_ers_effect_bundle(custom_effect_bundle custom effect bundle)

Supplies an additional ERS effect bundle. This is for situational use as a part of the scripted ERS system.

Parameters:

1

custom_effect_bundle

custom effect bundle

Returns:

  1. nil

cm:set_info_additional_agent_action_effect_bundle(custom_effect_bundle custom effect bundle)

Supplies an additional agent action efect bundle. This is for situational use a part of a scripted agent action system.

Parameters:

1

custom_effect_bundle

custom effect bundle

Returns:

  1. nil
Back to top

Pending Battle Modification

cm:add_custom_battlefield(
  
string id,
  number
x,
  number
y,
  number
radius,
  boolean
dump campaign,
  string
loading screen override,
  string
script override,
  string
whole battle override,
  number
human alliance,
  boolean
launch immediately,
  boolean
is land battle,
  boolean
force autoresolve result,
  boolean
force land battle during siege,
  boolean
disable fortification towers (for siege battles)
)

Adds a record which modifies or completely overrides a battle involving the local player generated from campaign, if that battle happens within a certain supplied radius of a supplied campaign anchor position. Aspects of the battle may be specified, such as the loading screen and script to use, or the entire battle may be subsituted with an xml battle.

Parameters:

1

string

Id for this custom battle record. This may be used to later remove this override with cm:remove_custom_battlefield.

2

number

X logical co-ordinate of anchor position.

3

number

Y logical co-ordinate of anchor position.

4

number

Radius around anchor position. If a battle is launched within this radius of the anchor position and it involves the local player, then the battle is modified/overridden.

5

boolean

If set to true, the battle makes no attempt to load back into this campaign after completion.

6

string

Key of a custom loading screen to use, from the custom_loading_screens table. A blank string may be supplied to not override the loading screen. This is ignored if the entire battle is overriden with a battle xml, as that may specify a loading screen override.

7

string

Path to a script file to load with the battle, from the working data folder. A blank string may be supplied to not override the loading screen. This is ignored if the entire battle is overriden with a battle xml, as that may specify a script override.

8

string

Path to an battle xml file which overrides the whole battle.

9

number

Sets the index of the human alliance, 0 or 1, if setting a battle xml to override the whole battle. If not setting a battle xml this number is ignored.

10

boolean

Launch the battle immediately without saving the campaign first.

11

boolean

Sets whether the following battle is a land battle. This is only required if when launching the battle immediately.

12

boolean

If set to true, this forces the application of the autoresolver to the battle result after the battle, regardless of what happened in the battle itself. This is of most use for faking a battle result of an xml battle, which would otherwise return with no result.

13

boolean

If set to true, this will force a siege battle to be fought outside the settlement as a land battle

14

boolean

If set to true, fortification towers will not shoot

Returns:

  1. nil

cm:remove_custom_battlefield(string id)

Removes a custom battle override previously set with cm:add_custom_battlefield.

Parameters:

1

string

id

Returns:

  1. nil

cm:win_next_autoresolve_battle(string faction key)

The specified faction will win the next autoresolve battle.

Parameters:

1

string

Faction key, from the factions table.

Returns:

  1. nil

cm:modify_next_autoresolve_battle(
  
number attacker win chance,
  number
defender win chance,
  number
attacker losses modifier,
  number
defender losses modifier,
  boolean
kill loser
)

Modifies the result of the next autoresolved battle.

Parameters:

1

number

Attacker win chance as a unary (0-1) value.

2

number

Defender win chance as a unary (0-1) value.

3

number

Multiplier for losses sustained by the attacker.

4

number

Multiplier for losses sustained by the defender.

5

boolean

Forces the loser of the battle to be wiped out if set to true.

Returns:

  1. nil

cm:override_attacker_win_chance_prediction(number chance)

Set the attackers predicted win chance percentage for the next battle, affecting the balance of power shown on the pre-battle screen. This will not change the result.
This function will only work if called while the pending battle is being set up.

Parameters:

1

number

Chance as a percentage, so a value of 50 would display a 50/50 attacker/defender balance.

Returns:

  1. nil

cm:skip_winds_of_magic_gambler(boolean should skip)

Sets whether the winds of magic gambler panel should be shown in the next player battle or not. The setting only affects the next battle.

Parameters:

1

boolean

should skip

Returns:

  1. nil

cm:force_night_battle(string enable)

Forces the currently pending battle to be a night battle even if the general does not have the skill.

Parameters:

1

string

will force the battle to be a night battle if this is true

Returns:

  1. nil

cm:force_pending_battle_complete()

Forces the pending battle to complete, closing the pre-battle screen. This is intended for use pre-battle and might not work reliably if used at other times.

Returns:

  1. nil

cm:set_dynamic_weather_force_disabled(boolean disable)

Enables or disables dynamic weather in the forthcoming battle.

Parameters:

1

boolean

disable

Returns:

  1. nil

cm:pending_battle_select_divine_ability(string ability key, string faction key)

Sets the selected divine ability for the specified faction in the pending battle.

Parameters:

1

string

Army special ability key, from the army_special_abilities database table.

2

string

Faction key, from the factions database table.

Returns:

  1. nil
Back to top

AI

The functions in this section relate to campaign AI. Some functions allow blocking or promotion of strategic stances, which is a driver of how much an AI faction is predisposed to like another faction. Strategic stances may be specified by one of the following strings:

  • CAI_STRATEGIC_STANCE_BEST_FRIENDS

  • CAI_STRATEGIC_STANCE_VERY_FRIENDLY

  • CAI_STRATEGIC_STANCE_FRIENDLY

  • CAI_STRATEGIC_STANCE_NEUTRAL

  • CAI_STRATEGIC_STANCE_UNFRIENDLY

  • CAI_STRATEGIC_STANCE_VERY_UNFRIENDLY

  • CAI_STRATEGIC_STANCE_BITTER_ENEMIES
  • Stance by string
    CAI_STRATEGIC_STANCE_BEST_FRIENDS

    Strategic stances are different to, but loosely correlated with, the attitude score that is shown on the diplomacy screen. Generally speaking, diplomatic events (e.g. gifts, trespassing) lead to changes in attitude, which leads to changes in strategic stance, which leads to changes in behaviour. By setting two hostile factions to be best friends they will start being generally nicer to one another while still appearing to be hostile (although their attitude will likely improve over time due to positive events).

    cm:force_change_cai_faction_personality(string faction key, string personality key)

    Force the specified faction to adopt the specified AI personality.

    Parameters:

    1

    string

    Faction key, from the factions table.

    2

    string

    Personality key, from the cai_personalities table.

    Returns:

    1. nil

    cm:set_campaign_ai_force_all_factions_bordering_humans_to_have_invasion_behaviour(
      
    boolean force behaviour
    )

    Force minor (non-rebel) factions to have the region group expansion behaviour if they border player-owned territory.

    Parameters:

    1

    boolean

    force behaviour

    Returns:

    1. nil

    cm:set_campaign_ai_force_all_factions_bordering_human_vassals_or_subjects_to_have_invasion_behaviour(
      
    boolean force behaviour
    )

    Force minor (non-rebel) factions to have the region group expansion behaviour if they border player-protected factions.

    Parameters:

    1

    boolean

    force behaviour

    Returns:

    1. nil

    cm:cai_strategic_stance_manager_block_all_stances_but_that_specified_towards_target_faction(
      
    string faction key,
      string
    target faction key,
      string
    strategic stance key
    )

    Sets one faction's stance towards another to the supplied strategic stance.

    Parameters:

    1

    string

    Faction key, from the factions table.

    2

    string

    Target faction key, from the factions table.

    3

    string

    Strategic stance key - see the list at the top of this section.

    Returns:

    1. nil

    cm:cai_strategic_stance_manager_promote_specified_stance_towards_target_faction(
      
    string faction key,
      string
    target faction key,
      string
    strategic stance key
    )

    Makes it much more likely that one faction's stance towards another will be the supplied strategic stance.

    Parameters:

    1

    string

    Faction key, from the factions table.

    2

    string

    Target faction key, from the factions table.

    3

    string

    Strategic stance key - see the list at the top of this section.

    Returns:

    1. nil

    cm:cai_force_personality_change(string faction key)

    Forces the specified faction to pick a new AI personality from their available pool. "All" may be supplied in place of a faction key to force all factions to change personalities.

    Parameters:

    1

    string

    Faction key, from the factions table, or "all".

    Returns:

    1. nil

    cm:cai_force_personality_change_with_override_round_number(string faction key, number round number)

    Within the ai personality assignment system it is possible to set up weightings between rounds and personalities, allowing for certain personalities to be more or less likely to be chosen depending on the turn number (so the AI changes behaviour over time). This command forces the specified faction to pick a new AI personality from their available pool, based on the supplied round number rather than the actual round number. "All" may be supplied in place of a faction key to force all factions to change personalities in this way.

    Parameters:

    1

    string

    Faction key, from the factions table, or "all".

    2

    number

    Override for turn/round number.

    Returns:

    1. nil

    cm:cai_strategic_stance_manager_force_stance_update_between_factions(
      
    string faction key,
      string
    target faction key
    )

    Forces a stance update from one faction to another faction. The AI picks an appropriate new strategic stance.

    Parameters:

    1

    string

    Faction key, from the factions table.

    2

    string

    Target faction key, from the factions table.

    Returns:

    1. nil

    cm:cai_strategic_stance_manager_set_stance_promotion_between_factions_for_a_given_stance(
      
    string faction key,
      string
    target faction key,
      string
    strategic stance key,
      number
    start round,
      number
    start level,
      number
    end round,
      number
    end level
    )

    Sets up a process which promotes a particular strategic stance from one faction to a target faction over a number of turns.

    Parameters:

    1

    string

    Faction key, from the factions table.

    2

    string

    Target faction key, from the factions table.

    3

    string

    Strategic stance key - see the list at the top of this section.

    4

    number

    Starting round number.

    5

    number

    Starting stance level. This is a numerical indicator of how likely this stance is to be chosen.

    6

    number

    End round number.

    7

    number

    End stance level. This is a numerical indicator of how likely this stance is to be chosen.

    Returns:

    1. nil

    cm:cai_strategic_stance_manager_clear_all_promotions_between_factions(
      
    string faction key,
      string
    target faction key
    )

    Clears any existing scripted stance promotions from one faction to a target faction.

    Parameters:

    1

    string

    Faction key, from the factions table.

    2

    string

    Target faction key, from the factions table.

    Returns:

    1. nil

    cm:cai_strategic_stance_manager_set_stance_blocking_between_factions_for_a_given_stance(
      
    string faction key,
      string
    target faction key,
      string
    strategic stance key,
      number
    round number
    )

    Blocks a specific strategic stance from one faction to another faction until a specified round number.

    Parameters:

    1

    string

    Faction key, from the factions table.

    2

    string

    Target faction key, from the factions table.

    3

    string

    Strategic stance key - see the list at the top of this section.

    4

    number

    Final round number (inclusive) of blocking behaviour.

    Returns:

    1. nil

    cm:cai_strategic_stance_manager_clear_all_blocking_between_factions(
      
    string faction key,
      string
    target faction key
    )

    Clears any existing scripted stance promotions between one faction and a target.

    Parameters:

    1

    string

    Faction key, from the factions table.

    2

    string

    Target faction key, from the factions table.

    Returns:

    1. nil

    cm:cai_disable_movement_for_character(string character lookup)

    Prevents the AI from being able to move a character. Other sources of character movement (e.g. the script or the player) will work as normal.

    Parameters:

    1

    string

    Character lookup string - see Character Lookups for more information.

    Returns:

    1. nil

    cm:cai_enable_movement_for_character(string character lookup)

    Allows the AI to move a character again after it was previously blocked with cm:cai_disable_movement_for_character.

    Parameters:

    1

    string

    Character lookup string - see Character Lookups for more information.

    Returns:

    1. nil

    cm:cai_disable_movement_for_faction(string faction key)

    Prevents the AI from being able to move any characters in a faction. Other sources of character movement (e.g. the script or the player) will work as normal.

    Parameters:

    1

    string

    Faction key, from the factions table.

    Returns:

    1. nil

    cm:cai_enable_movement_for_faction(string faction key)

    Allows the AI to move characters in a faction again after it was previously blocked with cm:cai_disable_movement_for_faction.

    Parameters:

    1

    string

    Faction key, from the factions table.

    Returns:

    1. nil

    cm:cai_disable_command_assignment_for_character(string character lookup)

    Prevents the AI from assigning the specified character to a position of command.

    Parameters:

    1

    string

    Character lookup string - see Character Lookups for more information.

    Returns:

    1. nil

    cm:cai_enable_command_assignment_for_character(string character lookup)

    Allows the AI to assigning the specified character to a position of command again after it was previously blocked with cm:cai_disable_command_assignment_for_character.

    Parameters:

    1

    string

    Character lookup string - see Character Lookups for more information.

    Returns:

    1. nil

    cm:cai_add_region_hint(faction faction, string region key)

    Adds a region to the VICTORY_CONDITION hint list of the faction.

    Parameters:

    1

    faction

    Faction for which the hint will be added.

    2

    string

    Region key for region to be added.

    Returns:

    1. nil

    cm:cai_remove_region_hint(faction faction, string region key)

    Removes a region from the VICTORY_CONDITION hint list of the faction, after it has previously been added via cm:cai_add_region_hint.

    Parameters:

    1

    faction

    Faction for which the hint will be added.

    2

    string

    Region key for region to be added.

    Returns:

    1. nil

    cm:cai_disable_targeting_against_region_slot(string region slot key)

    Disables AI targeting of a specified region slot.

    Parameters:

    1

    string

    region slot key

    Returns:

    1. nil

    cm:cai_enable_targeting_against_region_slot(string region slot key)

    Re-enables AI targeting of a specified region slot.

    Parameters:

    1

    string

    region slot key

    Returns:

    1. nil

    cm:cai_disable_targeting_against_settlement(string settlement key)

    Disables AI targeting of a specified settlement.

    Parameters:

    1

    string

    settlement key

    Returns:

    1. nil

    cm:cai_enable_targeting_against_settlement(string settlement key)

    Re-enables AI targeting of a specified settlement.

    Parameters:

    1

    string

    settlement key

    Returns:

    1. nil
    Back to top

    AI Script Context

    Script context values may be set to compel changes in AI behaviour based on scripted events (e.g. a scripted invasion). AI personalities can be set up in the database to adopt different policies and alter their priorities in response to scripted context values. Context values may be set globally with cm:cai_set_global_script_context, or per-faction with cm:cai_set_faction_script_context.

    The following strings are valid AI script context values:

    • "DEFAULT"
    • "ALPHA"
    • "BETA"
    • "GAMMA"
    • "DELTA"
    • "EPSILON"
    • "ZETA"

    The meaning of these values and the changes they effect are entirely defined within the AI-related tables in the dabatase.

    cm:cai_set_global_script_context(string value)

    Sets the global script context value.

    Parameters:

    1

    string

    Value to set. Valid values are "DEFAULT", "ALPHA", "BETA", "GAMMA", "DELTA", "EPSILON" and "ZETA".

    Returns:

    1. nil

    cm:cai_get_global_script_context()

    Returns the current global script context value.

    Returns:

    1. string global script context value

    cm:cai_clear_global_script_context()

    Clears the current global script context value, setting it to "DEFAULT".

    Returns:

    1. nil

    cm:cai_set_faction_script_context(string faction key, string value)

    Sets the script context value for the specified faction.

    Parameters:

    1

    string

    Faction key, from the factions database table.

    2

    string

    Value to set. Valid values are "DEFAULT", "ALPHA", "BETA", "GAMMA", "DELTA", "EPSILON" and "ZETA".

    Returns:

    1. nil

    cm:cai_get_faction_script_context(string faction key)

    Returns the current script context value for the specified faction.

    Parameters:

    1

    string

    Faction key, from the factions database table.

    Returns:

    1. string script context value

    cm:cai_clear_faction_script_context(string faction key)

    Clears the script context value for the specified faction, setting it to "DEFAULT".

    Parameters:

    1

    string

    Faction key, from the factions database table.

    Returns:

    1. nil
    Back to top

    Audio

    The functions in this section relate to manipulating audio.

    cm:activate_music_trigger(string event)

    Triggers any valid Wwise event.

    Parameters:

    1

    string

    Wwise event key.

    Returns:

    1. nil

    cm:trigger_sound_event(string sound_event)

    Triggers any valid sound event by key.

    Parameters:

    1

    string

    Sound event key.

    Returns:

    1. nil

    cm:trigger_music_state(
      
    string music_faction,
      number
    valid_timer,
      boolean
    instant_change,
      [string
    sound_event]
    )

    Triggers a change to music state.

    Parameters:

    1

    string

    Music faction key.

    2

    number

    Float timer.

    3

    boolean

    Instant change flag.

    4

    string

    optional, default value=false

    Optional sound event.

    Returns:

    1. nil

    cm:update_sound_state(string sound state group id, string sound state id)

    Updates the sound state. Sound state id strings may be obtained from the audio team.

    Parameters:

    1

    string

    sound state group id

    2

    string

    sound state id

    Returns:

    1. nil

    cm:set_incident_ambience_sound(string incident name, table regions)

    Sets incident id and regions for the ambient sound trigger.

    Parameters:

    1

    string

    Incident name, from the incidents database table.

    2

    table

    Indexed table of region keys, each from the campaign_map_regions database table.

    Returns:

    1. nil

    cm:set_music_vm_bool(string trigger, boolean value)

    Sets a boolean setting within the music virtual machine. Available settings are available from the audio team.

    Parameters:

    1

    string

    trigger

    2

    boolean

    value

    Returns:

    1. nil
    Back to top

    Shared States

    The shared states system allows variables to be set and read by script, the campaign model and the UI. The variables in question must be agreed between all parties.

    Shared state values may be read by script using the shared_states_manager interface, accessible from the model interface. Values may be written to using the functions below.

    The script event SharedStateChanged is triggered whenever a shared states value is changed.

    cm:set_script_state([object object], string key, value value)

    Sets the value of a shared state. An optional object with which the value is associated, such as a faction script interface, may be supplied as the first argument.

    Parameters:

    1

    object

    optional, default value=nil

    Interface object to associate the shared value with. This argument may be omitted.

    2

    string

    Key of shared value to set.

    3

    value

    Value to set. Supported value types are boolean, number and string.

    Returns:

    1. nil

    Example - Setting shared value "faction_progress_counter" related to a faction:

    cm:set_script_state(cm:get_faction("wh_main_emp_empire"), "faction_progress_counter", 5)

    Example - Setting global shared value:

    cm:set_script_state("all_factions_progress_counter", 15)

    cm:remove_script_state([object object], string key)

    Removes a value from the shared state system. An optional object with which the value is associated, such as a faction script interface, may be supplied as the first argument.

    Parameters:

    1

    object

    optional, default value=nil

    Interface object to associate the shared value with. This argument may be omitted.

    2

    string

    Key of shared value to set.

    Returns:

    1. nil

    cm:get_bool_script_state([object object], string key)

    Gets the value of a boolean shared state. An optional object with which the value is associated, such as a faction script interface, may be supplied as the first argument.

    Parameters:

    1

    object

    optional, default value=nil

    Interface object to associate the shared value with. This argument may be omitted.

    2

    string

    Key of shared value to get.

    Returns:

    1. boolean boolean, false if no shared state with that key-entity exists

    Example - Getting shared value "is_something" related to a faction:

    local is_something = cm:get_bool_script_state(cm:get_faction("wh_main_emp_empire"), "is_something")

    Example - Setting global shared value:

    local end_game_event_has_started = cm:get_bool_script_state("end_game_event_has_started")

    cm:get_float_script_state([object object], string key)

    Gets the value of a float shared state. An optional object with which the value is associated, such as a faction script interface, may be supplied as the first argument.

    Parameters:

    1

    object

    optional, default value=nil

    Interface object to associate the shared value with. This argument may be omitted.

    2

    string

    Key of shared value to get.

    Returns:

    1. number number, 0 if no shared state with that key-entity exists

    Example - Getting shared value "num_special_faction_mechanic_points" related to a faction:

    local num_special_faction_mechanic_points = cm:get_float_script_state(cm:get_faction("wh_main_emp_empire"), "num_special_faction_mechanic_points")

    Example - Setting global shared value:

    local num_factions_unlocked_specific_mechanic = cm:get_float_script_state("num_factions_unlocked_specific_mechanic")

    cm:get_string_script_state([object object], string key)

    Gets the value of a string shared state. An optional object with which the value is associated, such as a faction script interface, may be supplied as the first argument.

    Parameters:

    1

    object

    optional, default value=nil

    Interface object to associate the shared value with. This argument may be omitted.

    2

    string

    Key of shared value to get.

    Returns:

    1. string string, empty string if no shared state with that key-entity exists

    Example - Getting shared value "favorite_lord_key" related to a faction:

    local favorite_lord_key = cm:get_string_script_state(cm:get_faction("wh_main_emp_empire"), "favorite_lord_key")

    Example - Setting global shared value:

    local world_leader_key = cm:get_string_script_state("world_leader_key")
    Back to top

    Custom Objects

    cm:create_new_custom_resource_cost()

    Creates and returns a custom_resource_cost object. This object can then be customised by calling functions on the interface it provides, and then used for various purposes.

    Returns:

    1. custom_resource_cost custom resource cost

    cm:create_custom_unit_from_key()

    Creates and returns a custom_unit object. The unit can then be customised by calling functions on the interface it provides.

    Returns:

    1. custom_unit custom unit
    Back to top

    Achievements

    cm:unlock_achievement(string faction key, string achievement key)

    Unlocks an achievement for a faction.

    Parameters:

    1

    string

    Faction key, from the factions database table.

    2

    string

    from the achievements database table.

    Returns:

    1. nil
    Last updated 8/23/2024 4:55:15 PM