User Tools

Site Tools


Current version:
Android: (Play/Market version is obsolete!)

Github Coding has become social! Fork us!


Latest commit

# ideally, but does not work on sourceforge (does elsewhere); even http proxies don't help rss> 1 author 30m sidebar for frequently accessed stuff


Major todos

  • iwd2: level-up
  • pst floating text, wrong stance ids, levelup fixes
  • opengl renderer, empty-frame-free animation system
  • proper timing (timestop partiality, actor speeds, combat)

Right now there isn't even an idea if, when, or how multiplayer will be implemented.

Bugs/missing features

This is a list of problems which can be observed at various points throughout the games. If you want to get your hands dirty, the ones marked with FIXME are good starting points (easier tasks). If you want to help with testing, check the unresolved ones with RECHECK marks. The ones with RESEARCH require some data lookup in the originals. For details, talk to us on IRC/forums. is a list of original IE games (mostly data) bugs or quirks, for reference. Apart from it, DSimpson guides for IE games are excellent.


  • Animation/drawing related
    • Arrows sometimes appear from behind the shooter, usually observed when he has apr > 1 (see also combat section)
    • RESEARCH missing chunk coloring, actor shadows1)2), full footstep sounds, actor speed, hit sounds and casting height data (all hardcoded in the originals3))
      • character speeds are therefore mostly too fast, especially in bg1 (also causing its boots of speed to have no effect 4))
    • no instachunks displayed when damaging petrified/frozen actors
    • improve animation id selection: order animation ids, allow for interval (select the row with the highest equal or less ID). Add a game flag for this: GF_EXTENDED_ANIM_ID
    • Fog of war: fully visible squares with one corner neighbour invisible need alpha of the adjacent corner to the invisible square tuned down (uh, i hope it is clear what to do, look for artifacts in the fog of war edge)
  • Combat related
    • detailed combat feedback is missing (bg2: rolls)
    • overhead text should not (always?) move when displayed over actors - it gives out thieves that go invisible by gulping a potion of invisibility RECHECK (some shadow thief bg2 battle would be easiest)
    • the dying animation is naked - any armor is stripped beforehand
    • modal actions run every 100 adjusted ticks
    • combat round timings are off: the times for weapons to launch and for animations to trigger and so forth
    • FEATURE: implement customisable combat calculation; it should be general enough to simulate all games, without any hardcoded parts
  • Effects/states/projectiles:
    • confusion is buggy: induced actions don't work properly - mostly the actor just stands still
    • buggy State:Panic (still had orientation control (movement blocked though), no wandering[this bit was not tested, due to the panic being morale induced]).
    • RESEARCH charmed/dominated actors need to be assigned one of the general scripts (wtasight?), to not be useless to the ai.
    • intoxmod.2da handling and intoxication in general (curing; it's also modified by hpconbon.2da)
    • Various built-in engine projectile features don't work (eg, bouncing lightning, pst stuff) or are not perfect.
    • finish VEF support (first mod using it)
      • a SetSequence bugs become evident with that mod (see forum)
  • Actions/Triggers/Matching/Pathfinding
    • RECHECKRESEARCH and determine if these two are in opposition
      • Pathfinding shouldn't be forcing the path to cells..
      • Move position of actor (and ground circle) to the center of a searchmap cell
    • friendly/neutral NPC bumping is missing (they magically move away if you want to pass them in a tight spot)
    • cutscenes, movies and interarea travel should switch to the main game view (partly done)
    • RESEARCHFIXME no sound feedback on disarm - can't find the correct sound resource played. Is it the same as for picking locks?
    • LeaveAreaName fixes for party travel (ask fuzzie)
    • (only bg1?) NPCs sound after initiating dialogue is not randomised. In bg1 VB_DIALOG is usually empty and INITIALMEET is equal to one of the selection sounds. After that, we only sound this normal selection one, while more are available in the rare range.
    • scripts changing (=deleting) themselves while running is not handled properly (changeaiscript)
    • (fuzzie) ”(…)our script code is force-unlocking doors when it closes or opens them” That undermines all “surprisingly locked in” quasi trap scripts.
  • Items/inventory
    • if you have various bows in weapon slot, you can't choose between them, always first one is used
      • FIXME check if Inventory::FindRangedWeapon() is misbehaving
    • FIXME potions should also pollute the (spellcasting) aura (use Scriptable::AuraPolluted in Actor::UseItem)
    • perfect switching weapon abilities: display only the relevant headers, ensure we use the right one in combat (attack style determination)
  • Messaging/strings/font
    • FIXME externalise message colors (iwd2 for example uses gold for xp)
    • dialogF.tlk is not handled (grep for dialogtlk)
    • optional newline stripping (Polish tlk vs month names in bg1)
    • messaging system with filtering, squashing and delay capabilities
      • The text info in the inventory doesn't disappear when you click/do something else, making it difficult to work out exactly which items are causing the text. It also isn't filtered, so any message can be displayed.
      • damage messages of the same type should be squashed
      • RESEARCH repeated identical messages should be uniq-ed (all?)
      • messages while the inventory or the messagewindow are hidden should be delayed
    • finish implementation of talk table override (TLKOverride) for actually saving biographies and similar
    • FEATURE: ”<GENDER?stref1:strref2>” (or even more ambitious stat specific strref tokens)
  • GUI/GUIScripts
    • add a post-startup dialog (ok/never show again) with instructions with the path to the log file in case of problems
    • since the label hack, portrait icons flicker and/or vanish
      • related iwd note, where this was seen first (now 3 labels): if icons count > 2 later ones (2nd and next) start to disappear from portrait, albeit stays in character sheet. sometimes there is padding for them, sometimes not, depending on timing of cumulating them.
    • implement grabbing mouse pointer by a control to fix dragging of PST Float menu window
    • implement class based (but customisable) action button bar. Generally port the IWD2 system to all engines
      • iwd2 customization is missing (in iwd2 as well)
      • rip the Setup*Icons calls from the python bindings and implement them in the GUIScripts (like killed SetupSpellIcons)
    • After quick spell ran out, you should be able to choose other one in it's place (button gets disabled).
    • cancel in options does not really cancel, since we toggle stuff immediately
      • maybe add guiscript store/load gamevar functions, which we'd use like akin to transactions
  • Docs
    • FIXME change gemrb/docs to dokuwiki syntax, so they can be put directly on the wiki
    • FIXME change heredoc GUIScript.cpp docs to dokuwiki syntax, so they can be put directly on the wiki
    • Add Doxygen doc comments to more objects
    • Write GemRB overview, structure and high-level flow docs (partly done)
  • FIXME XDG compliance (standardised user paths on linux; icon location should already be fine)
  • FIXME You don't get door highlights (was that really there? ALT is used to highlight doors and containers) (yes, doors are definitely highlighted on tab) when hitting tab. It was light purple (red in iwd2) vs the blue that is used for containers.
  • Fix unwanted screen shake (when on bottom of area on actor selection)
  • a not-found resource cache/map, so we can shortcircuit repeated lookups of the same nonexisting data?
  • per-game 2da to list all the usual files not to complain about when they're missing; add to resource getter failure paths as filter
  • FIXME Videos after chapters not added to videos menu (add all the video names to the shared/defaults.ini config)
  • FIXME keyboard shortcuts assignmnent to tooltips is not optional (if a config option is set: Hotkeys On Tooltips)
  • FIXME keyboard shortcuts assignmnent to tooltips is missing for menu window (return to game, inventory …) tooltips/keys
  • (PARTLY done) Separate OpenAL interface from ACM loader and MVE player
  • implement and use as much from EAX (echo, damping, etc) as possible
  • valgrind reports a big heap of unreleased python objects RECHECK + may just be python itself5)
  • The Cache and Variables classes could be rewritten to incorporate the release function more smoothly (use templates?)
  • some traps/infopoints are misautodetected
    • bg2: bodhi's sanctum left chamber
    • bg1: Bogus trap detected in one of the containers on the upper floor in Travenhurst Manor (Area?) by pure class fighter (sic).
    • pst: AR0403 - The trapped container at 2350, 2600 shows up red when you havent searched for it

