Jump to content

Children of Lilith - Succubus of Skyrim


Recommended Posts

Posted
1 hour ago, afshin76 said:

Any idea when those three paths will be implemented?

Amazing mod.

After I'm finished moving. First up is probably Molag.

Posted

I started a new playthrough without UBE and I'm still getting those "can't match new vampire races" popups. They are very annoying.

I tried re-saving mortal and succubus form, but to no avail.

 

How do I repair this? It's all vanilla races now. bretonrace -> bretonracevampire.

 

Posted (edited)

Anybody knows why the CoL isn't showing up in MCM? The mod just refuses to work for me. Are there any known conflicts that cause this?

Edited by adama001
Posted
12 hours ago, Hakuna_Matata said:

I started a new playthrough without UBE and I'm still getting those "can't match new vampire races" popups. They are very annoying.

I tried re-saving mortal and succubus form, but to no avail.

 

How do I repair this? It's all vanilla races now. bretonrace -> bretonracevampire.

 

That message only appears when vampire state changes. If you are getting it constantly, then it seems that something is throwing OnVampirismStateChanged constantly. You should also check papyrus logs as well. Otherwise, you should start by looking at any race changing mods or vampire mods you have installed, there could be an incompatibility.

 

2 hours ago, adama001 said:

Anybody knows why the CoL isn't showing up in MCM? The mod just refuses to work for me. Are there any known conflicts that cause this?

Do you have NL_MCM? Have you tried running this console command:

setstage ski_configmanagerinstance 1

 

Posted
6 hours ago, phalancks said:

That message only appears when vampire state changes. If you are getting it constantly, then it seems that something is throwing OnVampirismStateChanged constantly. You should also check papyrus logs as well. Otherwise, you should start by looking at any race changing mods or vampire mods you have installed, there could be an incompatibility.

 

 

I'm using Sacrosanct and CoL has detected it.

I'm getting this for example when turning into a werewolf (which technically changes the vampire status). I'm using a mod that allows werewolf and vampire at the same time.

I'm also getting this when starting Skyrim and loading a save. Then the player avatar flickers for several seconds as it shrinks and grows and it looks like some piece of code is loading the CoL preset several times in a row. Is that not CoL doing that?

This is also confusing another mod I have, combat eyes, which then starts giving me popups.

Posted (edited)
16 hours ago, phalancks said:

 

 

Do you have NL_MCM? Have you tried running this console command:

setstage ski_configmanagerinstance 1

