• 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

Ah, I see what is happening. The dialog code checks the storyline tracking attribute 'pchar.quest.main_line' and only allows you to ask about Rheims if that is set to "blaze_talk_with_silehard_complete", which it is after Silehard released you from prison and then sent you to find Rheims. But the dialog code also sets an attribute on Ines Diaz and does not allow you to ask about Rheims if that attribute is set, the idea being that you can only ask once, then you need to go and talk to Ines Diaz.

Find this line in case "first time":
Code:
characters[GetCharacterIndex("Ines Diaz")].quest.rheims = "speak_with_humans";
Move it to case "search_rheims". That way the attribute should only be set on Ines Diaz after you have asked one of the citizens about Rheims. Incidentally, you need to ask one of the citizens about Rheims before you talk to Ines Diaz because she only checks your Leadership skill and reputation if that attribute is set.
 
Ah, I see what is happening. The dialog code checks the storyline tracking attribute 'pchar.quest.main_line' and only allows you to ask about Rheims if that is set to "blaze_talk_with_silehard_complete", which it is after Silehard released you from prison and then sent you to find Rheims. But the dialog code also sets an attribute on Ines Diaz and does not allow you to ask about Rheims if that attribute is set, the idea being that you can only ask once, then you need to go and talk to Ines Diaz.

Find this line in case "first time":
Code:
characters[GetCharacterIndex("Ines Diaz")].quest.rheims = "speak_with_humans";
Yes, everything works correctly now.
Incidentally, you need to ask one of the citizens about Rheims before you talk to Ines Diaz because she only checks your Leadership skill and reputation if that attribute is set.
Yes, in this case, Ines is now giving information on Reims.

1) If I understand correctly, I can pay the person at any time for information about Reims after line 62 of "quest_pirate_01_dialog.h". But after that he stands still and you cannot start a dialogue with him.
2) There is no period at the end of the sentence. Add line 248 to quest_pirate_01_dialog.c :
link.l1 = DLG_TEXT[72] + characters[GetCharacterIndex(DLG_TEXT[73])].lastname + ".";
 

Attachments

  • 1719533232722.png
    1719533232722.png
    869.7 KB · Views: 6
  • 1719533759696.png
    1719533759696.png
    765 KB · Views: 2
Last edited:
1: In "quests_reaction.c", case "quest_pirate_01_back_to_player", add:
Code:
LAi_SetCitizenType(CharacterFromID("quest_pirate_01"));
2: That line should not need to add a period, nor should it need to add the character's last name, because "Rheims" is already included in English DLG_TEXT[72], which is line 74:
"Well, that's certainly not much. I hope your information about where Rheims was heading is worth more."
The Spanish version also includes "Rheims". Change the Russian version to match, then change that line in "quest_pirate_01_dialog.c" to:
Code:
link.l1 = DLG_TEXT[72];

Incidentally, check how much money you have before and after you pay the pirate. I'm not sure the 1500 is removed from your money. If not, in "quest_pirate_01_dialog.c" case case "ines_info_denied_6", add:
Code:
PlayStereoSound("INTERFACE\took_item.wav");
AddMoneyToCharacter(PChar, -1500);
 
Incidentally, check how much money you have before and after you pay the pirate. I'm not sure the 1500 is removed from your money. If not, in "quest_pirate_01_dialog.c" case case "ines_info_denied_6", add:
Code:
PlayStereoSound("INTERFACE\took_item.wav");
AddMoneyToCharacter(PChar, -1500);
Yes, the money is not taken away, but if I insert AddMoneyToCharacter(PChar, -1500); in case "ines_info_denied_6", then in
case "ines_info_denied_bad_good": they will also be taken away.
Dialog.snd = "voice\QUP1\QUP1031";
dialog.text = DLG_TEXT[71];
link.l1 = DLG_TEXT[72];
link.l1.go = "ines_info_denied_6";
PlayStereoSound("INTERFACE\took_item.wav");
AddMoneyToCharacter(pchar, 356);
1: In "quests_reaction.c", case "quest_pirate_01_back_to_player", add:
Code:
LAi_SetCitizenType(CharacterFromID("quest_pirate_01"));
Now it works well.
 
Try this version of "quest_pirate_01_dialog.c". I've copied case "ines_info_denied_6", called the copy case "ines_info_denied_6_pay", and only put the code to take the 1500 into that copy. Then I've changed cases "ines_info_denied_4" and "ines_info_denied_5" to link to "ines_info_denied_6_pay" as they're the ones where you pay the 1500. Cases "ines_info_denied_bad_good" and "ines_info_denied_bad_bad" still link to the original "ines_info_denied_6" so you won't lose the 1500.
 

Attachments

  • quest_pirate_01_dialog.c
    9.4 KB · Views: 4
Try this version of "quest_pirate_01_dialog.c". I've copied case "ines_info_denied_6", called the copy case "ines_info_denied_6_pay", and only put the code to take the 1500 into that copy. Then I've changed cases "ines_info_denied_4" and "ines_info_denied_5" to link to "ines_info_denied_6_pay" as they're the ones where you pay the 1500. Cases "ines_info_denied_bad_good" and "ines_info_denied_bad_bad" still link to the original "ines_info_denied_6" so you won't lose the 1500.
Everything seems to be working well.
 
