Jump to content

[Tutorial] Adding New Abilities to a Class (v4.1.0+)


Recommended Posts

On 12/9/2020 at 1:38 PM, BMac said:

Unfortunately moving or removing existing abilities from the progression table will probably require overriding the entire table. Certainly doable, but might have compatibility problems with other mods that use that table.

You would copy the entire progression table object PT_Wizard into your mod bundle and add Conditional checks to the spells and passives your new subclass should not be allowed. This is how the normal wizard subclasses are done and you should be able to find samples using the IsSubclass script.  To move abilities to new power levels, I would guess you would have to duplicate the table entry for that ability and change it, conditionalizing the new entry for your subclass and the old one for the inverse ("Not" your subclass) and using the VisibilityConditional instead of the normal one to entirely hide the duplicates rather than disabling them.

That PT_Wizard method is the plan. I kind of got lost on the Not-Not and Not:false = True, but I think ive gotten somewhere comparing illusionist restrictions, since the "Illusionist Subclass Reflexive Mirror Passive" is definitely something the illusionist gets approved, and that's listed as "not:false" twice here:
 

"Conditional": {
                                    "Operator": 0,
                                    "Components": [
                                        {
                                            "$type": "OEIFormats.FlowCharts.ConditionalCall, OEIFormats",
                                            "Data": {
                                                "FullName": "Boolean ProgressionTableIsSubclass(Guid)",
                                                "Parameters": [
                                                    "5aaf47b3-26c5-4e7d-b536-d6dc58c57fcb"
                                                ],
                                                "Flags": "",
                                                "UnrealCall": "",
                                                "FunctionHash": 1231916529,
                                                "ParameterHash": -703546052
                                            },
                                            "Not": false,
                                            "Operator": 0
                                        }
                                    ]
                                },
                                "VisibilityConditional": {
                                    "Operator": 0,
                                    "Components": [
                                        {
                                            "$type": "OEIFormats.FlowCharts.ConditionalCall, OEIFormats",
                                            "Data": {
                                                "FullName": "Boolean ProgressionTableIsSubclass(Guid)",
                                                "Parameters": [
                                                    "5aaf47b3-26c5-4e7d-b536-d6dc58c57fcb"
                                                ],
                                                "Flags": "",
                                                "UnrealCall": "",
                                                "FunctionHash": 1231916529,
                                                "ParameterHash": -703546052
                                            },
                                            "Not": false,
                                            "Operator": 0
                                        }
                                    ]
                                }

but then Ghostblades, a Conjuration spell, are listed as "Not:true" for two classes:
class one: "5aaf47b3-26c5-4e7d-b536-d6dc58c57fcb" - illusionist
class two: "56db1331-3f31-4af3-9481-9af56ef0002f" - evoker
which also uses a "not:false" to define itself  in ""Note": "PL 0 Auto Grant - Evoker Subclass"

So Ghostblades' use of Not:True appears here:
 

"Components": [
                                        {
                                            "$type": "OEIFormats.FlowCharts.ConditionalCall, OEIFormats",
                                            "Data": {
                                                "FullName": "Boolean ProgressionTableIsSubclass(Guid)",
                                                "Parameters": [
                                                    "5aaf47b3-26c5-4e7d-b536-d6dc58c57fcb"
                                                ],
                                                "Flags": "",
                                                "UnrealCall": "",
                                                "FunctionHash": 1231916529,
                                                "ParameterHash": -703546052
                                            },
                                            "Not": true,
                                            "Operator": 0
                                        },
                                        {
                                            "$type": "OEIFormats.FlowCharts.ConditionalCall, OEIFormats",
                                            "Data": {
                                                "FullName": "Boolean ProgressionTableIsSubclass(Guid)",
                                                "Parameters": [
                                                    "56db1331-3f31-4af3-9481-9af56ef0002f"
                                                ],
                                                "Flags": "",
                                                "UnrealCall": "",
                                                "FunctionHash": 1231916529,
                                                "ParameterHash": -924966531
                                            },
                                            "Not": true,
                                            "Operator": 0
                                        }
                                    ]

and there's a handy dandy comma separating the not:true illusionist UUID code from the not:true evoker UUID code.

which, if im not mistaken, seems to indicate i can just copy in paste/paste one of these not:true patterns beneath my short list using my new school of magic, and presto it's blocked.
block passives probably works the same way as blocking spells.

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