Jump to content

Recommended Posts

Yup save tool. Don't think it's new. I've since clean saved and don't seem to have any stacked scripts so far, but I've not turned back on that setting either

 

For the armor how about this: GetModelPath

It might be too broad for what you want- ie it may include clothes that wouldn't technically be considered mage robes. 

But I don't think there are many models for mage robes, 4 or 5 maybe?

 

; Retrieve the file path for the male model of ArmorIronCuirass

String FilePath = (Game.GetForm(0x00012E49) as Armor).GetModelPath(False)

; Returns "Armor\Iron\Male\CuirassLightGND.nif" 

 

5 models (one for each spell skill subsection(novice, master, ect)), with the possible addition of 2-5 necromancer robes for this purpose (clearly, dangerous necromancer if wearing robes with a skull on them... ) and/or  2-5 robe models (blue robes, black robes, archmage robes) * 2 for each gender

 

Still a little much to check for, and it doesn't include possible 3rd party wizard robes, but it's closer to an acceptable number, will probably use this as a backup if I don't find something better.

 

I also have savetool and I've never seen a suspendedstack section, maybe it only shows up if you have suspended stacks?

 

In any case, I've come back installed the latest version over a cleaned save and everything seems to be working perfectly.

 

Good to hear it's working.

 

Have installed 101 over two different clean saves four times. Half the time the mcm doesn't show up till after a save-reload, but things seem to be working without the wolfclub scripts being available.

 

Not good to hear it's not working for you all the time. The MCM could take as long as 2 minutes to show up in high load situations, but reloading shouldn't fix it unless SkyUI got stuck.

 

Speculating without a log, although it sounds like you can work around it anyway.

Link to comment

Damnit. Spoke too soon. Noticed there was no crde output in the console. And stacks have started coming back. 

 

Edit: Ok I've gone back to a save where I hadn't any version of DE installed and I'm running 10.1 now. Hopefully it was just a messed up upgrade. 

Link to comment

Ok, little update. Been playing a little while now. Doesn't seem to be any problem. I've been keeping a close eye on my saves with the save tool and the most suspended stacks I've seen is one and it's usually processed pretty quickly. The only odd thing I've noticed: After quiting (CTD) and loading up again, I sometimes got a message: "[CRDE] zazKeywordEffectRefresh is not loaded, are you sure you installed zaz?"

 
Had it a handful of times. Zaz is definitely installed (6.07). Didn't continue playing if I got it so quit and reloaded again just in case. I could not get it to reproduce reliably. Here is a log from one such run: 
 
EDIT: Lol just as I posted the above I load up my game and find a stuck suspended stack. Time between test saves tells me I waited 5 mins for it to budge. The suspended stack is not present in the save I loaded so it seems to have happened after reloading the game. Here is the dump from the save tool of the related active script: 

ID:         000B3EC8
Var:       bool:  1
Uint8:    02
Uint8:    00
Uint8:    00
Functions: 3
 
---------- Function 1 ----------
 
VarCount: 9
Flag:         02
Type:       00
Name:      crdeplayermonitorscript
Name:      crdeplayermonitorscript
Event:      OnUpdate
Status:     
uint8:       03
uint8:       02
Returntype: None
Docstring:   
Function flags: 00
Function user flags: 00000000
 
Function local name: ::temp0
Function local type: Bool
Function local name: ::NoneVar
Function local type: None
Function local name: ::temp1
Function local type: Float
Function local name: ::temp2
Function local type: Bool
Function local name: ::temp3
Function local type: Bool
Function local name: ::temp4
Function local type: Float
Function local name: onupdatetimeteststart
Function local type: Float
Function local name: ::temp5
Function local type: String
Function local name: ::temp6
Function local type: Bool
Opcodes: 74
 
 PROPGET bCRDEEnable ::MCM_var ::temp0
 
 CMPEQ ::temp0 ::temp0 0
 
 JMPF ::temp0 5
 
 CALLM clear_force_variables, self, ::NoneVar, 0,
 
 PROPGET fEventInterval ::MCM_var ::temp1
 
 CALLM RegisterForSingleUpdate, self, ::NoneVar, ::temp1,
 
 JMP 68
 
 CALLM IsInCombat, ::player_var, ::temp2,
 
 JMPF ::temp2 14
 
 JMPF ::forceGreetIncomplete_var 3
 
 CALLM clear_force_variables, self, ::NoneVar, 0,
 
 JMP 1
 
 ASSIGN ::wasInCombat_var 1
 
 NOT ::temp3 ::wasInCombat_var
 
 JMPF ::temp3 3
 
 CALLM debugMsg, self, ::NoneVar, player in combat, do nothing, looping slower, 1,
 
 JMP 1
 
 PROPGET fEventInterval ::MCM_var ::temp1
 
 CAST ::temp4 5
 
 FADD ::temp4 ::temp1 ::temp4
 
 CALLM RegisterForSingleUpdate, self, ::NoneVar, ::temp4,
 
 JMP 53
 
 CMPEQ ::temp3 ::wasInCombat_var 1
 
 JMPF ::temp3 6
 
 ASSIGN ::wasInCombat_var 0
 
 CALLM debugMsg, self, ::NoneVar, player has left combat, do nothing and wait 20 seconds before returning to normal, 1,
 
 CAST ::temp1 20
 
 CALLM RegisterForSingleUpdate, self, ::NoneVar, ::temp1,
 
 JMP 46
 
 CALLS utility.GetCurrentRealTime, ::temp4,
 
 ASSIGN onupdatetimeteststart ::temp4
 
 JMPF ::forceGreetIncomplete_var 24
 
 CALLS utility.GetCurrentGameTime, ::temp1,
 
 ASSIGN CurrentRealTime ::temp1
 
 FSUB ::temp4 busyGameTime CurrentRealTime
 
 CAST ::temp1 1400
 
 FMUL ::temp1 ::temp4 ::temp1
 
 CAST ::temp5 ::temp1
 
 STRCAT ::temp5 force greet is Incomplete,  ::temp5
 
 STRCAT ::temp5 ::temp5  GMin remain
 
 CALLM debugMsg, self, ::NoneVar, ::temp5, 1,
 
 PROPGET bResetDHLP ::MCM_var ::temp3
 
 JMPF ::temp3 6
 
 CALLM dhlpResume, ::Mods_var, ::NoneVar,
 
 CALLM clear_force_variables, self, ::NoneVar, 1,
 
 ASSIGN ::temp6 0
 
 PROPSET bResetDHLP ::MCM_var ::temp6
 
 JMP 1
 
 CMPLT ::temp6 busyGameTime CurrentRealTime
 
 JMPF ::temp6 5
 
 CALLM dhlpResume, ::Mods_var, ::NoneVar,
 
 CALLM clear_force_variables, self, ::NoneVar, 1,
 
 CALLM debugMsg, self, ::NoneVar, force greet failed, ran out of time, 1,
 
 JMP 1
 
 JMP 1
 
 CMPEQ ::temp3 threadBusy 0
 
 JMPF ::temp3 5
 
 ASSIGN threadBusy 1
 
 CALLM attemptApproach, self, ::NoneVar,
 
 ASSIGN threadBusy 0
 
 JMP 1
 
 CALLM tryDebug, self, ::NoneVar,
 
 CALLM printNearbyValidActors, ::NPCMonitorScript_var, ::NoneVar,
 
 CALLS utility.GetCurrentRealTime, ::temp4,
 
 FSUB ::temp1 ::temp4 onupdatetimeteststart
 
 CAST ::temp5 ::temp1
 
 STRCAT ::temp5 OnUpdate time: ::temp5
 
 CALLM debugMsg, self, ::NoneVar, ::temp5, 0,
 
 JMPF ::forceGreetIncomplete_var 4
 
 CAST ::temp4 5
 
 CALLM RegisterForSingleUpdate, self, ::NoneVar, ::temp4,
 
 JMP 3
 
 PROPGET fEventInterval ::MCM_var ::temp1
 
 CALLM RegisterForSingleUpdate, self, ::NoneVar, ::temp1,
 
