pathfinder kingmaker save edit

Memory scanning, code injection, debugger internals and other gamemodding related discussion
neuronek
Cheater
Cheater
Posts: 36
Joined: Sun Mar 05, 2017 7:03 pm
Reputation: 18

Re: pathfinder kingmaker save edit

Post by neuronek » Sun Oct 07, 2018 7:29 am

tseblade wrote:
Sun Oct 07, 2018 5:17 am
PS. Do you have an updated file with your finds? If so can you upload it
So far I have my huge posts and a lot of files :) The thing is that for my personal java project I didn't separate these feats between the ones You found and I found.

Here You go, the list grew by 12% ... the number of feats in this game is huge
Feats_List_Updated.zip
Updated list of feats
(26.58 KiB) Downloaded 50 times
Feats_List_Updated_v2.zip
Added some magus feats
(27.3 KiB) Downloaded 37 times
Feats_List_Updated_v3.zip
Found: Spell specialization, Extra lay on hands, Extra rage, Inspire ferocity, Renewed vigor, Extra arcane pool, Arcane strike, Arcane accuracy, Wand wielder, added separate magus category
(27.59 KiB) Downloaded 199 times

Hmm about that:
tseblade wrote:
Sun Oct 07, 2018 5:17 am
1. Select save file
2. Open the party.json
3. Select party member (for now it could just be the mc, since he is always the first object in the array: ROOT.m_EntityData[0] )
4. Get the current list of feats from the feat array: ROOT.m_EntityData[0].Descriptor.Progression.Features.m_Facts[]
5. Get the last $id from the file to a variable
6. Select feats to add to user (start with feats which are standalone and dont come with abilities or other references .ie Power Attack)(also remove from list already existing blueprint Ids)
7. Add feat code to the previous array as the last element
8. Change any $id in the new feat to +1 from the previous selection
My process is longer and a bit more manual at the moment. I'm changing companions aswell.

