• New Horizons on Maelstrom
    Maelstrom New Horizons


    Visit our website www.piratehorizons.com to quickly find download links for the newest versions of our New Horizons mods Beyond New Horizons and Maelstrom New Horizons!

Need Help Updating the Russian Translation

I've re-uploaded "quest_Isabelle Cussy_dialog.c" in post #1018. The problem here is that Gilles Clouzot's name is now changed to be the same as the dock worker in San Juan. Isabelle Cussy needs to use his "old.name" and "old.lastname" attributes which aren't translated. I've added another attribute for Isabelle Cussy to be the translated versions of the "old.name" and "old.lastname", then used that for the dialog when you return from San Juan.
 
I noticed that the file in the Russian folder was named incorrectly, so the translation didn't work.
In the Russian version Emiliano de Guzmán_dialog.h, and in the English Emiliano de Guzmбn_dialog.h
 

Attachments

  • 1716918962118.png
    1716918962118.png
    753.3 KB · Views: 49
The name in the Russian folder is correct. I don't know where that incorrect English name came from.

Check "PROGRAM\Storyline\Ardent\characters\init\TempQuestEnemy.c", where you should find the definition for this character, and in particular:
Code:
ch.Dialog.Filename = "Emiliano de Guzmán_dialog.c";
Also check folder "PROGRAM\Storyline\Ardent\DIALOGS", where you should find file "Emiliano de Guzmán_dialog.c". If any of those have the name "Emiliano de Guzmбn_dialog", change them. All should be "Emiliano de Guzmán_dialog".
 
The name in the Russian folder is correct. I don't know where that incorrect English name came from.

Check "PROGRAM\Storyline\Ardent\characters\init\TempQuestEnemy.c", where you should find the definition for this character, and in particular:
Code:
ch.Dialog.Filename = "Emiliano de Guzmán_dialog.c";
Also check folder "PROGRAM\Storyline\Ardent\DIALOGS", where you should find file "Emiliano de Guzmán_dialog.c". If any of those have the name "Emiliano de Guzmбn_dialog", change them. All should be "Emiliano de Guzmán_dialog".
1) Yes, for some reason it was in TempQuestEnemy.c
ch.Dialog.Filename = "Emiliano de Guzmбn_dialog.c";
á - does not see this file and as a result there will be no dialogue at all.
I had to convert the ANSI encoding to UTF-8 to put this character, but the dialog did not work.
2)It seems that the variable in line 20 of Emiliano de Guzmán_dialog.h does not work.
 

Attachments

  • 1716921972728.png
    1716921972728.png
    761.3 KB · Views: 43
  • 1716924240730.png
    1716924240730.png
    744.4 KB · Views: 42
Last edited:
1) Yes, for some reason it was in TempQuestEnemy.c
ch.Dialog.Filename = "Emiliano de Guzmбn_dialog.c";
á - does not see this file and as a result there will be no dialogue at all.
I had to convert the ANSI encoding to UTF-8 to put this character, but the dialog did not work.
2)It seems that the variable in line 20 of Emiliano de Guzmán_dialog.h does not work.
'ch.Dialog.Filename = "Emiliano de Guzmán_dialog.c";' certainly works, that's what I have. All versions of the dialog file - English, Spanish and Russian - should be "Emiliano de Guzmán_dialog".

The only thing that surprises me about what happened when you changed "TempQuestEnemy.c" is that it had any effect at all. The character should be defined and that file should not be read again until you start a new game. But indeed, converting it to UTF-8 and putting "Emiliano de Guzmбn_dialog.c" in there won't work. That's because UTF-8 converts a special character like "б" to two characters, then converts them back to display the character. So the character will be looking for "Emiliano de Guzm&*n_dialog.c" - not actually "&*", but two other characters, the point being, it's not "Emiliano de Guzmбn_dialog.c". It won't find that file.

Change "TempQuestEnemy.c" back the way it was - in ANSI, with "Emiliano de Guzmán_dialog.c". Change all dialog file names to be "Emiliano de Guzmán_dialog.c" or "Emiliano de Guzmán_dialog.h". That's what I have and it certainly works.
 
