Jump to content

How do Proficiencies Tooltips work?


Recommended Posts

Could someone please advise on this issue?

Quote

    <Entry>
      <ID>2424</ID>
      <DefaultText>Arbalest - &lt;link="gamedata://17aac4e5-0547-4a3c-a21b-e0d3fd2d86c9"&gt;Overbearing Shot&lt;/link&gt;</DefaultText>
      <FemaleText />
    </Entry>

Here is one of the tooltips in question in the Abilities.stringtable.

 

As you can see, it appears to be pulling some data from the file. Let's look at the ability GUID it links to ...

 

            "$type""Game.GameData.GenericAbilityGameData, Assembly-CSharp",
            "DebugName""Arbalest_Overbearing_Shot",
            "ID""17aac4e5-0547-4a3c-a21b-e0d3fd2d86c9",
            "Components": [
                {
                    "$type""Game.GameData.GenericAbilityComponent, Assembly-CSharp",
                    "KeywordsIDs": [],
                    "DisplayName"2028,
                    "Description"2456,
                    "DescriptionTactical"-1,

Checking those text values... 

Quote

      <ID>2028</ID>
      <DefaultText>Overbearing Shot</DefaultText>

and

Quote

      <ID>2456</ID>
      <DefaultText>The character takes careful aim to cause maximum impact with the Arbalest. Hits knock the target prone.</DefaultText>

That's not what's on the tooltip, so that's not where it's getting the data from.

Let's try looking for 2424 in the Abilities.GameDataBundle instead...

            "$type""Game.GameData.GenericAbilityGameData, Assembly-CSharp",
            "DebugName""WeaponProficiency_Arbalest",
            "ID""a89cc4e8-62aa-4835-b70a-89abe4516810",
            "Components": [
                {
                    "$type""Game.GameData.GenericAbilityComponent, Assembly-CSharp",
                    "KeywordsIDs": [
                        "bb68a03d-507e-4799-9a4e-abe7377d1e56"
                    ],
                    "DisplayName"2424,
                    "Description"3561,
                    "DescriptionTactical"-1,
                    "UpgradeDescriptions": [
                        {
                            "String"2028,
                            "StringTactical"-1
                        },
                        {
                            "String"2456,
                            "StringTactical"-1
                        }
                    ],

There it is, used in the displayname of this thing.

Now let's check that new text entry is...

Quote

<ID>3561</ID>
      <DefaultText>Proficiency in a weapon or shield grants access to a modal ability...

Yes yes, very generic. Not what we want.

The other entries we've already examined above.

So where is the game getting the data from? Logic says that it comes from the actual ability itself, then converts it to legible text somehow. Where's that conversion taking place? Where, for example, is it getting the words on this? They don't come from nowhere...

1942589997_ArbalestsansMod.jpg.35b2c383ed0c2a8ac9965a189873d383.jpg

If it's truly pulling data from the files, then I'm expecting it to come from a file that has something akin to

{0} {1} on successful {2} with {3} weapons

for the first status_effect in the itemmod, and then
{0} {1} with {2} weapons

... for the second one.  I have no idea where the tooltips are being compiled.

It also needs to insert a comma if the list of effects is >1 element long. Is this all in Unity stuff/DLLs?

 

ANYWAY...

... here's where I truly can't understand how it's working...

Even if I remove the drawback's status_effect from the ability, it's effects still appear on the tooltip. 

 

The strange thing is that if I put

                    "HideFromCombatTooltip""true",

on the now-unlinked status_effect, it disappears. Like so;

16421769_ArbalestwithMod.jpg.6325ef3bf8dc622c3ef2f7845428ac24.jpg

How/why/is it pulling that data from an unlinked status effect?

Edited by Svartypops
Link to comment
Share on other sites

The StatusEffectManager towards the end of the statuseffects.gamedatabundle might have some answers. The first statuseffect for Overbearing Shot is AttackEnemyOnEvent, and in the manager that effect type has this data: 

Quote

{
                            "StatusEffectType": "AttackEnemyOnEvent",
                            "DataType": "5632",
                            "OperatorType": "Add",
                            "DisplayString": -1,
                            "WildcardString": -1,
                            "TacticalString": -1,
                            "AttackFilterDisplayStyleID": "2187499c-ae27-41cd-a373-74cfe55fa59f",
                            "AttackTargetFilterDisplayStyleID": "e3c2a249-5355-4d0f-a9e6-ff9441c76e0c"
                        }

That first UUID points to this

Quote

{
            "$type": "Game.GameData.StatusEffectAttackFilterDisplayGameData, Assembly-CSharp",
            "DebugName": "SE_DISPLAY_With",
            "ID": "2187499c-ae27-41cd-a373-74cfe55fa59f",
            "Components": [
                {
                    "$type": "Game.GameData.StatusEffectAttackFilterDisplayStyleComponent, Assembly-CSharp",
                    "FormatString": 3037,
                    "IntrinsicAttackFilters": []
                }
            ]
        }

 

And in the gui.stringtable that 3037 is apparently 

Quote

<Entry>
      <ID>3037</ID>
      <DefaultText>{0} with {1}</DefaultText>
      <FemaleText />
    </Entry>

So it manages to fill {0} with "attack targets on successful attack" (attackenemyonevent with eventvalue being OnScoringGraze etc) and {1} with "arbalest weapons".(associated keyword). The coding which tells it to do that isn't exposed, as far as I know.

  • Like 1
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...