ttlan

Daraala has definitely gone

Recommended Posts

I always chose to offer Daraala the corpses of the two dead salvagers with the will unchanged (this is the best solution by far).

 

She goes to see Zherron.

 

Just change of map and come back and she is back with a lot of new objects.

 

Since 1.7, she never came back!

 

I've redo several times this action and then I went to a couple of other planets and she is still not back!

Share this post


Link to post
Share on other sites

Intended behavior (Aka, a bugfix).

When she came back she was completely reset (like a new NPC), so now she never does that...

Share this post


Link to post
Share on other sites
Guest staticjoe66

Interesting as even when I play a LS Exile I take the DS hit, fudge the will and grab the loot...

 

I always chose to offer Daraala the corpses of the two dead salvagers with the will unchanged (this is the best solution by far).

 

She goes to see Zherron.

 

Just change of map and come back and she is back with a lot of new objects.

 

Since 1.7, she never came back!

 

I've redo several times this action and then I went to a couple of other planets and she is still not back!

Share this post


Link to post
Share on other sites

Intended behavior (Aka, a bugfix).

When she came back she was completely reset (like a new NPC), so now she never does that...

 

 

Hmm ...

 

I did not understand what you say, HH ... if not a little humor, which is good.

 

If

Daraala = bug

then

no Daraala = no bug !

 

It's quite... radical !

 

What is the resetting cause?

 

What was reset?

 

What bug have you tried to correct?

 

Under what circumstances this bug happen?

 

I played a lot with Daraala and her two inventories. I've even driven her, on numerous occasions, far from her camp and tried to get her killed by kinraths and kaths. I've never encountered any bug.

 

What follows will be given to this problem?

Share this post


Link to post
Share on other sites

Once she was gone, her 'returning' (with the second inventory as you mention) was the bug. Since she can't return as she left, but only by a copy being re-added (acting like she never was interacted with in the first place), we decided to just leave her gone instead of fix the issue of this reset.

Share this post


Link to post
Share on other sites

Once she was gone, her 'returning' (with the second inventory as you mention) was the bug. Since she can't return as she left, but only by a copy being re-added (acting like she never was interacted with in the first place), we decided to just leave her gone instead of fix the issue of this reset.

 

Oh... That's that.

 

I noticed this little problem of conversation that restarts a few back, in the Kotor 2 handbook, years ago.

 

It's unimportant compared to the management of the corpses and the will, and compared to the energy crystals that can be got from her in this situation, especially if one starts with Dantooine.

 

In addition, this story of a testament is one of the riddles of Kotor 2. If the restore Mod destroy an entire part of the game, where are we going?

 

Simply let her return. The second inventory and the all thing in far much more important than a simple piece of conversation that restart.

 

I am surprised that the progression of the quest can not be used to know where you are with Daralaa and preventing the recurrence of this conversation (reprise irrelevant incidentally).

Edited by ttlan

Share this post


Link to post
Share on other sites

Doesn't fix her reset inventory.

Besides that, she wouldn't take the corpses pre-TSLRCM. Now she does.

 

In addition, this story of a testament is one of the riddles of Kotor 2. If the restore Mod destroy an entire part of the game, where are we going?

I have no idea what you mean here.

You still got the 3 options;

1. Rig the Will and give it to Zherron (best, DS)

2. Give it to Daraala (gets you a few creds, but she screws you over for that.)

3. Give everything intact to Zherron. No reward but LS, and you gotta keep Daraala, even if she isn't too happy about you.

Share this post


Link to post
Share on other sites

Doesn't fix her reset inventory.

Besides that, she wouldn't take the corpses pre-TSLRCM. Now she does.

 

But what's te problem with the inventory ?

 

I've track hundred of times the inventory before and after with no problem (no lost items...).

On this page, some spreedsheet explaining how to choose a loot before and how to choose a loot after.

http://assiste.free.fr/kotor_2/073_dantooine_jorran_daraala_testament.html

 

Well, if you have problem with her real go out and return , replace it by a

 

Fade out of the caracteer

Add the loot (second inventory) to the first one

Fade in

Share this post


Link to post
Share on other sites

Doesn't fix her reset inventory.

Besides that, she wouldn't take the corpses pre-TSLRCM. Now she does.

 

I return on this case because I am deeply shocked.

 

Let explain what would happen when giving the unmodified will, and the corpses, to Daraala (because, a priori, players use the simplest alternative: make a fake will, and go see Zherron, "win" a Dark Side point and get two or three objects from Zherron).

 

In giving an unmodified will to Daraala, she will go and see Zherron. She, therefore, disappear a moment from Khoonda plain. We must leave the map and come back and Daraala has returned.

 

When she returns, she added to her inventory everything Zherron gave her. They are no longer the only two or three objects, such those retrieved by our self with the false will. There are now approximately fifteen new items including many energy crystals and armours (the other objects are of no interest because we know how to make them using a workbench).

 

We chose an initial inventory of Daraala (hint to select an inventory from a vendor).

 

We give her the corpses and the true will (and we refuse her money, for a Light Side point).

 

In addition, there are subtleties:

 

