Jump to content
View in the app

A better way to browse. Learn more.

Obsidian Forum Community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Featured Replies

In factions.gamedatabundle, the change strength amounts and disposition rank thresholds were unchanged. In fact, 1.0.2.89 did not change any game data except localization and some conversations. What the 1.0.2.89 patch did though was hardcode the Minor change strength value for ChangeDisposition.

 

Disposition.ChangeDisposition() - 1.0.1.64 vs. 1.0.2.89

 

This value can no longer be overridden by mods (for dispositions), at least not without using the Patchwork framework. This isn't a major issue, but this approach makes changing this value (for dispositions) unnecessarily difficult.

 

Changing the Minor change strength value to 1 in data would have the same result without the aforementioned consequences. edit: Actually, that's not correct because ChangeDisposition isn't called for faction reputation and companion relationships. Duh!  :facepalm:

 

A better approach would be to:

  • Create disposition-only Minor, Average, and Major change strengths with their own UUIDs.
  • Create faction-only Minor, Average, and Major change strengths with their own UUIDs.
  • Create relationship-only Minor, Average, and Major change strengths with their own UUIDs.
  • Update all instances where the old Minor, Average, and Major change strengths were used.
This would give designers more control, allowing them to tune and balance disposition, faction, and relationship gains separately, rather than trying to find magic numbers that can be shared between all three systems. Alternatively, hope magic numbers work and set the Minor change strength value to 1 in data.

 

edit: Thinking on it a bit more, to get around having to do #4, you could map the old UUIDs to the new ones for DispositionAddPoints, ReputationAddPoints, and CompanionAddRelationship, so that when each method is called with a particular strengthGuid, the game uses the right individualized change strengths.

 

I know this patch wasn't the disposition rebalance patch, but I just wanted to point out that the rank thresholds still need to be increased. The Deadfire rank thresholds are around 50% what they were in Eternity 1 despite there being 200-300% more DispositionAddPoints calls in Deadfire.

Edited by fireundubh

I can only assume they're balancing them around people that play mostly just the main quest. Which is probably less than half the length of the Pillars 1 main quest. Would make the way they chose to change it make sense.

In factions.gamedatabundle, the change strength amounts and disposition rank thresholds were unchanged. In fact, 1.0.2.89 did not change any game data except localization and some conversations. What the 1.0.2.89 patch did though was hardcode the Minor change strength value for ChangeDisposition.

 

Disposition.ChangeDisposition() - 1.0.1.64 vs. 1.0.2.89

 

This value can no longer be overridden by mods (for dispositions), at least not without using the Patchwork framework. This isn't a major issue, but this approach makes changing this value (for dispositions) unnecessarily difficult.

 

Changing the Minor change strength value to 1 in data would have the same result without the aforementioned consequences. edit: Actually, that's not correct because ChangeDisposition isn't called for faction reputation and companion relationships. Duh!  :facepalm:

 

A better approach would be to:

  • Create disposition-only Minor, Average, and Major change strengths with their own UUIDs.
  • Create faction-only Minor, Average, and Major change strengths with their own UUIDs.
  • Create relationship-only Minor, Average, and Major change strengths with their own UUIDs.
  • Update all instances where the old Minor, Average, and Major change strengths were used.
This would give designers more control, allowing them to tune and balance disposition, faction, and relationship gains separately, rather than trying to find magic numbers that can be shared between all three systems. Alternatively, hope magic numbers work and set the Minor change strength value to 1 in data.

 

edit: Thinking on it a bit more, to get around having to do #4, you could map the old UUIDs to the new ones for DispositionAddPoints, ReputationAddPoints, and CompanionAddRelationship, so that when each method is called with a particular strengthGuid, the game uses the right individualized change strengths.

 

I know this patch wasn't the disposition rebalance patch, but I just wanted to point out that the rank thresholds still need to be increased. The Deadfire rank thresholds are around 50% what they were in Eternity 1 despite there being 200-300% more DispositionAddPoints calls in Deadfire.

 

 

