AndreaColombo Posted July 15, 2018 Share Posted July 15, 2018 (edited) Hello, everyone. I'm trying to put together a mod for the Shifter subclass that would make it select a single Spiritshift form at character creation, and that form would be a modal ability that disables spellcasting while it's active. My first step is to try and turn the Shifter's Spiritshift forms into a Modal ability (they already disable spellcasting, so I don't need to change that part.) Once nailed, I'll move on to making the class select just one form at character creation. Final step will be updating descriptions accordingly. I'm very new to modding Deadfire, so please bear with me Here's what I tried. In abilities.gamedatabundle I found entries for each Spiritshift form that are specific to the Shifter sublcass. To my surprise, they're all set to "IsModal: true" by default; what I did was change a few other fields to match one of the two versions of Duality of Mortal Presence (probably version A). Altered code for one of the forms in spoiler tags: { "$type": "Game.GameData.GenericAbilityGameData, Assembly-CSharp", "DebugName": "Spiritshift_Bear_Shifter", "ID": "41fa0d2c-27a8-46bc-9d96-7dc7a84f8d77", "Components": [ { "$type": "Game.GameData.GenericAbilityComponent, Assembly-CSharp", "KeywordsIDs": [], "DisplayName": 634, "Description": 878, "UpgradeDescriptions": [], "UpgradedFromID": "00000000-0000-0000-0000-000000000000", "Vocalization": "NoVocalization", "Icon": "gui/icons/abilities/druid/spiritshift_bear.png", "UsageType": "None", "UsageValue": 0, "AbilityClassID": "568f1c26-1398-4e67-8b81-0f6a60e6cdde", "AbilityLevel": 0, "IsPassive": "false", "StackingRuleOverride": "Default", "TriggerOnHit": "false", "IsModal": "true", "ModalGroupID": "56a9c7ab-12f8-45ff-8fc9-41bd39fd1d7d", "IsCombatOnly": "true", "IsNonCombatOnly": "false", "HideFromUI": "false", "HideFromCombatLog": "false", "UniqueSet": "None", "NoiseLevelID": "82bc1ce9-3a81-41ca-a61a-cc1f73a53de7", "DurationOverride": 0, "OverrideEmpower": "Default", "ClearsOnMovement": "false", "CannotActivateWhileInStealth": "false", "CannotActivateWhileInvisible": "false", "ActivationPrerequisites": { "Conditional": { "Operator": 0, "Components": [] } }, "ApplicationPrerequisites": { "Conditional": { "Operator": 0, "Components": [] } }, "DeactivationPrerequisites": { "Conditional": { "Operator": 0, "Components": [ { "$type": "OEIFormats.FlowCharts.ConditionalCall, OEIFormats", "Data": { "FullName": "Boolean HasStatusEffectWithKeyword(Guid, Guid)", "Parameters": [ "011111e9-0000-0000-0000-000000000000", "a457d3b9-b5c7-4c2c-817b-65c2835b19cf" ], "Flags": "", "UnrealCall": "", "FunctionHash": -1392641717, "ParameterHash": 1889353659 }, "Not": true, "Operator": 0 } ] } }, "PowerLevelScaling": { "ScalingType": "Never", "BaseLevel": 0, "LevelIncrement": 1, "MaxLevel": 0, "DamageAdjustment": 1, "DurationAdjustment": 1, "BounceCountAdjustment": 0, "ProjectileCountAdjustment": 0, "AccuracyAdjustment": 0, "PenetrationAdjustment": 0 }, "StatusEffectKeywordsIDs": [ "a457d3b9-b5c7-4c2c-817b-65c2835b19cf" ], "StatusEffectsIDs": [ "f5b64334-8b07-4a27-bf3b-0cffd6222dec", "44f79497-1c0d-4f00-a489-925a9546e0f7", "67b5a416-ae58-4308-8222-2e1fe3b658c6", "6bf3088e-08f0-460d-be61-c93efef69ed4" ], "VisualEffects": [ { "VisualEffect": "prefabs/effects/abilities/druid/fx_spiritshift.prefab", "AttachPoint": "Ground", "AttachObject": "Caster", "AttachMode": "Position", "MeshType": "None", "Event": "OnActivate" }, { "VisualEffect": "prefabs/effects/abilities/druid/fx_spiritshift.prefab", "AttachPoint": "Ground", "AttachObject": "Caster", "AttachMode": "Position", "MeshType": "None", "Event": "OnDeactivate" } ], "SelfMaterialReplacementID": "00000000-0000-0000-0000-000000000000", "AttackID": "00000000-0000-0000-0000-000000000000", "AITargetingConditional": { "Conditional": { "Operator": 0, "Components": [] }, "Scripts": [] }, "AudioEventListID": "11505d3a-349b-4d51-838b-ba942c09cea0" }, { "$type": "Game.GameData.ProgressionUnlockableComponent, Assembly-CSharp" } ] } Specifically, I changed: UsageType from "Per Encounter" to "None" UsageValue from 1 to 0 DurationOverride from 22 to 0 ModalIDGroup from an alphanumeric something I don't understand to whatever alphanumeric blurb Duality of Mortal Presence had. I then tried it in-game and this is the result: During character creation, Spiritshift forms are no longer displayed in the ability selection screen (only tried a Shifter but I doubt other subclasses could or should be affected.) IIRC in the unmodded game they are all shown at once and you cannot choose (because you gain all of them regardless if you're a Shifter.) No idea why this happened. Upon entering combat, Spiritshift forms still appear to have a 22s duration. Once the duration is over, Spiritshift goes into a cooldown (like when you deactivate a Modal and go through a cooldown before you can re-activate it) at the end of which it automatically activates again. No matter what form you initially chose, automatic reactivation always defaults to the Bear form, which is the first one in the list. So, something is still forcing these forms to have a duration even though I changed the DurationOverride to 0. Somehow these changes also affected the character creation screen for some reason. I changed ModalIDGroup to whatever Duality of Mortal Presence had, but I do not know what those numbers mean. Perhaps that was a bad move? Any idea what I should be looking at to remove the duration and make this behave like a proper modal? (We can handle character creation once the modal aspect's taken care of; I was gonna change that to work in the same way as it does for other Druids anyway.) Edited July 15, 2018 by AndreaColombo "Time is not your enemy. Forever is." — Fall-From-Grace, Planescape: Torment "It's the questions we can't answer that teach us the most. They teach us how to think. If you give a man an answer, all he gains is a little fact. But give him a question, and he'll look for his own answers." — Kvothe, The Wise Man's Fears My Deadfire mods: Brilliant Mod | Faster Deadfire | Deadfire Unnerfed | Helwalker Rekke | Permanent Per-Rest Bonuses | PoE Items for Deadfire | No Recyled Icons | Soul Charged Nautilus Link to comment Share on other sites More sharing options...
gkathellar Posted July 15, 2018 Share Posted July 15, 2018 I can't help much with the second issue - ability modding is still pretty opaque to me - but the first sounds like a progression table issue. You'll find the druid's progression table under PT_Druid in progressiontables.gamedatabundle. Copy the entire PT_Druid object to your mod file, then find the entries granting the Shifter versions of Spiritshift (just ctrl-f "shifter") and change the UnlockStyle from "Autogrant" to "Unlock". 1 If I'm typing in red, it means I'm being sarcastic. But not this time. Dark green, on the other hand, is for jokes and irony in general. Link to comment Share on other sites More sharing options...
kilay Posted July 16, 2018 Share Posted July 16, 2018 (edited) About the duration it's related to the status effects inducted from the ability so you have to change also all their durations . Edited July 16, 2018 by kilay 1 Random Reader'Plinio il Vecchio asseriva che un rimedio alla sbronza fosse quello di mangiare uova crude di gufo' I° secolo D.C. My Mods on Nexus Nexus Mods Translated to Italian Italian Localization Fix PATCH More Custom AI Conditions Enhanced UI - Afflictions and Inspirations Extended Spell TT1 Unique Items More Priest Subclasses_Ondra Hylea Abydon Channeler Cipher Subclass Are you looking for a group of modders ?Request an invite to our Slack group Do you need a mod? Fill this mod request Link to comment Share on other sites More sharing options...
gkathellar Posted July 16, 2018 Share Posted July 16, 2018 About the duration it's related to the status effects inducted from the ability so you have to change also all their durations . What's the effect of the DurationOverride, then? Does it take precedence, or something? If I'm typing in red, it means I'm being sarcastic. But not this time. Dark green, on the other hand, is for jokes and irony in general. Link to comment Share on other sites More sharing options...
kilay Posted July 16, 2018 Share Posted July 16, 2018 About the duration it's related to the status effects inducted from the ability so you have to change also all their durations . What's the effect of the DurationOverride, then? Does it take precedence, or something? According to the documentations DurationOverride Override for how long (in seconds) all Status Effects associated with the Ability component will last. Single 0 so should be the overall duration of all the applied effects which have again a different individual duration with minor or equal value 1 Random Reader'Plinio il Vecchio asseriva che un rimedio alla sbronza fosse quello di mangiare uova crude di gufo' I° secolo D.C. My Mods on Nexus Nexus Mods Translated to Italian Italian Localization Fix PATCH More Custom AI Conditions Enhanced UI - Afflictions and Inspirations Extended Spell TT1 Unique Items More Priest Subclasses_Ondra Hylea Abydon Channeler Cipher Subclass Are you looking for a group of modders ?Request an invite to our Slack group Do you need a mod? Fill this mod request Link to comment Share on other sites More sharing options...
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