BG2 Fixpack Docs: Scripting Fixes

This documentation is complete as of Version 12 and will contain game spoilers. Fixes included in the BETA Core Fixes are listed in red.

Scripting Fixes

Common Script Fix Roundup

  • Creatures Using Incorrect Script Names or Lacking Them Entirely - Several creatures are referenced in scripts, but the references do not work due to the lack of a scripting name or the creature having an incorrect name assigned in their creature file. This fixes, for example, the multiple Brus spawn bug. (alex.cre, ar1002.bcs, baldur.bcs, bodfgt01.cre, bodfgt02.cre, brus.cre, brus2.cre, cattig01.cre, cldad.cre, ffcrowd1.cre, ffcrowd2.cre, ffcrowd3.cre, ffcrowd4.cre, ffcrowd5.cre, gerhardt.cre, guard3.cre, hobarc02.cre, kpumb01.cre, madeen.bcs, mgteos01.dlg, mddust.cre, mourner4.cre, mugger3.cre, nobl4.cre, rogtro01.cre, rskel01.cre, spidgi01.cre, swsfoll1.cre, swsfoll2.cre, swsfoll3.cre, swsfoll4.cre, swsfoll5.cre, swsfoll6.cre, toady.cre, tolger2.cre, tolmag01.cre, uddoor02.cre, vammat01.cre, vamold01.cre, wcust01.cre, wcust02.cre, wcust03.cre, wcust04.cre, wolfdi.cre)
  • Many Scripts Not Checking the Correct Creatures/Objects - In addition to variables, scripts also check the state of various creatures to ensure their dialogue is relevant, i.e. if Faldorn at the grove is dead, if Aerie is in the party, etc. Not all names refer to creatures--in the engine various triggers, doors, and other objects also get unique names for scripting. Corrections are made for scripts that refer to a githyanki in Jan's family quest (jangit01.dlg), a specific monk (cut216a.bcs), a specific nobleman (nobl4.dlg), Acton Balthis (hapip.dlg), Adratha (trgeni01.dlg), Anomen (bviconi.dlg), Aran Linvail (ar0329.bcs, cut41d.bcs), Atta (uhmay01.dlg), Balthazar (amwenc01.dlg), Bene (sppain.dlg), Booter (arnboy01.dlg), Cyrando (cadril.bcs, garrick.dlg, tcadril.dlg), Deirex (rumoru.dlg), Drizzt (c6arkan.bcs, c6eric.bcs), Erlin Hendrick (gemfar01.dlg), Faldorn (barl.dlg, temsup.dlg, trgeni01.dlg, trlgrd01.dlg, trmer03.dlg, trrak01.dlg), fanatics (ar1000.are), Firkraag (ar1202.bcs), Hectan (25spell.dlg), Imoen (ToB version) (aerie25j.dlg, ambar01.dlg, bazmonk.dlg, bazeye01.dlg, baerie25.dlg, bcernd25.dlg, bjahei25.dlg, fsspir2.dlg, gorimp01.dlg, haerd25j.dlg, hgnya01.dlg, hgwra01.dlg, jahei25j.dlg, jan25j.dlg, mazzy25j.dlg, sarev25a.dlg, vicon25j.dlg), Irlana (cadril.bcs, garrick.dlg, tcadril.dlg), Jaheira (cut35b.bcs, valygarj.dlg), Jermien (jugjug01.dlg), Keldorn (bedwin.dlg), Korgan (bftown3.dlg), Lady Lilith Lurraxol (trfued06.dlg), Lady Maria (peony.dlg), Lanie (clmom.dlg), Lathan (shthlt01.dlg), Lavok (player1.dlg, valygarp.dlg), Lord Feveran and Lady Diana (bnoble1.dlg, bnoble2.dlg), Lord Skarmaen Alibakkar (trfued02.dlg), Mairyn (ar1400.bcs), Mekrath (xc6elxxx.dlg), Minsc (obshal03.dlg), Rielev (imoenj.dlg), Rindus (kaypal02.dlg), Sarevok (volo.dlg), self-references from familiars (famil1.dlg, famil2.dlg, famil3.dlg, famil125.dlg, famil225.dlg, famil325.dlg), shadow fiends (ar1404.bcs), Squire Elotte (demson.dlg), the PC (mazzy.bcs, temsup.bcs), the Unseeing Eye (c6fake.dlg, keldor.dlg, xc6elxxx.dlg), Tiiro (crodru01.dlg), Tolgerias (mgteos01.dlg), Tolmas Bendelia (kpdomo01.dlg), Trax's Guard (trax.dlg), Viconia (ftown1.dlg, vicg1.dlg), Yusef (surayah.dlg)
  • Broken Dead Checks - A very common problem encountered throughout the game was the incorrect usage of triggers to detect if a creature is dead or not, typically in AI combat scripts. Because the trigger only accepts 'scripting names' (i.e. a specific creature with a unique name such as Keldorn or Bodhi) and not objects (i.e. a more flexible description such as enemy or nearest gibberling), many of these triggers were not working. In lieu of Dead(), StateCheck() is used instead against a new entry on the state list. (abazdrag.bcs, aeriex.bcs, aesgar.bcs, alarm25.bcs, amlich01.bcs, amlich02.bcs, anomx.bcs, apprenti.bcs, balmonk.bcs, beheld01.bcs, carch20b.bcs, carch30b.bcs, cassa20b.bcs, cassa20c.bcs, cbarb20b.bcs, cbard12a.bcs, cbers20b.bcs, cfigh20a.bcs, cfigh20b.bcs, cfigh30b.bcs, cfmag20b.bcs, chaldie.bcs, chalpc01.bcs, ckens20b.bcs, ckens30b.bcs, ckmag20a.bcs, ckmag20b.bcs, ckthi20b.bcs, cmacl20a.bcs, cmage20a.bcs, cmage20b.bcs, cmonk20b.bcs, cthie20a.bcs, cthie20b.bcs, dadrow5.bcs, daqdrow.bcs, deck622.bcs, degard.bcs, degard2.bcs, draconis.bcs, dragbrow.bcs, draggre2.bcs, draggree.bcs, dragsilv.bcs, dwvith.bcs, edwin.bcs, eltan.bcs, enforam.bcs, firlch01.bcs, gorcamb2.bcs, gorcamb3.bcs, gorcamb4.bcs, gorcamb5.bcs, gorcamb6.bcs, gordeckf.bcs, gorlic01.bcs, gorsal.bcs, gorstam.bcs, gp115.bcs, gp116.bcs, gparcher.bcs, gphealer.bcs, gpkensai.bcs, gpmage1.bcs, gpmage2.bcs, gpmerc.bcs, gpshout.bcs, gpthief.bcs, grpsht01.bcs, hellgen.bcs, hellslay.bcs, illasera.bcs, jatermin.bcs, kaysmg03.bcs, kaysmg04.bcs, keldornx.bcs, kpfight.bcs, kproen02.bcs, kuoarc20.bcs, kuowar20.bcs, lehtinan.bcs, mage12b.bcs, mage12d.bcs, mage12e.bcs, mage14a.bcs, mage14b.bcs, mage14c.bcs, mage14d.bcs, mage14m.bcs, mage14t.bcs, mage16a.bcs, mage16b.bcs, mage16c.bcs, mage16m.bcs, mage18a.bcs, mage18b.bcs, mage18c.bcs, mage18d.bcs, mage18e.bcs, mage18y.bcs, mage20a.bcs, mage20b.bcs, mage20c.bcs, magehigh.bcs, mindal01.bcs, ppcrus1.bcs, pwarden.bcs, sarbul01.bcs, sarbul02.bcs, sarbul03.bcs, sardw01.bcs, sardw02.bcs, sardw03.bcs, sendark.bcs, sengua04.bcs, sengua05.bcs, shadel.bcs, state.ids, sumtan01.bcs, teltief3.bcs, telwrai.bcs, tempv01.bcs, tief3.bcs, uddrow16.dlg, udmaster.bcs, udtrain.bcs, useitem.bcs, vicx.bcs, xeiwin.bcs, yochlol.bcs, yscara.bcs, ysgp01.bcs, ysgp02.bcs, ysgp03.bcs, ysgp04.bcs, ysgrunt.bcs, zilmag01.bcs)
  • Scripts With Incorrect Variable Checks - Miscellaneous scripts have errors when checking or setting variables. They can be due to typos or variable scope or other factors. (keld25.bcs, sardw01.bcs)
  • Miscellaneous Script Resource Reference Fixes - Many scripts had incorrect references to sounds, items, animations, etc. typically due to a typo or malformed action or trigger. (apprenti.bcs, ar2500.bcs, ar3020.bcs, ar3021.bcs, ar4000.bcs, asylum.bcs, cauldron.bcs, cespen.bcs, cut01.bcs, cut215a.bcs, cut31q.bcs, cut49e.bcs, cut57c.bcs, cutd1.bcs, ddguard7.bcs, dragbrow.bcs, finsol04.bcs, movie03a.bcs, movie03b.bcs, spwnrak.bcs, und5509.bcs, yagalt.bcs, yagart.bcs)
  • Incorrect Creature Scripts - Creatures use scripts to control their combat AI, how they react to events, etc. In several cases, creatures had incorrect scripts assigned or none due to typos. Creatures affected are Tim Goldensight (bazpat03.cre), Giran (boy1.cre), Drow Torturer (dadrow9.cre, dadrow10.cre), Overseer Handmaiden (dadrow12.cre), drow (dadrow15.cre, sendro05.cre), Ghaunadar Priest Leader (daghaun1.cre), glabrezu (demgla01.cre), nabassu (demnab02.cre), pit fiend (dempit01.cre, telpit2.cre), Acolyte Byron (helmbyr.cre), Acolye Lara (latlara.cre), harlot (sarpro01.cre), Acolyte Vilon (talvilon.cre), peasant (vvstand3.cre, ar0713.are), fighter (yarmy01.cre), ice mephit (ar0603.are), and Amalas (ruffian.cre).
  • Syntax Errors - Many scripts have syntax errors which do not seem to affect the game. These are fixed anyway. dmtown1.dlg, elgea.dlg, gorchr.dlg, idiot01.bcs, ishthf01.bcs, jonthief.bcs, ppsaem3.dlg, sarmel01.dlg, udsvir06.dlg, valygarj.dlg, vicg.bcs, vicg1.bcs

