Erdan5 Posted 6 hours ago Posted 6 hours ago (edited) To clarify, let me explain my background on this topic and my problems here. So, a while back, I made this post in "mod requests" where I asked for a mod with new content and effects to be made. I don't need to worry about the new cutscenes and all of that, as I learned now the basic common sense of mod compatibility. (A lot of the things I requested for on that post back then I don't need to do now, I can simply make Extended Enclave and the Unofficial TSLRCM Tweak Pack compatible with my game, so no problem with that). There was one final thing I requested in that post though. What I requested was that Darth Sion and Darth Traya at the end of the game of KOTOR II dissolve into dark side energy in the same effect and style as Darth Nihilus. After a bit of consideration, I decided to make the mod where Sion and Traya die this way myself. I have experimented a lot throughout the months, and have learned much. However, there are a few frustrating things about my experimentations. My main modding tool I am using most of the time is Holocron Toolset, (because I am a noobie beginner). The main reason why I want to do the "dark side death effect" for Sion in this mod is mostly because I think the effect is cool, (and for Sion's case, was inspired by his death scene in KOTOR fan-film YouTuber DarthYcey's version of his death). In the vanilla game, after Sion says his last words of dialogue: "I am glad to leave this place, at last.", he lets himself die for good and falls to the floor. During this whole process, once Sion starts falling dead and before he even finishes falling to the floor, the mode of the game reverts from cutscene mode to gameplay mode. After he dies, you can loot his body which is tagged "remains" in gameplay. For my mod, my plan is to have Sion collapse and fall to the floor dead like in the actual game, but once he is fully dead on the floor, (or perhaps when he is right going to be), he suddenly emits a cloud of dark side energy that looks like Darth Nihilus's dark side cloud, and he fades away and vanishes in the cloud. The whole time this process plays out, it is in cutscene mode. So yeah. I found the script for the effect, and I found the placeable for the effect, (sithritual001), and I managed to suceed in my effect, (to an extent). The problem is that I don't know how to pause or extend the duration of a cutscene and let the effect happen. Whenever I let the scene play out, it either results in the cutscene mode reverting to gameplay mode in the middle of this effect happening and Sion leaving "remains" behind after the effect finishes. I will attach a recorded video snippet from my tested gameplay to show you visually. Star Wars_ Knights of the Old Republic II_ The Sith Lords 2026-04-27 16-00-40.mp4 So yeah, there is my problem. I don't know what to do. I kind of want him to fully collapse to the floor then have the "sithritual001" placeable effect and script playing. I also want to make that whole effect, (Sion collapsing to the floor, go through "DestroyObject" by sithritual001 and leave no remains) in cutscene mode, so that is why I asked to extend the duration of the cutscene. (P.S., the mod I planned for this mod is planned to be a private one, as I don't think that anyone would want this mod anyways if it were public. Just to let you know). Edited 6 hours ago by Erdan5 Quote
DarthParametric Posted 3 hours ago Posted 3 hours ago This is all scripting for the most part. If you look at 903sion.dlg, E121 should be the node of interest. You can see that fires the script a_sion with parameter 3 - https://github.com/KOTORCommunityPatches/Vanilla_KOTOR_Script_Source/blob/master/TSL/TSLRCM/Modules/903MAL_Malachor_V_Trayus_Academy/a_sion.nss That triggers case 3 of the switch runs that function that handles his death scene. Clears all effects on him, plays the ANIMATION_LOOPING_RAGE animation on him for 1.5 seconds, removes his minimum 1HP flag, applies the instant death effect, then unlocks the door. If you want to prevent a node from skipping and run for as long as you want, then you need the ActionPauseConversation and ActionResumeConversation functions. However, you have an added wrinkle here. Sion is the conversation owner. A conversation will immediately terminate if the owner dies. Typically in cases like this where an NPC needs to die, you get around it by making the owner an invisible placeable, but in this case that would probably break all the other scripts. So you'll need a bit of slight of hand to get around it. What I would do is have him manually play the death anim, spawn the VFX placeable over the top of him, then use that as cover to jump Sion somewhere out of sight so he can be killed after the cutscene finishes. The question will be whether the VFX actually obscures him sufficiently. That will probably require some custom shot framing with new static cameras. You could probably do a wide shot from behind the PC and use the PC themselves to block it if absolutely necessary. You can script switching between static cameras using the SetDialogPlaceableCamera function. Quote
Erdan5 Posted 3 hours ago Author Posted 3 hours ago Okay, thanks. So what I did in detail was this: I created an all new script. I called it "a_sion_effect" and put it in "script 2" that is underneath "script 1" in the node where Sion's death animation plays, (which is a_sion), and that is where I ended up. The part of the dialogue editor I made can be viewed in this screenshot below... As for what I out in the "a_sion_effect" script, I basically put it like this: void main() { object oDarthSion = GetObjectByTag("DarthSion", 0); location lSion = GetLocation(oDarthSion); AssignCommand(GetModule(), DelayCommand(3.0, AssignCommand(GetFirstPC(), PlaySound("v_pro_lightning")))); AssignCommand(GetModule(), DelayCommand(3.0, CreateObject(64, "sithritual001", lSion, 0))); AssignCommand(GetModule(), DelayCommand(3.5, DestroyObject(oDarthSion, 0.0, 0, 0.1, 0))); AssignCommand(GetModule(), DelayCommand(6.5, DestroyObject(GetObjectByTag("SithRitualEffect", 0), 0.0, 0, 0.0, 0))); } So yeah, that is how I got to where I was. Thanks for the advice. I am trying to learn how to apply new camera shots and make new cameras, but I will try to do so. 43 minutes ago, DarthParametric said: What I would do is have him manually play the death anim, spawn the VFX placeable over the top of him, then use that as cover to jump Sion somewhere out of sight so he can be killed after the cutscene finishes. The question will be whether the VFX actually obscures him sufficiently. That will probably require some custom shot framing with new static cameras. You could probably do a wide shot from behind the PC and use the PC themselves to block it if absolutely necessary. You can script switching between static cameras using the SetDialogPlaceableCamera function. So, for clarification, do I do this in a script or do I actually have to do module editing to do it efficiently? Like editing the GIT file or something like that? Quote
DarthParametric Posted 2 hours ago Posted 2 hours ago 10 minutes ago, Erdan5 said: put it in "script 2" You don't want to leave the vanilla script. That kills him. You need to replace that script with your own that does all the stuff the vanilla script does and then modifies it to get the result you want. 10 minutes ago, Erdan5 said: do I actually have to do module editing Yes, to add static cameras you will need to edit the module's GIT. Which means that they won't take effect in a saved game (unless you extract the save and edit its module GIT). Alternatively, you can create an animated camera, which is a motion track stored in a model that the game can attach a camera to. Any time you see a cutscene with a camera panning or the like, that's an anicam. But you can also use it for simple position switches where you just jump the camera to different points as needed. This would require the use of Blender or 3DS Max and their appropriate I/O scripts. 1 Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.