I have time and energy now and I want to work on an update for the Class Project mod. And by "update" I mean I want to completely rebuild the mod from the ground up.
I am creating this thread as a place to share my plan and progress and to receive input from those who have it (both in general about the mod and more specifically about skills or abilities). I'm also hoping that either experienced modders or those simply wanting to learn and help would be interested in sharing some of the work load or allowing me to incorporate their ideas into the Class Project.
The Gist
With 4.1, we gained some modding flexibility when working with progression tables (see here). We cannot modify existing entries in a progression table, but we can add entries to a progression table. So why not tabula rasa the progression tables and make things more additively modular? This is the gist of the rebuild.
TCP will become multiple mods. But, when it comes down to determining where the modularity cleaver should land things are not so simple. For now I'm going to skip why that is, but the solution is this: additive becomes the key design principle. This results in more gameplay options for the player, but more modding work for myself or others. I'll explain.
I don't like the vanilla passives or how they are organized, and I've tried to tweak them in TCP but I haven't really been successful. As a modder, I want to continue working on the passives for my own gameplay, but also give options for players to play the POE2 that they want to play. So... the modular cleaver will separate the current TCP into "TCP Core" and "TCP Passives" (and other less essential or problematic mods).
There's two options for TCP Core. First, an actual tabula rasa progression table file for each class with a separate file that additively rebuilds the active abilities into that blank PT. Or second, a normal override of progression tables that consists of just active abilities with the expectation that passives and other additional abilities will be added for each class. The second option seems better, because it would allow other modders to do their own override of a specific class progression table while maintaining the ability to add entries to a progression table later in the mod load order.
One of my probems is that numerous subclasses modify the available abilities/spells within their class in a way that is subtractive. A good example is spell availability to wizards via their school/subclass. These schools do not add spells, but rather limit access to basic wizard spells. From a modding perspective, this is problematic because of where this substraction code needs to be and the fact that one mod cannot simply modify the progression table of vanilla or other mods. So, my solution is that the basic ability tree for a class will be slightly more simplified than it is right now with the expectation that subclasses are redesigned to only add abilities (this redesign of subclasses as additive results in more work). Subclasses might become their own module because they would potentially contain both active and passive abilities, but I haven't quite decided on this yet. TCP Passives would actually be two different additive mods: one for the vanilla passives and one for the changes I want to make. My existing changes to Weapon Proficiencies/Modalities would also become a separate mod.
The goal is essentially this: players would choose the modules that work for them. Maybe that is my TCP Core and someone else's Passives. Or my TCP Passives and someone else's Core. Plus an additive mod for weapon proficiencies, or an additive package(s) of Subclasses, or a PT override for a specific class while still allowing compatibility with other broad or specific additive mods.
Classes and their Ability Tree Content
Most of the martial classes will undergo quite a change. The forked ability upgrades just don't work because the biggest limitation I keep running into is the ability tree UI and the availability of space. So, this is what I'm thinking:
Basic Abilities. These abilities (hopefully numbering 5 or 6) should be reliable but not powerful regardless of level and available at level 1. These abilities are essentially the bread and butter abilities that define the behavior of each class. Upgradable Abilities. These abilities are more powerful and can be upgraded linearly as the character progresses in level. Combined Abilities. These more specialized non-upgradable abilities fill in the ability tree with options. These abilities would combine the effects of two abilities (potentially across class lines) but come at a cost of giving up those more basic abilities. By giving up the more basic abilities, you would also lock access to other combo ability options that use that same basic ability as a requirement.
So, an example of combined abilities. A rogue at level 1 has access to Blinding Strike. This attack simply blinds the target; no damage boost, no accuracy boost, just blinding, just reliability without any real oomph. At some higher levels the character can select from 3 or 4 abilities that include Blinding Strike as a prereq. Options here may include adding a damage boost to Blinding Strike, adding Smoke Cloud to BS, combining BS with a Fighter's defensive boost, or some splash damage from a Barbarian ability, or whatever. Regardless, the player trains one ability and Blinding Strike itself is removed along with the potential to use BS as an unlock for other combined abilities.
This approach to active abilities is partly why I want to deal with passives separately. Passives (for some classes) take up so much room in the UI or get pushed off the screen because of the active ability tree. But with some good planning, many of those same passive effects can be automatically combined into active ability choices freeing up more UI space for interesting active ability decisions instead of blanket passive upgrades. This approach also works with mod compatibility and the additive principle.
So that's basically the plan. Now begins the work. And hopefully in the next few days I'll have a rogue tree example that I can share.