Combat AI Fixes

  • Aledrian, the shopkeeper upstairs in Gaelan Bayle's home, goes hostile if you work for Bodhi. However, a typo in the area script was making him stand there and stutter instead of doing anything. (ar0312.bcs)
  • A few spells in forced spell triggers were not being executed due to null spell references. (dlich01.bcs, jatermin.bcs)
  • Two mage AI scripts were checking for fear-inducing spells being cast, but one entry was null. The missing reference was Cloak of Fear. (gpmage1.bcs, magehigh.bcs)
  • Four rakshasas in Suldanessellar had many calls to null entries for casting spells. Fortunately, the scripts were identical and a comparison between different scripts filled in the missing gaps. (surakw2.bcs, surakw3.bcs, surakw4.bcs)
  • Many spellcasting scripts have two missing stat checks in their triggers for casting Dispel Magic. Based on the other checks in the block, they appear to be checking for stoneskins or improved haste effects. (abazdrag.bcs, amlich02.bcs, dragbrow.bcs, finsol04.bcs, gorgua02.bcs, gorsal.bcs, meliss01.bcs, meliss02.bcs, meliss03.bcs, planet.bcs, senbattl.bcs)
  • Several blocks have simple 'if I have spell X, cast spell X' blocks in their AI scripts that were failing due to null spell references in either the action or trigger. Healers were especially hard hit, as it seemed the various cure and heal spells suffered repeatedly from this issue. (aeriex.bcs, amlich02.bcs, anomx.bcs, anvskel.bcs, clone1.bcs, gphealer.bcs, jatermin.bcs, mage10d.bcs, mage16m.bcs, mage20a.bcs, mage20c.bcs, mage8d.bcs, pries18a.bcs, pries18b.bcs, pries18c.bcs, pries18d.bcs, saerkx.bcs, senbattl.bcs, vicvskel.bcs, vicx.bcs)
  • One of the generic healer combat scripts would cast Bless as a prebuff, but so long before combat that it usually wore off before the fighting started. (gphealer.bcs)
  • Catti-Brie had an odd script assigned that would prompt her to attack mages in the party, regardless of whether she was hostile. As the script served no purpose, it was removed outright. (c6catti.cre)
  • Ferric Ironblade, the fighter-thief in Semia's band, uses a combat script which contains a block for him to leave if he can't see any enemies and is not in combat. This often happens, as the script calls for him to continually run away if he's not invisible, so he often disappears without aiding Semia much. Ferric's script is changed to a more appropriate choice to make him more useful to Semia's group. (deshar.cre)
  • Two common AI scripts, used mainly by archers and air elementals, would instruct the creature to move across an area even if they (or their group) had not yet made contact with the party. The most common place this bug would occur is in the Underdark, where a lone kuo-toan archer would separate from his ambush group at the bridge and make a solo attack, far away from any support. (gparcher.bcs, airele01.bcs)
  • Summoned demons will try to attack the party, but will settle for pretty much anything nearby that moved. The targeting was a little wonky, though, and they sometimes attacked invalid targets or ignored valid targets. (demglasu.bcs, demnabsu.bcs (ToB only), dempitsu.bcs (ToB only))
  • If the actors are attacked, Samuel and Thalia Thunderburp are supposed to summon the local guard and then go hostile and attack the party. However, the area script was trying to check and set a variable of the incorrect scope. (ar0522.bcs)
  • The duergar mages in the opening dungeon could cast their Aganazzar's Scorcher spells on non-existant targets. (duemag01.bcs)
  • Various mages were casting lightning bolts on themselves rather than enemies due to a bad target in their script. (mage10a.bcs, mage10d.bcs, neva.bcs)
  • The Crypt King, encountered in one of the crypts in the Graveyard district, is supposed to cast Horror before combat. Due to an error in his script, this was not occurring. (bhcrypt.bcs)
  • The dogs at the de'Arnise Keep were going hostile when the party engaged the otyugh in the de'Arnise Keep courtyard. The dogs now only go hostile when one of them is attacked. (cdkpdog.bcs, kpdog1.cre, kpdog2.cre, kpdog3.cre, kpdog4.cre)
  • Valygar goes hostile if you abuse his housekeeper Hervo in any way. However, the script to make this occur was not first dropping Valygar out of the party, meaning he would go hostile, but remain in the party and just stand there. He now properly leaves the party first. (valygar.bcs)
  • Due to some loose scripting, enemy devas and planetars would occasionally heal the party. The same can also occur for Minsc or Valygar if they were out of the party and hostile. (devaevil.bcs, devagood.bcs, minscx.bcs, plangood.bcs, valvsed.bcs, valygx.bcs)
  • Various scripts were improperly checking to see if they were outdoors; for example druid scripts were trying to check if they were outdoors before casting Call Lightning or Entangle. (druidx.bcs, minscx.bcs, minvsed.bcs, npcdru1.bcs, valvsed.bcs, valygx.bcs)
  • The small group guarding the Underdark exit (in the Kuo-toa area) will go hostile if Ust Natha goes hostile. However, if one of them gets charmed, the creature gets trapped in a loop and begins stuttering. That same issue occurs if Tabitha, the leopard in the pens at the Copper Coronet, gets charmed. Based on the assumptions in her script, Tabitha is granted immunity to charm. (coplion.cre, dwgates1.bcs)
  • Ilyich is scripted to wander around in the area a bit, but it was not being disabled once combat started. (ilyich.bcs, ilyich.dlg)
  • Beholders and gauths will still fire eye beams when asleep. (behdir01.bcs, beheld01.bcs, behhiv01.bcs, behold01.bcs, behspe01.bcs, gauth01.bcs)
  • The Ellesime clone from the opening dungeon will not engage with her weapons once her spells are exhausted. (clone1.bcs)
  • Nevin and his undead Uncle Lester could stop fighting from time to time. (lester.bcs)
  • One of the generic mage scripts was able to cast Stoneskins infinitely due to a bad variable check. (mage12c.bcs)
  • The Moon Dog will burn through its three Mirror Image spells because it doesn't check to see if it's already under Mirror Image. (moondog.bcs)
  • Perth the Adept doens't go hostile if attacked. (perth.bcs, ppcowled.cre)
  • One of the generic priest scripts would cast Draw Upon Holy Might on its enemies. (priest5.bcs)
  • The slaver guard outside the ship in the Slums should go hostile if you clear the ship from the inside. (slaver1.bcs)
  • The mephits and shadow thieves fighting in the opening won't start fighting until the PC is in range, but the range check was too short. (waitpc2.bcs)
  • Illasera has additional spells to cast, but some bad variable counting skips them. (illasera.bcs)
  • Under certain circumstances, Devil Shades can sit around and do nothing when below 50% HP. (shadfi02.bcs)
  • Various creatures lacked any combat scripting at all, even a basic response (fight back, run away) if attacked. (arenthis.cre, bearblsu.cre, beargrsu.cre, kamir.cre)
  • Abazigal should be immune to Time Stop, but a bad parameter in the effect prevented it. (abazigal.cre)
  • In the mind flayer section of the sewers is a hostile, mind-controleld party. The mage does nothing because his combat script is being overridden by the area file; this is fixed. (hlmage.cre)
  • The Shade Lord's first spell is PW Stun, but since he lacks the normal immunity item for undead he can stun himself with it. (shadel.cre)

