Uvirith's Legacy Bug: Almossaren's Disposition

Post » Fri Feb 14, 2014 9:26 am

So according to the latest change logs for Uvirith's Legacy, a new script was added to synchronize the dispositions of the two versions of Almossaren: the one that is "asleep" and the one in the storage room. However, the script appears to have caused something funky. For whatever reason, both version of Almossaren have been stuck at 0 disposition, despite having a starting disposition of 50 in the construction set. I have no clue why this is.

At first, I thought it was due to Almossaren being added to a different faction by accident (i.e. House Hlaalu), but I couldn't find any dialog that added him to any faction.

Here's the full script for the "sleeping" version of Almossaren. The script for the one at work does not contain any demands that affect disposition, so I don't think that one is the culprit.

Begin Uvi_Almossaren_Bed; NPC Almossaren appears in your lower tower when he is off duty.Short NoLoreShort doOnceShort state ;set in dialogue, enables/disables shipmentsShort DispShort FirstGreetingShort FlagShort emb_hook_nominionShort ULNPCIDShort MossaknownShort WellClothedShort DispSet ULNPCID to 2Set emb_hook_nominion to 1 	;makes sure this version cannot become a vampire using VE.If ( doOnce == 0 )	Disable	Set doOnce to 1	ReturnEndifIf ( CellChanged )	Set Flag to 1	ReturnElseif ( GetPCSleep )	Set Flag to 1	ReturnElseif ( MenuMode )	If ( GetDisposition != Disp )		Set Disp to GetDisposition		almossaren->SetDisposition Disp	Endif	ReturnEndifIf ( GetDeadCount almossaren > 0 ) ;syncronize with almossaren	If ( GetDisabled == 0 )		Disable	Endif	ReturnEndifIf ( uvi_schedulesOff == 1 ) ;disables schedules for essential NPCs	If ( GetDisabled == 0 )		Disable	Endif	ReturnEndifIf ( Flag == 0 )	ReturnEndifIf ( GetJournalIndex HT_StrongholdMaintenance < 30 )	Disable	Set Flag to 0	ReturnElseIf ( GetJournalIndex HT_StrongholdMaintenance == 35 )	Disable	Set Flag to 0	ReturnElseif ( GetJournalIndex HT_StrongholdMaintenance == 100 )	Disable	Set Flag to 0	ReturnEndIfIf ( GetJournalIndex HT_UvirithCookies == 90 )	If ( GetJournalIndex HT_UvirithCookies < 110 )		Disable		Set Flag to 0		Return	EndifEndifIf ( uvi_Almos_vampire == 1 ) ;disable if vampire	Disable	Set Flag to 0	ReturnEndifIf ( GameHour < 8 ) ;sleeping	EnableElseif ( Gamehour < 18 ) ;working	DisableElseif ( GameHour < 19 ) ;eating	EnableElseif ( GameHour < 24 ) ;working	DisableElseif ( GameHour >= 24 ) ;sleeping	EnableEndifSet Disp to ( almossaren->GetDisposition )SetDisposition DispSet Flag to 0End

Both versions of Almossaren have a "starting" disposition of 50. Thus, I could understand why both versions' dispositions might be stuck at 50, but not 0. My best guess is that using getDisposition for an npc that is disabled might return 0, and that may be what's causing the error. That, or my meeting the sleeping version of Almossaren first, before the working one was ever generated, might have screwed things up.

Thoughts?

User avatar
Fiori Pra
 
Posts: 3446
Joined: Thu Mar 15, 2007 12:30 pm

Post » Fri Feb 14, 2014 12:15 pm

I'd try setting both NPC disposition at 50 from console, and changing the code e.g. like this:
Elseif ( MenuMode )	If ( GetDisposition != Disp )		; Set Disp to GetDisposition		; almossaren->SetDisposition Disp		Set Disp to ( almossaren->GetDisposition )		SetDisposition Disp
User avatar
Albert Wesker
 
Posts: 3499
Joined: Fri May 11, 2007 11:17 pm

Post » Thu Feb 13, 2014 10:27 pm

Thanks abot! I'll give this a shot. This is intended to only go within the If(menu mode) loop, right?

also, will changing the script like this damage my save or will I be OK? Thanks!
User avatar
jessica sonny
 
