#Add the following definitions to the end (!) of header_operations.py
break_loop = 8 #(break_loop), #Break out of a loop, no matter how deeply nested in try_begin blocks.
continue_loop = 9 #(continue_loop), #Continue to the next iteration of a loop, no matter how deeply nested in try_begin blocks.
try_for_agents = 12 #(try_for_agents, <cur_agent_no>, [<position_no>], [<radius>]), #Loops through agents in the scene. If [<position_no>] and [<radius>] are defined, it will only loop through agents in the chosen area.
try_for_attached_parties = 15 #(try_for_attached_parties, <cur_party_no>, <party_no>), #Loops through parties attached to <party_no>.
try_for_active_players = 16 #(try_for_active_players, <cur_player_no>, [<skip_server>]), #Loops through all active players. If [<skip_server>] is set to non-zero, the server player (0) will be skipped.
try_for_prop_instances = 17 #(try_for_prop_instances, <cur_instance_no>, [<scene_prop_kind_no>]), #Loops through scene prop instances of <scene_prop_kind_no>. If <scene_prop_kind_no> is not set it will loop through all scene prop instances in the scene.
server_set_anti_cheat = 477 #(server_set_anti_cheat), #Disabled by WSE
server_set_max_num_players = 491 #(server_set_max_num_players, <max_players>, [<max_private_players>]), #Sets maximum players to <max_players> and maximum private players to [<max_private_players>] (default = same as <max_players>). Both values must be in the range 2-250, [<max_private_players>] can't be lower than <max_players>
is_vanilla_warband = 1004 #(is_vanilla_warband), #Fails only when WSE is running
mission_cam_set_aperture = 2014 #(mission_cam_set_aperture, <aperture>), #Changes the mission cam aperture
store_trigger_param = 2074 #(store_trigger_param, <destination>, [<param_no>]), #Stores trigger param no. <param_no> into <destination>
menu_create_new = 2400 #(menu_create_new, <destination>, <text>, [<mesh_name>], [<flags>], [<script_no>], [<script_param>]), #Creates a dynamic menu and stores its id into <destination>. <script_no> (-1 for no script) will be called with params 1 = menu_no, 2 = script_param when the operations block is executed
menu_add_item = 2401 #(menu_add_item, <menu_no>, <text>, [<conditions_script_no>], [<consequences_script_no>], [<script_param>]), #Adds a new menu item to <menu_no>. <conditions_script_no> and <consequences_script_no> (-1 for no script) will be called with params 1 = menu_no, 2 = script_param when the conditions/consequences blocks are executed
menu_clear_items = 2402 #(menu_clear_items, <menu_no>), #Removes all menu items from <menu_no>
menu_clear_generated = 2403 #(menu_clear_generated), #Removes all dynamic menus
overlay_get_val = 2500 #(overlay_get_val, <destination>, <overlay_no>), #Stores <overlay_no>'s value into <destination>
str_equals = 2600 #(str_equals, <string_1>, <string_2>, [<case_insensitive>]), #Fails if <string_1> is not equal to <string_2>
str_contains = 2601 #(str_contains, <string_1>, <string_2>, [<case_insensitive>]), #Fails if <string_1> doesn't contain <string_2>
str_starts_with = 2602 #(str_starts_with, <string_1>, <string_2>, [<case_insensitive>]), #Fails if <string_1> doesn't start with <string_2>
str_ends_with = 2603 #(str_ends_with, <string_1>, <string_2>, [<case_insensitive>]), #Fails if <string_1> doesn't end with <string_2>
str_is_alpha = 2604 #(str_is_alpha, <string_1>, [<index>]), #Fails if character [<index>] of <string_1> isn't alphabetic. If [<index>] is not defined or is -1, the entire string is checked
str_is_digit = 2605 #(str_is_digit, <string_1>, [<index>]), #Fails if character [<index>] of <string_1> isn't a digit. If [<index>] is not defined or is -1, the entire string is checked
str_is_whitespace = 2606 #(str_is_whitespace, <string_1>, [<index>]), #Fails if character [<index>] of <string_1> isn't whitespace. If [<index>] is not defined or is -1, the entire string is checked
str_length = 2607 #(str_length, <destination>, <string_1>), #Stores the length of <string_1> into <destination>
str_index_of = 2608 #(str_index_of, <destination>, <string_1>, <string_2>, [<start>], [<end>]), #Stores the index of the first occurrence of <string_2> in <string_1> into <destination>. Search bounds can be specified with [<start>] and [<end>]
str_last_index_of = 2609 #(str_last_index_of, <destination>, <string_1>, <string_2>, [<start>], [<end>]), #Stores the index of the last occurrence of <string_2> in <string_1> into <destination>. Search bounds can be specified with [<start>] and [<end>]
str_get_char = 2610 #(str_get_char, <destination>, <string_1>, [<index>]), #Stores the numeric value of the <index>th character in <string_1> into <destination>
str_to_num = 2611 #(str_to_num, <destination>, <string_1>, [<use_fixed_point_multiplier>]), #Stores the numeric value of <string_1> into <destination>. Decimal values will be rounded to integers, for more precision set [<use_fixed_point_multiplier>] to non-zero
str_compare = 2612 #(str_compare, <destination>, <string_1>, <string_2>, [<case_insensitive>]), #Stores the relationship between <string_1> and <string_2> into <destination> (-1: s1 < s2, 0: s1 = s2, 1: s1 > s2)
str_split = 2613 #(str_split, <destination>, <string_register_no>, <string_1>, <delimiter>, [<skip_empty>], [<max>]), #Splits <string_1> using <delimiter> into a range of string registers, starting from <string_register_no>, storing [<max>] substrings at most (default = unlimited), ignoring empty (zero length) substrings if [<skip_empty>] (default = false). Stores the amount of substrings split into <destination>
str_sort = 2614 #(str_sort, <string_register_no>, [<count>], [<case_insensitive>], [<descending>]), #Sorts a range of [<count>] string registers starting from <string_register_no>
str_store_lower = 2615 #(str_store_lower, <string_register_no>, <string_1>), #Stores the lowercase version of <string_1> into <string_register_no>
str_store_upper = 2616 #(str_store_upper, <string_register_no>, <string_1>), #Stores the uppercase version of <string_1> into <string_register_no>
str_store_trim = 2617 #(str_store_trim, <string_register_no>, <string_1>, [<trim_mode>]), #Stores the whitespace trimmed version of <string_1> into <string_register_no>. [<trim_mode>]: 0 (default) = trim leading and trailing, 1 = trim leading, 2 = trim trailing
str_store_replace = 2618 #(str_store_replace, <string_register_no>, <string_1>, <string_2>, <string_3>), #Stores <string_1> into <string_register_no>, replacing occurrences of <string_2> with <string_3>
str_store_md5 = 2619 #(str_store_md5, <string_register_no>, <string_1>), #MD5 encrypts <string_1> and stores it into <string_register_no>
str_store_substring = 2620 #(str_store_substring, <string_register_no>, <string_1>, [<start>], [<length>]), #Stores a substring of <string_1> into <string_register_no>, starting from <start>. If [<length>] is not specified, everything on the right of <start> will be used
str_store_reverse = 2621 #(str_store_reverse, <string_register_no>, <string_1>), #Stores the reverse of <string_1> into <string_register_no>
str_store_join = 2622 #(str_store_join, <string_register_no>, <start_string_register_no>, <count>, [<delimiter>]), #Joins <count> string registers starting from string register <start_string_register_no>, using [<delimiter>] (default = empty string) and stores them into <string_register_no>
str_store_replace_spaces_with_underscores = 2623 #(str_store_replace_spaces_with_underscores, <string_register_no>, <string_1>), #Stores <string_1> into <string_register_no>, replacing all spaces with underscores
str_store_replace_underscores_with_spaces = 2624 #(str_store_replace_underscores_with_spaces, <string_register_no>, <string_1>), #Stores <string_1> into <string_register_no>, replacing all underscores with spaces
str_store_multiplayer_profile_name = 2625 #(str_store_multiplayer_profile_name, <string_register_no>, <profile_no>), #Stores <profile_no>'s name into <string_register_no>
str_store_face_keys = 2626 #(str_store_face_keys, <string_register_no>, <face_key_register>), #Stores the string representation of <face_key_register> into <string_register_no>
str_store_module_setting = 2627 #(str_store_module_setting, <string_register_no>, <setting>), #Stores the string value (empty if not found) of <setting> in module.ini
str_store_server_password_admin = 2628 #(str_store_server_password_admin, <string_register_no>), #Stores the server administrator password into <string_register_no>
str_store_server_password_private = 2629 #(str_store_server_password_private, <string_register_no>), #Stores the server private player password into <string_register_no>
str_store_overlay_text = 2630 #(str_store_overlay_text, <string_register_no>, <overlay_no>), #Stores <overlay_no>'s text into <string_register_no>
str_store_player_ip = 2631 #(str_store_player_ip, <string_register_no>, <player_no>), #Stores <player_no>'s IP address into <string_register_no> (works only on servers)
face_keys_init = 2700 #(face_keys_init, <face_key_register>), #Zeroes <face_key_register>
face_keys_copy = 2701 #(face_keys_copy, <face_key_register_1>, <face_key_register_2>), #Copies <face_key_register_2> to <face_key_register_1>
face_keys_get_hair = 2702 #(face_keys_get_hair, <destination>, <face_key_register>), #Stores <face_key_register>'s hair value into <destination>
face_keys_set_hair = 2703 #(face_keys_set_hair, <face_key_register>, <hair_no>), #Sets <face_key_register>'s hair value
face_keys_get_beard = 2704 #(face_keys_get_beard, <destination>, <face_key_register>), #Stores <face_key_register>'s beard value into <destination>
face_keys_set_beard = 2705 #(face_keys_set_beard, <face_key_register>, <beard_no>), #Sets <face_key_register>'s beard value
face_keys_get_face_texture = 2706 #(face_keys_get_face_texture, <destination>, <face_key_register>), #Stores <face_key_register>'s face texture value into <destination>
face_keys_set_face_texture = 2707 #(face_keys_set_face_texture, <face_key_register>, <face_texture_no>), #Sets <face_key_register>'s face texture value
face_keys_get_hair_texture = 2708 #(face_keys_get_hair_texture, <destination>, <face_key_register>), #Stores <face_key_register>'s hair texture value into <destination>
face_keys_set_hair_texture = 2709 #(face_keys_set_hair_texture, <face_key_register>, <hair_texture_no>), #Sets <face_key_register>'s hair texture value
face_keys_get_hair_color = 2710 #(face_keys_get_hair_color, <destination>, <face_key_register>), #Stores <face_key_register>'s hair color value (in %%) into <destination>
face_keys_set_hair_color = 2711 #(face_keys_set_hair_color, <face_key_register>, <hair_color>), #Sets <face_key_register>'s hair color value (in %%)
face_keys_get_age = 2712 #(face_keys_get_age, <destination>, <face_key_register>), #Stores <face_key_register>'s age value (in %%) into <destination>
face_keys_set_age = 2713 #(face_keys_set_age, <face_key_register>, <age>), #Sets <face_key_register>'s age value (in %%)
face_keys_get_morph_key = 2714 #(face_keys_get_morph_key, <destination>, <face_key_register>, <key_no>), #Stores <face_key_register>'s morph key value (0-7) into <destination>
face_keys_set_morph_key = 2715 #(face_keys_set_morph_key, <face_key_register>, <key_no>, <value>), #Sets <face_key_register>'s morph key value (0-7)
face_keys_store_string = 2716 #(face_keys_store_string, <face_key_register>, <string>), #Initializes <face_key_register> using <string>
val_shr = 2800 #(val_shr, <value>, <shift>), #Performs an arithmetic right bit shift by <shift> on <value>
store_shr = 2801 #(store_shr, <destination>, <value>, <shift>), #Performs an arithmetic right bit shift by <shift> on <value> and stores the result into <destination>
val_lshr = 2802 #(val_lshr, <value>, <shift>), #Performs a logical right bit shift by <shift> on <value>
store_lshr = 2803 #(store_lshr, <destination>, <value>, <shift>), #Performs a logical right bit shift by <shift> on <value> and stores the result into <destination>
val_shl = 2804 #(val_shl, <value>, <shift>), #Performs a left bit shift by <shift> on <value>
store_shl = 2805 #(store_shl, <destination>, <value>, <shift>), #Performs a left bit shift by <shift> on <value> and stores the result into <destination>
val_xor = 2806 #(val_xor, <value1>, <value2>), #Performs a bitwise exclusive or between <value1> and <value2>
store_xor = 2807 #(store_xor, <destination>, <value1>, <value2>), #Performs a bitwise exclusive or between <value1> and <value2> and stores the result into <destination>
val_not = 2808 #(val_not, <value>), #Performs a bitwise complement on <value>
store_not = 2809 #(store_not, <destination>, <value>), #Performs a bitwise complement on <value> and stores the result into <destination>
player_get_face_keys = 2900 #(player_get_face_keys, <face_key_register>, <player_no>), #Stores <player_no>'s face keys into <face_key_register>
player_set_face_keys = 2901 #(player_set_face_keys, <player_no>, <face_key_register>, [<update_agent>]), #Sets <player_no>'s face keys to <face_key_register>. If [<update_agent>] is non-zero and the player has an agent, it will be updated
player_set_skin = 2902 #(player_set_skin, <player_no>, <skin_no>), #Sets <player_no>'s skin (gender) to <skin_no>. Server only, needs network_compatible = 0 in module.ini.(requires network_compatible = 0 in wse_settings.ini)
register_get = 3000 #(register_get, <destination>, <register_index>), #Stores the value of register no. <register_index> into <destination>
register_set = 3001 #(register_set, <register_index>, <value>), #Sets the value of register no. <register_index> to <value>
store_wse_version = 3002 #(store_wse_version, <destination>), #Stores the WSE version into destination
item_slot_gt = 3003 #(item_slot_gt, <item_kind_no>, <slot_no>, <value>), #Fails if <item_kind_no>'s slot <slot_no> is not greater than <value>
party_template_slot_gt = 3004 #(party_template_slot_gt, <party_template_no>, <slot_no>, <value>), #Fails if <party_template_no>'s slot <slot_no> is not greater than <value>
troop_slot_gt = 3005 #(troop_slot_gt, <troop_no>, <slot_no>, <value>), #Fails if <troop_no>'s slot <slot_no> is not greater than <value>
faction_slot_gt = 3006 #(faction_slot_gt, <faction_no>, <slot_no>, <value>), #Fails if <faction_no>'s slot <slot_no> is not greater than <value>
quest_slot_gt = 3007 #(quest_slot_gt, <quest_no>, <slot_no>, <value>), #Fails if <quest_no>'s slot <slot_no> is not greater than <value>
scene_slot_gt = 3008 #(scene_slot_gt, <site_no>, <slot_no>, <value>), #Fails if <site_no>'s slot <slot_no> is not greater than <value>
party_slot_gt = 3009 #(party_slot_gt, <party_no>, <slot_no>, <value>), #Fails if <party_no>'s slot <slot_no> is not greater than <value>
player_slot_gt = 3010 #(player_slot_gt, <player_id>, <slot_no>, <value>), #Fails if <player_id>'s slot <slot_no> is not greater than <value>
team_slot_gt = 3011 #(team_slot_gt, <team_no>, <slot_no>, <value>), #Fails if <team_no>'s slot <slot_no> is not greater than <value>
agent_slot_gt = 3012 #(agent_slot_gt, <agent_no>, <slot_no>, <value>), #Fails if <agent_no>'s slot <slot_no> is not greater than <value>
scene_prop_slot_gt = 3013 #(scene_prop_slot_gt, <scene_prop_instance_id>, <slot_no>, <value>), #Fails if <scene_prop_instance_id>'s slot <slot_no> is not greater than <value>
store_current_trigger = 3014 #(store_current_trigger, <destination>), #Stores the current trigger (0 if not in a trigger)
return_values = 3015 #(return_values, [<value_1>], [<value_2>], [<value_3>], [<value_4>], [<value_5>], [<value_6>], [<value_7>], [<value_8>], [<value_9>], [<value_10>], [<value_11>], [<value_12>], [<value_13>], [<value_14>], [<value_15>], [<value_16>]), #Stores up to 16 return values
store_num_return_values = 3016 #(store_num_return_values, <destination>), #Stores the amount of return values available into <destination>
store_return_value = 3017 #(store_return_value, <destination>, [<value>]), #Stores return value no. [<value>] into <destination>
dict_create = 3200 #(dict_create, <destination>), #Creates an empty dictionary object and stores it into <destination>
dict_free = 3201 #(dict_free, <dict>), #Frees the dictionary object <dict>. A dictionary can't be used after freeing it
dict_load_file = 3202 #(dict_load_file, <dict>, <file>, [<mode>]), #Loads a dictionary file into <dict>. Setting [<mode>] to 0 (default) clears <dict> and then loads the file, setting [<mode>] to 1 doesn't clear <dict> but overrides any key that's already present, setting [<mode>] to 2 doesn't clear <dict> and doesn't overwrite keys that are already present
dict_load_dict = 3203 #(dict_load_dict, <dict_1>, <dict_2>, [<mode>]), #Loads <dict_2> into <dict_1>. [<mode>]: see above
dict_save = 3204 #(dict_save, <dict>, <file>), #Saves <dict> into a file. For security reasons, <file> is just a name, not a full path, and will be stored into a WSE managed directory
dict_clear = 3205 #(dict_clear, <dict>), #Clears all key-value pairs from <dict>
dict_is_empty = 3206 #(dict_is_empty, <dict>), #Fails if <dict> is not empty
dict_has_key = 3207 #(dict_has_key, <dict>, <key>), #Fails if <key> is not present in <dict>
dict_get_size = 3208 #(dict_get_size, <destination>, <dict>), #Stores the count of key-value pairs in <dict> into <destination>
dict_delete_file = 3209 #(dict_delete_file, <file>), #Deletes dictionary file <file> from disk
dict_get_str = 3210 #(dict_get_str, <string_register_id>, <dict>, <key>, [<default>]), #Stores the string value paired to <key> into <string_register_id>. If the key is not found and [<default>] is set, [<default>] will be stored instead. If [<default>] is not set, an empty string will be stored
dict_get_int = 3211 #(dict_get_int, <destination>, <dict>, <key>, [<default>]), #Stores the numeric value paired to <key> into <destination>. If the key is not found and [<default>] is set, [<default>] will be stored instead. If [<default>] is not set, 0 will be stored
dict_set_str = 3212 #(dict_set_str, <dict>, <key>, <string_id>), #Adds (or changes) <string_id> as the string value paired to <key>
dict_set_int = 3213 #(dict_set_int, <dict>, <key>, <value>), #Adds (or changes) <value> as the numeric value paired to <key>
agent_get_item_modifier = 3300 #(agent_get_item_modifier, <destination>, <agent_no>), #Stores <agent_no>'s horse item modifier (-1 if agent is not a horse) into <destination>
agent_get_item_slot_modifier = 3301 #(agent_get_item_slot_modifier, <destination>, <agent_no>, <item_slot_no>), #Stores <agent_no>'s <item_slot_no> modifier into <destination>
agent_set_item_slot = 3302 #(agent_set_item_slot, <agent_no>, <item_slot_no>, <item_kind_no>, [<item_modifier_no>]), #Sets <agent_no>'s <item_slot_no> to <item_kind_no> with [<item_modifier_no>]
agent_get_animation_progress = 3303 #(agent_get_animation_progress, <destination>, <agent_no>, [<channel_no>]), #Stores <agent_no>'s channel [<channel_no>] animation progress (in %%) into <destination>
agent_get_dna = 3304 #(agent_get_dna, <destination>, <agent_no>), #Stores <agent_no>'s dna into <destination>
agent_ai_get_look_target = 3305 #(agent_ai_get_look_target, <destination>, <agent_no>), #Stores <agent_no>'s look target agent into <destination>
agent_ai_get_move_target = 3306 #(agent_ai_get_move_target, <destination>, <agent_no>), #Stores <agent_no>'s move target agent into <destination>
agent_ai_get_behavior_target = 3307 #(agent_ai_get_behavior_target, <destination>, <agent_no>), #Stores <agent_no>'s behavior target agent into <destination>
agent_get_ground_scene_prop = 3308 #(agent_get_ground_scene_prop, <destination>, <agent_no>), #Stores the prop instance on which <agent> is standing into <destination>
agent_get_item_slot_ammo = 3309 #(agent_get_item_slot_ammo, <destination>, <agent_no>, <item_slot_no>), #Stores <agent_no>'s <item_slot_no> ammo count into <destination>
agent_set_item_slot_ammo = 3310 #(agent_set_item_slot_ammo, <agent_no>, <item_slot_no>, <value>), #Sets <agent_no>'s <item_slot_no> ammo count to <value>
agent_get_item_slot_hit_points = 3311 #(agent_get_item_slot_hit_points, <destination>, <agent_no>, <item_slot_no>), #Stores <agent_no>'s <item_slot_no> shield hitpoints into <destination>
agent_set_item_slot_hit_points = 3312 #(agent_set_item_slot_hit_points, <agent_no>, <item_slot_no>, <value>), #Sets <agent_no>'s <item_slot_no> shield hitpoints to <value>
multiplayer_send_chat_message_to_player = 3400 #(multiplayer_send_chat_message_to_player, <player>, <sender>, <text>, [<type>]), #Sends <text> to <player> as a (native compatible) chat message by <sender>. Works only on servers. Both <player> and <sender> have to be valid and active player ids. [<type>]: 0 = chat, 1 = team chat
multiplayer_send_composite_message_to_player = 3401 #(multiplayer_send_composite_message_to_player, <player_no>, <message_type>, <message_register>), #Sends <message_register> with <message_type> to <player_no>(requires network_compatible = 0 in wse_settings.ini)
multiplayer_send_composite_message_to_server = 3402 #(multiplayer_send_composite_message_to_server, <message_type>, <message_register>), #Sends <message_register> with <message_type> to the server(requires network_compatible = 0 in wse_settings.ini)
multiplayer_get_cur_profile = 3403 #(multiplayer_get_cur_profile, <destination>), #Stores the current multiplayer profile into <destination>
multiplayer_get_num_profiles = 3404 #(multiplayer_get_num_profiles, <destination>), #Stores the number of multiplayer profiles into <destination>
multiplayer_profile_get_face_keys = 3405 #(multiplayer_profile_get_face_keys, <face_key_register>, <profile_no>), #Stores <profile_no>'s face keys into <face_key_register>
multiplayer_message_init = 3406 #(multiplayer_message_init, <message_register>), #Initializes (empties) <message_register>(requires network_compatible = 0 in wse_settings.ini)
multiplayer_message_put_string = 3407 #(multiplayer_message_put_string, <message_register>, <string>), #Puts <string> into <message_register>(requires network_compatible = 0 in wse_settings.ini)
multiplayer_message_put_int = 3408 #(multiplayer_message_put_int, <message_register>, <value>, [<num_bits>]), #Puts [<num_bits>] of <int> into <message_register>(requires network_compatible = 0 in wse_settings.ini)
multiplayer_message_put_position = 3409 #(multiplayer_message_put_position, <message_register>, <position_register>, [<local>]), #Puts <position_register> into <message_register>. Set [<local>] to non-zero for small, relative positions (default: scene positions)(requires network_compatible = 0 in wse_settings.ini)
multiplayer_message_put_coordinate = 3410 #(multiplayer_message_put_coordinate, <message_register>, <position_register>, [<local>]), #Puts x, y, z coordinates from <position_register> into <message_register>. Set [<local>] to non-zero for small, relative positions (default: scene positions)(requires network_compatible = 0 in wse_settings.ini)
multiplayer_message_put_face_keys = 3411 #(multiplayer_message_put_face_keys, <message_register>, <face_keys_register>), #Puts <face_keys_register> into <message_register>(requires network_compatible = 0 in wse_settings.ini)
multiplayer_cur_message_get_string = 3412 #(multiplayer_cur_message_get_string, <string_register>), #Stores a string from the current message register into <string_register>(requires network_compatible = 0 in wse_settings.ini)
multiplayer_cur_message_get_int = 3413 #(multiplayer_cur_message_get_int, <destination>, [<num_bits>]), #Stores [<num_bits>] of an int from the current message register into <destination>. [<num_bits>] MUST match the number of bits sent(requires network_compatible = 0 in wse_settings.ini)
multiplayer_cur_message_get_position = 3414 #(multiplayer_cur_message_get_position, <position_register>, [<local>]), #Stores a position from the current message register into <position_register>. [<local>] MUST match the type sent(requires network_compatible = 0 in wse_settings.ini)
multiplayer_cur_message_get_coordinate = 3415 #(multiplayer_cur_message_get_coordinate, <position_register>, [<local>]), #Stores x, y, z coordinates from the current message register into <position_register>. [<local>] MUST match the type sent(requires network_compatible = 0 in wse_settings.ini)
multiplayer_cur_message_get_face_keys = 3416 #(multiplayer_cur_message_get_face_keys, <face_keys_register>), #Stores face keys from the current message register into <face_keys_register>(requires network_compatible = 0 in wse_settings.ini)
server_set_password_admin = 3500 #(server_set_password_admin, <password>), #Sets <password> as server administrator password
server_set_password_private = 3501 #(server_set_password_private, <password>), #Sets <password> as server private player password
server_map_rotation_get_count = 3502 #(server_map_rotation_get_count, <destination>), #Stores the number of maps in rotation into <destination>
server_map_rotation_get_index = 3503 #(server_map_rotation_get_index, <destination>), #Stores the current map rotation index into <destination>
server_map_rotation_set_index = 3504 #(server_map_rotation_set_index, <index>), #Sets the current rotation index to <index>
server_map_rotation_get_map = 3505 #(server_map_rotation_get_map, <destination>, <index>), #Stores the map at <index> into <destination>
server_map_rotation_add_map = 3506 #(server_map_rotation_add_map, <site_no>, [<index>]), #Adds <site_no> to the map rotation at [<index>]
server_map_rotation_remove_map = 3507 #(server_map_rotation_remove_map, [<index>]), #Removes the map at [<index>] from the map rotation (does not work when only one left)
store_cur_mission_template_no = 3600 #(store_cur_mission_template_no, <destination>), #Stores the current mission template no
set_default_item_prune_time = 3601 #(set_default_item_prune_time, <type>, <prune_time>), #Sets the default prune time to <prune_time> (in seconds) for all dropped items of type <type> spawned after the call. A negative value means item are persistent. Valid types are: 6 (items dropped by player), 7 (missiles), 8 (broken shields), 9 (items dropped on death)
prop_instance_clear_attached_missiles = 3602 #(prop_instance_clear_attached_missiles, <scene_prop_instance_id>), #Removes all attached missiles from scene prop instance <scene_prop_instance_id>. Works only with dynamic scene props (non-retrievable missiles)
spawn_missile = 3603 #(spawn_missile, <agent_no>, <position>, <velocity>, <weapon_item_no>, <missile_item_no>, [<weapon_item_modifier>], [<missile_item_modifier>]), #Spawns a <missile_item_no> shot by <agent_no> with <weapon_item_no> at <position> with <velocity> / fixed_point_multiplier.
cur_missile_add_particle_system = 3604 #(cur_missile_add_particle_system, <particle_system_no>), #Adds <particle_system_no> to the current missile (works only in ti_on_init_missile)
cur_missile_add_point_light = 3605 #(cur_missile_add_point_light, <flicker_magnitude>, <flicker_interval>), #Adds a point light to the current missile (works only in ti_on_init_missile)
camera_in_first_person = 3606 #(camera_in_first_person), #Fails if the camera is not in first person
set_camera_in_first_person = 3607 #(set_camera_in_first_person, <value>), #Sets the camera to first or third person
troop_get_skill_points = 3700 #(troop_get_skill_points, <destination>, <troop_no>), #Stores <troop_no>'s unused skill points into <destination>
troop_set_skill_points = 3701 #(troop_set_skill_points, <troop_no>, <value>), #Sets <troop_no>'s unused skill points to <value>
troop_get_attribute_points = 3702 #(troop_get_attribute_points, <destination>, <troop_no>), #Stores <troop_no>'s unused attribute points into <destination>
troop_set_attribute_points = 3703 #(troop_set_attribute_points, <troop_no>, <value>), #Sets <troop_no>'s unused attribute points to <value>
troop_get_proficiency_points = 3704 #(troop_get_proficiency_points, <destination>, <troop_no>), #Stores <troop_no>'s unused proficiency points into <destination>
troop_set_proficiency_points = 3705 #(troop_set_proficiency_points, <troop_no>, <value>), #Sets <troop_no>'s unused proficiency points to <value>
troop_get_face_keys = 3706 #(troop_get_face_keys, <face_key_register>, <troop_no>, [<alt>]), #Stores <troop_no>'s face keys into <face_key_register>. if [<alt>] is non-zero the second pair of face keys is stored
troop_set_face_keys = 3707 #(troop_set_face_keys, <troop_no>, <face_key_register>, [<alt>], [<update_agents>]), #Sets <troop_no>'s face keys to <face_key_register>. if [<alt>] is non-zero the second pair of face keys is set. If [<update_agents>] is non-zero, affected agents will be updated
troop_has_flag = 3708 #(troop_has_flag, <troop_no>, <flag>), #Fails if <troop_no> doesn't have <flag>
item_get_weight = 3800 #(item_get_weight, <destination>, <item_kind_no>), #Stores <item_kind_no>'s weight into <destination> (using the fixed point multiplier)
item_get_value = 3801 #(item_get_value, <destination>, <item_kind_no>), #Stores <item_kind_no>'s value into <destination>
item_get_difficulty = 3802 #(item_get_difficulty, <destination>, <item_kind_no>), #Stores <item_kind_no>'s difficulty into <destination>
item_get_head_armor = 3803 #(item_get_head_armor, <destination>, <item_kind_no>), #Stores <item_kind_no>'s head armor into <destination>
item_get_body_armor = 3804 #(item_get_body_armor, <destination>, <item_kind_no>), #Stores <item_kind_no>'s body armor into <destination>
item_get_leg_armor = 3805 #(item_get_leg_armor, <destination>, <item_kind_no>), #Stores <item_kind_no>'s leg armor into <destination>
item_get_hit_points = 3806 #(item_get_hit_points, <destination>, <item_kind_no>), #Stores <item_kind_no>'s hit points into <destination>
item_get_weapon_length = 3807 #(item_get_weapon_length, <destination>, <item_kind_no>), #Stores <item_kind_no>'s weapon length into <destination>
item_get_speed_rating = 3808 #(item_get_speed_rating, <destination>, <item_kind_no>), #Stores <item_kind_no>'s speed rating into <destination>
item_get_missile_speed = 3809 #(item_get_missile_speed, <destination>, <item_kind_no>), #Stores <item_kind_no>'s missile speed into <destination>
item_get_max_ammo = 3810 #(item_get_max_ammo, <destination>, <item_kind_no>), #Stores <item_kind_no>'s max ammo into <destination>
item_get_accuracy = 3811 #(item_get_accuracy, <destination>, <item_kind_no>), #Stores <item_kind_no>'s accuracy into <destination>
item_get_shield_width = 3812 #(item_get_shield_width, <destination>, <item_kind_no>), #Stores <item_kind_no>'s shield width into <destination>
item_get_shield_height = 3813 #(item_get_shield_height, <destination>, <item_kind_no>), #Stores <item_kind_no>'s shield height into <destination>
item_get_horse_scale = 3814 #(item_get_horse_scale, <destination>, <item_kind_no>), #Stores <item_kind_no>'s horse scale into <destination>
item_get_horse_speed = 3815 #(item_get_horse_speed, <destination>, <item_kind_no>), #Stores <item_kind_no>'s horse speed into <destination>
item_get_horse_maneuver = 3816 #(item_get_horse_maneuver, <destination>, <item_kind_no>), #Stores <item_kind_no>'s horse maneuver into <destination>
item_get_food_quality = 3817 #(item_get_food_quality, <destination>, <item_kind_no>), #Stores <item_kind_no>'s food quality into <destination>
item_get_abundance = 3818 #(item_get_abundance, <destination>, <item_kind_no>), #Stores <item_kind_no>'s abundance into <destination>
item_get_thrust_damage = 3819 #(item_get_thrust_damage, <destination>, <item_kind_no>), #Stores <item_kind_no>'s thrust damage into <destination>
item_get_thrust_damage_type = 3820 #(item_get_thrust_damage_type, <destination>, <item_kind_no>), #Stores <item_kind_no>'s thrust damage type into <destination>
item_get_swing_damage = 3821 #(item_get_swing_damage, <destination>, <item_kind_no>), #Stores <item_kind_no>'s thrust damage into <destination>
item_get_swing_damage_type = 3822 #(item_get_swing_damage_type, <destination>, <item_kind_no>), #Stores <item_kind_no>'s thrust damage type into <destination>
item_get_horse_charge_damage = 3823 #(item_get_horse_charge_damage, <destination>, <item_kind_no>), #Stores <item_kind_no>'s thrust damage into <destination>
item_has_property = 3824 #(item_has_property, <item_kind_no>, <property>), #Fails if <item_kind_no> doesn't have <property>
item_has_capability = 3825 #(item_has_capability, <item_kind_no>, <capability>), #Fails if <item_kind_no> doesn't have <capability>
item_has_modifier = 3826 #(item_has_modifier, <item_kind_no>, <item_modifier_no>), #Fails if <item_modifier_no> is not a valid modifier for <item_kind_no>
item_has_faction = 3827 #(item_has_faction, <item_kind_no>, <faction_no>), #Fails if <item_kind_no> doesn't have <faction_no> in its faction list
party_stack_get_experience = 3900 #(party_stack_get_experience, <destination>, <party_no>, <party_stack_no>), #Stores the experience of <party_no>'s <party_stack_no> into <destination>
party_stack_get_num_upgradeable = 3901 #(party_stack_get_num_upgradeable, <destination>, <party_no>, <party_stack_no>), #Stores the amount of upgradeable troops in <party_no>'s <party_stack_no> into <destination>
position_rotate_z_floating = 4100 #(position_rotate_z_floating, <position_register_no>, <angle>, [<use_global_z_axis>]), #Rotates <position_register_no> around the z-axis by <angle> degrees
sound_channel_stop = 4200 #(sound_channel_stop, <sound_channel>), #Stops <sound_channel>
sound_channel_set_frequency = 4201 #(sound_channel_set_frequency, <sound_channel>, <frequency_in_hz>), #Sets the frequency of <sound_channel> to <frequency_in_hz>
options_get_battle_size = 4300 #(options_get_battle_size, <destination>), #Stores battle size into <destination>
options_set_battle_size = 4301 #(options_set_battle_size, <value>), #Sets batte size to <value> (must be between 30 and 2000)
options_get_verbose_casualties = 4302 #(options_get_verbose_casualties, <destination>), #Stores verbose casualties enabled/disabled into <destination>
options_set_verbose_casualties = 4303 #(options_set_verbose_casualties, <value>), #Enabled or disables verbose casualties
options_get_cheat_mode = 4304 #(options_get_cheat_mode, <destination>), #Stores cheat mode enabled/disabled into <destination>
options_set_cheat_mode = 4305 #(options_set_cheat_mode, <value>), #Enabled or disables cheat mode