uint32:     0000003E
Var:  crdeplayermonitorscript:  1530AF70
 
Var[1]:  bool:  0
Var[2]:  null:  00000000
Var[3]:  float:  0.000000
Var[4]:  bool:  0
Var[5]:  bool:  1
Var[6]:  float:  77.319000
Var[7]:  float:  77.319000
Var[8]:  string:  
Var[9]:  bool:  0
 
---------- Function 2 ----------
 
VarCount: 9
Flag:         02
Type:       00
Name:      crdenpcmonitorscript
Name:      crdenpcmonitorscript
Event:      printNearbyValidActors
Status:     
uint8:       03
uint8:       02
Returntype: None
Docstring:   
Function flags: 00
Function user flags: 00000000
 
Function local name: ::temp80
Function local type: ReferenceAlias
Function local name: ::temp81
Function local type: Bool
Function local name: ::temp82
Function local type: Actor
Function local name: ::temp83
Function local type: Bool
Function local name: ::NoneVar
Function local type: None
Function local name: actorNames
Function local type: String
Function local name: A
Function local type: Actor
Function local name: ::temp84
Function local type: String
Function local name: ::temp85
Function local type: String
Opcodes: 88
 
 CAST ::temp80 0
 
 CMPEQ ::temp81 ::ValidAttacker1_var ::temp80
 
 NOT ::temp81 ::temp81
 
 JMPF ::temp81 84
 
 ASSIGN actorNames 
 
 CALLM GetActorRef, ::ValidAttacker1_var, ::temp82,
 
 ASSIGN A ::temp82
 
 CAST ::temp82 0
 
 CMPEQ ::temp83 A ::temp82
 
 NOT ::temp83 ::temp83
 
 JMPF ::temp83 6
 
 STRCAT ::temp84 actorNames *
 
 CALLM GetDisplayName, A, ::temp85,
 
 STRCAT ::temp84 ::temp84 ::temp85
 
 ASSIGN actorNames ::temp84
 
 JMP 1
 
 CALLM GetActorRef, ::ValidAttacker2_var, ::temp82,
 
 ASSIGN A ::temp82
 
 CAST ::temp82 0
 
 CMPEQ ::temp83 A ::temp82
 
 NOT ::temp83 ::temp83
 
 JMPF ::temp83 6
 
 STRCAT ::temp85 actorNames , 
 
 CALLM GetDisplayName, A, ::temp84,
 
 STRCAT ::temp85 ::temp85 ::temp84
 
 ASSIGN actorNames ::temp85
 
 JMP 1
 
 CALLM GetActorRef, ::ValidAttacker3_var, ::temp82,
 
 ASSIGN A ::temp82
 
 CAST ::temp82 0
 
 CMPEQ ::temp83 A ::temp82
 
 NOT ::temp83 ::temp83
 
 JMPF ::temp83 6
 
 STRCAT ::temp84 actorNames , 
 
 CALLM GetDisplayName, A, ::temp85,
 
 STRCAT ::temp84 ::temp84 ::temp85
 
 ASSIGN actorNames ::temp84
 
 JMP 1
 
 CALLM GetActorRef, ::ValidAttacker4_var, ::temp82,
 
 ASSIGN A ::temp82
 
 CAST ::temp82 0
 
 CMPEQ ::temp83 A ::temp82
 
 NOT ::temp83 ::temp83
 
 JMPF ::temp83 6
 
 STRCAT ::temp85 actorNames , A+:
 
 CALLM GetDisplayName, A, ::temp84,
 
 STRCAT ::temp85 ::temp85 ::temp84
 
 ASSIGN actorNames ::temp85
 
 JMP 1
 
 CALLM GetActorRef, ::ValidAttacker5_var, ::temp82,
 
 ASSIGN A ::temp82
 
 CAST ::temp82 0
 
 CMPEQ ::temp83 A ::temp82
 
 NOT ::temp83 ::temp83
 
 JMPF ::temp83 6
 
 STRCAT ::temp84 actorNames , E:
 
 CALLM GetDisplayName, A, ::temp85,
 
 STRCAT ::temp84 ::temp84 ::temp85
 
 ASSIGN actorNames ::temp84
 
 JMP 1
 
 CALLM GetActorRef, ::ValidAttacker6_var, ::temp82,
 
 ASSIGN A ::temp82
 
 CAST ::temp82 0
 
 CMPEQ ::temp83 A ::temp82
 
 NOT ::temp83 ::temp83
 
 JMPF ::temp83 6
 
 STRCAT ::temp85 actorNames , O:
 
 CALLM GetDisplayName, A, ::temp84,
 
 STRCAT ::temp85 ::temp85 ::temp84
 
 ASSIGN actorNames ::temp85
 
 JMP 1
 
 CALLM GetActorRef, ::ValidAttacker7_var, ::temp82,
 
 ASSIGN A ::temp82
 
 CAST ::temp82 0
 
 CMPEQ ::temp83 A ::temp82
 
 NOT ::temp83 ::temp83
 
 JMPF ::temp83 6
 
 STRCAT ::temp84 actorNames , A:
 
 CALLM GetDisplayName, A, ::temp85,
 
 STRCAT ::temp84 ::temp84 ::temp85
 
 ASSIGN actorNames ::temp84
 
 JMP 1
 
 STRCAT ::temp85 closest npc(s):  actorNames
 
 CALLM debugMsg, self, ::NoneVar, ::temp85, 0,
 
 CALLM Stop, self, ::NoneVar,
 
 CALLM start, self, ::temp83,
 
 JMP 2
 
 CALLM debugMsg, self, ::NoneVar, closest npc alias is empty, 0,
 
uint32:     00000055
Var:  crdenpcmonitorscript:  5DDB2FD0
 
Var[1]:  ReferenceAlias:  00000000
Var[2]:  bool:  1
Var[3]:  Actor:  00000000
Var[4]:  bool:  0
Var[5]:  null:  00000000
Var[6]:  string:  
Var[7]:  Actor:  00000000
Var[8]:  string:  
Var[9]:  string:  closest npc(s): 
 
