I have a custom voiced follower that is not commenting on player shouts, pickpocket attempts, corpse noticing and a few other dialogue topics under the misc tab. As soon as the follower is dismissed, the dialogue plays again. I found that this issue was also present in vanilla followers (I tested it with Uthgerd the Unbroken), however, other follower mods like Sofia don't have this issue. My follower is using a modified version of the vanilla follower script, and the vanilla follower package. The follower quest ha a global condition (GetIsID == Myfollower). Another small issue I am having is that packages sometimes don't have any effect. An example is the sleep package of a custom NPC. As soon as the package is within its schedule parameters, the NPC just stands completely still. Any help is appreciated! :smile: The modified version of the vanilla follower script that I used:
Scriptname NQFollowerScript extends Quest
Actor Property PlayerREF Auto
ReferenceAlias Property FollowerAlias Auto
Faction Property DismissedFollowerFaction Auto
Faction Property CurrentHireling Auto
Message Property FollowerDismissMessage Auto
Message Property FollowerDismissMessageWait Auto
SetHirelingRehire Property HirelingRehireScript Auto
Actor Property Ljaco Auto
;Property to tell follower to say dismissal line
Int Property iFollowerDismiss Auto Conditional
NQSindreFollowVar Property QS Auto
Armor Property Ring Auto
Armor Property RingUnplayable Auto
Quest Property lQuest Auto
Bool Updated
Function SetFollower(ObjectReference FollowerRef)
actor FollowerActor = FollowerRef as Actor
FollowerActor.RemoveFromFaction(DismissedFollowerFaction)
If FollowerActor.GetRelationshipRank(PlayerREF) <3 && FollowerActor.GetRelationshipRank(PlayerREF) >= 0
FollowerActor.SetRelationshipRank(PlayerREF, 3)
EndIf
FollowerActor.SetPlayerTeammate()
;FollowerActor.SetActorValue("Morality", 0)
FollowerAlias.ForceRefTo(FollowerActor)
QS.SindreFollow = 1
FollowerActor.EvaluatePackage()
If lQuest.GetStage() <= 30
Ljaco.Disable()
endIf
RegisterForSingleUpdateGameTime(24*2)
Updated = 1
FollowerAlias.GetActorRef().RemoveItem(Ring)
FollowerAlias.GetActorRef().AddItem(RingUnplayable)
EndFunction
Function FollowerWait()
actor FollowerActor = FollowerAlias.GetActorRef() as Actor
FollowerActor.SetActorValue("WaitingForPlayer", 1)
;follower will wait 3 days
FollowerAlias.RegisterForSingleUpdateGameTime(72)
EndFunction
Function FollowerFollow()
actor FollowerActor = FollowerAlias.GetActorRef() as Actor
FollowerActor.SetActorValue("WaitingForPlayer", 0)
SetObjectiveDisplayed(10, abdisplayed = false)
FollowerActor.EvaluatePackage()
EndFunction
Function DismissFollower(Int iMessage = 0, Int iSayLine = 1, bool combatdismiss = false)
If FollowerAlias && FollowerAlias.GetActorReference().IsDead() == False
If iMessage == 0
FollowerDismissMessage.Show()
ElseIf iMessage == 4
FollowerDismissMessageWait.Show()
Else
;failsafe
FollowerDismissMessage.Show()
EndIf
actor DismissedFollowerActor = FollowerAlias.GetActorRef() as Actor
DismissedFollowerActor.StopCombatAlarm()
DismissedFollowerActor.AddToFaction(DismissedFollowerFaction)
DismissedFollowerActor.SetPlayerTeammate(false)
DismissedFollowerActor.RemoveFromFaction(CurrentHireling)
DismissedFollowerActor.SetActorValue("WaitingForPlayer", 0)
;hireling rehire function
HirelingRehireScript.DismissHireling(DismissedFollowerActor.GetActorBase())
QS.SindreFollow = 0
QS.UsePackage = 0
If iSayLine == 1
iFollowerDismiss = 1
DismissedFollowerActor.EvaluatePackage()
;Wait for follower to say line
Utility.Wait(2)
EndIf
FollowerAlias.Clear()
iFollowerDismiss = 0
;don't set count to 0 if Companions have replaced follower
If iMessage == 2
;do nothing
EndIf
If combatdismiss == 1
QS.DR = 2
endIf
EndIf
Ljaco.Enable()
FollowerAlias.GetActorRef().RemoveItem(RingUnplayable)
FollowerAlias.GetActorRef().AddItem(Ring)
EndFunction