Jump to content

Issue updating Quest Script for Dialogue - Skooma Bear


Recommended Posts

So I recently decided to incorporate the Hearthfire content, Dragonborn content, and the ability to set a custom house for Sniffs the Skooma Bear. (I am also going to reduce the volume of Sniffs, but that is not why I am here) I have run into an issue of the Dialogue fragments not updating properly to reflect the changes in the quest script (haven't fooled around with dialogue scripts too much outside of basics, so it might be something stupid on my part).

 

So the original quest script (should look somewhat similar to the MarriageQuestMoveHouseScript [prob the wrong name, but you will get the idea], this is an old script from when I was newer to modding):

Scriptname AJDCompanionHouseScript extends Quest  

ReferenceAlias Property SolitudeHouse  Auto  
ReferenceAlias Property WindhelmHouse  Auto  
ReferenceAlias Property MarkarthHouse  Auto  
ReferenceAlias Property RiftenHouse  Auto  
ReferenceAlias Property WhiterunHouse  Auto  
ReferenceAlias Property SpouseHouse  Auto  
ReferenceAlias Property WhiterunBarReference  Auto  
ReferenceAlias Property WhiterunBarHouse  Auto  
ReferenceAlias Property StayHereHouse  Auto  

Function MoveCompanion (Actor Companion, ReferenceAlias NewHouse)
	;Function puts the player companion in the correct alias to sandbox in the appropriate house
	;Clear all the other house aliases before setting the new one
	
	If SolitudeHouse
		SolitudeHouse.Clear()
	EndIf

	If WindhelmHouse
		WindhelmHouse.Clear()
	EndIf

	If MarkarthHouse
		MarkarthHouse.Clear()
	EndIf

	If RiftenHouse	
		RiftenHouse.Clear()
	EndIf

	If WhiterunHouse
		WhiterunHouse.Clear()
	EndIf

	If FollowHouse
		FollowHouse.Clear()
	EndIf

	If WhiterunBarHouse
		WhiterunBarHouse.Clear()
	EndIf

	If StayHereHouse
		StayHereHouse.Clear()
	EndIf

	NewHouse.ForceRefTo(Companion)
	
EndFunction

Function SpouseShop (Actor Spouse)
	;Function checks to see if the player was a vendor before, if not, make them a MiscVendor
EndFunction

ReferenceAlias Property FollowHouse  Auto  

Here is the new iteration of the script:

Scriptname AJDCompanionHouseScript extends Quest  

ReferenceAlias Property SolitudeHouse  Auto  
ReferenceAlias Property WindhelmHouse  Auto  
ReferenceAlias Property MarkarthHouse  Auto  
ReferenceAlias Property RiftenHouse  Auto  
ReferenceAlias Property WhiterunHouse  Auto  
ReferenceAlias Property SpouseHouse  Auto  
ReferenceAlias Property WhiterunBarReference  Auto  
ReferenceAlias Property WhiterunBarHouse  Auto  
ReferenceAlias Property StayHereHouse  Auto  

Function MoveCompanion (Actor Companion, ReferenceAlias NewHouse)
	;Function puts the player companion in the correct alias to sandbox in the appropriate house
	;Clear all the other house aliases before setting the new one
	
	;Your solitude house
	If SolitudeHouse
		SolitudeHouse.Clear()
	EndIf

	;Your windhelm house
	If WindhelmHouse
		WindhelmHouse.Clear()
	EndIf

	;Your markarth house
	If MarkarthHouse
		MarkarthHouse.Clear()
	EndIf

	;Your riften house
	If RiftenHouse	
		RiftenHouse.Clear()
	EndIf

	;Your whiterun house
	If WhiterunHouse
		WhiterunHouse.Clear()
	EndIf

	;Sniffs follower package
	If FollowHouse
		FollowHouse.Clear()
	EndIf

	;The Bannered Mare
	If WhiterunBarHouse
		WhiterunBarHouse.Clear()
	EndIf

	;Sniffs stay here package
	If StayHereHouse
		StayHereHouse.Clear()
	EndIf

	;Falkreath Lakeview house
	If BYOHLakeviewHouse
		BYOHLakeviewHouse.Clear()
	EndIf

	;Morthal Windstad house
	If BYOHWindstadHouse
		BYOHWindstadHouse.Clear()
	EndIf

	;Dawnstar Heljarchen house
	If BYOHHeljarchenHouse
		BYOHHeljarchenHouse.Clear()
	EndIf

	;Raven Rock Severin House
	If DLC2SeverinHouse
		DLC2SeverinHouse.Clear()
	EndIf

	;Your custom house
	If CustomHouse
		CustomHouse.Clear()
	EndIf

	NewHouse.ForceRefTo(Companion)
	
EndFunction

;This function is designed to replace the current location of the custom house
;WARNING Only one custom house at a time
;2nd WARNING You might lose Sniffs if the custom house is removed while he is inside
Function MoveMarker()
	AJDSkoomaBearCustomHouseMarker.MoveTo(AJDSniffs)
EndFunction

Function SpouseShop (Actor Spouse)
	;Function checks to see if the player was a vendor before, if not, make them a MiscVendor
EndFunction

ReferenceAlias Property FollowHouse  Auto  

ReferenceAlias Property BYOHLakeviewHouse  Auto  

ReferenceAlias Property BYOHHeljarchenHouse  Auto  

ReferenceAlias Property BYOHWindstadHouse  Auto  

ReferenceAlias Property DLC2SeverinHouse  Auto  

ReferenceAlias Property CustomHouse  Auto  

ObjectReference Property AJDSkoomaBearCustomHouseMarker  Auto  

ObjectReference Property AJDSniffs  Auto  

The quest itself uses the Story Manager, and has an event node under Script Events in the SM Event Node sub-category. In the quest stage for this quest, I use the line, with kmyquest as AJDCompanionHouseScript:

kmyquest.SpouseShop(Alias_Sniffs.GetActorRef())

For the dialogue options for the various follower options (Go to the bar, Go to my Whiterun House, etc.), I used the End script fragment (replace FollowHouse with the other ReferenceAlias listed in the quest):

(GetOwningQuest() as AJDCompanionHouseScript).MoveCompanion(akspeaker, FollowHouse)

The original fragments are keeping the original references and have not updated to reflect the new references. The problem comes in when I introduced the Hearthfire, Dragonborn, and Custom House logic in the mix. The new fragments do not recognize the ReferenceAliases from AJDCompanionHouseScript.

 

Edit:

I can call MoveMarker() without any issues. Also just remembered it would be helpful to see the ReferenceAliases:

https://dl-web.dropbox.com/get/public%20share/wthsniffs/referencealiases.png?_subject_uid=41308520&w=AABcD_QXle2mtGzKNkHbLxl1HJLXIPlO_L2BF1oZeO0nDA

 

Anyone have an idea on how to tackle this problem?

Edited by Arron Dominion
Link to comment
Share on other sites

I decided to bypass the issue (still have no clue why it is thrashing at the changes, and not giving the fragments the reference aliases in the case of the newer aliases to the old fragments, and any aliases to the new fragments). Here is the resulting function I decided to use instead:

;This function is designed to replace the current MoveCompanion script with numeric input instead of ReferenceAlias input
Function MoveCompanionInt(Actor Companion, Int Choice)
		;Function puts the player companion in the correct alias to sandbox in the appropriate house
	;Clear all the other house aliases before setting the new one
	
	;Your solitude house
	If SolitudeHouse
		SolitudeHouse.Clear()
	EndIf

	;Your windhelm house
	If WindhelmHouse
		WindhelmHouse.Clear()
	EndIf

	;Your markarth house
	If MarkarthHouse
		MarkarthHouse.Clear()
	EndIf

	;Your riften house
	If RiftenHouse	
		RiftenHouse.Clear()
	EndIf

	;Your whiterun house
	If WhiterunHouse
		WhiterunHouse.Clear()
	EndIf

	;Sniffs follower package
	If FollowHouse
		FollowHouse.Clear()
	EndIf

	;The Bannered Mare
	If WhiterunBarHouse
		WhiterunBarHouse.Clear()
	EndIf

	;Sniffs stay here package
	If StayHereHouse
		StayHereHouse.Clear()
	EndIf

	;Falkreath Lakeview house
	If BYOHLakeviewHouse
		BYOHLakeviewHouse.Clear()
	EndIf

	;Morthal Windstad house
	If BYOHWindstadHouse
		BYOHWindstadHouse.Clear()
	EndIf

	;Dawnstar Heljarchen house
	If BYOHHeljarchenHouse
		BYOHHeljarchenHouse.Clear()
	EndIf

	;Raven Rock Severin House
	If DLC2SeverinHouse
		DLC2SeverinHouse.Clear()
	EndIf

	;Your custom house
	If CustomHouse
		CustomHouse.Clear()
	EndIf
	
	;;;;;;;;;;;;;;;;;;;;;;;
	;Choice logic
	;0 - Solitude
	;1 - Windhelm
	;2 - Markarth
	;3 - Riften
	;4 - Whiterun
	;5 - Follow
	;6 - Bannered Mare
	;7 - Stay Here
	;8 - Lakeview
	;9 - Windstad
	;10 - Heljarchen
	;11 - Severin
	;12 - Custom
	;;;;;;;;;;;;;;;;;;;;;;;
	if Choice == 0
		SolitudeHouse.ForceRefTo(Companion)
	ElseIf Choice == 1
		WindhelmHouse.ForceRefTo(Companion)
	ElseIf Choice == 2
		MarkarthHouse.ForceRefTo(Companion)
	ElseIf Choice == 3
		RiftenHouse.ForceRefTo(Companion)
	ElseIf Choice == 4
		WhiterunHouse.ForceRefTo(Companion)
	ElseIf Choice == 5
		FollowHouse.ForceRefTo(Companion)
	ElseIf Choice == 6
		WhiterunBarHouse.ForceRefTo(Companion)
	ElseIf Choice == 7
		StayHereHouse.ForceRefTo(Companion)
	ElseIf Choice == 8
		BYOHLakeviewHouse.ForceRefTo(Companion)
	ElseIf Choice == 9
		BYOHWindstadHouse.ForceRefTo(Companion)
	ElseIf Choice == 10
		BYOHHeljarchenHouse.ForceRefTo(Companion)
	ElseIf Choice == 11
		DLC2SeverinHouse.ForceRefTo(Companion)
	Else
		CustomHouse.ForceRefTo(Companion)
	EndIf	
EndFunction

I can move forward on the changes to the mod. I wish I understood what was going on in the original form of the function (did the Creation Kit thrash because the mod had cached data from its release that my system did not have anymore due to the cloud sync bug, or did I goof somewhere).

Link to comment
Share on other sites

  • Recently Browsing   0 members

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