Final battle ToB Ascension + Longer Road EE Game Crash

I have had an amazing super mega mod game experience so far, almost 99% bug free, first time I've reached a mega mod installation (EET) so far without any stuttering at all (and without game breaking bugs). But it seems the final battle is seriously bugged. I see on the internet that I have found quite similar but not identical cases about Final battle ToB Ascension + Longer Road.

A close enough case http://baldursextendedworld.com/Vanilla_Forums/discussion/comment/11696#Comment_11696
maybe I have made my install the same time, it seems another tome of troubles...

So...
I have Irenicus with me, I met Melissan, after some dialogue with me and Irenicus, she summoned Bodhi and Demogorgon also showed up. I refused to give him Irenicus and "defeated" his riddles.
Now, after the Demogorgon goes away, crash happens. It seems it is redgdem3.bcs which causes this because it tries to run the script of changing Imoen to slayer but I have not Imoen in my party so it crashes... If I manually delete the code related to that, it does not crash there but countinues a little, Demogorgon goes back to hell, and after fighting Bodhi and 2 Fallen Planetars, all the enemies are dead and...what! Nothing is happening...
Now if I have Imoen with me, Imoen changes to slayer, and after fighting Bodhi and 2 Fallen Planetars, all the enemies are dead, Imoen changes back to human but it seems she is bugged too after that point as although she is in party, she has blue circle and is like she is out of party. Again nothing is happening...
I think most files of the final battle are screwed up...
If I replace the problematic files via putting in the override the latest version of LR files could it be that the game could be saved? (and I'll make a backup before that)

Comments

  • edited April 3
    From what you report, it sounds like you are capable to replace the LR files on your own, right?
    It may just be the best option, although there may still be the issue of Melissan's dialogue triggering the wrong script.
    Do you have Wheels of Prophesy installed as well? If not, your strategy might work.

    Files affected are redbodh0...3, redgdem1...3  They are Baf-format in the mod download.
  • Through the last years, I've learned some android basics so I can understand a bit of coding (but I'm no expert at all and it's not 100% same). I can open files with NearInfinity and maybe understand a bit of code there, but not all of it. So I was just thinking about something easier like putting the correct files in the override might work. (hope that does not sounds lazy). If not, I'm willing to do manual changes to code but I don't know where to start...
    For example I understand that in the redgdem3.bcs it is missing an IF-ThEN check for -if Imoen is there- -then change to slayer- but I'm not sure how to implement it.

    Oh, I just saw that I have Wheels of Prophesy installed... oh noes.

    Can I ask something (maybe stupid)? If I get the "correct" files from an install like yours, since most of the scripts are tied on the final area, final battle Melissan (which is a different creature from normal Melissan) and those problematic scripts seem mostly independant from the rest scripts of the game, can I just override my own with the corrected ones and not mess the game?
  • edited April 4
    You can just do this in Near Infinity:
    - look for the bcs files you want to change
    - open them and make sure you have "script code decompiled" selected
    - delete the content
    - copy the content of the corresponding updated baf file from the mod and paste it into the NI bcs instead
    - press "compile"
    - "Save" - now you have the updated version in override

    Note1 - if the script contains a stringref for overhead text you may need to delete that line as it will not compile, but this will be just cosmetic in game later on.

    Note2 - make sure you exit the game before you do any changes.
  • Thank you for all your help Roxanne, (Your mods are awesome and without bugs btw) I believe I can do that. But I'm no so sure about the files that need to be changed. Is it bcs only? I see some code that is suspicious in ar6200.are too. Can you propose me how to start? (and continue with trial and error)
    Also, is it safer to try with my original party (without Imoen) or with her?
  • I would just update the script files that I listed above. Then try with original party.
    Other option may be to go without Irenicus.
  • edited April 4
    I updated the files (it wasn't hard) but the problem is much deeper it seems...
    Now the Demogorgon goes away, Melissan swirls and casts 2-3 spell animations and the game crashes... before summoning the 2 Fallen Planetars
    What are the next files that I can update? I really need to fix it!

    P.S.: Without Irenicus is is even worse, after the dialogue with bodhi, there is a "NO VALID RESPONSE OR LINKS" and the game is bugged and nothing happens...
  • edited April 4
    After Demogorgon leaves (I assume that you solved his riddle?), there is supposed to be the Imoen/slayer sequence.
    This is triggered by the Demogorgon dialogue. My assumption is that in your version the cutscenes assigned to the several dialogue endings are mismatching.

    You can follow the dialogue with Near Infinity (LRGodemo.dlg) and see which cutscene it triggers for your path. It should be one of the redgdem1, 2 or 3. If it is not, there may lie the issue.
  • Should I mandatory have Imoen in party? Or the updated scripts can work without her as well?
  • Following the dialogue with NearInfinity my last answer (Begone, demon spawn! I have no need of you now, but I might call for your services, as soon as I am done reclaiming my birthright!) triggers
    ClearAllActions()
    StartCutSceneMode()
    StartCutScene("redgdem3")
  • edited April 4
    Hm, that looks correct.
    I also understand that you have updated redgdem3.bcs?
    Is Imoen present in the area?

    It may be possible that due to some earlier error Imoen is missing but is needed by Melissan after her spell casting.

    C:CreateCreature("finimoen")
  • Yes I have updated redgdem3.bcs
    Now, If Imoen is present, it goes a little further--> (see *)
    If she is not present, it crashes. (I see in the bcs that there's no logic to check if she's not there or skip that part of script about her if she's not there)
    If I create her via CreateCreature("finimoen") before "AmbientActivate("MMELSPIN",TRUE)" in redgdem3.bcs -->(see *)

    * the script continues, imoen changes to slayer , the fallen planetars are summoned and after killing bodhi and the planetars she changes back and dialogue occurs. In both cases the cicle under her is blue (even when she is supposed to be in party). And after that a new dialogue occurs and there's a dialogue loop over and over and nothing else happens. The dialogue starts with "It's.. it's gone I'm human again,....." and no matter what I answer it triggers again the same dialogue.

    Is she supposed to be (summoned) there when she is not in party?
  • edited April 4
    I think it is missing a global
    C:SetGlobal("ImoenResurrected2","GLOBAL",1)
    to indicate she was spawned in.
    She is supposed to leave after the talk if she had not been in party.

    These actions are taken previously by Melissan and resimo... scripts. This is probably where the dilemma you encountered has started - the correct script after the first Melissan dialogue was not triggered.
  • The global is missing indeed but setting it doesn't change anything. (btw, if I should incert that line of code, where should it be?) Still in the loop...
    Triger of the dialogue is Global("ImoenBackToHuman","GLOBAL",1)
    Action is SetGlobal("ImoenHurt","GLOBAL",0) in any of the 4 responses available.

    Also I suspect the code below in IMOE25.BCS but I'm not so sure. Do those seem right?
    IF
    Global("ImoenBackToHuman","GLOBAL",0)
    OR(2)
    GlobalTimerExpired("ImoenChangeBack","GLOBAL")
    Dead("finbodh")  // Bodhi
    THEN
    RESPONSE #100
    SetInterrupt(FALSE)
    SetGlobal("ImoenBackToHuman","GLOBAL",1)
    SetGlobal("FinalFight","AR6200",4)  // The Throne of Bhaal
    ClearActions(Myself)
    ActionOverride("Imoen2",ReallyForceSpellRES("imoslay2",Myself))  // End Slayer Change
    ActionOverride("Imoen2",ChangeEnemyAlly(Myself,NEUTRAL))
    ActionOverride("Imoen2",DialogInterrupt(TRUE))
    ActionOverride("Imoen2",ChangeAIScript("imoe25",OVERRIDE))
    ActionOverride("Imoen2",ChangeAIScript("",SPECIFICS))
    ActionOverride("Imoen2",ChangeAIScript("",CLASS))
    ActionOverride("Imoen2",ChangeAIScript("",RACE))
    ActionOverride("Imoen2",ChangeAIScript("",GENERAL))
    ActionOverride("Imoen2",ChangeAIScript("",DEFAULT))
    SetInterrupt(TRUE)
    END

    IF
    GlobalGT("FinalFight","AR6200",3)  // The Throne of Bhaal
    !Allegiance(Myself,NEUTRAL)
    Global("ImoenBackToHuman","GLOBAL",1)
    !IfValidForPartyDialog("Imoen2")  // Imoen
    THEN
    RESPONSE #100
    ChangeEnemyAlly(Myself,NEUTRAL)
    END
  • edited April 5
    ImoenBackToHuman at 1 triggers the dialogue but the various options to continue and exit is are using additional globals
    For the case you spawned Imoen because she is not in party or in ToB area, the option after the initial line should be
    Global("ImoenResurrected2","GLOBAL",1)
    Global("ImoenHate","GLOBAL",0) >>>Check this in your game!
    and have the effect SetGlobal("ImoenBackToHuman","GLOBAL",2) and say
    "I... I can't stay here, though. This is way out of my league. I wish you well, <CHARNAME>, and I hope I'll see you again. Maybe back at Candlekeep, huh? Anyway... good luck.." >>> with that Imoen will teleport away ForceSpell(Myself,DRYAD_TELEPORT)

    The other options (if she was in party) will offer the possibility to have Imoen either join again or wait.

    You should find those alternatives in Imoen25P.dlg.

    To make sure the correct dialogue is in fact assigned when you spawn her, you may need to add this line
    ActionOverride("Imoen2",SetDialog("Imoen25P")) in your spawning action.

  • The response you are talking has these checks in my game
    --------
    !IsValidForPartyDialogue("lrirenic")
    G("lrJonToFinal",0)
    G("AcceptIlmater",0)
    Global("ImoenResurrected2","GLOBAL",1)
    Global("ImoenHate","GLOBAL",0)

    and action
    SetGlobal("ImoenBackToHuman","GLOBAL",2)
    --------
    but only if I set ingame via console SetGlobal("ImoenBackToHuman","GLOBAL",2) I can escape the loop.

    After that a dlg appears (a player1 dlg) "With the initial battle now over,..."
    so assuming this is the right path and I have set 
    Global("ImoenResurrected2","GLOBAL",1)
    Global("ImoenHate","GLOBAL",0)
    after the spawn, what am I missing?

    Shouldn't !IsValidForPartyDialogue("lrirenic") be IsValidForPartyDialogue("lrirenic")?
    and what is
    G("lrJonToFinal",0)
    G("AcceptIlmater",0)
    are they globals? should they be there? can I delete them? can I check them?
  • The format for some of the globals in the LR mod is just using a short hand, so
    G("lrJonToFinal",0) is the same as Global("lrJonToFinal","Global",0) which if the value is currently 0 equals to Not Exist.
    Anyway, they are no longer checked in the current version, so maybe this is why the option was blocked for you because you HAVE Irenicus in party (and some globals were set to 1).

  • Amazing, after deleting the 
    G("lrJonToFinal",0)
    G("AcceptIlmater",0)
    and corrected !IsValidForPartyDialogue("lrirenic") to be IsValidForPartyDialogue("lrirenic")

    the dialogue occurs as normal and imoen teleports away as she should.

    Now the dlg appears (a player1 dlg) "With the initial battle now over,..."
    and it opens the path to the pools. Can I suppose that is normal so far?

    It was a great experience Roxanne, to made all these happen. It was like a tutorial for me
    I'm too tired to test further today, but the journey continues thanks to you! (I'll report the next day about the next steps, hopefully with not next problems)

    Extra: Btw, since you helped me made my own fix, I wonder if I can actually make it a bit better. Can you tell me how to make the code about Imoen spawning to be activated only if Imoen is not in party? Something like IF Imoen is not there THEN do the CreateCreature command but I need it (the IF-THEN logic) to be inside redgdem3 code and that confuses me.
  • The IF THEN logic with conditions in the IF block is used for normal scripts where independent actions are performed depending on those conditions.

    The specialty of Redgem3 as a script is that it is a cutscene. This means that all of it is triggered by some outside event (here by a dialogue action) and that the whole script runs at once.
    You see that the IF condition here is always True().

    The critical thing in cutscenes is timing, so you may need some experimentation and tuning before it works correctly.

    You can put your Imoen spawn action into a separate block with a condition at the top of the file and then have the big True() block follow it. You may need to delay some actions in this block with putting in something like Wait(2) or similar between some actions. Since your conditional block and the main block will start simultaneously with the cutscene, the trick is to have Imoen in place and ready when the actions in the second block are applied on her. (This is what I meant with tuning the timing - you may need some try and error but basically it should work.)
  • edited April 6
    It seems that after that problematic part, all goes well and I can finish the game with no further problems... almost.

    BUT...
    I don't know for sure but something seems a bit off. Redemption of Irenicus never happened... I was almost sure he was on the right path as he had turned from evil to neutral and had not taken a soul of an other before reaching the end. Does this sounds normal?
    Dialogue of Irenicus and Aerie in the hall where you make the choice is a bit off too, as if I had choosen to give him a soul (never made such a choice) and moreover if I choose to be a mortal, irenicus epilogue is an evil one while Aerie's and Sandrah's doesn't appear at all! Caelar's seems neutral and Saerileth's is a happy one.

    Is there something wrong?

    Btw, I'm going to reload and play the god choice in order to continue gaming. Only Sandrah is there in the new start, are the others somewhere in the world and if yes are they recruitable? Only Sandrah keeps her inventory? First time I go further after ToB end!
  • edited April 6
    Irenicus redemption is VERY rare and very tricky, see here http://baldursextendedworld.com/Vanilla_Forums/discussion/833/alina-redeemed-irenicus#latest . The "I was sure he was on the path to redemption..." is a normal reaction. Most players of the mod never saw a good ending, it is soooo easy to fail. You are already kind of successful if Irenicus does not steal YOUR soul in the end (obviously you survived that).

    When you continue with Return to Faerun, you see only some very few epilogues because your NPCs may appear in later parts, so the original endings may not apply...

    In the new start, there is only you and Sandrah (initially). She has her equipment and the player will find some selection in the chests around the room.
    New companions (and some old ones) will become available once you start the plot. Everything should become apparent quite soon from the initial dialogues and some advice from solar.
    From what you describe, the transition seems to have worked.

  • Thank you Roxanne, I had no idea it was so hard to redeem Irenicus. At least I enjoyed trying. I understand now the logic you refer to, about epilogues, but it seems I cannot see the ones mentioned above even If I choose the path of mortal (where the journey stops). Anyway, not a big problem, as I will actually continue with God path and Return to Faerun where the transition seems to have worked indeed and I'm ready for yet another journey! Many thanks for the great journey so far because you contributed a great part! From the install, years ago, to the end it was an awesome journey, almost flawless, first time that happens to me in a Trilogy mega mod install and believe me I've been trying for many years for a stable game, but my other mega installs were not even close to this one, as they had some game breaking bugs and even with help from modders (you have helped me in the past too) in the end there was the stuttering... an enemy that was too hard to win. But now that feeling of finishing a stable Trilogy game with so many mods is worth it! I really bow to your will and effort for everything and of course for being so helpful to all the BG community all these years!
  • I know how frustrating it is to get to the ToB and encounter such bugs at the very end.
    In fact, I started modding myself from troubleshooting the way you did over the last few days. Glad to hear your persistence finally has led to success.
    I hope you will like the add-on.
  • Hi there again, I'm enjoying the add-on so far but I encountered a (game breaking?) bug that I fixed myself and I thought I should report it in case it is not only in my game.

    Now straight to the point, I'm in Time of troubles and it concerns  Liriel Baenre. After the first dialogue "No, you will not get these weapons from me!!" I kill all the enemies but there is nothing happening and if I talk to her she just repeats the same line.

    I solved this in a way that I don't know if it is right, but It works so 
    in her bcs and in particular in the If-Then block below I incerted a line to SetGlobal("ToLini","BG4100",3) and now all work fine.

    IF
    Global("ToLini","BG4100",2)  // Ancient Ruins
    Range([PC],50)
    NumTimesTalkedTo(0)
    See([PC])
    THEN
    RESPONSE #100
    StartDialogNoSet("ToLini")  // Liriel - Liriel Baenre
    SetGlobal("ToLini","BG4100",3)  // Ancient Ruins------------I incerted this line
    END

    If the problem is only in my game or if it is already corrected (as my install is kinda old) then ignore my post :)
  • edited April 25
    Silinde said:
    Hi there again, I'm enjoying the add-on so far but I encountered a (game breaking?) bug that I fixed myself and I thought I should report it in case it is not only in my game.

    Now straight to the point, I'm in Time of troubles and it concerns  Liriel Baenre. After the first dialogue "No, you will not get these weapons from me!!" I kill all the enemies but there is nothing happening and if I talk to her she just repeats the same line.

    I solved this in a way that I don't know if it is right, but It works so 
    in her bcs and in particular in the If-Then block below I incerted a line to SetGlobal("ToLini","BG4100",3) and now all work fine.

    IF
    Global("ToLini","BG4100",2)  // Ancient Ruins
    Range([PC],50)
    NumTimesTalkedTo(0)
    See([PC])
    THEN
    RESPONSE #100
    StartDialogNoSet("ToLini")  // Liriel - Liriel Baenre
    SetGlobal("ToLini","BG4100",3)  // Ancient Ruins------------I incerted this line
    END

    If the problem is only in my game or if it is already corrected (as my install is kinda old) then ignore my post :)
    The block you quote is the one that started the "No you will not get..." dialogue that you have seen. At the end of that dialogue, the global is set to 3.
    The end of the battle and the death of the slavers should trigger the next dialogue in case Midnight and Liriel are close to each other and able to talk (sets global to 4).
    IF
    Global("ToLini","BG4100",3)
    Dead("CVSlaw")
    !See([ENEMY])
    See("CVSandr")
    !StateCheck("CVSandr",CD_STATE_NOTVALID)
    CombatCounter(0)
    THEN
    RESPONSE #100
    SetGlobal("ToLini","BG4100",4)
    MoveToObject("CVSandr")
    StartDialogNoSet("TOLini")
    END

    It may be possible that the setting of the global to 3 was not correctly stored in the area (BG4100). So that may have been a glitch in your case.
     (Do not be irritated by the DV of Midnight being "CVSandr" - the former Player character and Sandrah are converted into Midnight for the extension and use Sandrah's script name because the player never has one and is no longer Player1 - technically speaking. Player1 at this point in the game is Pelligram...but that is another story.)
  • Well, if the global is set with the dialogue, then the problem is there for me,as I checked her dialogue (state 70) and there is nothing in the "action" part after the dialogue.
  • Silinde said:
    Well, if the global is set with the dialogue, then the problem is there for me,as I checked her dialogue (state 70) and there is nothing in the "action" part after the dialogue.
    Did you check the whole dialogue and the answer options?
  • hm, I see now where the problem is. In my game there were no answer options, the dialogue is terminated after the fist line. After checking the dialogue with Near Infinity I see that there should be more lines and then some answers (2 of them set the missing global we were talking). I have no idea what goes wrong and the dialogue does not continue properly...

    If it is a glitch in my game only, I have no problem to miss a couple of lines, since now it works with my unorthodox fix. In case you want to see my dlg file I attach it here. But if one of the other creatures was supposed to answer and its behavior is messed by other mods that might have overwritted or altred in any way the behavior it should have, maybe it's quite hard to uncover what went wrong.
  • I did not find anything wrong in your file. For some reason, the leader of the slavers must have been unable to provide his talk.
    If it works now, you should be fine.

    When she says that she will not give up her weapons, the slaver says
    "Don't make me laugh, drow, you will need none of them while slaving in the mines."
    "I will never be your slave, I will rather go down fighting."
    "That's what your companions said as well, those corpses you now see all around you. Better give up while you still can."
    "I am no longer alone! There is help."
    A1 - (Sigh) A drow to rescue from slavery, not me.
    A2 - A drow to rescue from slavery, nothing we have not done before - with pleasure.
    A3 - Drow or not drow, slavery is for nobody to endure, let us end this, friends.

    For A1, your "good" companions will overrule you, so in any case you fight the slavers and help Liriel.

    Then, after the fight, you get the stuff after your fix.

    Anyway - I will add another safety net to set the global even if it is missed like it was your case. It will make everything more robust.
  • The slaver was hostile and casting a spell as soon as I saw him, maybe some AI mod messed it up? Anyway cool that we found a way to get it more robust! Have a good night!
Sign In or Register to comment.