In the "Remove Spy" questbook, the #sspy# variable does not work and Gilles Clouzot is not translated. At the same time, #sdocker# seems to be working.
You may have already corrected this before, but the questbook just didn’t show it. #1,021
2)It seems that the variable in line 20 of Emiliano de Guzmán_dialog.h does not work.
You didn't answer this either.
I'll try to upload the translation corrections collected over the month today or tomorrow. When will you release the patch?
 

Attachments

  • 1717074248912.png
    1717074248912.png
    752 KB · Views: 42
Last edited:
Try these versions of "Emiliano de Guzmán_dialog.c" and "quests_reaction.c". You'll need to load a savegame from before you take the mission to find the spy because when Jusepe Guimaraes gives you the mission, an attribute is now set to record the translated version of Gilles Clouzot's real name. That saves having to put a long code line to repeat the translation every time the questbook is updated.

I'll wait until I have your translations before releasing the next update. Meanwhile I'm working on a new temple for Hispaniola based on a model from CoAS. The interior will still be the same as the one at Cozumel but the exterior will be very different.
 

Attachments

  • Emiliano de Guzmán_dialog.c
    3.6 KB · Views: 40
  • quests_reaction.c
    689.7 KB · Views: 34
Try these versions of "Emiliano de Guzmán_dialog.c" and "quests_reaction.c". You'll need to load a savegame from before you take the mission to find the spy because when Jusepe Guimaraes gives you the mission, an attribute is now set to record the translated version of Gilles Clouzot's real name. That saves having to put a long code line to repeat the translation every time the questbook is updated.

I'll wait until I have your translations before releasing the next update. Meanwhile I'm working on a new temple for Hispaniola based on a model from CoAS. The interior will still be the same as the one at Cozumel but the exterior will be very different.
Preprocessor_AddQuestData("spy", PChar.quest.imperial_escort.spy_search.spyname; - you missed bracket 14269 line.
The variable now works and he addresses me as Senorita.
 
1) Completing the fixes, it seems I found another bug. Load my save, enter the cave, then talk to the kidnapper outside and choose the option not to pay. If you hit the kidnapper once, he leaves and the location is completely blocked. This option is without a bottle of ether and without Edmundo.
2) Also in the file Jaime Lezcano_dialog.h there is line 83 - #stortuga#. It should be #sTortuga#.
 

Attachments

  • 1717164426990.png
    1717164426990.png
    762.1 KB · Views: 31
  • -=Тест1=- Куба.7z
    678.4 KB · Views: 34
1: At a guess, you failed to prevent Jaime Lezcano from capturing the Electress back in Santo Domingo. I'll need to add this to the case where Jaime Lezcano gets to the town gate with the Electress, but you won't want to go all the way back to that point in the game. So, before going into the cave, put this into "console.c":
Code:
LAi_RemoveCheckMinHP(CharacterFromID("Jaime Lezcano"));
Then press F12. That ought to prevent him fron running away.

2: I wouldn't have thought that would make any difference - variable names don't usually care about upper and lower case. Does it prevent the town name from appearing in the dialog?

Also:
There are all sorts of ways this scene can go. Dialogs change slightly if you originally chose to be the black-hearted see robber when you first talked to the Inquisitor right at the start of the game. So here's another "console.c" command to change you to Evil Ardent:
Code:
PChar.quest.alignment = "evil";
Press F12, then see what you say when you negotiate with Jaime Lezcano.

If you didn't have Edmundo with you, did you have another officer instead? If not, try that. If you're planning to storm the cave to rescue the Electress, it helps to have someone ready to jump in from another entrance...
 
1: At a guess, you failed to prevent Jaime Lezcano from capturing the Electress back in Santo Domingo. I'll need to add this to the case where Jaime Lezcano gets to the town gate with the Electress, but you won't want to go all the way back to that point in the game. So, before going into the cave, put this into "console.c":
Code:
LAi_RemoveCheckMinHP(CharacterFromID("Jaime Lezcano"));
Then press F12. That ought to prevent him fron running away.

2: I wouldn't have thought that would make any difference - variable names don't usually care about upper and lower case. Does it prevent the town name from appearing in the dialog?

