WilliamTGames Posted April 12, 2021 Share Posted April 12, 2021 Okay, so today I delved into the fun that is making a Skyrim SE follower.I've got a little bit of prior experience with the CK but mainly just other programming languages. I watched all the tutorials by Joseph Russell and followed along with his guide / code. Now Im not sure if it's a mistake on my behalf or what, but basically when ever my follower and I get into a fight they leave for no reason.I've tweaked their morality and set it to any crime, i've even added to the controller script to do so. I'm absolutely stumped.I was wondering if anyone had any suggestions. Here's the controller script Scriptname THToddController extends Quest Actor Property PlayerREF Auto ReferenceAlias Property FollowerAlias Auto Faction Property DismissedFollowerFaction Auto Faction Property CurrentHireling Auto Message Property FollowerDismissMessage Auto Message Property FollowerDismissMessageWedding Auto Message Property FollowerDismissMessageCompanions Auto Message Property FollowerDismissMessageCompanionsMale Auto Message Property FollowerDismissMessageCompanionsFemale Auto Message Property FollowerDismissMessageWait Auto SetHirelingRehire Property HirelingRehireScript Auto GlobalVariable Property FollowerRecruited Auto Int Property iFollowerDismiss Auto Conditional 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.SetAV("Morality", 1.0) FollowerAlias.ForceRefTo(FollowerActor) FollowerActor.EvaluatePackage() FollowerRecruited.SetValue(1) EndFunction Function FollowerWait() actor FollowerActor = FollowerAlias.GetActorRef() as Actor FollowerActor.SetActorValue("WaitingForPlayer", 1) SetObjectiveDisplayed(10, abforce = true) 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) If FollowerAlias && FollowerAlias.GetActorReference().IsDead() == False If iMessage == 0 FollowerDismissMessage.Show() ElseIf iMessage == 1 FollowerDismissMessageWedding.Show() ElseIf iMessage == 2 FollowerDismissMessageCompanions.Show() ElseIf iMessage == 3 FollowerDismissMessageCompanionsMale.Show() ElseIf iMessage == 4 FollowerDismissMessageCompanionsFemale.Show() ElseIf iMessage == 5 FollowerDismissMessageWait.Show() Else FollowerDismissMessage.Show() EndIf actor DismissedFollowerActor = FollowerAlias.GetActorRef() as Actor DismissedFollowerActor.StopCombatAlarm() DismissedFollowerActor.AddToFaction(DismissedFollowerFaction) DismissedFollowerActor.SetPlayerTeammate(false) DismissedFollowerActor.RemoveFromFaction(CurrentHireling) DismissedFollowerActor.SetActorValue("WaitingForPlayer", 0) FollowerRecruited.SetValue(0) HirelingRehireScript.DismissHireling(DismissedFollowerActor.GetActorBase()) If iSayLine == 1 iFollowerDismiss = 1 DismissedFollowerActor.EvaluatePackage() Utility.Wait(2) EndIf FollowerAlias.Clear() iFollowerDismiss = 0 EndIf EndFunction And finally here is the Alias script. Scriptname THToddQuestAliasScript extends ReferenceAlias Faction Property CurrentHireling Auto Message Property FollowerDismissMessage Auto Actor Property PlayerREF Auto Event OnCombatStateChanged(Actor akTarget, int aeCombatState) If (akTarget == PlayerREF) (GetOwningQuest() as THToddController).DismissFollower(0, 0) EndIf EndEvent Event OnDeath(Actor akKiller) Self.GetActorRef().RemoveFromFaction(CurrentHireling) Self.Clear() EndEvent Any help or guidance is highly appreciated, thanks in advance! Link to comment Share on other sites More sharing options...
Recommended Posts