You give the corpses and the equipment to Daraala for bury them in dignity and refuse the reward of 1000 credits. PX 300 and LSP. But, if you spoke with Jorran about the Daraala intent for these corpses, and her hypocrisy, you are naturally no more inclined to play the great lords with Daraala and there is no more the dialog option that allows you to refuse its 1000 credits (so no LSP).

 

We chose a second inventory of Daraala (hint to select an inventory from a vendor).

 

Here is a record of such transactions:

 

The first inventory was "fixed" (anything that appears on a white background). The seventeenth inventory attempt is held in this demo. Things that appears on yellow background are things of some interest in my opinion.

A = Armour

B = Robe

 

068_inventaire_daraala_1.gif

 

 

The second inventory was attempted several times - 7 attempts are reproduced (all objects that appear on a blue background, or modified quantities, are what got Daraala from Zherron). The ninth inventory attempt is held in this demo, with 4 Nextor and 2 Eralam.

 

068_inventaire_daraala_2.gif

 

 

So, as you can see, the deal with Daraala is, from far, the best way.

 

Now, there is a little bug : when Daraala has returned and we open a new conversation with her, the conversation restart at the beginning, as if we had never talk to her before. She ask us to retrieve the corpses and so on...

 

TSLRCM 1.7 has found a solution : complete and definitive suppression of the character Daraala after you give her the corpses and the will. So, no more second inventory, and no more first inventory.

 

Scandalous !

 

For a little bug about a dialog that restart, the solution is worst than the ache.

 

Consequence: it is no more question of her second inventory!

 

Worse, it is even no more question of her first inventory that went with her!

 

And if you're a skilled player, you can have fun with Daraala (here, I've drawn her far away from her camp and I've tried to get her killed by concentrating attacks from the kinraths on her, to see if there was something to retrieve on her corpse - her complete inventory perhaps. I've never be able to go until her death - only a significant loss of life points).

 

066_daraala_contre_kinrath.gif

Share this post


Link to post
Share on other sites

You don't seem to grasp that her "second inventory" IS the bug, more so than the dialogue.

 

While "It's the items Zherron gave her (where are the lightsabers?)" is nice reasoning, it's still reasoning why buggy behavior happens.

 

EDIT: Vendors don't drop their inventories on death, just see Kodin or the Dantooine Mechanic Merchant.

Share this post


Link to post
Share on other sites

You don't seem to grasp that her "second inventory" IS the bug, more so than the dialogue.

 

While "It's the items Zherron gave her (where are the lightsabers?)" is nice reasoning, it's still reasoning why buggy behavior happens.

 

EDIT: Vendors don't drop their inventories on death, just see Kodin or the Dantooine Mechanic Merchant.

 

Oh la la !!!

 

You did not understand anything at the loot with that fake will / real will, and the loot with the inventory of the vendor Daraala.

 

There is no lightsaber sold by vendors! Never! You can only find them or have them deliver.

 

So if you listened to the sirens of some players who complain about not having a lightsaber in the lot hijacked by Daraala, you're mistaken. And we can quite say that, there will be no lightsaber offered, as long as you do not make your first lightsaber, by yourself (I say "offered" - you can kill Lootra, for example) because the first action, no matter which, that lead to a lightsaber offered, takes place long after you have obtained all the pieces that allow you to manufacture your first lightsaber.

 

There are two separate lotteries for the testament of the dead salvager:

 


  •  
  • Either you give the testament, unchanged, to Daraala, and there is a lottery of the type "reseller" (this means : differents items but no lightsaber).
  • Either you make a false will that you give to Zherron. Here, there are two cases of fig. What contains the legacy that you have hijacked?
     

    1.  
    2. If you have not yet faced Visas, there is, in this lot, the last piece that you lacked to make your first lightsaber and one or two other pieces (if the other parts do not suit you, replace them with the usual trick).
    3. If you have already got, somewhere, the last piece to make your first lightsaber (if you chose to go back aboard the Ebon Hawk before negotiating the fake testament with Zherron, and you have already faced Visas), it's now, with Zherron, that you have, in legacy of the dead salvager, a lightsaber and something else).

     

 

 

Vendors don't drop their inventories on death, just see Kodin or the Dantooine Mechanic Merchant.

 

Yes, I know. It was for the fun (As I always say: play with the game in addition to playing at the game, and do more than what is merely apparent.)

 

TTLan

Share this post


Link to post
Share on other sites

No, there are 3. I already showed all 3 above.

You still don't get that the re-plenished store was, infact, a bug.

Share this post


Link to post
Share on other sites

No, there are 3. I already showed all 3 above.

You still don't get that the re-plenished store was, infact, a bug.

 

HH - I am speaking only of essentials.

 

I do not care about your third case wich is unimportant and uninteresting.

 

If you want to go by there, there are two other cases that I have not mentioned:

 

The fourth case is the false testament given to Daraala.

 

The fifth case is that of keeping the corpses and the will (do nothing).

 

The second inventory, that add to the first, is not a bug and is of an implacable logic.

 