1. I find the highest id in the file, let's say 7960
2. I find the guid representing a specific party member, let's say Regonar. (Notepad++ + JSTool -> Json Viewer, I use the prefab guid provided in the kingmaker editor on github, Regonar corresponds to b090918d7e9010a45b96465de7a104c3
3. I open up one of his feats, this time I found them at: (It's quite funny that our party members are our inventory items apparently :D )
ROOT.m_EntityData[0].Descriptor.m_Inventory.m_Items[259].m_Enchantments.m_Facts[0].m_CurrentContext.m_OwnerDescriptor.Progression.Features.m_Facts[*]
4. I read Regonar's UUID prefab -> ROOT.m_EntityData[0].Descriptor.m_Inventory.m_Items[259].m_Enchantments.m_Facts[0].m_CurrentContext.m_OwnerDescriptor.Progression.Features.m_Facts[32].m_Context.m_CasterReference.m_UniqueId
This does not seem to change in time, for me Regonar's spawned with the following UUID: 5dfa8214-7918-4653-a695-368d45e8caa6.
5.I save Regonar's UUID in an enum:

Code: Select all

    
    public enum PartyMembers {
        PROTAGONIST,VALERIE,AMIRI,LINZI,REGONAR
    }
            Map<PartyMembers, String> partyGUIDMap = new EnumMap<>(PartyMembers.class);
        partyGUIDMap.put(PartyMembers.VALERIE, "5b972eef-5eab-4947-98c5-65d448dc542d")
        partyGUIDMap.put(PartyMembers.AMIRI,"91345fb6-c3ed-40f9-9e90-cbc68f7a84cd")
        partyGUIDMap.put(PartyMembers.LINZI,"9d563860-8cfb-4d25-9d78-dc7121c1b446")
        partyGUIDMap.put(PartyMembers.PROTAGONIST,"f043e0f3-124e-49aa-82bb-3796247937f6")
        partyGUIDMap.put(PartyMembers.REGONAR,"5dfa8214-7918-4653-a695-368d45e8caa6")
 
6. Sadly it seems that the owner Id changes from save to save, this is a pain in the butt but I edit it anyway since I'm trying to add 20-30 feats at a time ;)
ROOT.m_EntityData[0].Descriptor.m_Inventory.m_Items[259].m_Enchantments.m_Facts[0].m_CurrentContext.m_OwnerDescriptor.Progression.Features.m_Facts[32].m_Context.m_OwnerDescriptor.$ref
For this save it seems to be "3594"
7. Knowing all of this I have the highest id, guid and owner descriptor reference, I iterate over all of the feats and increment id's, replacing all caster references with Regonar's UUID and all owner references with the one I found so that all the feats will show up in his character sheet.

... I try to do some magic to automatically link activatables/abilities to feats but that'd be another post ;)
Basically I work on a couple of premade json files, from a high level perspective it seems simple but I still keep finding special cases for these objects

Code: Select all

        int highestId = 7960
        int ownerIdentifier = 3594 //varies from save to save :(
        String ownerGUID = partyGUIDMap.get(PartyMembers.REGONAR)

        def level = "lv3"
        def featFile = "combat_feats_" + level + ".json"
        def activatableFile = "activatable_abilities_" + level + ".json"
        def abilityFile = "abilities_" + level + ".json"

        //update feats
        def ( updatedId, modifiedFeatText) = updateFeats(featFile, highestId, ownerIdentifier, ownerGUID)
        highestId = updatedId

        //update activatable abilities
        highestId = updateActivatables(activatableFile, highestId, ownerIdentifier)

        //update abilities
        highestId = updateAbilities(abilityFile, highestId, ownerIdentifier)

        //Link Abilities to feats
        modifiedFeatText = linkAbilitiesToFeats(ADJUSTED_FILE_PREFIX + abilityFile, modifiedFeatText)

        //Link Activatable Abilities to feats
        modifiedFeatText = linkActivatableAbilitiesToFeats(ADJUSTED_FILE_PREFIX + activatableFile,modifiedFeatText)

        def outputFile = ADJUSTED_FILE_PREFIX + featFile
        saveFile(RESOURCE_DIR+FEAT_DIR, outputFile, modifiedFeatText)

tseblade
Novice Cheater
Novice Cheater
Posts: 18
Joined: Sun Sep 30, 2018 4:25 pm
Reputation: 8

Re: pathfinder kingmaker save edit

Post by tseblade » Mon Oct 08, 2018 4:44 pm

Hey Neuronek,

An easier way to find the companions seems to be looking for "progression": as it is only available for characters. Though there seems to be 2 extra characters you dont have which have this field also.

Another thing i found out is after you find the companion, you can change the CustomName field to any name and it gets saved so you can look it up much easier in the future. However i dont know if it will affect anything in the future so probably better to keep the same name.

Also i found that you can use the TextPad software for windows which can do incremental regex find and replace. So you can copy paste all the feats you want into a new window then just use a regex find and replace to have all the $id changed.

tseblade
Novice Cheater
Novice Cheater
Posts: 18
Joined: Sun Sep 30, 2018 4:25 pm
Reputation: 8

Re: pathfinder kingmaker save edit

Post by tseblade » Tue Oct 09, 2018 11:22 am

Another update on the feats:
- Added the 4 new exotic weapon feats
- Added Tower Shield Specialist Fighter feats
- Added Aasimar Wings feat with ability
Attachments
Feats_List.zip
(27.04 KiB) Downloaded 64 times

neuronek
Cheater
Cheater
Posts: 36
Joined: Sun Mar 05, 2017 7:03 pm
Reputation: 18

Re: pathfinder kingmaker save edit

Post by neuronek » Tue Oct 09, 2018 7:21 pm

Merging both files.
Feats_List_Updated_v5.zip
Added Crane Wing, Extra Bane (Inquisitor)
(29.69 KiB) Downloaded 55 times
Another update:
Feats_List_Updated_v6.zip
Added Paladin Lv6 Mercies: Dazed, Diseased, Staggered
(29.85 KiB) Downloaded 125 times
2018-10-15, Yet another:
Feats_List_Updated_v7.zip
Added lots of Alchemist Feats, some Barbarian, Ranger and Monk feats aswell
(33.14 KiB) Downloaded 32 times
Yet another ;)
Feats_List_Updated_v8.zip
Added level 9 Paladin mercies
(33.69 KiB) Downloaded 183 times
2018-10-24, some more... my party is lv 14 now :)
Feats_List_Updated_v9.zip
Updated:
Staggering Critical,
Comments about all Two-Weapon fighting feats,
New Feats:
Wings (regular wings ... because there's aasimar ones that tseblade found :D )
Rogue:
Focusing Attack - Confused
Focusing Attack - Shaken
Focusing Attack - Sickened
Confounding Blades
Crippling Strike
Dispelling Attack
Double Debilitation
Improved Evasion
Opportunist
Barbarian:
Beast Totem, Greater
Fearless Rage
Paladin:
Mercy - Blinded
Mercy - Paralyzed
Mercy - Stunned
Magus:
Enduring Blade
Prescient Attack
Dimension Strike
Ghost Blade
Hasted Assault
Alchemist:
Cursed Bombs
Greater Cognatogen
Greater Mutagen
Mummification
Ranger:
Favored Enemy - Aberration
Favored Enemy - Animals
Favored Enemy - Constructs
Favored Enemy - Dragons
Favored Enemy - Dwarves
Favored Enemy - Elves
Favored Enemy - Fey
Favored Enemy - Giant Humanoids
Favored Enemy - Gnomes
Favored Enemy - Goblins
Favored Enemy - Halflings
Favored Enemy - Humans
Favored Enemy - Magical Beasts
Favored Enemy - Monstrous Humanoids
Favored Enemy - Outsiders
Favored Enemy - Plants
Favored Enemy - Reptilian Humanoids
Favored Enemy - Undead
Favored Enemy - Vermin
(38.4 KiB) Downloaded 173 times
Last edited by neuronek on Wed Oct 24, 2018 7:41 pm, edited 3 times in total.

wannabecheater
Novice Cheater
Novice Cheater
Posts: 19
Joined: Fri Sep 28, 2018 1:23 pm
Reputation: 2

Re: pathfinder kingmaker save edit

Post by wannabecheater » Sat Oct 13, 2018 6:55 pm

any luck in transplanting abilities across classes? Like giving fighter channel postive energy?

On another note, i was able to swap/add spells in the spellbook, including meta magic spells (e.g. putting quickened cloudkill as a cantrip and casting it).
Swapping arcane spells into divine spellbooks seems to work ok too, game seem to treat it as a divine spell for rules (armor, failure %) if the m_SpellbookBlueprint is using the cleric's instead of wizard's.

Level scaling works ok even with cleric class casting a inserted spell (tested with Wail of the Banshee as cantrip). I can even convert lvl 1 and up wizard spells that i inserted into cure spells (normal cleric behavior).
But i just can't force edited /inserted cantrips to show up under the cantrip tab in spellbook hotbar. Lvl 1 spells and up shows up normally.
I am able to make the cantrip show up in abilities hotbar though, but any spells with the arrow pointing up to allow options (such as choosing which color dragon to transform to for Dragonkind III) will not work for cantrips...

Rebelicious
Cheater
Cheater
Posts: 36
Joined: Tue May 09, 2017 10:46 am
Reputation: 0

Re: pathfinder kingmaker save edit

Post by Rebelicious » Mon Oct 15, 2018 6:28 pm

Has anyone been able to move given abilities?

I've been trying to find a way to move and get Range Spellstrike and Ranged Spell Combat to work, from an Eldritch Archer to an Eldritch Scion. Still no dice. It's the weirdest thing, because I can remove a Feature section on the Eldritch Archer save, and the character will lose Ranged Spell Combat, but even though the section is added to the Eldritch Scion save, it doesn't show up.

I'm at my wit's end.

ragnin
Noobzor
Noobzor
Posts: 10
Joined: Fri Sep 15, 2017 2:29 am
Reputation: 7

Re: pathfinder kingmaker save edit

Post by ragnin » Wed Oct 17, 2018 5:45 pm

I was wondering if its possible to change your companions subclass through editing. I'd really like to make Amiri an invincible rager or mad dog.

edit: Well through a bit of trial I was able to turn her into a rager. My attempts at turning her into a different class (two handed fighter) just ended up with a blank fighter progression tree. I was able to level her up and turn her into a mad dog complete with a companion though so I guess my work around worked kind of. Anyone know what I might have done wrong on the class change to fighter? I basically made a two handed fighter MC and than copied the class, archetype and blueprint codes into amiri's, overwriting her original barb class.

Carrnage
Cheater
Cheater
Posts: 38
Joined: Sun Jun 25, 2017 1:36 am
Reputation: 3

Re: pathfinder kingmaker save edit

Post by Carrnage » Fri Oct 19, 2018 10:07 am

neuronek wrote:
Tue Oct 09, 2018 7:21 pm
Merging both files.
Feats_List_Updated_v5.zip

Another update:
Feats_List_Updated_v6.zip

2018-10-15, Yet another:
Feats_List_Updated_v7.zip

Yet another ;)
Feats_List_Updated_v8.zip
Any chance of sorceror bloodline feats? the flat immunities they get as the capstones look nice.

