• 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

@Jack Rackham, should it be open permanently, or at all, in any other storyline?
The tavern_kitchen can be open as long as the tavern_kitchen_bedroom is locked. Which it is.
I don't know why the tavern_upstairs is open. That's not the case in other taverns so I think it should be locked in all storylines.
 
1) In Enc_RapersGirl_dialog.c change:
(Line 77) LanguageConvertString(tmpLangFileID,"gold."));
on
LanguageConvertString(tmpLangFileID,"Gold") + ".");
(Line 104) same thing.
This is so that not only the number is displayed.
The problem is that on line 104 it doesn't work and I don't know why.
2) Why is it that when I get a lockpick or jewelry, it doesn't show up in the logs.
I tried to do something like this, but I don't know how to do variable translation.
Enc_Defector_dialog.c
LogIt(TranslateString("You got") + gemtype + ".");
3) In Enc_Defector_dialog.c
There are lines
int repch2 = 3;
if(makeint(Pchar.reputation) >= 60) repch2 = 2;
if(makeint(Pchar.reputation) >= 70) repch2 = 1;
And if I get “repch2 = 2;”, then the reputation change will not appear in the logs. This only works for +3 and +1. And is it possible to put “+” in front of the number? When reputation is taken away there is a "-", when it is added, then there is nothing.
4) In discord, a person sent a photo in which the texture of the item itmname_palm2_big is missing. He played FreePlay.
 

Attachments

  • 1713314123393.png
    1713314123393.png
    809.2 KB · Views: 19
  • 1713315339880.jpeg
    1713315339880.jpeg
    1.2 MB · Views: 13
1: Move this line:
Code:
int tmpLangFileID = LanguageOpenFile("interface_strings.txt");
... to above this:
Code:
if(makeint(Pchar.reputation) >= 80)
Move this line:
Code:
LanguageCloseFile(tmpLangFileID);
... to directly above this:
Code:
AddDialogExitQuest("LandEnc_Char1_Leaves");
That should put both of them outside the condition so that 'tmpLangFileID' will be defined for both lines 77 and 104.

2: It shouldn't be necessary to have a 'logit' for the gem because the defector's dialog should tell you which gem you got. Likewise, the defector tells you that you're getting the tools of the trade, which means a lockpick, a thief's knife, some poisoned throwing knives and some etherbottles. There's no code to log any of them and if you already have any of them then you may notice in your inventory list that you now have more.

3: No idea. "Enc_defector_dialog.c" doesn't log anything, it just calls 'ChangeCharacterReputation(pchar, repch2)'. Function 'ChangeCharacterReputation' is defined in "PROGRAM\Characters\CharacterUtilite.c", which does the logging:
Code:
if (IsMainCharacter(chref)) LogIt(TranslateString("","CHANGE REP FOR PLAYER:") + " " + intRet(incr==9999,1,incr) + stringRet(DOUBLE_REP_INCR," x2",""));
An increase of 2 isn't anything special so it should not do anything differently from 1 or 3. (Or any other normal value when you get a reputation increase for being promoted, releasing a prisoner without demanding ransom, or saying nice things to random people in the street.)

4: The problem is not that there are no picture or text. The problem is that "palm2_big" should not be in his inventory! He should not be able to pick that up.
 
How can I remove these spaces in the Russian version? As I understand it, they are not in English and the code for this is in 'LAi_fightparams.c' (line 618).
 

Attachments

  • 1713444132460.png
    1713444132460.png
    100.2 KB · Views: 10
Line 618 is where various components are put together, but the problem is earlier. For example, line 562:
Code:
b = " " + XI_ConvertString("a") + " " + TranslateString("",tempitem.name);
In Russian "common.ini", "a" is translated as "". Those double spaces are where English has "a" and Russian has "".

This sort of thing is always going to be a problem in translations of any languages in which "a" translates to different words depending on whether the object is masculine or feminine. Either translate "a" and accept that some items will have the wrong gender, or don't translate "a" and accept double spaces. Otherwise the code is going to become very messy!
 
1) If I go to the slave camp without the Indian, nothing will happen. There is no dialogue.
2) Slave Mine - not translated. Must be "Шахта Рабов".
 

Attachments

  • 1713742895413.png
    1713742895413.png
    1,020.5 KB · Views: 11
  • 1713743443970.png
    1713743443970.png
    988.5 KB · Views: 12
1: In "quests_reaction.c", add this:
Code:
Locations[FindLocation("Slave_mine")].locators_radius.goto.goto1 = 5.5;{/code]... into case "left_Havana".  You'll need to start again, or at least load a save from before you left town after escaping from prison.