Who said it was a bug? With what authority one is allowed to judge that a behavior is a bug and to remove the work of Obsidian.

 

The problem is the dialogue that restarts. This is a bug. But the management of the second inventory, recovered by Daraala from Zherron, have sense and leaves no doubt to think it is a bug.

 

Do you admit, at least, that the inventory of Daraala is expanding after meeting Zherron? And what items do you think should be added to the inventory of Daraala?

 

It can not be a bug because what we recover from a fake will from Zherron can not be identical to what Daraala recover from Zherron when she struts with this fake will.

 

 

I, more especially, think that the will of Obsidian is to increase the inventory of Daraala. This is of a logic that brooks no dissent. Given the problems they have experienced with delays to deliver the game to LucasArts, they chose a shortcut : the conversation restarts. The inventory increases, THIS IS NOT a bug. This is definitely a desire from Obsidian. The opposite would have been a bug.

 

The bug on the conversation, or we would treat it as Obsidian should treat it if they have had time, or we don't care and we do not affect, we do not degrade, the logic of the game.

Share this post


Link to post
Share on other sites
I do not care about your third case wich is unimportant and uninteresting.

Ehm, sure, whatever.

The fourth case is the false testament given to Daraala.

Makes no difference though, unlike when giving to Zherron. Thus I fail to see your point.

The fifth case is that of keeping the corpses and the will (do nothing).

That's not really completing the quest though (Well, sure, it completes after the battle of Khoonda but still).

The second inventory, that add to the first, is not a bug

Yup, it's one.

and is of an implacable logic.

I've had my fair deal of you explaining bugs are intentional OE behavior though...

Who said it was a bug?

We (Stoney and I) based on what was found in dialogue and script. It doesn't match your explenation.

With what authority one is allowed to judge that a behavior is a bug and to remove the work of Obsidian.

Here we go again. If we acted like you would, keeping all exploits intact, like infinte DS/LS/XP/INF glitches, KOTOR2 would remain in it's glitchy state it was released in due to rushing.

The problem is the dialogue that restarts.

That's she's ENTIRELY RESET is the bug. Convo *AND* re-invogorated inventory. I am not sure what's so hard to understand about that.

But the management of the second inventory, recovered by Daraala from Zherron, have sense and leaves no doubt to think it is a bug.

It's NOT a second inventory. Second inventories or special inventory adjustments are really easy to recognise, seeing how they are handled entirely different (think special stocks on Telos, discount on Nar Shaddaa/Onderon, or the workings of Geeda). No such code for Daraala though. Odd, isn't it?

Here it is;

// Globals
int intGLOB_1 = 0;
int intGLOB_2 = 1;
int intGLOB_3 = 2;
int intGLOB_4 = 3;
int intGLOB_5 = 4;
int intGLOB_6 = 5;
int intGLOB_7 = 6;
int intGLOB_8 = 7;
int intGLOB_9 = 8;
int intGLOB_10 = 9;
int intGLOB_11 = 10;
int intGLOB_12 = 11;
int intGLOB_13 = 12;
int intGLOB_14 = 13;
int intGLOB_15 = 14;
int intGLOB_16 = 15;
int intGLOB_17 = 16;
int intGLOB_18 = 17;
int intGLOB_19 = 18;
int intGLOB_20 = 19;
int intGLOB_21 = 1100;
int intGLOB_22 = (-6);
int intGLOB_23 = (-5);
int intGLOB_24 = (-4);
int intGLOB_25 = (-2);
int intGLOB_26 = (-1);
int intGLOB_27 = 0;
int intGLOB_28 = 1;
int intGLOB_29 = 1;
int intGLOB_30 = 2;
int intGLOB_31 = 3;
int intGLOB_32 = 4;
int intGLOB_33 = 5;
int intGLOB_34 = 6;
int intGLOB_35 = 7;
int intGLOB_36 = 8;
int intGLOB_37 = 9;
int intGLOB_38 = 10;
int intGLOB_39 = 11;
int intGLOB_40 = 12;
int intGLOB_41 = 13;
int intGLOB_42 = 14;
int intGLOB_43 = 15;

// Prototypes
string sub3(int intParam1);
string sub2(int intParam1, int intParam2);
string sub1(int intParam1, int intParam2);

string sub3(int intParam1) {
switch (intParam1) {
	case 111:
		return "w_blaste_";
	case 121:
		return "w_brifle_";
	case 131:
		return "w_melee_";
	case 141:
		return "g_w_lghtsbr";
	case 142:
		return "g_w_shortsbr";
	case 143:
		return "g_w_dblsbr0";
	case 211:
		return "u_r_targ_";
	case 212:
		return "u_r_firi_";
	case 213:
		return "u_r_powe_";
	case 221:
		return "u_m_grip_";
	case 222:
		return "u_m_edge_";
	case 223:
		return "u_m_cell_";
	case 231:
		return "u_a_over_";
	case 232:
		return "u_a_unde_";
	case 241:
		return "u_l_emit_";
	case 242:
		return "u_l_lens_";
	case 243:
		return "u_l_cell_";
	case 244:
		return "u_l_crys_";
	case 245:
		return "u_l_colo_";
	case 311:
		return "a_belt_";
	case 321:
		return "a_gloves_";
	case 331:
		return "a_helmet_";
	case 341:
		return "e_imp1_";
	case 342:
		return "e_imp2_";
	case 343:
		return "e_imp3_";
	case 344:
		return "e_imp4_";
	case 411:
		return "a_heavy_";
	case 421:
		return "a_medium_";
	case 431:
		return "a_light_";
	case 441:
		return "a_robe_";
	case 511:
		return "d_utility_";
	case 521:
		return "d_interface_";
	case 531:
		return "d_armor_";
	case 541:
		return "d_shield_";
	case 551:
		return "d_device_";
}
return "";
}

