• 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

Odd. Try loading a savegame from before you pressed F11 for the prison fast travel and see if his name is translated there.
I don’t know why this happens, but if in case “sri_reset_prison_commendant”: after Characters[GetCharacterIndex("Havana Prison Commendant")].quest.Sumbhajee = "dead"; insert Characters[GetCharacterIndex("Havana Prison Commendant")].name = TranslateString("", "Prison Commendant");, then the character will have a random name. (Gerardo Morillo)
 

Attachments

  • 1710526203853.png
    1710526203853.png
    831.4 KB · Views: 12
Last edited:
The original "Havana Prison Commendant" is dead. A new one has taken his place and has a new name. That's normal for characters who have been killed and replaced. The resurrecting and renaming presumably happens after case “sri_reset_prison_commendant”, when you return to the prison and he has to spawn again - that's the only reason I can think of for why he gets a new name after you've set it.

This automatic renaming can be prevented by giving the character the 'questchar' attribute in his definition. It's done for a lot of characters in the "Hornblower" storyline, for example, so that if the named riflemen are killed in battles, they re-appear with their original names - pretend that they weren't actually killed, only wounded and unconscious.

If you really want the replacement prison commander to also be called "Havana Prison Commendant", add this line to his definition in "PROGRAM\Storyline\JackSparrow\characters\init\TempQuestEnemy.c":
Code:
ch.questchar = true;
That will only affect a new game. If you want the replacement to have the same name in your game, put this into case “sri_reset_prison_commendant”:
Code:
Characters[GetCharacterIndex("Havana Prison Commendant")].questchar = true;
 
1) The gunsmith's dialogue on Turks Island has not been translated. They seem to be hardcoded in the Gunsmith_dialog.c file.
2) The ship "Ranger" is not translated. Also in this screenshot you can see that “Gentleman” is written with a capital letter, but if you go to the characters menu it will be with a small letter.
3) Slaver - not translated. Besides, they don't fight, but my officers beat them.
4) Soldier - not translated. Also, if they don't get to Jack in Governors Harbor in time, you can avoid execution by teleporting to your ship. After re-entering the port, these soldiers will no longer be there.
5) After this option - "at Alice Town more choices – Go to plantation through jungle (talk to slavers at plantation - beaten up by slavers) -Transported to jungle Gombo/GJ leaves - QB Update" - Jack is killed and his name changes to Guy Verbinski.
6) A guy named "Bos'un" has something wrong with his hands during a fight.
 

Attachments

  • 1710722563172.png
    1710722563172.png
    766.8 KB · Views: 9
  • 24243432.png
    24243432.png
    45.5 KB · Views: 8
  • 1710722788347.png
    1710722788347.png
    757.9 KB · Views: 14
  • 1710723223431.png
    1710723223431.png
    302 KB · Views: 10
  • 1710723243473.png
    1710723243473.png
    973.1 KB · Views: 10
  • 1710723619682.png
    1710723619682.png
    991.3 KB · Views: 9
  • 1710724426710.png
    1710724426710.png
    807 KB · Views: 12
  • 1710724547502.png
    1710724547502.png
    915.5 KB · Views: 10
1: Put the attached "Gunsmith_dialog" files into place. All the hard-coded text is now in "Gunsmith_dialog.h", and all the lines in "Gunsmith_dialog.c" now have "DLG_TEXT" references.

2: PROGRAM\Storyline\JackSparrow\Characters\init\Officers.c": find the entry for "Gentleman Jocard" and change 'ch.Ship.Name = "Ranger";' to'ch.Ship.Name = TranslateString("", "Ranger"). Add a line for "Ranger" to the bottom of "storyline_strings.txt". That won't do anything in your current game but should make the ship name translated in a future game. If you want to correct it in your current game, put this into "console.c":
Code:
Characters[GetCharacterIndex("Gentleman Jocard")].Ship.Name = TranslateString("", "Ranger");