Minor Script Fixes

Several script fixes are made that have minor or cosmetic consequences in-game.

  • When you enter Carston's level in Watcher's Keep, he is entertaining himself by watching a fight between githyanki and illithid. One of the githyanki is not hasting itself before running away. (cut207c.bcs)
  • When the party escapes the opening dungeon, a cut scene ensues between Irenicus, the shadow thieves and the Cowled Wizards. At the end of the cut scene, four of the Cowled Wizards simply disappear--they're supposed to use Dimension Door to escape but were not due to a malformed spell reference. (cut01g.bcs)
  • In the Saradush Prison, two information points share a name rather than being unique. This leads to minor scripting errors, such as the party not facing the correct direction when the Prison Spirit appears. The Spirit can also fail to open the door if the PC is not present. (ar5006.are, cut224a.bcs, sarspir.bcs)
  • In the Umar Hills, Johanna and Ander should wander back and forth but were not due to bad variable tracking. (uhleave5.bcs, uhleave6.bcs)
  • Some townsfolk have scripts that cause them to run away from red-circled creatures. However, due to some sloppy scripting they were actually running away from the party. (runenemy.bcs)
  • The candle, bell, and holy book used to open the portal to level two of Watcher's Keep are supposed to disappear once the portal is open. Because of an error in the variable checked, the items were not being removed. (ctaltar.bcs)
  • One of the commoners in Amketheran is supposed to flee from the party at high speed. However, the spell that is supposed to give him the speed boost is not being applied due to a malformed action. He now runs away at the correct speed. (amman02.dlg)
  • When controlling the spirit warrior in Watcher's Keep, the warrior can open a desk drawer, sometimes encountering contact poison. The action to inflict 25 points of acid damage when this occurs is malformed. (fsspir3.dlg)
  • If the player sleeps with the harlot in Saradush, the screen is supposed to fade out first. The fade action is malformed. (sarpro01.dlg)
  • The Helmite Ghost in the final seal level of Watcher's Keep had malformed calls to disable trigger points in the area. For the NPCs that interject, the call was also malformed from their dialogues as well. The dialogue could also break if the person interjecting was mazed. (fsspir2.dlg, imoen25j.dlg, jahei25j.dlg, vicon25j.dlg)
  • If the player acquires the Graveyard Key, Faheed and Amajira are supposed to leave. However, Faheed's leave action is malformed. (amfaheed.dlg)
  • In the cut scene where the PC is stripped of their Bhaalspawn abilities by Irenicus, the "Loses all Bhaal powers" string occurs in the beginning while the screen is fading to black and can be missed. It's moved to the end of the cut scene instead. (cut41i.bcs)
  • There were occasional issues with the initiation of dialogue between Bodhi and the PC at the beginning of the asylum maze. (cut41j.bcs)
  • Phealos the trainee in Aran Linvail's lair is supposed to move in a specific direction to leave the area. Pelanna's dialogue informs him to hit the showers, but it has a malformed move action. This allows Phealos to leave towards the nearest exit, possibly back towards the other training areas instead of the intended direction. (pelanna.dlg)
  • The two imps are supposed to play a quick animation over their chest before opening it, but it's not occurring due to a malformed action. (sahimp02.dlg)
  • Frennedan, the shapeshifter encountered in the opening dungeon, has two minor errors in his dialogue. One action to track his interactions is malformed, and one of his polymorphs has an invalid target. (shape.dlg)
  • Krin and his training partner, encountered when going to ally with Aran Linvail, should be playing hide-and-seek through the shadows. After speaking with Krin, his partner should sneak up to him and initiate dialogue, but the movement part of the sequence is a malformed action. (arnman11.dlg)
  • Habib is the scimitar-throwing idiot who attacks the party and runs away. After the initial encounter, he can also spawn in an Ilmater temple and hurt the party again by throwing a coin. However, his second spawn doesn't bother checking to see if he was killed in the first encounter. (slilmat.bcs)
  • If you kill Amalas in the pit and speak to either of his buddies afterwards, both are supposed to leave together. A broken trigger prevented the other buddy (whichever one you did not speak with) from leaving until you spoke with him as well. (rufpal.bcs)
  • Arnolius, the fletcher right off the Promenade, uses area variables set to the Promenade rather than to his specific area. As the Promenade is the master area for his shop, it's unlikely that this would cause issues except under unlikely situations, but it is fixed nonetheless. (shop02.dlg)
  • The animation that plays upon the death of a grimwarder was not playing due to being called by a script action that couldn't target dead creatures. (reddeath.bcs)
  • If Kruin, the wild mage Githyanki trying to track down the Silver Sword, gets killed before talking to the party he will simply respawn. (githspwn.bcs)
  • A bystander with some timely exposition should approach the party and speak after they escape the opening dungeon. (bystand1.bcs, bystand1.cre)
  • The area script in the hostile version of Aran Linvail's lair had a redundant block intended for another area. It's removed. (ar0327.bcs)
  • Edwin should not try to use the Nether Scroll while in dead or wild magic areas. (edwin.bcs)
  • Nalia should stop complaining once you reach the Keep. (nalia.bcs)
  • If the party's inventory was full when they solve the riddle in the sewers, Lilarcor would fail to appear. (pipe04.bcs)
  • One of the two dead magic areas in the Watcher's Keep maze was spamming the dead magic every script tick instead of once per round due to a bad variable scope. (ar3008.bcs)
  • In Yaga-Shura's lair, you should not receive 'you must be stronger' messages if you are, indeed, strong enough. (ittempl2.bcs, ittempl3.bcs)
  • Viekang in Saradush was not detecting all fear spells. (sarvie01.bcs)

