• 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

This is most likely a problem with fast traveling through the drunkard in the tavern. I loaded the save that was already on the pier and everything was fine.
On the other hand, whether I use your savegame which is standing in front of "Random Drunk", or just start a new game and go to the tavern, then choose to sail to Jamaica for the grand entrance, the game reliably crashes immediately after the video. This is odd as I've played the story to completion before; it would sometimes crash after the video but not as consistently. I tried changing case "And_the_Film_Starts", commenting out the trigger lines for "Jack's_arrival_at_Redmond2" and adding 'LAi_QuestDelay("Jack's_arrival_at_Redmond2", 0.1);' instead, and now it works reliably for me.

I've attached my current version of "quests_reaction.c" with the various changes made.

It didn't work... Barbossa continues to stand in the "goto5" locator.

For some reason this didn't work either.
6) Weatherby - still not translated, although the soldiers have now been transferred.
Odd. Can you upload a savegame from just after you have been marooned on the island? Elizabeth Swann should talk to you immediately after you spawn on the island, then you have to walk to the other shore to meet Norrington, so that might be a good place to save before the whole sequence leading to the cave scene.
 

Attachments

  • quests_reaction.c
    635 KB · Views: 8
Odd. Can you upload a savegame from just after you have been marooned on the island? Elizabeth Swann should talk to you immediately after you spawn on the island, then you have to walk to the other shore to meet Norrington, so that might be a good place to save before the whole sequence leading to the cave scene.
Attached.
t would sometimes crash after the video but not as consistently. I tried changing case "And_the_Film_Starts", commenting out the trigger lines for "Jack's_arrival_at_Redmond2" and adding 'LAi_QuestDelay("Jack's_arrival_at_Redmond2", 0.1);' instead, and now it works reliably for me.
It’s strange, I’ve never had a game crash after a video, only after a fight with soldiers. For some reason I can't get to Turner's shipyard. I don't know if this is a problem with my computer, although it is quite powerful (Ryzen 5 3600, 2060s). I installed your file, but it didn't help, even with a new game. Also, sometimes I experience a crash in the save file that I sent you, when talking with Norrington. (But this crash can be cured by removing bad characters from “options”)
 

Attachments

  • -=Проклятие=- Исла-Мона. Deserted Island Shore 1 24-е Июня 1740г.7z
    521.5 KB · Views: 13
1) If I refuse a task in the residence, I am killed and I am reborn in the tavern. This shouldn't happen so add:
case "Beckett_Norrington_fight":
PChar.quest.disable_rebirth = true;
Locations[FindLocation("Redmond_Residence")].reload.l1.disable = true;
I also closed the door of the residence so that it would be impossible to escape.
2) I think this dialogue should include Jack's full name, not just his last name. add please
dialog.text = DLG_TEXT[22] + " " + GetMyFullName(PChar) + DLG_TEXT[235]; (77 line Cutler Beckett_Dialog.c)
dialog.text = DLG_TEXT[246] + GetMyFullName(PChar) + DLG_TEXT[247]; (470 line Cutler Beckett_Dialog.c)
3) I can't go to sea after Norrington joined me.
4) Should the upstairs room and Kitchen be open at Turks Tavern?
 

Attachments

  • 1712533670563.png
    1712533670563.png
    744.8 KB · Views: 16
  • 1712538627832.png
    1712538627832.png
    664.3 KB · Views: 7
  • 1712538638344.png
    1712538638344.png
    802.3 KB · Views: 12
Last edited:
It didn't work... Barbossa continues to stand in the "goto5" locator.
Move these lines:
Code:
            Characters[GetCharacterIndex("Barbossa")].dialog.CurrentNode = "begin_5";
            LAi_SetActorType(CharacterFromID("Barbossa"));
            LAi_ActorDialog(CharacterFromID("Barbossa"), pchar, "", 10.0, 10.0);
