Jump to content

Creation Kit Follower avoiding conflicts


bojanni

Recommended Posts

"The iCookie will change the face of food forever, exclaimed the young marketing person. People will buy it and love and eventually want more. And when they do, that is when we release an app that let's them create their own recipes (at a cost of course). Heck, we can even forcibly make them download a recipe by bono from U2"
Link to comment
Share on other sites

  • Replies 59
  • Created
  • Last Reply

Top Posters In This Topic

Yeah, I deduced it to the fact it's an alias issue. I just can't seem to figure out why the alias is not being filled. I created two quests:

 

1. BO_FollowerControlQuest with the alias set-up and the Bo_FollowerControlQuest attached to it

2. BO_FollowerDialogueQuest with all the dialogue and recruitment options (from the tutorial I found on your site).

 

So, is it a problem that the alias is in a different quest other than the dialogue quest?

 

BO_FollowerControlQuest:

 

 

 

Scriptname BO_FollowerControlQuestScript extends Quest
GlobalVariable Property BO_MaximumFollowerCount Auto
ReferenceAlias Property BO_FollowerAlias Auto
Faction Property DismissedFollower 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
;Property to tell follower to say dismissal line
Int Property iFollowerDismiss Auto Conditional
Function SetFollower(ObjectReference FollowerRef)
actor FollowerActor = FollowerRef as Actor
FollowerActor.RemoveFromFaction(DismissedFollower)
If FollowerActor.GetRelationshipRank(Game.GetPlayer()) < 3 && FollowerActor.GetRelationshipRank(Game.GetPlayer()) >= 0
FollowerActor.SetRelationshipRank(Game.GetPlayer(), 3)
EndIf
FollowerActor.SetPlayerTeammate()
;FollowerActor.SetAV("Morality", 0)
BO_FollowerAlias.ForceRefTo(FollowerActor)
BO_MaximumFollowerCount.SetValue(1)
EndFunction
Function FollowerWait()
actor FollowerActor = BO_FollowerAlias.GetActorRef() as Actor
FollowerActor.SetAv("WaitingForPlayer", 1)
;SetObjectiveDisplayed(10, abforce = true)
;follower will wait 3 days
BO_FollowerAlias.RegisterForUpdateGameTime(72)
EndFunction
Function FollowerFollow()
actor FollowerActor = BO_FollowerAlias.GetActorRef() as Actor
FollowerActor.SetAv("WaitingForPlayer", 0)
SetObjectiveDisplayed(10, abdisplayed = false)
EndFunction
Function DismissFollower(Int iMessage = 0, Int iSayLine = 1)
If BO_FollowerAlias && BO_FollowerAlias.GetActorRef().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 = BO_FollowerAlias.GetActorRef() as Actor
DismissedFollowerActor.StopCombatAlarm()
DismissedFollowerActor.AddToFaction(DismissedFollower)
DismissedFollowerActor.SetPlayerTeammate(false)
DismissedFollowerActor.RemoveFromFaction(CurrentHireling)
DismissedFollowerActor.SetAV("WaitingForPlayer", 0)
;hireling rehire function
HirelingRehireScript.DismissHireling(DismissedFollowerActor.GetActorBase())
If iSayLine == 1
iFollowerDismiss = 1
DismissedFollowerActor.EvaluatePackage()
;Wait for follower to say line
Utility.Wait(2)
EndIf
BO_FollowerAlias.Clear()
iFollowerDismiss = 0
;don't set count to 0 if Companions have replaced follower
If iMessage == 2
;do nothing
Else
BO_MaximumFollowerCount.SetValue(0)
EndIf
EndIf
EndFunction

Edited by bojanni
Link to comment
Share on other sites

Are all your properties filled? Have you set up the alias so it points directly to your follower as shown in the tutorial?

 

Just looked through the tutorial again and noticed a potential error. If you've just got the one follower, then try making the alias a specific reference that points to your follower, not an empty forced reference. If that works report back to me and I'll change it in the tutorial.

Link to comment
Share on other sites

Well, I had the alias set up like this: http://imgur.com/PdXpsAi

 

I changed it to this: http://imgur.com/0MEjDB7

 

That immediately exposed all the follower-options (like wait here, show your inventory etc.). I don't think that's right?

 