Or you can walk forward to the camp commandant.  The problem is that the locator on which he is standing has not been expanded as that only happens in the code which also moves the Indian to each exit to show you where to go.  So the dialog won't trigger unless you're on the locator while it's at its normal size.  Moving that line up to case "left_Havana" means the locator will be expanded regardless of what happens to the Indian.

2: Put this into "RESOURCE\Textures\Loading\Russian".
 

Attachments

  • Slave_Mine.tga.tx.zip
    1.3 MB · Views: 11
There is something wrong with the captain of the ship that needs to be stolen. He goes into the wall away from me.
 

Attachments

  • 1713912738691.png
    1713912738691.png
    920.2 KB · Views: 12
In "quests_reaction.c", case "cabin_duel", find this line:
Code:
LAi_ActorDialog(characterFromID("Spanish_Captain3"), PChar, "cabin_duel2", 5.0, 5.0);
See what happens if you change it to:
Code:
LAi_ActorDialogNow(characterFromID("Spanish_Captain3"), PChar, "cabin_duel2", 2.0);
 
In "quests_reaction.c", case "cabin_duel", find this line:
Code:
LAi_ActorDialog(characterFromID("Spanish_Captain3"), PChar, "cabin_duel2", 5.0, 5.0);
See what happens if you change it to:
Code:
LAi_ActorDialogNow(characterFromID("Spanish_Captain3"), PChar, "cabin_duel2", 2.0);
Now he does not leave the locator, but turns his back if you don’t approach him. In principle, it’s already quite good.
 

Attachments

  • 1713960306044.png
    1713960306044.png
    864 KB · Views: 11
He ought to talk to you as soon as you enter after you've changed it to 'LAi_ActorDialogNow'!

Change the 2.0 to 0.2. If that doesn't make him talk right away, upload "compile.log".
 
Do that again - enter the cabin, talk, fight. Then upload "compile.log". Something odd is going on because he's supposed to attack you.
 
There's nothing in either of those to explain the captain's odd behaviour. "system.log" has nothing about that part of the story at all, and "compile.log" shows the quest cases running without any apparent problems - I thought perhaps there might be something about the captain being unable to get to a locator, but there is nothing about him.

Try changing quest case "cabin_duel2" to this:
Code:
        case "cabin_duel2":
            LAi_SetActorType(CharacterFromID("Spanish_Captain3"));
            LAi_ActorAttack(CharacterfromID("Spanish_Captain3"), PChar, "");
            PChar.quest.commandant_dead.win_condition.l1 = "NPC_Death";
            PChar.quest.commandant_dead.win_condition.l1.character = "Spanish_Captain3";
            PChar.quest.commandant_dead.win_condition = "find_papers";
        break;
Instead of putting the captain into an AI group and having that group fight you, this should simply make him attack you, then case "find_papers" triggers when he dies. The main disadvantage is that this won't make the icons flash red and the music won't change. But see if that makes the captain attack you instead of facing away.
 
There's nothing in either of those to explain the captain's odd behaviour. "system.log" has nothing about that part of the story at all, and "compile.log" shows the quest cases running without any apparent problems - I thought perhaps there might be something about the captain being unable to get to a locator, but there is nothing about him.

Try changing quest case "cabin_duel2" to this:
Code:
        case "cabin_duel2":
            LAi_SetActorType(CharacterFromID("Spanish_Captain3"));
            LAi_ActorAttack(CharacterfromID("Spanish_Captain3"), PChar, "");
            PChar.quest.commandant_dead.win_condition.l1 = "NPC_Death";
            PChar.quest.commandant_dead.win_condition.l1.character = "Spanish_Captain3";
            PChar.quest.commandant_dead.win_condition = "find_papers";
        break;
Instead of putting the captain into an AI group and having that group fight you, this should simply make him attack you, then case "find_papers" triggers when he dies. The main disadvantage is that this won't make the icons flash red and the music won't change. But see if that makes the captain attack you instead of facing away.
So he talks, takes out a sword, then puts it away and turns away.
 

Attachments

  • 1713970505104.png
    1713970505104.png
    796.7 KB · Views: 13
This is odd. Locator "goto2" is facing away so I tried putting the captain onto another starting locator which faces towards you, and he still does the same. He behaves properly if I put him on a locator right in front of the door. In the end I created a new locator to put him a little further away, and he remains facing you - but if I move that locator too far back, he turns away from you again.

The new locator, along with a change to the code to put the captain on it, will be in the next update. For now, you can change case "scout_leaves". In this line:
Code:
ChangeCharacterAddressGroup(characterFromID("Spanish_Captain3"), "Quest_Cabin", "goto", "goto2");
... replace "goto", "goto2" with "rld", "aloc0".
 
Back
Top