3: "PROGRAM\Storyline\JackSparrow\quests\both_reaction.c", case "shore_ship2": for both "Slaver4" and "Slaver5", change 'sld.name = "Slaver";' to 'sld.name = TranslateString("", "Slaver");'.

4: Case "Wrong_Eleuthera1", change 'sld.name = "Soldier";' to 'sld.name = TranslateString("", "Soldier");' for both characters. Add a line 'DisableFastTravel(true);'. There's no need to cancel it because this quest case ends the game.

5: Presumably you're being resurrected to the nearest tavern. At case "Wrong_Eleuthera2", add:
Code:
DisableFastTravel(true);
PChar.quest.disable_rebirth = true;
I'm not sure why the line 'bSuppressResurrection = true' in case "Slaver_knock" isn't preventing you from resurrecting. And it wouldn't surprise me if you can fast-travel to your ship to avoid the attack, so adding the 'DisableFastTravel(true)' line should make sure you can't.

6: PROGRAM\Storyline\JackSparrow\Characters\init\TempQuest.c": in the definition for "Bos'un", add a line 'ch.model.animation = "33_Ronald";'. To fix it in your current game, add this to "console.c":
Code:
Characters[GetCharacterIndex("Bos'un")].animation = "33_Ronald";
 

Attachments

  • Gunsmith_dialog.h
    2.3 KB · Views: 12
  • Gunsmith_dialog.c
    20.4 KB · Views: 9
6: PROGRAM\Storyline\JackSparrow\Characters\init\TempQuest.c": in the definition for "Bos'un", add a line 'ch.model.animation = "33_Ronald";'. To fix it in your current game, add this to "console.c":
Code:
Characters[GetCharacterIndex("Bos'un")].animation = "33_Ronald";
It didn't seem to help, he also still had fingers like a wolverine.
4: Case "Wrong_Eleuthera1", change 'sld.name = "Soldier";' to 'sld.name = TranslateString("", "Soldier");' for both characters. Add a line 'DisableFastTravel(true);'. There's no need to cancel it because this quest case ends the game.
In addition to the quick transition, I was talking about the fact that you can go out to sea and the game won't end. I think we need to block the exit.
3) Slaver - not translated. Besides, they don't fight, but my officers beat them.
Are those slave traders near the wrecked ship supposed to attack me? At the moment, they're just standing there watching Jokard kill me.
5: Presumably you're being resurrected to the nearest tavern. At case "Wrong_Eleuthera2", add:
Code:
DisableFastTravel(true);
PChar.quest.disable_rebirth = true;
I'm not sure why the line 'bSuppressResurrection = true' in case "Slaver_knock" isn't preventing you from resurrecting. And it wouldn't surprise me if you can fast-travel to your ship to avoid the attack, so adding the 'DisableFastTravel(true)' line should make sure you can't.
Everything was fine here, except that I could get on the ship during a battle and my officers would fight among themselves. So, DisableFastTravel(true); helped. After dying during the quest, he is reborn in the jungle instead of the tavern and talks to Jocard. But the game continues and Jack's name changes, after the fight. In addition, if you fought, then your sword was not removed and you can safely leave the location without talking.
 

Attachments

  • 1710765694928.png
    1710765694928.png
    845.7 KB · Views: 8
  • 1710770246397.png
    1710770246397.png
    1 MB · Views: 7
  • 1710770288285.png
    1710770288285.png
    1.1 MB · Views: 6
  • 1710770302547.png
    1710770302547.png
    807 KB · Views: 8
It didn't seem to help, he also still had fingers like a wolverine.
Correction: in "console.c", add:
Code:
Characters[GetCharacterIndex("Bos'un")].model.animation = "33_Ronald";

In addition to the quick transition, I was talking about the fact that you can go out to sea and the game won't end. I think we need to block the exit.
You could probably then sail to Citadel Rock, go through the tunnel to the tavern, and continue the story properly. On the other hand, if you can dodge the soldier who wants to talk to you, you could go straight to the tavern and avoid sailing to the beach, which shouldn't happen either.

