Leaderboard


Popular Content

Showing content with the highest reputation on 10/11/2018 in Posts

  1. 2 points
    I recently remembered that, during the ending celebration scene, if you wear the Star Forge/Darth Revan robes, the cutscene shows the player in basic brown robes. I was wondering if it would be possible to mod this scene to recognize both the Star Forge and Darth Revan robes so that it remains consistent.
  2. 2 points
    Hey Deadlystream, What I'm looking for is a port of, or a way to port, the head of Brianna/Handmaiden from Kotor 2 and making it playable in Kotor 1. I've done some modding in other games before so I'm willing to give it a shot of my own, I just fear that I'll start only to realize that a) it can't be done, or b) it's already been done, I just didn't look hard enough. Edit: So far I've extracted all the .tga, the .mdl and the .mdx file for Handmaiden (one less dark side variant than I expected). Currently I'm working on figuring out the conversion process in MDLedit. Final edit: I actually managed to get it done myself. Turns out there's a lot of really helpful reading material on this site if you look close enough!
  3. 1 point
    Yeah the normal map on the face looks pretty crap. I removed it and I think it looks a lot nicer without it:
  4. 1 point
  5. 1 point
    @JDub96: Here, try this: https://www.darthparametric.com/files/kotor/k1/[K1]_Revan_Star_Forge_Robes_with_Medal_Hook.7z Although I'm not sure what the alignment will be like. I suspect it will probably need adjustment. You'll also need to use it combination with @JCarter426's script: JCs_Award_Don_Robe_Scripts_Compiled.7z
  6. 1 point
    One or two weeks ago, I decided to quickly finish Onderon, thinking that there were only some tweaks to the TG scene and the fixed skybox models left to do. Turns out that I had forgotten about the turret scene and the swoopracing. For the turret minigame I had to add the palace model and alter the visible terrain as the vanilla one didn't fit my skybox design at all. So that's done now except for some lightmap tweaks to make the palace blend better with the vanilla geometry. The swooprace is another thing entirely. I didn't even know there was swoopracing on Onderon and my Onderon landscape doesn't really work well with the swooptrack as that one seems to start outside of the city and then gradually enter it, so neither my normal Onderon skybox nor my skyramp skybox work well for that module. I tried creating a third one from a different point of view but that didn't look great either. I'm not quite out of ideas yet but we'll see how it goes. Anyway, I wanted to share what I have. So here are two renders and two screenshots:
  7. 1 point
    I'm only a beginner so I could be wrong, but for triggering a conversation when a group of enemies dies here's how they did it for the very fist encounter on the endar spire: In the OnSpawn script for the two sith the local boolean SW_FLAG_EVENT_ON_DEATH is set to true. What this does is trigger the OnUserDefined event when OnDeath is triggered. This is because of a conditional in the default OnDeath script, k_def_death01.nss I think. Actually, each default event script has a corresponding SW_FLAG_EVENT_ON_* boolean that triggers OnUserDefined. So once each of the sith die their OnUserDefined script activates and that script first checks if a global number representing the amount of dead enemies (in this case it's called END_ROOM3_DEAD) is greater than or equal to 1 and if so the conversation occurs. If you haven't killed all the enemies yet then the global number is incremented. In this case there are 2 sith you have to kill which leads me to believe that all global numbers are initialized as -1. Someone please correct me if I'm wrong. Now if you wanna make your own script then what you gotta do is go into globalcat.2da where all the global numbers/booleans are stored and add a new global number to represent the amount of dead enemies. Then add a line in the OnSpawn script that sets SW_FLAG_EVENT_ON_DEATH to true SetLocalBoolean(OBJECT_SELF, SW_FLAG_EVENT_ON_DEATH, TRUE); Then make a custom OnUserDefined script or add to the existing one. Here is the decompiled OnUserDefined script of those sith: void main() { int int1 = GetUserDefinedEventNumber(); if ((int1 == 1001)) { } else { if ((int1 == 1002)) { } else { if ((int1 == 1003)) { } else { if ((int1 == 1004)) { } else { if ((int1 == 1005)) { } else { if ((int1 == 1006)) { } else { if ((int1 == 1007)) { int nGlobal = GetGlobalNumber("END_ROOM3_DEAD"); object object1 = sub1(); object oPC = GetFirstPC(); int nCurHP = GetCurrentHitPoints(oPC); int nMaxHP = GetMaxHitPoints(oPC); int int9 = GetCurrentHitPoints(object1); int int11 = GetMaxHitPoints(object1); if ((nGlobal >= 1)) { sub2(intGLOB_163); // TRASK_ROOM3_DONE SetLocked(GetObjectByTag("end_door05", 0), 0); if (((int9 < int11) || (nCurHP < nMaxHP))) { CancelCombat(sub1()); CancelCombat(GetFirstPC()); DelayCommand(1.0, sub3()); } } SetGlobalNumber("END_ROOM3_DEAD", (nGlobal + 1)); } else { if ((int1 == 1008)) { } else { if ((int1 == 1009)) { } else { if ((int1 == 1010)) { } else { if ((int1 == intGLOB_21)) { sub4("wp_homebase"); } } } } } } } } } } } } Each default OnEvent script has its own OnUserDefinedEventNumber() that can be used in a script like this to determine which event is triggering OnUserDefined. In this case the OnDeath event number is 1007. Actually this script is decompiled they probably used a switch statement in the original source code instead of these nested if statements. You can also just delete the nested if statements if you want and just check if the event number is 1007. Then just do what they did and check if (nGlobal >= number_of_dead_enemies) then trigger the conversation but make sure to cancel combat like they did: CancelCombat(sub1()); CancelCombat(GetFirstPC()); DelayCommand(1.0, sub3()); sub1() returns Trask and sub3() I'm assuming is ActionStartConversation().