... from case "proposerabarbossa" to case "equipebarbossa". That will make Barbossa initiate dialog after the reload to the grotto is complete.

For some reason this didn't work either.
6) Weatherby - still not translated, although the soldiers have now been transferred.
Move the translation lines from case "allerfortredmond" to case "Captured_and_sentence2". At a guess, Weatherby Swann is not respawned and renamed until the 'DoQuestReloadToLocation' in "allerfortredmond" is complete, so moving the translation lines to the next case after the reload allows the translation to happen after the respawning.
weatherby_right.jpg
 
1) If I refuse a task in the residence, I am killed and I am reborn in the tavern. This shouldn't happen so add:
case "Beckett_Norrington_fight":
PChar.quest.disable_rebirth = true;
Locations[FindLocation("Redmond_Residence")].reload.l1.disable = true;
I also closed the door of the residence so that it would be impossible to escape.
2) I think this dialogue should include Jack's full name, not just his last name. add please
dialog.text = DLG_TEXT[22] + " " + GetMyFullName(PChar) + DLG_TEXT[235]; (77 line Cutler Beckett_Dialog.c)
dialog.text = DLG_TEXT[246] + GetMyFullName(PChar) + DLG_TEXT[247]; (470 line Cutler Beckett_Dialog.c)
3) I can't go to sea after Norrington joined me.
4) Should the upstairs room and Kitchen be open at Turks Tavern?
1: I may need to play around with this. Perhaps allow the player to escape, either through the door or by being killed and resurrected, then reset the triggers for the original quest starting at the port.
2: Changing the first one to full name makes sense, but Cutler Beckett does not respect Jack Sparrow enough to keep using the full name. Addressing an inferior by last name only is quite normal.
3: "StartStoryline.c" disables sea access so you can't turn round and sail away while you're Guy Verbinski. "quests_reaction.c" enables sea access when you teleport to Cayman. But "Billy Brock_dialog.c", which is the file used by "Random Drunk" for the jump starts, does not enable sea access. And so any jump start will leave you unable to go to sea. The attached version should enable sea access when you choose any of the jump starts.
4: In "PROGRAM\Locations\init\Turks.c", find the definition for "Turks_Tavern". After line 432 (Locations[n].reload.l2.label = "Room.";) add:
Code:
Locations[n].reload.l2.disable = true;
That should lock the door to the upstairs room.

The kitchen is used by "Woodes Rogers". @Jack Rackham, should it be open permanently, or at all, in any other storyline?
 

Attachments

  • Billy Brock_dialog.c
    22.6 KB · Views: 7
Move these lines:
Code:
Characters[GetCharacterIndex("Barbossa")].dialog.CurrentNode = "begin_5";
LAi_SetActorType(CharacterFromID("Barbossa"));
LAi_ActorDialog(CharacterFromID("Barbossa"), pchar, "", 10.0, 10.0);
... from case "proposerabarbossa" to case "equipebarbossa". That will make Barbossa initiate dialog after the reload to the grotto is complete.
Yes now it works correctly.
The problem when Barbossa kills me and the screen freezes is solved like this:
Also the problem where Barbossa kills me and the screen freezes is not solved by adding "bSuppressResurrection = true;" in case "proposerabarbossa".
 
1) James's last name is not translated after he loses consciousness.
2) Add this to avoid breaking the quest. You can just run out the door.
case "Talk_with_Norrington_in_Tavern":
Locations[FindLocation("Turks_tavern_upstairs")].reload.l1.disable = true;
LAi_LocationFightDisable(&locations[FindLocation("Turks_tavern_upstairs")], true); - (This can be added optionally to avoid accidentally killing Norrington.)
case "Farewell_at_the_dock":
Locations[FindLocation("Turks_tavern_upstairs")].reload.l1.disable = false;
LAi_LocationFightDisable(&locations[FindLocation("Turks_tavern_upstairs")], false);
3) Oswald Chappel_dialog.c - dialogue in code.
Dialog.Text = DLG_TEXT[2] + PChar.lastname + ", I believe.";
 

