gothic-1-community-patch icon indicating copy to clipboard operation
gothic-1-community-patch copied to clipboard

The "50 Ore received!" string is not displayed.

Open Quintus24 opened this issue 4 years ago • 4 comments

Hello, everyone!

I would like to report the following bug:

Describe the bug: This issue can be encountered in the Old Camp if the user starts the "Recipe of the Sect" quest. Accepting the quest from Dexter without persuading him for 50 Ore will still reward the user with 50 Ore upon completing the quest. However, this choice will cause the "50 Ore received!" string to not be displayed upon completing the quest, therefore, the user is not informed of what exactly he received.

Expected behavior: The "50 Ore received!" string is correctly displayed upon completing the quest.

Steps to reproduce the issue:

  1. Talk with Dexter and select the "I want to join the Camp, I want to become a Shadow." dialogue option.
  2. Accept the quest by selecting the "Okay, I'll see if I can get the thing." dialogue option.
  3. Fulfill the quest requirements and return to Dexter.
  4. Talk with Dexter, complete the quest, notice all of the strings displayed. (XP, Journal Entry, Level Up)
  5. Notice that the "50 Ore received!" string is not displayed.

Additional context Kindly note that this issue can be reproduced only if the user chooses the "Okay, I'll see if I can get the thing." option. Also note that Dexter will say "Here you go, take that, for your efforts ..." after completing the quest. Not to be confused with the "1 Item given!" string, which is the quest item given to Dexter.

Adding a couple of screenshots for more clear information, my apologies for the low quality.

  1. Quest completed, strings displayed. Dexter's Quest Completed 1

  2. Dexter's dialogue, informing the user of a reward. Dexter's Quest Completed 2

Thank You and Best Regards! Quintus24

Quintus24 avatar Dec 05 '21 03:12 Quintus24

In PL version this problem do not occurs however it looks to failing to the code void G_giveInvItems.

I have rewrite the code again to display the name of the item given too!

` const string _STR_MESSAGE_ITEM_GIVEN = " Oddałeś - " const string _STR_MESSAGE_ITEMS_GIVEN = " Oddane - " ; //const string _STR_MESSAGE_ORE_GIVEN = " Bryłki oddane: " ; const string _STR_MESSAGE_ITEM_TAKEN = " Otrzymałeś - " ; const string _STR_MESSAGE_ITEMS_TAKEN = " Otrzymane - " ; //const string _STR_MESSAGE_ORE_TAKEN = " Bryłki oddane: " ; ////////////////////////////////////////////////////////////////////////// // B_GiveInvItems // ============== // Übergibt ein Item von 'giver' an 'taker' und gibt eine Meldung // auf dem Bildschirm aus. ////////////////////////////////////////////////////////////////////////// func void B_GiveInvItems(var C_NPC giver, var C_NPC taker, var int itemInstance, var int amount) { PrintDebugNpc (PD_ZS_DETAIL, "B_GiveInvItems");

//-------- Gegenstand übertragen --------
// ------ Itmes transferieren ------
Npc_RemoveInvItems	(giver,	itemInstance,	amount);
CreateInvItems		(taker,	itemInstance,	amount);
NPC_GetInvItem(taker,itemInstance);

//-------- Meldung ausgeben --------
var string msg;
var string msg1;
var string msg2;
var string msg3;
var string msg4;

var string name;
name = item.name;	

if	Npc_IsPlayer(giver)
{
	if (itemInstance == ItMiNugget)
	{
		msg = ConcatStrings(IntToString(amount), _STR_MESSAGE_ORE_GIVEN);
		PrintScreen	(msg, -1,_YPOS_MESSAGE_GIVEN,"FONT_OLD_10_WHITE.TGA",_TIME_MESSAGE_GIVEN);
	}
	else
	{
	    if amount == 1
	    {
		    name = item.description;
		    msg = ConcatStrings (_STR_MESSAGE_ITEM_GIVEN ,Item.DESCRIPTION);
		    //msg = ConcatStrings(IntToString(amount), _STR_MESSAGE_ITEM_GIVEN);
		    PrintScreen	(msg, -1,_YPOS_MESSAGE_GIVEN,"FONT_OLD_10_WHITE.TGA",_TIME_MESSAGE_GIVEN);
		}   
		else
	    {
		    name = item.description;
		    msg1 = ConcatStrings (_STR_MESSAGE_ITEM_GIVEN ,Item.DESCRIPTION);
			msg2 = ConcatStrings (msg1 ," (");
			msg3 = ConcatStrings (msg2 , IntToString(amount));
			msg = ConcatStrings (msg3 ," szt.)");
		    //msg = ConcatStrings(IntToString(amount),_STR_MESSAGE_ITEMS_GIVEN);
		    PrintScreen	(msg, -1,_YPOS_MESSAGE_GIVEN,"FONT_OLD_10_WHITE.TGA",_TIME_MESSAGE_GIVEN);
	    };   
	};
}
else if Npc_IsPlayer(taker)
{
	if (itemInstance == ItMiNugget)
	{
		msg = ConcatStrings(IntToString(amount), _STR_MESSAGE_ORE_TAKEN);
		PrintScreen	(msg, -1,_YPOS_MESSAGE_TAKEN,"FONT_OLD_10_WHITE.TGA",_TIME_MESSAGE_TAKEN);
	}
	else
	{
	    if amount == 1
	    {
		    name = item.description;
		    msg = ConcatStrings (_STR_MESSAGE_ITEM_TAKEN ,Item.DESCRIPTION);			    
		    //msg = ConcatStrings(IntToString(amount),_STR_MESSAGE_ITEM_TAKEN);
		    PrintScreen	(msg, -1,_YPOS_MESSAGE_TAKEN,"FONT_OLD_10_WHITE.TGA",_TIME_MESSAGE_TAKEN);
		}   
		else
	    {
		    name = item.description;
		    msg1 = ConcatStrings (_STR_MESSAGE_ITEM_TAKEN ,Item.DESCRIPTION);
			msg2 = ConcatStrings (msg1 ," (");
			msg3 = ConcatStrings (msg2 , IntToString(amount));
			msg = ConcatStrings (msg3 ," szt.)");
		    // msg = ConcatStrings(IntToString(amount),_STR_MESSAGE_ITEMS_TAKEN);
		    PrintScreen	(msg, -1,_YPOS_MESSAGE_TAKEN,"FONT_OLD_10_WHITE.TGA",_TIME_MESSAGE_TAKEN);
		}; 
	};
};	

};`

