Svartypops Posted July 13, 2021 Posted July 13, 2021 (edited) Could someone please advise on this issue? Quote <Entry> <ID>2424</ID> <DefaultText>Arbalest - <link="gamedata://17aac4e5-0547-4a3c-a21b-e0d3fd2d86c9">Overbearing Shot</link></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... 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; How/why/is it pulling that data from an unlinked status effect? Edited July 13, 2021 by Svartypops
house2fly Posted July 14, 2021 Posted July 14, 2021 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. 1
Svartypops Posted July 14, 2021 Author Posted July 14, 2021 Aha! Wonderful information, nom nom nom. Thanks a lot.
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now