---------- Function 3 ----------
 
VarCount: 0
Flag:         02
Type:       00
Name:      crdenpcmonitorscript
Name:      Quest
Event:      start
Status:     
uint8:       03
uint8:       02
Returntype: Bool
Docstring:   
Function flags: 00
Function user flags: 02000000
 
Opcodes: 0
 
uint32:     00000000
Var:  null:  00000000

 

 

and here is the papyrus log from it: Papyrus.0.log

Tried loading the test save with the suspended stack a couple of times but never seemed to clear nor did DE restart (no crde output into console). 

Loaded the save before the stuck stack and everything seems fine again. 

 

Edit2: Had it happen a second time when reloading the same save. Last output in the console from DE is: "[CRDE] closest npc(s):"

No entries for NPCs, though there is a hunter 4 or 5 feet away. 

Link to comment

Ok, little update. Been playing a little while now. Doesn't seem to be any problem. I've been keeping a close eye on my saves with the save tool and the most suspended stacks I've seen is one and it's usually processed pretty quickly. The only odd thing I've noticed: After quiting (CTD) and loading up again, I sometimes got a message: "[CRDE] zazKeywordEffectRefresh is not loaded, are you sure you installed zaz?"

 
Had it a handful of times. Zaz is definitely installed (6.07). Didn't continue playing if I got it so quit and reloaded again just in case. I could not get it to reproduce reliably. Here is a log from one such run: 
 
EDIT: Lol just as I posted the above I load up my game and find a stuck suspended stack. Time between test saves tells me I waited 5 mins for it to budge. The suspended stack is not present in the save I loaded so it seems to have happened after reloading the game. Here is the dump from the save tool of the related active script: 

ID:         000B3EC8
Var:       bool:  1
Uint8:    02
Uint8:    00
Uint8:    00
Functions: 3
 
---------- Function 1 ----------
 
VarCount: 9
Flag:         02
Type:       00
Name:      crdeplayermonitorscript
Name:      crdeplayermonitorscript
Event:      OnUpdate
Status:     
uint8:       03
uint8:       02
Returntype: None
Docstring:   
Function flags: 00
Function user flags: 00000000
 
Function local name: ::temp0
Function local type: Bool
Function local name: ::NoneVar
Function local type: None
Function local name: ::temp1
Function local type: Float
Function local name: ::temp2
Function local type: Bool
Function local name: ::temp3
Function local type: Bool
Function local name: ::temp4
Function local type: Float
Function local name: onupdatetimeteststart
Function local type: Float
Function local name: ::temp5
Function local type: String
Function local name: ::temp6
Function local type: Bool
Opcodes: 74
 
 PROPGET bCRDEEnable ::MCM_var ::temp0
 
 CMPEQ ::temp0 ::temp0 0
 
 JMPF ::temp0 5
 
 CALLM clear_force_variables, self, ::NoneVar, 0,
 
 PROPGET fEventInterval ::MCM_var ::temp1
 
 CALLM RegisterForSingleUpdate, self, ::NoneVar, ::temp1,
 
 JMP 68
 
 CALLM IsInCombat, ::player_var, ::temp2,
 
 JMPF ::temp2 14
 
 JMPF ::forceGreetIncomplete_var 3
 
 CALLM clear_force_variables, self, ::NoneVar, 0,
 
 JMP 1
 
 ASSIGN ::wasInCombat_var 1
 
 NOT ::temp3 ::wasInCombat_var
 
 JMPF ::temp3 3
 
 CALLM debugMsg, self, ::NoneVar, player in combat, do nothing, looping slower, 1,
 
 JMP 1
 
 PROPGET fEventInterval ::MCM_var ::temp1
 
 CAST ::temp4 5
 
 FADD ::temp4 ::temp1 ::temp4
 
 CALLM RegisterForSingleUpdate, self, ::NoneVar, ::temp4,
 
 JMP 53
 
 CMPEQ ::temp3 ::wasInCombat_var 1
 
 JMPF ::temp3 6
 
 ASSIGN ::wasInCombat_var 0
 
 CALLM debugMsg, self, ::NoneVar, player has left combat, do nothing and wait 20 seconds before returning to normal, 1,
 
 CAST ::temp1 20
 
 CALLM RegisterForSingleUpdate, self, ::NoneVar, ::temp1,
 
 JMP 46
 
 CALLS utility.GetCurrentRealTime, ::temp4,
 
 ASSIGN onupdatetimeteststart ::temp4
 
 JMPF ::forceGreetIncomplete_var 24
 
 CALLS utility.GetCurrentGameTime, ::temp1,
 
 ASSIGN CurrentRealTime ::temp1
 
 FSUB ::temp4 busyGameTime CurrentRealTime
 
 CAST ::temp1 1400
 
 FMUL ::temp1 ::temp4 ::temp1
 
 CAST ::temp5 ::temp1
 
 STRCAT ::temp5 force greet is Incomplete,  ::temp5
 
 STRCAT ::temp5 ::temp5  GMin remain
 
 CALLM debugMsg, self, ::NoneVar, ::temp5, 1,
 
 PROPGET bResetDHLP ::MCM_var ::temp3
 
 JMPF ::temp3 6
 
 CALLM dhlpResume, ::Mods_var, ::NoneVar,
 
 CALLM clear_force_variables, self, ::NoneVar, 1,
 
 ASSIGN ::temp6 0
 
 PROPSET bResetDHLP ::MCM_var ::temp6
 
 JMP 1
 
 CMPLT ::temp6 busyGameTime CurrentRealTime
 
 JMPF ::temp6 5
 
 CALLM dhlpResume, ::Mods_var, ::NoneVar,
 
 CALLM clear_force_variables, self, ::NoneVar, 1,
 
 CALLM debugMsg, self, ::NoneVar, force greet failed, ran out of time, 1,
 
 JMP 1
 
 JMP 1
 
 CMPEQ ::temp3 threadBusy 0
 
 JMPF ::temp3 5
 
 ASSIGN threadBusy 1
 
 CALLM attemptApproach, self, ::NoneVar,
 
 ASSIGN threadBusy 0
 
 JMP 1
 
 CALLM tryDebug, self, ::NoneVar,
 
 CALLM printNearbyValidActors, ::NPCMonitorScript_var, ::NoneVar,
 
 CALLS utility.GetCurrentRealTime, ::temp4,
 
 FSUB ::temp1 ::temp4 onupdatetimeteststart
 
 CAST ::temp5 ::temp1
 
 STRCAT ::temp5 OnUpdate time: ::temp5
 
 CALLM debugMsg, self, ::NoneVar, ::temp5, 0,
 
 JMPF ::forceGreetIncomplete_var 4
 
 CAST ::temp4 5
 
 CALLM RegisterForSingleUpdate, self, ::NoneVar, ::temp4,
 
 JMP 3
 
 PROPGET fEventInterval ::MCM_var ::temp1
 
 CALLM RegisterForSingleUpdate, self, ::NoneVar, ::temp1,
 