I completely agree that the function responsible for the disposition system shoul dbe refactored making it easier to manipulate and debug, because it is just causing developers to introduce more errors in the system as well. I did not take a look at the code behind this to come up with more ideas about how to handle it better, but this solution seems to be fairly easy to implement.

  • Author

My approach to circumventing the work required to execute #4 would probably look something like this.
 
Code:

private static readonly IList<KeyValuePair<Guid, Guid>> ChangeStrengthMap = new List<KeyValuePair<Guid, Guid>>()
{
    new KeyValuePair<Guid, Guid>(new Guid("54772c0d-cf3f-4589-8cab-9f3601d575c2"), new Guid("d41180a5-fb16-4b07-996c-dc73ea45ca2c")),
    new KeyValuePair<Guid, Guid>(new Guid("71c858fe-7c4b-432a-a105-c518319eaed7"), new Guid("122f590f-e442-4919-a247-454158c99032")),
    new KeyValuePair<Guid, Guid>(new Guid("e19a6f92-2165-4e34-be10-c65e8de970eb"), new Guid("933f3c6c-813a-45f3-9d05-0e3137a8380a")),
};

public void ChangeDisposition(DispositionGameData disposition, ChangeStrengthGameData strength)
{
    // ...

    Guid strengthNewGuid = ChangeStrengthMap.First(l => l.Key == strength.ID).Value;

    ChangeStrengthGameData strengthNew = ResourceManager.GetGameDataObject(strengthNewGuid) as ChangeStrengthGameData;
    int changeValue = strengthNew == null ? strength.ChangeValue : strengthNew.ChangeValue;

    Dictionary<DispositionGameData, int> dispositions;
    (dispositions = this.m_dispositions)[disposition] = dispositions[disposition] + changeValue;

    // ...
}

GameDataObjects:

{
  "$type": "Game.GameData.ChangeStrengthGameData, Assembly-CSharp",
  "DebugName": "Minor Disposition Change",
  "ID": "d41180a5-fb16-4b07-996c-dc73ea45ca2c",
  "Components": [
    {
      "$type": "Game.GameData.ChangeStrengthComponent, Assembly-CSharp",
      "ChangeValue": 1,
      "DisplayName": 1782,
      "FormatString": 1297
    }
  ]
},
...

You leave the base ChangeStrengthGameData objects alone; add 9 more objects for Disposition Change, Reputation Change, and Relationship Change; and map the base object UUIDs to the new ones when calling DispositionAddPoints, CompanionAddRelationship, and ReputationAddPoints.

 

OEI wouldn't have to change any dialogue options or modify the OEI Tools editor, and designers (and modders!) can modify point gains for dispositions, relationships, and reputations individually all in data, which allows designers/modders to maintain separate progression curves for each system.

 

I have the disposition component of this approach working in a Patchwork mod, but I have no idea how to modify static constructors in the Patchwork framework, so I can't build the mod with support for the Game.Scripts class. In any case, this would be better done on OEI's end given the internal value.

Do these changes make your Classic Disposition Patch mod incompatible with the version 1.0.2 patch?

  • Author

Do these changes make your Classic Disposition Patch mod incompatible with the version 1.0.2 patch?

 

No, both 1.0.2 and the CDP set the Minor change strength value to 1. The CDP does this in data while the 1.0.2 patch hardcodes it for dispositions only. However, as Josh noted in a recent livestream, the CDP also slows down reputation gain and relationship gain because the disposition, reputation, and relationship systems all use the same Minor, Average, and Major change strength data. This thread is about hopefully convincing OEI to make these systems use different Minor, Average, and Major change strength data, so they can be properly tuned and balanced separately.

Edited by fireundubh

I can only assume they're balancing them around people that play mostly just the main quest. Which is probably less than half the length of the Pillars 1 main quest. Would make the way they chose to change it make sense.

The real issue isn't that the balance is off, but rather that its now hard coded.

  • 1 month later...

This issue should be resolved for patch 1.1.

 

Thanks for posting all!

 

Best,

 

-Caleb

I like big bugs and I cannot lie...

Create an account or sign in to comment

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.