152 lines
4.7 KiB
Plaintext
152 lines
4.7 KiB
Plaintext
ScriptName DialogueFollowerScript extends Quest Conditional
|
|
|
|
GlobalVariable Property pPlayerFollowerCount Auto
|
|
GlobalVariable Property pPlayerAnimalCount Auto
|
|
ReferenceAlias Property pFollowerAlias Auto
|
|
ReferenceAlias property pAnimalAlias Auto
|
|
Faction Property pDismissedFollower Auto
|
|
Faction Property pCurrentHireling Auto
|
|
Message Property FollowerDismissMessage Auto
|
|
Message Property AnimalDismissMessage 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
|
|
|
|
;Property to tell follower to say dismissal line
|
|
Int Property iFollowerDismiss Auto Conditional
|
|
|
|
; PATCH 1.9: 77615: remove unplayable hunting bow when follower is dismissed
|
|
Weapon Property FollowerHuntingBow Auto
|
|
Ammo Property FollowerIronArrow Auto
|
|
|
|
|
|
Function SetFollower(ObjectReference FollowerRef)
|
|
|
|
actor FollowerActor = FollowerRef as Actor
|
|
FollowerActor.RemoveFromFaction(pDismissedFollower)
|
|
If FollowerActor.GetRelationshipRank(Game.GetPlayer()) < 3 && FollowerActor.GetRelationshipRank(Game.GetPlayer()) >= 0
|
|
FollowerActor.SetRelationshipRank(Game.GetPlayer(), 3)
|
|
EndIf
|
|
FollowerActor.SetPlayerTeammate()
|
|
;FollowerActor.SetActorValue("Morality", 0)
|
|
pFollowerAlias.ForceRefTo(FollowerActor)
|
|
pPlayerFollowerCount.SetValue(1)
|
|
|
|
EndFunction
|
|
|
|
Function SetAnimal(ObjectReference AnimalRef)
|
|
|
|
actor AnimalActor= AnimalRef as Actor
|
|
;don't allow lockpicking
|
|
AnimalActor.SetActorValue("Lockpicking", 0)
|
|
AnimalActor.SetRelationshipRank(Game.GetPlayer(), 3)
|
|
AnimalActor.SetPlayerTeammate(abCanDoFavor = false)
|
|
pAnimalAlias.ForceRefTo(AnimalActor)
|
|
;AnimalActor.AllowPCDialogue(True)
|
|
pPlayerAnimalCount.SetValue(1)
|
|
|
|
EndFunction
|
|
|
|
Function FollowerWait()
|
|
|
|
actor FollowerActor = pFollowerAlias.GetActorReference() as Actor
|
|
FollowerActor.SetActorValue("WaitingForPlayer", 1)
|
|
;SetObjectiveDisplayed(10, abforce = true)
|
|
;follower will wait 3 days
|
|
pFollowerAlias.RegisterForUpdateGameTime(72)
|
|
|
|
EndFunction
|
|
|
|
Function AnimalWait()
|
|
|
|
actor AnimalActor = pAnimalAlias.GetActorReference() as Actor
|
|
AnimalActor.SetActorValue("WaitingForPlayer", 1)
|
|
;SetObjectiveDisplayed(20, abforce = true)
|
|
;follower will wait 3 days
|
|
pAnimalAlias.RegisterForUpdateGameTime(72)
|
|
|
|
EndFunction
|
|
|
|
Function FollowerFollow()
|
|
|
|
actor FollowerActor = pFollowerAlias.GetActorReference() as Actor
|
|
FollowerActor.SetActorValue("WaitingForPlayer", 0)
|
|
SetObjectiveDisplayed(10, abdisplayed = false)
|
|
|
|
EndFunction
|
|
|
|
Function AnimalFollow()
|
|
|
|
actor AnimalActor = pAnimalAlias.GetActorReference() as Actor
|
|
AnimalActor.SetActorValue("WaitingForPlayer", 0)
|
|
SetObjectiveDisplayed(20, abdisplayed = false)
|
|
|
|
EndFunction
|
|
|
|
Function DismissFollower(Int iMessage = 0, Int iSayLine = 1)
|
|
|
|
If pFollowerAlias && pFollowerAlias.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
|
|
;failsafe
|
|
FollowerDismissMessage.Show()
|
|
EndIf
|
|
actor DismissedFollowerActor = pFollowerAlias.GetActorReference() as Actor
|
|
DismissedFollowerActor.StopCombatAlarm()
|
|
DismissedFollowerActor.AddToFaction(pDismissedFollower)
|
|
DismissedFollowerActor.SetPlayerTeammate(false)
|
|
DismissedFollowerActor.RemoveFromFaction(pCurrentHireling)
|
|
DismissedFollowerActor.SetActorValue("WaitingForPlayer", 0)
|
|
|
|
; PATCH 1.9: 77615: remove unplayable hunting bow when follower is dismissed
|
|
DismissedFollowerActor.RemoveItem(FollowerHuntingBow, 999, true)
|
|
DismissedFollowerActor.RemoveItem(FollowerIronArrow, 999, true)
|
|
; END Patch 1.9 fix
|
|
|
|
;hireling rehire function
|
|
HirelingRehireScript.DismissHireling(DismissedFollowerActor.GetActorBase())
|
|
If iSayLine == 1
|
|
iFollowerDismiss = 1
|
|
DismissedFollowerActor.EvaluatePackage()
|
|
;Wait for follower to say line
|
|
Utility.Wait(2)
|
|
EndIf
|
|
pFollowerAlias.Clear()
|
|
iFollowerDismiss = 0
|
|
;don't set count to 0 if Companions have replaced follower
|
|
If iMessage == 2
|
|
;do nothing
|
|
Else
|
|
pPlayerFollowerCount.SetValue(0)
|
|
EndIf
|
|
EndIf
|
|
|
|
EndFunction
|
|
|
|
Function DismissAnimal()
|
|
|
|
If pAnimalAlias && pAnimalAlias.GetActorReference().IsDead() == False
|
|
actor DismissedAnimalActor = pAnimalAlias.GetActorReference() as Actor
|
|
DismissedAnimalActor.SetActorValue("Variable04", 0)
|
|
;DismissedAnimalActor.AllowPCDialogue(False)
|
|
pPlayerAnimalCount.SetValue(0)
|
|
pAnimalAlias.Clear()
|
|
AnimalDismissMessage.Show()
|
|
EndIf
|
|
|
|
EndFunction
|