string sub2(int intParam1, int intParam2) {
int int1 = 0;
int int2;
int nGlobal = GetGlobalNumber("G_PC_LEVEL");
string string1 = IntToString(intParam1);
string string3 = "";
if ((intParam1 < 10)) {
	string1 = ("0" + string1);
}
if ((intParam2 == 0)) {
	if ((nGlobal < 4)) {
		int2 = (Random(3) + 1);
	}
	else {
		int2 = (Random(4) + 1);
	}
	if (((int2 == 2) && (Random(100) < 50))) {
		int2 = 3;
	}
	string3 = sub2(intParam1, (int2 * 100));
}
else {
	if (((intParam2 % 100) == 0)) {
		switch ((intParam2 / 100)) {
			case 1:
				int1 = 3;
				break;
			case 2:
				if (((intParam1 < 6) || (nGlobal < 10))) {
					int1 = 3;
				}
				else {
					int1 = 4;
				}
				break;
			case 3:
				int1 = 4;
				break;
			case 4:
				int1 = 4;
				break;
			case 5:
				int1 = 5;
				break;
		}
		int2 = (Random(int1) + 1);
		string3 = sub2(intParam1, (intParam2 + (10 * int2)));
	}
	else {
		if (((intParam2 % 10) == 0)) {
			switch ((intParam2 / 10)) {
				case 14:
					int1 = 3;
					break;
				case 21:
					int1 = 3;
					break;
				case 22:
					int1 = 3;
					break;
				case 23:
					int1 = 2;
					break;
				case 24:
					int1 = 5;
					break;
				case 34:
					int1 = (GetAbilityModifier(2, GetFirstPC()) + Random(2));
					if ((int1 > 4)) {
						int1 = 4;
					}
					break;
			}
			int2 = (Random(int1) + 1);
			string3 = sub2(intParam1, (intParam2 + int2));
		}
		else {
			switch (intParam2) {
				case 141:
					intParam1 = ((intParam1 - 3) / 3);
					if ((intParam1 == 6)) {
						intParam1 = 5;
					}
					string1 = IntToString(intParam1);
					if ((intParam1 < 10)) {
						string1 = ("0" + string1);
					}
					break;
				case 142:
					intParam1 = ((intParam1 - 3) / 3);
					if ((intParam1 == 6)) {
						intParam1 = 5;
					}
					string1 = IntToString(intParam1);
					if ((intParam1 < 10)) {
						string1 = ("0" + string1);
					}
					break;
				case 143:
					intParam1 = ((intParam1 - 3) / 3);
					if ((intParam1 == 6)) {
						intParam1 = 5;
					}
					string1 = IntToString(intParam1);
					if ((intParam1 < 10)) {
						string1 = ("0" + string1);
					}
					break;
				case 211:
					intParam1 = (intParam1 / 2);
					string1 = IntToString(intParam1);
					if ((intParam1 < 10)) {
						string1 = ("0" + string1);
					}
					break;
				case 212:
					intParam1 = (intParam1 / 2);
					string1 = IntToString(intParam1);
					if ((intParam1 < 10)) {
						string1 = ("0" + string1);
					}
					break;
				case 213:
					intParam1 = (intParam1 / 2);
					string1 = IntToString(intParam1);
					if ((intParam1 < 10)) {
						string1 = ("0" + string1);
					}
					break;
				case 221:
					intParam1 = (intParam1 / 2);
					string1 = IntToString(intParam1);
					if ((intParam1 < 10)) {
						string1 = ("0" + string1);
					}
					break;
				case 222:
					intParam1 = (intParam1 / 2);
					string1 = IntToString(intParam1);
					if ((intParam1 < 10)) {
						string1 = ("0" + string1);
					}
					break;
				case 223:
					intParam1 = (intParam1 / 2);
					string1 = IntToString(intParam1);
					if ((intParam1 < 10)) {
						string1 = ("0" + string1);
					}
					break;
				case 241:
					intParam1 = ((intParam1 - 6) / 2);
					if ((intParam1 < 1)) {
						intParam1 = 1;
					}
					string1 = IntToString(intParam1);
					if ((intParam1 < 10)) {
						string1 = ("0" + string1);
					}
					break;
				case 242:
					intParam1 = ((intParam1 - 6) / 2);
					if ((intParam1 < 1)) {
						intParam1 = 1;
					}
					string1 = IntToString(intParam1);
					if ((intParam1 < 10)) {
						string1 = ("0" + string1);
					}
					break;
				case 243:
					intParam1 = ((intParam1 - 6) / 2);
					if ((intParam1 < 1)) {
						intParam1 = 1;
					}
					string1 = IntToString(intParam1);
					if ((intParam1 < 10)) {
						string1 = ("0" + string1);
					}
					break;
				case 244:
					intParam1 = (intParam1 - 5);
					if ((intParam1 < 1)) {
						intParam1 = 1;
					}
					string1 = IntToString(intParam1);
					if ((intParam1 < 10)) {
						string1 = ("0" + string1);
					}
					break;
				case 245:
					intParam1 = (((intParam1 - 5) / 3) + 2);
					if ((intParam1 < 4)) {
						intParam1 = 4;
					}
					if ((intParam1 == 6)) {
						intParam1 = 5;
					}
					if ((intParam1 > 9)) {
						intParam1 = 9;
					}
					intParam1 = (Random(intParam1) + 1);
					string1 = IntToString(intParam1);
					if ((intParam1 < 10)) {
						string1 = ("0" + string1);
					}
					break;
				case 341:
					intParam1 = (intParam1 / 3);
					string1 = IntToString(intParam1);
					if ((intParam1 < 10)) {
						string1 = ("0" + string1);
					}
					break;
				case 342:
					intParam1 = (intParam1 / 3);
					string1 = IntToString(intParam1);
					if ((intParam1 < 10)) {
						string1 = ("0" + string1);
					}
					break;
				case 343:
					intParam1 = (intParam1 / 3);
					string1 = IntToString(intParam1);
					if ((intParam1 < 10)) {
						string1 = ("0" + string1);
					}
					break;
				case 344:
					intParam1 = (intParam1 / 3);
					string1 = IntToString(intParam1);
					if ((intParam1 < 10)) {
						string1 = ("0" + string1);
					}
					break;
				case 411:
					intParam1 = (intParam1 / 2);
					if ((intParam1 < 1)) {
						intParam1 = 1;
					}
					string1 = IntToString(intParam1);
					if ((intParam1 < 10)) {
						string1 = ("0" + string1);
					}
					break;
				case 421:
					intParam1 = (intParam1 / 2);
					if ((intParam1 < 1)) {
						intParam1 = 1;
					}
					string1 = IntToString(intParam1);
					if ((intParam1 < 10)) {
						string1 = ("0" + string1);
					}
					break;
				case 431:
					intParam1 = (intParam1 / 2);
					if ((intParam1 < 1)) {
						intParam1 = 1;
					}
					string1 = IntToString(intParam1);
					if ((intParam1 < 10)) {
						string1 = ("0" + string1);
					}
					break;
				case 441:
					intParam1 = (intParam1 / 2);
					if ((intParam1 < 1)) {
						intParam1 = 1;
					}
					string1 = IntToString(intParam1);
					if ((intParam1 < 10)) {
						string1 = ("0" + string1);
					}
					break;
				case 511:
					intParam1 = (intParam1 / 2);
					if ((intParam1 < 1)) {
						intParam1 = 1;
					}
					string1 = IntToString(intParam1);
					if ((intParam1 < 10)) {
						string1 = ("0" + string1);
					}
					break;
				case 521:
					intParam1 = (intParam1 / 2);
					if ((intParam1 < 1)) {
						intParam1 = 1;
					}
					string1 = IntToString(intParam1);
					if ((intParam1 < 10)) {
						string1 = ("0" + string1);
					}
					break;
				case 531:
					intParam1 = (intParam1 / 2);
					if ((intParam1 < 1)) {
						intParam1 = 1;
					}
					string1 = IntToString(intParam1);
					if ((intParam1 < 10)) {
						string1 = ("0" + string1);
					}
					break;
				case 541:
					intParam1 = (intParam1 / 3);
					if ((intParam1 < 1)) {
						intParam1 = 1;
					}
					if ((intParam1 > 6)) {
						intParam1 = (intParam1 - 4);
					}
					string1 = IntToString(intParam1);
					if ((intParam1 < 10)) {
						string1 = ("0" + string1);
					}
					break;
				case 551:
					intParam1 = (intParam1 / 2);
					if ((intParam1 < 1)) {
						intParam1 = 1;
					}
					string1 = IntToString(intParam1);
					if ((intParam1 < 10)) {
						string1 = ("0" + string1);
					}
					break;
			}
			string3 = (sub3(intParam2) + string1);
		}
	}
}
return string3;
}

