With the release of Desert Kingdoms, there will of course be changes to the database and new files added to the game.
DB changes and schema updates are listed below - file modifications and additions are detailed in the attached .csv
Total War Rome 2: Desert Kingdoms
database modification changelog
==============================================================
New Tables
==============================================================
female_character_culture_details
female_character_culture_spawn_rates
female_character_faction_details
female_character_faction_spawn_rates
female_character_subculture_details
female_character_subculture_spawn_rates
==============================================================
Tables with modified records
==============================================================
TExc_ImplementedTables
TExc_LocalisableFields
achievements
advice_levels
advice_threads
advice_trigger_to_advice_thread
advice_triggers
advisors
agent_localisations
agent_string_subculture_overrides
agent_uniforms
ancillaries
ancillary_included_subcultures
ancillary_info
ancillary_to_effects
ancillary_to_included_agents
ancillary_trigger_effects
armed_citizenry_unit_groups
armed_citizenry_units_to_unit_groups_junctions
audio_vo_actor_groups
audio_vo_actors
battle_animations_table
battle_entities
battle_personalities
battlefield_deployable_siege_items
building_chain_availabilities
building_chain_availability_set_ids
building_chain_availability_sets
building_chains
building_culture_variants
building_effects_junction
building_flavour_texts
building_instances
building_level_armed_citizenry_junctions
building_level_required_technology_junctions
building_levels
building_set_to_building_junctions
building_sets
building_short_description_texts
building_superchains
building_units_allowed
building_upgrades_junction
cai_construction_system_building_values
cai_personality_deal_evaluation_deal_component_names
cai_personality_deal_evaluation_deal_component_values
cai_personality_diplomatic_event_values
cai_personality_diplomatic_events
cai_personality_strategic_resource_values
campaign_bonus_value_ids_basic
campaign_character_art_sets
campaign_character_art_sets_campaign_groups
campaign_character_art_sets_group_junctions
campaign_character_arts
campaign_localised_strings
campaign_map_attrition_faction_immunities
campaign_mp_coop_groups_to_factions
campaign_politics_strings
campaign_settlement_display_building_constructions
campaign_settlement_display_building_ids
campaign_settlement_display_buildings
campaign_variables
cdir_events_dilemma_choice_details
cdir_events_dilemma_followup_dilemmas
cdir_events_dilemma_incidents
cdir_events_dilemma_option_junctions
cdir_events_dilemma_options
cdir_events_dilemma_payloads
cdir_events_incident_option_junctions
cdir_events_incident_options
cdir_events_incident_payloads
cdir_events_mission_issuer_junctions
cdir_events_payloads
cdir_military_generator_unit_qualities
character_skill_level_details
character_skill_level_to_effects_junctions
character_skill_node_sets
character_skill_nodes
character_skills
character_trait_levels
character_traits
commander_unit_permissions
commodities
commodity_unit_names
culture_subculture_politics_government_types
cultures_subcultures
cursus_honorum_level_requirements
cursus_honorum_trait_junctions
dilemmas
diplomacy_negotiation_attitude_override_strings
diplomacy_negotiation_faction_attitude_override_strings
diplomacy_negotiation_faction_override_strings
diplomacy_negotiation_string_options
diplomacy_strings
diplomatic_action_subculture_restrictions
effect_bonus_value_basic_junction
effect_bonus_value_battle_context_junctions
effect_bonus_value_building_set_junctions
effect_bonus_value_ids_unit_sets
effect_bonus_value_religion_junction
effect_bonus_value_resource_junction
effect_bonus_value_unit_category_junction
effect_bundles
effect_bundles_to_effects_junctions
effects
encyclopedia_blocks
faction_banners
faction_civil_war_setups
faction_groups
faction_political_parties_junctions
faction_rebellion_units_junctions
faction_to_campaign_junctions
faction_to_faction_groups_junctions
faction_to_mercenary_set_junctions
faction_uniform_colours
factions
formations
formations_to_subcultures
groupings_military
historical_character_traits
historical_characters
incidents
land_units
land_units_officers
land_units_to_unit_abilites_junctions
main_units
melee_weapons
mercenary_pool_to_groups_junctions
mercenary_unit_groups
message_event_strings
message_event_text
message_events
military_force_legacy_names
missile_weapons
missile_weapons_to_projectiles
mission_text
missions
mount_variants
mountable_artillery_units_custom_battles
mounts
movie_event_strings
name_orders
names
names_groups
naval_units
pdlc
political_actions
political_parties
political_parties_power_effect_bundles
political_traits
politics_government_type_political_action_junctions
projectile_displays
projectile_shot_type_enum
projectiles
provincial_initiatives_to_subculture_junctions
quotes
quotes_people
random_localisation_strings
region_unit_resources
resource_effects
resources
slot_template_to_building_superchain_junctions
special_ability_phase_stat_effects
start_pos_character_to_settlements
start_pos_characters
start_pos_diplomacy
start_pos_factions
start_pos_land_units
start_pos_naval_units
start_pos_past_events
start_pos_region_religions
start_pos_regions
start_pos_settlements
technologies
technology_category_modules
technology_effects_junction
technology_node_links
technology_node_sets
technology_nodes
trade_display_originating_subculture_trade_model_options
trait_info
trait_level_effects
trait_triggers
translated_texts
trigger_effects
trigger_events
uied_component_addresses_to_texts
uied_component_texts
uied_text_layouts
unit_abilities
unit_attributes_groups
unit_attributes_to_groups_junctions
unit_description_historical_texts
unit_description_short_texts
unit_set_to_unit_junctions
unit_variants
units_custom_battle_permissions
units_to_groupings_military_permissions
variants
videos
vo_context_sensitive_texts
==============================================================
Tables with modified schema
==============================================================
ancillaries
culture_subculture_politics_government_types
cursus_honorum_trait_junctions
female_character_culture_details
female_character_culture_spawn_rates
female_character_faction_details
female_character_faction_spawn_rates
female_character_subculture_details
female_character_subculture_spawn_rates
historical_characters
political_parties
==============================================================
Modified schemas:
==============================================================
<!-- modified table (only the modification is shown) -->
<table table_name='cursus_honorum_trait_junctions' >
<field name='trait_info_key_female' type='optstring_ascii' />
</table>
<!-- modified table (only the modification is shown) -->
<table table_name='political_parties' >
<field name='trait1' type='optstring_ascii' />
</table>
<!-- modified table (only the modification is shown) -->
<table table_name='ancillaries' >
<field name='spouse_subculture' type='optstring_ascii' /> <!-- used for diplomatic / dynastic marriages -> this record is applied for spouse subculture -->
</table>
<!-- new table -->
<table table_name='female_character_subculture_details' >
<field fkey='cultures_subcultures.subculture' name='subculture' type='string_ascii' pk='true' />
<field name='general' type='optstring_ascii' />
<field name='public_office' type='optstring_ascii' />
<field name='missions' type='optstring_ascii' />
<field name='chance_to_spawn' type='int' />
<field fkey='trait_info.trait' name='trait' type='string_ascii' /> <!-- special trait gives females bonus to missions. If not set the value is read from female_character_culture_details -->
</table>
<!-- new table -->
<table table_name='female_character_subculture_spawn_rates' >
<field fkey='cultures_subcultures.subculture' name='subculture' type='string_ascii' pk='true' />
<field name='chance_to_spawn' type='int' />
</table>
<!-- new table -->
<table table_name='female_character_faction_details' >
<field fkey='factions.key' name='faction' type='string_ascii' pk='true' />
<field name='general' type='optstring_ascii' />
<field name='public_office' type='optstring_ascii' />
<field name='missions' type='optstring_ascii' />
<field name='chance_to_spawn' type='int' />
<field fkey='trait_info.trait' name='trait' type='optstring_ascii' /> <!-- special trait gives females bonus to missions. If not set the value is read from female_character_subculture_details -->
</table>
<!-- new table -->
<table table_name='female_character_faction_spawn_rates' >
<field fkey='factions.key' name='faction' type='string_ascii' pk='true' />
<field name='chance_to_spawn' type='int' />
</table>
<!-- modified table (only the modification is shown) -->
<table table_name='historical_characters' >
<field name='age_start' type='int' />
</table>
<!-- new table -->
<table table_name='female_character_culture_details' >
<field fkey='cultures.key' name='culture' type='string_ascii' pk='true' />
<field name='general' type='string_ascii' />
<field name='public_office' type='string_ascii' />
<field name='missions' type='string_ascii' />
<field name='chance_to_spawn' type='int' />
<field fkey='trait_info.trait' name='trait' type='string_ascii' /> <!-- special trait gives females bonus to missions. -->
</table>
<!-- modified table (only the modification is shown) -->
<table table_name='culture_subculture_politics_government_types' >
<field name='faction_leader_trait_female' type='string_ascii' />
</table>
<!-- new table -->
<table table_name='female_character_culture_spawn_rates' >
<field fkey='cultures.key' name='culture' type='string_ascii' pk='true' />
<field name='chance_to_spawn' type='int' />
</table>
Comments
- Report
1 · Disagree Agree- Report
0 · Disagree AgreeThe female_character_culture_spawn_rates, female_character_faction_spawn_rates, and female_character_subculture_spawn_rates tables are all currently empty, but they're ready for someone to use.
In the other three female character details tables, I wasn't certain where to place "public_office" and "missions", so I left them as unknowns. "general" was more obvious for two of the tables, so I inserted it into those two.
Regards
Edit: I tried to post it as code here, but it doesn't show up for some reason. I've uploaded a .txt file instead.
- Report
0 · Disagree AgreeI noticed when browsing the historical_characters table that numerous entries for the Wrath of Sparta DLC have reversed spawning_window_start/spawning_window_end entries. This should result in these historical characters not spawning. Is that intended or an accident? If that wasn't intended, I can make a mod to fix it temporarily until CA fixes it in a future patch. If it was intended, would you mind explaining why the numbers were reversed?
Thanks
Image showing the subject entries in the historical_characters table:
- Report
1 · Disagree AgreeMy Mods:
http://steamcommunity.com/profiles/76561198105622520/myworkshopfiles/?appid=214950
- Report
2 · Disagree Agree- Report
1 · Disagree AgreeHere's the link to it.
http://steamcommunity.com/sharedfiles/filedetails/?id=1330336396
The spawn range's beginning of 390 seems late to me though as the WoS campaign begins around 310. 80ish turns, or over six full years into the campaign.
- Report
1 · Disagree AgreeYesterday, I looked at Spartan characters and from what I remember these generals/admirals should appear:
- Lysander (with unique trait)
- Thorax
- Callicratidas
- Eteonicus
- Agesandridas
I haven't searched for Athenians or Thebans yet but I am sure Alkibiades will be one of them (he also has unique trait).
80 turns? Hah! Rookie numbers! I once have played WoS campaign for around 860 turns.
- Report
1 · Disagree AgreeThanks a lot for your service here! This is highly appreciated and the whole modding community would be very grateful if you would release such posts for each update of each TW game.
ADDITIONAL UNITS MOD - ATTILA (AUM-ATT)
ADDITIONAL UNITS MOD - ROME (AUM-ROM)
ADDITIONAL UNITS MOD - SHOGUN (AUM-SHO)
ADDITIONAL UNITS MOD - NAPOLEON (AUM-NAP)
ADDITIONAL UNITS MOD - EMPIRE (AUM-EMP)
UPC-Empire UPC-Napoleon UPC-Shogun UPC-Rome UPC-Attila
UPC-Thrones of Britannia
Attila Custom Battle Crash Fix
Attila Romani Units Pack
Thrones of Britannia - Unit Recruitment Strength
[Tutorial] How to customize unit packs
- Report
1 · Disagree AgreeFORMAL DISCLAIMER: Any views or opinions expressed here are those of the poster and do not necessarily represent the views or opinions of The Creative Assembly or SEGA.
- Report
3 · Disagree Agree- Report
1 · Disagree AgreeBoth the original table and the mod will not work as they should. I have found out why:
Spawning windows are number of years after 753 BC. So, right now Spartan Genaral 610 will spawn (wrongly) between 341 BC and 351 BC (in @Migz mod it will be 351-341 BC). What is more, both Lysander and Alkibiades do not spawn with unique traits.
It seems, that the DLC creators have thought that these spawning windows are real dates - like Spartan General 610 spawning between 412-402 BC.
To correct this mistake the spawning windows should look like this:
Adeimantos - 600 Athenai 343 to 358
Alkibiades - 601 Athenai 338 to 358 - he also should spawn with pel_alkibiades trait.
Konon - 602 Athenai 351 to 363
Xenophon - 603 Athenai 323 to 333
Strombikides - 604 Athenai 338 to 353
Thorax - 605 Sparta 346 to 356
Koeratadas - 606 Boiotia 341 to 351
Kallikratidas - 607 Sparta 343 to 353
Agesandridas - 608 Sparta 337 to 347
Eteonikos - 609 Sparta 333 to 343
Lysander 610 Sparta 341 to 351 - he also should spawn with pel_lysander trait.
- Report
1 · Disagree Agree1. Why do you think that the beginning of the table is 753 BCE? From my examination of the table, I concluded that the beginning was somewhere between 722 and 761, but I'm unsure where it actually begins; although, I got a character to spawn very specifically at 711-712 in the Imperator Augustus campaign, so that made me think that 753 was the beginning too.
Wrath of Sparta, begins in 432 BCE, first character spawns at 310, so 0 = 732
Grand Campaign, begins 272 BCE, first character spawns at 450, so 0 = 722
Caesar in Gaul, begins 58 BCE, first character spawns at 671, so 0 = 729
Imperator Augustus, begins 41 BC, first character spawns at 712, so 0 =753
Empire Divided, begins 270 CE, first character spawns at 1031, so 0 = 761
2. I agree that it's possible that the numbers that were originally input were intended to be dates rather than just merely reversed, but I don't want to commit to that without concurrence from CA.
3. Are you certain that the numbers in the table always represent years? If so, why? As I wrote above, I found that the campaign start year corresponded to a beginning number in the table, but I'm uncertain if the range then is in years or in turns. I'm uncertain, because the various campaigns range from 1 turn per year to 24 turns per year.
4. Did you find the names by getting each character to spawn then identify the names that way? Or through some other means? I was planning on doing that myself today, but I guess I won't need to. :-)
5. Where did you find those two traits? Do you know what they do? What unknown column do they go in, unknown10? Only those two have unique traits?
- Report
0 · Disagree AgreeStarting window 481 is 272 BC in GC. 481+272 is 753 BC. The year Rome was founded. So Rafsi is right.
My Mods:
http://steamcommunity.com/profiles/76561198105622520/myworkshopfiles/?appid=214950
- Report
1 · Disagree Agree- Report
0 · Disagree Agree1 and 3. I think, that the main evidence is the character from the newest campaign DLC. In Empire Divided the historical character is Vaballathus, the son of Zenobia, who is still a child at the beginning of the campaign. He spawns at 1031, which means that he will appear in 278 AD (-753+1031 = 277 (minus "year 0"). Palmyrean price was born c. 259 AD, so he is around 19 years old when he appears in the campaign. He indeed spawns after a some time and Zenobia quests revolve around the Queen tutoring her son (he spawns with better stats).
IIRC ED is 4 ypy, which would mean that (if spawning dates were turns) he would appear after in-game 257 years. These "spawning windows" cannot be turns.
I also changed "spawning windows" for WoS characters after around 100 turns (none of them spawned prior this turn). After my changes, all of them (at least Spartan ones) spawned within the next 3 turns.
4. The "name_key" table represents character's name - they can be found in localisation files.
5. I have just checked "historical_character_traits" table and I see, that according to the table Lysander should (wrongly) spawn with Alkibiades trait, while Alkibiades should use Lysander's trait. From what I have tested Lysander spawned without any unique triats (maybe these traits are reserved to each faction and this is a reason why he had no his or Alkibiades' trait).
Lysander's trait gives him +4 authority, Alkibiades should have additional 3 points of cunning. In WoS campaign only these two have unique traits (except for some starting Athenian characters like Pericles or Nikias).
@MarcusIuniusBrutus
Good idea, I think I will add some additional to WOS campaign. IIRC both King Agis, Gylippus or Aspasia are missing from the campaign.
- Report
0 · Disagree Agree1and3: I concur, barring CA saying that we're wrong, that we should assume that the table begins at 753 BCE.
But, your conclusion about his spawning in 257 years if the game treats the values in the table as turns isn't how I thought it might work. What I've been thinking is that, using Empire Divided as the example, the game treats 1023 as the beginning turn of the game, and 1024 would be turn 2, not the next year, so 1023, 1024, 1025, and 1026 would all be in year one. This would result in Vaballathus being able to spawn beginning in the third year of the game or the eighth turn (1031 in the table).
But, I begin to think that that's not the correct system.
4. Oh, excellent! Thanks
5. I see. I'll double check your analysis and update if necessary (giving you appropriate credit).
- Report
1 · Disagree Agree- Report
0 · Disagree AgreeWell, that means that means that the table values I have currently are very, very late game. If 321 is the first turn, then the characters wouldn't spawn till hundreds of turns into a game. That's definitely not right. Ok, I'll assume similarly to how you did and use numbers for earlier in the campaign.
Edit:
@RafSwi7
I updated the modification. The only place my changes differ from your suggestion is the ending date for 601. I used 353 instead of 358, because the original values only had a 15-year range, not 20 years (415 BC to 400 BC). So, pretty good suggestions overall. Thanks!!
- Report
1 · Disagree AgreeBTW CA should reconsider these dates, since to see Lysander in 412 BC we need to play for more than 200 turns.
- Report
0 · Disagree Agree- Report
0 · Disagree Agree- Report
0 · Disagree AgreeThanks!
- Report
0 · Disagree AgreeFORMAL DISCLAIMER: Any views or opinions expressed here are those of the poster and do not necessarily represent the views or opinions of The Creative Assembly or SEGA.
- Report
3 · Disagree AgreeSince I am in the middle of the Wrath of Sparta campaign, I will check if they spawn properly.
- Report
0 · Disagree AgreeEdit:
Unfortunately, the new dates are the reverse of what had been in the table before. The characters will spawn, but they will only spawn in the in-game years of 363 BCE (69 years after the beginning of the campaign) or later. Since the WoS campaign is a 12-turn-per-year campaign, that results in the very first historical character spawning in the ~828th turn. Very few people's campaigns will go that long.
RafSwi7 and I worked on this problem more this past weekend by assuming that the original values were intended to be dates BCE, and I believe that the revised version of my mod is a better step towards a solid correction, because the characters spawn earlier in the campaign (27th turn is possible for the first), but we'd go even earlier with many of the character dates. By using the dates, converted into table values, like I currently am, the last character won't become available until 402 BCE, turn ~360.
Therefore, at the least, I'd update the table like this to ensure that all characters are available by around turn 360, using the original values as dates that have been converted into table values:
key / faction / spawning_window_start / spawning_window_end
600 / pel_athenai now / 343 / 358
601 / pel_athenai now / 338 / 353
602 / pel_athenai now / 351 / 363
603 / pel_athenai now / 323 / 333
604 / pel_athenai now / 338 / 353
605 / pel_sparta now / 346 / 356
606 / pel_boiotia now / 341 / 351
607 / pel_sparta now / 343 / 353
608 / pel_sparta now / 337 / 347
609 / pel_sparta now / 333 / 343
610 / pel_sparta now / 341 / 351
But, for gameplay reasons (unrelated to dates that the real historical figures were involved in the war), I think that this would be better to ensure that all of the characters are available by turn 200:
key / faction / spawning_window_start / spawning_window_end
600 / pel_athenai now / 333 / 348
601 / pel_athenai now / 330 / 345
602 / pel_athenai now / 337 / 349
603 / pel_athenai now / 322 / 332
604 / pel_athenai now / 330 / 345
605 / pel_sparta now / 334 / 344
606 / pel_boiotia now / 332 / 342
607 / pel_sparta now / 333 / 343
608 / pel_sparta now / 329 / 339
609 / pel_sparta now / 327 / 337
610 / pel_sparta now / 332 / 342
I think that either set of values is acceptable. One in between would work too.
Additionally, RafSwi7 noticed that the historical_character_traits table has an error in it. We recommend updating it like so:
601 -> pel_alkibiades_1
610 -> pel_lysander_1
That allows Alkibiades to spawn with the correct trait, but Lysander apparently still spawns with a random trait. We're not sure where the correction for that would be.
- Report
1 · Disagree AgreeThere is also something else I would like to point out. It is an old "bug" and it has not been introduced with the latest patch.
As you can see in this screenshot AI uses some weird formations in WoS campaign. It looks like, it treats skirmishers as infantry units and puts them in the middle of the formation. Does this only happen to me?
- Report
0 · Disagree AgreeThat formation is so typical like 99% of the times you face a hellenic army but also for barbarians.
- Report
1 · Disagree Agree- Report
0 · Disagree Agree- Report
0 · Disagree Agree