• 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

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.
I think it would be correct not to add a ban command to the white flag at all.
As a last resort, you can leave
Characters[GetCharacterIndex("Gentleman Jocard")].nosurrender = 1;
But I don't see the point in this.
It is better to take an additional good ship for yourself rather than sink it.
I just commented out this line
//Character_SetAbordageEnable(characterFromID("Gentleman Jocard"), false);
The only problem with this is that he has no dialogue when he gives up. I can't talk to him or kill him.
 

Attachments

  • 1710950866482.png
    1710950866482.png
    854.3 KB · Views: 47
I think it would be correct not to add a ban command to the white flag at all.
As a last resort, you can leave
Characters[GetCharacterIndex("Gentleman Jocard")].nosurrender = 1;
But I don't see the point in this.
It is better to take an additional good ship for yourself rather than sink it.
I just commented out this line
//Character_SetAbordageEnable(characterFromID("Gentleman Jocard"), false);
The only problem with this is that he has no dialogue when he gives up. I can't talk to him or kill him.
Blocking Jocard from surrendering won't prevent you from capturing the ship. The captains of the ships in "Sao Feng's Bodyguards" all have 'nosurrender' set to 2, which is why they'll never surrender - you can board the ships, kill the captains and capture the ships. The same applies to the Satanists in the normal "Strange Things Going On" sidequest - the captain of the Mefisto will never surrender but you can kill him and capture the ship.

You do need to delete or comment out the 'Character_SetAbordageEnable' line to allow boarding at all. Jocard needs a 'nosurrender' line to prevent the problem you saw, with the ship having surrendered but being impossible to capture. The only question then is, do you want to be able to capture Jocard himself, or do you want him to always fight you?

To make sure Jocard can talk if he surrenders, try adding this to "Leave_Jocard":
Code:
Characters[GetCharacterIndex("Gentleman Jocard")].Dialog.Filename = "Cabinfight_dialog.c";
LAi_SetStayType(characterfromID("Gentleman Jocard"));
 
To make sure Jocard can talk if he surrenders, try adding this to "Leave_Jocard":
Code:
Characters[GetCharacterIndex("Gentleman Jocard")].Dialog.Filename = "Cabinfight_dialog.c";
LAi_SetStayType(characterfromID("Gentleman Jocard"));
Yes it works.
 
I got to Gunsmith_dialog.h and translated it.
But there is no dialogue in the game.
Here are the errors:
COMPILE ERROR - file: dialogs\Gunsmith_dialog.c; line: 85
COMPILE ERROR - file: DIALOGS\Russian\Gunsmith_dialog.h; line: 1
Invalid array 'DLG_TEXT' initialization parameters list
 

Attachments

  • 1710970689241.png
    1710970689241.png
    717.1 KB · Views: 44
I have long noticed among gunsmiths that after the price there is neither a dot nor (gold coins). This spoils the perception a little. For the Russian language I changed the dialogue a bit to make it look good, so you can ignore that.

Also, as I understand, the quality of firearms does not fall below string = qBadly worn (in common.ini), while the blade has string = qBroken. I tried for a long time to bring him to this state, but nothing worked.
Today I will upload the Russian translation corrections so they will be ready tomorrow.
 

Attachments

  • 1711037737412.png
    1711037737412.png
    752.8 KB · Views: 53
I have long noticed among gunsmiths that after the price there is neither a dot nor (gold coins). This spoils the perception a little. For the Russian language I changed the dialogue a bit to make it look good, so you can ignore that.
Adding the "gold coins" or other currency would be trickier but adding a full stop to the end is easy. I've re-uploaded the file "Gunsmith_dialog.c" in post #884 with full stops added to each code line where you tell the blacksmith how much you will pay.

Also, as I understand, the quality of firearms does not fall below string = qBadly worn (in common.ini), while the blade has string = qBroken. I tried for a long time to bring him to this state, but nothing worked.
That is correct. Blades can break during melee. Firearms can not. If an enemy's blade breaks, it disappears and when you kill the enemy, you don't auto-loot a broken blade. A badly worn firearm can still be used, though enemies usually don't equip them, which means you may kill an enemy, not auto-loot a firearm because it wasn't equipped, then loot the body and find a badly worn firearm.

So the lowest quality for a blade is "broken" while the lowest quality for firearms is "badly worn". Blades never use "badly worn", they go from "worn" to "broken".
 
I was informed that the archive is downloaded with the name "b14_beta4_final.1.tar", and the name "b14_beta4_final.tar" is required for installation. Therefore, the installer does not see the archive and needs to be changed to the correct name for it to work.

Can you reset your "quests_side.c"? Hammie is implementing "Night Craft" and noticed that I didn't provide him with this file.
 

