Skip to content

Commit

Permalink
Improve Logging
Browse files Browse the repository at this point in the history
  • Loading branch information
EzioTheDeadPoet committed Nov 7, 2024
1 parent 917bce6 commit fa6279b
Showing 1 changed file with 53 additions and 41 deletions.
94 changes: 53 additions & 41 deletions HighPolyHead-RaceMenu Patcher/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -135,59 +135,71 @@ private static void RunPatch(IPatcherState<ISkyrimMod, ISkyrimModGetter> state)
// by now you can tell ive given up on efficiency and just wanted to get the damn thing working
foreach(var npcPreset in state.LoadOrder.PriorityOrder.OnlyEnabled().Npc().WinningOverrides())
{
if (npcPreset.EditorID == null) continue;
var eid = npcPreset.EditorID;

var withoutLastTwo = (eid.Length > 2) ? eid[..^2] : eid;

if (!withoutLastTwo.EndsWith("Preset") && !npcPreset.Race.Equals(Skyrim.Race.FoxRace))
try
{
if (npcPreset.EditorID == null) continue;
var eid = npcPreset.EditorID;

var changed = false;
var npcPartTypes = new HashSet<HeadPart.TypeEnum>();
var withoutLastTwo = (eid.Length > 2) ? eid[..^2] : eid;

var npcDeepCopy = npcPreset.DeepCopy();

foreach (var part in npcDeepCopy.HeadParts)
if (!withoutLastTwo.EndsWith("Preset") && !npcPreset.Race.Equals(Skyrim.Race.FoxRace))
{
if (!part.TryResolve(state.LinkCache, out var headPartGetter)) continue;
if (headPartGetter.Type != null) npcPartTypes.Add((HeadPart.TypeEnum) headPartGetter.Type);
}

var raceHeadParts = npcDeepCopy.Configuration.Flags.HasFlag(NpcConfiguration.Flag.Female)
? raceHeadPartsFemale
: raceHeadPartsMale;

if (!raceHeadParts.TryGetValue(npcDeepCopy.Race, out var currentRaceHeadParts))
{
continue;
}

foreach (var part in currentRaceHeadParts)
{
part.TryResolve(state.LinkCache, out var headPartGetter);
if (headPartGetter?.Type == null) continue;
if (npcPartTypes.Contains((HeadPart.TypeEnum) headPartGetter.Type)) continue;
npcDeepCopy.HeadParts.Add(part);
changed = true;
var changed = false;
var npcPartTypes = new HashSet<HeadPart.TypeEnum>();

var npcDeepCopy = npcPreset.DeepCopy();

foreach (var part in npcDeepCopy.HeadParts)
{
if (!part.TryResolve(state.LinkCache, out var headPartGetter)) continue;
if (headPartGetter.Type != null) npcPartTypes.Add((HeadPart.TypeEnum) headPartGetter.Type);
}

var raceHeadParts = npcDeepCopy.Configuration.Flags.HasFlag(NpcConfiguration.Flag.Female)
? raceHeadPartsFemale
: raceHeadPartsMale;

if (!raceHeadParts.TryGetValue(npcDeepCopy.Race, out var currentRaceHeadParts))
{
continue;
}

foreach (var part in currentRaceHeadParts)
{
part.TryResolve(state.LinkCache, out var headPartGetter);
if (headPartGetter?.Type == null) continue;
if (npcPartTypes.Contains((HeadPart.TypeEnum) headPartGetter.Type)) continue;
npcDeepCopy.HeadParts.Add(part);
changed = true;
}

if (changed)
{
state.PatchMod.Npcs.Set(npcDeepCopy);
}
}

if (changed)
if (!withoutLastTwo.EndsWith("Preset")) continue;
var npcOverride = state.PatchMod.Npcs.GetOrAddAsOverride(npcPreset);
for (var index = 0; index < npcOverride.HeadParts.Count; index++)
{
state.PatchMod.Npcs.Set(npcDeepCopy);
if (!vanillaToHphParts.TryGetValue(npcOverride.HeadParts[index], out var replacementHead))
{
continue;
}

npcOverride.HeadParts[index] = replacementHead;
}
}

if (!withoutLastTwo.EndsWith("Preset")) continue;
var npcOverride = state.PatchMod.Npcs.GetOrAddAsOverride(npcPreset);
for (var index = 0; index < npcOverride.HeadParts.Count; index++)
catch (Exception e)
{
if (!vanillaToHphParts.TryGetValue(npcOverride.HeadParts[index], out var replacementHead))
{
continue;
}
npcOverride.HeadParts[index] = replacementHead;
Console.WriteLine($"Error: {e.Message}");
Console.WriteLine($"Error NPC: {npcPreset}");
Console.WriteLine($"Error NPC EditorID: {npcPreset.EditorID}");
Console.WriteLine($"Stack trace: {e.StackTrace}");
}

}
}
}
Expand Down

0 comments on commit fa6279b

Please sign in to comment.