pawbuj1981 avatar Dec 05 '21 09:12 pawbuj1981

Looks more like there's a missing B_GiveInvItems.

https://github.com/AmProsius/gothic-1-community-patch/blob/b946ba1189a6937510bfbfaeff64a2df55d9cccb/scriptbase/_work/Data/Scripts/Content/Story/Missions/DIA_STT_329_Dexter.d#L298-L300

changed to

CreateInvItems (self,itminugget,50); 
B_GiveInvItems (self, other, itminugget, 50);
B_GiveInvItems (other, self, KalomsRecipe, 1); 

AmProsius avatar Dec 05 '21 12:12 AmProsius

Here is a code from PL version. I am really shocked that the code is differ compare to DE version.

func void DIA_Dexter_KalomsRecipeSuccess_Info()
{
	AI_Output(other,self,"DIA_Dexter_KalomsRecipeSuccess_15_00");	//Mam dla ciebie recepturę, o którą prosiłeś!
	AI_Output(self,other,"DIA_Dexter_KalomsRecipeSuccess_10_01");	//To świetnie! Pokaż ją!
	B_UseFakeScroll();
	AI_Output(self,other,"DIA_Dexter_KalomsRecipeSuccess_10_02");	//Znakomicie! Teraz sam będę mógł wytwarzać napój uzdrawiający.
	AI_Output(self,other,"DIA_Dexter_KalomsRecipeSuccess_10_03");	//Równy z ciebie chłop! Wspomnę o tobie Diego.
	AI_Output(self,other,"DIA_Dexter_KalomsRecipeSuccess_10_04");	//Weź to. To w nagrodę...
	CreateInvItems(self,ItMiNugget,50);
	B_GiveInvItems(self,other,ItMiNugget,50);
	B_GiveInvItems(other,self,KalomsRecipe,1);
	Dexter_GetKalomsRecipe = LOG_SUCCESS;
	if(Npc_GetTrueGuild(hero) == GIL_None)
	{
		Log_SetTopicStatus(CH1_KalomsRecipe,LOG_SUCCESS);
		B_LogEntry(CH1_KalomsRecipe,"Dexter był pod wrażeniem. Na pewno wspomni Diego o moich dokonaniach.");
	}
	else
	{
		Log_SetTopicStatus(CH1_KalomsRecipe,LOG_SUCCESS);
		B_LogEntry(CH1_KalomsRecipe,"Dexter był pod wrażeniem, ale co z tego? I tak nie mogę już zostać Cieniem.");
	};
	B_GiveXP(XP_DexterKalom);
};

pawbuj1981 avatar Dec 05 '21 14:12 pawbuj1981

I am really shocked that the code is differ compare to DE version.

It’s not too surprising. In the course of translations and across different retail versions, some small things got fixed.

szapp avatar Dec 05 '21 15:12 szapp