Are those slave traders near the wrecked ship supposed to attack me? At the moment, they're just standing there watching Jokard kill me.
Where are Gombo and Bos'un during all this? If I read case "shore_ship3" correctly, they're supposed to fight the slave traders. The slavers should fight back, but they're each put into their own AI group, which often causes trouble.

Everything was fine here, except that I could get on the ship during a battle and my officers would fight among themselves. So, DisableFastTravel(true); helped. After dying during the quest, he is reborn in the jungle instead of the tavern and talks to Jocard. But the game continues and Jack's name changes, after the fight.
Ah, I see. You're killed, then case "Slaver_knock3" sends you to the jungle. Trying to make sure it's finished resurrecting you, I'm splitting case "Slaver_knock3" in two, then setting your name back to "Jack Sparrow" in the second part.

In addition, if you fought, then your sword was not removed and you can safely leave the location without talking.
Disarming the player and then disabling fightmode for the location should take care of that, both in port and at the plantation. See if this version of "both_reaction.c" will help. Hopefully it should also make the fight by the wrecked ship more active.
 

Attachments

  • both_reaction.c
    194.6 KB · Views: 9
Where are Gombo and Bos'un during all this? If I read case "shore_ship3" correctly, they're supposed to fight the slave traders. The slavers should fight back, but they're each put into their own AI group, which often causes trouble.
It's okay, now they're fighting amongst themselves.
But while going through this cave you can lose officer Gombo and then the quest will not continue, should he be immortal?
Disarming the player and then disabling fightmode for the location should take care of that, both in port and at the plantation.
In the port now I stand still, and the soldiers do not approach me.
At the plantation and beyond, you can watch in the video what happens. The officers attack each other, and then the sword is not removed after death.
The name is now being translated, everything is fine.
 

Attachments

  • 1710777327679.png
    1710777327679.png
    1 MB · Views: 9
I've re-uploaded "both_reaction.c" in my previous post - try it now. Instead of putting the player into actor mode to stop you from running away, I've used 'StartQuestMovie' to seal all exits. At case "Slaver_knock3a", I've added a line to disarm the player.

At the shore, the code checks whether Gombo and Bo'sun are officers, so presumably someone considered that they might not get through the cave. But the author didn't write anything for if they don't. The shore scene doesn't happen and the quest breaks. If the scene does happen then that is when they're both made immortal, so that they are certain to win their fights against the slavers. I'll need to write some quest code so that if either Gombo or Bo'sun is missing, the quest will close. If either of them is there, he'll say something and then leave.
 
I've re-uploaded "both_reaction.c" in my previous post - try it now. Instead of putting the player into actor mode to stop you from running away, I've used 'StartQuestMovie' to seal all exits. At case "Slaver_knock3a", I've added a line to disarm the player.
Yes, everything works great.
But on the plantation Gombo and Bos'un still fight among themselves. But okay, I think it’s not that important, it already plays well. Thank you. Who did this quest? It feels like it wasn't checked.
 
Again, Gombo and Bos'un have each been put into a separate AI group, each of the slavers is in a different AI group, then one slaver is supposed to attack Gombo and the other slaver is supposed to attach Bos'un. Another slaver is assigned to attack you. Multiple AI groups often confuse the system.

Do Gombo and Bos'un continue fighting each other after you've been killed and reborn in the jungle?

Provided the final scene in the jungle plays out, it's not all that important as this is a failure scene anyway. You'd normally probably want to reload back to before you went to Eleuthera and try to find the right way to complete the quest.
 
Do Gombo and Bos'un continue fighting each other after you've been killed and reborn in the jungle?
No.
First Bos'un dies in the fight, then Gombo and finally me. This always seems to happen.
1) Changes in case "Install_Voysey_And_Blythe": you broke the quest.
PChar.quest.Story_Artois_Nigel.win_condition.l1 = "location";
PChar.quest.Story_Artois_Nigel.win_condition.l1.character = PChar.id;
PChar.quest.Story_Artois_Nigel.win_condition.l1.location = "Oranjestad_town";
PChar.quest.Story_Artois_Nigel.win_condition = "Story_Artois";