Errors in Player AI Scripts

The DRUID OFFENSIVE/DEFENSIVE script was checking to see if the caster was outdoors before trying to cast Call Lightning and entangle, but the check was malformed. The SPELLCASTER DEFEND script was improperly checking if an aggressor was dead. The CLERIC AGGRESSIVE script cast chaotic commands on enemies. The WIZARD DISABLER script would cast ray of enfeeblement on the player. The CLERIC DEFENSIVE and DRUID OFFENSIVE/DEFENSIVE scripts would check to see if party members were wounded and try to heal them, but the targeting was sometimes off and the caster would heal the wrong target. The RANGER RANGED, THIEF AGGRESSIVE, THIEF DEFENSIVE, and THIEF SCOUT scripts would try to hide in shadows even if the character didn't have the ability. Similarly the THIEF ADVENTURER and THIEF SCOUT scripts would try to detect traps, whether or not the character had the ability. The THIEF SCOUT script could also attack allies due to some sloppy scripting. (cleric1.bs, cleric2.bs, cleric3.bs, fighter2.bs, fighter4.bs, mage3.bs, thief1.bs, thief2.bs, thief3.bs, thief4.bs)

Mazzy Goes Hostile if Valygar Charmed and Vice-Versa

After Mazzy adopts Valygar as her squire, she will leave the party and go hostile if Valygar goes hostile and vice-versa. However, due to the loose triggers on this scripting action, they would leave and go hostile even if the other is only temporarily hostile, i.e. if under a charm spell. They now account for the other being in a charmed state. A slight cleanup of Mazzy's script (removing a reference to a non-existent scripting name) is also performed. (mazzy.bcs, valygar.bcs)