User avatar
Necrosx
Novice Cheater
Novice Cheater
Posts: 21
Joined: Fri Aug 10, 2018 10:06 pm
Reputation: 0

Re: pathfinder kingmaker save edit

Post by Necrosx » Mon Oct 22, 2018 7:27 pm

Im a little lost on how to add feats/features via save editing. Im looking to add the undead trait from Jaethal to my main character, since someone found it in the other thread, but Im really not sure how to do that. Would someone be willing to walk me through it, or make the changes if I provided my party file? Obviously I'd prefer to learn how to do it myself, but so far everything seems to make it out to be really complicated. Thanks ahead of time.

neuronek
Cheater
Cheater
Posts: 36
Joined: Sun Mar 05, 2017 7:03 pm
Reputation: 18

Re: pathfinder kingmaker save edit

Post by neuronek » Wed Oct 24, 2018 6:46 pm

Necrosx wrote:
Mon Oct 22, 2018 7:27 pm
Im a little lost on how to add feats/features via save editing. Im looking to add the undead trait from Jaethal to my main character, since someone found it in the other thread, but Im really not sure how to do that. Would someone be willing to walk me through it, or make the changes if I provided my party file? Obviously I'd prefer to learn how to do it myself, but so far everything seems to make it out to be really complicated. Thanks ahead of time.
Tools:
* 7-zip (https://www.7-zip.org/)
* Notepad++ (https://notepad-plus-plus.org/)
* Notepad++ JSTool Plugin (https://sourceforge.net/projects/jsminnpp/)
* GitBash (https://gitforwindows.org/)

Steps:
1. Locate Your saves Directory, in case of Steam the game likes to save to:
C:\Users\${YOUR_WINDOWS_USER_ACCOUNT}\AppData\LocalLow\Owlcat Games\Pathfinder Kingmaker\Saved Games
2. Use 7zip to open the save You wish to edit, and extract the party.json file (step1.png)
3. Open party.json in Notepad++, use the JSFormat option provided by JSTool Plugin (Ctrl+Alt+M), save the file
4. Find the highest $id value in the file, to do this open a git bash console and execute the following unix command: (step2.png)

Code: Select all

$ grep -P '\"\$id.*' party.json | grep -oP '\d+' | sort -n | tail -n 1
29234
* You now know that You should start adding items with the Id 29235 or higher to avoid conflicts :)
5. Go back to Notepad++, use the JSON Viewer functionality provided by JSTool (Ctrl+Alt+J) (step3.png)
6. Locate the character You're interested in editing, let's say Your main character. My char's nickname is Sarnum: (step4.png)
* Feats are located under Progression/Features
* Abilities are located under Abilities
* Activatable Abilities are located under ActivatableAbilities
I don't know what You're trying to add so I took a look here:
https://github.com/ericfitzgerald/Kingm ... eatures.ts
And I see lot of Jaethal features, which would be feats :)

Code: Select all

"1ed5fac73a4dc054d8411f24cf09d703": "JaethalImmortality",
I went and found this UUID in my own save:

Code: Select all

{
  "$id": "14031",
  "$type": "Kingmaker.UnitLogic.Feature, Assembly-CSharp",
  "m_Context":
  {
    "$id": "14032",
    "m_OwnerDescriptor":
    {
      "$ref": "13417"
    },
    "m_CasterReference":
    {
      "m_UniqueId": "c4b4f290-507b-42f2-bea2-cff91fb7e5fa"
    },
    "m_Ranks": [0, 0, 0, 0, 0, 0, 0],
    "m_SharedValues": [0, 0, 0, 0, 0, 0],
    "m_Params": null,
    "AssociatedBlueprint": "1ed5fac73a4dc054d8411f24cf09d703",
    "ParentContext": null,
    "m_MainTarget": null,
    "Params": {},
    "SpellDescriptor": "None",
    "SpellSchool": "None",
    "SpellLevel": 0,
    "Direction":
    {
      "$type": "UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
      "x": 0.0,
      "y": 0.0,
      "z": 0.0
    }
  },
  "Blueprint": "1ed5fac73a4dc054d8411f24cf09d703",
  "m_ComponentsData": [
    {
      "$id": "14033",
      "ComponentName": "$AddImmortality$be58f378-0d60-4fe4-a867-0fa55dc92519"
    },
    {
      "$id": "14034",
      "ComponentName": "$AreaDidLoadTrigger$b8a55a98-6fd1-4b0a-9c32-a522eb088095"
    }
  ],
  "Rank": 1,
  "Source": null,
  "Param": null,
  "IgnorePrerequisites": true,
  "Owner":
  {
    "$ref": "13417"
  },
  "Initialized": true,
  "Active": true,
  "SourceItem": null,
  "SourceCutscene": null
}
7. Prepare the Feat to be added to Your character.
* m_Context.m_OwnerDescriptor and Owner.$ref need to point to root of the object of the character You want this feat to belong to. In case of my character the root $id of "Sarnum" is "5".
* m_Context.m_CasterReference needs to be changed to the UUID of the character that You wish to add the feat to. For example in case of "Sarnum" Her UUID is "f043e0f3-124e-49aa-82bb-3796247937f6"
* all $id need to have values higher than the highest id In Your file , so let's start from 29235
* make sure that You set Source to "null" and IgnorePrerequisites to "true", in case of this feat the game was so kind to set it for us, the feats gained through levelups are linked to a specific level so that they can be shown in Your character level up screen, it seems that You can't have more than 4 "progressions" per level so please be wary of it.
* If the feat seems deactivated when loading the game, make sure that You've set "Initialized" and "Active" to true.

Code: Select all

{
  "$id": "29235",
  "$type": "Kingmaker.UnitLogic.Feature, Assembly-CSharp",
  "m_Context":
  {
    "$id": "29236",
    "m_OwnerDescriptor":
    {
      "$ref": "5"
    },
    "m_CasterReference":
    {
      "m_UniqueId": "f043e0f3-124e-49aa-82bb-3796247937f6"
    },
    "m_Ranks": [0, 0, 0, 0, 0, 0, 0],
    "m_SharedValues": [0, 0, 0, 0, 0, 0],
    "m_Params": null,
    "AssociatedBlueprint": "1ed5fac73a4dc054d8411f24cf09d703",
    "ParentContext": null,
    "m_MainTarget": null,
    "Params": {},
    "SpellDescriptor": "None",
    "SpellSchool": "None",
    "SpellLevel": 0,
    "Direction":
    {
      "$type": "UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
      "x": 0.0,
      "y": 0.0,
      "z": 0.0
    }
  },
  "Blueprint": "1ed5fac73a4dc054d8411f24cf09d703",
  "m_ComponentsData": [
    {
      "$id": "29237",
      "ComponentName": "$AddImmortality$be58f378-0d60-4fe4-a867-0fa55dc92519"
    },
    {
      "$id": "29238",
      "ComponentName": "$AreaDidLoadTrigger$b8a55a98-6fd1-4b0a-9c32-a522eb088095"
    }
  ],
  "Rank": 1,
  "Source": null,
  "Param": null,
  "IgnorePrerequisites": true,
  "Owner":
  {
    "$ref": "5"
  },
  "Initialized": true,
  "Active": true,
  "SourceItem": null,
  "SourceCutscene": null
}
8. Add the new "feat" to Your character, at the bottom of Features JSON Array, please make sure that all array objects are separated by commas, example

Code: Select all

"m_Facts": [
{ "feat1":"bunch of stuff"
},
{ "feat1":"bunch of stuff"
}
]
* Usually I just add a comma and insert my generated bunch of feats below.

steps.zip
pictures for this tutorial
(78.55 KiB) Downloaded 43 times
This should be quite easy , as long as the feat You're adding does not require a linked Ability/Activatable Ability :)
9. Save party.json, drag it over to the opened save file, close the 7zip window once You've saved the changes and then try loading Your save.

* If You want to double-check if Your JSON syntax is correct You can use: https://jsonformatter.org/
I do this via IntelliJ IDEA but I'm just a java guy ;)

Hope this helps

User avatar
Necrosx
Novice Cheater
Novice Cheater
Posts: 21
Joined: Fri Aug 10, 2018 10:06 pm
Reputation: 0

Re: pathfinder kingmaker save edit

Post by Necrosx » Wed Oct 24, 2018 8:50 pm

neuronek wrote:
Wed Oct 24, 2018 6:46 pm
Show
Necrosx wrote:
Mon Oct 22, 2018 7:27 pm
Im a little lost on how to add feats/features via save editing. Im looking to add the undead trait from Jaethal to my main character, since someone found it in the other thread, but Im really not sure how to do that. Would someone be willing to walk me through it, or make the changes if I provided my party file? Obviously I'd prefer to learn how to do it myself, but so far everything seems to make it out to be really complicated. Thanks ahead of time.
Tools:
* 7-zip (https://www.7-zip.org/)
* Notepad++ (https://notepad-plus-plus.org/)
* Notepad++ JSTool Plugin (https://sourceforge.net/projects/jsminnpp/)
* GitBash (https://gitforwindows.org/)

Steps:
1. Locate Your saves Directory, in case of Steam the game likes to save to:
C:\Users\${YOUR_WINDOWS_USER_ACCOUNT}\AppData\LocalLow\Owlcat Games\Pathfinder Kingmaker\Saved Games
2. Use 7zip to open the save You wish to edit, and extract the party.json file (step1.png)
3. Open party.json in Notepad++, use the JSFormat option provided by JSTool Plugin (Ctrl+Alt+M), save the file
4. Find the highest $id value in the file, to do this open a git bash console and execute the following unix command: (step2.png)

Code: Select all

$ grep -P '\"\$id.*' party.json | grep -oP '\d+' | sort -n | tail -n 1
29234
* You now know that You should start adding items with the Id 29235 or higher to avoid conflicts :)
5. Go back to Notepad++, use the JSON Viewer functionality provided by JSTool (Ctrl+Alt+J) (step3.png)
6. Locate the character You're interested in editing, let's say Your main character. My char's nickname is Sarnum: (step4.png)
* Feats are located under Progression/Features
* Abilities are located under Abilities
* Activatable Abilities are located under ActivatableAbilities
I don't know what You're trying to add so I took a look here:
https://github.com/ericfitzgerald/Kingm ... eatures.ts
And I see lot of Jaethal features, which would be feats :)

Code: Select all

"1ed5fac73a4dc054d8411f24cf09d703": "JaethalImmortality",
I went and found this UUID in my own save:

Code: Select all

{
  "$id": "14031",
  "$type": "Kingmaker.UnitLogic.Feature, Assembly-CSharp",
  "m_Context":
  {
    "$id": "14032",
    "m_OwnerDescriptor":
    {
      "$ref": "13417"
    },
    "m_CasterReference":
    {
      "m_UniqueId": "c4b4f290-507b-42f2-bea2-cff91fb7e5fa"
    },
    "m_Ranks": [0, 0, 0, 0, 0, 0, 0],
    "m_SharedValues": [0, 0, 0, 0, 0, 0],
    "m_Params": null,
    "AssociatedBlueprint": "1ed5fac73a4dc054d8411f24cf09d703",
    "ParentContext": null,
    "m_MainTarget": null,
    "Params": {},
    "SpellDescriptor": "None",
    "SpellSchool": "None",
    "SpellLevel": 0,
    "Direction":
    {
      "$type": "UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
      "x": 0.0,
      "y": 0.0,
      "z": 0.0
    }
  },
  "Blueprint": "1ed5fac73a4dc054d8411f24cf09d703",
  "m_ComponentsData": [
    {
      "$id": "14033",
      "ComponentName": "$AddImmortality$be58f378-0d60-4fe4-a867-0fa55dc92519"
    },
    {
      "$id": "14034",
      "ComponentName": "$AreaDidLoadTrigger$b8a55a98-6fd1-4b0a-9c32-a522eb088095"
    }
  ],
  "Rank": 1,
  "Source": null,
  "Param": null,
  "IgnorePrerequisites": true,
  "Owner":
  {
    "$ref": "13417"
  },
  "Initialized": true,
  "Active": true,
  "SourceItem": null,
  "SourceCutscene": null
}
7. Prepare the Feat to be added to Your character.
* m_Context.m_OwnerDescriptor and Owner.$ref need to point to root of the object of the character You want this feat to belong to. In case of my character the root $id of "Sarnum" is "5".
* m_Context.m_CasterReference needs to be changed to the UUID of the character that You wish to add the feat to. For example in case of "Sarnum" Her UUID is "f043e0f3-124e-49aa-82bb-3796247937f6"
* all $id need to have values higher than the highest id In Your file , so let's start from 29235
* make sure that You set Source to "null" and IgnorePrerequisites to "true", in case of this feat the game was so kind to set it for us, the feats gained through levelups are linked to a specific level so that they can be shown in Your character level up screen, it seems that You can't have more than 4 "progressions" per level so please be wary of it.
* If the feat seems deactivated when loading the game, make sure that You've set "Initialized" and "Active" to true.

Code: Select all

{
  "$id": "29235",
  "$type": "Kingmaker.UnitLogic.Feature, Assembly-CSharp",
  "m_Context":
  {
    "$id": "29236",
    "m_OwnerDescriptor":
    {
      "$ref": "5"
    },
    "m_CasterReference":
    {
      "m_UniqueId": "f043e0f3-124e-49aa-82bb-3796247937f6"
    },
    "m_Ranks": [0, 0, 0, 0, 0, 0, 0],
    "m_SharedValues": [0, 0, 0, 0, 0, 0],
    "m_Params": null,
    "AssociatedBlueprint": "1ed5fac73a4dc054d8411f24cf09d703",
    "ParentContext": null,
    "m_MainTarget": null,
    "Params": {},
    "SpellDescriptor": "None",
    "SpellSchool": "None",
    "SpellLevel": 0,
    "Direction":
    {
      "$type": "UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
      "x": 0.0,
      "y": 0.0,
      "z": 0.0
    }
  },
  "Blueprint": "1ed5fac73a4dc054d8411f24cf09d703",
  "m_ComponentsData": [
    {
      "$id": "29237",
      "ComponentName": "$AddImmortality$be58f378-0d60-4fe4-a867-0fa55dc92519"
    },
    {
      "$id": "29238",
      "ComponentName": "$AreaDidLoadTrigger$b8a55a98-6fd1-4b0a-9c32-a522eb088095"
    }
  ],
  "Rank": 1,
  "Source": null,
  "Param": null,
  "IgnorePrerequisites": true,
  "Owner":
  {
    "$ref": "5"
  },
  "Initialized": true,
  "Active": true,
  "SourceItem": null,
  "SourceCutscene": null
}
8. Add the new "feat" to Your character, at the bottom of Features JSON Array, please make sure that all array objects are separated by commas, example

Code: Select all

"m_Facts": [
{ "feat1":"bunch of stuff"
},
{ "feat1":"bunch of stuff"
}
]
* Usually I just add a comma and insert my generated bunch of feats below.


steps.zip

This should be quite easy , as long as the feat You're adding does not require a linked Ability/Activatable Ability :)
9. Save party.json, drag it over to the opened save file, close the 7zip window once You've saved the changes and then try loading Your save.

* If You want to double-check if Your JSON syntax is correct You can use: https://jsonformatter.org/
I do this via IntelliJ IDEA but I'm just a java guy ;)

Hope this helps
This helped immensely. I was able to figure it out, and though I got an error the first time I tried (I was off on the placement) I managed to get it correct the second time it seems. Only problem is now the game seems to load endlessly? Any idea what could have caused that?

Edit - Turns out I was dumb and inserted it into another feat, which was causing endless feedback slowly eating up all my RAM. Gonna give this another shot.

Edit 2 - It would really help if I made sure I was inserting it into my character and not one of the other ones. Still havnt quite got it, but at least Im on the right track.

Edit 3 - Im pretty sure I have it in the right place, but it seems back to endlessly loading. Doesnt seem to be eating up a ton of RAM like last time though.

Edit 4 - I cannot for the life of me seem to get it to work. The game always ends up in an endless loading screen when I try and load up the save. Would you mind taking a look to see if I am getting things correctly done? I'll leave my save, a backup of it so you can see the original, and what Im trying to add attached.
Troublesome Feats.zip
(3.05 MiB) Downloaded 21 times
Last edited by Necrosx on Fri Oct 26, 2018 4:04 pm, edited 1 time in total.

rlurking
Novice Cheater
Novice Cheater
Posts: 21
Joined: Fri Jun 23, 2017 6:33 pm
Reputation: 4

Re: pathfinder kingmaker save edit

Post by rlurking » Thu Oct 25, 2018 12:28 am

Do you have any idea what the setup for Magus Sword Saint Chosen Weapon is?

tseblade
Novice Cheater
Novice Cheater
Posts: 18
Joined: Sun Sep 30, 2018 4:25 pm
Reputation: 8

Re: pathfinder kingmaker save edit

Post by tseblade » Thu Oct 25, 2018 2:22 pm

Hey Neuronek,

I'm doing a full sweep of all the m_Facts for the playable character and also collecting racial traits and feats. Will update over the weekend.

However there are 4 sections which i have no idea about that every main character has, wanted your opinion on what they could be.

1. Seems to be general character template. All characters including companions have it as the first item in m_Facts.

Code: Select all

{
			"$id": "3524",
			"$type": "Kingmaker.UnitLogic.Feature, Assembly-CSharp",
			"m_Context": {
				"$id": "3525",
				"m_OwnerDescriptor": {
					"$ref": "5"
				},
				"m_CasterReference": {
					"m_UniqueId": null
				},
				"m_Ranks": [0, 0, 0, 0, 0, 0, 0],
				"m_SharedValues": [0, 0, 0, 0, 0, 0],
				"m_Params": null,
				"AssociatedBlueprint": "5b72dd2ca2cb73b49903806ee8986325",
				"ParentContext": null,
				"m_MainTarget": null,
				"Params": {},
				"SpellDescriptor": "None",
				"SpellSchool": "None",
				"SpellLevel": 0,
				"Direction": {
					"$type": "UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
					"x": 0,
					"y": 0,
					"z": 0
				}
			},
			"Blueprint": "5b72dd2ca2cb73b49903806ee8986325",
			"m_ComponentsData": [],
			"Rank": 1,
			"Source": null,
			"Param": null,
			"IgnorePrerequisites": true,
			"Owner": {
				"$ref": "5"
			},
			"Initialized": true,
			"Active": true,
			"SourceItem": null,
			"SourceCutscene": null
		}
2. It includes the Component name: AddBuffInBadWeather but no idea what it could be. Only main characters have it.

Code: Select all

{
								"$id": "241",
								"$type": "Kingmaker.UnitLogic.Feature, Assembly-CSharp",
								"m_Context": {
									"$id": "242",
									"m_OwnerDescriptor": {
										"$ref": "5"
									},
									"m_CasterReference": {
										"m_UniqueId": "4d268419-a637-4855-9c4c-e088e194c72f"
									},
									"m_Ranks": [0, 0, 0, 0, 0, 0, 0],
									"m_SharedValues": [0, 0, 0, 0, 0, 0],
									"m_Params": null,
									"AssociatedBlueprint": "0aeba56961779e54a8a0f6dedef081ee",
									"ParentContext": null,
									"m_MainTarget": null,
									"Params": {},
									"SpellDescriptor": "None",
									"SpellSchool": "None",
									"SpellLevel": 0,
									"Direction": {
										"$type": "UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
										"x": 0.0,
										"y": 0.0,
										"z": 0.0
									}
								},
								"Blueprint": "0aeba56961779e54a8a0f6dedef081ee",
								"m_ComponentsData": [{
										"$id": "243",
										"ComponentName": "$AddBuffInBadWeather$a3a8772d-c0bc-414a-b935-e00092ee6c06"
									}
								],
								"Rank": 1,
								"Source": "5b72dd2ca2cb73b49903806ee8986325",
								"Param": null,
								"IgnorePrerequisites": true,
								"Owner": {
									"$ref": "5"
								},
								"Initialized": true,
								"Active": true,
								"SourceItem": null,
								"SourceCutscene": null
							}
3-4. It includes the Component name: AddFeatureToNPC but no idea what it could be. Only main characters have it. Thought it might contain info for conversation for the MC.

Code: Select all

{
								"$id": "230",
								"$type": "Kingmaker.UnitLogic.Feature, Assembly-CSharp",
								"m_Context": {
									"$id": "231",
									"m_OwnerDescriptor": {
										"$ref": "5"
									},
									"m_CasterReference": {
										"m_UniqueId": "4d268419-a637-4855-9c4c-e088e194c72f"
									},
									"m_Ranks": [0, 0, 0, 0, 0, 0, 0],
									"m_SharedValues": [0, 0, 0, 0, 0, 0],
									"m_Params": null,
									"AssociatedBlueprint": "109f01a0cbd151d44a98b17056460bc9",
									"ParentContext": null,
									"m_MainTarget": null,
									"Params": {},
									"SpellDescriptor": "None",
									"SpellSchool": "None",
									"SpellLevel": 0,
									"Direction": {
										"$type": "UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
										"x": 0.0,
										"y": 0.0,
										"z": 0.0
									}
								},
								"Blueprint": "109f01a0cbd151d44a98b17056460bc9",
								"m_ComponentsData": [{
										"$id": "232",
										"ComponentName": "$AddFeatureToNPC$dfaecb92-b2fd-4e2c-b528-73104123ac46",
										"m_AppliedFact": null
									}
								],
								"Rank": 1,
								"Source": null,
								"Param": null,
								"IgnorePrerequisites": true,
								"Owner": {
									"$ref": "5"
								},
								"Initialized": true,
								"Active": true,
								"SourceItem": null,
								"SourceCutscene": null
							}, {
								"$id": "233",
								"$type": "Kingmaker.UnitLogic.Feature, Assembly-CSharp",
								"m_Context": {
									"$id": "234",
									"m_OwnerDescriptor": {
										"$ref": "5"
									},
									"m_CasterReference": {
										"m_UniqueId": "4d268419-a637-4855-9c4c-e088e194c72f"
									},
									"m_Ranks": [0, 0, 0, 0, 0, 0, 0],
									"m_SharedValues": [0, 0, 0, 0, 0, 0],
									"m_Params": null,
									"AssociatedBlueprint": "33bc1b86b3a2fa5489cc0a5bdcf3f6f8",
									"ParentContext": null,
									"m_MainTarget": null,
									"Params": {},
									"SpellDescriptor": "None",
									"SpellSchool": "None",
									"SpellLevel": 0,
									"Direction": {
										"$type": "UnityEngine.Vector3, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
										"x": 0.0,
										"y": 0.0,
										"z": 0.0
									}
								},
								"Blueprint": "33bc1b86b3a2fa5489cc0a5bdcf3f6f8",
								"m_ComponentsData": [{
										"$id": "235",
										"ComponentName": "$AddFeatureToNPC$dfaecb92-b2fd-4e2c-b528-73104123ac46",
										"m_AppliedFact": null
									}
								],
								"Rank": 1,
								"Source": null,
								"Param": null,
								"IgnorePrerequisites": true,
								"Owner": {
									"$ref": "5"
								},
								"Initialized": true,
								"Active": true,
								"SourceItem": null,
								"SourceCutscene": null
							}
Any idea on what they exactly could be?

neuronek
Cheater
Cheater
Posts: 36
Joined: Sun Mar 05, 2017 7:03 pm
Reputation: 18

Re: pathfinder kingmaker save edit

Post by neuronek » Thu Oct 25, 2018 5:06 pm

Hi, tseblade so starting from the top, I think that the guy over at github might have an idea,

Take a look here:
https://github.com/ericfitzgerald/Kingm ... eatures.ts

1. The blueprint is 5b72dd2ca2cb73b49903806ee8986325 which corresponds to: BasicFeatsProgression whatever it means :)

2. The blueprint is 0aeba56961779e54a8a0f6dedef081ee which corresponds to: StormBuff

3. The blueprint is 33bc1b86b3a2fa5489cc0a5bdcf3f6f8 which corresponds to: DifficultyAdvancementBaseFeature

Some features require "Descriptors" in order to function, maybe this is their function. I guess 2. means that the character has some stat bonus during bad weather :D

Hello Necrosx, the party.json file You uploaded has invalid syntax:
https://jsonformatter.org/

Code: Select all

Parse error on line 71756:
...": null
}, 
						],
						"Owner": {
---------------------^
Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '[', got ']'
Remove the comma after the closing bracket, the comma in this case "says" that there will be another element, which is not there.

https://www.w3schools.com/js/js_json_arrays.asp

User avatar
Necrosx
Novice Cheater
Novice Cheater
Posts: 21
Joined: Fri Aug 10, 2018 10:06 pm
Reputation: 0

Re: pathfinder kingmaker save edit

Post by Necrosx » Thu Oct 25, 2018 5:34 pm

neuronek wrote:
Thu Oct 25, 2018 5:06 pm
Hello Necrosx, the party.json file You uploaded has invalid syntax:
https://jsonformatter.org/

Code: Select all

Parse error on line 71756:
...": null
}, 
						],
						"Owner": {
---------------------^
Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '[', got ']'
Remove the comma after the closing bracket, the comma in this case "says" that there will be another element, which is not there.

https://www.w3schools.com/js/js_json_arrays.asp
Oops, silly mistake on my part. I thought I fixed that. Anyways, I fixed that now, but Im still getting the endless loading. See anything else wrong with it?

Post Reply

Who is online

Users browsing this forum: No registered users