uint32:     0000003E
Var:  crdeplayermonitorscript:  1530AF70
 
Var[1]:  bool:  0
Var[2]:  null:  00000000
Var[3]:  float:  0.000000
Var[4]:  bool:  0
Var[5]:  bool:  1
Var[6]:  float:  77.319000
Var[7]:  float:  77.319000
Var[8]:  string:  
Var[9]:  bool:  0
 
---------- Function 2 ----------
 
VarCount: 9
Flag:         02
Type:       00
Name:      crdenpcmonitorscript
Name:      crdenpcmonitorscript
Event:      printNearbyValidActors
Status:     
uint8:       03
uint8:       02
Returntype: None
Docstring:   
Function flags: 00
Function user flags: 00000000
 
Function local name: ::temp80
Function local type: ReferenceAlias
Function local name: ::temp81
Function local type: Bool
Function local name: ::temp82
Function local type: Actor
Function local name: ::temp83
Function local type: Bool
Function local name: ::NoneVar
Function local type: None
Function local name: actorNames
Function local type: String
Function local name: A
Function local type: Actor
Function local name: ::temp84
Function local type: String
Function local name: ::temp85
Function local type: String
Opcodes: 88
 
 CAST ::temp80 0
 
 CMPEQ ::temp81 ::ValidAttacker1_var ::temp80
 
 NOT ::temp81 ::temp81
 
 JMPF ::temp81 84
 
 ASSIGN actorNames 
 
 CALLM GetActorRef, ::ValidAttacker1_var, ::temp82,
 
 ASSIGN A ::temp82
 
 CAST ::temp82 0
 
 CMPEQ ::temp83 A ::temp82
 
 NOT ::temp83 ::temp83
 
 JMPF ::temp83 6
 
 STRCAT ::temp84 actorNames *
 
 CALLM GetDisplayName, A, ::temp85,
 
 STRCAT ::temp84 ::temp84 ::temp85
 
 ASSIGN actorNames ::temp84
 
 JMP 1
 
 CALLM GetActorRef, ::ValidAttacker2_var, ::temp82,
 
 ASSIGN A ::temp82
 
 CAST ::temp82 0
 
 CMPEQ ::temp83 A ::temp82
 
 NOT ::temp83 ::temp83
 
 JMPF ::temp83 6
 
 STRCAT ::temp85 actorNames , 
 
 CALLM GetDisplayName, A, ::temp84,
 
 STRCAT ::temp85 ::temp85 ::temp84
 
 ASSIGN actorNames ::temp85
 
 JMP 1
 
 CALLM GetActorRef, ::ValidAttacker3_var, ::temp82,
 
 ASSIGN A ::temp82
 
 CAST ::temp82 0
 
 CMPEQ ::temp83 A ::temp82
 
 NOT ::temp83 ::temp83
 
 JMPF ::temp83 6
 
 STRCAT ::temp84 actorNames , 
 
 CALLM GetDisplayName, A, ::temp85,
 
 STRCAT ::temp84 ::temp84 ::temp85
 
 ASSIGN actorNames ::temp84
 
 JMP 1
 
 CALLM GetActorRef, ::ValidAttacker4_var, ::temp82,
 
 ASSIGN A ::temp82
 
 CAST ::temp82 0
 
 CMPEQ ::temp83 A ::temp82
 
 NOT ::temp83 ::temp83
 
 JMPF ::temp83 6
 
 STRCAT ::temp85 actorNames , A+:
 
 CALLM GetDisplayName, A, ::temp84,
 
 STRCAT ::temp85 ::temp85 ::temp84
 
 ASSIGN actorNames ::temp85
 
 JMP 1
 
 CALLM GetActorRef, ::ValidAttacker5_var, ::temp82,
 
 ASSIGN A ::temp82
 
 CAST ::temp82 0
 
 CMPEQ ::temp83 A ::temp82
 
 NOT ::temp83 ::temp83
 
 JMPF ::temp83 6
 
 STRCAT ::temp84 actorNames , E:
 
 CALLM GetDisplayName, A, ::temp85,
 
 STRCAT ::temp84 ::temp84 ::temp85
 
 ASSIGN actorNames ::temp84
 
 JMP 1
 
 CALLM GetActorRef, ::ValidAttacker6_var, ::temp82,
 
 ASSIGN A ::temp82
 
 CAST ::temp82 0
 
 CMPEQ ::temp83 A ::temp82
 
 NOT ::temp83 ::temp83
 
 JMPF ::temp83 6
 
 STRCAT ::temp85 actorNames , O:
 
 CALLM GetDisplayName, A, ::temp84,
 
 STRCAT ::temp85 ::temp85 ::temp84
 
 ASSIGN actorNames ::temp85
 
 JMP 1
 
 CALLM GetActorRef, ::ValidAttacker7_var, ::temp82,
 
 ASSIGN A ::temp82
 
 CAST ::temp82 0
 
 CMPEQ ::temp83 A ::temp82
 
 NOT ::temp83 ::temp83
 
 JMPF ::temp83 6
 
 STRCAT ::temp84 actorNames , A:
 
 CALLM GetDisplayName, A, ::temp85,
 
 STRCAT ::temp84 ::temp84 ::temp85
 
 ASSIGN actorNames ::temp84
 
 JMP 1
 
 STRCAT ::temp85 closest npc(s):  actorNames
 
 CALLM debugMsg, self, ::NoneVar, ::temp85, 0,
 
 CALLM Stop, self, ::NoneVar,
 
 CALLM start, self, ::temp83,
 
 JMP 2
 
 CALLM debugMsg, self, ::NoneVar, closest npc alias is empty, 0,
 
uint32:     00000055
Var:  crdenpcmonitorscript:  5DDB2FD0
 
Var[1]:  ReferenceAlias:  00000000
Var[2]:  bool:  1
Var[3]:  Actor:  00000000
Var[4]:  bool:  0
Var[5]:  null:  00000000
Var[6]:  string:  
Var[7]:  Actor:  00000000
Var[8]:  string:  
Var[9]:  string:  closest npc(s): 
 
---------- Function 3 ----------
 
VarCount: 0
Flag:         02
Type:       00
Name:      crdenpcmonitorscript
Name:      Quest
Event:      start
Status:     
uint8:       03
uint8:       02
Returntype: Bool
Docstring:   
Function flags: 00
Function user flags: 02000000
 
Opcodes: 0
 
uint32:     00000000
Var:  null:  00000000

 

 

and here is the papyrus log from it: attachicon.gifPapyrus.0.log

Tried loading the test save with the suspended stack a couple of times but never seemed to clear nor did DE restart (no crde output into console). 

Loaded the save before the stuck stack and everything seems fine again. 

 

Edit2: Had it happen a second time when reloading the same save. Last output in the console from DE is: "[CRDE] closest npc(s):"

No entries for NPCs, though there is a hunter 4 or 5 feet away. 

