JohN100x1 / IsekaiMod

An unbalanced gameplay mod for Pathfinder: Wrath of the Righteous
MIT License
20 stars 10 forks source link

Class variant features #69

Closed kjk001 closed 1 year ago

kjk001 commented 1 year ago

Still waiting on Johns feedback on the Seeker and Chimera variant pushed to the repository and if they become part of the next release. Meanwhile since I had been playing with them in my installation I thought I'd make a new topic for the thoughts that came to me as well as to ask for feedback from anyone that might have downloaded that branch and compiled it themself to also play with it.

So first the idea for another archetype based on shaman: Their spirits, mostly give benefits through their hexes, much like the witch, except shamans don't have access to major or grand hexes, so wouldn't basing it on the witch be better for a hex based Isekai variant?

Second general realization: Also, after playing for myself for a while I am wondering if it would not make more sense to turn these class choices into Progression Features where you are given a choice at level 1 between the inheritance of the rogue(granting access to all the rogue talents and skills currently part of the tree per default), the oracle(as seeker variant at the moment), chimera(sorcerer), paladin(replacing rogue talents with smite the way the hero does), legacy of the hunter (gaining teamwork feats and automatically sharing them with your animal companion), bard (you know you want to be an isekai buffbot). That way less Archetypes in total would be required, while actually allowing for more customization, perhaps your edge lord uses holy smite or berserker rages rather than sneak attacks? That would also open up the possibility of an overwhelming talent "Dual Class Legacy" where you can pick a second such option to add to your progression. Thoughts?

JohN100x1 commented 1 year ago

The archetypes a fine, the main issue is that the changes introduced bugs with the incorrect default values when creating the blueprints. That's something I'm still resolving for the branch.

kjk001 commented 1 year ago

I thought I had caught all places were the generic replacement missed a default and added them as special methods in ThingsNotHandledByTTTCore by readding the method with the missing defaults there as a wrapper around CreateBlueprint.

Particular createAnswer since that was how I found out that the generic method didn't add all defaults and only the minimal ones the game requires to not crash, while still completely breaking the game.

if you tell me the missed place that still has an exception I wil doublecheck myself to try and fix this. But for me everything ran.

kjk001 commented 1 year ago

On another note what do you think of the idea of turning them into progressions rather than full archetypes and adding a choice for them as mentioned above?

Because when playing I felt that the already existing God Emperor probably really should have access to the Seeker of Truth abilities as a default, or perhaps the cleric domains instead, and that the Hero in a way already does exactly that in the way that it replaces the rogue sneak attack with True Smite like a paladin.

JohN100x1 commented 1 year ago

I thought I had caught all places were the generic replacement missed a default and added them as special methods in ThingsNotHandledByTTTCore by readding the method with the missing defaults there as a wrapper around CreateBlueprint.

Particular createAnswer since that was how I found out that the generic method didn't add all defaults and only the minimal ones the game requires to not crash, while still completely breaking the game.

if you tell me the missed place that still has an exception I wil doublecheck myself to try and fix this. But for me everything ran.

For example, creating buffs using CreateBlueprint<BlueprintBuff> instead of CreateBuff will result in buffs not being removed when something like ContextActionRemoveBuff is called due to FxOnRemove being null. Even though the game will still run, the behaviour of the buffs will be incorrect and persist. The only way to solve this is either set bp.FxOnStart = new PrefabLink(); bp.FxOnRemove = new PrefabLink(); everytime we want to define a buff or use the CreateBuff helper function which sets it everytime. Not obivous, but important.

On another note what do you think of the idea of turning them into progressions rather than full archetypes and adding a choice for them as mentioned above?

I would seem like a sensible idea as it will reduce the work to maintain seperate archetypes.

kjk001 commented 1 year ago

So similar to the problem with createAnswer. Ok I will recreate a wrapper for it in the Util class where I also created the one for answers and set those values there, then switch all calls of CreateBlueprint over to it.

Then I will get started on that and siwtch those archetypes over to a selection of progressions.

kjk001 commented 1 year ago

and I know why I didn't notice the problem with the buffs as I never deactivate them coughs anyway fix is checked in

kjk001 commented 1 year ago

as a little preview for anyone interested what this change will mean for the future, this is how it looks when the base class legacies are moved into their own progression block, for Rogue: Rogue and for Kineticist: KineticLord

Given this new format I want to add at least a berserker rage block, bard block and paladin block before pushing it. As well as the Dual Class Overwhelming Feat.

kjk001 commented 1 year ago

Shaman still needs testing and a possibly a lot of tuning when it comes to spells granted by the spirit and possibly other spirit features. It might also suffer from the problem of Chimera and Seeker below(only testing will show).