Returning back LAi_QuestDelay("Story_Artois", 0.0); everything worked.
2) We need to block the location at the moment of entering the coast, and not after we find the treasure and talk to Gombo. If this is not done, the Slavers will disappear upon re-entry.
So I added to case "shore_ship":
Locations[FindLocation("Douwesen_shore_ship")].reload.l1.disable = true;
Locations[FindLocation("Douwesen_shore_ship")].reload.l2.disable = true;

Removed in case "Eleuthera_Options":
Locations[FindLocation("Douwesen_shore_ship")].reload.l1.disable = 1; // Bos'un has his next dialog
Locations[FindLocation("Douwesen_shore_ship")].reload.l2.disable = 1;

And changed 0 to false in
case "To_Eleuthera":
Locations[FindLocation("Douwesen_shore_ship")].reload.l1.disable = false;
Locations[FindLocation("Douwesen_shore_ship")].reload.l2.disable = false; although it's not that important
3) Should robbers attack me when I went into the basement of a wounded acquaintance of Gombo? This is roughly the case "Blaze_cop_dialog"
 

Attachments

  • 1710808349998.png
    1710808349998.png
    754.7 KB · Views: 5
  • 1710808996866.png
    1710808996866.png
    684.2 KB · Views: 6
No.
First Bos'un dies in the fight, then Gombo and finally me. This always seems to happen.
Yes, that is scripted. When Bos'un and Gombo are down to 40% health, they're automatically killed. When they're both down, you're automatically killed. The slavers are immortal so neither you nor your officers can kill them to prevent the sequence.

1) Changes in case "Install_Voysey_And_Blythe": you broke the quest.
PChar.quest.Story_Artois_Nigel.win_condition.l1 = "location";
PChar.quest.Story_Artois_Nigel.win_condition.l1.character = PChar.id;
PChar.quest.Story_Artois_Nigel.win_condition.l1.location = "Oranjestad_town";
PChar.quest.Story_Artois_Nigel.win_condition = "Story_Artois";

Returning back LAi_QuestDelay("Story_Artois", 0.0); everything worked.
The version I wrote should work, but only if you go all the way back to before Davy Jones gave you the Black Pearl. Case "storm_complete" in "quests_reaction.c" places characters to enable some sidequests and also sets a trigger for case "Install_Voysey_And_Blythe". Unless you have a newer version of "quests_reaction.c" and have reloaded back to before you got the Black Pearl, the trigger for "Install_Voysey_And_Blythe" is still when you arrive in "Oranjestad_town". I changed it to trigger when you arrive in "Oranjestad_exit", then "Install_Voysey_And_Blythe" sets a new trigger for "Story_Artois" when you enter "Oranjestad_town", and also sets the 'vcskip' attribute on "Oranjestad_town" to prevent random thugs from appearing.

Putting 'LAi_QuestDelay("Story_Artois", 0.0);' back and continuing from an existing trigger for "Install_Voysey_And_Blythe" will work in that the quest will trigger, but you're still at risk of random characters in town.

2) We need to block the location at the moment of entering the coast, and not after we find the treasure and talk to Gombo. If this is not done, the Slavers will disappear upon re-entry.
So I added to case "shore_ship":
Locations[FindLocation("Douwesen_shore_ship")].reload.l1.disable = true;
Locations[FindLocation("Douwesen_shore_ship")].reload.l2.disable = true;

Removed in case "Eleuthera_Options":
Locations[FindLocation("Douwesen_shore_ship")].reload.l1.disable = 1; // Bos'un has his next dialog
Locations[FindLocation("Douwesen_shore_ship")].reload.l2.disable = 1;
Good idea, and move the 'DisableFastTravel(true);' as well.