string sub1(int intParam1, int intParam2) {
string string1 = sub2(intParam1, intParam2);
return string1;
}

void main() {
if ((GetLocalBoolean(OBJECT_SELF, 58) == 0)) {
	SetLocalBoolean(OBJECT_SELF, 58, 1);
	int int2 = 6;
	int int3;
	int int4 = 1;
	string string1 = sub1((Random(5) + 5), 440);
	CreateItemOnObject(string1, GetObjectByTag("store_daraala", 0), int4, 0);
	string1 = sub1((Random(5) + 9), 440);
	CreateItemOnObject(string1, GetObjectByTag("store_daraala", 0), int4, 0);
	string1 = sub1((Random(5) + 13), 440);
	CreateItemOnObject(string1, GetObjectByTag("store_daraala", 0), int4, 0);
	string1 = sub1((Random(5) + 13), 244);
	CreateItemOnObject(string1, GetObjectByTag("store_daraala", 0), int4, 0);
	string1 = sub1((Random(5) + 13), 244);
	CreateItemOnObject(string1, GetObjectByTag("store_daraala", 0), int4, 0);
	int2;
	while ((int2 < 21)) {
		{
			string string7 = sub1(int2, 240);
			if ((int2 < 10)) {
			int4 = (Random(2) + 1);
			}
			else {
			int4 = 1;
			}
			if ((int3 = FindSubString(string7, "[") >= 0)) {
			int4 = StringToInt(GetSubString(string7, (int3 + 1), 4));
			string1 = GetSubString(string7, 0, int3);
			}
			else {
			string1 = string7;
			}
			CreateItemOnObject(string1, GetObjectByTag("store_daraala", 0), int4, 0);
		}
		(int2++);
	}
}
}