Oh thanks! The command reloaded the MCM and CoL showed up finally! It also appears in new saves normally now, weirdly enough (didn't before).

Edited by adama001
Posted
12 hours ago, Hakuna_Matata said:

I'm getting this for example when turning into a werewolf (which technically changes the vampire status). I'm using a mod that allows werewolf and vampire at the same time.

I'm betting this mod is the issue. My suspicion is whatever mod you have that allows both is fucking with your vampirism state before CoL can process it. I added a bit of additional logging to the script to track what's happening if you want to give it a shot.

 

13 hours ago, Hakuna_Matata said:

I'm also getting this when starting Skyrim and loading a save. Then the player avatar flickers for several seconds as it shrinks and grows and it looks like some piece of code is loading the CoL preset several times in a row. Is that not CoL doing that?

The flickering is probably CoL, I assume you have separate races for your forms? I have to reapply the presets or you'll end up in a bad state on game load. It happens several times because skyrim doesn't like it when you change races and this ensures it happens more or less correctly most of the time. The vampire message shouldn't appear during that though, but your other mod might be changing your vampirism state on game load to ensure it's set correctly.

 

13 hours ago, Hakuna_Matata said:

This is also confusing another mod I have, combat eyes, which then starts giving me popups.

A quick check of that mod's description says that it doesn't work on vampires, and I'm betting it listens for the same event I do for a vampirism state change. So I don't think it's CoL that's causing that one's issues, but rather it's being effected by the same issue CoL is.

 

In conclusion, I think your mod allowing werewolf and vampire at the same time is causing issues by flipping your vampirism state back and forth constantly. The attached script is modified to add additional logging, but you'll have to do a decent amount of testing while watching the logs to really confirm it. And/or read the other mod's code to see what it's doing.

CoL_PlayerAliasScript.pex

Posted
Vor 1 Stunde sagte phalancks:

Das Flackern ist wahrscheinlich CoL, ich nehme an, Sie haben unterschiedliche Rassen für Ihre Formen? Ich muss die Voreinstellungen erneut anwenden, sonst geraten Sie beim Laden des Spiels in einen schlechten Zustand. Das passiert mehrmals, weil Skyrim es nicht mag, wenn man die Rasse wechselt, und das sorgt dafür, dass es meistens mehr oder weniger korrekt passiert. Die Vampir-Meldung sollte dabei allerdings nicht erscheinen, aber Ihr anderer Mod ändert möglicherweise Ihren Vampirismus-Status beim Laden des Spiels, um sicherzustellen, dass er richtig eingestellt ist.

 

 

I can confirm the flickering when changing from "mortal" to "succubus" - I have a special race for the "mortal" form ("Daughter of Coldharbour") and for the "succubus" form the normal Nord race - this is connected to the demon present that I use

Posted (edited)
On 6/17/2024 at 12:42 AM, phalancks said:

I'm betting this mod is the issue. My suspicion is whatever mod you have that allows both is fucking with your vampirism state before CoL can process it. I added a bit of additional logging to the script to track what's happening if you want to give it a shot.

 

The flickering is probably CoL, I assume you have separate races for your forms? I have to reapply the presets or you'll end up in a bad state on game load. It happens several times because skyrim doesn't like it when you change races and this ensures it happens more or less correctly most of the time. The vampire message shouldn't appear during that though, but your other mod might be changing your vampirism state on game load to ensure it's set correctly.

 

A quick check of that mod's description says that it doesn't work on vampires, and I'm betting it listens for the same event I do for a vampirism state change. So I don't think it's CoL that's causing that one's issues, but rather it's being effected by the same issue CoL is.

 

In conclusion, I think your mod allowing werewolf and vampire at the same time is causing issues by flipping your vampirism state back and forth constantly. The attached script is modified to add additional logging, but you'll have to do a decent amount of testing while watching the logs to really confirm it. And/or read the other mod's code to see what it's doing.

CoL_PlayerAliasScript.pex 7.91 kB · 1 download

 

This is the vampire+werewolf mod I'm using: https://www.nexusmods.com/skyrimspecialedition/mods/41769

It edits the werewolf transformation script to not remove the vampirism. It does not flip anything.

 

Both forms have the same race for me, however I did start out CoL as bretonrace and now it's bretonracevampire.

Maybe that is causing CoL to think the races are different?

 

I will try turning CoL off and on again, then it's all bretonracevampire all the way. Maybe that will fix it.

 

Even though I don't understand how anything could make CoL believe it couldn't match the "new" vampire race. These are all vanilla races.

Maybe It's relying on another mod that stopped working for me?

 

EDIT: Becoming mortal gets rid of the CoL popups at game load, and also the combat eyes popups.

However, turning CoL back on returns the errors. I wonder why, because this time I turned it on, I already was a vampire. Also both saved forms were saved as vampire. How can I convince CoL to not attempt matching any races to begin with?

Edited by Hakuna_Matata
Posted (edited)
18 hours ago, Hakuna_Matata said:

 

This is the vampire+werewolf mod I'm using: https://www.nexusmods.com/skyrimspecialedition/mods/41769

It edits the werewolf transformation script to not remove the vampirism. It does not flip anything.

 

Both forms have the same race for me, however I did start out CoL as bretonrace and now it's bretonracevampire.

Maybe that is causing CoL to think the races are different?

 

I will try turning CoL off and on again, then it's all bretonracevampire all the way. Maybe that will fix it.

 

Even though I don't understand how anything could make CoL believe it couldn't match the "new" vampire race. These are all vanilla races.

Maybe It's relying on another mod that stopped working for me?

 

EDIT: Becoming mortal gets rid of the CoL popups at game load, and also the combat eyes popups.

However, turning CoL back on returns the errors. I wonder why, because this time I turned it on, I already was a vampire. Also both saved forms were saved as vampire. How can I convince CoL to not attempt matching any races to begin with?

The only time CoL throws the error message you are seeing is when your vampire state changes. Something is throwing the event telling CoL that it's changing. I don't believe that event gets sent if you just change the player's race to the vampire version of the race. It would require testing to try to force a bad state where only one of your forms is set as a vampire.

 

You can try this to attempt to force CoL into saving the correct race (back up your save and possibly your presets first):

  1. Load Mortal Preset through the CoL MCM
  2. Use the console to do player.setrace bretonracevampire
  3. showracemenu and then close it without changing the race. You can make other adjustments if you want to.
  4. Save Mortal Preset
  5. Repeat with Succubus Preset

CoL saves races when you save the presets, not when you Become Succubus. If the succubus race and the mortal race don't match it will go through the process of trying to change the race to prevent issues. There is not a way to circumvent that without modifying the scripts.

Edited by phalancks
Posted
On 6/12/2024 at 9:28 PM, phalancks said:

After I'm finished moving. First up is probably Molag.

I'm about to start a new playthrough. If I do with your current version of your mod and then you release the newer version with the paths implemented, will I have any issue updating?

Thanks.

Posted
17 hours ago, phalancks said:

The only time CoL throws the error message you are seeing is when your vampire state changes. Something is throwing the event telling CoL that it's changing. I don't believe that event gets sent if you just change the player's race to the vampire version of the race. It would require testing to try to force a bad state where only one of your forms is set as a vampire.

 

You can try this to attempt to force CoL into saving the correct race (back up your save and possibly your presets first):

  1. Load Mortal Preset through the CoL MCM
  2. Use the console to do player.setrace bretonracevampire
  3. showracemenu and then close it without changing the race. You can make other adjustments if you want to.
  4. Save Mortal Preset
  5. Repeat with Succubus Preset

CoL saves races when you save the presets, not when you Become Succubus. If the succubus race and the mortal race don't match it will go through the process of trying to change the race to prevent issues. There is not a way to circumvent that without modifying the scripts.

 

That's basically what I did.

I know I'm in the right race because Sacrosanct blood magic spells are conditioned to only show if the race is vampiric, and they do show.

I did save the mortal and succubus preset in CoL while having the same race.

 

What purpose does the showracemenu serve? I did not do that before saving the races.

 

In case I'm giving the wrong impression: This is not about blame. I don't blame CoL for misbehaving. Clearly something is throwing those events, and I have no idea how to find out what does it.

 

I'm more interested in what those errors mean and what I can do to solve them. I expect that the error message should not show every time the vampire change event is thrown, but only if some other erroneous condition is met. What condition exactly is that?

 

There must be a way for me to fix the problem the error message is referring to.

Posted
7 hours ago, afshin76 said:

I'm about to start a new playthrough. If I do with your current version of your mod and then you release the newer version with the paths implemented, will I have any issue updating?

Thanks.

Hard to know for certain until I really get into it, but it shouldn't need a new game.

 

6 hours ago, Hakuna_Matata said:

I'm more interested in what those errors mean and what I can do to solve them. I expect that the error message should not show every time the vampire change event is thrown, but only if some other erroneous condition is met. What condition exactly is that?

This is the code that throws the error. It contains the logging changes from the script I posted earlier.

 

Event OnVampirismStateChanged(bool isVampire)
    if CoL.isPlayerSuccubus.GetValueInt() == 0
        return
    endif
    Log("Player vampire status chaged")
    string mortalRaceId = MiscUtil.GetRaceEditorID(CoL.mortalRace)
    string succubusRaceId = MiscUtil.GetRaceEditorID(CoL.succuRace)
    Race newMortalRace
    Race newSuccubusRace
    Log("Mortal race id before: " + mortalRaceId)
    Log("Succubus race id before: " + succubusRaceId)
    if isVampire
        Log("Became Vampire")
        CoL.mortalCureRace = CoL.mortalRace
        CoL.succuCureRace = CoL.succuRace
        mortalRaceId += "Vampire"
        succubusRaceId += "Vampire"
        newMortalRace = Race.GetRace(mortalRaceId)
        newSuccubusRace = Race.GetRace(succubusRaceId)
    else
        Log("Vampirism Cured")
        newMortalRace = CoL.mortalCureRace
        newSuccubusRace = CoL.succuCureRace
        CoL.mortalCureRace = None
        CoL.succuCureRace = None
    endif
    
    if (newMortalRace == None || newSuccubusRace == None)
        Log("Error: Race Could Not Be Updated")
        Log("Mortal race id after: " + MiscUtil.GetRaceEditorID(newMortalRace))
        Log("Succubus race id after: " + MiscUtil.GetRaceEditorID(newSuccubusRace))
        Debug.MessageBox(vampireErrorMessageBox)
    else
        Log("Mortal race id after: " + MiscUtil.GetRaceEditorID(newMortalRace))
        Log("Succubus race id after: " + MiscUtil.GetRaceEditorID(newSuccubusRace))
        CoL.mortalRace = newMortalRace
        CoL.succuRace = newSuccubusRace
    endif
EndEvent

Essentially, if either of the "new" races are unable to be found, then the error will be thrown. There are two paths, becoming a vampire and curing vampirism. Side note, the editor id is what would be shown in the creationkit or used in the console. So bretonrace or bretonraceVampire for example.

 

When becoming a vampire, it uses PapyrusUtil's MiscUtil to get the current Race's editor id, then appends "Vampire" to the end of it and attempts to get the Race with that editor id. It also stores the current races in separate CureRace variables. If the new race is not found or the call to MiscUtil otherwise errors, the new race will be left set to None.

 

When being cured of vampirism, it simply takes the CureRace variables and uses those as the new races, and sets the CureRace variables back to None.

 

If you become a vampire twice in a row, the new race will end up being bretonRaceVampireVampire, which obviously can't be found. If you're cured twice in a row, then the CureRace variables will both be None, which trips the error. This is my theory as to what is actually happening that's causing the error. Something is saying that you keep becoming a vampire even though you already are, and MiscUtil is failing to find the bretonRaceVampireVampire race.

 

I know you aren't blaming CoL, and I'm not trying to brush this off with a "not my problem", it's just that I really don't think this is solvable without finding what is throwing that state change and making it stop. There may be a better way to do this too, but if there is I don't know what it is. The complexity comes from having to manage 2 potentially different races for the two forms. I can't have only one form be a vampire race, because there's more that goes into the vampirism than just the race change and who knows what oddities that will cause. And I can't assume the two races should be the same because I foolishly allow different races for the two forms. I suppose I could compile a version that just doesn't throw the error, but I honestly don't know what will happen and can't recommend it.

Posted (edited)

I put your new pex file over my old one and get no messages containing "race id" in the log.

 

Oh, I see. I need to turn on debug logging in the MCM. One sec.

 

[06/21/2024 - 07:39:07PM] [CoL] Player Alias - Player Loaded Game
[06/21/2024 - 07:39:07PM] [CoL] Player Alias - isPlayerSuccubus Value: 1
[06/21/2024 - 07:39:07PM] [CoL] Player Alias - Maintenance Should Run
[06/21/2024 - 07:39:07PM] [CoL] Player Succubus Quest - Maintenance running
[06/21/2024 - 07:39:07PM] [CoL] Scene Handler - SL - SexLab detected
[06/21/2024 - 07:39:07PM] [CoL] Widget - Updating Meter
[06/21/2024 - 07:39:07PM] [CoL] Player Succubus Quest - Registered for Hotkeys and Events
[06/21/2024 - 07:39:08PM] [CoL] Scene Handler - SL - Registered for Player Start Scene Events
[06/21/2024 - 07:39:08PM] [CoL] Player Succubus Quest - Transforming Player
[06/21/2024 - 07:39:12PM] [CoL] Widget - initializing
[06/21/2024 - 07:39:12PM] [CoL] Player Alias - Player vampire status chaged
[06/21/2024 - 07:39:12PM] [CoL] Player Alias - Mortal race id before: BretonRaceVampire
[06/21/2024 - 07:39:12PM] [CoL] Player Alias - Succubus race id before: BretonRaceVampire
[06/21/2024 - 07:39:12PM] [CoL] Player Alias - Became Vampire
[06/21/2024 - 07:39:12PM] [CoL] Widget - Updating Meter
[06/21/2024 - 07:39:12PM] [CoL] Player Alias - Error: Race Could Not Be Updated
[06/21/2024 - 07:39:12PM] [CoL] Player Alias - Mortal race id after:
[06/21/2024 - 07:39:12PM] [CoL] Player Alias - Succubus race id after:
[06/21/2024 - 07:39:13PM] [CoL] Widget - initializing
[06/21/2024 - 07:39:13PM] [CoL] Widget - Updating Meter
[06/21/2024 - 07:39:13PM] [CoL] Player Alias - Player vampire status chaged
[06/21/2024 - 07:39:13PM] [CoL] Player Alias - Mortal race id before: BretonRaceVampire
[06/21/2024 - 07:39:13PM] [CoL] Player Alias - Succubus race id before: BretonRaceVampire
[06/21/2024 - 07:39:13PM] [CoL] Player Alias - Became Vampire
[06/21/2024 - 07:39:13PM] [CoL] Player Alias - Error: Race Could Not Be Updated
[06/21/2024 - 07:39:13PM] [CoL] Player Alias - Mortal race id after:
[06/21/2024 - 07:39:13PM] [CoL] Player Alias - Succubus race id after:
[06/21/2024 - 07:39:16PM] [CoL] Player Alias - Player vampire status chaged
[06/21/2024 - 07:39:16PM] [CoL] Player Alias - Mortal race id before: BretonRaceVampire
[06/21/2024 - 07:39:16PM] [CoL] Player Alias - Succubus race id before: BretonRaceVampire
[06/21/2024 - 07:39:16PM] [CoL] Player Alias - Vampirism Cured
[06/21/2024 - 07:39:16PM] [CoL] Player Alias - Mortal race id after: BretonRaceVampire
[06/21/2024 - 07:39:16PM] [CoL] Player Alias - Succubus race id after: BretonRaceVampire

 

How about a compromise. If you get the event, and oldrace == newrace then ignore event?

If you get a "become vampire" event and the race name string ends in "Vampire" then ignore event?

 

I haven't actually done any papyrus scripting so I have no idea what kind of string functions it has :)

 

I have another mod, VISION, that also logs race changing stuff. Here's what VISION logged:

 

[06/21/2024 - 07:39:08PM] Function 'IsPlayerVampireRace' detected
[06/21/2024 - 07:39:09PM] [GetPlayerInfo]: PlayerRace is: [Race <NordRace (00013746)>]
[06/21/2024 - 07:39:12PM] VISION Mod Update by event name OnRaceSwitchComplete
[06/21/2024 - 07:39:12PM] Event 'OnRaceSwitchComplete' detected, from PlayerAlias_Script
[06/21/2024 - 07:39:12PM] Function 'IsPlayerVampireRace' detected
[06/21/2024 - 07:39:12PM] [OnRaceSwitchComplete]: 'newPlayerRace' is: [Race <BretonRaceVampire (0008883C)>]
[06/21/2024 - 07:39:12PM] [OnRaceSwitchComplete]: 'PlayerRace' is: [Race <NordRace (00013746)>]
[06/21/2024 - 07:39:12PM] [OnRaceSwitchComplete]: 'isNewPlayerRaceVampireRace' is: TRUE
[06/21/2024 - 07:39:12PM] [OnRaceSwitchComplete]: 'IsPlayerVampire' is: False
[06/21/2024 - 07:39:12PM] VISION Mod Update by event name OnRaceSwitchComplete
[06/21/2024 - 07:39:12PM] Event 'OnRaceSwitchComplete' detected, from PlayerAlias_Script

[06/21/2024 - 07:39:12PM] Event 'OnRaceSwitchComplete' detected, from PlayerAlias_Script
[06/21/2024 - 07:39:12PM] VISION Mod Update by event name OnRaceSwitchComplete

[06/21/2024 - 07:39:12PM] Function 'IsPlayerVampireRace' detected
[06/21/2024 - 07:39:13PM] [OnRaceSwitchComplete]: 'newPlayerRace' is: [Race <BretonRaceVampire (0008883C)>]
[06/21/2024 - 07:39:13PM] [OnRaceSwitchComplete]: 'PlayerRace' is: [Race <NordRace (00013746)>]
[06/21/2024 - 07:39:13PM] [OnRaceSwitchComplete]: 'isNewPlayerRaceVampireRace' is: TRUE
[06/21/2024 - 07:39:13PM] [OnRaceSwitchComplete]: 'IsPlayerVampire' is: False
[06/21/2024 - 07:39:13PM] Function 'IsPlayerVampireRace' detected
[06/21/2024 - 07:39:13PM] [GetPlayerInfo]: PlayerRace is: [Race <BretonRaceVampire (0008883C)>]

[06/21/2024 - 07:39:13PM] Function 'IsPlayerVampireRace' detected

[06/21/2024 - 07:39:13PM] [OnRaceSwitchComplete]: 'newPlayerRace' is: [Race <BretonRaceVampire (0008883C)>]
[06/21/2024 - 07:39:13PM] [OnRaceSwitchComplete]: 'PlayerRace' is: [Race <BretonRaceVampire (0008883C)>]
[06/21/2024 - 07:39:13PM] [OnRaceSwitchComplete]: 'isNewPlayerRaceVampireRace' is: TRUE
[06/21/2024 - 07:39:13PM] [OnRaceSwitchComplete]: 'IsPlayerVampire' is: TRUE
[06/21/2024 - 07:39:15PM] Event 'OnRaceSwitchComplete' detected, from PlayerAlias_Script
[06/21/2024 - 07:39:15PM] VISION Mod Update by event name OnRaceSwitchComplete
[06/21/2024 - 07:39:16PM] Function 'IsPlayerVampireRace' detected
[06/21/2024 - 07:39:16PM] VISION Mod Update by event name OnRaceSwitchComplete
[06/21/2024 - 07:39:16PM] Event 'OnRaceSwitchComplete' detected, from PlayerAlias_Script
[06/21/2024 - 07:39:16PM] Function 'IsPlayerVampireRace' detected
[06/21/2024 - 07:39:16PM] [OnRaceSwitchComplete]: 'newPlayerRace' is: [Race <NordRace (00013746)>]
[06/21/2024 - 07:39:16PM] [OnRaceSwitchComplete]: 'PlayerRace' is: [Race <BretonRaceVampire (0008883C)>]
[06/21/2024 - 07:39:16PM] [OnRaceSwitchComplete]: 'isNewPlayerRaceVampireRace' is: False
[06/21/2024 - 07:39:16PM] [OnRaceSwitchComplete]: 'IsPlayerVampire' is: TRUE

[06/21/2024 - 07:39:16PM] [OnRaceSwitchComplete]: 'newPlayerRace' is: [Race <BretonRaceVampire (0008883C)>]
[06/21/2024 - 07:39:16PM] [OnRaceSwitchComplete]: 'PlayerRace' is: [Race <BretonRaceVampire (0008883C)>]
[06/21/2024 - 07:39:16PM] [OnRaceSwitchComplete]: 'isNewPlayerRaceVampireRace' is: TRUE
[06/21/2024 - 07:39:16PM] [OnRaceSwitchComplete]: 'IsPlayerVampire' is: TRUE
[06/21/2024 - 07:39:16PM] Function 'IsPlayerVampireRace' detected
[06/21/2024 - 07:39:17PM] [GetPlayerInfo]: PlayerRace is: [Race <BretonRaceVampire (0008883C)>]
[06/21/2024 - 07:39:17PM] Function 'IsPlayerVampireRace' detected
[06/21/2024 - 07:39:17PM] [GetPlayerInfo]: PlayerRace is: [Race <BretonRaceVampire (0008883C)>]
[06/21/2024 - 07:39:18PM] Function 'IsPlayerVampireRace' detected
[06/21/2024 - 07:39:18PM] [GetPlayerInfo]: PlayerRace is: [Race <BretonRaceVampire (0008883C)>]
[06/21/2024 - 07:39:18PM] Function 'IsEyeColorValidForPlayerRace' detected
[06/21/2024 - 07:39:18PM] Function 'IsPlayerVampireRace' detected
[06/21/2024 - 07:39:19PM] [GetPlayerInfo]: PlayerRace is: [Race <BretonRaceVampire (0008883C)>]
[06/21/2024 - 07:39:19PM] Function 'IsPlayerVampireRace' detected
[06/21/2024 - 07:39:19PM] [GetPlayerInfo]: PlayerRace is: [Race <BretonRaceVampire (0008883C)>]

[06/21/2024 - 07:39:23PM] Function 'IsPlayerVampireRace' detected
[06/21/2024 - 07:39:23PM] [GetPlayerInfo]: PlayerRace is: [Race <BretonRaceVampire (0008883C)>]

 

Now all this Nord stuff in there gave me an idea. I am playing a breton and I started playing as a breton, but I did load a preset in racemenu that was meant for a Nord. It loads and applies cleanly on a Breton and looks exactly as expected, but could that be the culprit?

 

EDIT: This looks good: https://ck.uesp.net/wiki/Find_-_StringUtil

Edited by Hakuna_Matata
Posted
3 hours ago, chigusa said:

Is there a way to retain the head's .nif sculpts when transforming?

Setting bExternalHeads=1 should do that.

Posted
1 hour ago, Hakuna_Matata said:

Now all this Nord stuff in there gave me an idea. I am playing a breton and I started playing as a breton, but I did load a preset in racemenu that was meant for a Nord. It loads and applies cleanly on a Breton and looks exactly as expected, but could that be the culprit?

It's possible, but I don't think races get stored in the presets. However, what I'm seeing in that log looks like the bug that happens when you have different races for your forms. The game loads in as a default NordRace, which is why I apply the presets on game load and why VISIONS is seeing multiple race changes, since when the preset gets applied it changes race multiple times.

 

Based on the CoL log, it looks like I am right. Something is throwing the "became vampire" event even though CoL already knows you're a vampire. Though you're also getting a Cured event at the end, but due to the previous events the Vampire Race has been stored in the CureRace variables. Getting the cure event this way may continue to cause issues. Basically I expect that when you transform, you will revert to non-vampire status. Or it's also possibly a race condition and will depend on what order the events are received in whether your forms will have vampirism or not.

 

However, the attached script has the additional error checking you suggested, and also removes the reliance on the CureRace variables. Instead it just attempts to strip "Vampire" off the editor race id. If either of the races is already a vampire race and you become a vampire, it will log a warning and use what is already set for the race that is already a vampire. If  you are cured of vampirism but either race is already not a vampire race, it will log a warning and use what was already set for that race. At the very least, this will hopefully provide more consistency as to what CoL does when it receives these vampire events, and make sure that the end state is what would be expected when receiving a given event.

 

Can you link the VISION mod you are using? It's a bit too generic of a name for me to be sure of which mod it is. If I could replicate your issue that'd be best though, and if it's detecting and logging race switch events, it's possibly a culprit.

CoL_PlayerAliasScript.pex

Posted

Hmm actually maybe it's better not to do this kind of matching on strings.

Maybe build two formid lists at game start, one for the regular races and one for the vampire races.

Then match the formids against the list.

 

String processing is probably really clunky and slow on papyrus.

Posted

Here's the vision mod:

https://www.nexusmods.com/skyrimspecialedition/mods/49943

 

Since the Nord stuff only shows up at the very start, I think this might be an artifact of how the game works.

If on the start screen instead of Continue you open the console and use coc whiterun, you'll show up there as a nord male.

Since there is no corresponding log line from CoL I think Vision might just capture the very initial stage of loading here, switching from the default nord male character to what is in the save game.

 

I will try your script file now. Thanks for wasting your time on my shitty issue.

Posted (edited)

The new script helped. No more error messages at startup.

In fact, it more than helped. I didn't get error messages from combat eyes either. Probably a fluke but who knows.

 

Thanks again!

 

EDIT: Hah, I'm a moron. I had disabled CoL for the save game. Reenabling CoL gives the error messages from combat eyes again but none from CoL so I'm happy. I'll remove combat eyes from my next playthrough, CoL is much more important.

Edited by Hakuna_Matata
Posted
1 hour ago, Hakuna_Matata said:

String processing is probably really clunky and slow on papyrus

It mostly gets farmed out to native functions, so it's really not that bad. Plus, it only happens once or twice on a normal game, so I'm not really worried about the performance in this case. It's still going to be plenty fast enough. Formlists would actually probably be slower, and also would most likely break on custom races and cause a whole lot of compatibility headaches. Doing it based on the string id should be sufficient as long as custom race mod authors follow the naming convention of the rest of the game. And if they don't, well that's why I added that debug message box in the first place. I actually took a look at how the vanilla script handles race changing, and it's just a big set of if/else ifs. If xRace, set to yRace. Else if zRace set to vRace. Etc. And they're all stored as properties on the script. It's a fine way to do it, if you don't care about compatibility with mods.

 

If you know how to use grep or another text search tool, you could search through your scripts directories for a call to the function "SendVampirismStateChanged". It seems like that's the function that gets called to send the event. Might be able to narrow down the mod that's sending the event. It doesn't seem to be visions. If the combat eyes message doesn't appear when CoL is disabled, then I think that something is watching for the race switch event and then sending the vampire events.

 

Just double check that your race is actually being set as the vampire races. Don't want to get several hours in and realize that it's broken. More Informative Console is probably the best way to do that.

Posted
2 hours ago, Hakuna_Matata said:

Looks like it's the combat eyes mod that sends those events in their OnRaceSwitchComplete handler.

 

Huh. Didn't expect that one tbh lol.

Posted

When changing forms, it doesn't seem to properly reset morphs that were created by OBody NG. It's not really this mod's issue, it's more of a soft incompatibility, but I had to clear the obody data out of the presets to reset it.

Posted
7 hours ago, chigusa said:

When changing forms, it doesn't seem to properly reset morphs that were created by OBody NG. It's not really this mod's issue, it's more of a soft incompatibility, but I had to clear the obody data out of the presets to reset it.

Thanks, I added it to the list of known incompatibilities and added a ticket to look into possible integration at some point in the future.

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
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...