Valygar's Departure in the Slums Can Cause Cut Scene Hang

The Slums has a special trigger so that Valygar can make a comment during a cut scene about the Planar Sphere as the party approaches. If the party kicks out Valygar and he runs over this trigger as he leaves, the game will initiate the cut scene--however, as Valygar is leaving, he can't start dialogue and properly close the cut scene. This leaves the party stuck in a cut scene, unable to escape and continue the game. The special trigger conditions have been tightened to make sure Valygar is in the party and eligible to deliver his dialogue. (valyorb.bcs)

Hostile Acting Troupe

In the Planar Prison, one of the guards is using the wrong shout script, meaning the actors and Haer'Dalis can erreoneously respond and go hostile if they hear him. The guard is updated to use the same shout script as the rest of the guards. (pcapt03.cre)

Illithid in Underdark Fails to Respawn

When you are trapped by the illithid in their Underdark lair, you encounter doors that either require you to transform into the slayer or to use one of the illithid to open them for you. In the south of the area is a lone illithid who respawns so that you can use it for the doors. However its script relied on some flaky triggers, which could prevent respawn. (udmpswn.bcs)

Unrelated Demons

Killing a couple of unrelated baatezu in the Marching Mountains was causing Ka'rashur in Watcher's Keep to go hostile. (ar3005.are, ar3006.are, ar3009.are, ar6012.are, yssumm2.bcs)