Also:
There are all sorts of ways this scene can go. Dialogs change slightly if you originally chose to be the black-hearted see robber when you first talked to the Inquisitor right at the start of the game. So here's another "console.c" command to change you to Evil Ardent:
Code:
PChar.quest.alignment = "evil";
Press F12, then see what you say when you negotiate with Jaime Lezcano.

If you didn't have Edmundo with you, did you have another officer instead? If not, try that. If you're planning to storm the cave to rescue the Electress, it helps to have someone ready to jump in from another entrance...
Sorry, I didn't have time to check.
LAi_RemoveCheckMinHP(CharacterFromID("Jaime Lezcano")); - Yes it worked and I managed to kill him.
PChar.quest.alignment = "evil"; - Regarding this, I’m already playing as an evil character, because in the last playthrough I played as a kind man. So I need to look at this for a good character and what variable should there be for this?
 
PChar.quest.alignment = "evil"; - Regarding this, I’m already playing as an evil character, because in the last playthrough I played as a kind man. So I need to look at this for a good character and what variable should there be for this?
Not surprisingly:
Code:
PChar.quest.alignment = "good";
If you use the ether bottle, you can persuade Lezcano to give up. Evil Ardent threatens to kill him horribly and offers to hire him as an officer. Good Ardent relies on a reputation for keeping promises and offers to release Lezcano wherever he wants, and that's when you will find out if "#stortuga#" fails to fill in.
 
One Russian player told me that after the first conversation with Silehard the game constantly crashes and I checked this recently. This is actually happening, I have attached a save. "Robert Christopher Silehard_dialog.h (82 line)"
 

Attachments

  • -=Тест1=- Ямайка.7z
    515.5 KB · Views: 37
  • system.log
    38.2 KB · Views: 20
  • compile.log
    2.3 KB · Views: 20
Yes, I've noticed that too, and not just the first conversation. It doesn't happen every time but it's frequent enough that I always save game just before leaving the governor's residence. And also the church, as I've had crashes there too.

Just to make sure this player's problem is the same as mine - does the game crash immediately after the conversation, during the conversation, or when the player tries to leave the residence?

Line 82 isn't the end of the conversation. It's your reply to the first part of the conversation when you return from scouting Speightstown. This dialog happens if you returned right away and did not choose to go to St. Pierre first. Silehard then asks you about future French plans, you tell him about the ammunition ship, then he tells you to go to Martinique to find a way to prevent the ammunition from reaching Speightstown. The conversation goes one step further and then ends on either lines 94 and 95 together, or line 98, depending on your answer.
 
Yes, I've noticed that too, and not just the first conversation. It doesn't happen every time but it's frequent enough that I always save game just before leaving the governor's residence. And also the church, as I've had crashes there too.

Just to make sure this player's problem is the same as mine - does the game crash immediately after the conversation, during the conversation, or when the player tries to leave the residence?

Line 82 isn't the end of the conversation. It's your reply to the first part of the conversation when you return from scouting Speightstown. This dialog happens if you returned right away and did not choose to go to St. Pierre first. Silehard then asks you about future French plans, you tell him about the ammunition ship, then he tells you to go to Martinique to find a way to prevent the ammunition from reaching Speightstown. The conversation goes one step further and then ends on either lines 94 and 95 together, or line 98, depending on your answer.
This happens all the time after line 82. And this is really a problem, saving and loading will not help here.
I checked BNH and it works there. Actually line 82 is the last and calls "silehard_Story_Oxbay_Captured_15"
 

Attachments

  • error.log
    182 bytes · Views: 21
Last edited:
The problem is with the Russian translation. You can test this easily - start PoTC, switch to English (or Spanish), then load that savegame. You don't need to be able to read Spanish any more than I can; just start talking to Silehard, go through the dialog, and if there is a choice of answers, just take the default, first answer. Russian reliably crashes after the dialog; English and Spanish reliably continue after the dialog.

Quest case case "silehard_Story_Oxbay_Captured_15" does various things, but remember that it's only the Russian version which crashes, so the fault has to be something language-dependent. And that's when I remembered that this has happened before. Here's the problem:
Code:
SetQuestHeader("Story_1stTaskReceived");
AddQuestRecord("Story_1stTaskReceived",1);
Build 14, at least, does not like excessively long lines of questbook and crashes if it finds them. The entire questbook is read in when it is first opened - which, by the way, means that if you update a translation for a questbook which is already open, it won't take effect unless you start a new game, or at least load a save from before that quest started.

