fottenberg Posted September 8, 2023 Posted September 8, 2023 (edited) hi fellow modders, playing SE for some time i decided to learn CK trying to realize some ideas i have about Serana. long story short, my mod would start (possibly) showing a scene right after the moment Serana "stumbles out and gets the scroll", going silent during subsequent Serana's forcegreet and doing things later trying not to interfere blabla as usual. now as i said i'm learning so i am not sure if it is even doable... so my questions are: is it even possible? can i "hook" my startquest to some event, npc encounter etc. without modifying\patching Dawnguard? i asked that trying to avoid losing weeks searching for something that maybe is simply impossible for some reason i actually don't know Sorry for my English, I'm not a native speaker thanks in advance Edited September 8, 2023 by fottenberg
traison Posted September 8, 2023 Posted September 8, 2023 (edited) Not an expert on the matter, but this may be possible with a higher priority quest taking control of Serana. However, how you'd get it to reliably start at the correct moment without modifying the existing Dawnguard quest I do not know. I mean you could spam the OnUpdate event every second checking for a specific stage with GetStage but that would be some really disguisting code. Edited September 8, 2023 by traison 1
fottenberg Posted September 8, 2023 Author Posted September 8, 2023 thank you from your answer looks like trying to intercept events from my quest would not be a good solution. my actual idea is to start the quest simply loading the game and insert a scene between Serana stumbling out (Quest DLC1VQ01 "Awakening" between stage 20 and 30) - the script QF_DLC01VQ01_0100352A.psc is involved (i believe) i would like to know if it's possible, for example, to "patch" that quest and\or the script because that would be the only "interference" so to speak, the mod is about Serana subsequent behaviour\dialogues on the road, in locations etc. i don't know if i can touch Dawnguard like any other downloaded mod... but i will try anyway. crashing Skyrim SE in all the possible ways is something i'm well accustomed to, at this point it is my main activity ?
Tlam99 Posted September 8, 2023 Posted September 8, 2023 Hook it to the event when pressing the button. Register for single update in ca 60s. Insert check scene completed, if not register single update again. Otherwise your stuff. Insert a safety counter to limit the updates, like trash it after 20 updates. (20min the scene should be completed) If the stumble out scene completed, proceed with your stuff. This should not interfere with anything, separate from dawnguard. 1
fottenberg Posted September 8, 2023 Author Posted September 8, 2023 thank you too now i have some directions where to go studying... and crashing SE like there is no tomorrow
belegost Posted September 10, 2023 Posted September 10, 2023 Back up your skyrim.ini files before installing CK. Else your going to start the game and suddenly everything's back to fucking vanilla, including a damn controller enabled and no mouse (yes, I'm still salty about that). 1
Tlam99 Posted September 19, 2023 Posted September 19, 2023 Did not look into it. However, it's a scene hitting the button, I guess. On scene end would be a good entry point, as the ref is the player. 1
fottenberg Posted September 19, 2023 Author Posted September 19, 2023 On 9/8/2023 at 8:15 PM, Tlam99 said: Hook it to the event when pressing the button. should i create an alias of the button object (or Serana coffin activator, i would prefer) and proceed with (my) button alias's script? if i'm not wrong i need to create an alias for every other quest's object i intend to interact with but the limits\possibilities of that are unclear to me, and i can't find tutorials or examples about that. thanks for help
Tlam99 Posted September 19, 2023 Posted September 19, 2023 Every quest object needs an alias. If your quest is a following quest, you could use the alias of the main (trigger) quest to fill your alias. Best check out how this scene is made. 1
fottenberg Posted September 19, 2023 Author Posted September 19, 2023 29 minutes ago, Tlam99 said: Did not look into it. However, it's a scene hitting the button, I guess. On scene end would be a good entry point, as the ref is the player. ops, i was editing my post trying to be more concise, sorry but thank for your fast answer! yes, i know a bit the objects i want to interact with, i'm at the point where i need to learn the basics of what i can\can't do
fottenberg Posted September 19, 2023 Author Posted September 19, 2023 19 minutes ago, Tlam99 said: Every quest object needs an alias. If your quest is a following quest, you could use the alias of the main (trigger) quest to fill your alias. Best check out how this scene is made. this. you cleared two points i was unsure about. the vanilla scene ends with serana exit from the coffin, here DLC1VQ01 stops and calls for Serana ForceGreet (package) and for DLC1VQ02 to start in order to avoid pestering papyrus with trash my idea was to place some triggerbox around seranacoffin OR better (as you suggested) using directly an activator (button or coffin opener) to start my onupdate-registerforsingleupdate thing where my scene happens before all that a check to insure if serana is already out = skip everything and start my Main quest (what we are talking about happens in my Activator quest, the Main quest is separated) this should be more or less
fottenberg Posted September 19, 2023 Author Posted September 19, 2023 a bit more details on how i am trying to do things i looked into DLC1VQ01 tho see what happens, and looks like everything i need is in the DLC1VQ01PuzzleCoffinActivator's script: Spoiler Scriptname DLC1VQ01PuzzleCoffinScript extends ObjectReference import debug import utility objectReference property coffin auto objectReference property puzzleController auto actor property Serana auto quest property DLC1VQ01 auto ;scene property SeranaGetScrollScene auto DLC1VQ01PuzzleControllerScript mainScript Event OnInit() mainScript = puzzleController as DLC1VQ01PuzzleControllerScript EndEvent auto State waiting Event OnActivate(objectReference triggerRef) gotoState("done") Serana.BlockActivation() coffin.PlayAnimation("open") ; Debug.Trace("RNPC: anim sent...") Utility.Wait(2.2) serana.setGhost(false) ; Debug.Trace("RNPC: wait done...") DLC1VQ01.setstage(20) ; Debug.Trace("RNPC: 20 set...") Utility.Wait(1.0) DLC1VQ01.setstage(30) ; Debug.Trace("RNPC: 30 set...") serana.evaluatePackage() ; Debug.Trace("RNPC: initial forcegreet should be running...") ; while SeranaGetScrollScene.isPlaying() == 1 ; wait(3) ; endWhile ; coffin.PlayAnimation("taken") ;sendAnimationEvent(Serana, "DLC01CoffinEnterInstant") self.disable() EndEvent endState State Done EndState from my understanding i created an alias of DLC1VQ01PuzzleCoffinActivator (specific reference, allow reserved) with its script (extends ObjectReference) addes properties like serana, player, myActivator quest looking how DLC1VQ01 was made i'm thinking about doing all in my activator script, so i think i should add properties like DLC1VQ01 quest, DLC1VQ01PuzzleCoffinActivator (or maybe not?), and my scene alias and from there set the appropriate stage in my activator quest looks like a recipe for disaster
fottenberg Posted September 20, 2023 Author Posted September 20, 2023 update: i'm trying a different approach and it worked so far the point where i would like to insert my scene is right before both Dlc1vq01 script and\or its activator calls serana.evaluatePackage() and so her usual Forcegreet package is fired knowing that packages are put in a stack on the actor i wrote my forcegreet package (some random idles, just for testing), added to my quest serana alias and gave my quest a slight priority and now Serana comes out of her sarcophagus dancing, laughing and other random shit LOL it works so far, so i'm exploring what i can do directly from a package 1
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now