And changed 0 to false in
case "To_Eleuthera":
Locations[FindLocation("Douwesen_shore_ship")].reload.l1.disable = false;
Locations[FindLocation("Douwesen_shore_ship")].reload.l2.disable = false; although it's not that important
3) Should robbers attack me when I went into the basement of a wounded acquaintance of Gombo? This is roughly the case "Blaze_cop_dialog"
That is to be expected because that basement is also a dungeon, so it will automatically spawn thugs. Do they prevent the quest from continuing? Do they attack you while you're talking to the wounded friend and then the soldiers?
 
That is to be expected because that basement is also a dungeon, so it will automatically spawn thugs. Do they prevent the quest from continuing? Do they attack you while you're talking to the wounded friend and then the soldiers?
I would even say that it is Officer Gibbs who attacks them. He runs towards them and they run after him. But since he is immortal, this has no effect, and if there had been another officer, perhaps everyone would have died.
 
A 'vcskip' on "Eleuthera_tavern_upstairs" would prevent the thugs from spawning. But if your loyal boatswain is keeping them busy while you talk to Gombo's friend and then the soldiers, the thugs may as well show up as normal - possibly more amusing and it means we don't need to find a suitable place to cancel the 'vcskip' to return the place to normal.
 
1) In the scene of freeing the slaves, I can run away to another location or teleport to a ship, which will break the quest - according to the plot, we will be teleported to the ship with Gombo when the first person reaches the exit. The easiest way to do it is this way.
Add to case "right_Eleuthera2":
StartQuestMovie(true, false, true);TrackQuestMovie("start","EleutheraPlantation");
DisableFastTravel(true);
case "Jocard_Deck7":
EndQuestMovie();TrackQuestMovie("end","EleutheraPlantation");
DisableFastTravel(false);
Or
Locations[FindLocation("EleutheraPlantation")].reload.l1.disable = true;
Locations[FindLocation("EleutheraPlantation")].reload.l3.disable = true;
Locations[FindLocation("EleutheraPlantation")].reload.l4.disable = true;

2)Why is there such a long delay in case "Jocard_Deck3"? Here the captain calls Bos'un, but he is standing behind Jocard and there is no point in such a delay.
LAi_QuestDelay("Jocard_Deck3.5", 10.0);
I think this is an error and should be:
LAi_QuestDelay("Jocard_Deck3.5", 1.0);

3)Afterwards there is a battle at sea - it’s not clear at all... Is this Jocard’s team on the ship? Well, it doesn’t matter, because this ship cannot be sunk - it is immortal! I won’t be able to swim away from him either, he’s chasing me.
 

Attachments

  • 1710886672187.png
    1710886672187.png
    1 MB · Views: 5
  • 1710886689901.png
    1710886689901.png
    1 MB · Views: 4
  • 1710887889471.png
    1710887889471.png
    795.5 KB · Views: 7
  • 1710888214231.png
    1710888214231.png
    728.8 KB · Views: 9
1) In the scene of freeing the slaves, I can run away to another location or teleport to a ship, which will break the quest - according to the plot, we will be teleported to the ship with Gombo when the first person reaches the exit. The easiest way to do it is this way.
Add to case "right_Eleuthera2":
StartQuestMovie(true, false, true);TrackQuestMovie("start","EleutheraPlantation");
DisableFastTravel(true);
case "Jocard_Deck7":
EndQuestMovie();TrackQuestMovie("end","EleutheraPlantation");
DisableFastTravel(false);
Or
Locations[FindLocation("EleutheraPlantation")].reload.l1.disable = true;
Locations[FindLocation("EleutheraPlantation")].reload.l3.disable = true;
Locations[FindLocation("EleutheraPlantation")].reload.l4.disable = true;
Apart from changing "EleutheraPlantation" to "right_Eleuthera2" and "Jocard_Deck7" so that the correct quest cases are reported by 'TrackQuestMovie' in "compile.log", that seems reasonable and I've added it to my version.