"RESOURCE\INI\TEXTS\RUSSIAN\Storyline\standard\QUESTBOOK\Story_1stTaskReceived.txt" has two lines which are too long: text.t4 and text.t13. If I remove the last three words from each of those lines, the game works. The third last word is only two letters, yet if I put that back, the game crashes. You will therefore need to rephrase those two lines to make them shorter.
 
1) Rys Bloom_dialog.h (12 line)
The female character doesn't get a name, while Nathaniel is fine.
2) Also in line 62 the variables are merged.
 

Attachments

  • 124124.png
    124124.png
    683.6 KB · Views: 35
  • 14142.png
    14142.png
    876.6 KB · Views: 35
  • 1718123341583.png
    1718123341583.png
    763.8 KB · Views: 30
Last edited:
1: That's controlled by this line in "Rys Bloom_dialog.c", case "Node_3":
Code:
d.Text = DLG_TEXT[10] + GetMyAddressForm(NPChar, PChar, ADDR_CIVIL, false, false) + " " + PChar.name +DLG_TEXT[11] + GetMyName(NPChar) + DLG_TEXT[12];
'PChar.name' is supposed to be the character's first name, but last time I tried your savegame with the female character, she only had one name. And the game does odd things with characters who only have one name - somewhere during the game start, that one name becomes the character's last name, then the character has no first name.

Function 'GetMyAddressForm' can take account of that, but it's being used here just to get the character's title. Try changing that line to:
Code:
d.Text = DLG_TEXT[10] + GetMyAddressForm(NPChar, PChar, ADDR_CIVIL, true, false) +DLG_TEXT[11] + GetMyName(NPChar) + DLG_TEXT[12];
That tells the function to include the character's first name. If the character has only a last name then the function will use that.

2: In case "Node_13", the function is being used again only to generate the character's title, then the character's name is added. This time a function is used to get the name, but the code line has no space between them:
Code:
d.Text = DLG_TEXT[60] + GetMyAddressForm(NPChar, PChar, ADDR_CIVIL, false, false) + GetMyName(PChar) + DLG_TEXT[61];
See what happens if you change that to:
Code:
d.Text = DLG_TEXT[60] + GetMyAddressForm(NPChar, PChar, ADDR_CIVIL, true, false) + DLG_TEXT[61];
 
1: That's controlled by this line in "Rys Bloom_dialog.c", case "Node_3":
Code:
d.Text = DLG_TEXT[10] + GetMyAddressForm(NPChar, PChar, ADDR_CIVIL, false, false) + " " + PChar.name +DLG_TEXT[11] + GetMyName(NPChar) + DLG_TEXT[12];
'PChar.name' is supposed to be the character's first name, but last time I tried your savegame with the female character, she only had one name. And the game does odd things with characters who only have one name - somewhere during the game start, that one name becomes the character's last name, then the character has no first name.

Function 'GetMyAddressForm' can take account of that, but it's being used here just to get the character's title. Try changing that line to:
Code:
d.Text = DLG_TEXT[10] + GetMyAddressForm(NPChar, PChar, ADDR_CIVIL, true, false) +DLG_TEXT[11] + GetMyName(NPChar) + DLG_TEXT[12];
That tells the function to include the character's first name. If the character has only a last name then the function will use that.

2: In case "Node_13", the function is being used again only to generate the character's title, then the character's name is added. This time a function is used to get the name, but the code line has no space between them:
Code:
d.Text = DLG_TEXT[60] + GetMyAddressForm(NPChar, PChar, ADDR_CIVIL, false, false) + GetMyName(PChar) + DLG_TEXT[61];
See what happens if you change that to:
Code:
d.Text = DLG_TEXT[60] + GetMyAddressForm(NPChar, PChar, ADDR_CIVIL, true, false) + DLG_TEXT[61];
Yes, this works for both Nathaniel and Danielle. Does it make sense to do the same for Node_11 and Node_12?
 

Attachments

  • 1718125169579.png
    1718125169579.png
    748.8 KB · Views: 26
  • 1718125192187.png
    1718125192187.png
    633.3 KB · Views: 22
Back
Top