Attachments

  • 1712597691417.png
    1712597691417.png
    582.5 KB · Views: 9
  • 1712598441653.png
    1712598441653.png
    497.9 KB · Views: 10
Last edited:
1: I'm going to need to figure out why Norrington's first name is still translated but his last name is not. This seems to be a recurring problem and should not need to be patched by re-translating names of characters who are resurrected.
2: That makes sense, and 'LAi_LocationFightDisable' also means you can't break the dialog by drawing a weapon.
3: Easily fixed - change that line in "Oswald Chappel_dialog.c" to:
Code:
Dialog.Text = DLG_TEXT[2] + PChar.lastname + DLG_TEXT[28];
Then add a line for ", I believe." to the end of "Oswald Chappel_dialog.h".

Here's "quests_reaction.c" with a fix for the problem with Barbossa. Before the fix, the screen didn't freeze for me; the game simply got stuck with me lying on the ground and I had to quit to the main menu by pressing F1. There are several other places where, if Jack dies, he must not resurrect and the game must end, which trigger either this or something similar:
Code:
        case "KilledFighting":
            pchar.quest.disable_rebirth = true;
            PostEvent("LAi_event_GameOver", 0, "s", "land");
        break;
I've added a similar case for being killed by Barbossa.

Also, if you decline Beckett's and Norrington's offer and have to fight them, I've added your line 'PChar.quest.disable_rebirth = true;' but not the line to lock the door. So you can't escape the fight by being killed and resurrected but you can run away - yet another time they almost caught Jack Sparrow! The trigger for the normal quest when you approach the dock is cancelled in case "Norrington_As_A_Pirate", which doesn't happen if you fight them, so you should be able to continue the game that way.
 

Attachments

  • quests_reaction.c
    636.5 KB · Views: 9
Here's "quests_reaction.c" with a fix for the problem with Barbossa. Before the fix, the screen didn't freeze for me; the game simply got stuck with me lying on the ground and I had to quit to the main menu by pressing F1. There are several other places where, if Jack dies, he must not resurrect and the game must end, which trigger either this or something similar:
It works, but after death I am immediately thrown back to the main menu, showing a black screen before that, and not a video of death. (This only applies to Barbossa; everything is fine in the residence).
3: Easily fixed - change that line in "Oswald Chappel_dialog.c" to:
You also need to change to "string DLG_TEXT[30] = {"
 
It works, but after death I am immediately thrown back to the main menu, showing a black screen before that, and not a video of death. (This only applies to Barbossa; everything is fine in the residence).
After Barbossa kills you, can you upload "compile.log" and "system.log"? And "error.log" if it exists.

I didn't change anything to do with death in the residence, apart from following your suggestion to prevent escape by resurrection. What I did was add some code so that if you escape through the front door, the block on resurrection is removed, the door back into the residence is locked, and Norrington and Beckett are removed.

You also need to change to "string DLG_TEXT[30] = {"
Yes, whenever any new lines of text are added to a "dialog.h" file, the declaration at the top needs to change to match.
 
Last edited:
After Barbossa kills you, can you upload "compile.log" and "system.log"? And "error.log" if it exists.

I didn't change anything to do with death in the residence, apart from following your suggestion to prevent escape by resurrection. What I did was add some code so that if you escape through the front door, the block on resurrection is removed, the door back into the residence is locked, and Norrington and Beckett are removed.
I understood what the problem was. When I hold the block button so that Barbossa doesn't kill me, he breaks it and a video is produced, but if I release the button, the video will be interrupted. I once changed the code so that the videos would only turn off when pressing the "Esc" button.
Why is Turner standing so far away if he's a hostage?
It seems to me that it should be in the "goto P_character1" locator.
 

Attachments

  • 1712706082729.png
    1712706082729.png
    870 KB · Views: 15