I've attached saves if you need them.
1) If you choose the option to kill the guards, they miraculously come to life and enter the Reims house after the search. But even when I kill them in the room, they will again stand at the door on the street. It might be easier to add other people entering the room if you decide to kill the guards.
2) If you climb through the window and kill the guys in the room, then they won’t be near the door, which is correct. But the window remains open, and if you go into it again, these guys will be walking around the room alive.
3) Any dialog when taking a room in the tavern adds an entry to the quest log, even though it should only happen at night.
4) There was a bug that mixed two quests: Edgar Attwood Adventures and Artois Voysey (Quest) (The second option in which Artois keeps the information to himself). A team member came up to me and said that Attwood ran away, and the dialog box with Artois didn't pop up when he was shot. It happened in Port Royal.
5) ERROR - Missing Character ID: quest_smuggler_02
Probably related to point 4 - an error popped up when entering the city and the doors to the port closed. I think it came from the case "smuggler_line_begin"
Locations[FindLocation("Redmond_Town_01")].reload.l5.disable = 1;
6) After talking with the Head of the Pirates on Sailhard’s quest, he lost the governor’s dialogue. He keeps saying lines 2 and 3 "Isenbrandt Jurcksen_dialog.h".
 

Attachments

  • 1719782780313.png
    1719782780313.png
    515.9 KB · Views: 1
  • 1719783758669.png
    1719783758669.png
    1 MB · Views: 4
  • Smugglers lair.7z
    575.1 KB · Views: 3
  • 2 quests mixed.7z
    567 KB · Views: 4
  • Head of the Pirates.7z
    582 KB · Views: 3
1-4: I'll take a look at that savegame. For one thing, the two guards are Evaristo Filho and Macario Regalo, neither of which have the "questchar" attribute, so they might respawn but they should have different names - they're supposed to be their replacements who just happen to look the same. For another, that shouldn't happen anyway because of this in "quests_reaction.c":
Code:
        case "blaze_fight_in_rheims_house_complete":
            Locations[FindLocation("Rheims_house_in_smugglers")].reload.l1.disable = 0;
            if (LAi_IsDead(CharacterFromID("Macario Regalo")) && LAi_IsDead(CharacterFromID("Evaristo Filho")))
            {
                //ïîÿâëÿåì äðóãèõ ñòðàæíèêîâ
                ChangeCharacterAddressGroup(CharacterFromID("Fernam  Barrios"), "Rheims_house_in_smugglers", "reload", "reload1");
                ChangeCharacterAddressGroup(CharacterFromID("Leborio Violate"), "Rheims_house_in_smugglers", "reload", "reload1");
                LAi_SetActorType(CharacterFromID("Leborio Violate"));
                LAi_ActorFollow(PChar, CharacterFromID("Leborio Violate"), "", 1.0);
                LAi_ActorFollow(CharacterFromID("Leborio Violate"), PChar, "blaze_fight_in_rheims_house_complete_2", 1.0);
            }
            else
            {
                //ïîÿâëÿåì ñòðàæíèêîâ ó äîìà ðåéìñà
                ChangeCharacterAddressGroup(CharacterFromID("Macario Regalo"), "Rheims_house_in_smugglers", "reload", "reload1");
                ChangeCharacterAddressGroup(CharacterFromID("Evaristo Filho"), "Rheims_house_in_smugglers", "reload", "reload1");
                LAi_SetActorType(CharacterFromID("Evaristo Filho"));
                LAi_ActorFollow(PChar, CharacterFromID("Evaristo Filho"), "", 1.0);
                LAi_ActorFollow(CharacterFromID("Evaristo Filho"), PChar, "blaze_fight_in_rheims_house_complete_3", 1.0);
            }
        break;
If they're both dead, two other characters should appear inside Rheims' house.

5: Check "PROGRAM\Characters\init\CommonQuest.c". Character "quest_smuggler_02" should be defined there. But if you started the storyline before you downloaded the June update, the character files will already have been read without him. You may need to restart the storyline.

6: That is correct. A better question would be, when did Isenbrandt Jurcksen have standard governor dialog? He's not supposed to be a normal governor and his character definition does not include the line 'ch.Dialog.Filename.GroupDialog = "governor.c";' which is what gives real governors their governor dialog. If you are not hostile to pirates then he asks you to join the Brotherhood. If you are hostile to pirates then, unless a quest attribute has been set which he recognises, he should indeed always use lines 2 and 3.
 
1) case "blaze_to_incas_collection_begin_4":
link.l1 = pcharrepphrase(DLG_TEXT[58], DLG_TEXT[59] + GetCharacterAddressForm(PChar, ADDR_GENDER, false, false)) + ".";
Is it possible to remove this variable at the end of the sentence, which cannot be moved anywhere? This breaks the translation since it is only located at the end. You can replace the code with a variable that can be moved #...#.
2) The pirate icon is incorrect.
 

Attachments

  • 1719846484608.png
    1719846484608.png
    709.6 KB · Views: 4
  • 1719847077657.png
    1719847077657.png
    1 MB · Views: 4
Last edited:
1: It's probably easiest to add a couple of lines to the end of "Friedrich Corleis_dialog.h" for "a busy man" and "a busy woman". I'll need to change "Friedrich Corleis_dialog.c" to choose between two lines depending on the player character's sex, then use Google Translate to add similar lines to the end of other language versions of "Friedrich Corleis_dialog.h".

2: in "quest_reactions.c", case "wait_for_pirate_in_tavern_complete", delete these lines:
Code:
characters[GetCharacterIndex("quest_pirate_01")].model = "corsair2";
characters[GetCharacterIndex("quest_pirate_01")].headmodel = "h_corsair2";
And replace them with:
Code:
SetModelFromID(CharacterFromID("quest_pirate_01"), "corsair2");
That should change the pirate's outfit properly.
 
Back
Top