scorrp10 Posted Wednesday at 09:29 PM Share Posted Wednesday at 09:29 PM 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 More sharing options...
scorrp10 Posted Wednesday at 09:36 PM Share Posted Wednesday at 09:36 PM Then, in the dialogue invoked by the forcegreet, you add a fragment: MyQuestForceGreet.SetValueInt(0) Say your quest has 3 cases where this npc forcegreets you. You put all 3 packages at top of stack into alias, and set their conditions to MyQuestForceGreet being 1, 2 or 3. 1 Link to comment Share on other sites More sharing options...
LevisageDeDior Posted Thursday at 08:41 PM Author Share Posted Thursday at 08:41 PM Thank you, I will try to implement that as soon as I can! Link to comment Share on other sites More sharing options...
scorrp10 Posted Friday at 06:08 PM Share Posted Friday at 06:08 PM 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. 1 Link to comment Share on other sites More sharing options...
LevisageDeDior Posted 22 hours ago Author Share Posted 22 hours ago 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 More sharing options...
scorrp10 Posted 21 hours ago Share Posted 21 hours ago 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. 1 Link to comment Share on other sites More sharing options...
Recommended Posts