Party Not Rested From Weeklong Trip to Brynnlaw

The party is supposed to arrive in Brynnlaw fully rested, but the cut scene that transports the party is occasionally flaky with the resting actions. (cut41c.bcs, cut41d.bcs)

Ust Natha Cut Scene Could Occur Offscreen

On the upper levels of Ust Natha, a drow priestess tries to push through some duergar in a cut scene. However, due to the odd nature of the trigger here, this cut scene could occur entirely offscreen with few, if any, of the actors visible. The net result is that the game could go into cut scene mode and the player has no idea as to why. When this cut scene is triggered, the screen will now be moved to the scene and the fog of war removed so that the player can see this interaction. (dadrow20.bcs)

Arkanis Gath Spawning Post-Spellhold and When Working for Bodhi

If the player agrees to work for Aran Linvail and then attacks the shadow thieves, Arkanis Gath is spawned. Arkanis is, essentially, an invincible character that kills the PC immediately. Arkanis' role is to prevent the player from breaking their own game--if not for Arkanis, the player would be left with no way to get to Spellhold. However, Arkanis will continue to spawn post-Spellhold if the player attacks Aran or his thieves, when Arkanis (and his cheese) is no longer necessary. He will no longer spawn after chapter five.

An additional issue with Arkanis spawning was that he was being spawned by the rogue guild of Mae'Var under certain circumstances. If the player began working on exposing Mae'Var and then accepted Bodhi's offer, Arkanis would appear if the player then started killing the thieves in Mae'Var's guild. (killpc.bcs, mvally.bcs, mvally2.bcs)

Cromwell Forges Item Without Ingredients Exploit

There was an exploit when commissioning Cromwell to forge items. The player could give all of the ingredients to one of the party members, get the party to attack that member, and then initiate dialogue with Cromwell and agree to make the item. The party could kill the member holding the ingredients during the forging cut scene, allowing the party to get the newly forged item and pick up the ingredients off the body of the killed member. Party actions are now cleared before the cut scene begins, as is the case for most cut scenes, to close this exploit. (cromwell.bcs)

