Jump to content

Creating a Forced Dialogue After a Scene Ends


LevisageDeDior

Recommended Posts

No, not like that.   Ai Packages are like dialogue responses - they go into a stack, and upon evaluation, the top package that has its conditions satisfied is the one that will be used.   If NPC fills an alias in a quest, the packages stacked on the alias have priority over packages on the base actor record.  If NPC fills multiple aliases, their packages are considered in the order of quest priority.   EvaluatePackage function takes no parameters - it simply forces the NPC to evaluate their package stack, and act on the first package which conditions are satisfied.

So, what you do is you add your forcegreet package to the alias of that NPC.  Make sure it is the top one.  Then you, for example, add a Global, named something like MyQuestForceGreet, and set it to 0.

On your forcegreet package, set a condition that MyQuestForceGreet == 1.

So in that event handler, you:

MyQuestForceGreet.SetValueInt(1)

NPC_Alias.TrytoEvaluatePackage()

Link to comment
Share on other sites

A fairly good example: Farkas  If you look at his actor record, he got a stack of 4 packages, one is an Eat package from 13:00 for 3 hours, a Train one from 7:00 for 5 hours, and Sleep from 22:00 for 8 hours, and the rest of time - hanging out with Companions Leaders in the hall.   These are packages he will do if not being used in any quests.

Now if you go to C06 quest(Companions: Glory of the Dead), and open Farkas alias, he got 7 packages stacked there.   When C06 quest starts, Farkas fills this alias, these 7 packages will take priority over his usual stuff.

Top package is 'C06FarkasWaitInUnderforge', but its conditions are that C06 stage is >10 and <=20, so this package is in effect only during stages 15, 17, 18 and 20.

And 2nd from top is 'C06FarkasForceGreetBeforeSpiders' - where it plays the C06FarkasDepart topic (I can't go any further, shield-brother), and conditions on this package are:
C06 quest stage >= 40,  and conditional property FarkasLeft is 0 and conditional property FarkasFGBeforeSpiders is 1. 

Both conditional properties are initially set to 0.   

In YsgramorTomb01, C06StatueOfYsgramor activator has an attached script, in which in State NoBlade, upon Activate:
  Remove Wuuthrad from player
  Set Quest Stage to 40.    << that is one of the conditions.

The, in same tomb, there is an area trigger C06NearSpiderAreaTrigger, which has  a script 'C06NearSpiderAreaTriggerScript' attached, and this script has:

Event OnTriggerEnter(ObjectReference akActivator)
	if (akActivator == Game.GetPlayer())
		(C06 as C06QuestScript).FarkasFGBeforeSpiders = true   ;; this sets a condition for the forcegreet package
		Farkas.GetActorReference().EvaluatePackage()           ;; this will evaluate Farkas package stack
	endif
EndEvent

So EvaluatePackage call will activate the ForceGreet, and At the end if the conversation, there is a script that sets FarkasLeft property to true - so that Farkas does not end up force-greeting you repeatedly.
  
 

 

 

  • Like 1
Link to comment
Share on other sites

I love your examples and tank you very much for help. However, I can't tell how I did just yet as I'm ending on preparing the base for the quest. And I also figured I'd ask here, perhaps someone will know and I won't spam forum with more posts. Is it posibble to force weather after choosing a certain line? For example, I press "Is everything alright?" and it starts raining. I thought of just typing "fw <ID of the weather> into papyrus enter but im not sure if thats how it works, have no way to test that yet.

Link to comment
Share on other sites

Look at Weather.psc objecttype.

Also look at implementation of StormCallShout   shout,  specifically VoiceStormCall1 spell, namely its VoiceStormCallEffect1Self, which uses 'magicSetWeatherScript'.   It should really give you some idea on how to play with  weathers.

  • Like 1
Link to comment
Share on other sites

  • Recently Browsing   0 members

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