[10/08/2015 - 02:12:30AM] Cannot open store for class "pchswolfclubdaymoyl", missing file?
[10/08/2015 - 02:12:30AM] Error: Unable to link types associated with function "enslaveWC" in state "" on object "crdedistantenslavescript".
[10/08/2015 - 02:12:30AM] Error: Unable to link type of variable "::DistantEnslaveScript_var" on object "crdemodsmonitorscript"

Welp, guess the issue isn't resolved.

 

Either try installing death alternative and see if you get the same bug or revert back to having wolfclub installed. I still have no idea why that specific class call causes the papyrus engine to have a fit if it can't find it and only some of the time, at this rate I might as well disable wolfclub since it's a dead and incomplete mod anyway.

 

Reading the papyrus assembler is going to take time, it might contain some useful information but not sure yet.

 

And, yeah, once in a blue moon I get the zaz is not loaded bug too, no idea what causes it, but I suggest if you catch it that you save and cycle skyrim to see if it fixes it, since it might interfere with DE working correctly (depending on what else didn't load correctly from zazanimationpack)

 

Link to comment

 

Yup save tool. Don't think it's new. I've since clean saved and don't seem to have any stacked scripts so far, but I've not turned back on that setting either

 

For the armor how about this: GetModelPath

It might be too broad for what you want- ie it may include clothes that wouldn't technically be considered mage robes. 

But I don't think there are many models for mage robes, 4 or 5 maybe?

 

; Retrieve the file path for the male model of ArmorIronCuirass

String FilePath = (Game.GetForm(0x00012E49) as Armor).GetModelPath(False)

; Returns "Armor\Iron\Male\CuirassLightGND.nif" 

 

 

5 models (one for each spell skill subsection(novice, master, ect)), with the possible addition of 2-5 necromancer robes for this purpose (clearly, dangerous necromancer if wearing robes with a skull on them... ) and/or  2-5 robe models (blue robes, black robes, archmage robes) * 2 for each gender

 

Still a little much to check for, and it doesn't include possible 3rd party wizard robes, but it's closer to an acceptable number, will probably use this as a backup if I don't find something better.

 

I think there are only something like four models for mage robes. Apprentice, Journeyman, Necromancer, and Warlock, and everything else is just a texture set override.
Link to comment

Yup save tool. Don't think it's new. I've since clean saved and don't seem to have any stacked scripts so far, but I've not turned back on that setting either

 

For the armor how about this: GetModelPath

It might be too broad for what you want- ie it may include clothes that wouldn't technically be considered mage robes. 

But I don't think there are many models for mage robes, 4 or 5 maybe?

 

; Retrieve the file path for the male model of ArmorIronCuirass

String FilePath = (Game.GetForm(0x00012E49) as Armor).GetModelPath(False)

; Returns "Armor\Iron\Male\CuirassLightGND.nif"

5 models (one for each spell skill subsection(novice, master, ect)), with the possible addition of 2-5 necromancer robes for this purpose (clearly, dangerous necromancer if wearing robes with a skull on them... ) and/or  2-5 robe models (blue robes, black robes, archmage robes) * 2 for each gender

 

Still a little much to check for, and it doesn't include possible 3rd party wizard robes, but it's closer to an acceptable number, will probably use this as a backup if I don't find something better.

I think there are only something like four models for mage robes. Apprentice, Journeyman, Necromancer, and Warlock, and everything else is just a texture set override.

 

Sorry that went over my head since I normally don't work with assets, NIF is the mesh not the texture, right?

 

I'm pretty sure there are at least two more models you missed, arch mage and one of the robes has a hood, but you might be right, if they really are just recolored from novice->apprentice->adept that reduces the range pretty significantly.

 

We still need to double for the two genders though, and while I imagine the string comparison is slow like in any language, string compare lets me avoid mod dependency so I could even check against DLC robes, so there are still going to be over 10 string compares, more than I would like but could be manageable.

 

Edit: So if the user has a mod that changes the robes so that there is more variety, not the HD textures but completely different robes, do I just throw those users under the bus? I'm not even sure there is such a mod, but I can't help but think there HAS to be a better and faster way to identify robes that the game uses for the dialogue.

Link to comment

 

I think there are only something like four models for mage robes. Apprentice, Journeyman, Necromancer, and Warlock, and everything else is just a texture set override.

Sorry that went over my head since I normally don't work with assets, NIF is the mesh not the texture, right?

 

I'm pretty sure there are at least two more models you missed, arch mage and one of the robes has a hood, but you might be right, if they really are just recolored from novice->apprentice->adept that reduces the range pretty significantly.

 

We still need to double for the two genders though, and while I imagine the string comparison is slow like in any language, string compare lets me avoid mod dependency so I could even check against DLC robes, so there are still going to be over 10 string compares, more than I would like but could be manageable.

 

Edit: So if the user has a mod that changes the robes so that there is more variety, not the HD textures but completely different robes, do I just throw those users under the bus? I'm not even sure there is such a mod, but I can't help but think there HAS to be a better and faster way to identify robes that the game uses for the dialogue.

 

Yeah, I missed the Archmage model. GetModelPath returns the model in the armor itself (the one seen in the menus or when the item is dropped) and not the one specified by ArmorAddons (the one seen when the item is actually equipped). I'm not sure which item actually has the hood and torso as one piece, so I can't check, but I would assume the hooded version of the robe and the non-hooded version would re-use the same ground model, meaning the hood itself would be an ArmorAddon and GetModelPath would return the same for either. I would also assume at least some of the armor replacers that redirect the meshes completely wouldn't actually be changing the base/world/ground models, only the equipped versions, so hopefully that wouldn't be a problem. And there's no need to make a separate check for male and female sense the function has an argument that controls that; the example you were given will return the male path every time (using True at the end instead of False gets the female path).

 

Anyway, I just now actually read what you were looking for earlier and the dialogue you're talking about is probably WICommentCollegeRobesHello, FID A85FE. No conditions on the topics themselves other than VoiceType, so I suppose the scripts must be doing something about it. TIF__000ABC35, 54, 7D, 7E, 80, and 82.

Link to comment

I think there are only something like four models for mage robes. Apprentice, Journeyman, Necromancer, and Warlock, and everything else is just a texture set override.

Sorry that went over my head since I normally don't work with assets, NIF is the mesh not the texture, right?

 

I'm pretty sure there are at least two more models you missed, arch mage and one of the robes has a hood, but you might be right, if they really are just recolored from novice->apprentice->adept that reduces the range pretty significantly.

 

We still need to double for the two genders though, and while I imagine the string comparison is slow like in any language, string compare lets me avoid mod dependency so I could even check against DLC robes, so there are still going to be over 10 string compares, more than I would like but could be manageable.

 

Edit: So if the user has a mod that changes the robes so that there is more variety, not the HD textures but completely different robes, do I just throw those users under the bus? I'm not even sure there is such a mod, but I can't help but think there HAS to be a better and faster way to identify robes that the game uses for the dialogue.

 

Yeah, I missed the Archmage model. GetModelPath returns the model in the armor itself (the one seen in the menus or when the item is dropped) and not the one specified by ArmorAddons (the one seen when the item is actually equipped). I'm not sure which item actually has the hood and torso as one piece, so I can't check, but I would assume the hooded version of the robe and the non-hooded version would re-use the same ground model, meaning the hood itself would be an ArmorAddon and GetModelPath would return the same for either. I would also assume at least some of the armor replacers that redirect the meshes completely wouldn't actually be changing the base/world/ground models, only the equipped versions, so hopefully that wouldn't be a problem. And there's no need to make a separate check for male and female sense the function has an argument that controls that; the example you were given will return the male path every time (using True at the end instead of False gets the female path).

 

Anyway, I just now actually read what you were looking for earlier and the dialogue you're talking about is probably WICommentCollegeRobesHello, FID A85FE. No conditions on the topics themselves other than VoiceType, so I suppose the scripts must be doing something about it. TIF__000ABC35, 54, 7D, 7E, 80, and 82.

 

Oh that's really useful, I'll check it out tomorrow.

 

Thanks for the help!

Link to comment

I was going to read through all this, but then figured it would be easier to just bring it up. I understand people who don't use Death Alternative have issues when using this mod with Simple Slavery. Could someone provide details?

 

Also, why didn't you tell me? I can easily make a form of SS that doesn't have a DA hook.

Link to comment

I've sometimes noticed this message in the console when DE stops working: [CRDE] Player does not have prison overhaul or patch

I have both installed. 

 

Being the last thing on the list is odd, but the message itself shouldn't show for you that is correct, both modLoadedPrisonOverhaul and modLoadedPrisonOverhaulPatch must be false.

 

I did change the way they were detected in 10.0.1 but they worked for me, are they lower in the load order than DE by any chance?

 

I was going to read through all this, but then figured it would be easier to just bring it up. I understand people who don't use Death Alternative have issues when using this mod with Simple Slavery. Could someone provide details?

 

Also, why didn't you tell me? I can easily make a form of SS that doesn't have a DA hook.

 

http://www.loverslab.com/topic/40916-deviously-enslaved-v104-1715/page-29?do=findComment&comment=1244225

 

I haven't seen ebondream in a long time, but normally I assume that when I try to build a connection into a mod without instruction, and it fails in some way, that it's because I did something wrong and that there is already a correct way to do it, so I put it on my todo list (which has become a blackhole) and moved on to fixing the other bugs that didn't have workarounds and needed my more immediate attention, then my bad memory made me forget about it.

 

Making a DA-less version seems a bit extreme though... the error is caused by DE starting the quest by calling:

 

(Quest.getQuest("SSLV_DAInt") as SSLV_DAIntScript).QuestStart(none, none, none)

 

So I assumed the problem was that the VM couldn't find DA type daymoyl_QuestTemplate when it tried to start the quest.

 

Assuming quests that inherit from daymoyl_QuestTemplate cannot be created/started without DA installed, which I haven't really tested I'm just assuming, then you could probably just move the quest script code to a general quest and make the DA_quest call/start the general quest, that way the DA_quest failing to be used doesn't stop the quest from working. If I'm wrong, and daymoyl_QuestTemplate quests can start just not by my mod for some reason, an event alternative should be all that is needed.

 

You mentioned moving the character to a marker, something I had never actually considered and haven't tried that yet.

Link to comment

I understand the to-do black hole! Making a non DA version is simplicity itself - I'll just delete the script you mentioned. That will be good for other mods that want to connect to SS but that don't use DA. I know lots of people find DA causes problems (although I find it to be very stable these days), so it will be a win-win.

Link to comment

So installed the new 10.0.01. Good news, MCM is back and mod is working. Bad news, its making a mess of the papyrus. Here are a few samples from tjhe papyrus of a new game played for about 30 mins, these are the two main types of error. papyrus is 30 megs, which is far larger than it should be, almsot all of it are CRDE messages.

 

 
[10/08/2015 - 11:34:18PM] warning: Property iSexEventDevice on script crdemcmscript attached to crdeMCM (7E00BF4F) cannot be initialized because the script no longer contains that property
[10/08/2015 - 11:34:18PM] warning: Property iWeightCursedCollar on script crdemcmscript attached to crdeMCM (7E00BF4F) cannot be initialized because the script no longer contains that property
[10/08/2015 - 11:34:18PM] warning: Property iSexEventKey on script crdemcmscript attached to crdeMCM (7E00BF4F) cannot be initialized because the script no longer contains that property
[10/08/2015 - 11:34:18PM] warning: Property bVulnerableCollar on script crdemcmscript attached to crdeMCM (7E00BF4F) cannot be initialized because the script no longer contains that property
 
 

 

[crdePlayerMonitor (7E001827)].crdeplayermonitorscript.OnUpdate() - "crdeplayermonitorscript.psc" Line 109
[10/09/2015 - 12:17:59AM] warning: Assigning None to a non-object variable named "::temp0"
stack:
[crdePlayerMonitor (7E001827)].crdeplayermonitorscript.OnUpdate() - "crdeplayermonitorscript.psc" Line 109
[10/09/2015 - 12:17:59AM] ERROR: Property fEventInterval not found on crdemcmscript. Aborting call and returning None
stack:
[crdePlayerMonitor (7E001827)].crdeplayermonitorscript.OnUpdate() - "crdeplayermonitorscript.psc" Line 112
[10/09/2015 - 12:17:59AM] warning: Assigning None to a non-object variable named "::temp1"
stack:
[crdePlayerMonitor (7E001827)].crdeplayermonitorscript.OnUpdate() - "crdeplayermonitorscript.psc" Line 112
[10/09/2015 - 12:17:59AM] ERROR: Property bCRDEEnable not found on crdemcmscript. Aborting call and returning None
stack:
[crdePlayerMonitor (7E001827)].crdeplayermonitorscript.OnUpdate() - "crdeplayermonitorscript.psc" Line 109
[10/09/2015 - 12:17:59AM] warning: Assigning None to a non-object variable named "::temp0"
stack:
[crdePlayerMonitor (7E001827)].crdeplayermonitorscript.OnUpdate() - "crdeplayermonitorscript.psc" Line 109
[10/09/2015 - 12:17:59AM] ERROR: Property fEventInterval not found on crdemcmscript. Aborting call and returning None
stack:
[crdePlayerMonitor (7E001827)].crdeplayermonitorscript.OnUpdate() - "crdeplayermonitorscript.psc" Line 112
[10/09/2015 - 12:17:59AM] warning: Assigning None to a non-object variable named "::temp1"
 
 
 
Link to comment

So installed the new 10.0.01. Good news, MCM is back and mod is working. Bad news, its making a mess of the papyrus. Here are a few samples from tjhe papyrus of a new game played for about 30 mins, these are the two main types of error. papyrus is 30 megs, which is far larger than it should be, almsot all of it are CRDE messages.

 
[10/08/2015 - 11:34:18PM] warning: Property iSexEventDevice on script crdemcmscript attached to crdeMCM (7E00BF4F) cannot be initialized because the script no longer contains that property
[10/08/2015 - 11:34:18PM] warning: Property iWeightCursedCollar on script crdemcmscript attached to crdeMCM (7E00BF4F) cannot be initialized because the script no longer contains that property
[10/08/2015 - 11:34:18PM] warning: Property iSexEventKey on script crdemcmscript attached to crdeMCM (7E00BF4F) cannot be initialized because the script no longer contains that property
[10/08/2015 - 11:34:18PM] warning: Property bVulnerableCollar on script crdemcmscript attached to crdeMCM (7E00BF4F) cannot be initialized because the script no longer contains that property

 

[crdePlayerMonitor (7E001827)].crdeplayermonitorscript.OnUpdate() - "crdeplayermonitorscript.psc" Line 109
[10/09/2015 - 12:17:59AM] warning: Assigning None to a non-object variable named "::temp0"
stack:
[crdePlayerMonitor (7E001827)].crdeplayermonitorscript.OnUpdate() - "crdeplayermonitorscript.psc" Line 109
[10/09/2015 - 12:17:59AM] ERROR: Property fEventInterval not found on crdemcmscript. Aborting call and returning None
stack:
[crdePlayerMonitor (7E001827)].crdeplayermonitorscript.OnUpdate() - "crdeplayermonitorscript.psc" Line 112
[10/09/2015 - 12:17:59AM] warning: Assigning None to a non-object variable named "::temp1"
stack:
[crdePlayerMonitor (7E001827)].crdeplayermonitorscript.OnUpdate() - "crdeplayermonitorscript.psc" Line 112
[10/09/2015 - 12:17:59AM] ERROR: Property bCRDEEnable not found on crdemcmscript. Aborting call and returning None
stack:
[crdePlayerMonitor (7E001827)].crdeplayermonitorscript.OnUpdate() - "crdeplayermonitorscript.psc" Line 109
[10/09/2015 - 12:17:59AM] warning: Assigning None to a non-object variable named "::temp0"
stack:
[crdePlayerMonitor (7E001827)].crdeplayermonitorscript.OnUpdate() - "crdeplayermonitorscript.psc" Line 109
[10/09/2015 - 12:17:59AM] ERROR: Property fEventInterval not found on crdemcmscript. Aborting call and returning None
stack:
[crdePlayerMonitor (7E001827)].crdeplayermonitorscript.OnUpdate() - "crdeplayermonitorscript.psc" Line 112
[10/09/2015 - 12:17:59AM] warning: Assigning None to a non-object variable named "::temp1"

 

Getting some "warning: Assigning None to a non-object variable named "::temp1"" errors are normal and they don't normally cause any problems, but I've never seen one be called for those lines in that script.

 

Several properties on MCM don't seem to exist, suggests a corrupted or missing MCM script, you could try redownloading in the event your download got corrupted somehow, if the upload was corrupt I would have expected several users to show up with these errors before now.

 

Are you sure there aren't any more lines at the top of the log that match the filter "crde"? Giving me any errors found above that first line, something like "Cannot open store for class "pchswolfclubdaymoyl", missing file?" or similar might tell me more.

 

Otherwise this is a completely new bug to me, never seen this and not sure what would cause it if not for corrupt mcm script.

 

Double checking here, but this is a clean save right?

Link to comment

 

Can someone else check their game for suspended stacks relating to crde. 

tkr2euT.jpg

 

Most of them seem to be "crdeSexStartCatch" which I believe is something to do with the "Trigger after all sex" setting? Which I have enabled. 

Edit: I did update from 10.0 to 10.1 today without clean saving so MAYBE that's the problem

 

Is that savetool? I've never seen a stack analysis function for it before, is that new? I haven't updated in a few months...

 

I'll test my own saves later, if DE is flooding the stack that would explain stackdumps with Mia's lair, although I have no idea why the sexcatch hook wouldn't pop off of the stack.

 

The event is called every time sexlab starts, it's what we use to stop approaches if some other mod starts sex with the player, so the approacher doesn't interupt us.We also trigger the post sex code for devices/enslavement after sex from there.

 

That function should pop off the stack as soon as it's finished though...

 

 

Does anyone know how the game detects if you're wearing a wizard robe from the college? I haven't found the dialogue in CK, but I want to use the same detection as a weapon protection (if the player is wearing a wizard robe, should be considered as dangerous as a sword in my opinion, since EVERYONE in skyrim knows about those robes)

 

I'm no modder and don't know what this returns exactly but would this work:

 

GetWornForm - Actor

Returns the form of the item worn with the specified slotMask. (This function requires SKSE)
 
Form Function GetWornForm(int slotMask) native
 
; Obtain the player's currently equipped cuirass
Armor Cuirass = Game.GetPlayer().GetWornForm(0x00000004) as Armor
 

 

Yeah that works for one armor, but there are at least ~30 armors in the vanillia game that count as college wizard robes (since all the varients (destruction, illusion, ect) are different forms)

 

Maybe the game engine can get away with checking if the player is wearing one of ~30 forms but that's too heavy for papyrus, especially DE which is already too heavy. I was expecting a keyword or something but couldn't find it.

 

 

You could dump the variants in a formlist (assuming one doesn't already exist - it may do) and then:

 

 bool WearingMageArmor =  MageArmorformlist.hasform(Game.GetPlayer().GetWornForm(0x00000003) as Armor)

 

Shouldn't be particularly resource hungry...

Link to comment

Clean save, also, as I said, this was a sample/ There are a LOT more lines with CRDE. more than 50,000 instances of CRDE (using count) in fact. I've always had an issue with DE throwing Stacks at me, but this is a new high.

 

I never get replicable stackdumps outside of one part of Mia's lair, you shouldn't be getting them all the time.

 

As I understand stackdumps, they shouldn't cause the errors you get which seem to be caused from a loaded script not having variables loaded to it. From just the parts you've shown me I can't pinpoint what could cause that other than a corrupt mcm script file.

 

I also saw that same po issue i didn't test it though i was only ingame to test my latest armor conversion.

Ditto.

 

I've even gotten PO/POx not installed debug spam in my console while a POx scene was running.

 

I'm hearing it but I don't believe it, I'm using the same method for detection those two mods that I use for detection any other mod.

 

Maybe, if you loaded a save during a papyrus heavy segment while PO is active, since DE re-detects mods when you load a new save, the PO esp might not have been loaded yet, but the only thing I could think to help that would be delaying DE mod detection longer, and that's just a stopgap.

 

I'll double check tonight, but if I don't find anything I might have to revert to the far slower alternate method of looking up the esp sequentially as a work around.

 

Can someone else check their game for suspended stacks relating to crde. 

tkr2euT.jpg

 

Most of them seem to be "crdeSexStartCatch" which I believe is something to do with the "Trigger after all sex" setting? Which I have enabled. 

Edit: I did update from 10.0 to 10.1 today without clean saving so MAYBE that's the problem

 

Is that savetool? I've never seen a stack analysis function for it before, is that new? I haven't updated in a few months...

 

I'll test my own saves later, if DE is flooding the stack that would explain stackdumps with Mia's lair, although I have no idea why the sexcatch hook wouldn't pop off of the stack.

 

The event is called every time sexlab starts, it's what we use to stop approaches if some other mod starts sex with the player, so the approacher doesn't interupt us.We also trigger the post sex code for devices/enslavement after sex from there.

 

That function should pop off the stack as soon as it's finished though...

 

 

Does anyone know how the game detects if you're wearing a wizard robe from the college? I haven't found the dialogue in CK, but I want to use the same detection as a weapon protection (if the player is wearing a wizard robe, should be considered as dangerous as a sword in my opinion, since EVERYONE in skyrim knows about those robes)

 

I'm no modder and don't know what this returns exactly but would this work:

 

GetWornForm - Actor

Returns the form of the item worn with the specified slotMask. (This function requires SKSE)
 
Form Function GetWornForm(int slotMask) native
 
; Obtain the player's currently equipped cuirass
Armor Cuirass = Game.GetPlayer().GetWornForm(0x00000004) as Armor

 

Yeah that works for one armor, but there are at least ~30 armors in the vanillia game that count as college wizard robes (since all the varients (destruction, illusion, ect) are different forms)

 

Maybe the game engine can get away with checking if the player is wearing one of ~30 forms but that's too heavy for papyrus, especially DE which is already too heavy. I was expecting a keyword or something but couldn't find it.

 

 

You could dump the variants in a formlist (assuming one doesn't already exist - it may do) and then:

 

 bool WearingMageArmor =  MageArmorformlist.hasform(Game.GetPlayer().GetWornForm(0x00000003) as Armor)

 

Shouldn't be particularly resource hungry...

 

I've never used formlists, always arrays of forms instead, but since I can't really see how the engine balances load for something like searching through a data structure, I can't rule out that searching a form list is faster since they could have used an internal function for it.

 

I'll add this as a potential solution as well, thanks for the suggestion.

Link to comment

 

Clean save, also, as I said, this was a sample/ There are a LOT more lines with CRDE. more than 50,000 instances of CRDE (using count) in fact. I've always had an issue with DE throwing Stacks at me, but this is a new high.

 

I never get replicable stackdumps outside of one part of Mia's lair, you shouldn't be getting them all the time.

 

As I understand stackdumps, they shouldn't cause the errors you get which seem to be caused from a loaded script not having variables loaded to it. From just the parts you've shown me I can't pinpoint what could cause that other than a corrupt mcm script file.

 

I also saw that same po issue i didn't test it though i was only ingame to test my latest armor conversion.

Ditto.

 

I've even gotten PO/POx not installed debug spam in my console while a POx scene was running.

 

I'm hearing it but I don't believe it, I'm using the same method for detection those two mods that I use for detection any other mod.

 

Maybe, if you loaded a save during a papyrus heavy segment while PO is active, since DE re-detects mods when you load a new save, the PO esp might not have been loaded yet, but the only thing I could think to help that would be delaying DE mod detection longer, and that's just a stopgap.

 

I'll double check tonight, but if I don't find anything I might have to revert to the far slower alternate method of looking up the esp sequentially as a work around.

 

Can someone else check their game for suspended stacks relating to crde. 

tkr2euT.jpg

 

Most of them seem to be "crdeSexStartCatch" which I believe is something to do with the "Trigger after all sex" setting? Which I have enabled. 

Edit: I did update from 10.0 to 10.1 today without clean saving so MAYBE that's the problem

 

Is that savetool? I've never seen a stack analysis function for it before, is that new? I haven't updated in a few months...

 

I'll test my own saves later, if DE is flooding the stack that would explain stackdumps with Mia's lair, although I have no idea why the sexcatch hook wouldn't pop off of the stack.

 

The event is called every time sexlab starts, it's what we use to stop approaches if some other mod starts sex with the player, so the approacher doesn't interupt us.We also trigger the post sex code for devices/enslavement after sex from there.

 

That function should pop off the stack as soon as it's finished though...

 

 

Does anyone know how the game detects if you're wearing a wizard robe from the college? I haven't found the dialogue in CK, but I want to use the same detection as a weapon protection (if the player is wearing a wizard robe, should be considered as dangerous as a sword in my opinion, since EVERYONE in skyrim knows about those robes)

 

I'm no modder and don't know what this returns exactly but would this work:

 

GetWornForm - Actor

Returns the form of the item worn with the specified slotMask. (This function requires SKSE)
 
Form Function GetWornForm(int slotMask) native
 
; Obtain the player's currently equipped cuirass
Armor Cuirass = Game.GetPlayer().GetWornForm(0x00000004) as Armor

 

Yeah that works for one armor, but there are at least ~30 armors in the vanillia game that count as college wizard robes (since all the varients (destruction, illusion, ect) are different forms)

 

Maybe the game engine can get away with checking if the player is wearing one of ~30 forms but that's too heavy for papyrus, especially DE which is already too heavy. I was expecting a keyword or something but couldn't find it.

 

 

You could dump the variants in a formlist (assuming one doesn't already exist - it may do) and then:

 

 bool WearingMageArmor =  MageArmorformlist.hasform(Game.GetPlayer().GetWornForm(0x00000003) as Armor)

 

Shouldn't be particularly resource hungry...

 

I've never used formlists, always arrays of forms instead, but since I can't really see how the engine balances load for something like searching through a data structure, I can't rule out that searching a form list is faster since they could have used an internal function for it.

 

I'll add this as a potential solution as well, thanks for the suggestion.

 

 

Pretty sure I read somewhere that arrays are quicker than formlists, i'll see if I can find the article  - If it is true and  speed really is of the essence then (assuming a relevant formlist exists) - maybe copy the forms into array at Mod Init?

Link to comment

10.0.2 is a testing release, some of the new changes are untested, I'm just throwing this out to see if it fixes the POx issue for users who have it, and/or the last wolfclub fix attempt before I consider removing it from the mod (at that point, it will be almost 100% what it was back in 9.7.5, when it was reported working by most people)

 

FIgured I would rather throw this out for users to play with over the weekend now so they can test it on their own time, faster.

Deviously Enslaved Unofficial(v10.0.2 full untested).7z

Link to comment

10.0.2 is a testing release, some of the new changes are untested, I'm just throwing this out to see if it fixes the POx issue for users who have it, and/or the last wolfclub fix attempt before I consider removing it from the mod (at that point, it will be almost 100% what it was back in 9.7.5, when it was reported working by most people)

 

FIgured I would rather throw this out for users to play with over the weekend now so they can test it on their own time, faster.

 

Haven't played, but have installed 10.0.2 or three cleaned saves with different characters without the wolfclub scripts and the mcm showed up immediately in all three. It showed up in the console in all three. With a little luck, will play this weekend.

 

Link to comment

I haven't tested it yet, but I'm sure DE will not work with the new Simple slavery version that doesn't require DA, since DE uses that quest to start it.

 

For now, stick with the DA version and install DA but leave the esp off if you don't want DA but you do want to play with SS through DE, I'll see if I can implement the other way to start simple slavery for the next release.

Link to comment

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...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more information, see our Privacy Policy & Terms of Use