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

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

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.