Jump to content

Search the Community

Showing results for tags 'BGEE'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


  • General Discussion
    • G3 News and Announcements
    • Infinity Engine Modding News
    • General Mod Discussion
    • Theorycrafting
    • Fan Fiction
    • Noobermeet
  • Modding Discussion
    • IESDP Updates and Info
    • Modding How-Tos and Tutorials
    • Modding Q&A
  • Mods and Tools
    • Tools
    • NPC Mods
    • Tweaks and Fixes
    • Item, Kit, and Spell Mods
    • Quest Mods and Other Mods
    • Miscellaneous Released Mods
    • Unreleased Projects


  • NPCs
  • Quests and Others
  • Tweaks & Fixes
  • Items/Kits/Spells
  • Portrait Packs
  • Mini Mods
  • Tools
  • In Progress


  • Fixes
  • Items
  • Kits
  • NPCs
  • Quests
  • Spells
  • Tweaks
  • Other
  • Tools

Product Groups

There are no results to display.

Find results in...

Find results that contain...

Date Created

  • Start


Last Updated

  • Start


Filter by number of...


  • Start




Website URL









Mods Worked On

  1. While I've got this all coded, I wanted to write it all out while I decide how to organize and integrate this into the existing fixes. I'll add a commit link when I do. edit: committed The broad strokes BGEE dialogues suffer from three systematic problems, traceable back to their oBG roots: If a creature didn't have anything to say in the oBG engine, it would play one of their common selection sounds. In BG2 (and EEs) you get a 'X has nothing to say to you' error message. oBG didn't have LOCALS-scoped variables, so many dialogues rely on triggers that track how many times they've spoken (NumberOfTimesTalkedTo, or NTTT triggers) Most oBG creatures have special dialogues for when they're charmed We've run into #1 a couple of times already (Oberan and Glanmarie or Tiax) and the general solution has been to simply copy in their common selection sounds into the dialogue proper to avoid the error message. #2 isn't really a problem on its own, but combined with #3, it can potentially break a lot of stuff. Many quest NPCs give their quest the very first time you speak with them (when NTTT=0) with no way of coming back to it. So if your first dialogue with them is when they're charmed, you can never receive their quest since NTTT=1 (or more). Even when it's not a quest-giver, the initial dialogue is typically a longer introduction and the subsequent dialogues are either minimal (a simple greeting) or assume you received the information from the first time you spoke. I had fixed a handful of these in previous official patches (Garrick, Tranzig, Gandolorian) as they were reported. So, I had some free time and thought I'd do a review of the BGEE charmed dialogues, thinking I'd turn up a handful of issues, spend a couple of hours fixing them, and go on my merry way. That was a week ago: I ended reviewing over 300 dialogue files and adding fixes for about 200. Weighting The first batch is easy: charmed dialogues need to be weighted more or less at the top of the dialogue stack, otherwise you would charm the creature and get one of their normal dialogues. Only a handful of things should be weighted higher, like post-cutscene dialogues or other high-priority dialogues. This affected about 100 dialogues: Preserving NumberOfTimesTalkedTo (NTTT) Triggers For previous fixes, I had swapped out NTTT triggers for local variables. However, I found an easier way that required a lot fewer changes: if a dialogue has a NTTT=0 trigger, then have the charmed dialogue check if NTTT=0 and set NTTT=0 manually to prevent the counter from incrementing, and otherwise letting it increment normally. The upside is that triggers for all non-charmed dialogues are preserved (which makes life easier for mods) and eliminates the need for major script changes. This was done semi-automatically for about 170 dialogues: Fixing 'X has nothing to say to you' While this wasn't a focus of the review, I found about 50 of these anyway and fixed them. The creature's common selection sounds were added to their dialogue as a base state, similar to the existing fixes for Tiax et al. Additional fixes In the course of reviewing these, I found other errors in the dialogues to be fixed: Zelma (SoD) can be charmed to get your money back. In the gap between getting it back and the charm wearing off, she had nothing to say. (bdzelma.dlg) Be'land's charmed dialogue says you can enjoy the museum for free, but was not setting the variable to stop him from soliciting the entrance fee once the charm expired (beland.dlg) Multiple charmed dialogues could re-open journal entries for completed quests: Brandilar - Investigating the Merchants' League Estate (brandi.dlg), Flaming Fist Enforcer - Afoul of the Law (ffhunt.dlg), Harbor Master - Investigating the Iron Throne (harbor.dlg), two Beregost commoners - The Wizard's School (mtbe2.dlg, mtbe6.dlg) Delainy/Durlyle have two dialogues, one for their appearance in the village and a second one if they help you escape. The first one had a charmed dialogue that would reveal the secret of the village too early and has been disabled. The same charmed dialogue is still available in their second appearance where it's appropriate. (delainy1.dlg, durlyle1.dlg) The Flaming Fist Enforcer hassling the party south of Beregost has two flunkies. If he peacefully leaves, they should leave with him. (flam5.dlg) One of the commoners in Beregost (ar3316) calls the guards, but no guards were actually appearing. (ftobe4.dlg) Several charmed dialogues have the charmed NPC giving the party something. In most of them, they would check to make sure they had the item in question first, but two were missed. (ftobe5.dlg, nobl8.dlg) A few dialogues would blindly hand off dialogue to another NPC nearby without bothering to check if that NPC was actually available for dialogue, e.g. Marl and Dunkin, Helshara and Ithmeera, and others. This would cause the dialogue to exit abruptly on a 'Continue' button. Appropriate checks have been added, and the dialogue now cleanly exits. (helsha.dlg, ithmee.dlg, housg1.dlg, marl.bcs, marl.dlg, mtown2.dlg, nobl4.dlg) If Hentold gives the party his dagger while charmed, his normal dialogue would assume he still had it and he'd continue to try and give it to you. These dialogues now check if he has the dagger first. (hentol.dlg) One of the shared dialogues for Nashkel commoners has 13 random replies. However, one of them is closed when the Brage quest ends, giving a 1/13 chance of 'X has nothing to say'. One of the other 12 lines will now appear under this circumstance. (mtowna.dlg) The six diggers at the archaeological site all share one common dialogue, and have the 'X has nothing to say' bug. This couldn't be fixed the conventional way (grabbing common selection sounds) because they have different soundsets. In addition, they have five lines that play in sequence based off of NTTT triggers. This means that if you speak to each miner, you'll get the same line six times and will only see the other lines if you speak to one of them five times. To address both if these, these five lines are weighted randomly so that they'll always have something to say, and to make it substantially less obvious that they're using the same dialogue. (digger.dlg) Several commoners in BG use a shared dialogue; prior to chapter seven there are nine possible lines. Once chapter seven hits, they change to three, but they all have the same trigger so only one could play. Based on other commoner dialogues and the lines themselves, it looks like these three lines should depend on the party reputation, and the appropriate triggers have been added. (ftowba.dlg) The shared, generic Nashkel miner dialogues had two lines for the miners outside before you speak to Emerson, but they were weighted so low you could never see them (minern.dlg) Other changes Given that dialogues could now preserve NTTT values, a few scripts had to be adjusted to check if the creature was charmed before trying to initiate dialogue, otherwise script loops could occur. (alora.bcs, bandic.bcs, centeol.bcs, davaeorn.bcs, flam2.bcs, flam7.bcs, initdlg.bcs, marl.bcs, monken.bcs, prat.bcs, ramazith.bcs, rieltar.bcs, shoutdlg.bcs, sil.bcs, yago.bcs) A few creatures needed script names assigned to facilitate other fixes. (farm4.cre, housg1.cre, housg2.cre) A few creatures had unique dialogues available, but not assigned. (ftobe7.cre, mtob4.cre, mtob5.cre, read4.cre) Unfinished business Pinging @AstroBryGuy for this section. Outside of the creatures being assigned their dialogues (last bullet in previous section) none of the following are being included in EEFP. It's been a while since I delved into BG1UB so apologies if these are already known and/or implemented: There's dialogue for an unused server, friwen.dlg, who should be at the FAI. The creature friwen.cre is assigned the BG-appropriate serwen.dlg and appears in the Elfsong and Blushing Mermaid, despite an unused serwen.cre being available. Suggest that friwen.cre and serwen.cre get assigned their namesake dialogues, swap the friwen.cre at the Blushing Mermaid and Elfsong for serwen.cre, and add friwen.cre to the FAI. ssungu.dlg appears to be a dialogue for a guard outside the Seven Suns. You can ask for Jhasso and possibly get moved to a basement where the guard is commanded by Jhasso-doppleganger to kill the party. I think. volose.cre is a serving wench who appears after Volo leaves, trying to get the party to pay Volo's tab since Volo skipped paying. She can potentially turn the bouncer hostile. wilton.dlg appears to be someone who appears after you help Farmer Brun, and gives you a Cloak of Displacement as a reward. banmer.dlg appears to be a merchant who gets attacked by the party. The party is posing as bandits (seems to be part of getting accepted into the bandit group to reach the bandit camp) and you can peacefully "rob" the merchants, or actually do it. mtob6.dlg is a commoner who's gambling, who seems to trip a warning global to... do something. Galteran (mtbe6,cre using mtbe6.dlg) seems to have an unassigned script (mtowbe6.bcs) where he will call the guards or attack after a brief interlude. mtob4.cre and mtob5.cre had their unique dialogues assigned (last bullet point in previous section) but the creature files themselves are unused. From the dialogue, mtob4.cre should be placed alone in a room at the Splurging Sturgeon, and motb5.cre placed somewhere in the Elfsong.
  2. In one of the early threads, CamDawg said this: "One thing we can put on the podium alongside death and taxes, though: bugs in Jaheira's romance." I'll add shapeshifting bugs to that. 2.6 fixed many things, particularly crash bugs. It also left many other problems alone and even added new ones. I put a component for this in my tweak mod, so I'll post what I found here. Voluntary shapeshifting only, at least in this post. Also, I only have BGEE and BG2EE; I can't speak to other games. - (Not a bug, just annoying) BGEE and BG2EE use different architecture; BGEE attaches the polymorph effect to the transformation spell/ability, while BG2EE attaches it to the creature weapon. As such, any fixes will need different code for each game. The BGEE versions are technically temporary at 500 days, probably because a true permanent duration wouldn't revert after death and resurrection. - In BG2EE, the creature weapons have the "Forbid off-hand" flag set. In BGEE, they don't. They really should have it in all games; without, you can dual-wield with a manufactured weapon without penalty. - (BGEE and BG2EE) Druid wolf shapeshift doesn't match description. Description says 15 strength/18 dexterity (PLYWOLF.CRE), actual effect is 18 strength/17 dexterity (WOLFCHAR). The mage wolf polymorph is PLYWOLF with a +1 damage bonus, so that's what I went with in my version. - (BGEE and BG2EE) Many shapeshifts get +N damage bonuses, which aren't reflected in the spell/ability descriptions. Mage wolf forms (+1), mage and druid bear forms (+1), avenger wyvern form (+2), avenger fire salamander form (+3), shapeshifter werewolf form (+2), mage ogre form (+1), mage spider form (+1) - (BGEE) Shapeshifter greater werewolf form lacks the regeneration effect added in BG2EE 2.6. Not relevant in the standard rules, but the item and ability support is there. - (BG2EE) Druid "Shapeshift: Black Bear" turns you into a brown bear. "Shapeshift: Brown Bear" turns you into a black bear. This one's new in 2.6. - (BG2EE) Mage "Shapeshift: Black Bear" and Shapeshift: Brown Bear" both turn you into a black bear. - (BG2EE) Mage ogre form's weapon isn't flagged as magical (as it is in BGEE). - (BG2EE) "Shapeshift: Greater Werewolf" now grants regeneration as of 2.6 (1 per 2 seconds or 3 per round), but the description doesn't mention it. - (BG2EE) Druid high-level shapeshifts list their duration as "1 hour". They're actually permanent until dismissed, like the other druid shapeshifts. - (BG2EE) Shapechange forms that grant higher levels of weapon immunity don't include the lower immunity levels and scripting states standard on weapon immunity effects. For example, the elemental forms have weapon immunity with maximum level 2. IMMUNE3 also has weapon immunity with maximum level 1, weapon immunity to non-magical, scripting state 25, and one star in proficiency 128. Anything that keys off those effects (such as, for example, the SCS Insect Plague tweak looking for normal weapon immunity) won't react to these forms properly. - (BG2EE) Iron Golem form lacks most of the immunities its description says it has. The description says "backstab, weapons of +2 immunity or less, sleep, fear, hold, charm, paralysis, poison". Of that list, you only get backstab immunity. Some shapeshift abilities mention what their weapon hits as, some doesn't. In the component I wrote, I edited the descriptions so that all of them did. For the sheer WTF factor, it's hard to top the bear swap. Just ... how did that sneak in?
  3. Apparently it seems if you wield a weapon in the off hand, the game will interpret it as it didn't exist as far as weapon styles go. I noticed this because the critical hit bonus from one handed style still applies even if wielding a weapon in the off hand. Not sure how that would interact with other mods that change styles such as Scales of Balance (or was it Might and Guile?). Is it fixable?
  4. The IWDEE version of Unholy Blight is described as giving -2 to saves, attack rolls, and damage rolls. The actual spell grants -2 to saves, attack rolls, and AC. I'm inclined to think that the description (which goes back to oIWD) is correct and the spell should be changed to fit. The BGxEE version of Unholy Blight describes itself as giving -2 to 'all rolls' but doesn't reduce damage. That's more borderline. The IWDEE version displays the string 'weakened' but doesn't display an icon, contra the normal principle that any effect on the character is labelled by an icon. There is, however, no 'weakened' icon iirc. One could use the 'enfeebled' icon, or clone that icon to a new 'weakened' icon. The BGxEE version neither displays a string nor provides an icon: it just silently weakens the character. Incidentally, I think extant FP code already rebuilds BGxEE's Unholy Blight to work IWD-style rather than through a pile of 177s, so any fixes here need to go after that.
  5. Does this mean that BG cure / cause wounds spells / abilities should match their IWD counterparts (i.e., they should not affect unnatural creatures)...? Spell description specifically states that "This healing cannot affect creatures without corporeal bodies, nor can it cure wounds of creatures not living or of extraplanar origin." The most noticeable in-game effect would be that the player will no longer be able to heal NPCs such as Haer'Dalis or Caelar... Not much of an issue, right...?
  6. Since I've already stolen everything I can from IWDification, IWD Fixpack, and BG2 Fixpack, I'm moving on to jmerry's Tweaks. With permission from @jmerry, I'm incorporating any fixes we haven't already nabbed. Stuff we had fixed already and/or is no longer relevant: Wilson's strength doesn't stack indefinitely Vernus can be raised Fix Black Pits oversights Joinable NPCs don't have null kits Close polymorph immunity loopholes [multiple commits from Luke] Shapeshift corrections [multiple commits from Luke] Hold Person doesn't display multiple strings [offending eff no longer used due to 318/324 filtering] Nature's Beauty blindness can be cured [already fixed by Luke] In progress: Enchant Weapon works in contingencies NPCs don't go in inaccessible locations Wish Hardiness doesn't stack with itself Barbarian Rage blocks cosmetic strings Dueling fireshields don't go infinite Standardize Wand of Missiles Next on the list: review fixes from DavidW in SCS, and various fixes from EET.
  7. This will be a bit complicated one. At this point, if a player rebuilds the same spell mod changes between BG1EE and BG2EE, they can continue characters between the games without problems. However, SoD adds a few additional spells (and even hide a few in hidespl.2da) which don't overlap with IWDification, and only partially overlap with SR, partially breaking the spell incdices between the two games. This can lead to an unsuspecting player exporting his say, SoD+IWD spells druid from the game with, just for example, two Sunscorches memorized, import it to BG2EE (which also only has the IWDification spells installed as additional ones) and end up with dummy spells because the SoD-added Fairie Fire is missing among the L1 priest spells and the Sunscorch (which is supposed to be last spell added IIRC) ends up having a smaller index and the imported character ends up with two spell slots occupied with spells they can't unmemorize. IMO the issue belongs to the Fixpack somewhat because modders cannot assume things here reliably and I would suggest to just install and hide the SoD spells to ensure consistency in SPELL.IDS among the games, but I am also interested in how others see this problem. (This is fairly commonplace, Bubb cleared out a savegame last month and this morning someone ran into this on Reddit as well).
  8. [Edit] I've changed part of the title of this thread from "RASAAD.BCS and/or RASAADJ.DLG" to "Being eligible for the Rasaad romance can break his entire questline". If this bug is present in the latest patch (it is present in v2.6.5 and reproducible in just a few minutes), then I'm pretty sure any community defined as "people who play Baldur's Gate" would be far more keen to have the bug fixed than much of the minutiae discussed in relation to the EE Fixpack. I mentioned below that a Beamdog forum user had either the same or a very similar bug, and that I was waiting for them to confirm which patch they had installed. I can clarify that the Beamdog forum user did not post again, so I have no more information to add. I can clarify also that I have no intention of doing anything further with this bug. In the event that this bug was already fixed, that's great, but I suspect most people who go to the trouble of writing a 1600-word step-by-step bug report, covering every single relevant variable, script block, dialogue state and response, would probably still appreciate the acknowledgement of being told that the bug is no longer an issue. [/Edit] There is a bug with Rasaad in BG:EE v2.6.5. More importantly, it seems that either the bug remains in BG:EE v2.6.6, or BG:EE v2.6.6 contains a very similar bug. I don't have v2.6.6 installed at present to check. However, a user over on the Beamdog forums encountered a problem that is very similar, yet different, which I can't explain by reference to v2.6.5 (even after looking at their save game). It seemed that the Beamdog forum user has v2.6.6, although I'm waiting for them to clarify if this is the case. BG:EE v2.6.5 Bug Current Behaviour A Good-aligned female Player1 that recruits Rasaad and (1) kicks him out of the party after his first quest talk, but before his first romance talk; and (2) has Rasaad rejoin the party at least 7 days after his first quest talk; will find that the Dark Moon Monk ambush in AR1200 (BG South) that kicks off the action in Rasaad's quest will never trigger. Expected Behaviour A Good-aligned female Player1 that recruits Rasaad should (1) get the first quest talk 1 day after first recruitment; (2) get the first romance talk 4 days after first recruitment; (3) get the second quest talk 7 days after the first quest talk; (4) get the Dark Moon Monk ambush 2 days after the second quest talk (when in AR1200 (BG South) with Entillis Fulsom not in visual range of Rasaad). Bug Reproduction 5 script blocks in RASAAD.BCS contribute in some way to this bug. As the 5 script blocks occur one after another, I will identify only the line numbers of the start of the first block (102) and the end of the last block (163). The ordering of these blocks is relevant to the bug, so I will refer to these blocks as Blocks 1-5, with Block 1 being nearest to the top of RASAAD.BCS. Bug Fix There are a number of different ways to fix the problem. I don't know what is best practice, but I suspect adding an extra condition to a top-level dialogue state would probably be favoured as the least destructive fix. Therefore, in RASAADJ.DLG, for State 69, add the following line to the state trigger: !Global("RASAAD_ROMANCE","GLOBAL",1) Result of Bug Fix BG:EE v2.6.6 Bug I would rather chew through my own arm than laboriously reproduce the step-by-step process above. At this point, noting the similarities should suffice.
  9. Please feel free to put any scripting issues in here. I'm happy to look into any that people feel need to be addressed. @CamDawg please feel free to delete if you prefer a separate thread for each on.
  10. From this thread. Line 109 in splprot.2da does a bitwise equality check for kit ID. I'm reasonably sure (though I'll defer to Cam or someone else with inside info) that this is a mistake from IWDEE development: I can't think of any reason to check kit ID bitwise, and 109 occurs in the middle of a long list of generic checks and directly below a line that correctly uses a bitwise check. That splprot entry is not actually used by any spl, itm or eff file in any of BG2EE, SoD/BGEE or IWDEE. This is obviously a very low-stakes issue. The case for changing it is that the current entry is useless and wastes space in splprot.2da, it risks tripping up modders (it tripped up the OP in the thread I link to above) and it's probably technically a bug according to the dev-intent definition. The case against is that it's harmless in the unmodded game, space is not exactly at a premium in splprot.2da, and if you're using splprot in your mods you should probably know what you're doing. I have no very strong preference here; I'm listing it mostly out of curiosity, in case there's some very arcane reason to do a bitwise kitids check that I haven't been able to think of.
  11. Just some minor things noticed. Didn't see this from a quick search. These won't cause issues if left unchanged, but I also don't see a reason not to make these fixes. BGEE/BG2EE/PSTEE: 57 EigthNearestEnemyOfType 57 EighthNearestEnemyOfType 67 EigthNearestMyGroupOfType 67 EighthNearestMyGroupOfType - double lines for 57 and 67 - no scripts in the base games use the typo versions. Can safely delete. IWDEE: 57 EigthNearestEnemyOfType 67 EigthNearestMyGroupOfType - no scripts in the base game use these. Can be changed to correct spelling. These lines are missing from the IWDEE file. I've tested a few of them and they work. BGEE/BG2EE/PSTEE already have these lines, so I don't see a reason for IWDEE to not have them: 94 LastKilled 95 NearestAllyOf 96 SecondNearestAllyOf 97 ThirdNearestAllyOf 98 FourthNearestAllyOf 99 FifthNearestAllyOf 100 SixthNearestAllyOf 101 SeventhNearestAllyOf 102 EighthNearestAllyOf 103 NinthNearestAllyOf 104 TenthNearestAllyOf 105 FarthestEnemyOf 106 SecondFarthestEnemyOf 107 ThirdFarthestEnemyOf 108 FourthFarthestEnemyOf 109 FifthFarthestEnemyOf 110 SixthFarthestEnemyOf 111 SeventhFarthestEnemyOf 112 EighthFarthestEnemyOf 113 NinthFarthestEnemyOf 114 TenthFarthestEnemyOf I've attached a fixed object.ids file: OBJECT.zip Or you can use something like this to patch the file, in case someone installs it after EEex (which adds new lines):
  12. Hello Everyone, During the development of a mod project some irregularities appeared... Maybe some of them are already know... Item: RODSWORD (BG2EE) The opcode 109 (paralysis) is duplicated in the combat abilities. Item: SHLD09P (BG1EE) An opcode 62 has a value of 3 (1 additional level 1 and 2 spell) instead of 4 (1 additional level 3 spell) I recently saw on the G3 discord, a conversation between @CamDawg and @morpheus562 about "Firetooth"... It seems that : (the following applies to all weapons with unlimited ammunition) Used without ammo, Firetooth uses the ranged header. Used with ammo, Firetooth uses the ranged header too. All of the damage, to-hit bonuses and effects are defined in ranged header. For IESDP : - Opcode 1, Type 3 : IESDP : Only functions when using Timing Modes 2/5/8 (even in SPLs). ... True but... Its effect is the one of type 1 if from an EFF file (opcode 177, 283) or if timing is 1 Type 3 is not cumulative, if an effect of this type is already in progress, the next one will have no effect... - Opcode 18, Type 6 IESDP : 6 ⟶ Non-cumulative Modifier: HP = HP + 'Statistic Modifier' value (affects current and max HP) (EE only) ...Observed... Cumulative, incompatibilities are eventually made with opcode 12, but used directly, its effect is strictly identical to that of type 0, thus cumulative - For Opcode 42 and 62, Spell Level 512 is missing It allows to double the number of spell slots exclusively for the spell level specified in Slot Amount Modify If you have any questions or comments, I will pass them on to Selphira and Rivvers, the modders who spotted these issues... Thanks for your work on the EE fixpack !
  13. I've spotted a couple of spells that have wrong projectiles in BGEE 2.6: Hell Hound Flame Breath (SPIN956, HELL_HOUND_FLAME) and mephit Flame Fan (SPIN938, MEPHIT_FLAME_FAN). The former isn't used in the standard campaign as far as I can tell, but the latter comes up in both SoD and the Black Pits from Fire Mephits. These spells use projectile OneTarget_Range_07 in BGEE 2.6, while they use Burning_Hands_New in BG2EE 2.6. Both of these projectiles were newly created for patch 2.6. In BGEE/BG2EE 2.5, Flame Fan used the Aganazzar's Scorcher projectile and Hell Hound Flame Breath used the Burning Hands projectile. Obviously, these fire abilities should have projectiles with visible fire; the invisible fireshield projectile is clearly wrong. I'm inclined to go with the new AoE Burning Hands projectile as they currently have in BG2EE. Note also that projectile numbering differs between BGEE and BG2EE due to the presence of SoD, so we can't just copy the number - reference MISSILE.IDS for correct numbering. (I spotted this one due to my work on the dueling fireshield bug. These two spells showed up as false positives when searching for the projectiles, so I looked closer at them and found this.)
  14. When I was first thinking about doing this project @jastey sent me some issues she found while working on SoD. Forgive the formatting, as this is essentially copied from Discord: And then a followup:
  15. There are several instances where variables in the LOCALS scope are used in scripts assigned to map regions, containers and doors (not counting those in ActionOverride/TriggerOverride). Since LOCALS don't work correctly in these cases (ie. always return false), it would be a good idea to check whether they are causing scripting issues. Otherwise, they could be safely removed. I have found the following scripts so far: IWDEE: EETPLDOR.BCS (door script) D4DOORT.BCS (door script) D4DOORG.BCS (door script) D4GELDOR.BCS (door script) D5DOOR.BCS (door script) D5YXUDOR.BCS (door script) 5104D3.BCS (door script) UDTRAP1.BCS (region script) WTBRIDGE.BCS (region script) LDEYETP1.BCS (region script) LDEYETP2.BCS (region script) LDBDGOPN.BCS (door script) BGEE: BDMENHI1.BCS (region script) BDMENHI4.BCS (region script) NETRIG1.BCS (region script) BG2EE: OHBPOT.BCS (container script) PSTEE: 1204TRIG.BCS (region script)
  16. The EE Mod Setup Tool (for windows) Overwiew EET installs get more complex now that more and diverse mods are available to enhance the basic game. K4thos, the EET author recommended BWS for save installs when he started the project. However, original BWS has lost the supporters it had in the past and slowly decayed. This tool is aiming to provide similar functionality to mod EE games in large scale. The BWS-EE is a fork from Big World Setup (BWS old) which was originally created by dabus. BWS-EE is streamlined to serve EE game installations in a way that is up-to-date and maintainable still. While the tool was mainly intended to support EET, it also can be used to mod other EE games as listed below. Features: - assistance for creating your own customized game with any number of mods - downloading current versions of selected mods - easy mod installation for EET - correct install order of mods/components - merges SoD DLC with BGEE if needed - handle mod and components conflicts and dependencies - apply interim fixes when needed. - use players' tested compilations - save your own compilations for re-use or sharing Supported games: - Baldur's Gate: Enhanced Edition (standalone game) - Baldur's Gate II: Enhanced Edition (standalone game) - Enhanced Edition Trilogy EET( BG1:EE + SoD + BG2:EE ) - Planescape: Torment Enhanced Edition - Icewind Dale: Enhanced Edition Supported mods - All actively maintained or properly completed ones! (make a pull request if there is a mod you want added) DOWNLOAD Mod requests : Create a pull request https://github.com/EE-Mod-Setup/EE-Mod-Setup or post a request at: Support https://baldursextendedworld.com/Install-Tool/ Changelog https://github.com/EE-Mod-Setup/EE-Mod-Setup/commits/master
  17. Version 0.9-alpha


    This mod is a collection of class, skill, proficiency, and stat updates. This is an alpha release with the intention of adding more class, skill, and stat updates in the near future while further refining the new proficiencies that are being added. Yes, these are actual, functional, useable, proficiencies that can be assinged on the character creation and level up screens. Yes, eekeeper can recognize and adjust these proficiencies for characters. Yes, I am intimately familiar with the limited resources in the game, and no detectable spells were harmed in the making of this mod. Some components require EEex to work, and those are identified with (EEex Required). Project page Readme Forum
  18. I'll create a thread here for things I've seen that seem too small to deserve their own thread.
  19. Causes an infinite loop. Apparently the originals did not, it is purportedly an EE-introduced bug.
  20. This started as a simple dive into the spinny head animations not going away when the underlying effect went away, e.g. Remove Paralysis would cure a character from hold, but the animation would continue. As I went along I found and fixed other issues and expanded the scope of the fix to handle any 'cure' stopping any associated effects--such as expiration sounds, visuals (the aforementioned spinny head animations), or other stuff that wasn't removed by the 'cure' directly. To be specific, effects which have 'cures' that are covered by this fix are: berserk, blindness, confusion, deafness, disease, fear, feeblemind, hold/paralyze (these are separate effects but cured by the same opcode), intoxication, invisibility, level drain, non-detection, pause (making a character stand in place; easiest example is Burning Hands forcing the caster to stand still for two seconds), poison, silence, sleep, and stun. Since the original thread has devolved into a stream-of-consciousness crossed with a disorganized dev diary, I thought I'd reset and try to make everything as clear as I can. The broad strokes of the fix The spinny head animation is used by numerous effects: hold, fear, stun, feeblemind, and some psionics. Behind the scenes, some of these were different resources, so you could tailor them, e.g. if you were immune to fear you could block the fear-specific animation while still allowing the hold-specific animation to play if you were held. Originally there were only unique animations for psionics and hold, BG2FP added one for fear, and now EEFP is adding them for stun and feeblemind. This allows us to target specific animations for immunities and cures, e.g. curing feeblemind will remove the feeblemind-specific animation but not one playing from a stun. While the visuals were the most obvious part of the problem, there was a host of other issues that emerged as you looked closer. We had already fixed one example, but there were all sorts of effects tied in. If you were hit by the cleric Poison spell, the poison would be cured by drinking an antidote but you would still get the normal expiration sound and a color glow on your character until the spell would normally expire. So the basic idea is that, rather than just curing poison (using the dedicated cure poison opcode) it would be paired with other effects that would explicitly remove everything from items or spells with these kinds of lingering effects. This, in turn, presents a new problem: many spells and items have multiple effects that are independent of one another. Take the attack of a ghast as an example: when struck by a ghast, the target can be paralyzed (save vs. death or paralyzed for 42 seconds) and nauseated (save vs. breath or get a -2 to-hit penalty for 200 seconds). Using Remove Paralysis on the target of a ghast should remove the paralyzation, but not the effects of the nausea. This, in turn, necessitated a deep dive into a lot of effects to try and sort out what is related and what's not--I've used my judgment on the first pass of these, but I expect we should discuss them in detail. I'll delineate changes below. I'll go ahead and stipulate up front that some of this is purely academic: no level drain effect has a lingering effect that needs to be explicitly removed, and there are few (if any) spells that actually cure things like pause or nondetection. Nonetheless the framework is built for all of these effects to provide a consistent approach for future developments and mods. Fixes along the way During this deep dive i inevitably found other issues. I'm just going to list them here--while I think these are pretty straightforward fixes, like all things in EEFP, we welcome an objection or discussion if you disagree: [bg, bg2, iwd] Several creatures and items immune to confusion could still play the confusion animation. Similar issues existed for fear and hold. Also found a few instances of the reverse (hold animation blocked even though the creature can be held)--in this case the animation should play and the blocking effect is removed. [bg, bg2, iwd] Several permanent effects had durations set. This is fixed, though this is not a bug visible to players. [bg2] Two Anti-Paladins were supposed to be immune to fear, but an error was preventing it [bg2] The Blackmist halberd played two sounds immediately when he blind ability was used, but one of those sounds is supposed to be the expiration sound [bg2] Some sirines had an attack that dropped the target's intelligence to 3 and used the feeblemind portrait icon. However, the effect is not strictly a feeblemind and cannot be cured by the normal feeblemind cures. To clarify this for players, it now uses a more generic 'ability score drained' icon. [bg2] A different sirine attack caused actual feebelmind, but also had a redundant effect to set intelligence to 3. This could result in the player curing the feeblemind but still having 3 INT. As such the INT effect is removed. [bg2] The Harp of Discord causes confusion but displayed an intoxication portrait icon. [bg2] The (unused) Slayer Fear had the wrong duration for its fear portrait icon. [bg2, iwd] The drunk outcome from Wish included an intoxication icon, but it expires well before the actual intoxication. [bg2] The Wand of Glitterdust now casts the spell directly [bg, bg2, iwd] Nalmissra's attack only charmed on 50% of hits but would display the charmed icon on all of them [bg] Cutscene spells for fear and sleep had several mismatched durations [bg, bg2] Creatures who used disease to slow their target (otyughs primarily) now use the disease opcode directly to display the slow icon. This allows spells which cure disease to remove the slow icon. [bg, bg2, iwd] Elixirs of Health were setting the intoxication level to zero instead of formally curing it [iwd] The durations of the disease icon and actual disease from Chaos Dagger +3 didn't match [iwd] Siren's Yearning bard song used the spinny head animation for its stun, but altered it to a color glow like other IWD stun effects [iwd] The durations of the poison icon and actual poison from the cleric Poison spell didn't match [iwd] Petrification and feeblemind from Prismatic Spray are permanent, but the associated portrait icons could (theoretically) expire Immunity touchups A character who's immune to poison would block a direct poison effect, but may still get visuals and expiration sounds. (Half-)Elves had effects to block charm and sleep effects stretching back to the original BG2FP, and this was done a little more systematically with other effects starting in EE patch 2.5. The upshot is that the EEs use targeted immunities to prevent many of the same issues we're addressing with the cures--in the above example, these extra visuals and expiration sounds would be blocked directly by first checking the target's poison immunity. In a handful of cases, these were applied incorrectly. I've also included a few cases where I've expanded David's immunity code. Since this section includes a number of judgement calls, feel free to discuss. [bg, bg2, iwd] Related effects of Vampire Fear, Dragon Fear, fear from the Hell Trial (thac0 penalty) should be blocked for creatures immune to fear [bg, bg2, iwd] Elven charm immunity could block non-charm effects (specifically level drain) from Nalmissra's attack [bg, bg2] Poison immunity was blocking the choking noises and CON penalty from drinking the Vial of Mysterious Liquid (the ore poison) [bg] Poison immunity was blocking Belhifet's dispel-on-hit [bg] Poison immunity was blocking the 'gulp' string when using Viper's Venom [bg] Poison immunity was blocking several unrelated effects on the (unused) Viper's Edge [bg, iwd] Related effects from Great Roar (strength penalty), Ghost Fear (STR/CON penalties) and the unused Deathsong (attack... bonus?) should be blocked for creatures immune to fear [bg, bg2] Fear immunity was blocking the insect animation and spell failure icon from Insect Plague [bg] Related effects of ghoul paralyzation (expiration sound) should be blocked by the natural elven immunity to ghoul paralyzation [iwd] Poison immunity was blocking the slow effect from a mustard jelly attack [bg, bg2, iwd] Feeblemind immunity was blocking the 'gulp' string from the cursed Oil of Speed [iwd] Related effects of Hammer Arrows +1 (color glow) and Mournful Wail (expiration sound) should be blocked for creatures immune to stun [iwd] Related effects from Retribution (color glow) and jackalwere gaze (stacking prevention) should be blocked for creatures immune to sleep [iwd] Related effects from Symbol, Hopelessness and Emotion, Hopelessness (expiration sound, hopelessness icon) should be blocked for creatures immune to stun [iwd] Poison immunity was blocking the hold effect from a dart trap [iwd] Poison immunity was blocking the confusion effect from a different dart trap [bg2] Related effects from Wand of Whips (animation) should be blocked for creatures immune to hold [bg2] Related effects from Harp of Pandemonium (animation) should be blocked for creatures immune to confusion Finally, the actual cures So after a brief 1000 words or so, here we are at last. In general, a spell needs to be explicitly removed if it a) has a long-term effect (e.g. one round or more) that b) isn't cleaned up by the cure opcode directly and c) isn't the normal portrait icon associated with the effect. So something that poisons a target and uses a poison icon doesn't need special treatment, but something that poisons and has an expiration sound needs to be removed explicitly. In the list below, when a spell is removed, it means entirely--all of its bonuses and penalties--unless otherwise noted. I've omitted anything I consider routine, e.g. abilities with an expiration sound or an animation, to focus the discussion on the decision points1. [bg, bg2] Minsc's berserk (spin117.spl) is removed if berserk is cured. It was removed since it has several bonuses tied to the berserk. [bg] (unused) The attack of Brood Gibberlings (bdgibbbr.itm) is removed if disease is cured. It was removed since it has a sleep effect that goes into effect (permanently) after the disease expires (same save). [bg] The fear part of Dragon Fear (bddragg2.spl > bddraggf.spl) is removed if fear is cured. It was removed since the fear effect includes a thac0 penalty (same save, duration). There are also fatigue effects, but they have a different save and duration and are not removed by curing fear. [bg] Ghost Fear (bdgfear.spl) is removed if fear is cured. It was removed since it has a CON and STR penalty tied to the fear (same save, duration). [bg, bg2] Vampire Fear (spin882.spl), Demon Fear (spin890.spl), Dragon Fear (spin895.spl), Lich Fear (spin536.spl), and fear from the Hell Trial (spin772.spl) are removed if fear is cured. They were removed since the fear effect includes a thac0 penalty (same save, duration). [bg, bg2, iwd] The unused Deathsong (spin921.spl) is removed if fear is cured. It was removed since it has a school protection and damage bonus. [bg, bg2, iwd] The cursed Oil of Speed (potn23.itm) is removed if feeblemind is cured. It was removed since it uses a confusion icon with the feeblemind (the confusion icon seems correct as the potion provides 'you have been cursed with confusion' as feedback). [bg, bg2, iwd] The Conjure (Lesser) Elemental spells (spwi516.spl, spwi520.spl, spwi521.spl, spwi620.spl, spwi621.spl, spwi622.spl) are removed if pause is cured. They are removed since they have an accompanying Mortal Kombat Mental Combat icon. [bg, bg2] Various abilities--green slime attacks (jellgr1.itm), Cursed Scroll of Ailment (scrl17.itm), vortex spider attack (spidvo01.itm), unused acidooz4.itm and senspi.itm--are removed if poison is cured. They are removed since they also have an instant-kill effect related to the poison. [bg] Venom Spit (bdvenoms.spl) is removed if poison is cured. It was removed since it has blindness tied to the poison (same save, duration). [bg, bg2, iwd] Dolorous Decay (sppr611.spl) is removed if poison is cured. It was removed since it has a slow effect. [bg, bg2] Blizzard troll attacks (icetrl.itm) cause stun and a DEX penalty. The DEX penalty is not affected if you cure stun as it uses a separate save and duration. [bg2] Wand of Whips (ohnwand1.spl) is removed if hold is cured. It was removed since it has a whole bunch of other effects used to make it continue to try and re-apply the hold effect. [bg2] The unused Dark Taint (bhaal2b.spl) is removed if poison is cured. It was removed since it has a slow effect. [bg2] Ixil's Spike +6 (sper12.itm) is removed if sleep is cured. The item uses sleep as its 'pinned' effect, which also means you receive extra damage--it didn't seem to make sense to me that you'd receive damage if you were up and about instead of pinned. (Alternatively we could pair this with a zero-movement effect like the Bigby spells, or something else entirely.) [iwd] Blood Rage (sppr422.spl) and Animal Rage (sppr522.spl, sppr522b.spl) are removed if berserk is cured. They were removed since there are several bonuses tied to the berserk. [iwd] Great Roar (spin119.spl) is removed if fear is cured. It was removed since it has an attached STR penalty (same save, duration). [iwd] Symbol, Hopelessness (sppr716.spl) and Emotion, Hopelessness (spwi411.spl) are removed if stun is cured. They were removed since they use a Hopelessness portrait icon. Various short-term sleep-related effects are not removed by curing sleep, primarily when they were coupled with a knockback such as a wing buffet or earthquake. The 'sleep' itself (usually only a few seconds) is still cured. Technical wankery This section is technical wankery; I'm writing it now to save time when I have to write documentation for EEFP as a whole and documentation for modders tapping into the new system. Players are welcome to skip this. The end result is fairly simple: for abilities which cure something, you insert a spell cast of the relevant cure spell instead of using the cure opcode directly, e.g. cast #curepsn.spl via opcode 146 instead of using opcode 11. If you have an ability with non-standard effects--for example a poison that also kills its target--then you add a 321 for it to the cure spell. If it's a normal poison (poison opcode and icon) then these are handled already and nothing needs to be added. All 'cure' spells are named #cureXXX with the following variants: ber (cure berserk, op 4), bld (cure blind, op 75), con (cure confusion, op 242), def (cure deaf, op 81), dis (cure disease, op 79), drk (cure drunk, op 164), fer (cure fear, op 161), fbm (cure feeblemind, op 77), hol (cure hold and paralyze, op 162), inv (cure invisibility, op 47 or 116), ldr (cure level drain, op 224), ndt (cure nondetection, op 70), pse (cure pause, op 270), psn (cure poison, op 11), sil (cure silence, op 48), slp (cure sleep, op 2), and stn (cure stun, op 46). The following items and spells were broken into subspells so that they could be blocked/cured by the relevant effects. This was only done when a) the effect being cured had other long-term effects--animation or expiration sound, but not the normal portrait icon since those were removed via opcode 240--and b) had unrelated effects which should not be removed, e.g. a confusion cure shouldn't affect an unrelated poison effect. [bg, bg2, iwd] Insanity Gaze (insanity.spl) is broken into a confusion (insanitc) subspell and a feeblemind (insanitf) subspell [bg, bg2, iwd] The hold part of bounty hunter special snares (spcl415.spl) is broken out into a new subspell (spcl415h). [bg] Piercing Shriek (bdshriek.spl) was broken into subspells for confusion (bdshriec), deafness (bdshried), and stun (bdshries) [bg, bg2, iwd] Chromatic Orb (spdr101.spl, spwi118.spl), with its plethora of level-specific effects, is broken into multiple subspells. The exact number depends on the game, and the filename of the subspell depends on which header of the original Orb its from (level 1 blind is spwi118a, level 4 blind is spwi118d.spl). [bg, bg2, iwd] The bits of Moondog Howl (spin891.spl) that target evil characters have been broken into a subspell (spin891a). The associated effs (moondog, moondX) are no longer needed. [bg, bg2, iwd] The paralysis from various undead attacks (ghast1.itm, ghoullor.itm, lacedo.itm, lacedo.itm) are moved into subspells (ghoullop.spl for ghoullor.itm, ghast1p.spl for the rest due to differing durations). [bg, bg2, iwd] The sleep (bg, bg2) or stun (iwd) effects from Emotion, Hopelessness are moved to a subspell (spwi411b). [bg, bg2, iwd] Blizzard troll attacks (icetrl.itm) use a subspell (icetrlst) for their stun. [bg] The fear part (including thac0 penalty) of Dragon Fear (bddragg2.spl) is moved to a subspell (bddraggf) to separate it from the unrelated fatigue effects [iwd] Cornugon attacks (sflail.itm) use a subspell (sflailst) for their stun. [iwd] A dart trap (spwi028.spl) uses a subspell for its hold effect (spwi028h) [iwd] A different dart trap (spwi029.spl) uses a subspell for its confusion effect (spwi029c) [iwd] Great Shout was already broken up into three subspells for its deaf (dwfpgs01), stun (dwfpgs02), and kill (dwfpgs03) effects 1All of the 'routine' removals are available by looking in the code in eefixpack/files/tph/tbd_vfx_removal_[game].tph, for example this is the removal line for the divine Poison spell, which has an expiration sound and an ongoing color pulse.
  21. Just what the title says. Personally I feel like it should be a +2 weapon, but that's besides the point. Sword of Balduran does not have this inconsistency.
  22. Someone mentioned a scroll of Death Spell working against a Hakeashar, but the Skull of Death failing. I looked into them and found that the former uses 148 (cast spell at point) while the latter uses 146 (cast spell at creature). CamDawg mentioned that the BG2FP went through many scrolls to correct this, but other items like this might be missing.
  23. Cloak of the Lich (OHBCLCK1.ITM): "Powerful enchantments woven into it shield the wearer from all forms of death magic" Hindo's Doom +4 (SW1H71.ITM): "Immunity to all forms of death magic" Death Ward (SPPR409.SPL): "protects the target from all forms of death magic" Avoid Death (SPCL917.SPL): "the rogue becomes immune to death magic" Others anyone? The list of effects that one is immune to with those spell items (via #101) is kind of a mess (I've written them in the order found in the game files). Cloak of the Lich: 13 (kill target), 55 (slay), 209 (power word kill). Hindo's Doom +4: 13 (kill target), 55 (slay), 134 (petrification), 209 (power word kill), 238 (disintegrate) Death Ward: 13 (kill target), 55 (slay), 209 (power word kill), 238 (disintegrate) Avoid Death: 13 (kill target), 55 (slay), 134 (petrification), 238 (disintegrate), 211 (imprisonment), 216 (level drain) As you can see, it's pretty inconsistent. Cloak of the Lich lacks many effect protections compared to the others. Disintegrate seems a must. Hindo's Doom seems OKish (but petrification being there is arguable). Death Ward seems OK as well, similar to Hindo's Doom (but petrification is NOT there in this case). Avoid Death seems the most powerful one, but it's weird. It's missing Power Word: Kill protection, which is odd given that it protects against Imprisonment. It also protects against Level Drain. The protection against Imprisonment and Level Drain seems a nice touch for an HLA that only lasts 5 rounds, but it's not mentioned on the description. I'm not sure what to add, remove or change, but I'd like to hear your input on what should "death magic" be. Imprisonment it's like a permanent maze. I don't know if it counts as "death" given the special way to bring back the creature to the original state. It's only on Avoid Death. Petrification is good to have in some of the higher level utils, given that nasty stuff in high level spells can petrify (Prismatic Spray). But it's a kind of different form of death as well, and can be protected with low level things available even on early BG1. It's on Avoid Death and Hindo's Doom. Level Drain can indeed kill, but it doesn't do so instantly like the others, so we can compare it to regular damage. If Death Ward would protect against it, it would be so convenient, but it would make Negative Plain Protection useless, which lasts a lot less and it's at the same power level. It's only on Avoid Death. Disintegrate seems an obvious insta-kill, like Finger of Death. It's on all except Cloak of the Lich. Power Word: Kill is missing only on Avoid Death, so seems a no brainer that it's a bug.
  24. Version v10.4


    This mod is a collection of player AI scripts designed for use in Baldurs Gate: Enhanced Edition, Baldur's Gate II: Enhanced Edition, the Enhanced Edition Trilogy, and Icewind Dale: Enhanced Edition. With these scripts, you can focus on the fighting aspect of combat while these take care of the nuances in the background. Of note, these scripts allow easy pre-buffing of all characters with a keystroke, intelligent debuffing of enemy protections, and smart use of defensive spells and abilities. Forum Project Page Readme
  25. There is a rather subtle bug in the UI code to sort custom soundsets, present on all four of BGEE, SoD, BG2EE, IWDEE. The soundsets are sorted by the lua function compareCustomSounds (in ui.menu), which is as follows: function compareCustomSound(s1, s2) -- DEFAULT, then normal alphabetically, then AoN alphabetically (result must be strictly less than) if (s1.sound == "DEFAULT") then return s2.sound ~= "DEFAULT"; elseif (string.sub(s1.sound, 1, 4) == "BDTP") then if (string.sub(s2.sound, 1, 4) ~= "BDTP") then return false; end elseif (string.sub(s2.sound, 1, 4) == "BDTP") then return true; end return s1.sound < s2.sound; end But this doesn't quite do what it's supposed to do, at least if there are any soundsets with filenames alphabetically preceding DEFAULT. Suppose you add a soundset 'BREAKS'. Then compareCustomSound will deliver DEFAULT>BREAKS, but also BREAKS>DEFAULT. lua's table.sort algorithm demands (reasonably enough) that its sort function defines a total order, so it sulks and stops sorting the sound table, leaving a mess. (The problem occurs because although the function forces DEFAULT>anything, it doesn't force anything<DEFAULT - it just resorts to alphabetical order.) As it happens, this doesn't occur in unmodded play because the default soundsets all have names alphabetically later than DEFAULT. But it could easily occur in a mod or just if a user adds their own soundset. This version works: function compareCustomSound(s1, s2) -- DEFAULT, then normal alphabetically, then AoN alphabetically (result must be strictly less than) if (s1.sound == "DEFAULT") then return s2.sound ~= "DEFAULT"; elseif (s2.sound == "DEFAULT") then return false; elseif (string.sub(s1.sound, 1, 4) == "BDTP") then if (string.sub(s2.sound, 1, 4) ~= "BDTP") then return false; end elseif (string.sub(s2.sound, 1, 4) == "BDTP") then return true; end return s1.sound < s2.sound; end I'm about to upload a fix to the fixpack (in files/tph/dw/ui_fixes.tph).
  • Create New...