Last edited:
I understood what the problem was. When I hold the block button so that Barbossa doesn't kill me, he breaks it and a video is produced, but if I release the button, the video will be interrupted. I once changed the code so that the videos would only turn off when pressing the "Esc" button.
Looking at function 'IVideoBreak', there is a lot of code which is supposed to check for keys pressed to interrupt the video, and which has all been commented out. Your code has kept one small part of it and deleted the rest. The code is in the stock game so it should work. So I've reactivated it, only commenting out this bit because it seems to prevent even the "Esc" button from exiting the video:
Code:
/*
    else
    {
        if(!EnableVideoBreak) {bMakeBreak = false;}
    }
*/

Why is Turner standing so far away if he's a hostage?
It seems to me that it should be in the "goto P_character1" locator.
He can't be placed on "P_character1" because that's where Oswald Chappel is placed. The character on "P_goto4" is one of Chappel's crew. However, your screenshot shows him talking to a sailor with a red headscarf and a long blue coat, but does not show the name of the locator where that sailor is standing. If you can find that locator, it would be a better place for Will Turner. (Or possibly put Turner on "P_goto4" and put the crewmember on the sailor's locator. Turner will need to come to you to talk, which is easier if he's on the locator nearer to you.)

For that matter, can you find the name of the locator where Turner is standing? Because he's supposed to be on "P_reload1_2", which seems to be the one right next to Oswald Chappel's talking head on the left of the picture!
 
Last edited:
For that matter, can you find the name of the locator where Turner is standing? Because he's supposed to be on "P_reload1_2", which seems to be the one right next to Oswald Chappel's talking head on the left of the picture!
Turner doesn't seem to have a locator at all, he's just walking around the port. It appears on the locator "P_reload1_2" and then just goes away.
However, your screenshot shows him talking to a sailor with a red headscarf and a long blue coat, but does not show the name of the locator where that sailor is standing.
This sailor is most likely just trying to get to the pier. Nearest locator "rld loc0".
 
Turner doesn't seem to have a locator at all, he's just walking around the port. It appears on the locator "P_reload1_2" and then just goes away.
Then Turner needs to be stuck to the ground, and Oswald Chappel's crewman needs to watch him. At case "Purchase_Interceptor2", add:
Code:
            LAi_SetActorType(CharacterFromID("Crew_member_07"));
            LAi_SetActorType(CharacterFromID("Will Turner"));
            LAi_ActorTurnToCharacter(CharacterFromID("Crew_member_07"), CharacterFromID("Will Turner"));
            LAi_ActorTurnToCharacter(CharacterFromID("Will Turner"), CharacterFromID("Crew_member_07"));
 
Then Turner needs to be stuck to the ground, and Oswald Chappel's crewman needs to watch him. At case "Purchase_Interceptor2", add:
Code:
            LAi_SetActorType(CharacterFromID("Crew_member_07"));
            LAi_SetActorType(CharacterFromID("Will Turner"));
            LAi_ActorTurnToCharacter(CharacterFromID("Crew_member_07"), CharacterFromID("Will Turner"));
            LAi_ActorTurnToCharacter(CharacterFromID("Will Turner"), CharacterFromID("Crew_member_07"));
Cool! Now they can't take their eyes off each other. xD
 

Attachments

  • 1712749812401.png
    1712749812401.png
    804.9 KB · Views: 11
The crewmember is supposed to be watching Turner to make sure he doesn't escape. But if you want Turner to look a little more active without wandering around, try removing these:
Code:
LAi_SetActorType(CharacterFromID("Will Turner"));

LAi_ActorTurnToCharacter(CharacterFromID("Will Turner"), CharacterFromID("Crew_member_07"));
And put this instead:
Code:
LAi_SetStayType(CharacterFromID("Will Turner"));
That should still nail Turner to the ground but allow him to look around.
 
