Jump to content

K4thos

Modders
  • Posts

    1,420
  • Joined

  • Last visited

Posts posted by K4thos

  1. RE:BOX1-8.PVRZ usage in UI.menu is via 'rectangle x' label subcommand, eg rectangle 4 represents the hardcoded dialogue border. As far as I can see only rectangles (boxes) 1, 3 and 4 are actually used in game with 2 and 8 as tooltips I think... By including both PVRZ files in the installation (eg calling them as unused BOX numbers - 0 and 9 - and changing the UI.menu accordingly might be a solution).

     

    The only different BOX pvrz between both games is BOX7, so if there is an option to redirect it to some unused slot (or for example BOX10) than it's up to you if you think it's worth the effort. Depending on what are these changes maybe I could write a weidu code that automatically handles UI.MENU conversion to that style - examples?

     

    So a pre-launcher for the games? I think that's a good idea - especially the readme and auto-download of patches, plus shifting the UI, selecting campaign etc ... It lets people manage their EET installation post install because let's face it, the install process is huge and time consuming - anything to make that easier for people is good.

     

    I think Select Campaign should be kept inside in-game main menu as it is now since that's a neat feature and other mods can add new Campaigns easily this way (for example IWD-in-EET mod will add 3 campaigns to the menu). As for the launcher both Sam. and ALIEN proposed help with writing one from scratch, but only for Windows. Considering the mod also works with MACs it doesn't sound like a good idea.

  2. UI change > Good News: It is possible to combine the UI.menu files to have multiple UIs in one UI.menu and then swap them based on user selection and/or overriden by the current campaigm. Bad News: It's quite tedious to make the necessary changes throughout the UI.menu files (you have to combine them, and then make ~ 3000+ edits to the code). So the question would be - how valuable is this? A simpler solution might be the current one but 'provide' the alternate UI.menu file in a different folder so that the user can drop in to their override as and when they want to make a UI change. It's not automated, no, but it does provide that choice. (Another alternative would be a standalone WEIDU component that swaps the UI.menu as needed).

     

    It already works sort of like that. You can go to EET/SoD_GUI directory (after the main EET component is installed since it first need to handle PVRZ installation and get resources from SoD - notice that all SoD GUI PVRZ are already biffed after installation) and simply copy what's there to Override directory (only UI.MENU will be overwritten since other files are biffed). The reason why it's a separate component is to make a backup of UI.MENU file that is already present within Override (and to let people who don't read readme files know that such feature exists).

     

    As mentioned in this topic I've been thinking about preparing launcher executable that would be able to switch GUI, update saves from previous installation, notify if last component has not been installed yet, open BALDUR.LUA config file, readme view and even automatically download and install patches to make EET post 1.0 always up to date and of course start the game. But no one understood what I had in mind and I'm still unable to explain it :p (edit: I've just re-read the topic - people understood but mostly didn't like the idea, so it was scrapped).

     

    If in game solution would need so many changes than indeed it may be a bit excessive approach considering we need to update UI.MENU after each official patch is released and it would be probably very complicate to implement such system in the first place. On top of that when I now think about it there would be 1 problem that couldn't be resolved - BOX1-8 PVRZ usage by the engine seems to be hardcoded, so you wouldn't be able to change how dialogue boarder looks via in-game GUI switch.

  3. Not sure if this is EET or vanilla bug

    In BG4600 in the Laurel quest to kill gibberlings, the Global("Gibberdead","BG4600") is not set regardless how many gibber.cre you kill. So the mimiquest never gets finished. Also, far too few gibber spawn to reach a value of 11 in the first place.

     

    Not sure how this was intended to work but I think that gibber.bcs need somethink like

    IF

    Die()

    AreaCheck("BG4600")

    THEN

    RESPONSE #100

    IncrementGlobal("Gibberdead","BG4600",1)

    END

     

    Edit - tested my proposed code and all works as intended.

     

    may be related to DSotSC (well, it almost 100% is). I will check it out, thanks.

     

     

    Issue with worldmap

    When I left worldmap from BG4600 during chapter4, I realised that Athkatla City Gates area was displayed as reachable. Tested it and I could access other town areas from there.

    I inspected my other saves and found it was available in all chapter4 saves. Sadly I have no earlier saves, so I cannot say at which point in the game it became accessible...I am definitly sure that it was NOT available from the beginning as I did multiple checks with and without BP-BGT WM installed.

     

    can't reproduce this one. There is a direct link between Nashkel Mines and Athatla City Gates but it's disabled via this code in Candlekeep BG2600.BCS:

    RemoveWorldmapAreaFlag("AR0020",ENABLED) //Reveal from linked area
    

    Later changed in Irenicus Dungeon via:

    AddWorldmapAreaFlag("AR0020",ENABLED) //Reveal from linked area

    Anyone else with this problem? It would show up as soon as you reach Nashkel Mines.

     

    edit: you could hoverer brake the implementation if you clua consoled yourself to AR0020 before finishing BG1 since that would make the area accesaible from linked ones earlier (above code just temporary disables Reveal from linked area flag from City Gates)

    • The positions on the map do not make sense with the time taken to travel.

    https://i.imgur.com/jerVbxw.jpg

    https://i.imgur.com/hHHcIXA.jpg

    https://i.imgur.com/SusUtse.jpg

    Could be more adapted for a tweaks component.

    Please upload a save from late ToB that still has access to map and saves.tra + saves.txt located in save directory if they are still valid so I can restore your map icon descriptions in my game via save update feature from setup-EET_end.

  4. As an exercise more than requirement, I am trying to merge the UI.menu files from EET BG2-UI and EET SOD-UI into one file with an option in settings to hot-switch the UIs in-game, rather than having it as an install option... If it works then it might be possible to play each part of the game in the original UI and/or override to play in just one UI...

     

    As I say, it's an exercise rather than requirement but interesting if it works.

    That would be mazing if it's possible. Looking forward to see results. Thanks for the effort.

  5. Ok, I went to the statues, used the scroll, they had a normal dialog, then some of them moved to 3000,2100, which is their camp on that map. And there if I engaged dialog again, they would have a join dialog.

     

    Here are 3 saves : https://www.dropbox.com/s/ghlktfl0h11egev/weird%20join%20saves.7z?dl=0

     

    In addition to the 2 you asked for, there's one just before leaving with the crusade just in case.

     

    I'm going to try it myself on RC5 since this was all RC4+fixes.

     

    Edit : Same happens on RC5.

    ok, found the problem, thanks. For some reason they had DPLAYER3.BCS attached to them which shouldn't be the case for anyone other than multiplayer party characters. The reason why this bug doesn't show up in vanilla SoD even though the same mistake is present there too is due to missing

    IF
      !InParty(Myself)
    THEN
      RESPONSE #100
        Dialogue(Player1)
        ChangeAIScript("",DEFAULT)
        SetDialog("multig")
    END

    In SoD version of DPLAYER3.BCS. Considering this is harmless in vanilla SoD it probably doesn't make much sense reporting it on Redmine but it will be changed in EET by removing this script from them.

  6. By the way, I somehow forgot to report this bug earlier.

     

    In SoD there is a quest where you save a bunch of people from being turned to stone.

    After the quest they are all sitting there with a dialog for me to recruit them.

     

    https://www.dropbox.com/s/ep69wm4a93fqi1f/000000054-weird%20join%20dialogue%20SoD%201.7z?dl=0

    can't reproduce this one when starting new game or loading my saves (even those made during BG2). Your save is made too late because CRE files already have multig dialogue files attached for some weird reason. It would be useful if the save was created before you entered the area or at least before casting the spell.

    Please try doing this:

    1. Load a save game called "000000016-Chapter 8 Start"

    2. In console type:

    C:CreateItem("SCRLPET",6,1,1)

    3. Now cast the scroll on statues - if they will have wrong dialogue files attached again than please upload both "000000015-Chapter 7 Dungeon" and "000000016-Chapter 8 Start" saves here. If it won't happen to me than the reason must lay somewhere in your game and we will need to investigate it further.

  7. oh, silly me there is indeed a problem there in setup-EET_end.tp2 :p This:

    COPY ~%USER_DIRECTORY%/Baldur.lua~ ~%USER_DIRECTORY%~

    should be changed to this:

    COPY + ~%USER_DIRECTORY%/Baldur.lua~ ~%USER_DIRECTORY%~

    Thanks for reporting it.

     

     

    By the way, I somehow forgot to report this bug earlier.

     

    In SoD there is a quest where you save a bunch of people from being turned to stone.

    After the quest they are all sitting there with a dialog for me to recruit them.

     

    https://www.dropbox.com/s/ep69wm4a93fqi1f/000000054-weird%20join%20dialogue%20SoD%201.7z?dl=0

    thanks, I will take a look.

     

  8. Why would we not be able to get the strongholds while in ToB? You could make Nalia wait for an indefinite time in SoA anyway so what wouldn't make sense in going back during ToB to help her with her stronghold? Both SoA and ToB are supposed to be "fighting against the time" but we all know it actually isn't since there are a very low amount of time limits in the game.

     

    well, from story perspective it's a "little" heated situation for Children of Bhaal once the ToB storyline starts (I'm actually hoping that someone will be interested in creating such content for parties that visits old areas. Clean EET makes convenient assumption that common folks don't know about your heritage, but considering how famous your party is that's not very believable). Although if some messenger showed up to inform that Nalia's home is in danger than I think it's only natural that good align CHARNAME would consider helping her out with it.

     

    About the black space thing, i've also noticed that my hotkeys settings were reset a few times during the playthrough, I didn't look much into it so I guess it is due to EET_end, can't preferences be transferred from the previous .lua in either the EET documents folder or the BG2EE documents folder?

     

    They are transferred. Here is the whole patching code:

    ACTION_IF (NOT FILE_EXISTS ~%USER_DIRECTORY_EET%/Baldur.lua~) AND (FILE_EXISTS ~%USER_DIRECTORY%/Baldur.lua~) BEGIN
        COPY + ~%USER_DIRECTORY%/Baldur.lua~ ~%USER_DIRECTORY_EET%~
    END
    
    ACTION_IF (FILE_EXISTS ~%USER_DIRECTORY_EET%/Baldur.lua~) BEGIN
    <<<<<<<< .../Baldur.lua
    SetPrivateProfileString('%row%','%option%','%option_1%')
    >>>>>>>>
        COPY + ~%USER_DIRECTORY_EET%/Baldur.lua~ ~%USER_DIRECTORY_EET%~
            REPLACE_TEXTUALLY ~^.+'Last Save .+[%newline%]*~ ~~
            DEFINE_ASSOCIATIVE_ARRAY table_EET_ini BEGIN
                "Text" , "%LANGUAGE_BG2%" => "Language"
                "EET Installation State" , 1 => "Program Options"
                "Active Campaign" , 1 => "Program Options"
                //"Never Show Nuisance SOD" , 0 => "Program Options"
                "Debug Mode" , 1 => "Program Options"
                "Logging On" , 1 => "Program Options"
                "UI Edit Mode" , 1 => "Program Options"
                "Cheats" , 1 => "Game Options"
                "Show Black Space" , 0 => "Graphics"
                "BG4LOGO" , 1 => "MOVIES"
                "BILOGO" , 1 => "MOVIES"
                "BLACKPI_" , 1 => "MOVIES"
                "BWDRAGON" , 1 => "MOVIES"
                "CREDITS" , 1 => "MOVIES"
                "INFELOGO" , 1 => "MOVIES"
                "INTRO_" , 1 => "MOVIES"
                "INTRO15F" , 1 => "MOVIES"
                "INTRO" , 1 => "MOVIES"
                "TSRLOGO" , 1 => "MOVIES"
                "WOTC" , 1 => "MOVIES"
            END
            PHP_EACH table_EET_ini AS option => row BEGIN
                COUNT_REGEXP_INSTANCES ~'%option%'~ num_matches
                PATCH_IF (num_matches = 0) BEGIN
                    APPEND_FILE ~.../Baldur.lua~ EVALUATE_BUFFER
                END ELSE BEGIN
                    REPLACE_TEXTUALLY ~^.+'%option%'.+$~ ~SetPrivateProfileString('%row%','%option%','%option_1%')~
                END
            END
        BUT_ONLY
    END ELSE BEGIN
    <<<<<<<< .../Baldur.lua
    SetPrivateProfileString('Language','Text','%LANGUAGE_BG2%')
    SetPrivateProfileString('Program Options','EET Installation State','1')
    SetPrivateProfileString('Program Options','Active Campaign','1')
    SetPrivateProfileString('Program Options','Debug Mode','1')
    SetPrivateProfileString('Program Options','Logging On','1')
    SetPrivateProfileString('Program Options','UI Edit Mode','1')
    SetPrivateProfileString('Game Options','Cheats','1')
    SetPrivateProfileString('Graphics','Show Black Space','0')
    SetPrivateProfileString('MOVIES','BG4LOGO','1')
    SetPrivateProfileString('MOVIES','BILOGO','1')
    SetPrivateProfileString('MOVIES','BLACKPI_','1')
    SetPrivateProfileString('MOVIES','BWDRAGON','1')
    SetPrivateProfileString('MOVIES','CREDITS','1')
    SetPrivateProfileString('MOVIES','INFELOGO','1')
    SetPrivateProfileString('MOVIES','INTRO_','1')
    SetPrivateProfileString('MOVIES','INTRO15F','1')
    SetPrivateProfileString('MOVIES','INTRO','1')
    SetPrivateProfileString('MOVIES','TSRLOGO','1')
    SetPrivateProfileString('MOVIES','WOTC','1')
    >>>>>>>>
        COPY + ~.../Baldur.lua~ ~%USER_DIRECTORY_EET%/Baldur.lua~ EVALUATE_BUFFER
    END

    which means file won't be deleted even if you reinstall the mod. And for the first time all settings are taken either from BG2:EE file if it exists. If no - new one is created. Once baldur.lua is within 'Baldur's Gate - Enhanced Edition Trilogy' directory it is not replaced by anything - we are patching it instead, even if you do new installation.

     

    And setup-EET_end does this:

    ACTION_IF (FILE_EXISTS ~%USER_DIRECTORY%/Baldur.lua~) BEGIN
        COPY ~%USER_DIRECTORY%/Baldur.lua~ ~%USER_DIRECTORY%~
            REPLACE_TEXTUALLY ~^.+'EET Installation State'.+$~ ~SetPrivateProfileString('Program Options','EET Installation State','2')~
        BUT_ONLY
    END

    So again it can't revert back your changes. Maybe you are editing the file in 'Baldur's Gate II - Enhanced Edition' rather than 'Baldur's Gate - Enhanced Edition Trilogy' ?

  9. here it is Kaythos

    huh, no idea why the hell everything is moved so far south. There is a code that automatically moves areas exported from vanilla WMP files but it doesn't leave WMP file in override after uninstallation, so not sure what could have caused the problem in your installation.

    Installing BG:EE + BG2:EE from scratch and re-downloading EET would fix the problem for sure since no one has reported such problem before, but I'd like to know why the map bugged for you. Just in case if you're going to make new installation please create a new file with BAT extension (or use command line). And paste such code in it:

    setup-EET.exe --force-install 0 --skip-at-view --language 0 --args-list 2dp "D:/Games/00806"

    of course use the correct directory to your BG:EE game. What is important here is the "d" parameter - with this all installation files (few GB of useless data) will be kept in EET/temp directory once the installation is finished if you start installation with this command. If the same problem will happen than we will be able to analyse it further with those files - please upload all map_ files that you will find there.

  10.  

     

    Adding this ALWAYS block should fix the USER_DIRECTORY issue in a more universal way:

     

    this won't be universal for EET.tp2 since at that point both weidu 239.01 and 239.02 still recognize the game as BG2:EE. Only after EET.flag is in override weidu will report the game as EET (and only after running the installer again).

     

    I was only referring to the "double quote" bug from WeiDU v239.02 which also affects every other BG(2)EE mod that makes use of this variable. In EET it must probably be added to both EET.tp2 and lib/EET_end.tp2 to work correctly.

     

    Edit: Btw, I've noticed that the option "Show Black Space" is automatically disabled by EET. Is this a technical necessity?

     

    Thanks for posting the code. It's indeed usefull.

     

    As for the "Show Black Space" I've enabled it by default because I think many people are not aware yet that the sane implementation have been added back in the latest patch. Running patch 2.x with it disabled (which is default behaviour) makes the game look like a joke, imo - I was sure that it's a bug rather than feature when I've seen it for the first time. Although of course it's not needed. And it should be removed either way since that seems like forcing my preferences on others which shouldn't be the case :blush:

     

     

    Back to topic *strongholds and Baldur.bcs triggers*.

    Having looked into them once more, there is a potential way for each of them to delay the stronghold quests and actions until ToB. As long as you start the related main quest during SoA you can go back at a later stage to finish it, become owner of the stronghold and do the corresponding quests in ToB (if that makes sense or not is something else, but EET would allow it).

    In this case you would need those baldur.bcs triggers in baldur25.bcs as well.

    thanks for checking it out!

  11. stock worldmap. I tried with bp bgt WMP patched, locations appear this time but at the wrong place again...in the sea (and far) . That's very odd...i'm a bit sad since i bought especially the games for the mod and it worked perfectly before xD

    please uninstall BP-BGT Worldmap and upload worldmap.wmp here (you can find it in override directory and attach it to the post after packing it).

  12. Hello guys..ive got a big issue since the RC5 (worked like a charm before, ive tried every RC) : the map is badly generated. Only 4 areas (Dragonspear castle, Tower of TOB and so ) appear..And at the wrong location (near the sea or in the sea). No way to go elsewhere sadly. in addition to that..can somebody help me ? tried to reinstall the whole thing , same issue. The issue appear at the beginning of BG1, so i cant even go to Belegost or anywhere. Thanks !

     

    NB : i didnt check the logs),but there was no critical error during the install...nothing harmfull for launching the game or finishing the install at least.

    dunno, if there were no warnings during installation than nothing comes to my mind, sorry. Do you use BP-BGT Worldmap or stock worldmap that comes with EET?

  13. Roxanne, the quoted code is actually EET addition. First part marks the NPC in a way that the Fate Spirit can recognise NPC presence in party during BG2 at some point and give proper response (mostly useful for characters that are joinable in both BG1 and SoA).

    Second block is used to automatically clean out NPCs from area after campaign change if they weren't with you. For example if you leave Cernd somewhere in SoA and than progress to ToB when you go back to that area where you left him he will DestroySelf. But you can still summon him via Fate Spirit (the same creature - DestroySelf doesn't remove them permanently - they can be still spawned via MoveGlobal).

    btw. in RC5 that !AreaCheck("AR4000") has been changed to !InPartyAllowDead. The reason why it's there is a delay before AR4000.BCS is able to swap override scripts for NPCs that migrated there with you (without it they would DestroySelf at first script loop). And when the CRE is spawned via Fate Spirit override script is swapped immediately, so the creature is not removed too. There is similar system for BG1 NPCs in place. It didn't work well in RC4 and earlier versions but has been fixed in RC5 (and via those hotfixes you've installed).

  14. Adding this ALWAYS block should fix the USER_DIRECTORY issue in a more universal way:

     

    this won't be universal for EET.tp2 since at that point both weidu 239.01 and 239.02 still recognize the game as BG2:EE. Only after EET.flag is in override weidu will report the game as EET (and only after running the installer again).

  15.  

    About additionnal triggers first, the Pocketplane only allows going to Saradush and where you came from during Saradush (beginning of chapter 20 but not all of chapter 20) so the blocks with !chapter 16,17 and 19 (example l 126) need to have Saradush added to them. On a side note, it would make sense story wise to allow the player to leave Saradush and go back to Amn during the Saradush episode since he can use the Pocket plane to do so, there would be no reason not to. It could be explained by CHARNAME not having good control over his powers though so it's up to you.

    There are some areas that should be added to these checks but I haven't done all of the ToB personal quests, I did Dorn's recently and it wouldn't make sense for these npcs to arrive in Lunia like they did when I loaded my save in unmodded BG2.

     

    I think the Bodhi/Aran blocks can be safely removed (l 176/200).

     

    I'm not sure about the rest.

    Those can surely go:

    • Bodhi/Aran
    • Jaheira
    • Montaron
    • Genies
    • SpawnTanadv
    • Habib

    The others depend on how you want the strongholds to work in ToB, e.g do you want to keep the occasional quests active or just have the money coming in? Do you want to return to the playhouse and druids or do you anticipate that you have done the contents during SoA?.

    There may also be an issue about doing the Nalia quest as late as ToB (theoratically you could do that, right?) although the original idea of the quest probably was to get money before going to Spellhold?

    Edit

    I think the others can go as well, the ToB Nalia, Cernd, Haer'Dalis etc to trigger the strongholds will not do that in ToB, i.e. you can only continue the strongholds you had but not get new ones.

     

    Some comments why each of them should be removed would be very useful considering I'm not that familiar with the content. For example why Genies code should be removed if someone didn't do Trademeet questline? (it's completely optional area in SoA). Montaron's and Xan's side quest isn't necessary to progress through the story, so not sure if it's good idea to not include it in Baldur25.bcs. No idea who is Tanadv and Habib, so can't make a decision without spending tons of time looking at game resources and analysing scripts and dialogues.

     

    In other words following format would be preferable if someone already knows context of these events:

    - Bodhi/Aran - not needed since these is stuff that triggers only before going to Brynnlaw

    - Ust Natha - part of the storyline, you can't go back there after finishing it

    etc.

     

    edit:

    I think the others can go as well, the ToB Nalia, Cernd, Haer'Dalis etc to trigger the strongholds will not do that in ToB, i.e. you can only continue the strongholds you had but not get new ones.

     

    but what about situation in which CHARNAME didn't get any stronghold during SoA? Notice that in EET JOIN dialogue files are automatically merged at the end so technically you could still get them during ToB unless there is some code that triggers it via NPC Override script or some filters in vanilla scripts and dialogues that would prevent it from happening later.

  16. By the way, the stronghold quests are currently stopped by starting ToB, it doesn't make sense to me when you can go back to the stronghold.

     

    the change to make them still active after going to ToB is ready for next release.

     

    on the other hand I may need help with this task. Some BALDUR.BCS code has to be appended also to BALDUR25.BCS in order to make some old quests active after starting ToB. While I know which part of code is responsible for Stronghold stuff there are more side quest related junk in global scripts. Does any of these blacks can be safely removed? (which means block already triggered no matter what like Ust Natha code). Also some advices regarding additional triggers if they're needed would be useful (in which areas/chapters we should disable messengers spawning etc.):

     

     

     

    IF
      InPartyAllowDead("Nalia")
      Dead("Nalia")
      Dead("Torgal")
      Global("NaliaTorgalDies","GLOBAL",0)
      Global("NaliaKeepPlot","GLOBAL",0)
    THEN
      RESPONSE #100
        SetGlobal("NaliaTorgalDies","GLOBAL",1)
    END
    
    IF
      InPartyAllowDead("Nalia")
      Dead("Nalia")
      AreaCheck("AR1300")
      Global("EnteredAR1300","GLOBAL",0)
      Global("NaliaKeepPlot","GLOBAL",0)
    THEN
      RESPONSE #100
        SetGlobal("EnteredAR1300","GLOBAL",1)
        SetGlobalTimer("ArrivedNaliaKeep","GLOBAL",ONE_DAY)
    END
    
    IF
      InPartyAllowDead("Nalia")
      Dead("Nalia")
      Global("DelciaLeave","GLOBAL",1)
      Global("NaliaKeepPlot","GLOBAL",0)
    THEN
      RESPONSE #100
        SetGlobal("DelciaLeave","GLOBAL",2)
    END
    
    IF
      InPartyAllowDead("Nalia")
      Dead("Nalia")
      AreaCheck("AR1302")
      CombatCounter(0)
      Global("NaliaInAR1302","AR1302",0)
    THEN
      RESPONSE #100
        SetGlobal("NaliaInAR1302","AR1302",1)
    END
    
    IF
      InPartyAllowDead("Nalia")
      Dead("Nalia")
      AreaCheck("AR1303")
      Global("NaliaInAR1303","AR1303",0)
    THEN
      RESPONSE #100
        SetGlobal("NaliaInAR1303","AR1303",1)
    END
    
    IF
      Delay(10)
      Global("FoundMontaronBody","GLOBAL",0)
      PartyHasItem("MISC5U") // Montaron's Body
    THEN
      RESPONSE #100
        SetGlobal("FoundMontaronBody","GLOBAL",1)
        AddexperienceParty(20000)
    END
    
    IF
      Delay(10)
      Global("HabibAppearance","GLOBAL",0)
      PartyHasItem("SW1H56") // Scimitar
    THEN
      RESPONSE #100
        ActionOverride(Player1,DropItem("SW1H56",[-1.-1])) // Scimitar
        ActionOverride(Player2,DropItem("SW1H56",[-1.-1])) // Scimitar
        ActionOverride(Player3,DropItem("SW1H56",[-1.-1])) // Scimitar
        ActionOverride(Player4,DropItem("SW1H56",[-1.-1])) // Scimitar
        ActionOverride(Player5,DropItem("SW1H56",[-1.-1])) // Scimitar
        ActionOverride(Player6,DropItem("SW1H56",[-1.-1])) // Scimitar
        SetGlobal("HabibAppearance","GLOBAL",1)
    END
    
    IF
      Delay(10)
      Global("HabibAppearance","GLOBAL",1)
      AreaCheck("AR0408")
      PartyHasItem("MISC07") // Gold
    THEN
      RESPONSE #100
        ActionOverride(Player1,DropItem("MISC07",[-1.-1])) // Gold
        ActionOverride(Player2,DropItem("MISC07",[-1.-1])) // Gold
        ActionOverride(Player3,DropItem("MISC07",[-1.-1])) // Gold
        ActionOverride(Player4,DropItem("MISC07",[-1.-1])) // Gold
        ActionOverride(Player5,DropItem("MISC07",[-1.-1])) // Gold
        ActionOverride(Player6,DropItem("MISC07",[-1.-1])) // Gold
        SetGlobal("HabibAppearance","GLOBAL",2)
    END
    
    IF
      OR(2)
        Global("PCSphere","GLOBAL",2)
        ReputationLT(Player1,4)
      GlobalLT("BribedCowled","GLOBAL",2)
    THEN
      RESPONSE #100
        SetGlobal("BribedCowled","GLOBAL",2)
    END
    
    IF
      !Global("Chapter","GLOBAL",16)
      !Global("Chapter","GLOBAL",17)
      !Global("Chapter","GLOBAL",19)
      AreaType(OUTDOOR)
      !AreaCheck("AR2500")
      !AreaCheck("AR1901")
      Dead("cefald01")
      Class(Player1,DRUID_ALL)
      !Class(Player1,SHAMAN)
      LevelGT(Player1,13)
      Global("DruidADSpawn","GLOBAL",0)
      Global("GreatDruid","GLOBAL",0)
    THEN
      RESPONSE #100
        Wait(2)
        SetGlobal("DruidADSpawn","GLOBAL",1)
        CreateCreatureObjectOffScreen("DRUIDAD",Player1,0,0,0) // Druid
    END
    
    IF
      !Global("Chapter","GLOBAL",16)
      !Global("Chapter","GLOBAL",17)
      !Global("Chapter","GLOBAL",19)
      AreaType(OUTDOOR)
      !AreaCheck("AR2500")
      !AreaCheck("AR1901")
      Class(Player1,DRUID_ALL)
      !Class(Player1,SHAMAN)
      LevelGT(Player1,13)
      Global("DruidADSpawn","GLOBAL",1)
      Global("GreatDruid","GLOBAL",0)
      GlobalTimerExpired("DruidADReturn","GLOBAL")
    THEN
      RESPONSE #100
        SetGlobal("DruidADSpawn","GLOBAL",2)
        CreateCreatureObjectOffScreen("DRUIDAD",Player1,0,0,0) // Druid
    END
    
    IF
      Global("drowTalk","GLOBAL",0)
      Global("slayer1","GLOBAL",0)
      PartyRested()
      GlobalGT("AsylumPlot","GLOBAL",43)
    THEN
      RESPONSE #100
        SetGlobal("drowTalk","GLOBAL",2)
        SetGlobal("slayer1","GLOBAL",1)
        SetGlobalTimer("SlayerTimer2","GLOBAL",FIVE_MINUTES)
        ActionOverride(Player1,StartDialog("player1",Player1))
    END
    
    IF
      GlobalTimerExpired("SlayerTimer2","GLOBAL")
      Global("goodagain","GLOBAL",0)
    THEN
      RESPONSE #100
        ActionOverride(Player1,ReallyForceSpellRES("spin718a",Myself)) // End Slayer Change
        SetGlobal("goodagain","GLOBAL",1)
        SetGlobal("DrowTalk","GLOBAL",4)
        ActionOverride(Player1,StartDialog("player1",Player1))
    END
    
    IF
      Global("Slayer10","GLOBAL",1)
    THEN
      RESPONSE #100
        ActionOverride(Player1,StartDialog("player1",Player1))
    END
    
    IF
      PartyGoldGT(14999)
      Global("BodiAppear","GLOBAL",0)
      GlobalGT("ShadowWork","GLOBAL",0)
      Global("WorkingForAran","GLOBAL",0)
      GlobalTimerExpired("ValenAppearTimer","GLOBAL")
      AreaType(OUTDOOR)
      OR(6)
        AreaCheck("AR0300")
        AreaCheck("AR0400")
        AreaCheck("AR0500")
        AreaCheck("AR0700")
        AreaCheck("AR0900")
        AreaCheck("AR1000")
      CombatCounter(0)
    THEN
      RESPONSE #100
        ClearAllActions()
        SetGlobal("BodiAppear","GLOBAL",1)
        SetGlobalTimer("MakeBrusWait","GLOBAL",ONE_MINUTE)
        CreateCreatureObject("ANAST",Player1,0,0,0) // Valen
        ActionOverride("ANAST",StartDialogueNoSet(Player1))
    END
    
    IF
      !Exists("BRUS")
      !Exists("BRUS3")
      Global("SpawnBrus","GLOBAL",1)
      Global("CHAPTER","GLOBAL",14)
      !AreaCheck("AR0800")
      !AreaCheck("AR2000")
      CombatCounter(0)
      GlobalTimerExpired("MakeBrusWait","GLOBAL")
      Global("ImTooSexyForThisBrus","GLOBAL",0)
      AreaType(OUTDOOR)
      Global("WorkingForAran","GLOBAL",0)
      Global("WorkingForBodhi","GLOBAL",0)
    THEN
      RESPONSE #100
        ClearAllActions()
        CreateCreatureObjectOffScreen("BRUS3",Player1,0,0,0) // Brus
        SetGlobal("SPAWNBRUS","GLOBAL",2)
        ActionOverride("brus3",StartDialogueNoSet(Player1))
    END
    
    IF
      GlobalTimerExpired("PGThievesReturn","GLOBAL")
      Global("NotifyThiefHead","GLOBAL",0)
    THEN
      RESPONSE #100
        SetGlobal("NotifyThiefHead","GLOBAL",1)
        DisplayStringHead(Player1,62083) // Your thieves have returned from their missions.
    END
    
    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
    
    IF
      GlobalTimerExpired("JosterPaid","GLOBAL")
      !Global("JosterLeave","GLOBAL",1)
      Global("PGFailed","GLOBAL",0)
      !Global("Chapter","GLOBAL",16)
      !Global("Chapter","GLOBAL",17)
      !Global("Chapter","GLOBAL",19)
    THEN
      RESPONSE #100
        SetGlobal("PGFailed","GLOBAL",1)
        DisplayStringHead(Player1,62082) // Renal will no longer wait for his due... You have lost your guild.
    END
    
    IF
      Global("MinscByeBye","GLOBAL",1)
    THEN
      RESPONSE #100
        ActionOverride("Minsc",EscapeArea())
    END
    
    IF
      Global("MinscByeBye","GLOBAL",2)
    THEN
      RESPONSE #100
        MoveGlobal("AR0400","Minsc",[519.529])
    END
    
    IF
      Global("SpawnTanadv","GLOBAL",0)
      Global("TurnCragmoon","GLOBAL",1)
      GlobalTimerExpired("CragmoonAttack","GLOBAL")
      !Global("Chapter","GLOBAL",16)
      !Global("Chapter","GLOBAL",17)
      !Global("Chapter","GLOBAL",19)
      AreaType(CITY)
      !AreaCheck("AR2500")
      !AreaCheck("AR1000")
      !AreaCheck("AR0700")
      !AreaCheck("AR0900")
      AreaType(OUTDOOR)
    THEN
      RESPONSE #100
        SetGlobal("SpawnTanadv","GLOBAL",1)
        CreateCreatureObjectOffScreen("TANADV01",Player1,0,0,0) // Strachan Fireblade
        CreateCreatureObjectOffScreen("TANADV02",Player1,0,0,0) // Adventurer
        CreateCreatureObjectOffScreen("TANADV03",Player1,0,0,0) // Adventurer
        CreateCreatureObjectOffScreen("TANADV04",Player1,0,0,0) // Adventurer
        CreateCreatureObjectOffScreen("TANADV05",Player1,0,0,0) // Adventurer
        CreateCreatureObjectOffScreen("TANADV06",Player1,0,0,0) // Dunbar the Fifth
    END
    
    IF
      Dead("Jaheira")
      GlobalGT("JaheiraCursed","GLOBAL",0)
      GlobalLT("JaheiraCursed","GLOBAL",8)
      Global("JaheiraCursedDead","GLOBAL",0)
    THEN
      RESPONSE #100
        SetGlobal("JaheiraCursedDead","GLOBAL",1)
    END
    
    IF
      GlobalGT("JaheiraCursed","GLOBAL",6)
      Global("JaheiraCursedDead","GLOBAL",1)
    THEN
      RESPONSE #100
        SetGlobal("JaheiraCursedDead","GLOBAL",0)
        Continue()
    END
    
    IF
      GlobalGT("JaheiraCursed","GLOBAL",0)
      GlobalLT("JaheiraCursed","GLOBAL",8)
      Global("JaheiraCursedDead","GLOBAL",1)
      !Dead("Jaheira")
    THEN
      RESPONSE #100
        ActionOverride("Jaheira",StartDialogueNoSet([PC]))
    END
    
    IF
      GlobalTimerExpired("OgronAssault","GLOBAL")
      !Global("Chapter","GLOBAL",16)
      !Global("Chapter","GLOBAL",17)
      !Global("Chapter","GLOBAL",19)
      AreaType(OUTDOOR)
      Global("DelonSpawn","GLOBAL",0)
    THEN
      RESPONSE #100
        SetGlobal("DelonSpawn","GLOBAL",1)
        SetGlobal("OgronAttack","GLOBAL",1)
        CreateCreatureObjectOffScreen("DELON",Player1,0,0,0) // Delon
        ActionOverride("delon",StartDialogueNoSet(Player1))
    END
    
    IF
      GlobalTimerExpired("UmarAssault","GLOBAL")
      !Global("Chapter","GLOBAL",16)
      !Global("Chapter","GLOBAL",17)
      !Global("Chapter","GLOBAL",19)
      AreaType(OUTDOOR)
      Global("DelonSpawn","GLOBAL",1)
    THEN
      RESPONSE #100
        SetGlobal("DelonSpawn","GLOBAL",2)
        SetGlobal("UmarPlot","GLOBAL",1)
        CreateCreatureObjectOffScreen("DELON",Player1,0,0,0) // Delon
        ActionOverride("delon",StartDialogueNoSet(Player1))
    END
    
    IF
      GlobalTimerExpired("MeetHiggin","GLOBAL")
      Global("MeckComesFirst","GLOBAL",0)
      !Global("Chapter","GLOBAL",16)
      !Global("Chapter","GLOBAL",17)
      !Global("Chapter","GLOBAL",19)
      !AreaCheck("AR2000")
      Global("BardPlot1","GLOBAL",0)
      AreaType(CITY)
      OR(3)
        AreaType(OUTDOOR)
        AreaCheck("AR0522")
        AreaCheck("AR0511")
    THEN
      RESPONSE #100
        SetGlobal("MeckComesFirst","GLOBAL",1)
        CreateCreatureObjectOffScreen("bdgoph01",Player1,0,0,0) // Meck
    END
    
    IF
      GlobalTimerExpired("MeetHiggin","GLOBAL")
      !Global("Chapter","GLOBAL",16)
      !Global("Chapter","GLOBAL",17)
      !Global("Chapter","GLOBAL",19)
      AreaType(CITY)
      !AreaCheck("AR2000")
      Global("BardPlot1","GLOBAL",3)
      OR(3)
        AreaType(OUTDOOR)
        AreaCheck("AR0522")
        AreaCheck("AR0511")
    THEN
      RESPONSE #100
        SetGlobal("BardPlot1","GLOBAL",4)
        SetGlobal("BardPlotOn","GLOBAL",1)
        CreateCreatureObjectOffScreen("bdgoph01",Player1,0,0,0) // Meck
    END
    
    IF
      GlobalTimerExpired("MeetHiggin2","GLOBAL")
      !Global("Chapter","GLOBAL",16)
      !Global("Chapter","GLOBAL",17)
      !Global("Chapter","GLOBAL",19)
      AreaType(CITY)
      !AreaCheck("AR2000")
      Global("BardPlot1","GLOBAL",6)
      OR(3)
        AreaType(OUTDOOR)
        AreaCheck("AR0522")
        AreaCheck("AR0511")
    THEN
      RESPONSE #100
        SetGlobal("BardPlot1","GLOBAL",7)
        SetGlobal("BardPlotOn","GLOBAL",1)
        CreateCreatureObjectOffScreen("bdgoph01",Player1,0,0,0) // Meck
    END
    
    IF
      GlobalTimerExpired("MeetHiggin3","GLOBAL")
      !Global("Chapter","GLOBAL",16)
      !Global("Chapter","GLOBAL",17)
      !Global("Chapter","GLOBAL",19)
      AreaType(CITY)
      !AreaCheck("AR2000")
      Global("BardPlot1","GLOBAL",9)
      OR(3)
        AreaType(OUTDOOR)
        AreaCheck("AR0522")
        AreaCheck("AR0511")
    THEN
      RESPONSE #100
        SetGlobal("BardPlot1","GLOBAL",10)
        SetGlobal("BardPlotOn","GLOBAL",1)
        CreateCreatureObjectOffScreen("bdgoph01",Player1,0,0,0) // Meck
    END
    
    IF
      GlobalTimerExpired("MeetHiggin4","GLOBAL")
      !Global("Chapter","GLOBAL",16)
      !Global("Chapter","GLOBAL",17)
      !Global("Chapter","GLOBAL",19)
      AreaType(CITY)
      !AreaCheck("AR2000")
      Global("BardPlot1","GLOBAL",12)
      OR(3)
        AreaType(OUTDOOR)
        AreaCheck("AR0522")
        AreaCheck("AR0511")
    THEN
      RESPONSE #100
        SetGlobal("BardPlot1","GLOBAL",13)
        SetGlobal("BardPlotOn","GLOBAL",1)
        CreateCreatureObjectOffScreen("bdgoph01",Player1,0,0,0) // Meck
    END
    
    IF
      GlobalTimerExpired("MeetHiggin5","GLOBAL")
      !Global("Chapter","GLOBAL",16)
      !Global("Chapter","GLOBAL",17)
      !Global("Chapter","GLOBAL",19)
      AreaType(CITY)
      !AreaCheck("AR2000")
      Global("BardPlot1","GLOBAL",16)
      OR(3)
        AreaType(OUTDOOR)
        AreaCheck("AR0522")
        AreaCheck("AR0511")
    THEN
      RESPONSE #100
        SetGlobal("BardPlot1","GLOBAL",17)
        SetGlobal("BardPlotOn","GLOBAL",1)
        CreateCreatureObjectOffScreen("bdgoph01",Player1,0,0,0) // Meck
    END
    
    IF
      GlobalTimerExpired("MeetHiggin6","GLOBAL")
      !Global("Chapter","GLOBAL",16)
      !Global("Chapter","GLOBAL",17)
      !Global("Chapter","GLOBAL",19)
      AreaType(CITY)
      !AreaCheck("AR2000")
      Global("BardPlot1","GLOBAL",19)
      OR(2)
        AreaType(OUTDOOR)
        AreaCheck("AR0511")
    THEN
      RESPONSE #100
        SetGlobal("BardPlot1","GLOBAL",40)
        SetGlobal("BardPlotOn","GLOBAL",1)
        CreateCreatureObjectOffScreen("bdgoph01",Player1,0,0,0) // Meck
    END
    
    IF
      GlobalTimerExpired("MeetHiggin7","GLOBAL")
      Global("BardPlot1","GLOBAL",42)
      !Global("Chapter","GLOBAL",16)
      !Global("Chapter","GLOBAL",17)
      !Global("Chapter","GLOBAL",19)
      AreaType(CITY)
      !AreaCheck("AR2000")
      OR(3)
        AreaType(OUTDOOR)
        AreaCheck("AR0522")
        AreaCheck("AR0511")
    THEN
      RESPONSE #100
        SetGlobal("BardPlot1","GLOBAL",45)
        SetGlobal("BardPlotOn","GLOBAL",1)
        CreateCreatureObjectOffScreen("bdgoph01",Player1,0,0,0) // Meck
    END
    
    IF
      GlobalTimerExpired("MeetHiggin8","GLOBAL")
      AreaType(CITY)
      !AreaCheck("AR2000")
      Global("BardPlot1","GLOBAL",50)
      !Global("Chapter","GLOBAL",16)
      !Global("Chapter","GLOBAL",17)
      !Global("Chapter","GLOBAL",19)
      OR(3)
        AreaType(OUTDOOR)
        AreaCheck("AR0522")
        AreaCheck("AR0511")
    THEN
      RESPONSE #100
        SetGlobal("BardPlot1","GLOBAL",51)
        SetGlobal("BardPlotOn","GLOBAL",1)
        CreateCreatureObjectOffScreen("bdgoph01",Player1,0,0,0) // Meck
    END
    
    IF
      PartyRested()
      GlobalTimerExpired("JaheiraReturn","GLOBAL")
      Global("JaheiraReturns","GLOBAL",0)
    THEN
      RESPONSE #100
        SetGlobal("JaheiraReturns","GLOBAL",1)
        MoveGlobalObject("Jaheira",Player1)
    END
    
    IF
      GlobalTimerExpired("BardMoneyTime","GLOBAL")
      GlobalGT("BardMoney","GLOBAL",500)
      Global("BardPlotOn","GLOBAL",5)
    THEN
      RESPONSE #100
        SetGlobalTimer("BardMoneyTime","GLOBAL",SEVEN_DAYS)
        DisplayString(Player1,47142) // Gold has been placed in your keep.
        IncrementGlobal("BardMoney","GLOBAL",-100)
        AddGlobals("BardMoneyX","BardMoney")
    END
    
    IF
      GlobalTimerExpired("BardMoneyTime","GLOBAL")
      GlobalLT("BardMoney","GLOBAL",501)
      Global("BardPlotOn","GLOBAL",5)
    THEN
      RESPONSE #100
        SetGlobalTimer("BardMoneyTime","GLOBAL",SEVEN_DAYS)
        DisplayString(Player1,47142) // Gold has been placed in your keep.
        AddGlobals("BardMoneyX","BardMoney")
    END
    
    IF
      GlobalTimerExpired("KPTaxTime","GLOBAL")
      Global("PCKeepOwner","GLOBAL",1)
    THEN
      RESPONSE #100
        DisplayString(Player1,47142) // Gold has been placed in your keep.
        SetGlobalTimer("KPTaxTime","GLOBAL",SEVEN_DAYS)
        IncrementGlobal("KPTaxes","GLOBAL",500)
    END
    
    IF
      GlobalTimerExpired("KPPlotTime","GLOBAL")
      AreaType(OUTDOOR)
      !AreaCheck("AR2500")
      !AreaCheck("AR2600")
      !AreaCheck("AR2000")
      !AreaCheck("AR1900")
      Global("KeepPlot","GLOBAL",4)
      InParty("Nalia")
      !Global("Chapter","GLOBAL",16)
      !Global("Chapter","GLOBAL",17)
      !Global("Chapter","GLOBAL",19)
      Global("NaliaIsaeaPlotDone","GLOBAL",1)
      Global("KPRunnerSpawn","GLOBAL",0)
    THEN
      RESPONSE #100
        SetGlobal("KPRunnerSpawn","GLOBAL",1)
        CreateCreatureObjectOffScreen("KPRUNN01",Player1,0,0,0) // Keep Messenger
    END
    
    IF
      GlobalTimerExpired("KPPlotTime","GLOBAL")
      AreaType(OUTDOOR)
      !AreaCheck("AR2500")
      !AreaCheck("AR2600")
      !AreaCheck("AR2000")
      !AreaCheck("AR1900")
      !Global("Chapter","GLOBAL",16)
      !Global("Chapter","GLOBAL",17)
      !Global("Chapter","GLOBAL",19)
      Global("KeepPlot","GLOBAL",4)
      !InParty("Nalia")
      Global("KPRunnerSpawn","GLOBAL",0)
    THEN
      RESPONSE #100
        SetGlobal("KPRunnerSpawn","GLOBAL",1)
        CreateCreatureObjectOffScreen("KPRUNN01",Player1,0,0,0) // Keep Messenger
    END
    
    IF
      GlobalTimerExpired("KPPlotTime","GLOBAL")
      AreaType(OUTDOOR)
      !AreaCheck("AR2500")
      !AreaCheck("AR2600")
      !AreaCheck("AR2000")
      !AreaCheck("AR1900")
      !Global("Chapter","GLOBAL",16)
      !Global("Chapter","GLOBAL",17)
      !Global("Chapter","GLOBAL",19)
      Global("KeepPlot","GLOBAL",7)
      Global("KPRunnerSpawn","GLOBAL",1)
    THEN
      RESPONSE #100
        SetGlobal("KPRunnerSpawn","GLOBAL",2)
        CreateCreatureObjectOffScreen("KPRUNN01",Player1,0,0,0) // Keep Messenger
    END
    
    IF
      GlobalTimerExpired("KPPlotTime","GLOBAL")
      AreaType(OUTDOOR)
      !AreaCheck("AR2500")
      !AreaCheck("AR2600")
      !AreaCheck("AR2000")
      !AreaCheck("AR1900")
      !Global("Chapter","GLOBAL",16)
      !Global("Chapter","GLOBAL",17)
      !Global("Chapter","GLOBAL",19)
      Global("KeepPlot","GLOBAL",8)
      Global("KPRunnerSpawn","GLOBAL",2)
    THEN
      RESPONSE #100
        SetGlobal("KPRunnerSpawn","GLOBAL",3)
        CreateCreatureObjectOffScreen("KPRUNN01",Player1,0,0,0) // Keep Messenger
    END
    
    IF
      GlobalGT("KPRevolt","GLOBAL",9)
      Global("RoenalControl","GLOBAL",0)
      GlobalLT("KeepPlot","GLOBAL",12)
    THEN
      RESPONSE #100
        ClearAllActions()
        StartCutSceneMode()
        StartCutScene("Cut32n")
    END
    
    IF
      GlobalTimerExpired("TeolMessenger","GLOBAL")
      !Global("Chapter","GLOBAL",16)
      !Global("Chapter","GLOBAL",17)
      !Global("Chapter","GLOBAL",19)
      AreaType(OUTDOOR)
      !AreaCheck("AR2500")
      !AreaCheck("AR2600")
      Global("NatulaSpawn","GLOBAL",0)
    THEN
      RESPONSE #100
        SetGlobal("NatulaSpawn","GLOBAL",1)
        CreateCreatureObject("MGASS01",Player1,0,0,0) // Sergeant Natula
        ActionOverride("MGASS01",StartDialogueNoSet(Player1))
    END
    
    IF
      Global("geniesgone","GLOBAL",0)
      Dead("trgeni01")
    THEN
      RESPONSE #100
        SetGlobal("geniesgone","GLOBAL",1)
    END

     

     

     

    Thanks in advance.

  17. How about quick workaround?

     

     

    In EET.tp2 change this code:

    OUTER_PATCH_SAVE USER_DIRECTORY_EET ~%USER_DIRECTORY%~ BEGIN
        REPLACE_TEXTUALLY ~Baldur's Gate II - Enhanced Edition~ ~Baldur's Gate - Enhanced Edition Trilogy~
    END

    to this:

    OUTER_PATCH_SAVE USER_DIRECTORY_EET ~%USER_DIRECTORY%~ BEGIN
        REPLACE_TEXTUALLY ~"?Baldur's Gate II - Enhanced Edition"?~ ~Baldur's Gate - Enhanced Edition Trilogy~ //for both weidu 239.01 and 239.02
        REPLACE_TEXTUALLY ~"?Baldur's Gate - Enhanced Edition Trilogy"?~ ~Baldur's Gate - Enhanced Edition Trilogy~ //in case you reinstall the mod on 239.02
    END

    latest weidu beta indeed doesn't work with EET due to this bug although this workaround can be added in next release if weidu won't be fixed until than.

     

    --------

     

    edit: also in EET/lib/EET_end.tph:

        OUTER_PATCH_SAVE USER_DIRECTORY ~%USER_DIRECTORY%~ BEGIN
            REPLACE_TEXTUALLY ~Baldur's Gate II - Enhanced Edition~ ~Baldur's Gate - Enhanced Edition Trilogy~
        END

    to:

        OUTER_PATCH_SAVE USER_DIRECTORY ~%USER_DIRECTORY%~ BEGIN
            REPLACE_TEXTUALLY ~"?Baldur's Gate II - Enhanced Edition"?~ ~Baldur's Gate - Enhanced Edition Trilogy~
            REPLACE_TEXTUALLY ~"?Baldur's Gate - Enhanced Edition Trilogy"?~ ~Baldur's Gate - Enhanced Edition Trilogy~
        END
    • You can use "pocket plane" while in the pocket plane and it makes you unable to use the "put me where I previously was" option to get out of the pocket plane.

    https://www.dropbox....als tob.7z?dl=0

     

    1.Get out of the plane by using the normal exit (return me from blabla)

    2.load and use pocket plane then try step 1

     

    Might be an original bug, still good for a fixpack.

     

    Seems to be hardcoded stuff that no longer works after cleaning SPIN649 from EXE file (which was needed so that the spell is not automatically removed by engine). Fixed by applying 'Protection from Spell' effect when party is inside AR4500.

     

    • There's a missing dialog in Dorn's ToB quest, this doesn't happen on unmodded BG2, it does on unmodded EET.

    https://www.dropbox....est bug.7z?dl=0

     

    To check the dialogs, load the save, go west through the stairs, a planetar will say something, dorn will answer on EET, he won't on BG2.

    Keep going west, another conversation will be started, select the first option. In EET, dorn will ask for a word in private and if you select "sure" the conversation will bug. In BG2 it won't ask for a word in private.

     

     

    It's vanilla BG2:EE bug: http://redmine.beamdog.com/issues/24428

    The reason why you didn't get it by loading EET save in vanilla game is due to missing "TOBTEMP.bmp" file, so the vanilla engine thought you were in base game and BALDUR.BCS was in use instead of BALDUR25.BCS as it should in ToB

     

    • I went to finish the Durlag quest during BG2 and there were 2 aec letec at the same time in the fight.

    https://www.dropbox....c'letec.7z?dl=0

    I could be wrong, but I remember it being 1 aec letec and an immobile npc changes into a new one whenever Aec'letec dies.

     

     

    One of priests turned into Aec'letec at the beginning of the battle because you have already killed a creature with "TANAR" DV somewhere down the line (all Tanar'ri seems to have this exact same DV in BG2). Will be fixed in next version by using

    SetGlobal("SPRITE_IS_DEADTANAR","GLOBAL",0)

    in the code that spawns Aec'letec, so it won't matter if you killed more creatures of his type before. Alternatively I could change his DV but than we would risk compatibility issues with mods like SCS so I think it's not worth it. Anyway hilarious bug: 1 is not really a problem but 2 of them managed to annihilate your whole bg2 party when I was testing it :p

     

    • The chapter number stops appearing in the loading screen after chapter 13.

    https://i.imgur.com/byDku2x.jpg

    Pretty sure this is base EET bug.

     

     

    I will take a look. Hopefully it's not hardcoded.

     

    • Some of Ust Natha transitions do not make sense.

    https://i.imgur.com/MP1w2DW.jpg

    This is in the base game so it could be fixpack I guess.

     

    hmm, not even BG2 Fixpack fixed those polygons in all these years. Nah, better just report it on Redmine and hope for the best :phttp://redmine.beamdog.com/projects/bgii-ee-bugs/issues?set_filter=1&tracker_id=11

     

    By the way, the stronghold quests are currently stopped by starting ToB, it doesn't make sense to me when you can go back to the stronghold.

     

    the change to make them still active after going to ToB is ready for next release.

     

    ----

     

    Thanks for all new report, GrimLefourbe. I will add you to credit section of the readme file as beta tester.

  18. As a general idea, you could make a EET tweaks component that just copies the BG2EE item over the BG1&SoD(and a second component that does the reverse) item and let the others just deal with it as they best see, aka they either recommend installing it or not. 2 000 flies, one swap. Yes, of course you'll eventually have to deal with larger&longer issues/what to include etc, but this would do things quite fast, for you, for now.

     

     

    Sounds bad to be honest. There are probably just a few duplicated items in whole game and they are all from SoD (and maybe some earlier Beamdog's stuff with OH prefix). Changing this stuff is a matter of adding a single row to appropriate dictionary filename array that is used during EET installation. 0 problems with mods considering we still leave all files within game resources and these are just generic items anyway rather than quest related ones (also keep in mind that all mods installed on BG:EE are treated like vanilla resources so are automatically handled too). Actually I'm not quite sure what such tweak you've proposed is meant to do?

  19. I currently have 2 long swords + 1 which should probably be merged in 1 item. Only the description vary but it's not specific like for the plate mail.

     

    They did not get similarly affected by the lore changes of item revision and that's how I found out, I also don't know which one appear when.

     

    SW1H05 description :

    These swords are usually referred to as doubled-edged swords, war swords, or military swords. In many cases, the long sword has a single-edged blade. There is no single version of the long sword; the design and length vary from culture to culture, and may vary within the same culture depending on the era. Among the most common characteristics of all long swords is their length, which ranges from 35 to 47 inches. In the latter case, the blade is known to take up 40 inches of the total length. Most long swords have a double-edged blade and a sharp point at the tip. Despite the tip, the long sword is designed for slashing, not thrusting. This long sword is particularly good at its job, as it has been enchanted with a few magical properties.

    SW1H05S description :

    These swords are usually referred to as doubled-edged swords, war swords, or military swords. The blade hums slightly in your hand, the only overt evidence that magic runs through it.

     

    I'd suggest taking the first description for all long swords +1.

     

    Is this EET made? It doesn't use the _ affixe so i'd guess not but then who would made 2 different identical items for a single game?

     

    Edit : Also just got a ring of fire resistance that has a very short description compared to the one I had already. It looks like the Beamdog made generic weapons have very short descriptions compared to the originals and aren't always merged. Still a guess, i'll keep track of other similar cases(though I won't catch them all).

     

    Edit 2: Well, another! The ring of Free Action bought in SoD isn't the same as the one looted at the Iron Throne HQ... I'd be curious as to why Beamdog did that...

     

    It would be great to handle this stuff before final 1.0 release. I've started looking at items added by SoD (starting with BD prefix) and there are indeed some duplications of items. 2 examples:

    (on left side SoD name and on right side BG2:EE)

    BDAROW04 => AROW15 //Arrow +3

    BDSW1H13 => SW1H09 //Short Sword +2

     

    these are exactly the same items so we could just set EET to use BG2:EE item names instead during importation, so the items could stack with each other. In such case SoD items would still exist within game resources but wouldn't be used in the game (unless some mod installed after EET adds references to them).

     

    This is a little tricky because there are also some items that looks similar but I think should be kept as they are:

    BDAMUL24 => AMUL14 //Amulet of Protection +1 - the one in SoD uses generic description rather than unique lore used in BG:EE/BG2:EE, so even if it works and looks the same it can be considered a different item. On the other hand unique lore for this item doesn't make much sense considering how often it can be found in game. In such case maybe it would be better idea to use SoD generic description on AMUL14? Or maybe mods are responsible for so many instances of this amulet? (if this is the case than it's not really a problem)

    BDAROW03 => AROW08 //Flaming Arrow - SoD version adds 1d4 fire damage more compared to Arrow of Fire, so these are not identical items at all

    SW1H05S => SW1H05 //S version has 'Silver Weapon' flag set (to be honest no idea what it changes in game - more damage against lycanthropes perhaps?), so these are not the same weapons, even if both use generic description

     

    --------

    The problem is that this is time consuming task. If someone would be interested in helping with it I can explain how to do it in Near Infinity. Such help would be really appreciated because this way I could spend the time on more demanding tasks instead.

  20. Thanks for all new reports!

     

     

     

    The intro to chapter 9 (of SoD) plays instead of the one to chapter 9 of ToB when I reach Amkethran (chapter 21).

     

    Is it the same for others ?

     

    https://www.dropbox.com/s/dquyzwfwpeixvdk/000000106-bug%20intro%20chapter%2021.7z?dl=0

     

    Same. Also the chapter screen is missing.

     

    It does exactly what is currently in ar5500.bcs

     

    IF
    Global("EnteredArea","AR5500",0)
    THEN
    RESPONSE #100
    SetGlobal("EnteredArea","AR5500",1)
    Explore()
    SetGlobalTimer("AMmayorPlotTimer","AR5500",FIVE_ROUNDS)
    SetGlobal("Chapter","GLOBAL",21) //This is set
    AddJournalEntry(73258,INFO) // Chapter 21 Saradush has been sacked. Yaga-Shura had burst through the wall to find a Bhaalspawn... myself. I was not there, however, so he contented himself with destroying everything in his path, including all the other children of Bhaal that had sought refuge there. Melissan survived, though she seemed devastated. I am one of the few Bhaalspawn that remain... the only others are a group comprised individually of the most powerful of Bhaal's children that remain in Faerun. They have been hunting their siblings, including me, but to what end even Melissan doesn't know. Perhaps they seek to raise Bhaal and become his earthbound avatars. Perhaps they seek to become gods themselves. But they will not rest until I am dead... and their powers combined are enough to destroy even me, so Melissan claims. I have little choice but to take Melissan's offer of help. She knows of a safe haven in the Calishite desert... a place called Amkethran... from which I can plan how best to confront these Bhaalspawn who hunt me and end all questions about my future and my destiny... whatever it may truly be... once and for all.//You get the journal update
    TriggerActivation("TRAN5509",FALSE)
    TriggerActivation("INFO5509",TRUE)
    SetGlobal("BD_Chapter_Save","GLOBAL",9)
    SaveGame(23) //You get a chapter 21 start save
    TextScreen("CHPTXT9") //This one is the SoD chapter9 text screen without the mos background (is *none* in the 2da)
    END

     

     

     

    fixed by renaming SoD CHPTXT9 to CHPTXT9_ (standard EET naming convention for conflicting resources)

     

    Not sure if you're changing it for EET Tweaks but the current Teleport spell doesn't work for me unless I didn't understand how to use it.

    will take a look when I start updating EET_Tweaks

     

    K4thos - I've sent you the UI.menu directly:

     

    attachicon.gifBaldr005.jpg

     

    attachicon.gifBaldr008.jpg

     

    EDIT: I've also sent you instructions on how to fix the function for the BIO creation for multi-class characters.

    thanks! Fix ready for next release - GUI auto biography feature now supports multi-class characters and HLA screen in SoD GUI is now available in SoD style.

     

     

    New RC up on GitHub. Thanks to all of the awesome feedback from you guys the mod should feel much more polished now.

     

    Version 1.0 Release Candidate 5

    - Fixed MAJOR regression regarding NPC SoA continuity system caused by engine changes in patch 2.x
    - Fixed problem with not working NPC Override scripts after SoD->SoA transition (damn DisableAI command, wasted too much time before finding the obvious cause)
    - Fixed random tables item quirks (mod now uses old 2da files and the same names as BGT)
    - Added new function that can be used by modders to easily patch BG1 random tables dummy item names. Supported platforms: BG1, BG:EE, Tutu, BGT, EET
    - Fixed water layers via argent77's code (this time for sure)
    - Day/Night movies no longer shows up in interiors
    - Kicked NPCs won't try to initiate post dialogue after spawned again
    - Fixed regression in EET_modConverter 'Chapter_patcher.tph', also added support for commands written with whitespace between commas
    - Fixed support for 'Story mode' (needs testing)
    - Fixed vanilla BG:EE bug - duplicating Rasaad GAM entries
    - Fixed problem with spawning Rasaad too early in Trademeet
    - Changed vanilla code that for whatever reason sets Aerie's BeenInParty flag even if she wasn't in party at all
    - Implemented auto biography GUI feature depending on the chosen campaign (workaround for the vanilla system that doesn't work when engine_mode = 1)
    - SoD GUI now supports High Level Abilities selection
    - added scrollbar to SoD GUI kits selection menu
    - Removed SCRL1V importation - Dimension Door scroll no longer exists in vanilla BG:EE. EET now copies version of this file from patch 1.3 to Override in case some mods still use it
    - Updated 'EET_functions.tph' - also included in updated BG2:EE NPC compatibility patches (no other changes)
    - Resolved compatibility problem with mods that use Player initiated dialogues system
    - Resolved compatibility issue with Margarita NPC - please re-install setup-EET_end finalise component if you have it installed
    - All vanilla BG1 and BG2 areas added to console menu (if there is a reference for BG:EE and BG2:EE areas than let me know)
    - Added XP adjustment after spawning NPC in ToB
    - Thieves Guild time limit disabled when you return to old areas
    - EET no longer uses HANDLE_CHARSETS - all TRA files have been converted to UTF-8 without boom to solve the issue with M_EET.LUA file (if the game crashed on you with non-English language than this will fix it).

     

    Known problems:
    - Fate Spirit in ToB don't acknowledge Dynaheir, Khalid and Yoshimo death if they have not been really killed during game. The dialogue checks for STATE_REALLY_DEAD - what is the best way to give them this state? The easiest way would be using Kill("DV") but this action triggers the death scream even if they are outside party in completely different area...
    - auto biography GUI feature doesn't work with multi-class characters yet
    - HLA menu in SoD GUI uses BG2:EE GUI art. As far as I know SoD variant of the art doesn't exist. Looking for help regarding this task

    - and yeah, those SoD links still didn't make it. Soon...

    No update pack for those with RC4 + all intermediate patches (understandable when looking at contents of RC5)

    Does it still make sense to report issues on RC4 + PidFix + Hotfix + some local fixes for NPC spawning issues (given that the issue is not on the RC5 list) or is it better to do a new install?

     

     

    Creating patch that fixes all of these would be very time consuming. Also save games are affected by some of this stuff. But if you have all previous hotfixes installed than it still make sense to report things not listed in the changelog. As for the NPC spawning issues - all previously reported stuff have been fixed in RC5. Of course new installation would be better but that's just too damn time consuming to make new installation every few days, so probably not worth it.

     

     

     

     

     

     

    Adjust FPS and fix audio skipping in cutscenes

    this one will be greatly improved at some point to take into account DisplayStringWait action that is heavely used by Beamdog content (I will run each referenced WAV file with a tool that analyses the length of track and than add exactly as many SmallWait() ticks needed to not abort sounds triggered by this action). This is why the current tweak is not effective in SoD and other Beamdog's cutscenes. Although you can keep it installed for now since it will help with many vanilla BG2 cutscenes.

     

    That's not necessarily the case. DSW() waits for the sound to finish playing (it's supposed to, anyway), then proceeds to the next action. So I'd expect no difference between various FPS settings or languages when it's used. The problem would arise when cutscene does not use DSW().

     


    That would be awasome but it seems to work differently for me. Let's take a look at CH1CUT01.BCS (Gorion cutscene)
    IF
    True()
    THEN
    RESPONSE #100
    CutSceneId("Gorion")
    ...
    DisplayStringWait(Myself,31483) // Listen carefully! If we ever become separated, it is imperative that you make your way to the Friendly Arm Inn.
    DisplayStringWait(Myself,31484) // There, you will meet Khalid and Jaheira. They have long been my friends, and you can trust them.
    END

    IF
    True()
    THEN
    RESPONSE #100
    CutSceneId(Player1)
    ...
    ENDthis part indeed waits for the voice to be finished before going to next action:
    DisplayStringWait(Myself,31483) // Listen carefully! If we ever become separated, it is imperative that you make your way to the Friendly Arm Inn.but next line:
    DisplayStringWait(Myself,31484) // There, you will meet Khalid and Jaheira. They have long been my friends, and you can trust them.doesn't wait for anything at all (I've also tried adding some action right after it - doesn't change anything). On 60 FPS whole next script block is finished while the sound is still playing, so it doesn't wait before moving to the next action / script loop. In this case sound is aborted somewhere in the middle.

    Due to this I thought that the command only works as intended on 30 FPS and on 60 FPS would need additional SmallWait lasting as long as the track, but after checking this cutscene I'm no longer sure what's up. Should it be reported to Beamdog or does it work as intended?

     

    Unfortunately, it does work as expected... When there're multiple CutSceneID() objects in the script, they run their local action queue simultaneously and independently of each other. So, while Gorion would wait for the audio to finish playing, Player1 is not bound by such obligations and proceeds straight to the next area. It could be alleviated by moving the area transition to the dedicated script file (transitions should only be done by Player1) and start it from Gorion's block, but, yeah, that involves more substantial re-structuring than a couple REPLACE_TEXTUALLY. Especially given it also includes skippable mode.

     

    PS to be honest, I don't know what can possibly be done to resolve the issue gracefully. For simple cutscenes it's possible with DSW() or additional Wait()s, but stuff like SoD's final battle intro is just too complex. We'd have to split it from string till next string, and even that would still mess up the synch in between, in some scenes (like in the hell bridge scene just before the tower). Even the looping sequence like in BDCUT11/BDCUT11A wouldn't solve it.

     

    thanks for explanation. This means that the Tweak for FPS adjusting won't help with Beamdog's created cutscenes unfortunately. But it is still useful for vanilla content.

     

     


    Baldr001.jpg

     

    also fixed

  21. Adjust FPS and fix audio skipping in cutscenes

    this one will be greatly improved at some point to take into account DisplayStringWait action that is heavely used by Beamdog content (I will run each referenced WAV file with a tool that analyses the length of track and than add exactly as many SmallWait() ticks needed to not abort sounds triggered by this action). This is why the current tweak is not effective in SoD and other Beamdog's cutscenes. Although you can keep it installed for now since it will help with many vanilla BG2 cutscenes.

    That's not necessarily the case. DSW() waits for the sound to finish playing (it's supposed to, anyway), then proceeds to the next action. So I'd expect no difference between various FPS settings or languages when it's used. The problem would arise when cutscene does not use DSW().

     

    That would be awasome but it seems to work differently for me. Let's take a look at CH1CUT01.BCS (Gorion cutscene)

    IF
        True()
    THEN
        RESPONSE #100
            CutSceneId("Gorion")
            SetGlobal("TalkedToGorion","GLOBAL",1)
            CreateCreature("POGHMA5",[4260.2424],SW) // Priest of Oghma
            SetAreaScript("cutskip1",OVERRIDE)
            SetGlobal("BD_CUTSCENE_BREAKABLE","GLOBAL",1)
            SetCutSceneBreakable(TRUE)
            MoveToPoint([2745.1816])
            JumpToPoint([3941.2456])
            MoveToPoint([4202.2495])
            Face(N)
            DisplayStringWait(Myself,31483) // Listen carefully! If we ever become separated, it is imperative that you make your way to the Friendly Arm Inn.
            DisplayStringWait(Myself,31484) // There, you will meet Khalid and Jaheira. They have long been my friends, and you can trust them.
    END
    
    IF
        True()
    THEN
        RESPONSE #100
            CutSceneId(Player1)
            Wait(1)
            MoveViewPoint([4250.2440],INSTANT)
            JumpToPoint([3879.2431])
            MoveToPoint([4206.2446])
            Face(S)
            Wait(12)
            ActionOverride("POGHMA5",ForceSpell(Player1,CLERIC_CURE_LIGHT_WOUNDS)) // SPPR103.SPL (Cure Light Wounds)
            Wait(4)
            ActionOverride("POGHMA5",MoveToPoint([4009.2435]))
            ActionOverride("GORION",MoveToPoint([4314.2510]))
            ActionOverride("GORION",DestroySelf())
            ActionOverride("POGHMA5",DestroySelf())
            MoveToPoint([4314.2510])
            SetCutSceneBreakable(FALSE)
            SetGlobal("BD_CUTSCENE_BREAKABLE","GLOBAL",0)
            SetAreaScript("",OVERRIDE)
            FadeToColor([20.0],0)
            Wait(1)
            ClearAllActions()
            DayNight(MIDNIGHT)
            LeaveAreaLUAPanic("AR2700","TRGORION",[2350.1523],E)
            LeaveAreaLUA("AR2700","TRGORION",[2350.1523],E)
            ActionOverride(Player2,LeaveAreaLUA("AR2700","TRGORION",[3522.3712],E))
            ActionOverride(Player3,LeaveAreaLUA("AR2700","TRGORION",[3522.3712],E))
            ActionOverride(Player4,LeaveAreaLUA("AR2700","TRGORION",[3522.3712],E))
            ActionOverride(Player5,LeaveAreaLUA("AR2700","TRGORION",[3522.3712],E))
            ActionOverride(Player6,LeaveAreaLUA("AR2700","TRGORION",[3522.3712],E))
            Weather(RAIN)
            MultiPlayerSync()
            CreateCreature("GORION",[2597.1458],S) // Gorion
            MultiPlayerSync()
            FadeFromColor([20.0],0)
            StartCutScene("Ch1cut02")
    END

    this part indeed waits for the voice to be finished before going to next action:

    DisplayStringWait(Myself,31483) // Listen carefully! If we ever become separated, it is imperative that you make your way to the Friendly Arm Inn.

    but next line:

    DisplayStringWait(Myself,31484) // There, you will meet Khalid and Jaheira. They have long been my friends, and you can trust them.

    doesn't wait for anything at all (I've also tried adding some action right after it - doesn't change anything). On 60 FPS whole next script block is finished while the sound is still playing, so it doesn't wait before moving to the next action / script loop. In this case sound is aborted somewhere in the middle.

     

    Due to this I thought that the command only works as intended on 30 FPS and on 60 FPS would need additional SmallWait lasting as long as the track, but after checking this cutscene I'm no longer sure what's up. Should it be reported to Beamdog or does it work as intended?

  22. New RC up on GitHub. Thanks to all of the awesome feedback from you guys the mod should feel much more polished now.

     

    Version 1.0 Release Candidate 5

    - Fixed MAJOR regression regarding NPC SoA continuity system caused by engine changes in patch 2.x
    - Fixed problem with not working NPC Override scripts after SoD->SoA transition (damn DisableAI command, wasted too much time before finding the obvious cause)
    - Fixed random tables item quirks (mod now uses old 2da files and the same names as BGT)
    - Added new function that can be used by modders to easily patch BG1 random tables dummy item names. Supported platforms: BG1, BG:EE, Tutu, BGT, EET
    - Fixed water layers via argent77's code (this time for sure)
    - Day/Night movies no longer shows up in interiors
    - Kicked NPCs won't try to initiate post dialogue after spawned again
    - Fixed regression in EET_modConverter 'Chapter_patcher.tph', also added support for commands written with whitespace between commas
    - Fixed support for 'Story mode' (needs testing)
    - Fixed vanilla BG:EE bug - duplicating Rasaad GAM entries
    - Fixed problem with spawning Rasaad too early in Trademeet
    - Changed vanilla code that for whatever reason sets Aerie's BeenInParty flag even if she wasn't in party at all
    - Implemented auto biography GUI feature depending on the chosen campaign (workaround for the vanilla system that doesn't work when engine_mode = 1)
    - SoD GUI now supports High Level Abilities selection
    - added scrollbar to SoD GUI kits selection menu
    - Removed SCRL1V importation - Dimension Door scroll no longer exists in vanilla BG:EE. EET now copies version of this file from patch 1.3 to Override in case some mods still use it
    - Updated 'EET_functions.tph' - also included in updated BG2:EE NPC compatibility patches (no other changes in those patches)
    - Resolved compatibility problem with mods that use Player initiated dialogues system
    - Resolved compatibility issue with Margarita NPC - please re-install setup-EET_end finalise component if you have it installed
    - All vanilla BG1 and BG2 areas added to console menu (if there is a reference for BG:EE and BG2:EE areas than let me know)
    - Added XP adjustment after spawning NPC in ToB
    - Thieves Guild time limit disabled when you return to old areas
    - EET no longer uses HANDLE_CHARSETS - all TRA files have been converted to UTF-8 without boom to solve the issue with M_EET.LUA file (if the game crashed on you with non-English language than this will fix it).

     

    Known problems:
    - Fate Spirit in ToB don't acknowledge Dynaheir, Khalid and Yoshimo death if they have not been really killed during game. The dialogue checks for STATE_REALLY_DEAD - what is the best way to give them this state? The easiest way would be using Kill("DV") but this action triggers the death scream even if they are outside party in completely different area...
    - auto biography GUI feature doesn't work with multi-class characters yet
    - HLA menu in SoD GUI uses BG2:EE GUI art. As far as I know SoD variant of the art doesn't exist. Looking for help regarding this task

    - and yeah, those SoD links still didn't make it. Soon...

×
×
  • Create New...