Attachments

  • 1711197474383.png
    1711197474383.png
    82.9 KB · Views: 29
Last edited:
What the?!? I know I uploaded the correct file - it's the original 2016 one. It seems ModDB messed it up again!

"quests_side.c" has nothing to do with "Night Craft" - not yet, anyway. The quest code is in "PROGRAM\Storyline\standard\quests\quests_reaction.c", but there are also dialog files, character definition files and a new ship. I'll need to release a full update. Otherwise @Hammie should be able to find all the files needed for "Night Craft" here:
https://piratesahoy.bowengames.com/potc/Grey Roger/Night Craft.zip

(I've updated a few things so you may want to download it again before trying it.)

In due time, I hope to move most of the quest code out of "quests_reaction.c" and into "quests_side.c" so that both "Tales of a Sea Hawk" and FreePlay can find it. The idea will be to leave it as an extension to "Tales of a Sea Hawk" after you visit Raoul Rheims' house, but it will also be a "Trophy Quest" for FreePlay smugglers.
 
They shouldn't be. @salonikasurf pointed out that I'd missed out the model and texture files for Beltrop's sword, so I only added them today.
I don’t know, I downloaded your archive yesterday, maybe you added something already then. This is what is downloaded for me.
 

Attachments

  • Night Craft (3).zip
    9 MB · Views: 27
I've downloaded that, and also re-downloaded my own file just to make sure that it uploaded correctly.

The current version has a slight difference in "PROGRAM\DIALOGS\ENGLISH\Susanne Maginot_dialog.h" and some changes to "PROGRAM\Storyline\standard\quests\quests_reaction.c", particularly to the third mission. The questbook still had a couple of references to "#sFalaise de Fleur#" which are now corrected to "#sMarigot#". And the files for Beltrop's file are now added.

All those fixes were made today, so even yesterday's download is now out of date!
 
1) Elizabeth's father appears in the same location. This probably shouldn't happen.
2) If the guards kill me after escaping from the pier, I will wake up in the tavern and all the doors will be blocked, even to the port. Probably we need to do death without rebirth here.
3) The #scursed_ship# variable does not work for translation.
In the Port Guard_Dialog.h file, line 10.
In the file Will Turner_dialog.h lines 2, 4, 22, 39, 107, 109, 116
Also most likely in other files.
4) Helmsman - does not translate.
5) Lieutenant Gillette - does not translate.
 

Attachments

  • 1711452543557.png
    1711452543557.png
    877.6 KB · Views: 35
  • 1711452702258.png
    1711452702258.png
    1,007.6 KB · Views: 29
  • 1711453218465.png
    1711453218465.png
    732.8 KB · Views: 21
  • 1711453238238.png
    1711453238238.png
    690.8 KB · Views: 30
  • 1711454733120.png
    1711454733120.png
    661.2 KB · Views: 26
  • 1711454862054.png
    1711454862054.png
    879.3 KB · Views: 24
Last edited:
1: In "quests_reaction.c", line 5955, try replacing "goto_45" with "goto_44". Also, if the governor appears to just teleport there instead of running the whole way, change 10.0 to 30.0 to give him more time to get there. He is originally placed on "goto_57" which isn't in your screen shot, so it's probably some distance away.

2: In any quest case around there, add:
Code:
PChar.quest.disable_rebirth = true;
Then, at case "Off_to_shipyard_now6", add:
Code:
PChar.quest.disable_rebirth = false;

3: I can't remember why, but I do recall there being a reason we didn't simply translate the definitions of "cursed_ship" in "PROGRAM\utils.c" and "PROGRAM\SHIPS\ships.c". So, in "PROGRAM\Storyline\JackSparrow\dialogs\Port Guard_Dialog.c", case "inprison_blackpearlattack", add:
Code:
Preprocessor_Add("ship_name", XI_ConvertString(PreprocessText("#scursed_ship#")));
Then, in "PROGRAM\Storyline\JackSparrow\dialogs\RUSSIAN\Port Guard_dialog.h", line 10, replace "#scursed_ship#" with "#sship_name#".

Do the same in "PROGRAM\DIALOGS\RUSSIAN\Will Turner_dialog.h" for all occurrences of "#scursed_ship#". In "PROGRAM\DIALOGS\Will Turner_dialog.c", before 'switch(Dialog.CurrentNode)' so that it applies in all dialog cases, add the line:
Code:
Preprocessor_Add("ship_name", XI_ConvertString(PreprocessText("#scursed_ship#")));

4, 5: "PROGRAM\Storyline\JackSparrow\quests\quests_reaction.c", case "Dauntless_Deck_NORR1": the offending lines are:
Code:
sld.name = "Lieutenant";
sld.lastname = "Gillette";
... and...
Code:
sld.name = "Helmsman";
Add 'TranslateString' to them all.
 
