Closed JohN100x1 closed 1 year ago
@kjk001 Feel free to edit the checklist if you have more things you want to add
@JohN100x1 does the automatic generation of new guid values still work for you?
For some reason I got [IsekaiMod] Added: - FighterBasicIsekaiLegacy When it should create a new Id every time it is run with no id set yet.
There's automatic guid generation? I've always had to add a new guid everytime.
there used to be, it works the same way it does for strings that it then gives you a new line: [IsekaiMod] WARNING: Generated New Localized String: 1040c2d59d954496a6b4f99402789de1:FighterBasicIsekaiLegacy.Name
The result is written into the blueprints.json under auto generetad IDs and should be moved from there to the other section asap because any value in there is not final and can just be reassigned at random, my magus guid changed three times during development...
speaking of guid that can just change: expanded content changed one of theirs again in patch 0.5.3 so the Dread Knight will break again
speaking of guid that can just change: expanded content changed one of theirs again in patch 0.5.3 so the Dread Knight will break again
troublesome :sweat:
Is is not our fault and thanks to the idea I just tested for the fighter legacy also not our problem in the future as the check on our part will simplify to is the guid of the class there and if yes then build based on the class.
The bugreports about changed features breaking saved games because a guid of one of their features no longer exist are then their problem...
This new way is also better for us because it will no longer matter to us what version of the other mod the person is running, they will simply get the Dread Knight they should expect based on that version.
public static BlueprintProgression PatchClassProgressionBasedOnRefClass(BlueprintProgression prog, BlueprintCharacterClass refClass) {
prog.IsClassFeature = true;
prog.m_Classes = new BlueprintProgression.ClassWithLevel[] {
new BlueprintProgression.ClassWithLevel {
m_Class = IsekaiProtagonistClass.GetReference(),
AdditionalLevel = 0
}
};
prog.AddComponent<ClassLevelsForPrerequisites>(c => {
c.m_FakeClass = refClass.ToReference<BlueprintCharacterClassReference>();
c.m_ActualClass = IsekaiProtagonistClass.GetReference();
c.Modifier = 1.0;
});
var referenceLevels = refClass.Progression.LevelEntries;
prog.LevelEntries = new LevelEntry[] { };
foreach (var referenceLevel in referenceLevels) {
BlueprintFeatureBaseReference[] features = referenceLevel.m_Features.ToArray(); ;
prog.LevelEntries = prog.LevelEntries.AddToArray<LevelEntry>(Helpers.CreateLevelEntry(referenceLevel.Level, features));
};
var referenceUIGroups = refClass.Progression.UIGroups;
prog.UIGroups = new UIGroup[] {
};
foreach (var referenceUIGroup in referenceUIGroups) {
prog.UIGroups = prog.UIGroups.AddToArray<UIGroup>(referenceUIGroup);
}
prog.m_UIDeterminatorsGroup = new BlueprintFeatureBaseReference[] { };
var referenceUIDeterminators = refClass.Progression.UIDeterminatorsGroup;
foreach (var UIDetermin in referenceUIDeterminators) {
prog.m_UIDeterminatorsGroup = prog.m_UIDeterminatorsGroup.AddToArray<BlueprintFeatureBaseReference>(UIDetermin.ToReference<BlueprintFeatureBaseReference>());
}
return prog;
}
I'll try to move the Kineticist over to this generalized method as well, then write a version for archetypes and then we will only have to manage our custom legacy progressions as the base class versions are automatically generated except for their name and description.
So the Patch Method works for the Kinetic Lord as well, but quite a few feats programmed as part of Dark Codex have Bad Component References that cause Nullpointer Exceptions when crawling them for patching, full list follows: [IsekaiMod] ERROR: Unpatachable Feature= 637329bf936244668c55d81985c4eaf8name= Venom Infusion at level= 2 reason= Object reference not set to an instance of an object [IsekaiMod] ERROR: Unpatachable Feature= e9021412e87847b3b104d4d31bfe5403name= Venom Infusion, Greater at level= 2 reason= Object reference not set to an instance of an object [IsekaiMod] ERROR: Unpatachable Feature= 96360bedde8648a8a6762e2de41b60a5name= Disintegrating Infusion at level= 2 reason= Object reference not set to an instance of an object [IsekaiMod] ERROR: Unpatachable Feature= e9cf588e2ef64fb68d0ec8c566e8b294name= Dampening Infusion at level= 2 reason= Object reference not set to an instance of an object [IsekaiMod] ERROR: Unpatachable Feature= 8662ccb8dd484a2f8139d46621c641fdname= Enervating Infusion at level= 2 reason= Object reference not set to an instance of an object [IsekaiMod] ERROR: Unpatachable Feature= 3ae954ad56a2497b92fada3dc493b4e1name= Pulling Infusion at level= 2 reason= Object reference not set to an instance of an object [IsekaiMod] ERROR: Unpatachable Feature= e53160d091914d50bfc1d8d4fa482e30name= Unnerving Inufsion at level= 2 reason= Object reference not set to an instance of an object [IsekaiMod] ERROR: Unpatachable Feature= 922fd10e3e994d7793821da1583cdfeaname= Vampiric Infusion at level= 2 reason= Object reference not set to an instance of an object [IsekaiMod] ERROR: Unpatachable Feature= 987dc633dbae49b0adc11cd9c5672553name= Weighing Infusion at level= 2 reason= Object reference not set to an instance of an object [IsekaiMod] ERROR: Unpatachable Feature= 1cd0cd60997d4288be1fc85f753e53dename= Spore Infusion at level= 2 reason= Object reference not set to an instance of an object [IsekaiMod] ERROR: Unpatachable Feature= fdc63fd61b794e40ba3c5446ba8ea1c2name= Toxic Infusion at level= 2 reason= Object reference not set to an instance of an object [IsekaiMod] ERROR: Unpatachable Feature= 56567887f604473797dc8223c68999daname= Toxic Infusion, Greater at level= 2 reason= Object reference not set to an instance of an object [IsekaiMod] ERROR: Unpatachable Feature= 94341284499343c0b5652f082bd677d1name= Self Telekinesis, Greater at level= 2 reason= Object reference not set to an instance of an object [IsekaiMod] ERROR: Unpatachable Feature= c03b1a6d297843c584b763378024ea7aname= Telekinetic Finesse at level= 2 reason= Object reference not set to an instance of an object [IsekaiMod] ERROR: Unpatachable Feature= 8d3e9c13037d4d4f944887b517bbf86bname= Gravity Control, Greater at level= 2 reason= Object reference not set to an instance of an object [IsekaiMod] ERROR: Unpatachable Feature= 70322f5a2a294e54a9552f77ee85b0a7name= Metakinesis — Empowered at level= 1 reason= Object reference not set to an instance of an object I tried and the blasts work fine and nothing on this list should actually have Features hidden behind them that require patching but based on his repository code I can't even easily tell if he adds a factRef or a Ressource with a required value not initialized on them.
Ah well, it works even if those messages are irritating to me.
I updated the loop prevention logic of PatchClassIntoFeatureOfReferenceClass a bit as thief and fighter together caused a bit too much load time for my liking when running them through that.
Ah well, as long as the legacy is a vanilla class or archetype it is now very easy to add.
Just set name and description, tell the Methods what the reference class or archetype is and then set what Isekai Archetypes should get the legacy.
and I was right in that archetypes are a hell on their own. Scaled Fist has introduced yet another fun new complication in the form that it actually defines every level multiple times in its RemovedFeatures and AddedFeatures List. Someone really should have written some better checks to throw errors if that is done...
Anyway onto the Shifters next...
By the way when adding features from DLC like the shifter features then it should be done in way that will not crash for people who don't own the DLC. I discovered that some users couldn't load the mod because of the usage of DLC components. e.g. AbilityDeliverRicochet
.
I added aif (ClassTools.Classes.ShifterClass == null) { return; }
check to do just that.
The progression is still created(because the shifter legacy is not reliably initialized at the stage where we create the blueprint) but before class features are patched, the progression filled, and everything is added that check is called to make sure it is actually defined and loaded.
And on that note I think I am done for this patch. All remaining suggestions for legacies involve at least some degree of customization and there are now quite enough new legacies that can lead to new and unexpected bugs before I add any more.
Nice job. I will have a look at your branch and start merging.
Implementations
Channel Positive Energy
Special Power to work with selective channel (#95)Kinetic Power
fire avatar eruption ability animation.Martial Artist
nunchaku weapon proficiency (link).Optional Implementations (KJK: if I don't get them done on time they will simply be moved to the next patch)
Pre-Release Tasks
Post-Release Tasks