Multiple Specters Trapped in Imps' Chest

If you do not solve the puzzle of the imps in the City of Caverns, a specter appears out of the chest. The specter kills the party member who opened the chest and then teleports away. However, the chest can be opened multiple times, and the same specter will appear and kill another party member. As there is only supposed to be one specter, the chest is altered so that this only occurs once. (impches3.bcs)

Elhan's Elves Turning Hostile (And Not) Inappropriately

When leaving the Underdark, the party encounters groups of drow and surface elves fighting. The AI scripts used for shouts (used for groups of creatures to work together) are the same for both sides, meaning that a drow calling for help can cause the surface elves to go hostile against the party as a response. A secondary issue is with the elven war guard that appears simply to kill the PC if the player attacks Elhan or his elves. Similar to Arkanis Gath, the war guard exists purely to prevent the player from getting into an impossible-to-finish game. However, if the player attacks the surface elves fighting the drow in the last Underdark tunnels, the player can then attack all of Elhan's camp without the war guard spawning, leaving the player in an impossible to finish game. (ar2401.are, c6elf.bcs, c6elhan.bcs, c6extra.bcs, c6gener.bcs, warsage.bcs)

Disappearing Hendak

Under certain conditions, Hendak could disappear from the Copper Coronet due to the way he moves from his cell to the front room. This is now handled in a more robust manner. (hendak.bcs)

Invincible Bat in Bodhi's Lair

When entering Bodhi's Lair in Chapter Six, you initially encounter Valen. If you somehow kill Valen before she notices the party (for example, an invisible thief backstabbing and killing her in one blow), Del never changes out of bat form and will remain in the hallway as an invincible bat. Del relies on variables set in Valen's initial actions to trigger his transformation. He will now perform his normal actions if Valen is killed without seeing the party. (c6valen.bcs)

PC Unable to Re-Enter Bodhi's Lair After First Task

If the player does not make initial contact with Bodhi in the Graveyard area, the door to the vampire area may be impossible to open. The commands in Bodhi's dialogue to open the door only work if she is in the same area when they're issued. This can cause the PC to be unable to return to Bodhi after completing her tasks. (ar0800.bcs)

Repeated Welther Spawns

Welther would spawn repeatedly under certain circumstances when freeing Elgea. (ar0400.bcs)

Malformed Allegiance Checks

Many creatures have blocks in their AI scripts to turn into enemies if attacked. To prevent the block from repeating, it included a check to make sure the creature was not already hostile, but part of the check was malformed. (amduel1.bcs, amduel2.bcs, balmonk.bcs, chalpc01.bcs, gorbat.bcs, gorbat1.bcs, gortan.bcs, gortan1.bcs, gparcher.bcs, gphealer.bcs, gpkensai.bcs, gpmage1.bcs, gpmage2.bcs, gpshout.bcs, grpsht01.bcs, sarbul01.bcs, sarbul02.bcs, sarbul03.bcs, sardw01.bcs, sardw02.bcs, sardw03.bcs, sarrein.bcs, teltief3.bcs, trgrd02.bcs, trgrd03.bcs, trgrdr01.bcs, trgrdr02.bcs, trgrdr03.bcs, trgrdr04.bcs)

Multiple Captain Rerdes Bug

Due to a bad variable scope, Captain Rerdes in Lady Galvena's festhall could be spawned (and killed) multiple times. (ar1613.bcs)

Errors in Altercation Between Firkraag's Leiutenants

In Firkraag's lair in the Windspear Hills, the party sees a confrontation between a wolfwere captain, a troll, and a hobgoblin named Gerg. There were a number of ways this encounter could be broken by the party, resulting in the principals standing around and not doing anything or failing to initiate follow-up dialogue after the confrontation was resolved. (firamb01.bcs, firamb01.dlg, firamb04.cre)

Kangaxx Gets Stuck as Invincible Lich

If the party is not visible to Kangaxx when he appears as a lich (typically via Protection from Undead scrolls) he does not deliver his opening dialogue. If the party damages Kangaxx to the point where he should transform into his demi-lich form, he then delivers his opening dialogue instead of his demi-lich transformation dialogue. Kangaxx's lich form is protected by an invincible item, so at this point he can't be killed and will never transform. The Fixpack alters his dialogue so that his demi-lich transformation dialogue will occur at the proper time, regardless of whether his opening dialogue occurs or not. We have added additional safeguards in the beta core fixes. (hlkang.dlg, hlkang.bcs)

Jaheira Stutter Bug When Encountering Khalid's Body

