From Mount&Blade Modding Wiki
[edit] Binary file format (Warband 1.143)
[edit] game (*.sav)
Type
|
Count
|
Field
|
Condition
|
Info
|
header
|
1
|
header
|
|
|
uint64
|
1
|
game_time
|
|
|
int32
|
1
|
random_seed
|
|
|
int32
|
1
|
save_mode
|
|
0: saving allowed, 1: strict
|
int32
|
1
|
combat_difficulty
|
game.header.game_version > 1136
|
|
int32
|
1
|
combat_difficulty_friendlies
|
game.header.game_version > 1136
|
|
int32
|
1
|
reduce_combat_ai
|
game.header.game_version > 1136
|
|
int32
|
1
|
reduce_campaign_ai
|
game.header.game_version > 1136
|
|
int32
|
1
|
combat_speed
|
game.header.game_version > 1136
|
|
int64
|
1
|
date_timer
|
|
|
int32
|
1
|
hour
|
|
|
int32
|
1
|
day
|
|
|
int32
|
1
|
week
|
|
|
int32
|
1
|
month
|
|
|
int32
|
1
|
year
|
|
|
int32
|
1
|
unused
|
|
|
float
|
1
|
global_cloud_amount
|
|
|
float
|
1
|
global_haze_amount
|
|
|
float
|
1
|
average_difficulty
|
|
|
float
|
1
|
average_difficulty_period
|
|
|
string
|
1
|
unused
|
|
|
bool
|
1
|
unused
|
|
|
int32
|
1
|
tutorial_flags
|
|
|
int32
|
1
|
default_prisoner_price
|
|
|
int32
|
1
|
encountered_party_1_id
|
|
|
int32
|
1
|
encountered_party_2_id
|
|
|
int32
|
1
|
current_menu_id
|
|
|
int32
|
1
|
current_site_id
|
|
|
int32
|
1
|
current_entry_no
|
|
|
int32
|
1
|
current_mission_template_id
|
|
|
int32
|
1
|
party_creation_min_random_value
|
|
|
int32
|
1
|
party_creation_max_random_value
|
|
|
string
|
1
|
game_log
|
|
|
int32
|
6
|
unused
|
|
|
int64
|
1
|
unused
|
|
|
float
|
1
|
rest_period
|
|
|
int32
|
1
|
rest_time_speed
|
|
|
int32
|
1
|
rest_is_interactive
|
|
|
int32
|
1
|
rest_remain_attackable
|
|
|
string
|
9
|
class_names
|
|
|
int32
|
1
|
num_global_variables
|
|
|
int64
|
num_global_variables
|
global_variables
|
|
|
int32
|
1
|
num_triggers
|
|
|
trigger
|
num_triggers
|
triggers
|
|
|
int32
|
1
|
num_simple_triggers
|
|
|
simple_trigger
|
num_simple_triggers
|
simple_triggers
|
|
|
int32
|
1
|
num_quests
|
|
|
quest
|
num_quests
|
quests
|
|
|
int32
|
1
|
num_info_pages
|
|
|
info_page
|
num_info_pages
|
info_pages
|
|
|
int32
|
1
|
num_sites
|
|
|
site
|
num_sites
|
sites
|
|
|
int32
|
1
|
num_factions
|
|
|
faction
|
num_factions
|
factions
|
|
|
int32
|
1
|
num_map_tracks
|
|
|
map_track
|
num_map_tracks
|
map_tracks
|
|
|
int32
|
1
|
num_party_templates
|
|
|
party_template
|
num_party_templates
|
party_templates
|
|
|
int32
|
1
|
num_party_records
|
|
|
int32
|
1
|
num_parties_created
|
|
|
party_record
|
num_party_records
|
party_records
|
|
|
player_party_stack
|
player_party.num_stacks
|
player_party_stack_additional_info
|
|
|
int32
|
1
|
num_map_event_records
|
|
|
int32
|
1
|
num_map_events_created
|
|
|
map_event_record
|
num_map_event_records
|
map_event_records
|
|
|
int32
|
1
|
num_troops
|
|
|
troop
|
num_troops
|
troops
|
|
|
int32
|
42
|
unused
|
|
|
int32
|
1
|
num_item_kinds
|
|
|
item_kind
|
num_item_kinds
|
item_kind
|
|
|
uint64
|
1
|
player_face_keys[0]
|
|
|
uint64
|
1
|
player_face_keys[1]
|
|
|
int32
|
1
|
player_kill_count
|
|
|
int32
|
1
|
player_wounded_count
|
|
|
int32
|
1
|
player_own_troop_kill_count
|
|
|
int32
|
1
|
player_own_troop_wounded_count
|
|
|
Type
|
Count
|
Field
|
Condition
|
Info
|
int32
|
1
|
magic_number
|
|
must be 0x52445257 (WRDR)
|
int32
|
1
|
game_version
|
|
|
int32
|
1
|
module_version
|
|
|
string
|
1
|
savegame_name
|
|
|
string
|
1
|
player_name
|
|
|
int32
|
1
|
player_level
|
|
|
float
|
1
|
date
|
|
|
Type
|
Count
|
Field
|
Condition
|
Info
|
string
|
1
|
text
|
|
|
int32
|
1
|
value
|
|
|
int32
|
1
|
tableau_material_id
|
|
|
bool
|
1
|
available
|
|
|
[edit] trigger
Type
|
Count
|
Field
|
Condition
|
Info
|
int32
|
1
|
status
|
|
|
int64
|
1
|
check_timer
|
|
|
int64
|
1
|
delay_timer
|
|
|
int64
|
1
|
rearm_timer
|
|
|
[edit] simple_trigger
Type
|
Count
|
Field
|
Condition
|
Info
|
int64
|
1
|
check_timer
|
|
|
Type
|
Count
|
Field
|
Condition
|
Info
|
int32
|
1
|
progression
|
|
|
int32
|
1
|
giver_troop_id
|
|
|
int32
|
1
|
number
|
|
|
float
|
1
|
start_date
|
|
|
string
|
1
|
title
|
|
|
string
|
1
|
text
|
|
|
string
|
1
|
giver
|
|
|
note
|
16
|
notes
|
|
|
int32
|
1
|
num_slots
|
|
|
int64
|
num_slots
|
slots
|
|
|
[edit] info_page
Type
|
Count
|
Field
|
Condition
|
Info
|
note
|
16
|
notes
|
|
|
Type
|
Count
|
Field
|
Condition
|
Info
|
int32
|
1
|
num_slots
|
|
|
int64
|
num_slots
|
slots
|
|
|
[edit] faction
Type
|
Count
|
Field
|
Condition
|
Info
|
int32
|
1
|
num_slots
|
|
|
int64
|
num_slots
|
slots
|
|
|
float
|
game.num_factions
|
relations
|
|
|
string
|
1
|
name
|
|
|
bool
|
1
|
renamed
|
|
|
uint32
|
1
|
color
|
|
|
int32
|
1
|
unused
|
|
|
note
|
16
|
notes
|
|
|
[edit] map_track
Type
|
Count
|
Field
|
Condition
|
Info
|
float
|
1
|
position_x
|
|
|
float
|
1
|
position_y
|
|
|
float
|
1
|
position_z
|
|
|
float
|
1
|
rotation
|
|
|
float
|
1
|
age
|
|
|
int32
|
1
|
flags
|
|
|
[edit] party_template
Type
|
Count
|
Field
|
Condition
|
Info
|
int32
|
1
|
num_parties_created
|
|
|
int32
|
1
|
num_parties_destroyed
|
|
|
int32
|
1
|
num_parties_destroyed_by_player
|
|
|
int32
|
1
|
num_slots
|
|
|
int64
|
num_slots
|
slots
|
|
|
[edit] party_record
Type
|
Count
|
Field
|
Condition
|
Info
|
int32
|
1
|
valid
|
|
|
int32
|
1
|
raw_id
|
valid == 1
|
|
int32
|
1
|
id
|
valid == 1
|
|
party
|
1
|
party
|
valid == 1
|
|
Type
|
Count
|
Field
|
Condition
|
Info
|
string
|
1
|
id
|
|
|
string
|
1
|
name
|
|
|
uint64
|
1
|
flags
|
|
|
int32
|
1
|
menu_id
|
|
|
int32
|
1
|
party_template_id
|
|
|
int32
|
1
|
faction_id
|
|
|
int32
|
1
|
personality
|
|
|
int32
|
1
|
default_behavior
|
|
|
int32
|
1
|
current_behavior
|
|
|
int32
|
1
|
default_behavior_object_id
|
|
|
int32
|
1
|
current_behavior_object_id
|
|
|
float
|
1
|
initial_position_x
|
|
|
float
|
1
|
initial_position_y
|
|
|
float
|
1
|
target_position_x
|
|
|
float
|
1
|
target_position_y
|
|
|
float
|
1
|
position_x
|
|
|
float
|
1
|
position_y
|
|
|
float
|
1
|
position_z
|
|
|
int32
|
1
|
num_stacks
|
|
|
party_stack
|
num_stacks
|
stacks
|
|
|
float
|
1
|
bearing
|
|
|
bool
|
1
|
renamed
|
|
|
string
|
1
|
extra_text
|
|
|
float
|
1
|
morale
|
|
|
float
|
1
|
hunger
|
|
|
float
|
1
|
unused
|
|
|
float
|
1
|
patrol_radius
|
|
|
float
|
1
|
initiative
|
|
|
float
|
1
|
helpfulness
|
|
|
int32
|
1
|
label_visible
|
|
|
float
|
1
|
bandit_attraction
|
|
|
int32
|
1
|
marshall
|
(game.header.game_version >= 900 && game.header.game_version < 1000) || game.header.game_version >= 1020
|
|
int64
|
1
|
ignore_player_timer
|
|
|
int32
|
1
|
banner_map_icon_id
|
|
|
int32
|
1
|
extra_map_icon_id
|
game.header.game_version > 1136
|
|
float
|
1
|
extra_map_icon_up_down_distance
|
game.header.game_version > 1136
|
|
float
|
1
|
extra_map_icon_up_down_frequency
|
game.header.game_version > 1136
|
|
float
|
1
|
extra_map_icon_rotate_frequency
|
game.header.game_version > 1136
|
|
float
|
1
|
extra_map_icon_fade_frequency
|
game.header.game_version > 1136
|
|
int32
|
1
|
attached_to_party_id
|
|
|
bool
|
1
|
is_attached
|
|
|
int32
|
1
|
num_attached_party_ids
|
|
|
int32
|
num_attached_party_ids
|
attached_party_ids
|
|
|
int32
|
1
|
num_particle_system_ids
|
|
|
int32
|
num_particle_system_ids
|
particle_system_ids
|
|
|
note
|
16
|
notes
|
|
|
int32
|
1
|
num_slots
|
|
|
int64
|
num_slots
|
slots
|
|
|
[edit] party_stack
Type
|
Count
|
Field
|
Condition
|
Info
|
int32
|
1
|
troop_id
|
|
|
int32
|
1
|
num_troops
|
|
|
int32
|
1
|
num_wounded_troops
|
|
|
int32
|
1
|
flags
|
|
|
[edit] player_party_stack
Type
|
Count
|
Field
|
Condition
|
Info
|
float
|
1
|
experience
|
!(cur_stack_troop_flags & hero)
|
|
int32
|
1
|
num_upgradeable
|
!(cur_stack_troop_flags & hero)
|
|
int32
|
32
|
troop_dnas
|
cur_stack_no < 32 && !(cur_stack_troop_flags & hero)
|
|
[edit] map_event_record
Type
|
Count
|
Field
|
Condition
|
Info
|
int32
|
1
|
valid
|
|
|
int32
|
1
|
id
|
valid == 1
|
|
map_event
|
1
|
map_event
|
valid == 1
|
|
[edit] map_event
Type
|
Count
|
Field
|
Condition
|
Info
|
string
|
1
|
unused
|
|
|
int32
|
1
|
type
|
|
|
float
|
1
|
position_x
|
|
|
float
|
1
|
position_y
|
|
|
float
|
1
|
land_position_x
|
|
|
float
|
1
|
land_position_y
|
|
|
float
|
1
|
unused
|
|
|
float
|
1
|
unused
|
|
|
int32
|
1
|
attacker_party_id
|
|
|
int32
|
1
|
defender_party_id
|
|
|
int64
|
1
|
battle_simulation_timer
|
|
|
float
|
1
|
next_battle_simulation
|
|
|
Type
|
Count
|
Field
|
Condition
|
Info
|
int32
|
1
|
num_slots
|
|
|
int64
|
num_slots
|
slots
|
|
|
int32
|
4
|
attributes
|
|
|
float
|
7
|
proficiencies
|
|
|
uint32
|
6
|
skills
|
|
|
note
|
16
|
notes
|
|
|
uint64
|
1
|
flags
|
|
|
int32
|
1
|
site_id_and_entry_no
|
|
|
int32
|
1
|
skill_points
|
|
|
int32
|
1
|
attribute_points
|
|
|
int32
|
1
|
proficiency_points
|
|
|
int32
|
1
|
level
|
|
|
uint32
|
1
|
gold
|
(flags & tf_hero) || dont_load_regular_troop_inventories == false
|
|
int32
|
1
|
experience
|
(flags & tf_hero) || dont_load_regular_troop_inventories == false
|
|
float
|
1
|
health
|
(flags & tf_hero) || dont_load_regular_troop_inventories == false
|
|
int32
|
1
|
faction_id
|
(flags & tf_hero) || dont_load_regular_troop_inventories == false
|
|
item
|
96
|
inventory_items
|
(flags & tf_hero) || dont_load_regular_troop_inventories == false
|
|
item
|
10
|
equipped_items
|
(flags & tf_hero) || dont_load_regular_troop_inventories == false
|
|
uint64
|
4
|
face_keys
|
(flags & tf_hero) || dont_load_regular_troop_inventories == false
|
|
bool
|
1
|
renamed
|
(flags & tf_hero) || dont_load_regular_troop_inventories == false
|
|
string
|
1
|
name
|
renamed == true && ((flags & tf_hero) || dont_load_regular_troop_inventories == false)
|
|
string
|
1
|
name_plural
|
renamed == true && ((flags & tf_hero) || dont_load_regular_troop_inventories == false)
|
|
int32
|
1
|
class_no
|
|
|
Type
|
Count
|
Field
|
Condition
|
Info
|
int32
|
1
|
item_kind_id
|
|
|
int32
|
1
|
item_flags
|
|
modifier (LineNo - 1 from item_modifiers.txt) = (item_flags >> 24) & 0xFF, ammo = item_flags & 0xFF, hit_points = item_flags & 0xFFFF
|
[edit] item_kind
Type
|
Count
|
Field
|
Condition
|
Info
|
int32
|
1
|
num_slots
|
|
|
int64
|
num_slots
|
slots
|
|
|
[edit] string
Type
|
Count
|
Field
|
Condition
|
Info
|
int32
|
1
|
num_chars
|
|
|
char
|
num_chars
|
text
|
|
|