Share this post


Link to post
Share on other sites

Anyone who can read code do notices how the "main" section compared to NPC reset (No more local 58) leads to the issue you see happening though. But nowhere in here does it add stock based on quest-stuff, unless I miss it. Tell me where I misread the code that this is intentionally done because of going to Zherron?

Do you admit, at least, that the inventory of Daraala is expanding after meeting Zherron? And what items do you think should be added to the inventory of Daraala?

See the 'main' section of the code above why this happens. Local is missing, itemstock is generated (even though there already is one). Result? What you see happening. Intentional? Not exactly...

The inventory increases, THIS IS NOT a bug. This is definitely a desire from Obsidian. The opposite would have been a bug.

The inventory increases, THIS IS A BUG! This is definitely not the desire from Obsidian. What happens is a bug. It's pretty obvious.

The bug on the conversation, or we would treat it as Obsidian should treat it if they have had time, or we don't care and we do not affect, we do not degrade, the logic of the game.

They would have fixed it, seeing how the reason the inventory increases is due to a logical error (NPC Reset, locals reset, newly inventory spawned even though this process should happen once, not more than once).

Any avarage coder (hell, even me) could see the cause of this bug inside the code provided.

 

EDIT: Okay, I looked at it all, and it's definitely fixable to make her return without dialogue re-setting or re-invigorating the inventory (by adding local 58 back to her before having the option to open shop). I just need Stoney to revert the change for never making her come back, and a second script for 3 checks, since the .dlg editor can only take 2 conditions (and while I can read code, writing it is another thing entirely).

Edited by Hassat Hunter
Research!

Share this post


Link to post
Share on other sites

Okay, I looked at it all, and it's definitely fixable to make her return without dialogue re-setting.

 

Thanks a lot, HH.

 

HH,

 

I fully understand that the shortcut chosen by Obsidian leads, purely and simply, to the sum of two inventories. However, where is the problem?

 

It is unthinkable that the return of Daraala happen without new products added to her inventory. It is the purpose of her approach. It is also the purpose of our approach (us, the players) after testing various options.

 

That the increase of the inventory of Daraala be done by the sum of two inventories of the type "Initial Opening of a seller store", is not a problem. Where is the problem? The two dead salvagers, including the one with the will, are supposed to be the very first to set foot in the lower level of the Enclave. They are suposed to reap countless objects of great value.

 

The reverse should happen. In fact, the bug, if there is a bug, is rather on the side of the content of the legacy we usurp, when we go to see Zherron ourselves with a false will. This legacy should be the same as the second inventory of Daraala, eventualy with a lightsaber in addition, under scenaristical conditions.

 

We understand, although forced and resigned, that the game can not offer, freely, 15 or 20 items when we deal the false will with Zherron.

 

By the way: why? I do not know why the game can not offer, freely, 15 or 20 items, because we have inherited of them!

 

Really? The actual legacy left by Zherron skews the notion of inheritance of the scrap dealers. In pure logic, this legacy should be the same as the famous second Daraala inventory. That is the bug, if we find a bug.

 

I do not understand that increasing the inventory of Daraala, which will roughly and simply double the number of items for sale, is a problem. We will have, as usual, to choose and buy items normally, "working" at our purchases / sales to manage our funds. Where is the problem?

 

The only real problem is the shortcut found by Obsidian: the restart of the conversation. The increase of the inventory of Daraala is, itself, on its side, perfectly correct.

 

This partially corrects, for Daraala only, the poverty of the inventories of all the sellers in Kotor 2. Those inventories are ridiculous. There are objects (you can see them with KSE) that will never be found or put on sale (thank you, TSLRCM, for partially remedied this problem by allowing some objects to finally appear, either from vendors, or by being found automatically).

 

