-
Content Count
1,390 -
Joined
-
Last visited
-
Days Won
47
Content Type
Profiles
Forums
Blogs
Forum & Tracker Requests
Downloads
Gallery
Store
Calendar
Everything posted by Salk
-
Excellent job! Thanks for sharing, JackInTheBox!
-
[KotOR] Bastlia's odd spawning on the Ebon Hawk
Salk replied to Salk's topic in Knights of the Old Republic General
Good find, the latter. In the original script there is a senseless ClearAllEffects() in stead of SaveNPCState(). Wonder where it came from... Cheers! -
[KotOR] Bastlia's odd spawning on the Ebon Hawk
Salk replied to Salk's topic in Knights of the Old Republic General
Indeed. I was mentioning the Player only to give an approximate indication to where Bastila spawns, as opposed to where she should spawn (pebn_bastila). I'm not sure why this happens but Bastila (and possibly other NPCs) does not always spawn at the right location. My suspicion is that it is caused by some glitchy timing with the engine which tries to spawns Bastila in the same place where the "old" Bastila was thus spawning her nearby instead. -
Hello! At first I thought it was something due to my heavily modded platform but then I tried removing all .mod files and all the files in my Override and then load a saved game before flying with the Ebon Hawk from one planet to another and the result was the same so I'm wondering if anyone reading here could try and see if this odd behavior could be replicated. In short, what happens is that after arriving to a new planet the game loads the ebo_m12aa module and when it's done Bastila's character will be destroyed (depending on the loading time I could see the character fade away) and immediately respawned a bit closer to the Player. It's just a cosmetic problem but it's still quite irritating. Could someone verify this is an issue with the original game? Thanks! UPDATE: I suspect the culprit is k_pebn_pophawk.ncs
-
I think the lightning idea is a nice one although I also think it would give the best result with animated clouds. I played TSL only once some years ago so forgive me for asking but did you add the bird flock? If that is the case, I think it's very well done.
-
Commendable attempt. It'd be nice to have some Twi'lek variation for sitters.
-
From some preliminary testing it seems the DC and damage for poison grenades and gas mines are both hardcoded. I tried to set flash mines of different power and there was no feedback to read in the message window when enemies triggered them. The adhesive grenade is the only grenade that doesn't seem to allow for a saving throw (I locally have added DC 15 because it doesn't make sense to me).
-
Well, it seems that there is a bug also with the Adhesive Grenades. There is supposed to be a saving throw vs DC 25 while instead there is none: but I would like some confirmation I'm seeing right before opening a K1 CP issue.
-
That's very useful, thanks! I'll have to test it but I hope that my modification to the k_trp_generic script will work. I wanted to add a bonus to damage and DC to mines set by party members that have Heavy Weapon Feat Proficiency or better: float fBonus = 1.0; int nBonus = 0; object oNPC = GetTrapCreator(OBJECT_SELF); //Add damage multiplier bonus if the mine was set by a party member with Heavy Weapons Feat float TP_DamageBonus(object oNPC, float fBonus) { if (IsObjectPartyMember(oNPC)) { if (GetHasFeat(FEAT_WEAPON_PROFICIENCY_HEAVY_WEAPONS, oNPC)) { fBonus += 0.05; if (GetHasFeat(FEAT_WEAPON_SPECIALIZATION_HEAVY_WEAPONS, oNPC)) { fBonus += 0.10; if (GetHasFeat(FEAT_WEAPON_FOCUS_HEAVY_WEAPONS, oNPC)) { fBonus += 0.25; } } } } return fBonus; } //Add DC bonus if the mine was set by a party member with Heavy Weapons Feat int TP_DCBonus(object oNPC, int nBonus) { if (GetIsPC(oNPC)) { if (GetHasFeat(FEAT_WEAPON_PROFICIENCY_HEAVY_WEAPONS, oNPC)) { nBonus += 1; if (GetHasFeat(FEAT_WEAPON_SPECIALIZATION_HEAVY_WEAPONS, oNPC)) { nBonus += 3; if (GetHasFeat(FEAT_WEAPON_FOCUS_HEAVY_WEAPONS, oNPC)) { nBonus += 5; } } } } return nBonus; } Unfortunately it seems the Gas Mines have neither DC nor damage value to improve upon so I'm just wondering what I can do to improve their effectiveness. Cheers! EDIT: Looking better at the original k_trp_generic script I wonder if there are a couple of problems? Isn't the DC for the Flash Mine fixed at 15, no matter what the nDC value is set to? and similarly, the Gas Mines should have a Fortitude ST to resist their effect but I can't see it here:
-
Hello! Does anyone know if there is a way to check in a script whether a mine was set by a party member and, if that is the case, which one in particular? Thanks!
-
Hello! I have not much experience with creating new items and all but what I can tell you is that KotOR Tool allows for adding so called "properties" to item. You may be interested in adding to the sword two "On Hit Properties" that would simulate Plague, namely "Slow" and "Item Poison" (if I interpret the latter correctly, that is). You could set the duration and the DC to save against them using one of the choices given in the menu. I'm sure others could help you more but perhaps this will get you started. Good luck.
-
Do you happen to have also decompiled k_ptat_17ae_area.ncs, @DarthParametric? I'd need to check how the game handles a few globals that are there. Cheers!
-
I'm sorry I can't help you with the technical problem you're having but I just wanted to say your new Force power really looks great. Perhaps our omnipresent angel of modding @DarthParametric will once again save the day. Excellent job!
-
Oh yes, of course. My bad. But the answer is still the same. The order shouldn't matter at all because they change two different files. I don't have Power Blast and Sniper Shot Fix installed at the moment so I cannot test whether it does what it promises but it should apply to bowcasters too. I will see if I can test it myself today and update you about it.
-
Well, I am truly delighted. Thanks, AmanoJyaku! And DP too, of course. I cannot even begin to count how many headaches having these means one year ago would have spared.
-
I modified the necessary files so that the game shows the desired times in dialogues creating this following new file, called on heartbeat in the area: void SetTokenRaceTime(int nToken, int nRacerTime) { // calculate the time components int nMinutes = nRacerTime/6000; int nSeconds = (nRacerTime - (nMinutes * 6000)) / 100; int nFractions = nRacerTime - ((nMinutes * 6000) + (nSeconds * 100)); //building the time string string sTime = IntToString(nMinutes) + ":"; if (nSeconds < 10) { sTime = sTime + "0"; } sTime = sTime + IntToString(nSeconds) + ":"; if(nFractions < 10) { sTime = sTime + "0"; } sTime = sTime + IntToString(nFractions); SetCustomToken(nToken,sTime); } void main() { int QUEEDLE_TIME = 3012; int CASSANDRA_TIME = 2616; int JAX_TIME = 2363; int CHAMP_TIME = 2298; SetTokenRaceTime(18, QUEEDLE_TIME); SetTokenRaceTime(19, CASSANDRA_TIME); SetTokenRaceTime(20, JAX_TIME); SetTokenRaceTime(21, CHAMP_TIME); } This code changes the custom tokens (I have a similar one for Tatooine) in the dialogues so that the times displayed in dialogues are the ones I want. But at the end of each race the game uses a global variable to check whether the player has won or lost and that variable is set using the original racing times. That's why I tried to create a new WON/LOST conditional script that no longer depends on checking that variable but rather compares the Player's time in the last race (which is stored in CUSTOM17 for Manaan) and the opponent's record time. The problem is that there is no way, it seems, to retrieve that CUSTOM17 value from script. And that goes against what that person that wrote the tutorial said. The reason I cannot try and change things directly in the original script is, of course, that it doesn't decompile. Cheers!
-
I'm trying to change the record times to beat for the different tiers in the swoop races on Manaan and Tatooine.
-
It does work in the dialogue file. It's when assigned to a string that doesn't work.
-
I suppose there is no solution then. It's really quite frustrating that Bioware didn't bother writing a simple GetCustomToken function to retrieve the value and it's even more frustrating to find a "tutorial" whose author didn't even bother to test the veracity of their own code. If someone else has any other idea however, I'd be overjoyed. Thanks!
-
Weird... The BarkString DOES return the token's value instead... Either I need more coffee (which I don't drink) like our friend above or the April's fool is on me today. void main { string sLastTimeManaan = GetStringByStrRef(49415); BarkString(OBJECT_SELF, 49415); SendMessageToPC(GetFirstPC(), sLastTimeManaan); } The BarkString() correctly retrieves the value of the token while the message feedback reports <CUSTOM17>. More ideas? Cheers!
-
That's exactly what I did but GetStringByStrRef() returns <CUSTOMxx>, not its value. My STR 49415 is <CUSTOM17> (this should be the token used to store the time for the player's latest race on Manaan). and this is my code: int Result (int nResult) { SetGlobalBoolean("MAN_JUST_RACED", FALSE); return nResult; } int StartingConditional() { if (GetGlobalBoolean("MAN_JUST_RACED") == TRUE) { string sLastTimeManaan = GetStringByStrRef(49415); string sLastTimeManaanMinutes = GetSubString(sLastTimeManaan, 0, 1); string sLastTimeManaanSeconds = GetSubString(sLastTimeManaan, 2, 2); string sLastTimeManaanFractions = GetSubString(sLastTimeManaan, 5, 2); //string sOpponentTimeManaan; if (GetGlobalNumber("CRI_SWP_RESULT") == 1) { //sOpponentTimeManaan = "0:30:12"; if (StringToInt(sLastTimeManaanMinutes) > 0) { return Result(1); } else if (StringToInt(sLastTimeManaanSeconds) > 30) { return Result(1); } else if (StringToInt(sLastTimeManaanSeconds) > 12) { return Result(1); } else { return 0; } } else if (GetGlobalNumber("CRI_SWP_RESULT") == 2) { //sOpponentTimeManaan = "0:26:16"; if (StringToInt(sLastTimeManaanMinutes) > 0) { return Result(1); } else if (StringToInt(sLastTimeManaanSeconds) > 26) { return Result(1); } else if (StringToInt(sLastTimeManaanSeconds) > 16) { return Result(1); } else { return 0; } } else if (GetGlobalNumber("CRI_SWP_RESULT") == 3) { //sOpponentTimeManaan = "0:23:63"; if (StringToInt(sLastTimeManaanMinutes) > 0) { return Result(1); } else if (StringToInt(sLastTimeManaanSeconds) > 23) { return Result(1); } else if (StringToInt(sLastTimeManaanSeconds) > 63) { return Result(1); } else { return 0; } } else { //sOpponentTimeManaan = "0:22:98"; if (StringToInt(sLastTimeManaanMinutes) > 0) { return Result(1); } else if (StringToInt(sLastTimeManaanSeconds) > 22) { return Result(1); } else if (StringToInt(sLastTimeManaanSeconds) > 98) { return Result(1); } else { return 0; } } } else { return 0; } }
-
Hello again! I was wondering if someone would know how to retrieve the value of custom tokens. The game doesn't unfortunately have a GetCustomToken() function but earlier I found something that gave me hope, although it was short-lived. There is this tutorial from I don't know when and by I don't know who which says: Custom Tokens: The Custom Tokens are slightly different from the Game Tokens. For one thing, to use them them you have to use the format <CUSTOM#>, where "#" is a number between 0 to 2147483647. In practice, however, the game uses 0-9 and the WhereAmI band mod uses 61 and 62, so I'd avoid those in TSL. Also, in K1, the K1R mod uses 1998-2030(or around there) for the Pazaak Tourney, so I'd really avoid those...:) To set a Custom Token: void main() { // Syntax for the function: SetCustomToken(int iTokenToSet, string sMessage) SetCustomToken(2000, "Hi, I'm token 2000!"); } Though there is no GetCustomToken function, you can still check the value in a script: void main() { string sToken = "<CUSTOM2000>"; if(sToken == "Hi, I'm token 2000") { SendMessageToPC(GetFirstPC(), "Yep, this is it."); } else { SendMessageToPC(GetFirstPC(), "No, it's not it."); } } Unfortunately it seems that string sToken returns "<CUSTOM2000>" rather than the content of the token. The NWN Lexicon here under "Token Duplication" speaks of another method using two other functions that are not present in KotOR (SetLocalString() and GetLocalString()). The game uses <CUSTOM17> and <CUSTOM 26> to store the time for the latest swoop race and I need to retrieve those values. Any idea? Thanks a lot!