Both chimera and seeker as progressions do not retroactivly grant their features(though if you select a bloodline at a higher level you do get all features of that bloodline of the previous levels you just don't get access to the extra bloodlines you would have gotten if you picked the feat earlier. Otherwise the game would have locked up when you would try to select your level 1 bloodline at level 5 refusing to make that choice. So both of those are better off if picked earlier rather than later.

Funnily, despite the fact that it actually has even more raw progression features kineticist was fine for retroactive handling, at least in my test, at evel 16 I could without a problem pick the level 1 air blast.

I also finally figured out an initilization step that comes after whatever step ExpandedKineticistElements puts the declaration of its elements in to cause the error that it says it has finished initialization but all its references are still null. That means the Kineticist progression now supports those elements as well.

I moved the merge spellbook logic for the spellist to that step as well, so in the future we should only ever have to worry about original spells we want to add but not about spells added by other mods, as there are hopefully no steps that are run even later.

Patching of Spirits/Bloodlines/Curses and anything else that even looked remotely like such a progression feature as well, so the Isekai Protagonist class should hopefully always support all of those.

Edgelord, Villain, and Hero have their own level 1 selection feature to ensure only thematically appropriate Legacies can be picked.

God Emperor has no legacy selection feature on its own but the overwhelming feat granting additional choices is added.

@JohN100x1 Have fun merging :) I will have fun with my God Emperor - Seeker of Truth and his Edge Lord - Ball of Rage and Hero - Musical Prodige companions, oh and whatever 3 npcs I drag along with them at the time...

JohN100x1 commented 1 year ago

Cool. I will have a look at the code.

kjk001 commented 1 year ago

The more that I dive into it to mod things the more I want to just get my hands on the original code to fix some things for them.

And the more suprised am I that the orginal code runs without the need of Harmonylib to patch it for compatibility with itself.

Anyway at least some of the features of the oracle don't work yet because they actually mixed BueprintFeature instances that use AddFeatureOnClassLevel with BlueprintProgression instances that were set to being invisible in the gui, on top of that despite the progression extending the feature the fields the progression uses to declare who benefits differ and this goes for both mysteries and the revelations granted by them. At a minimum the battle mystery is affected...

Seriously how hard would it have been to pick one method to grant features on a levelup and stick with that?

I already have an idea for the fix and shall work on it this weekend.

kjk001 commented 1 year ago

@JohN100x1 the nice thing about the rewrite to accomondate that unholy abomination of a mixture of Progression and AddFeatureOnClassLevel (where the feature itself could also be a progression...) in the oracle meant that I could generalize the logic for all such progression classes, so I can just run it on any Feature or Selection that serves as the root of such a mixture.

Could we close the branch TTCMerge by merging into the master and then restage future changes on that? Because at least the TTC Stuff should now all work and for future changes I would rather create new topical subbranches for you to then merge into the master if you ok the changes in them.

Fun fact some of the shaman hexes were also progressions...

Oh and to explain the DeityselectionPatch I added, one of the other mods(was too lazy to find which one it was by checking all their code for every mod I have) did an instance of DeitySelection._m_AllFeatures.Add(DeitySelection) for all existing DeitySelectionFeatures causing a wonderful self referencing recursive loop that makes finding a deity almost impossible, so I thought we could be the good guys and flatten it back for anyone else that also experiences it.

JohN100x1 commented 1 year ago

The branch should be good to merge. If there's any issues then having subbranches onto that sounds good.

One thing I forgot to mention is documentation on the new features you implemented. Would be nice to list them out in the CHANGELOG.md and README.md. This is mostly for the mod users to see what new content has been added or changed.

Once that's been done then I'll prepare it for 4.0.0 release

Rinelw commented 1 year ago

Now thinking about Shifter that is coming with new DLC, Chimera name would be more fitted for Shifter version of Isekai protagonist (Once the DLC arrives). While for the sorcerer I think something else like: "Bloodline Master" or "Origin Bloodline" or maybe just "Chimera's Bloodline".

kjk001 commented 1 year ago

Honestly, the shifter is already in the wotr code even if the class is not officially released yet and based on its json definitions I wouldn't add a legacy for it unless people specifically ask for it.

Its main advantages are that it gets a full bab and that it offers partial shapeshifting instead of full animal form or human.

But the options for shapeshifting in the code are all fairly uninspired, bear, boar, dinosaur, horse, lizard, spider, tiger, wolf, wolverine, and the one at least somewhat creative option as they were not in the game previously as far as I can remember right now elephant.

Not a single flying option and the partial shifts seem to boil down to bear aspect +2 con with a single aspect for each animal rather than multiple options, like a lizards chameleon skin, fast healing, or tail for an extra attack. So honestly kind of like the already existing hunter aspects.

If it is still that limited upon release merging it with the Druid for a True Shapeshifter or waiting for people to add some actually interisting partial shifts or archetypes like the dragonblood shifter, the feyform shifter or the swarm shifter might be a good idea...

kjk001 commented 1 year ago

Also purely based on the way the shifter works, chimera is better as a term for someone with multiple bloodlines while any legacy for shifter should be some play on actual singular shapeshifting rather than mixed blood.

perhaps: Shifter Legacy - Wannabe Werewolf, Team Edward or Team Jacob was never a question for you, Team Jacob all the way! After all who wouldn't want to turn into a giant wolf and tear things apart with their supernatural fangs and claws?

kjk001 commented 1 year ago

Or something less twillighty, and a lot less snarky, but then that is a question for the creative naming department rather than me :)