Skip to content

[MOD] Afaaq, the Djinni Companion for BG2 and BG2:EE released

1235710

Comments

  • fthkufthku Member Posts: 21
    Another catch, in the new area of the mod in the Underdark I got the message that I need to pay my due to the quartermaster for the thieves guild. This means the game doesn't recognize this as being part of the Underdark, and so the stronghold, romance and other timers which are supposed to stop are continued here (also had a romance dialog happen). I tried messing around the global variables and scripts for just a bit to see if I could find where it is and fix it manually, but had no luck.
    I could just use the console to go there, pay and then come back, but I assume there's a way to fix this?
  • argent77argent77 Member Posts: 3,476
    edited May 2017
    The game checks the current chapter and delays any stronghold quests as long as you are in chapter 4, 5 or 7. Did you leave the Underdark and have reached chapter 6 already?
  • fthkufthku Member Posts: 21
    Nope, still doing the Ust Natha quests and am disguised as a drow, but as soon as I walk into the area added by the mod with Tathas Melarn quest the stronghold and romance timers start going again.
  • argent77argent77 Member Posts: 3,476
    Can you check current chapter with the console command
    C:GetGlobal("Chapter","GLOBAL")
    Have you installed any stronghold mods or tweaks?

    Can you check baldur.bcs in NI how progress of the thief stronghold quests is coded?
    Search for "GlobalTimerExpired("JosterReturn","GLOBAL")". In vanilla game it looks like this:
    [spoiler]
    IF
    GlobalTimerExpired("JosterReturn","GLOBAL")
    Global("JosterLeave","GLOBAL",1)
    !Global("Chapter","GLOBAL",4)
    !Global("Chapter","GLOBAL",5)
    !Global("Chapter","GLOBAL",7)
    THEN
    RESPONSE #100
    SetGlobal("JosterLeave","GLOBAL",2)
    SetGlobalTimer("JosterReturn","GLOBAL",SIX_DAYS)
    SetGlobalTimer("JosterPaid","GLOBAL",FIVE_DAYS)
    DisplayStringHead(Player1,62081) // The quartermaster awaits you in the guild for Renal's due.
    END
    [/spoiler]
  • fthkufthku Member Posts: 21
    edited May 2017
    I have the Planar Sphere mod installed and have manually checked 0 for playerhasstronghold, but other than that no other mods.
    Here you go, the chapters are different numbers being that this is EET but it's the same. Not sure what the bit about BG1AREA is:

    IF
    GlobalTimerExpired("JosterReturn","GLOBAL")
    Global("JosterLeave","GLOBAL",1)
    !AreaType(BG1AREA)
    !Global("Chapter","GLOBAL",16)
    !Global("Chapter","GLOBAL",17)
    !Global("Chapter","GLOBAL",19)
    THEN
    RESPONSE #100
    SetGlobal("JosterLeave","GLOBAL",2)
    SetGlobalTimer("JosterReturn","GLOBAL",SIX_DAYS)
    SetGlobalTimer("JosterPaid","GLOBAL",FIVE_DAYS)
    DisplayStringHead(Player1,62081) // The quartermaster awaits you in the guild for Renal's due.
    END


    Found another instance of Joster checks, this one to do with areas, this might explain it:

    IF
    GlobalTimerExpired("JosterReturn","GLOBAL")
    Global("JosterLeave","GLOBAL",1)
    !StateCheck(Player1,STATE_SLEEPING)
    !StateCheck(Player1,STATE_HELPLESS)
    !StateCheck(Player1,STATE_STUNNED)
    !StateCheck(Player1,STATE_PANIC)
    !StateCheck(Player1,STATE_BERSERK)
    !StateCheck(Player1,STATE_SILENCED)
    !StateCheck(Player1,STATE_CHARMED)
    !StateCheck(Player1,STATE_CONFUSED)
    !AreaCheck("AR2900")
    !AreaCheck("AR2901")
    !AreaCheck("AR2902")
    !AreaCheck("AR2903")
    !AreaCheck("AR2904")
    !AreaCheck("AR2905")
    !AreaCheck("AR2906")
    !AreaCheck("AR2800")
    !AreaCheck("AR2801")
    !AreaCheck("AR2802")
    !AreaCheck("AR2803")
    !AreaCheck("AR2804")
    !AreaCheck("AR2805")
    !AreaCheck("AR2806")
    !AreaCheck("AR2807")
    !AreaCheck("AR2808")
    !AreaCheck("AR2809")
    !AreaCheck("AR2810")
    !AreaCheck("AR2811")
    !AreaCheck("AR2812")
    !AreaCheck("AR2800")
    !AreaCheck("AR2700")
    !AreaCheck("AR2500")
    !AreaCheck("AR2402")
    !AreaCheck("AR2401")
    !AreaCheck("AR2400")
    !AreaCheck("AR2300")
    !AreaCheck("AR2200")
    !AreaCheck("AR2201")
    !AreaCheck("AR2202")
    !AreaCheck("AR2203")
    !AreaCheck("AR2204")
    !AreaCheck("AR2205")
    !AreaCheck("AR2206")
    !AreaCheck("AR2207")
    !AreaCheck("AR2208")
    !AreaCheck("AR2209")
    !AreaCheck("AR2210")
    !AreaCheck("AR2102")
    !AreaCheck("AR2101")
    !AreaCheck("AR2100")
    !AreaCheck("AR1600")
    !AreaCheck("AR1601")
    !AreaCheck("AR1602")
    !AreaCheck("AR1603")
    !AreaCheck("AR1604")
    !AreaCheck("AR1605")
    !AreaCheck("AR1606")
    !AreaCheck("AR1607")
    !AreaCheck("AR1608")
    !AreaCheck("AR1609")
    !AreaCheck("AR1610")
    !AreaCheck("AR1611")
    !AreaCheck("AR1612")
    !AreaCheck("AR1613")
    !AreaCheck("AR1500")
    !AreaCheck("AR1501")
    !AreaCheck("AR1502")
    !AreaCheck("AR1503")
    !AreaCheck("AR1504")
    !AreaCheck("AR1505")
    !AreaCheck("AR1506")
    !AreaCheck("AR1507")
    !AreaCheck("AR1508")
    !AreaCheck("AR1509")
    !AreaCheck("AR1510")
    !AreaCheck("AR1511")
    !AreaCheck("AR1512")
    !AreaCheck("AR1513")
    !AreaCheck("AR1514")
    !AreaCheck("AR1515")
    !AreaCheck("AR1516")
    !AreaCheck("AR0011")
    !AreaCheck("AR0012")
    !AreaCheck("AR0013")
    !AreaCheck("AR0014")
    !AreaCheck("AR0028")
    !AreaCheck("AR0083")
    !AreaCheck("AR0084")
    CombatCounter(0)
    !Exists([ENEMY])
    THEN
    RESPONSE #100
    SetGlobal("JosterLeave","GLOBAL",2)
    SetGlobalTimer("JosterReturn","GLOBAL",SIX_DAYS)
    SetGlobalTimer("JosterPaid","GLOBAL",FIVE_DAYS)
    DisplayStringHead(Player1,62081) // The quartermaster awaits you in the guild for Renal's due.
    END
  • argent77argent77 Member Posts: 3,476
    In that case chapter should be set to 17. Can you check the result of C:GetGlobal("Chapter","GLOBAL") before and after entering the mod area? Return value should be 17 in both cases.
  • argent77argent77 Member Posts: 3,476
    fthku said:

    Found another instance of Joster checks, this one to do with areas, this might explain it:

    [spoiler]

    IF
    GlobalTimerExpired("JosterReturn","GLOBAL")
    Global("JosterLeave","GLOBAL",1)
    !StateCheck(Player1,STATE_SLEEPING)
    !StateCheck(Player1,STATE_HELPLESS)
    !StateCheck(Player1,STATE_STUNNED)
    !StateCheck(Player1,STATE_PANIC)
    !StateCheck(Player1,STATE_BERSERK)
    !StateCheck(Player1,STATE_SILENCED)
    !StateCheck(Player1,STATE_CHARMED)
    !StateCheck(Player1,STATE_CONFUSED)
    !AreaCheck("AR2900")
    !AreaCheck("AR2901")
    !AreaCheck("AR2902")
    !AreaCheck("AR2903")
    !AreaCheck("AR2904")
    !AreaCheck("AR2905")
    !AreaCheck("AR2906")
    !AreaCheck("AR2800")
    !AreaCheck("AR2801")
    !AreaCheck("AR2802")
    !AreaCheck("AR2803")
    !AreaCheck("AR2804")
    !AreaCheck("AR2805")
    !AreaCheck("AR2806")
    !AreaCheck("AR2807")
    !AreaCheck("AR2808")
    !AreaCheck("AR2809")
    !AreaCheck("AR2810")
    !AreaCheck("AR2811")
    !AreaCheck("AR2812")
    !AreaCheck("AR2800")
    !AreaCheck("AR2700")
    !AreaCheck("AR2500")
    !AreaCheck("AR2402")
    !AreaCheck("AR2401")
    !AreaCheck("AR2400")
    !AreaCheck("AR2300")
    !AreaCheck("AR2200")
    !AreaCheck("AR2201")
    !AreaCheck("AR2202")
    !AreaCheck("AR2203")
    !AreaCheck("AR2204")
    !AreaCheck("AR2205")
    !AreaCheck("AR2206")
    !AreaCheck("AR2207")
    !AreaCheck("AR2208")
    !AreaCheck("AR2209")
    !AreaCheck("AR2210")
    !AreaCheck("AR2102")
    !AreaCheck("AR2101")
    !AreaCheck("AR2100")
    !AreaCheck("AR1600")
    !AreaCheck("AR1601")
    !AreaCheck("AR1602")
    !AreaCheck("AR1603")
    !AreaCheck("AR1604")
    !AreaCheck("AR1605")
    !AreaCheck("AR1606")
    !AreaCheck("AR1607")
    !AreaCheck("AR1608")
    !AreaCheck("AR1609")
    !AreaCheck("AR1610")
    !AreaCheck("AR1611")
    !AreaCheck("AR1612")
    !AreaCheck("AR1613")
    !AreaCheck("AR1500")
    !AreaCheck("AR1501")
    !AreaCheck("AR1502")
    !AreaCheck("AR1503")
    !AreaCheck("AR1504")
    !AreaCheck("AR1505")
    !AreaCheck("AR1506")
    !AreaCheck("AR1507")
    !AreaCheck("AR1508")
    !AreaCheck("AR1509")
    !AreaCheck("AR1510")
    !AreaCheck("AR1511")
    !AreaCheck("AR1512")
    !AreaCheck("AR1513")
    !AreaCheck("AR1514")
    !AreaCheck("AR1515")
    !AreaCheck("AR1516")
    !AreaCheck("AR0011")
    !AreaCheck("AR0012")
    !AreaCheck("AR0013")
    !AreaCheck("AR0014")
    !AreaCheck("AR0028")
    !AreaCheck("AR0083")
    !AreaCheck("AR0084")
    CombatCounter(0)
    !Exists([ENEMY])
    THEN
    RESPONSE #100
    SetGlobal("JosterLeave","GLOBAL",2)
    SetGlobalTimer("JosterReturn","GLOBAL",SIX_DAYS)
    SetGlobalTimer("JosterPaid","GLOBAL",FIVE_DAYS)
    DisplayStringHead(Player1,62081) // The quartermaster awaits you in the guild for Renal's due.
    END
    [/spoiler]
    Yeah, that's it most likely. It must be added by a mod. I can't find it in my own EET installation.
  • fthkufthku Member Posts: 21
    Yeah, they're both set to 17. It's not that big of a deal anyway.
    More importantly, I ran into another bug, and this is a big one. Afaaq stopped talking to me; that is, I can't talk to him. The only way I can talk to him is when I force him into the lamp, and the "fix yourself" line doesn't help. Also, when I ask him about his people he suddenly gives me the line about how he doesn't want to share with me, even though I've already gotten past that part.

    It happened sometime after killing Tathas and getting the soul gem from him, not sure when. I do have a previous save where everything is fine (which is not too far back but I would really rather not go back to it) . Once I got the gem Afaaq told me he doesn't yet know how to unlock the gem, and I guess sometime after that it happened.
  • argent77argent77 Member Posts: 3,476
    It might a case of an incorrectly set variable. Can you attach the save? I'd like to take a look.
  • fthkufthku Member Posts: 21
    edited May 2017
    I did a comparison of the global variables from both saves and couldn't fix it myself, but I'm sure you could do a lot more than I could. Here you go.

    Also just wanted to point out again that you're doing a great job, both with the mods and the support, it's not taken for granted. =)

  • argent77argent77 Member Posts: 3,476
    Thanks. It was indeed an incorrectly set variable.

    It should be fixed when you execute the following console command while the mouse cursor is placed over the djinni:
    C:SetGlobal("BanterActive","LOCALS",0)
    Unfortunately it can't be fixed while the djinni is inside the lamp. I will add the option to fix his state to his quick menu in the next release though.
  • fthkufthku Member Posts: 21
    Sweet, when I come home I'll let you know if it works. Thanks!
  • fthkufthku Member Posts: 21
    It worked, thanks! I can't help but wonder if his banters with the NPCs aren't still screwed though. If I leave the game paused for a while and come back, he'll suddenly turn to a specific NPC as if initiating banter, but nothing happens.
    Sorry if I'm driving you crazy with all the issues. :P
  • argent77argent77 Member Posts: 3,476
    That's no cause to panic. The djinni continuously triggers banter attempts in certain intervals even if there is no actual banter content available (similar to how regular party banters are triggered).
  • TheMetaphysicianTheMetaphysician Member Posts: 76
    edited May 2017
    Argent, if I install this mod mid-game, but before I've gone to Trademeet, will it work? (I'd end up installing it after all the other mods, including tweaks and SCS, is that a big deal?)

    Edit: nevermind, I just saw that the readme answers my question in the affirmative. I did already complete the "Kalah and what he was promised" quest from Unfinished Business, so I'm sad I'll be missing out on whatever content was associated with that quest. :smile:
  • argent77argent77 Member Posts: 3,476
    edited May 2017
    The mod should work fine if you've never entered Trademeet/Druid Grove before. However, installing it mid-game will reduce the chance to trigger an optional quest (which depends on trigger points on selected maps).

    There is a minor compatibility issue with SCS however, which has only been fixed in the development branch yet. You can install that version if you want (download).
  • TheMetaphysicianTheMetaphysician Member Posts: 76
    Can you say more about how that works? Is there anything I can do to try to ensure the triggering of that quest (like walking again over the maps I've already visited)? Or can you say which maps are the relevant ones, so I know if I've visited them already? (I'm fine with minor spoilers.)
  • argent77argent77 Member Posts: 3,476
    I think Trademeet is one of the maps which contains quest triggers. Since you haven't visited that map yet you can return to the town once in a while after acquiring the djinni and walk around. The quest is optional though and only available if you complete the opening quest in a certain way.
  • TheMetaphysicianTheMetaphysician Member Posts: 76
    edited May 2017
    Many thanks! Edit: One more question: the download you linked to doesn't have an .exe file. How do I install it without that?
    Post edited by TheMetaphysician on
  • argent77argent77 Member Posts: 3,476
    edited May 2017
    Either use the executable from the public release or download WeiDU and rename the included weidu.exe to setup-DjinniCompanion.exe.
    Post edited by argent77 on
  • argent77argent77 Member Posts: 3,476

    Update: Afaaq, the Djinni Companion 2.5

    Changes in v2.5:
    • Added another path to solve Afaaq's Underdark quest.
    • Improved Tweaks component name.
    • Added Elixir of Health to list of potions Afaaq may use.
    • Fixed a compatibility issue with SCS regarding an artifact for a quest.
    • Improved compatibility with 2.x patched BG2EE.
    • Added correction dialog option to Afaaq's quick menu.
    • Fixed several (cosmetic) scripting issues.
    • Fixed spelling errors.
  • ArthasArthas Member Posts: 1,091
    is there a path to totally enslave afaaq?
  • argent77argent77 Member Posts: 3,476
    Not directly. There are at two situations where it may come to a fight between you and the djinni, depending on certain preconditions. If you defeat the djinni you'll have full control over him.

    1. "Greed" hell trial (SoA): Drop Afaaq's soulcage (if you have it) before doing the trial and refuse to release Afaaq in the course of the trial, to force a fight. It has the disadvantage of the djinni staying in his weak state forever though.

    2. At the beginning of ToB if Afaaq didn't promise to keep your company after defeating Irenicus: Refuse to let him go to force a fight. If you broke Afaaq's enslavement during the hell trials you will have full control over his stronger version.

    However, there is no real benefit in doing so, unless you're playing an evil character.
  • VeskoVesko Member Posts: 28
    edited November 2017
    Hey Argent, first thx for the great mod!

    Im in Underdark atm, just finished Ust Natha, killed all, but then Afaaq says smtn bout hid doul near duergar encampement. Then i find that it has to be done b4 Ritual. Ok, load a save just b4 that and i go to those merchants, still nothing not one of them 3 says anything, cant find any cave in underdark. How do i start that quest?

    I finished ALL quests except ritual, flayers, beholders, kuotoans, that machine w fights, killed all elementals that spawn at 3 gates...

    Once i get out of Ust Natha he says:
    My lord i implore you to investigate further whether i am right abou my spiritual essence being nearby. I have felt it strongest near the duergar merchants.

    Help?
  • argent77argent77 Member Posts: 3,476
    @Vesko Afaaq should talk to you about his lost soul as soon as you come near the Duergar merchants. The quest itself starts when you talk to Carlig (the Duergar merchant). Can be both as your real self or in Drow disguise. However, it is only triggered if the djinni is outside of the lamp or the lamp is in possession of the protagonist.
  • VeskoVesko Member Posts: 28
    edited November 2017
    Hmm, well i just reloaded that save and yeah, when we reach merchants, he mentions drow party that got his soul essence and that he needs my help, but i got nothing after that. till now.

    any help, what do i do? where to go whom to talk to? i realy dont wanna redo whole underdark if i missed smtn... if thats the case any mission reset console command?

    Someone mentioned some cave/new area but i havent seen anything like it.

    PS i reread your answer and Carlig didnt mention anything bout afaaq, nor did afaaq talk to him...? Can i just transport to that new area/cave and start the quest that way?

    PPS Correction, i was unclear in previous post:
    I finished ALL quests except ritual.
    Cleared flayers, beholders, kuotoans, that machine w fights, killed all elementals that spawn at 3 gates... so whole Underdark is cleared, all thats left is ritual and Avalon,
    Post edited by Vesko on
  • argent77argent77 Member Posts: 3,476
    edited November 2017
    @Vesko Maybe the main plot has progressed too far already. Can you enter the following console command and tell me the result?
    C:GetGlobal("udDrowPlot","GLOBAL")
    It should be less than 9.
  • VeskoVesko Member Posts: 28
    well yeah, its 6
    Global:UDDROWPLOT GLOBAL set to 6
  • argent77argent77 Member Posts: 3,476
    I can't think of more potential issues from afar. Can you attach your save? I'd like to take a look myself.
  • VeskoVesko Member Posts: 28
    edited November 2017
    Sure, there ya go. :-)

    Or this one its more recent. maybe smtns different.
Sign In or Register to comment.