There is of what to roar at seeing the inventory of Kex, gunsmith of the Mandalorians armies! Mandalore himself tells us they have retrieved full of weapons from caches and have too much supply for their needs! The Kex inventory should include the complete collection of mandalorians armours and weapons, plus some others, in monstrous quantities (i.e. 50 to 100 copies of each). I am not talking about injections and others gadgets we are able to manufacture by ourselves. If we want to make the game a little more epic, an approach is precisely to be able to equip themselves with the resellers. Only Jedi artefacts are quests and can not be found (should not be found) in the resellers inventories.

 

In the same vein and at the same place.

 

Let's talk about the lower level of the enclave, which should provide plenty of Jedi artefacts to scrap dealers - now dead - but also to us, as we are going to search this area more intelligently than the scrap dealers because we are at home in the Enclave.

 

Adare says she needs the levy on the price of the artefacts found in the Jedi Enclave in order to rebuild Telos.

 

One cannot think to calculate, as a child, that to rebuild a planet, like Telos, it is counted in billions of credits. Therefore, if Adare takes 10%, we must find objects for tens of billions of credits in the lower level of the Enclave, which was not searched, except by those scrap dealers and by us.

 

Did you noted the list and the value of the miserable pittance found? Again, as with the vendors, there is a bug on lotteries objects. The lower level of the Enclave would be the cave of Ali Baba!

 

 

since the .dlg editor can only take 2 conditions

 

I thought that the "Continue" clause was usable to add more than 2 conditions or two actions.

 

 

int nGlobal = GetGlobalNumber("G_PC_LEVEL");

 

Why not introduce a correction, everywhere, to an old bug that happen for all loots in K2 (not in K1 where level is limted to 20). Something like

 

if (nGlobal > 30)

{

int nGlobal = 28;

}

 

This will avoid null loot when item level > 30 (nGlobal + "X"; X depending on RareItemChance when used).

Share this post


Link to post
Share on other sites

It's written all over the dialogue that she tries to con you. Where does a full extra set of items come into "con" territory? I provided the code, clearly you can also see it's NOT intentional.

I thought that the "Continue" clause was usable to add more than 2 conditions or two actions.

While one *could* do that, it's sloppy, amateuristic and leads to graphical glitches (the camera going to nowhere for a split second, which IS amateuristic). If I ever find a dialogue that works like that I modify it to work flawless *and* not have this 'skipping' problem. So no, I am not going to "fix" it like that...

Why not introduce a correction, everywhere, to an old bug that happen for all loots in K2 (not in K1 where level is limted to 20).

These stores can only be partially de-compressed. Re-compressing them (if even possible) and then stuffing them in TSLRCM is asking for crashes.

Share this post


Link to post
Share on other sites

Testing 3 conditions with only 2 slots.

 

Would the easiest way be to create a new script, testing two conditions one shot?

Share this post


Link to post
Share on other sites
Guest Mallic

Hmm...also, to provide a non-coding-related answer, isn't having Daraala simply disappear more in-character for her? She's OBVIOUSLY only wanting the will and the corpses so she can claim the salvage for herself.

 

Doesn't it make more sense to assume that she does just that, manages to make a very considerable amount of credits, and thus, leaves Dantooine forever to spend her big score? After she's conned US, the player, it makes more sense that she wouldn't show up again in front of our now possibly-homicidal Jedi. :(

Share this post


Link to post
Share on other sites

Welcome Mallik,

 

We are not here to redesign the scenario of Obsidian, but to restore the deleted scenes and fix bugs. And above all, not to cut by ourselves scenes!

 

Daraala gets the inheritance, thereby increasing its inventory.

 

It is true that it had been better that a second lottery, different from the first, takes place. For now, they are two similar lotteries (not giving the same results, the principle of the lottery, but similar) that increase its inventory.

 

And then!

 

There are already enough problems with inventories of all vendors with, precisely, lack of items and certain items that never appear.

 

I really do not see the shadow of the beginning of a problem with this double lottery instead of two different lotteries.

 

The real bug, as I have already explained, is the legacy negotiated between with the Exile and Zherron. This legacy should be made of a lottery similar to the second lottery of Daraala with something more (depending on the progression).

 

One of the main things critical acclaim with the release of this game is precisely the fact that Obsidian has greatly increased capabilities for the adjustments of various objects at the bench, compared to "Kotor 1 " from Bioware .

 

Whether it's an opportunity to get a lot of items approximately just when we are going to be able to make our first lightsaber falls at just the right moment (which is not a mere coincidence in the script).

Share this post


Link to post
Share on other sites
I really do not see the shadow of the beginning of a problem with this double lottery instead of two different lotteries.

Except that it's the result of a bug?

But I guess some bugs are really easy for you to slip through the fingers...

Share this post


Link to post
Share on other sites

Yes, HH

 

The Bug is to use the same dialogue script twice, not the principle of two lotteries that add together.

 

I have well understand that this is a writing problem. It has been, certainly, the same writting problem for Obsidian who has certainly struggled with it without finding the time to fix it.

 

Perhaps Obsidian used voluntarily this repetition in order to save development time, because the goal is to make the loot twice.

 

The bug is not in the twice lottery but in the twice dialogue.

 

The twofold lottery is something required.

 