The crewmember is supposed to be watching Turner to make sure he doesn't escape. But if you want Turner to look a little more active without wandering around, try removing these:
Code:
LAi_SetActorType(CharacterFromID("Will Turner"));

LAi_ActorTurnToCharacter(CharacterFromID("Will Turner"), CharacterFromID("Crew_member_07"));
And put this instead:
Code:
LAi_SetStayType(CharacterFromID("Will Turner"));
That should still nail Turner to the ground but allow him to look around.
Yes, that's better.
I uploaded my latest translation files to Yandex Disk and Github.
Now the Jack Sparrow storyline has been fully tested with side quests. And the text edits will be minor next time.
 
Yes, that's better.
I uploaded my latest translation files to Yandex Disk and Github.
Now the Jack Sparrow storyline has been fully tested with side quests. And the text edits will be minor next time.
Got it - thanks!

Also:
1: I'm going to need to figure out why Norrington's first name is still translated but his last name is not. This seems to be a recurring problem and should not need to be patched by re-translating names of characters who are resurrected.
Found it! And you can take the 'TranslateString' lines out of case "Captured_and_sentence2".

The problem is in "PROGRAM\MAXIMUS_Functions.c", function 'RestoreCharacter'. It translates the character's "old.name", "old.lastname", and a couple of other "old" names if they exist, but it only checks "characters_names.txt" - the general file, not the storyline file, and not any other files where a name may be found. Elizabeth Swann is in a sidequest and James is used for some other characters, so "Swann" and "James" appear in "characters_names.txt", but "Weatherby" and "Norrington" are only in this storyline and are in the storyline file.

I changed 'RestoreCharacter' to use 'TranslateString' instead of 'LanguageConvertString'. 'TranslateString' checks a lot of different files including storyline-specific files. So it translates "Weatherby", "Norrington", and any other storyline-specific names.
 

Attachments

  • MAXIMUS_Functions.c
    152.1 KB · Views: 12
Got it - thanks!

Also:

Found it! And you can take the 'TranslateString' lines out of case "Captured_and_sentence2".

The problem is in "PROGRAM\MAXIMUS_Functions.c", function 'RestoreCharacter'. It translates the character's "old.name", "old.lastname", and a couple of other "old" names if they exist, but it only checks "characters_names.txt" - the general file, not the storyline file, and not any other files where a name may be found. Elizabeth Swann is in a sidequest and James is used for some other characters, so "Swann" and "James" appear in "characters_names.txt", but "Weatherby" and "Norrington" are only in this storyline and are in the storyline file.

I changed 'RestoreCharacter' to use 'TranslateString' instead of 'LanguageConvertString'. 'TranslateString' checks a lot of different files including storyline-specific files. So it translates "Weatherby", "Norrington", and any other storyline-specific names.
Error when entering the game.
COMPILE ERROR - file: MAXIMUS_Functions.c; line: 3028
Invalid Expression
COMPILE ERROR - file: MAXIMUS_Functions.c; line: 3028
Invalid Expression
COMPILE ERROR - file: MAXIMUS_Functions.c; line: 3028
Invalid Expression
COMPILE ERROR - file: MAXIMUS_Functions.c; line: 3028
Invalid Expression
COMPILE ERROR - file: MAXIMUS_Functions.c; line: 3028
Invalid Expression
COMPILE ERROR - file: MAXIMUS_Functions.c; line: 3028
Invalid Expression
COMPILE ERROR - file: MAXIMUS_Functions.c; line: 3028
Invalid Expression
COMPILE ERROR - file: MAXIMUS_Functions.c; line: 3028
missed ':'
 
In "PROGRAM\globals.c", below line 189, add:
Code:
#define ILANG_PTBR  7
There are other changes needed in other files because this is part of the code to introduce a Portuguese translation. Adding that definition won't be enough for Portuguese; the next update will include all the files plus what I have so far of the actual translation. But it should be enough to allow "MAXIMUS_Functions.c" to work.
 
Back
Top