1: In "quests_reaction.c", line 5955, try replacing "goto_45" with "goto_44". Also, if the governor appears to just teleport there instead of running the whole way, change 10.0 to 30.0 to give him more time to get there. He is originally placed on "goto_57" which isn't in your screen shot, so it's probably some distance away.
Everything seems to be fine now, only after the dialogue from blaze_dialog.h the governor teleports back and runs to the locator again. Norrington does the same. You can watch this on video.
 
That's because quest case "The_Black_Pearl_has_been_called" is triggered from "quests_reaction.c", case "After_Elizabeth_Sea_rescue":
Code:
LAi_QuestDelay("The_Black_Pearl_has_been_called", 0.0);
It's also triggered from "blaze_dialog.c", case "calling_the_black_pearl":
Code:
AddDialogExitQuest("The_Black_Pearl_has_been_called");
Decide whether you want the governor and Norrington to start moving right after you and Elizabeth Swann appear on the dock, or wait until you've finished the self dialog. Delete or comment out the trigger line which you don't want. (Personally, I'd have them start moving right away and comment out the trigger in "blaze_dialog.c". They're more interested in Elizabeth than in you, so they should react to her appearance on the dock. Even if you take ages talking to yourself, Norrington will wait until you're ready before he tries to talk to you.)
 
2: In any quest case around there, add:
Code:
PChar.quest.disable_rebirth = true;
Paste this into case "Off_to_shipyard_now5":
Decide whether you want the governor and Norrington to start moving right after you and Elizabeth Swann appear on the dock, or wait until you've finished the self dialog. Delete or comment out the trigger line which you don't want. (Personally, I'd have them start moving right away and comment out the trigger in "blaze_dialog.c". They're more interested in Elizabeth than in you, so they should react to her appearance on the dock. Even if you take ages talking to yourself, Norrington will wait until you're ready before he tries to talk to you.)
I think it's better for them to run straight away.
I commented out this line in blaze_dialog.c and everything is fine.
//AddDialogExitQuest("The_Black_Pearl_has_been_called");
 
Do the same in "PROGRAM\DIALOGS\RUSSIAN\Will Turner_dialog.h" for all occurrences of "#scursed_ship#". In "PROGRAM\DIALOGS\Will Turner_dialog.c", before 'switch(Dialog.CurrentNode)' so that it applies in all dialog cases, add the line:
Then this must also be done in the files:
James Norrington_Dialog.c
Barbossa_dialog.c
Billy Brock_dialog.c
Bootstrap Bill Turner_dialog.c
Jaoquin de masse_dialog.c
John Clifford Brin_dialog.c
Elizabeth Swann_dialog.c
Mr. Gibbs_dialog.c
Pintel_dialog.c
Ragetti_dialog.c
RESOURCE\INI\TEXTS\RUSSIAN\Storyline\JackSparrow\QUESTBOOK
Curse Of.txt
Stolen.txt
 
Then this must also be done in the files:
James Norrington_Dialog.c
Barbossa_dialog.c
Billy Brock_dialog.c
Bootstrap Bill Turner_dialog.c
Jaoquin de masse_dialog.c
John Clifford Brin_dialog.c
Elizabeth Swann_dialog.c
Mr. Gibbs_dialog.c
Pintel_dialog.c
Ragetti_dialog.c
RESOURCE\INI\TEXTS\RUSSIAN\Storyline\JackSparrow\QUESTBOOK
Curse Of.txt
Stolen.txt
OK, forget that! Put "Will Turner_dialog.h", "Port Guard_dialog.h" and their associated ".c" files back the way they were.

In "PROGRAM\utils.c", find:
Code:
Preprocessor_Save("cursed_ship", "Black Pearl");        // PB: For Jack Sparrow storyline
Preprocessor_Save("uncursed_ship", "Crimson Blood");    // PB: For Jack Sparrow storyline

And in "PROGRAM\Ships\Ships.c", find:
Code:
Preprocessor_Save("cursed_ship", "Crimson Blood");
Preprocessor_Save("uncursed_ship", "Black Pearl");
Replace "Black Pearl" with XI_ConvertString("Black Pearl") in both, and do the same for "Crimson Blood".

That will only take effect in a new game, or if you have yet to complete "Sao Feng's Bodyguards". To correct your current game, put this into "PROGRAM\console.c":
Code:
Preprocessor_Delete("cursed_ship");
Preprocessor_Delete("uncursed_ship");
Preprocessor_Save("cursed_ship", XI_ConvertString("Black Pearl"));
Preprocessor_Save("uncursed_ship", XI_ConvertString("Crimson Blood"))

Press F12 to activate "console.c". Then watch for anywhere that those ship names should appear and don't - it probably means they're being translated and don't need to be.
 
Back
Top