If Jaheira is blinded when encountering Khalid's body, she would stutter as a script tried to initiate a dialogue repeatedly. To avoid the stutter Jaheira will deliver her dialogue about Khalid even if blinded. (jaheiraj.dlg)

Sime Not Always Prompting a Game Save Upon Arrival in Brynnlaw

If the player assists Aran Linvail and takes his help to go to Spellhold, Sime accompanies the player on the passage. Upon arrival, Sime initiates dialogue and then the party is ambushed. In some, but not all, dialogue branches she includes an action to save the game. Sime's dialogue will now save the game under all dialogue branches. (ppsime.dlg)

Game Broken if Saved During Bodhi's Spawn

At the end of chapter three, you confront Bodhi and her vampires if you side with the shadow thieves. A bug could occur if the game was saved after you staked the last of Bodhi's vampire lieutenants but before Bodhi herself appeared. Bodhi would never spawn, making the chapter (and by extension, the game) impossible to complete. The actions in Bodhi's spawn have been reordered to prevent this from occurring. (ar0801.bcs)

Unlock Bodhi's Lair

The main door to Bodhi's lair remains unpickably locked due to a "powerful sense of danger" even if the player sides with her in chapter two. The main door now unlocks once you receive access to her lair. (ar0801.bcs)

Surfacer Elves Flee Prematurely

As the party fights their way out of the Underdark they run into surface elves and drow fighting. However, some of the surface elves were leaving prematurely because they relied on a trigger that tracks whether the party was in combat. (udelf1.bcs, udelf2.bcs, udelf3.bcs)

Terrece Spawn Errors

Terrece would appear outside the Council building while the PC was inside and start dialogue through the transition, which left the player talking to a shaded-out exterior wall. Terrece could also spawn prematurely if you entered the Council building but did not speak with Corneil. (ar1000.bcs, terrece.bcs)

Quayle the Slime Causes Stutter Bug

Quayle the slime will cause the nearest PC to stutter if Aerie is in the party. He only has one top-level dialogue that checks to make sure Aerie's not in the party; if you get within 5 feet of him and Aerie's in the party he'll continuously try to initiate dialogue. Since he has nothing to say, the feedback window will fill up with "Bumbling simpeltons, get out of my way!" (quaylem.dlg)

Scriptable Spells

Innate spells can cause game crashes with scripts that use them. If an innate spell is set to a level other than one and used in a HaveSpell() trigger, the game will crash. A number of innates are changed to level one to address this issue. (spcl232.spl, spcl412.spl, spcl414.spl, spcl621.spl, spcl721.spl, spcl722.spl, spcl731.spl, spcl732.spl, spcl741.spl, spcl742.spl, spcl910.spl, spcl911.spl, spcl912.spl, spcl923.spl, spin683.spl, spin696.spl, spin697.spl, spin698.spl, spin891.spl)

Del Can't Always Find Sansuki

Del and her vampire friends are hunting Sansuki, but because they spawn offscreen they sometimes need a little scripting nudge to find him. (vvsansuk.dlg)

Game-Breakers at Abazigal's Lair

Force-talking Draconis can prevent his transformation and the completion of the game. Abazigal in human form can be killed. If the PC is mazed when Abazigal is defeated, he never delivers his death dialogue and prevents advancement. (abazdrag.bcs, abazigal.cre, bazdra01.bcs, bazdra01.dlg)

Silenced Sendai Prevents Advancement

If Sendai was silenced when she tries to deliver her dying dialogue, the game would get stuck without any way to advance. She'll now Vocalize first. (sendai.bcs)

Anomen's Messenger Shouldn't Spawn in Random Encounter Areas

The messenger that summons Anomen home for his family quest could spawn in random encounter areas or in the middle of combat, meaning he could be missed permanently. (anomen.bcs)

Orphan-Paladin Graveyard Events Can Be Broken by Time Shifts

The minor quest of uniting Risa and Kamir in the graveyard can be broken by the actor's schedule (they disappear in the evening). Since it relies on Kamir walking across the area, it has an extended period where it can be broken and steps are made so that the actors stick around in these circumstances to finish the quest. (ar0800.are, arenthis.bcs, kamir.bcs, risa.bcs)

Hareishan Talks Through Walls

Hareishan is one of the random vampire encounters in the early game. She could initiate dialogue while the party was inside a building from the outside. (vvhareis.bcs)

Corrupted Scripts

Several scripts that ship with the game are corrupted and beyond recovery. The Fixpack forces a recompile of the scripts so that they're no longer corrupt. (ar2812.bcs, rdog.bcs, rdwarf.bcs, retter.bcs, rgibbler.bcs, rhalflin.bcs, rhobgoba.bcs, rhobgobf.bcs, rkobold.bcs, rogre.bcs, rsiren.bcs, rsirine.bcs)