Jump to content
  • 0

[5.0] Summoned characters other than Substantial Phantom never use active abilities automatically


ocelotter

Question

As far as I can tell, no characters summoned by the party use their active abilities via the AI system except for "Substantial Phantom". Examples I've tested include Tekehu's "Ondra's Whip", "Watery Double", "Conjure Greater Blight", and "Lashing Vine"; Xoti's "Spiritual Ally"; and the pet summon "Visage of Concelhaut". I don't think it's just me, judging by similar posts like this one:

However, it has been awhile, so if someone else is not experiencing this issue I'd be glad to hear about it.

 

Reproduction:

1. Have Tekehu in the party with access to "Ondra's Whip".

2. Cast "Ondra's Whip" in combat in a position where it is unable to attack an enemy.

3. Ensure the AI is on for the summoned character.

3. Observe as the character refrains from using its "Dissolve" ability to get into melee range of an enemy.

 

Looking through some of the game files, it's clear to see that many summonable entities do in fact have decision tables listed containing their active abilities. Continuing the example from above, in progressiontables.gamedatabundle, Ondra's Whip has the following progression data:

Spoiler

{
      "$type": "Game.GameData.CharacterProgressionTableGameData, Assembly-CSharp",
      "DebugName": "PT_Tentacle_Spell_OndrasWhip",
      "ID": "4d6030c5-286b-4d48-9a0a-61417498826f",
      "Components": [
        {
          "$type": "Game.GameData.CharacterProgressionTableComponent, Assembly-CSharp",
          "DefaultClassID": "00000000-0000-0000-0000-000000000000",
          "MultiClassID": "00000000-0000-0000-0000-000000000000",
          "Skills": [
            
          ],
          "SubclassesIDs": [
            
          ],
          "IgnoreResources": "false"
        },
        {
          "$type": "Game.GameData.BaseProgressionTableComponent, Assembly-CSharp",
          "AbilityUnlocks": [
            {
              "Note": "Passive: Immobile",
              "Category": "General",
              "UnlockStyle": "AutoGrant",
              "ActivationObject": "Self",
              "AddAbilityID": "300265d1-800b-4614-a4bb-bb85d5a8362d",
              "RemoveAbilityID": "00000000-0000-0000-0000-000000000000",
              "Prerequisites": {
                "MinimumCharacterLevel": 1,
                "PowerLevelRequirement": {
                  "ClassID": "00000000-0000-0000-0000-000000000000",
                  "MinimumPowerLevel": 0
                },
                "RequiresAbilityID": "00000000-0000-0000-0000-000000000000",
                "Conditional": {
                  "Operator": 0,
                  "Components": [
                    
                  ]
                },
                "VisibilityConditional": {
                  "Operator": 0,
                  "Components": [
                    
                  ]
                },
                "IsMutuallyExclusiveUpgrade": "true"
              }
            },
            {
              "Note": "Passive: VFX",
              "Category": "General",
              "UnlockStyle": "AutoGrant",
              "ActivationObject": "Self",
              "AddAbilityID": "06ba2069-08be-4835-a8a6-927b913b4b23",
              "RemoveAbilityID": "00000000-0000-0000-0000-000000000000",
              "Prerequisites": {
                "MinimumCharacterLevel": 1,
                "PowerLevelRequirement": {
                  "ClassID": "00000000-0000-0000-0000-000000000000",
                  "MinimumPowerLevel": 0
                },
                "RequiresAbilityID": "00000000-0000-0000-0000-000000000000",
                "Conditional": {
                  "Operator": 0,
                  "Components": [
                    
                  ]
                },
                "VisibilityConditional": {
                  "Operator": 0,
                  "Components": [
                    
                  ]
                },
                "IsMutuallyExclusiveUpgrade": "true"
              }
            },
            {
              "Note": "Teleport",
              "Category": "General",
              "UnlockStyle": "AutoGrant",
              "ActivationObject": "Self",
              "AddAbilityID": "ac75b376-a057-48b6-ad13-26d6d8950736",
              "RemoveAbilityID": "00000000-0000-0000-0000-000000000000",
              "Prerequisites": {
                "MinimumCharacterLevel": 1,
                "PowerLevelRequirement": {
                  "ClassID": "00000000-0000-0000-0000-000000000000",
                  "MinimumPowerLevel": 0
                },
                "RequiresAbilityID": "00000000-0000-0000-0000-000000000000",
                "Conditional": {
                  "Operator": 0,
                  "Components": [
                    
                  ]
                },
                "VisibilityConditional": {
                  "Operator": 0,
                  "Components": [
                    
                  ]
                },
                "IsMutuallyExclusiveUpgrade": "true"
              }
            }
          ],
          "DefaultDecisionTrees": [
            {
              "AIDecisionTree": {
                "GuidString": "1b0dd299-2753-4688-8e69-93dfd950445d"
              }
            }
          ],
          "DecisionTreeSelectionType": "RandomOrder",
          "DefaultCustomAIID": "00000000-0000-0000-0000-000000000000",
          "DefaultCustomAI2ID": "00000000-0000-0000-0000-000000000000"
        }
      ]
    }

 

The default decision tree listed above ("1b0dd299-2753-4688-8e69-93dfd950445d", found in aidecisiontrees.aidecisiontreebundle) does in fact contain conditionals suggesting that when the whip is not in melee range of an enemy, it should cast Dissolve to approach such an enemy. I briefly looked at the AIController.cs code to see if I could spot the problem, but I don't really have the familiarity needed to do so.

I think this could potentially be an easy bug fix that could provide a lot of value to the game; instead of having to micromanage every summon to use their active abilities, or simply avoiding summons with actives as I currently do, they could automatically use them in most combat scenarios. Furthermore, most of them already have the decision trees in place to do it, they are simply not enabled correctly! For some summons, like Watery Double, the spell becomes entirely worthless without the decision tree, since it is not controllable and refuses to use any of its supposed abilities.

I assume something special was done with "Substantial Phantom" to make it actually recognize its decision tree, so if anyone has any idea what it is, I'd love to hear it to know if I could implement the fix myself with a small mod.

Anyways, thanks for reading.

Edited by ocelotter
Link to comment
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

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...