Baldur's Gate 2: SoA

Throne of Bhaal

  • yaga shura's personal guard all spawn directly on him (AR5203) RECHECK
  • periodic yaga shura's guards spawn directly in the midst of the party (iirc they did near the edge of the visual range) RECHECK, CreateCreatureOffScreen was fixed
  • sendai's ar6106 egeissag pit fight: party members are not completely immobile (MakeUnselectable(0) is called, so we don't deselect them due to the 0) and still shoot
  • [CharAnimations]: Couldn't create animationfactory: mmelg12 (7f3d) - Mellisan

Baldur's Gate

  • Viconia(?) animation problem [CharAnimations/ERROR]: Couldn't create animationfactory: cefc4 (6011) [ResourceManager/ERROR]: Couldn't find 'cefc4.bam'.
  • FIXME Remove invisible opcode (0x2f) should be disabled by nondetection, except if stateoverride(flag/time) is set.
  • RESEARCH Wrong sound effect played if no arrows left- same as no charge in wand. Which one should it be?
  • You can't travel from the Gnoll Stronghold to Wyrm's Crossing) RECHECKRESEARCH (also, was it possible in the original?)
  • Equipping BELT05 (Sex change) temporarily disrupts item's animation (SW1H24 (Flaming tongue) goes monochrome, shield disappears.
  • Kelddath at the Song of the Morning in Temple (AR3400) should buy Wyvern heads (MISC52)- he does not. He gives gp for first one, but you can't sell anything in his store.
  • Speaking of temple, each time you enter you should hear wailing of “sirens”/his assistants. I think Alaundo's prophecies singing/cantor sound is missing in Candlekeep in similar way.
  • Generic background music is a lot a less played than in original.
  • RESEARCH When selecting multiple items for identification, only the last one is highlighted (but all are in fact selected). A screenshot of the original is needed; the last time this was researched it looked like a data bug with only the 4th button having the needed frame (not that we shouldn't override this folly)
  • Misaligned (?) Potion of Heroism (POTN09) use animation.
  • RESEARCH GFX glitches needing confirmation if connected with GemRB at all 001 002 003 004 005 006 007 008 009
  • This is especially strange, it happens only in Taerom's shop (blackened scroll counter) 009 RECHECK / STILL Similar thing in Kelddath shop at temple.
  • Flooding mine (Cha.5) should trigger Wyrm's Crossing opening- does it? Here not, but maybe I didn't use elevator (trigger) like I should (prior to talking to miner)… (Pure speculation- similar thing reported in original, as well as in BGT ). Possible main story breaker.
  • …lycanthropy infection works correctly (however I can replicate it only with one save, strange), turning other party members to greater wolfweres (greaterwolf), however they probably shouldn't drop Peladan as loot ;)
  • Revived party member appears on the original crime scene (not in the temple). As it dismantles party, it also breaks area travel. Other reports complain about the corpse following you. It should, but you shouldn't be able to see it (!IF_ACTIVE or avatar removal). Speaking of travelling corpses, that's the case when Shandalar teleports party. I've checked in original, there are no visible corpses of (already dead) party members on island upon arrival, not the case with GemRB.
  • RESEARCH Being magically asleep not using proper stance (lying, at least male human fighter) for the selected actor. Which spell caused this (or which effect is applied)?
  • Importing characters from GameCharactersPath= is semi-broken(?) It can import *.chr which are no longer there, so behaviour is quite confusing.
  • Sarevok is missing an attack animation (also visible in bg2 and tob).
  • Combat music does not always end after combat. This is almost fixed now, (only clairvoyant npcs ruin the picture).

Problematic BG1 saves

Icewind Dale

  • HELMLA (magic helm) is misplaced from head on avatar (screenshot - standard exported HoW character - Baiar, women warrior)
  • agnar isn't outside the camp, so you can't talk to him to get in (ChangeCurrentScript problem?) RECHECK
  • the boss's guards don't react easily enough
  • the boss - ar9604 - has no animation until just before the death (ec0b) RECHECK, at least one of the forms should be ok now
  • the gem - (ar9708) DLSGEM - doesn't cast anything. RECHECK with the continue fix (DJINNI)
  • melee combat is silent (no hit sounds etc)
  • RESEARCH disease icon, once acquired, stays there even after healing up (effect queue looks cleared). I doubt the queue has no disease or portrait icon effect in it. Could be a permanent one too, which would explain the missing possibility of healing it. Need the spell or script that caused it.
  • sometimes free action icon kicks in (no idea of cause) as well as tenser's transformation (spores) while nothing justifies it (I think possible effect of myconids's spores are- panic, stun, berserk only). Sounds like the wrong icon gets used.RESEARCH
  • speaking of blue myconids, this is first creature having sound when hitting PC. They appear far too strong imho (according to all walkthroughs they should be easy?), dealing 20-45 hp in one blow depending on difficulty level and stunning PCs all the time which effectively is dead sentence.
  • double death animation in case of Mod[IE_ANIMATION_ID]: 0xF008 ResRef:mska (templeguardian4)
  • weapons in quickslot stack their special bonuses as they would be wielded all at the same time
  • RESEARCH neither temple nor antidote really cures poison (various- trap, zombie, etc). Resrefs needed, could just be an uncurable kind.
  • [ResourceManager/ERROR]: Couldn't find 'nsimhg2e.bam'. [CharAnimations/ERROR]: Couldn't create animationfactory: nsimhg2e (c900
  • Gerth in should buy keys and misc items, he does not.
  • occasionally thehighbaptist speech starts when he can't see you and throws you into cutscene mode for good (stalls permanently)
  • control of character under dire charm is retained. Battle with Yxunomei is broken because of it- they stop attacking you if you are charmed (you have red circle) but you can still attack them.
  • RESEARCH which spells should still work while silenced? (splspec.2da is lacking entries)
  • FIXME clabdrui.2da: create a custom spell for poison immunity (damage resistance 100%, poison spell icon immunity) and one for timeless body (fatigue immunity - set fatigue to 0, icon immunity)

Icewind Dale 2

  • status from chapter 3 onwards unknown! (all fine until mid chapter 2, where it breaks)
  • AR4100 is smooth sailing until you get near Sherincal. Then it is just random crashes.
  • the inventory has some problems with weapon sets and equipped quivers
  • FIXME character generation
    • missing spell learning/memo
    • we do not give racial enemies to rangers ( is there, just not being called)
    • Expertise and maybe also the other active combat feats aren't learned (we don't give the innate)
  • no levelup
    • for more then one level of difference, the original allowed to spend it only on one class in one go (do the same for starters)
    • handle clssrsmd.2da on (currently only in chargen)
    • handle xp penalty from mixing & favoured classes
    • unused skill point saving for the next time (IE_UNUSED_SKILLPTS)
    • implement spec. flags, two of them are for levelup class restrictions
  • RESEARCH we grant too much xp (check multipliers and cr calculation (ishad's save indicates we undervalue the party cr level))
  • the action bar is somewhat broken - no weapon set switching
  • a few feats are not implemented yet: improved evasion, improved turning, precise shot
  • RESEARCH some hardcoded class abilities like uncanny dodge (both; also barbarians get them), sneak attack, damage reduction. Check if monk's “still mind” is really vs enchantment only and how “Tyrant's dictum” was done (cleric kit superpower +1DC of some spells). Likely all clabs that only print a string require dehardcoding/implementation.
    • aura of courage implementation in iwd2 is hardcoded: when anyone rolls for a will check, it looks if the source is spwi420 (emotion fear), then looks if an ally (EA is in the same interval) paladin of at least level 2 is near. All this hardcoded in the exe. We have to add an opcode for this, like save vs specific spell (with a param for amount and one for throw type(s)), then make the paladin constantly apply this like a dayblindness in Actor::UpdateActorState (can't be a modal, since paladins can simultaneously turn undead). The spell that will apply it should be an aoe and then the saving throw calculations need to account for such boni.
  • FIXME ability boni should be non-cummulative (like tohit and armor, see CombatInfo.cpp)
  • some skills are not yet implemented: use magic device, wilderness lore; partly concentration, various “identify”s, move silently. Don't forget to respect “Trained only” status (GetSkill vs GetStat).
  • FIXME hidden extra feedback option is not implemented for the following cases:
    @25053 = ~Sneak Attack for %d~
    @39828 = ~Sneak attack for %d scores arterial strike (Inflicts bleeding wound)~
    @39829 = ~Sneak attack for %d inflicts hamstring damage (Slowed)~
    @39257 = ~Successful spell casting concentration check! Check roll %d vs. difficulty %d (%d bonus)~
    @39258 = ~Failed spell casting concentration check! Check roll %d vs. difficulty %d (%d Skill & Feat bonus)~
    @39259 = ~Failed identify item check! Check Bardic Lore %d vs. item's lore %d (%d Intelligence Ability Mod)~
    @39260 = ~Successful identify item check! Check Bardic Lore %d vs. item's lore %d (%d Intelligence Ability Mod)~
    @39261 = ~Successful identify potion check! (Alchemy + Int mod) %d + %d vs. (potion's lore) %d~
    @39262 = ~Failed identify potion check! (Alchemy + Int mod) %d + %d vs. (potion's lore) %d~
    @39263 = ~Failed identify item check! (Knowledge Arcana + Int mod) %d + %d vs. (item's lore) %d~
    @39264 = ~Successful identify item check! (Knowledge Arcana + Int mod) %d + %d vs. (item's lore) %d~
    @39304 = ~Use magic device check. Use magic device (skill + d20 roll + CHA modifier) =  %d vs. (device's spell level + 20) = %d ( Spell level = %d ).~
    @40285 = ~Wilderness Lore check. Wilderness Lore (skill + D20 roll + WIS modifier) =  %d vs. ((Area difficulty pct / 5) + 10) = %d ( Skill + WIS MOD = %d ).~
  • misc
    • FIXME RESEARCH wrong text colors in the movie list
    • FIXME RESEARCH fireball blast range is still too big (set to 15' in as per description [maybe just a rounding error]) - check the targos palisade last cutscene for comparison (the guards shouldn't get hit)
    • Check if Targos' Garrad works - he can be found in the healing tent and should interact with the player. Ishad reported: Garrad Cre file has a script 11GARRAD.BCS, but there is no such script. So I created that script as a copy of 11GARRA0.BCS, so far so good.
    • Gedlee's Electric Loop targets the caster not the enemy.
    • Shaengarne area: Malarites stand around while the party kills their friends.
    • not all iwd2 door bits are implemented, specifically the talk/dialog one (visible in the goblin warrens and probably southern ar3000)
    • Beodaewn's gang in ar4000 may be shapeshifting to hostiles too early
      • AF_SEEN_PARTY is never set, only checked; could be related & similar for MC_SEENPARTY
    • Oswald dialog discusses items that we have not ordered. Party only ordered two items, both made from Winter Wolf Pelts. Dialog has party asking him if he has finished Yeti pelt items, which were never ordered by the party.
    • in the original, there's some weird code around containers. There is a hack when the area's resref is ar6051. There is some resref check for 60heart (1-8, dessicated hearts), so be vigilant if anything breaks there
    • Couldn't create animationfactory: mrema2 (e050) (remorrhaz)
    • Couldn't create animationfactory: mba1ca (f77a) (barbie warrior: 01_postulant_16)
    • 0x6405 (doom guards, ar4100) go invisible once they start attacking
    • ar4100: The two sets of slippery stairs don't work properly (jumptopoint is skipped), likely due to iwd2 scripting engine difference (41pstail.baf)
    • RESEARCH How are touch attacks marked (how do we detect them)? They should ignore shield and armor bonuses. Check if any new item flags or fields are relevant.

Planescape: Torment

  • The whole floating-text system for Planescape: Torment needs writing.
  • Morte often pathfinds the wrong way around at the start of PS:T.
  • Right-clicking to remove the floating menu disables the current target mode, in PS:T.
  • TNO should always be the speaker, not random party members (also when not self-initiated).
  • FIXME The whole party should walk towards the exit once an area exit is clicked.
    • we already implement GF_TEAM_MOVEMENT in GemRB_CreateMovement, check what is wrong/missing
  • animations:
    • we ignore the data from individual animation ini files
    • Invalid stance IDs everywhere, oh my. - the mime stances, etc are not supported, they are normal stances, without sound
  • no strref (de)composition - many strings come not in the format of “X” like in other games, but just in “NPCNAME: X” variants


Broken spells

A list of broken spells (bad effects, targeting, projectiles, …).

Personal todos

Some developers have their own todo page.

1) PCs, and NPCs based on PC avatars, generic monsters/people are fine
2) IIRC, CSHD is the standard shadow used for many character anims
3) one of the rare cases where pst is a positive exception
4) sets the speed to the same value, instead of using a % modifier like in bg2
5) we usually use testing/python.supp
todo.txt · Last modified: 2014/03/31 19:51 by lynxlynxlynx