BG3-Community-Library-Team / BG3-Compatibility-Framework

An API-based Driven Compatibility Framework for Baldur's Gate 3 Mods
MIT License
44 stars 13 forks source link

[v2.6.3.1] [BUG] "the +1 Ability Score seems to have disappeared again" #87

Closed RandoRuda closed 10 months ago

RandoRuda commented 10 months ago

CYBΞR SPΞKTRΞ morning guys, with v2.6.3.1 the +1 Ability Score seems to have disappeared again. Was previously testing my mod with v2.6.1.2 and it was working fine. Nothing's changed in my CF config (or mod). Apologies if this is a know issue already Randolph Mizer Oh no... NellsRelo Oof, I won't be able to look into this today because American holiday, anyone else able to take a look? 2.6.2 and 2.6.3 made some tweaks to selector removal and shifted progression booleans and strings to the Queue, not sure what would've broken ability selectors

RandoRuda commented 10 months ago

Comparing 2.6.1.2 to 2.6.3.1 https://github.com/BG3-Community-Library-Team/BG3-Compatibility-Framework/compare/2.6.1.2...2.6.3.1

RandoRuda commented 10 months ago

Undead Config (Edited to include relevant section):

{
    "FileVersion": 1,

    "Progressions": [
        {
            "Comment": "Warlock Level 1",
            "UUID": "a7767dc5-e6ab-4e05-96fd-f0424256121c",
            "Selectors": [
                {
                    "modGuid": "95ba3595-2004-4f3c-96b0-4ab671fa1e23",
                    "Action": "Insert",
                    "Function": "SelectAbilityBonus",
                    "Params": {
                        "Guid": "b9149c8e-52c8-46e5-9cb6-fc39301c05fe",
                        "BonusType": "AbilityBonus"
                    }
                }
            ],
        },
    ]
}

Undead Level 1 Progressions:

                <node id="Progression">
                    <attribute id="Boosts" type="LSString" value="ActionResource(WarlockSpellSlot,1,1);ProficiencyBonus(SavingThrow,Wisdom);ProficiencyBonus(SavingThrow,Charisma);Proficiency(LightArmor);Proficiency(SimpleWeapons)"/>
                    <attribute id="Level" type="uint8" value="1"/>
                    <attribute id="Name" type="LSString" value="Warlock"/>
                    <attribute id="PassivesAdded" type="LSString" value="UnlockedWarlockSpellSlotLevel1"/>
                    <attribute id="ProgressionType" type="uint8" value="0"/>
                    <attribute id="Selectors" type="LSString" value="SelectSkills(675236ba-c3cc-44ec-a58b-0e46351c85bd,2);SelectSpells(f5c4af9c-5d8d-4526-9057-94a4b243cd40,2,0,,,,AlwaysPrepared);SelectAbilityBonus(b9149c8e-52c8-46e5-9cb6-fc39301c05fe,AbilityBonus,2,1)"/>
                    <attribute id="TableUUID" type="guid" value="a7a958f1-d858-4021-9fa7-cf87e7d71377"/>
                    <attribute id="UUID" type="guid" value="a7767dc5-e6ab-4e05-96fd-f0424256121c"/>
                    <children>
                        <node id="SubClasses">
                            <children>
                                <node id="SubClass"> Warlock: The Fiend
                                    <attribute id="Object" type="guid" value="8866db28-7dda-4fd6-93ed-20eca16314f0"/>
                                </node>
                                <node id="SubClass"> Warlock: The Great Old One
                                    <attribute id="Object" type="guid" value="e1e4a21f-9405-46ec-81a0-ccc8d58d9736"/>
                                </node>
                                <node id="SubClass"> Warlock: Archfey
                                    <attribute id="Object" type="guid" value="733ddf8c-9ec4-4c5a-85e3-c70fd3df3c24"/>
                                </node>
                                <node id="SubClass"> Warlock: The Undead
                                    <attribute id="Object" type="guid" value="0e4537eb-c76a-4f9e-b98b-0aa4ba8396b0"/>
                                </node>
                            </children>
                        </node>
                    </children>
                </node>
RandoRuda commented 10 months ago

Observations:

RandoRuda commented 10 months ago

Ability Bonus Snippets:

local function BuildSelectAbilityBonusTable(params)
  return {
    UUID = params.Guid or params.UUID,
    Amount = params.Amount or "1",
    BonusType = params.BonusType or "AbilityBonus",
    Amounts = params.Amounts or { "2", "1" }
  }
end
RandoRuda commented 10 months ago

Progression from within game:

        "Level" : 1,
        "Name" : "Warlock",
        "ResourceUUID" : "a7767dc5-e6ab-4e05-96fd-f0424256121c",
        "SelectAbilityBonus" :
        {
                "1" :
                {
                        "Amount" : 2,
                        "Amounts" :
                        {
                                "1" : 2,
                                "2" : 1
                        },
                        "BonusType" : "AbilityBonus",
                        "UUID" : "b9149c8e-52c8-46e5-9cb6-fc39301c05fe"
                }
        },

Possible insertion twice, somehow losing second array item.

RandoRuda commented 10 months ago

Seems like the "Amount" field is used by the game and we aren't giving the right value

Yep, Added "Amount": 2, to the Undead Warlock config fixed it. I'd guess "Amount" tells it how many there are and then "Amounts" is the bonus for each one. https://discord.com/channels/98922182746329088/1151230155449192640/1177392930445598720