1.5.0.6
- re-implemented birth year in tab "Edit"
- SaveParser.ini plausibilites
Attila
Rome2
1.5.0.6
- re-implemented birth year in tab "Edit"
- SaveParser.ini plausibilites
1.5.0.7
- Fix for "add all projects", already reseached projects could be set to un-researched.
1.5.1.0
- introduced export table function -> new entry "exportPath" in SaveParser.ini must be modified.
- Rome2 faction table "projects", "project" and "balance" added.
- the default value for "Birth Year" in the panel "Edit" is set to game year minus 20.
Question: is a WinXP / .net 4.0 version needed?
1.5.1.1
- internal gender filter for character names comboboxes in Character Editor dialog.
- army table: generic army / navy names translated (but not all. e.g. Roman)
- added checkbox "Rebels" to groupbox "Money Distribution" in panel "Edit"
Last edited by RoninX2807; September 01, 2014 at 05:42 PM.
1.5.1.2
- Bugfix: Adding more than one new trait to a character resulted an error in the savegame.
Is their any way you could add a editing feature to sets who owns what province in your save game?
Version 1.5.1.2 XP (.net 4.0) Version
Sourceforge
When resetting movement points for characters, it's also possible to make it so that they can perform actions again in the same turn. In EditSF for a "spy" character, for instance, if you look at this set of values:
CHARACTER_ARRAY - 0 --> CHARACTER
... and set the "True" flags in lines 10 and 13 (counting from 0 as the first line) to "False", then the character can perform actions again. Is that a change to the functionality of the movement refresh that you'd be willing to make?
I'd also be very interested in seeing some additions to the province editing ability of this excellent SaveParser resource. Some of the things it would be cool to edit include: the happiness value of a province, the pooled growth and population surplus of a province, and the number of mercenary units currently available for hire in a province. I'll list in this post where some of the important fields are, using Italia as the example province (which is "PROVINCE_ARRAY - 6" in most of my saved games). If I mention line numbers, please assume that I started counting from 0 as the first line.
"Mercenaries for Hire"
PROVINCE_ARRAY --> PROVINCE_ARRAY - 6 --> PROVINCE_MERCENARY_POOL --> MERCENARY_POOL --> MERCENARY_POOL_UNIT_ARRAY --> MERCENARY_POOL_UNIT_ARRAY - "x":
Line 0: The unit type available for hire.
Line 1: The number of that unit currently available for hire.
Line 2: Not 100% certain, but my guess would be a modifier for the percentage chance of that unit type being added to the pool in any given turn.
Lines 3 and 5: These always seem to be the same values as one another, and they are the maximum number of the unit type that will be available in the pool.
Line 4: Not sure.
Line 6: Not sure.
Line 7: The 0-based index that determines the order in which the unit types appear in the hiring UI.
So if your SaveParser could list all of the "MERCENARY_POOL_UNIT_ARRAY - x" entries, and allow a user to set "Currently Available" (Line 1) and "Max Available" (Lines 3 and 5), that would be super-cool.
"Happiness in a Province"
PROVINCE_ARRAY --> PROVINCE_ARRAY - 6 --> PROVINCE --> FACTION_PROVINCE_MANAGER_ARRAY --> FACTION_PROVINCE_MANAGER_ARRAY - "x"
There are multiple entries for "FACTION_PROVINCE_MANAGER_ARRAY - x", one for each faction that holds territory in a province. Starting from one of those entries:
FACTION_PROVINCE_MANAGER_ARRAY - "x" --> FACTION_PROVINCE_MANAGER
Line 1 is the ID of the empire that the current management set deals with. Starting from there:
FACTION_PROVINCE_MANAGER --> FACTION_PROVINCE_PUBLIC_ORDER
Line 0: The current public order value for the faction in that province.
Line 3: The description (such as "rom_public_order_roman_4_indifferent") for the numeric public order value. I haven't made many changes to either of these in the past and don't know what their effects would be, but note that the description here is mirrored in: FACTION_PROVINCE_MANAGER --> CAMPAIGN_EFFECT_BUNDLES --> EFFECT_BUNDLE_BLOCK --> EFFECT_BUNDLE_BLOCK - 0 --> CAMPAIGN_EFFECT_BUNDLE -- Line 0.
But the values that I do change sometimes, to great effect, are here:
FACTION_PROVINCE_MANAGER --> FACTION_PROVINCE_PUBLIC_ORDER --> FACTION_PROVINCE_PUBLIC_ORDER_FACTORS
Line 0: "Provincial instability (-1 per turn)" : A negative number (such as -8) that is reduced in magnitude one turn at a time following a conquest. This can be set to 0 to reduce the impact of conquest.
Line 1: "Taxes"
Line 2: "Raiding"
Line 3: "Military crackdown"
Line 4: "Conquest (next turn only)" : A negative number (such as -25, the result of "Occupy"; or -50, the result of "Loot") that only has a 1-turn impact on happiness following conquest. This can be set to 0 to reduce the impact of conquest.
Note: Changes to happiness as the result of agent actions (such as a spy inciting unrest) will be added as an CAMPAIGN_EFFECT_BUNDLE entry here:
FACTION_PROVINCE_MANAGER --> CAMPAIGN_EFFECT_BUNDLES --> EFFECT_BUNDLE_BLOCK --> EFFECT_BUNDLE_BLOCK - "x" --> CAMPAIGN_EFFECT_BUNDLE
... where Line 0 might have a value suce as "rom_agent_action_spy_hinder_settlement_authority_success", and beneath that:
CAMPAIGN_EFFECT_BUNDLE --> ADDITIONAL_EFFECTS --> ADDITIONAL_EFFECTS - "x"
Line 0: An effect, such as "rom_agent_action_target_province_public_order"
Line 1: The scope of the effect, such as "this_province"
Line 2: The impact of the effect, such as "-20" if 20 points of public order damage were dealt by the actions of the spy. Setting this negative value to 0 would eliminate the impacts of the spy's actions... and setting it to a bigger negative number would, of course, cause even more trouble for the target!
I imagine parsing through the campaign effect bundles for all possible spy actions might be kind of challenging, but even if the SaveParser resource allowed someone to browse these effects, whatever they might be, and then edit any of the numbers they might find there... could be kind of useful and fun.
"Pooled Growth and Population Surplus"
PROVINCE_ARRAY --> PROVINCE_ARRAY - 6 --> PROVINCE --> FACTION_PROVINCE_MANAGER_ARRAY --> FACTION_PROVINCE_MANAGER_ARRAY - "x"
Again, just as for provincial happiness, each faction in a province will has its own entry, with the ID of the faction in the same location as mentioned previously. But starting from there:
FACTION_PROVINCE_MANAGER_ARRAY - "x" --> FACTION_PROVINCE_MANAGER --> PROVINCE_DEVELOPMENT
Line 0: "Population surplus" The number of surplus population in a province available for a region's growth. (If a region requires 4 surplus to unlock a building slot, then setting this value to "4" will mean that the building slot can be unlocked.)
Line 1: "Accumulated growth" This number shows how much growth towards an additional population surplus point has been accumulated so far. This can be set to 0, for "no growth yet" or to a number greater than 0.
Note: I haven't tried setting Line 1 to a number bigger than the threshold for the next population surplus point, though, and I don't know what the effects would be... so it might be safest to just allow for the modification of Line 0. Also, once a city reaches a certain size, it no longer grows. I'm not sure what the effect would be of setting Line 0 to a greater population surplus than a province can handle, so caution with setting a number too big might be in order here. But it might also be safest to automatically set Line 1 to a value of "0" if Line 0 is changed, to account for this boundary condition.
Thanks again for the work you've put into building the SaveParser editing tool!
Hey, please note that I told you wrong on the "current public order of a province". It's not the field where I said it was above. In fact, it's here:
FACTION_PROVINCE_MANAGER --> FACTION_PROVINCE_PUBLIC_ORDER --> FACTION_PROVINCE_PUBLIC_ORDER_INFO
Line 3: A numeric value, representing the current public order.
Like I said above, I never fool with changing that, since it's tied to multiple other campaign values (such as "rom_public_order_roman_4_indifferent") in other locations. But I wanted to correct my mistake above. Sorry about that!
Thanks for all the detailed infos.
population was also on my todo list.
The HowTo for happyiness and population I have found out already before, but nice to see that you confirm my research.
I am doing your first request now. Won't last too long, maybe check in one hour again.
Last edited by RoninX2807; September 06, 2014 at 01:37 PM.
1.5.1.3
- introduced "Reset agent action" in "Edit" panel. This funcation reset the ability to perform actions for all player's factions' agents. (Request by kurushimi0)
Very cool -- thanks!
1.5.2.0
- introduced "Province Editor" dialog.
Since you're such a prolific programmer, I'm sending another request your way! I'd like to be able to add units to an existing army. This would involve making changes in a couple steps.
1. First, you'll need to determine the appropriate "Unit ID" to assign to the newly-created unit. This can be found here:
CAMPAIGN_SAVE_GAME --> COMPRESSED_DATA --> CAMPAIGN_ENV --> CAMPAIGN_MODEL --> CAMPAIGN_COMMAND_QUEUE_INDEX_TABLES
Line 0: ?
Line 1: ?
Line 2: ?
Line 3: ?
Line 4: The ID that should be used for the next unit created (no matter what faction actually creates the unit). This value should be incremented by 1 each time a unit is added.
2. Duplicate the last "UNITS_ARRAY - x" entry in the target army, appending the new entry to the bottom of the list. (If you're using EditSF behind the scenes to accomplish this, there currently seems to be a problem with duplicating an entry anywhere other than at the end of the list. I've reported that problem in the EditSF thread.) That entry, of course, can be found here:
FACTION_ARRAY --> FACTION_ARRAY - x --> FACTION --> ARMY_ARRAY --> ARMY_ARRAY - x --> MILITARY_FORCE --> UNIT_CONTAINER --> UNITS_ARRAY --> UNITS_ARRAY - x
3. For the newly-created "UNITS_ARRAY - x" entry, adjust the following locations in the substructure:
UNITS_ARRAY - x --> UNIT
Line 0: Set this to the value that was in the 5th line (Line 4, in 0-based index) of the CAMPAIGN_COMMAND_QUEUE_INDEX_TABLES when you looked it up. (And then increment the CCQIT table value by 1 afterwards.)
Lines 1 and 2: Current strength / maximum strength. (Hopefully there's an easy way to look this information up for a unit type selected by the user.)
Lines 3 and 8: Remaining movement / base movement for the unit. (Again, hopefully sane values, especially for line 8, can be looked up automatically for a selected unit type.)
Line 4: Character ID, which should presumably be set to 0.
Line 10: Set this value to one less than the value in Line 0. (I'm assuming this is the ID of the unit created prior to this one. But it always seems to be one less than whatever value is in Line 0.)
Even if units are added out of order (for instance, if you add Triarii after Leves), the game engine seems to be able to deal with this and will reorder them appropriately upon a subsequent save.
I know the unit information for strength, movement, and faction availability can be found in the data files, but would your SaveParser tool have access to that information in order to facilitate a UI menu for the selection of unit types to add? By the way, I'm a programmer by trade, and this kind of thing is a challenge I'd enjoy. If I can be of assistance on the implementation of any of these features, I'd love to dig into the source code of what you've built! Thanks for the work you've put into this project!
Hmm... I probably posted the details of adding a unit too soon. There's a missing piece to the puzzle somewhere. Although units can be successfully added via EditSF according to the steps above, and even used in battle, the game crashes upon the conclusion of the battle. I'll see if I can figure out what other information might need to be adjusted in the save file. No need to add functionality to the SaveParser that leads to crashing games, though! Thanks anyway!