-
Posts
1576 -
Joined
-
Last visited
Everything posted by Surilindur
-
[LE] Papyrus Help - No Viable Input
Surilindur replied to quake709's topic in Skyrim's Creation Kit and Modders
No problem, great to hear I could help My skills at explaining things are below average. :blush: One more thing about properties: they are not just links between Papyrus and actual game objects (I think I might have made it sound like as if they were mainly that) - they also allow the reuse of scripts with different variable values that can be set in the Creation Kit without having to hardcode them to the script. Maybe something like a "gold lever" thing would be a great example of a property being both a link between Papyrus and a game object and a variable that can be set in the Creation Kit without having to hardcode it. So, assuming there would be two levers: one lever adds twenty Septims to whoever triggers it, and another lever adds 123 burnt books to whoever triggers it. They can both use the same script: ScriptName _RememberToPrefixYourScripts_LeverScript Extends ObjectReference Form Property ItemToGive Auto ; the item to give Int Property GiveCount Auto ; number of items to give Event OnActivate(ObjectReference akActionRef) akActionRef.AddItem(ItemToGive, GiveCount) EndEventI have not tested if that works, but the idea should be there. The smart part of it is the use of properties in the Creation Kit:first, one would place two simple levers in the gameworld somewhere, and add the script to each reference separately (to avoid having to create a new base object) by opening the scripts tab for both and adding a new scriptthen, in the first lever reference in the world, one would open the scripts tab, open the property editor for the new script and assign ItemToGive to Gold001 (or somesuch, the gold object) and set GiveCount to 20in the second lever, do the same, except that the item would be the burnt book object and count would be 123So while properties can be a bit tricky to wrap the head around at first, once you get the idea and understand how brilliant they are, you just cannot live without them! In the previous titles (like Oblivion), that two lever scenario would have required two distinct scripts with the items and counts hardcoded of sorts (or a clever scripting trick, but nothing as straightforward as a property). :happy: -
[LE] Papyrus Help - No Viable Input
Surilindur replied to quake709's topic in Skyrim's Creation Kit and Modders
If you have not yet read it, the wiki page on variables and properties might help: http://www.creationkit.com/index.php?title=Variables_and_Properties_(Papyrus) A property is a sort of link between the script and an actual in-game object. You can add a property in a script, but you need to use the Creation Kit to point it at an object. As in, your property declaration should look like this: VoiceType Property Voice AutoAnd you would need to attach the script to whatever it is you are going to attach it to (a magic effect?), open the property editor for the script after you have attached it to the magic effect, and fill the "Voice" property with the voice type you want (there should be some sort of drodown list I think?). You can think of a property as a hole and a tunnel, and your script as an isolated cube. The script, by itself, has no idea what something called "MaleKhajiit" is - it is just a bunch of characters after another with no meaning. To be able to point the script at your "MaleKhajiit" voice type, you cut a hole to the cube and label it "VoiceType called Voice" (create a property of type VoiceType named Voice). The script now knows that there should be a VoiceType called Voice somewhere through that hole. The next thing you do is build a tunnel between the hole and the MaleKhajiit voice type (fill the property in the Creation Kit), so that when the script looks through the "VoiceType called Voice" hole, it will see the MaleKhajiit object at the end of the tunnel. If that makes any sense. :tongue: Hopefully that helps a bit. Edit: I made a small picture to illustrate the whole Property idea, if it helps (in the spoiler): -
Have you tried opening the file, pressing ctrl+f and typing in "30" or "fps"?
-
Creating bootable usb memory stick, win 7
Surilindur replied to danyyy01's topic in Hardware and software discussion
No problem, happy to help. :) -
Creating bootable usb memory stick, win 7
Surilindur replied to danyyy01's topic in Hardware and software discussion
Judging by your CPU, one would think it is a Skylake-based system. I built a new one a year ago, and the motherboard had specific instructions on how to install Windows 7 from a USB device (any device: USB stick, USB optical disc drive, etc.). Maybe yours also has specific Windows 7 USB installation instructions somewhere? I still have a SATA optical disc drive for older games that are on on discs, so I installed Windows 7 with my DVD. After I had upgraded to Windows 10 (and therefore registered the machine in some Microsoft system), I made a clean reinstall of Windows 10 from a USB device (and have done a few more reinstalls after that when Windows 10 updates got stuck). So USB installation does work with Skylake, but it might not be as straightforward for WIndows 7. If I were you, I would check the motherboard manual and/or the motherboard info on the manufacturer's website. If I remember correctly, my motherboard (an Asus one) mentioned having to insert the support DVD into a SATA optical disc drive when installing Windows 7 from a USB for some USB drivers to be preloaded from the DVD so that a USB device could be used for the OS installation. Nothing too specific there, but hopefully it helps a bit. :blush: -
Finally cracked it! :dance: Sort of. It took some thinking, but if you want to generate a list of all numbers between a and b, and shuffle them, then the following script should do the trick. I have not tested the script itself (yet), but the Python version works. The Python version edit: that finally works with all sorts of a and b as long as b is larger than a: import random def random_list(a=0, b=100): b = b - a l = [0] * b i = 0 while (i < b): k = random.randint(0, i) l[i] = l[k] l[k] = i + a i += 1 return l if __name__ == '__main__': o = random_list(-7, -2) print(o) The Papyrus version (untested): Int[] Function ShuffledIntList(Int a=0, Int b=100) b = b - a Int i = 0 Int k Int[] NumArr = Utility.CreateIntArray(b) While (i < b) k = Utility.RandomInt(0, i) NumArr[i] = NumArr[k] NumArr[k] = i + a i += 1 EndWhile Return NumArr EndFunctionIf you need n numbers from [x,y] you could just generate the whole shuffled list from x to y and use the first n numbers from it. Function PrintFirstN(Int n, Int x, Int y) Int[] Shuffled = ShuffledIntList(x, y) While (n > 0) n -= 1 Debug.MessageBox(Shuffled[n]) EndWhile EndFunctionHopefully that helps a bit. :smile:
-
If I remember correctly, you can toggle the "player in Shivering Isles" flag with a console command (there is a command, but I cannot remember if it was written exactly like this: SetPlayerInSEWorld 0 SetPlayerInSEWorld 1Where 1 or 0 is pickes depending on whether the character should be considered to be in the SE world. I used that when testing my follower management mod with Shivering Isles NPCs (the mod allows recruiting Sheogorath, but urgently needs an update). :P
-
[LE] [Help] Simple player cloak for script
Surilindur replied to skinnytecboy's topic in Skyrim's Creation Kit and Modders
Well you could add it to the player alias, as well, as far as I know. The script. Assuming OnPlayerLoadGame actually fires, and that registering for the same event multiple times does not cause issues, you could use something like this and attach it to the PlayerAlias of whatever quest you may have: ScriptName YourPrefix_HorseMountHandler Extends Actor ; this script is attached to a Player alias in your quest Actor Property YourOtherActor Auto ObjectReference Property HoldingCellMarker Auto ; a marker in your holding cell Event OnPlayerLoadGame() Utility.Wait(0.5) ; wait a little, so that everything really is loaded and ready - might not be necessary, though RegisterForAnimationEvent(Self, "HorseEnter") RegisterForAnimationEvent(Self, "HorseExit") ; <-- replace HorseExit with the exit animation event name! Debug.MessageBox("OnPlayerLoadGame run, events should be registered") EndEvent Event OnAnimationEvent(ObjectReference akSource, String asEventName) Debug.MessageBox("Event (" + asEventName + "), Source (" + akSource + ")") If (asEventName == "HorseEnter" && YourOtherActor.IsEnabled()) YourOtherActor.MoveTo(HoldingCellMarker) YourOtherActor.Disable() ElseIf (asEventName == "HorseExit") ; <-- replace HorseExit with the actual event name If (YourOtherActor.IsDisabled()) YourOtherActor.Enable() EndIf YourOtherActor.MoveTo(Self) EndIf EndEventSomething like that. I have not tested it, though, but it should work. Hopefully that helps a bit. Edit: Fixed a typo, the HoldingCellMarker should be a property. -
SSE New to scripting...what's wrong with my script?
Surilindur replied to Rayek's topic in Skyrim's Creation Kit and Modders
No problem. Alternatives are usually great food for thought. :) What you are describing could also be done with a single enable parent. For example, if you did this: for the dirt pile, set the tombstone as the enable parent and make sure "state opposite to parent" is un-checkedfor each bone, set the tombstone as the enable parent and make sure "state opposite to parent" is checkedset the tombstone to "initially disabled"in the script, enable the tombstone when appropriateSo that, instead of two xmarkers, you would have one single tombstone. When that tombstone would be disabled, all the bones would have the opposite state (enabled) and the dirt pile the identical state (disabled). When the tombstone would be enabled, all the bones would have the opposite state (disabled) and the dirt pile the identical state (enabled). You can use the "state opposite to parent" tickbox in the enable parent tab of each reference to determine whether the enable state of that reference should be the same as the parent or the oppsite to it. -
Does it lag without the Dispel commands in ScriptEffectStart (for testing, to see if that would be the issue)? And yes, with OBSE, it is possible to build equipment auto-repair functionality, and auto-recharge and almost anything. Those things do require some scripting knowledge and maybe some thinking. It is not too difficult once you know how to create timers (in a quest script or in the magic effect script) and use looping commands from OBSE. Maybe someone else can assist you in that? Come to think of it, TES Alliance has Oblivion scripting tutorials (among other things) on their Forums. Maybe those could be of use to you. Their site was apparently targeted by a hacker at some point, so if the content looks suspicious, you should probably keep away and try again at a later time (the site seems fine at the moment, though): http://tesalliance.org/forums/index.php?/forum/82-esiv-oblivion-school/
-
[LE] [Help] Simple player cloak for script
Surilindur replied to skinnytecboy's topic in Skyrim's Creation Kit and Modders
You do not need the magic effect at all - that's the thing! You can register for the relevant animation event in the other actor's script. That is what I was trying to explain. Yes, my communication skills are not great. :P in a script attached to the other actor (for example), register for the "HorseEnter" event emitted by playerin the OnAnimationEvent block in that script, run the commands you need to run when player mounts a horsescript processing only happens when the event fires (because there is no polling, no magic effect, no cloak, nothing!)For example I have used RegisterForAnimationEvent in a quest script to catch player events and it works just fine. :thumbsup: -
[LE] [Help] Simple player cloak for script
Surilindur replied to skinnytecboy's topic in Skyrim's Creation Kit and Modders
Have you tried registering for a suitable animation event from the player? For example: ; you could add the things here to a script on your other actor as well, as far as I know? Event OnInit() RegisterForAnimationEvent(Game.GetPlayer(), "your_mounting_event_name") ; move this elsewhere!!! EndEvent Event OnAnimationEvent(ObjectReference akSource, String asEventName) Debug.MessageBox("Event (" + asEventName + "), Source (" + akSource + ")") EndEventThere should be animation event lists in the Creation Kit, from the menubar -> Gameplay -> Animations. When selecting an items under one of the trees, there should be a dropdown list of animation event names (in the right side panel) with somewhat clear names. You can test which one activates when mounting a horse or a dragon or something. Hopefully that helps a bit. It has been a while since I did any scripting with Papyrus, but animation events are usually a great way to register for actions performed by an actor, without having to build a complex or performance-hungry polling system or a cloak script. But then again, it will take some time to go through all the various potentially useful events (based on their names alone) to find the correct one for each situation. Edit: The relevant wiki pages: RegisterForAnimationEvent, UnregisterForAnimationEvent and OnAnimationEvent. Edit 2: The text editor here is not great. Fixed the links. -
[LE] Excute Function from TIF
Surilindur replied to Pickysaurus's topic in Skyrim's Creation Kit and Modders
I think the issue is related to you trying to call a function from a script that is not attached to an object - specifically, a script that is of a specific type to require being attached to an object but that is not attached to an object. It is possible to create a "library" script that does not need to be attached to anything, but that library script cannot be, for example, one that extends Form (if I remember correctly). If the script extends Form, the game probably requires it to be attached to a Form. As in, if I remember correctly, you can do this: ScriptName SomeLibraryScript ; does not extend anything Function FancyFunctionForFunnyFantasies(Bool abValue) Debug.MessageBox("The opposite of " + abValue + " is " + !abValue) EndFunction ScriptName SomeObjectScript Extends ObjectReference ; should compile without issues Event OnActivate(ObjectReference akActionRef) SomeLibraryScript.FancyFunctionForFunnyFantasies(True) EndEventBut you cannot do this: ScriptName SomeLibraryScript Extends Form ; this time, extends Form Function FancyFunctionForFunnyFantasies(Bool abValue) Debug.MessageBox("The opposite of " + abValue + " is " + !abValue) EndFunction ScriptName SomeObjectScript Extends ObjectReference ; this time, the function call here should throw the error you described ; when compiling, since SomeLibraryScript now extends Form but has not been ; attached to anything Event OnActivate(ObjectReference akActionRef) SomeLibraryScript.FancyFunctionForFunnyFantasies(True) EndEventConsidering how a large number of scripts are under Form in the "family tree" of sorts on the wiki, it could be that the script you are trying to call the function from (or one of its ancestors) extends something in the Form family tree and therefore cannot be used as a library script, but needs to be attached to an object. More about extending/inheritance on the wiki: Extending Scripts (Papyrus). I really hope I remembered it all correctly. If someone spots a mistake, feel free to correct me. :blush: Edit: For reference, you cannot do any of these, either, and they will also cause the compiler to throw the same error: ObjectReference.Delete() Actor.IsInInterior() Potion.IsHostile() -
Can you convert 7z's and omod's to .Esp's?
Surilindur replied to Daledge's topic in Oblivion's Mod troubleshooting
WinRAR can extract .7z files just fine, at least the current version(s) can. However 7-Zip is free, so if someone needs a program to extract 7z archives, and does not have anything that can do it yet, that someone would probably appreciate a completely free alternative. :thumbsup: -
SSE New to scripting...what's wrong with my script?
Surilindur replied to Rayek's topic in Skyrim's Creation Kit and Modders
Now this is not directly related to your issue (which I think KunoMochi solved, since I cannot see anything else that could be wrong in your script), but another idea for tweaking the script, considering the large number of discrete ObjectReferences that each have their own Property, could be to try out an array or a FormList. An array is basically just a list of objects of a specific type, for example integer, float, Actor, ObjectReference and whatnot. With all the ObjectReferences stored in a list of sorts (array), you could easily loop through the list and disable or enable everything in it. For example like this: ScriptName RE_BurialScript Extends ObjectReference ObjectReference[] Property ToEnable Auto ; brackets make it an array, put the things to enable here ObjectReference[] Property ToDisable Auto ; an array of all the things to disable Event OnActivate(ObjectReference akActionRef) If (akActionRef == Game.GetPlayer()) Int i = ToEnable.Length ; each array has this property which contains its length While (i > 0) ; indexes go from 0 to length-1 i -= 1 ; decrease i by one, as in, move to the next index, towards 0 If (ToEnable[i] && ToEnable[i].IsDisabled()) ToEnable[i].Enable() EndIf EndWhile i = ToDisable.Length While (i > 0) i -= 1 If (ToDisable[i] && ToDisable[i].IsEnabled()) ToDisable[i].Disable() EndIf EndWhile Endif EndeventFilling an array property works just like filling any other property, except that it will look like a list, and you can add a whole bunch of objects (of the type of the array, in this case, ObjectReferences) in that list (although there might be a size limit of 128). The wiki page on arrays is here: http://www.creationkit.com/index.php?title=Arrays_(Papyrus) Another solution could be to: have one ObjectReference property in the script, pointing at one ObjectReference in the gameworld (for example the tombstone) and set that in-game ObjectReference (tombstone) as "intially disabled" to have it disabled at firstset the "enable parent" for each ObjectReference in-game to be enabled with the tombstone to point to that tombstone, and make sure the "state opposite to parent" (or such, cannot remember exatly) is NOT checked (this will make the ObjectReferences copy the enable/disable status of the enable parent, in this case, the tombstone)for the items to be disabled with the tombstone, also set the tombstone as the enable parent, but make sure the "state opposite to parent" (or such) IS CHECKED (this will make the items to copy the state of the enable parent, but invert it, so that when the tombstone is enabled, they are disabled, and when the tombstone is disabled, they are enabled)With the enable parent system, you could make your script with just one ObjectReference: ScriptName RE_BurialScript Extends ObjectReference ObjectReference Property EnableParentOfAll Auto ; this one points to the enable parent of all the refs Event OnActivate(ObjectReference akActionRef) If (akActionRef == Game.GetPlayer() && EnableParentOfAll.IsEnabled()) EnableParentOfAll.Disable() EndIf EndEventThere might even be an existing in-game script for a single ObjectReference, I think (I have not checked) that you could use. It sounds like something the game developers could have used themselves in many places (by reusing the same script thanks to Properties). Also, those are both just ideas, something to think about, in case you one day end up having to enable and disable a massive amount of ObjectReferences. There is nothing wrong with your current script as it is (except for that one pointed out by KunoMochi). :thumbsup: Edit: Ooops. The text editor makes one incredible mess out of lists... :tongue: Now it should look like a list again. -
Great! And yes, the package is to blame, especially if the actors have low level processing enabled (I think). Something must be updating their status based on the package and somehow moving them all to their target (player). Disabling the actors prevents them from doing anything funny when they are not needed. Sounds like your project is getting closer to finished all the time. :thumbsup:
-
When the summon ends, the actor(s) should be moved to a holding cell and disabled. If the issue is your summonings appearing even when the spell is not active, you should make sure they are disabled after the summon ends and they are moved to the holding cell. I would guess the actors are not being disabled properly somehow and that is why they appear like that. You could also make sure the summonable actor references are marked "initially disabled" so that they would start disabled. Maybe. Of course it could be something completely different that is causing the issue. That is another part of modding: figuring out why something does not work as intended, and learning something new in the process. :)
-
I do not know if there is a way to do it in the Construction Set, someone else would need to answer that. :blush: If you do not want to use OBSE, you could add dispel statements to the spell effect script. For example if you have three spells: SpellA, SpellB and SpellC, you could try adding to SpellA, commands to dispel SpellB and SpellC, for example. begin ScriptEffectStart ; the one in spell A script Dispel SpellB ; dispel spell B Dispel SpellC ; dispel spell C <the rest of the ScriptEffectStart block here> endIt could help dispel other summons before continuing with the new one. But that is just an idea. I am not sure if Dispel is safe to use if the spell to be dispelled is not currently applied to the actor, but I suppose it is. If someone else knows of a clever workaround for the dispel method, then that would be great. That one is the best I could think of at the moment with base game scripting... :confused:
-
Ah, hmm. Well. There could be two options: Have several spells, one for each summonable actor. When casting one summon spell, it would dispell all other summon spells (this should get rid of the actor as well). Have one single spell with a menu for selecting the actor to summon.Would the menu option be reasonable, or do the spells need to be separate spells?
-
To display a message instead of using a messagebox, you can use the Message command: MessageBox "This is a messageBox" Message "This is a Message"The function list in the Construction Set wiki is handy when looking for scripting commands. Both Message and MessageBox are listed there. As for the other questions: Yes, it is possible. To change the text - as in, the effect name of the magic effect on your spell, which happens to be script effect - you can use OBSE. I cannot remember which command it was, but maybe something like SetNthEffectItemName would work (more in the OBSE Command Documentation). Yes, it can be changed. To change the spell icon, you could use CustomSpellIcons (an OBSE plugin and more, requires OBSE). I cannot remember the command name, but it is very easy to change the icon with CustomSpellIcons. Yes, you can have an NPC equip everything in their inventory. It only takes about three lines of script with OBSE.With OBSE, the limit of what can be done is moving closer and closer to the sky. It also makes scripting, in general, a lot more straightforward. If you do not want to use OBSE, you could try equipping the items one by one with the EquipItem command, but that is a very clumsy way of going about doing it (in my opinion). If you do not want to use OBSE, you cannot change the effect name as far as I know, and you cannot change the spell Icon, either. You can equip an item, but it will have to be "hardcoded" for every item separately. But if you want to use OBSE in a reasonable manner, you will need to learn how to use it. It makes scripting very easy, but there is a learning curve, I think. Programming background helps, though (something I did not have when I started modding, so it made learning a bit slower). For reference, with OBSE, you can define your own custom functions (object script) and call them on an actor. For example a function to equip items of a specific type in a potentially unordered fashion: scriptname EquipItemsByType short Type array_var a begin _Function { Type } ; the thing below should work with compiler override applied (underscore before block name) ; since similar things do work, but I have not tested that specific one so it might have ; an issue or two - the fix would be to add in a "ref" variable for storing a["value"] in ; which should fix any issues - however that would mean one additional variable foreach a <- ( GetItems Type ) if eval !( GetEquipped a["value"] ) EquipItemSilent a["value"] endif loop endAnd it could be called like: SomeActorRef.call EquipItemsByType 20 ; armour SomeActorRef.call EquipItemsByType 22 ; clothing SomeActorRef.call EquipItemsByType 33 ; weapon SomeActorRef.call EquipItemsByType 33 ; ammoBut that is just an idea for what a function could look like. The main point is the underscore before the script block name to allow the use of more reasonable expressions, so adding the underscore to the spell effect start block would make it possible to move the equip things there and save one script. With OBSE, you could even build a system to dynamically fetch the summon target based on spell name and a StringMap in a maintenance quest. OBSE is great. However it can also take a bit more learning. Hopefully that helps a bit. Again, if someone knows of a great tutorial for scripting with OBSE (and scripting in general), then that would be great. Is the issue in the video the one with spell names and icons? Or is it something else?
-
Ah. Hmm. I see. I still cannot test anything myself before the weekend (so much real life things to do). Thank you for the video, though, it was useful. Judging by the video, it looks like the summon is actually killed as soon as it is "spawned" a second time, so it could be something related to the old effect ending, the actor script, and the new effect starting. Maybe adjusting the spell and actor scripts would do. Again I have not tested this, because I do not have the time before the weekend (I only have the time to boot up my gaming PC in the weekends now). An alternative spell script idea: scriptname YourSpellEffectScript begin ScriptEffectStart if ( YourDremoraRef.GetDisabled ) YourDremoraRef.Enable endif if ( YourDremoraRef.GetDead ) YourDremoraRef.Resurrect 0 endif YourDremoraRef.ResetHealth YourDremoraRef.MoveTo PlayerRef YourDremoraRef.PlayMagicEffectVisuals DZRE 2.0 ; <-- REMEMBER EFFECT DURATION IN SECONDS! MessageBox "Summoning the Dremora" end begin ScriptEffectFinish YourDremoraRef.DispelAllSpells ; <-- this one might not be necessary? YourDremoraRef.MoveTo SomeXMarkerInYourHoldingCell YourDremoraRef.Disable MessageBox "Dremora moved away" end begin ScriptEffectUpdate ; this one might have issues, although it should work I think if ( YourDremoraRef.GetDead ) Dispel <editor-ID-of-this-spell> ; <-- should also run the finish block or else this will not work? endif endAnd an alternative actor script idea (with just this in it - to prevent activation): scriptname YouDremoraActorScript begin OnActivate endMaybe something like that should work better. Again, I have not tested it, I do not have the time to do it at the moment. If there is an issue somewhere, you could also try tracking it down yourself. It is one great way to learn scripting. :thumbsup:
-
To prevent conversation you could try adding an empty OnActivate block in the script for the Dremora. That one might also fix all your dialogue issues: begin OnActivate ; either nothing here or just a "return" if it requires something to be here endAlmost all dialogue in the game, as far as I know, is tied to a quest. As in, a quest "owns" topics, so to say. That is why a new quest with high priority would be handy, because you would not need to touch any existing quests or dialogue. I do not have the time to explain now, but there should be something in the wiki, for example on this page: http://cs.elderscrolls.com/index.php?title=Category:Dialogue. Also see how the dialogue things that already exist in the game have been made (for example the dialogue for some miscellaneous quest you remember well to be able to track how the progression of dialogue has been implemented under the hood). Test things out. It is the best way to learn. Quests are also something you might want to look at if working with dialogue. Actually, you will run into quests with quite a lot of things. And as a general tip, when making a mod, you should generally try to change as little existing things as possible, to maintain compatibility. Altering existing dialogue could potentially affect anything else that uses the same dialogue, so it is a very likely source of incompatibilities with both other mods and the base game itself (like accidentally breaking something). The way I learned how to mod was by playing around in the Construction Set and seeing what worked and how. If someone knows of a good tutorial somewhere, then hopefully they will link you to it. The wiki also has some tutorials I think. Right now I need to start working on my assignments or else I will be very very busy tomorrow.
-
You could, in theory, try something like: make a new quest to that quest, add new dialogue that specifically requires the actor (GetIsID) to be your Dremora set the priority to something higher than all the other quests that control dialogue maybe use "AddTopic <TopicID>" to add the new topics in case they are not there at firstSomething like that should force an actor to always use the custom dialogue, I think. If I remember correctly. As for why the summon fails: I cannot test it at the moment, too much other things to do. I will only be booting up my desktop in the weekend again. Hopefully someone else can help you with that. But does it work as intended when summoning the Dremora again after the spell has ended (and the Dremora vanished)? So that the issue is only when casting the spell before the timer runs out? Edit: As in, you probably want to add a new GREETING (yes, it is in caps right there in the game files, see for yourself :P) line for your Dremora specifically (GetIsID) with the "Goodbye" tickbox checked, so that when the topic has been said, the actor will exit dialogue.