2)Why is there such a long delay in case "Jocard_Deck3"? Here the captain calls Bos'un, but he is standing behind Jocard and there is no point in such a delay.
LAi_QuestDelay("Jocard_Deck3.5", 10.0);
I think this is an error and should be:
LAi_QuestDelay("Jocard_Deck3.5", 1.0);
Fair enough - if Bo'sun needs more time to get into place, he'll get it from his 'LAi_ActorDialog' command in case "Jocard_Deck4". Change that to:
Code:
LAi_ActorDialog(CharacterFromID("Bos'un"),PChar,"",10.0,10.0);
If he's already in place, the extra time allowed for the dialog won't make any difference. If he's not, that's when he'll move towards you.

3)Afterwards there is a battle at sea - it’s not clear at all... Is this Jocard’s team on the ship? Well, it doesn’t matter, because this ship cannot be sunk - it is immortal! I won’t be able to swim away from him either, he’s chasing me.
What flag were you flying at the time? Jocard is set to use his Personal flag. If you're flying a flag to which you yourself are hostile, Jocard will be hostile too. For example, if you're hostile to Britain, Jocard is hostile to Britain too; if you're now flying a false British flag to avoid trouble with British ships near Eleuthera, Jocard will regard you as British and attack you.

In case "Leave_Jocard", add:
Code:
LAi_SetImmortal(CharacterFromID("Gentleman Jocard"), false);
If Jocard attacks you, at least you can defend yourself.
 
What flag were you flying at the time? Jocard is set to use his Personal flag. If you're flying a flag to which you yourself are hostile, Jocard will be hostile too. For example, if you're hostile to Britain, Jocard is hostile to Britain too; if you're now flying a false British flag to avoid trouble with British ships near Eleuthera, Jocard will regard you as British and attack you.

In case "Leave_Jocard", add:
Code:
LAi_SetImmortal(CharacterFromID("Gentleman Jocard"), false);
If Jocard attacks you, at least you can defend yourself.
I'm under the Portuguese flag. Most likely it's not Jocard on the ship, but his crew, because we knocked him out with a baton on the ship. Now I can at least sink it, I can’t capture it.
It would probably be right to somehow take the ship away from him.
 
You were on Jocard's ship when you knocked him out. In case "Jocard_Deck":
Code:
            QDeck = GetCharacterShipQDeck(characterFromID("Gentleman Jocard"));
            DoQuestReloadToLocation(QDeck, "rld", "startloc", "Jocard_Deck2");
The ship is still assigned to Jocard. There is a line in "Leave_Jocard" to prevent the ship from being boarded but there does not seem to be anything preventing Jocard from surrendering, so see if you can make him surrender by hitting the ship with grapeshot to reduce the crew's morale.
 
You were on Jocard's ship when you knocked him out. In case "Jocard_Deck":
Code:
            QDeck = GetCharacterShipQDeck(characterFromID("Gentleman Jocard"));
            DoQuestReloadToLocation(QDeck, "rld", "startloc", "Jocard_Deck2");
The ship is still assigned to Jocard. There is a line in "Leave_Jocard" to prevent the ship from being boarded but there does not seem to be anything preventing Jocard from surrendering, so see if you can make him surrender by hitting the ship with grapeshot to reduce the crew's morale.
Yes, the ship surrendered. But why can't he be captured?
 

Attachments

  • 1710941473312.png
    1710941473312.png
    825.2 KB · Views: 9
Probably because he's set to PERSONAL_NATION, which is you! I've seen similar problems with PRIVATEER_NATION, which is a sort of fake nation that can be used for special ships. The solution is to prevent the captain from surrendering at sea.

You could add this to "Leave_Jocard":
Code:
Characters[GetCharacterIndex("Gentleman Jocard")].nosurrender = 2;

If you want to be able to capture the ship, delete this line:
Code:
Character_SetAbordageEnable(CharacterFromID("Gentleman Jocard"), false);
That's the line which prevents you from boarding the ship.

If you want to be able to capture Jocard and maybe recruit him as an officer, set 'nosurrender' to 1 instead of 2. If it's 2, the captain won't surrender at all. If it's 1, he won't surrender at sea but may surrender during boarding, and that's when you may take him prisoner.
 
Back
Top