Posts: 3531
Joined: Thu Nov 02, 2006 6:27 pm

Post » Fri Feb 14, 2014 8:05 am

yes, just those 2 lines to comment/replace

It's always better to make a backup copy of last save just in case.
It should be ok though, you are just changing 2 script lines.
If you are using some cell lights overhaul mod,
after saving from CS you may want to
tes3cmd.exe clean changed.esp
because the CS will re-add standard cell lights in modified cells

User avatar
Elizabeth Falvey
 
Posts: 3347
Joined: Fri Oct 26, 2007 1:37 am

Post » Fri Feb 14, 2014 2:21 am

Thanks abot!

I tried it and it sort of worked...I think. But the dispositions still don't exactly match. After some thinking, I'm worried it might have something to do with how the MCP or the game handles disposition generally.

I edited the script and, after reloading my save, set the dispositions of both Almossarens to 50 with the console. The one in the storage room wound up with a starting disposition of 42, and the sleeping one 34. In the past, I had used the "reward for service" topic to give storage room Almossaren gold, which raises his disposition by approximately 6-8 points (this cannot be done to the sleeping version), but this was done BEFORE I set both dispositions to 50. I'm guessing this somehow caused the discrepancy between the two anyway, but still don't understand why neither disposition was actually moved to 50. I had no spell effects modifying my personality or anything (nor did I have a weapon drawn at the time), so it's very strange. At least Almossaren doesn't hate me now though.

User avatar
Claudia Cook
 
Posts: 3450
Joined: Mon Oct 30, 2006 10:22 am

Post » Fri Feb 14, 2014 2:38 pm

uhm, I wonder if making things simpler would work better with other mods/patches changing disposition in dialog mode, e.g. update disposition only out of menu mode this way
Spoiler

Begin Uvi_Almossaren_Bed; NPC Almossaren appears in your lower tower when he is off duty.Short NoLoreShort doOnceShort state ;set in dialogue, enables/disables shipmentsShort DispShort FirstGreetingShort FlagShort emb_hook_nominionShort ULNPCIDShort MossaknownShort WellClothedShort DispSet ULNPCID to 2Set emb_hook_nominion to 1 	;makes sure this version cannot become a vampire using VE.If ( doOnce == 0 )	Disable	Set doOnce to 1	ReturnEndifIf ( CellChanged )	Set Flag to 1	ReturnElseif ( GetPCSleep )	Set Flag to 1	ReturnElseif ( MenuMode )	ReturnEndifIf ( GetDeadCount almossaren > 0 ) ;syncronize with almossaren	If ( GetDisabled == 0 )		Disable	Endif	ReturnEndifIf ( uvi_schedulesOff == 1 ) ;disables schedules for essential NPCs	If ( GetDisabled == 0 )		Disable	Endif	ReturnEndifIf ( Flag == 0 )	ReturnEndifIf ( GetJournalIndex HT_StrongholdMaintenance < 30 )	Disable	Set Flag to 0	ReturnElseIf ( GetJournalIndex HT_StrongholdMaintenance == 35 )	Disable	Set Flag to 0	ReturnElseif ( GetJournalIndex HT_StrongholdMaintenance == 100 )	Disable	Set Flag to 0	ReturnEndIfIf ( GetJournalIndex HT_UvirithCookies == 90 )	If ( GetJournalIndex HT_UvirithCookies < 110 )		Disable		Set Flag to 0		Return	EndifEndifIf ( uvi_Almos_vampire == 1 ) ;disable if vampire	Disable	Set Flag to 0	ReturnEndifIf ( GameHour < 8 ) ;sleeping	EnableElseif ( Gamehour < 18 ) ;working	DisableElseif ( GameHour < 19 ) ;eating	EnableElseif ( GameHour < 24 ) ;working	DisableElseif ( GameHour >= 24 ) ;sleeping	EnableEndifIf ( GetDisposition != Disp )	Set Disp to ( almossaren->GetDisposition )	SetDisposition DispendifSet Flag to 0End
[edit]some more changes
User avatar
Sabrina Schwarz
 
Posts: 3538
Joined: Fri Jul 14, 2006 10:02 am


Return to III - Morrowind