Unfortunately, the twice dialogues can be seen, can be hear. I reported this bug long before the beginning of the writing of my site.

 

By cons, the double lottery (or two different) is a necessity. I would have reported a bug if Daraala had returned empty-handed (and I report a bug with what is retrieved from Zherron).

 

And, HH, believe that I completely understand the difficulty in writting this with what you explain to me. I wrote enough of millions of lines of code, including assembler, for never saying more in this topic if others had not restarted it.

 

Beyond debug TSLRCM and K2, I act as the flame keeper. I can discuss, see protest against some options, but I totally respect your work and do not discuss about what I do not know.

Share this post


Link to post
Share on other sites

Okay ttlan, look.

 

Let's look at this step by step why the two inventories is INDEED a bug.

 

1 - Daraala is NOT supposed to disappear under any circumstances. There are dialog lines for her for each of the 3 endings to the will quest. I'm not sure why she's being removed from the module, but it doesn't seem like she should be. That happening alone is causing this to occur.

 

I hate to repost this script as it takes up a lot of room, but the conditional to prevent the double stocking is already in place:

 

Note the commands in bold.

 

void main() {

if ((GetLocalBoolean(OBJECT_SELF, 58) == 0)) {

SetLocalBoolean(OBJECT_SELF, 58, 1);

int int2 = 6;

int int3;

int int4 = 1;

string string1 = sub1((Random(5) + 5), 440);

CreateItemOnObject(string1, GetObjectByTag("store_daraala", 0), int4, 0);

string1 = sub1((Random(5) + 9), 440);

CreateItemOnObject(string1, GetObjectByTag("store_daraala", 0), int4, 0);

string1 = sub1((Random(5) + 13), 440);

CreateItemOnObject(string1, GetObjectByTag("store_daraala", 0), int4, 0);

string1 = sub1((Random(5) + 13), 244);

CreateItemOnObject(string1, GetObjectByTag("store_daraala", 0), int4, 0);

string1 = sub1((Random(5) + 13), 244);

CreateItemOnObject(string1, GetObjectByTag("store_daraala", 0), int4, 0);

int2;

while ((int2 < 21)) {

{

string string7 = sub1(int2, 240);

if ((int2 < 10)) {

int4 = (Random(2) + 1);

}

else {

int4 = 1;

}

if ((int3 = FindSubString(string7, "[") >= 0)) {

int4 = StringToInt(GetSubString(string7, (int3 + 1), 4));

string1 = GetSubString(string7, 0, int3);

}

else {

string1 = string7;

}

CreateItemOnObject(string1, GetObjectByTag("store_daraala", 0), int4, 0);

}

(int2++);

}

}

}

 

 

If you look at the dialog, this script, a_stock_dara is set up to occur EVERY time that you access her store. Does this mean that she gets new stuff every time that you check in? No.

 

Because, none of this will even fire if:

 

if ((GetLocalBoolean(OBJECT_SELF, 58) == 0)) {

SetLocalBoolean(OBJECT_SELF, 58, 1);

 

If boolean 58 is already set to true (think of it like a switch), then there's no need to do anything in the script a second time.

 

If Obsidian intended Daraala's store to be stocked a second time, they wouldn't have used a local boolean, but probably the Global variable itself (the one that keeps track of what ending you chose for the quest).

 

 

In conclusion, HH, I'm not sure why Daraala's disappearing, but it seems that she need not be deleted from the module - this will solve everything.

 

As for Obsidian's 'intentional bugs'.... really? I understand that Obsidian was pressed for time, but I seriously doubt that they would just intentionally leave bugs in their game as it's very unprofessional. They more likely ran out of time to thoroughly seek them all out and fixed the most obvious ones first.

Share this post


Link to post
Share on other sites
In conclusion, HH, I'm not sure why Daraala's disappearing, but it seems that she need not be deleted from the module - this will solve everything.

That's the way OE set it up, she runs off and is deleted (like the Mandalorians etc, and many other NPC's) to kind of make it feel she left to see Zherron.

Then she returns, but since she's entirely new the issue appears (no set locals).

 

It can be solved in the dialogue (I just need a small script that should be easy to write for you), or by not letting her run off (just turn to black and pretend she went in that time, although she would be back awefully fast, and the dialogue is pretty much for talking to her again later, not immediately)...

Share this post


Link to post
Share on other sites

That's the way OE set it up, she runs off and is deleted (like the Mandalorians etc, and many other NPC's) to kind of make it feel she left to see Zherron.

Then she returns, but since she's entirely new the issue appears (no set locals).

 

Ah... This sounds like the bug that needs to be fixed then. I would attribute this sort of thing to carelessness though, not necessarily an intentional bug.

 

Knowing that she runs off, I do rather like that notion, but of course, having her deleted just won't work.

 

I would maybe have a scene of her running away, but have the camera fade out. Instead of deleting her though, just jump her to an inaccessible section of the module. That way, at some point you can have her jump back with no real hassles.

 

The other option is to rework some things so the globals are stored not on her, but an invisible placeable instead.

 

I'll work on the script for it. Though, knowing how busy I usually am, don't hold your breath for the fix just yet.

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.