Also one other thing: In the tutorial it sets the condition on the follow / recruit dialogue for CurrentFollowerFaction = 1. When I do that, the dialogue option doesn't appear. I also set up this condition on the dismiss topic, and also that option doesn't appear, even with the forced reference. I added to faction to my NPC though.

 

In-game info: http://imgur.com/YYns1ZL

 

Papyrus says (with forced ref)

 

[10/17/2014 - 10:26:59PM] Error: Cannot call ForceRefTo() on a None object, aborting function call
stack:
[bO_FollowerControlQuest (CD0274F6)].BO_FollowerControlQuestScript.SetFollower() - "BO_FollowerControlQuestScript.psc" Line 27

 

My NPC doesn't seem to exist.

Link to comment
Share on other sites

Well, I had the alias set up like this: http://imgur.com/PdXpsAi

 

I changed it to this: http://imgur.com/0MEjDB7

 

That immediately exposed all the follower-options (like wait here, show your inventory etc.). I don't think that's right?

 

Also one other thing: In the tutorial it sets the condition on the follow / recruit dialogue for CurrentFollowerFaction = 1. When I do that, the dialogue option doesn't appear. I also set up this condition on the dismiss topic, and also that option doesn't appear, even with the forced reference. I added to faction to my NPC though.

 

In-game info: http://imgur.com/YYns1ZL

 

Papyrus says (with forced ref)

 

[10/17/2014 - 10:26:59PM] Error: Cannot call ForceRefTo() on a None object, aborting function call
stack:
[bO_FollowerControlQuest (CD0274F6)].BO_FollowerControlQuestScript.SetFollower() - "BO_FollowerControlQuestScript.psc" Line 27

 

My NPC doesn't seem to exist.

Huh. So I remember why now you need that - you force the ref when they accept you as a follower. I'm not sure why the ref isn't forcing correctly. When they're accepted as a follower, it should cause the script to run the ForceRefTo() and make your speaker (follower) the follower alias. For some reason, this doesn't seem to be working for you.

Link to comment
Share on other sites

What's the purpose of the hireling property? Just had a peek a the fab "Sofia" and noticed that it contains a separate script for hireling... Surely a bog standard follower doesn't even use hireling functions?

Link to comment
Share on other sites

Welll... I think it's pretty important.. I just checked the properties of my BO_FollowerControlQuestScript and compared it to vanilla. I hadn't set a property for currenthireling - faction and set it's value to currenthireling. Set HirelingRehireScript to DialogueFollower and..... My NPC which I hate right now, follows me....

 

it's magic... and Matthias mentioning Properties :) Thankyou Thankyou Thankyou!!!

Link to comment
Share on other sites

Welll... I think it's pretty important.. I just checked the properties of my BO_FollowerControlQuestScript and compared it to vanilla. I hadn't set a property for currenthireling - faction and set it's value to currenthireling. Set HirelingRehireScript to DialogueFollower and..... My NPC which I hate right now, follows me....

 

it's magic... and Matthias mentioning Properties :smile: Thankyou Thankyou Thankyou!!!

Is there anything I should change in the tutorial so this is more clear - for future reference, when I do overhaul it.

Link to comment
Share on other sites

Is this the end? Is it truly solved once and for all? Erm, no. I think for the sake of Googledom, we need to create a concise tutorial. I swear that when I upload Ben 2.2 I will include the script source so that everyone can see how it's done. That way, given the right tools, anyone can do it.

 

I still have a bit of testing to do,I will update here if I'm successful or not.

 

Matt, as usual sir, you're a star. Bojanni, I don't think our biscuit story is finished..

Link to comment
Share on other sites

Is this the end? Is it truly solved once and for all? Erm, no. I think for the sake of Googledom, we need to create a concise tutorial. I swear that when I upload Ben 2.2 I will include the script source so that everyone can see how it's done. That way, given the right tools, anyone can do it.

 

I still have a bit of testing to do,I will update here if I'm successful or not.

 

Matt, as usual sir, you're a star. Bojanni, I don't think our biscuit story is finished..

And I'll reference your mod in the updated tutorial so when you do figure out people can see it's possible.

 

Again, I apologize for the hassle this has taken both of you with my tutorial. It's a top priority once I get some free time after sending off the dialogue to VAs (for Immersive Quests that is).

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.

×
×
  • Create New...