AmProsius / gothic-1-community-patch

Gothic 1 Community Patch
Other
49 stars 4 forks source link

"The Big Thing of the Brotherhood" can't be completed as a mercenary #355

Open OrcPriestPsychologist opened 2 years ago

OrcPriestPsychologist commented 2 years ago

Describe the bug "The Big Thing of the Brotherhood" can't be completed if the player became a mercenary before talking with Mordrag about the quest. The required dialogue option doesn't appear as it is avaialable only for rogues: https://github.com/AmProsius/gothic-1-community-patch/blob/2892a60a3edf33340d7907fe7b3c137d079e8474/scriptbase/_work/Data/Scripts/Content/Story/Missions/DIA_ORG_826_Mordrag.d#L468-L475

Expected behavior The dialogue option should be available for mercenaries too.

Or the player should be prevented from promoting to a mercenary before completing the quest(or a part of it).

Or the quest should become "failed" if it's running when the player joins mercenaries.

Steps to reproduce the issue

  1. Join the New Camp without killing Mordrag
  2. Ask Lares what to do and recieve the quest.
  3. Talk to Lee and become a mercenary.
  4. Talk to Mordrag. The dialogue option is missing.

Additional context

Lares also won't give the quest to a mercenary. I don't know if this needs a fix.

https://github.com/AmProsius/gothic-1-community-patch/blob/2892a60a3edf33340d7907fe7b3c137d079e8474/scriptbase/_work/Data/Scripts/Content/Story/Missions/DIA_ORG_801_Lares.d#L481-L487

Also Mordrag has a suspicious part where it checks Npc_GetTrueGuild(other)!=GIL_ORG. Probably this part can have a small issue if the player becomes a mercenary.

AmProsius commented 1 year ago

It may be a good idea to split this fix into multiple fixes. For Mordrag, the fix could be:

https://github.com/AmProsius/gothic-1-community-patch/blob/2892a60a3edf33340d7907fe7b3c137d079e8474/scriptbase/_work/Data/Scripts/Content/Story/Missions/DIA_ORG_826_Mordrag.d#L468-L475

changed to

FUNC int Org_826_Mordrag_GotoKalomNOW_Condition()
{
    if ((Npc_GetTrueGuild(other) == GIL_ORG)
    ||  (Npc_GetTrueGuild(other) == GIL_SLD))
    && (Npc_KnowsInfo(hero, ORG_801_Lares_GotoKalom))
    {
        return TRUE;
    };
};