I've decided to make an annotated checklist (similar to the old list started by Librarian) of the bugs that are currently existing in D2, this includes all bugs known that I know of (and have confirmed to exist via code analysis!) - Note, when I refer to hp anywhere in this topic, I refer to _real_ hp values (aka 256ths), when I say life, I mean the value shown on-screen. Also I have only listed bugs that will occur in vanilla (so stuff like crashing weapon / armor racks are not included, because they work like they were meant to work!)
[New Stuff]
- This is
by far, and I mean really by far not all of what I found since I updated the topic the last time.
Missile AR, again - The bug mentioned further down that monster missiles recieve more then their intended AR was a typical failed attempt to 'fix' a deeper laying problem, as you know monsters get AR that depends on their current mode, since the AR is read from the monster when the missile collides the missile could remain without AR if the enemy mode ends before it hits. The fix for this is simple, just storing the active AR on the missile when it gets created (like damage is already).
Molten Boulder Desync - Molten boulder is designed to detonate only when it collides with units flagged as large, and once it expires, however due to a bug in the SMoveFunc it will only detonate if it collides, and not when it expires, so it produces ghost-fire.
Druid Melee Skills - Several of them (Rabies included) check the Attacker-Defender routine twice, so it actually is twice as unlikely to hit.
Missile Desync - On the client missiles are one frame behind the server, this was semi-fixed by not checking for collision flags and skipping over frames if the missile is launched by the current client, the missile will still 'work' on the one extra frame however, which can make things like chain lightning on close range rather unpredictable.
Knockback - a plethora of problems, knockback will sometimes not update the flag telling the game the unit was moved from one room to the other, additionally it seams theres a wrong hardcode which applies the EndOfKB behavior of sandleapers for all other monsters and the one intended for normal monsters to sandleapers. Units were meant to stall for 15 frames after KB to give the client a chance to catch up (ie avoid desync), but this is done only for sandleapers, not surprisingly, making it choose that behavior for everything perfectly syncs KB in MP games.
Doors - The problem with doors becoming desynced is not related to communication or whatever else, the problem comes from the borked anim hardcode on the client (doors have open and close anims), the game doesn't handle this properly and screws up, leaving the door stuck in the wrong mode clientside.
[New Bugs]
Waypoint Memory Leak - the WayPointRoom appended to pObjRegion (a new segment created each time you activate a waypoint by visting it, not clicking on it), isn't freed properly should more then one waypoint be activated at about the same time (this CAN happen in MP games). Only one node is freed, but the index is set to NULL, thus leaving some memory leaked.
Kick Skills - Several bugs here, the client skill-triggering validation does not check if you're already in PLRMODE_KICK (which is a bug), this is what causes all the bugs associated with these skills (there is no AR bug with them, this is only a display glitch at best). The result of this bug is that the skills will not perform an attack server side until you let go of the mouse button, since they ge re-initiated every frame for as long as you hold the button.
Kick Skills Part II - Added 5th June, 2008, some more bugs on Dragon Talon, it attacks twice every "hit" (the dispatcher is called twice, ofc the skill is so bugged in vanilla that this would go unnoticed without first fixing the broken srvStFunc), the evaluation for knockback chance is bugged, it looks like it originally was supposed to factorize the mLvl and cLvl of target/attacker like other skills, but ends using the mLvl of the target for both factors (which means not matter what you attack with it, the outcome of this formula will be the same). (The formula currently is: ((mlvl + slvl) - mlvl) which will always result in slvl).
Kick Skills Part III - Added 7th June, 2008, some more issues with kick skills, due to incorrect code in the default melee damage creation func, kick skills will recieve elemental damage from weapons. Caused by a missing return statement. (this is evidently a bug, first the state of both weapons is set to inactive, it should exit after this, but it continues to the 'normal' code that activates one of them again if the player can dual wield --- which assassins can).
Psychic Hammer - copy/pasted code from Dragon Talons knockback section, with the same formula bug on (using mlvl twice).
Kick Damage Bonus - This stat isn't really used in vanilla, but the bonus is added twice instead of once, so +1 is in reality +2.
Power Strike Bug - The power strike SrvStFunc ignores the attack rating bonus from skills.txt
Smite Bugs - It wasen't ever meant to hit all the time, they do call the attacker/defender routine

, the problem is that they ignore the results of this, probably because they confused AND with OR. Smite also does not set unitflag #64 which tells the game a skill has been executed successfully (which will cause all kinds of glitches that may seem irrelated), finally. Smite used by monsters uses the damage specified for mode A2, even if they didn't use A2 to launch the skill (and even if they have no damage specified for A2).
Airstrike Bugs - New (but old nontheless)
I forgot to list these two bugs before, the Freezing Catapults in act V don't do anything because the code for their collision functions is broken (I never bothered to look into what exactly is broken, but my guess is that the general radial AoE redesign in v1.10 broke this). The Hell Meteors (stuff in river of flame) is entirely broken, that is meteors flash around the screen but never land, and when they land only rarely explode, and when they explode they spawn just 1 flame, instead of a fire patch (like meteor, and like they worked before v1.10)
Boss Event ScrewupBoss events that are delayed by a timer (Poison Death, Cold Enchanted, Lightning Enchanted, Firegolem Explosion, Fire Enchanted, Lightning Nova on death and others) all use the same timeout Id, as a result each single time a timeout is being set, all of these events will execute their effects.
Client Do Func BugsThe client will continue executing the ClientDoFunc for skills even after you go into hit recovery, which leads to blank zeal swipes and ghost missiles that do not hit anything because they don't exist serverside
Stuck-age BugsAfter using certain skills (Frenzy, Leap Attack, Whirlwind) the player can get stuck in place, this happens (to my knowledge) when you start using the skills in the very moment you are hit by an attack and the server changes your mode to hit recovery, because the client keeps executing the do func (related to previous bug) you remain stuck in this state for eternity
Unowned Skill Summon BugSummons created by skills you do not have (CTC, Oskill) will vanish after random events take place because the summon rehashing function is called in places that shouldn't call it (such as when drinking potions other then rejuv potions)
Ethereal Item BugThe defense bonus to ethereal items will increase every time the item is used in a cube recipe that alters item flags, this happens because the defense stats are saved directly on the item
Monster DamageMonster elemental damage is completely broken, the function Blizzard uses to generate monster stats does not discriminate between the different elemental damage columns, as a result the game will use the damage from the first column for all elementally enchanted attacks the monster can do (=Gloam Bug), this is further complicated by the
feature that elemental damage done by monsters is effected by their critical hit chance.
MissileSrcDamage BugsThe spell casting vipers added by v1.10 will append their melee damage to the poison clouds they release, this isn't really a bug (the code works like it should!), but careless design
Leeching BugMelee attacking monsters that do life, mana and stamina steal damage do twice the amount of damage indicated (this means that those bugged mana drain bosses actually do 512 times the proper damage!!), in the function that creates pDamage after an attack hits incorrectly adds the new value to the old value, instead of setting the old value to the new value!
Generic Damage BugoramaSkills that use SrcDamage values other then 128 do not have the proper amounts of damage as SrcDamage is incorrectly (and inconsistently) applied throughout the code which may lead to damage being reduced more then it should, on missiles the situation is worse as some damage types are not reduced at all.
Item Damage OrderThis is more of a design flaw then a bug, the game will apply the ED% bonus after other damage boni have been applied, this is not a bug because there is no way to change the check order in vanilla (weapon damage and extra weapon damage use the same stat, so changing the order would break ED% completely).
Missile Poison Damage BugPoison rises its ugly head again, blizzard confused Poison_Count stat with Poison_Length when it comes to applying SrcDamage to the missile damage, as a result skills like Multishot (that have SrcDamage other then 128) will end up with invalid poison duration when you have more then one poison source (this is related to the above but deserves a seperate place)
Monster Regen BugMonsters that are low on max hitpoints will end up having no life regeneration (this applies to quill rats and other low enemies on normal only), the calculation used (
(hp / regen) << 10) will result in 0
Crushing Blow BugPlayers that have >99% physical resistance can become immune to crushing blow, as the function used for Crushing Blow does not discriminate between monsters and players (it should be capped to 50% here as well!) when it checks for resistances to lower the damage you take from crushing blow
Summon Stats BugSummoned monsters will recieve extra attack rating and defense equal to 100% of the value listed in MonLvl.txt for their mLvl (noratio is ignored)
Attack Rating BugsMonsters that use ranged attacks that require attack rating (Quill Rats, Blow Pipers etc) have twice the attack rating they should have (due to a incorrect assignment in the attacker / defender code)
Throwing and shooting skills that add an attack rating bonus to the missiles do not add their bonus (it passes 0 to the function instead of reading the bonus of the missile)
Blessed Aim and Penetrate use the same state, as a result the two skills can cancel each other out because they will replace each others state statlists
Life / Damage Shifting BugsThere are many places in the code where Blizzard forgot to handle life and damage in 256ths, this results in 1/256 life assigned to units, which can cause all kinds of weird behavior
Evil Urn SpidersThey were not meant to spawn spiders, the same column (Objects.txt -> Par7) is used for different purposes on the client and the server, the value on the server has to do with the chance of spawning bosses, on the client values other the 0 in this field will spawn spiders or rats (255 = rat, anything else but 0 = spider).
Invalid ObjectsThe ObjGroup data listed in levels.txt is very broken, some groups have a chance of 0% to spawn, other groups do not contain objects and thus just decimate the amount of objects spawning in the area
Curse Resistance GlitchCurse Resistance is checked in the same function that handles most time-based statlists assigned to units, except for a few cases that are handled specially it will be applied to every time-based statlist, which means it will reduce the duration of positive effects as well
Trigger Event BugThe Frozen Horror arctic blast incorrectly triggers events, which can lead to a sprite overflow when the skill is cast on a Sorceress using Chilling Armor
Cleansing GlitchLess severe, but still, cleansing will also reduce the duration of shrines because shrines are incorrectly flagged as curses in states.txt
MonType.txt Lookup BugAll lookups for records in MonType.txt done on the client will incorrectly use the record count from MonProp.txt
Boss Picking Column GlitchThis isn't a real bug, but then again it does cause some likely unintentional behavior (such as generating nests as bosses), the game uses nmon instead of umon to pick bosses after normal, which means they are picked out of the normal enemy pool instead of the special boss pool
Fires Magic Arrows BugYou don't actually fire magic arrows, they only look like magic arrows on the client, in reality they are just regular arrows. Note:
the srvdmgfunc is called properly, but any other appended missile functions are not called (the loss of ammo is not controlled by special functions but by a boolean in missiles.txt).
Magic Pierce and Magic Skill Damage StatsThese stats, while not being used by vanilla, are inconsitently referenced by the code, so should they chose to use them in the future without fixing this mess, expect new bugs
Multishot Lag BugsSeveral boss death effects do not have NoMultishot set to true, as a result encountering and killing them if they have the Multishot UMod will spawn their death effect up to five times (Shenk et al.)
Oblivion Clone BugExtra oblivion knights added by v1.10 and v1.11x do not recieve the proper components, which means they show up with mismatching glow around their hands, this is caused by them not checking the BaseId, but rather checking the HcIdx
Crafted Items BugThe game does not display affix-colors for Crafted Items because they were forgotten in the item-color function inside D2Client.dll
Drop Limit BugThe fix to the old chest glitch has broken some act boss drops, some act bosses were originally meant to drop 7 rather then 6 items
Ai BugsMany monster Ais are incompletely coded, for example the Fetish Shamans will never use their Fetish Aura skill and Oblivion Knights do not attempt to heal allies (in the later case the game even attempts to pick a target for healing, which needlessly wastes cpu cycles because the return is discarded right away), many other Ais have potential to jam up, this section is too large to cover in detail, theres just
verymuchalot of broken stuff here...
Homing Missile BugThe target seeking flags used on the client and server for missiles that automatically seek a target (Guided Arrow etc) are not identical, this can sometimes lead to different units being targeted on both ends, which makes the missile vanish
Palette Shift BugThe last batch of palettes in RandTransforms.dat is never used by the game because they forget to adjust the index in the only lookup that really matters (the one in the drawing function)
Self-Resurrect BugThe self-resurrect ability of the Reanimated Hordes incorrectly accesses the Ai-Parameters which leads to them almost never resurrecting (or taking very long to resurrect) --- this isn't really a Ai bug because this isn't part of the Ai-code, this is a MonUMod (AiAfterDeath)
Trapped Souls BugTrapped souls that drop their items with a delay (those that go up in flames when you touch them), do not take into account your characters gold and magic find, they pass NULL to the tc function
Copy/Paste Is 1337 BugBlizzard copy/pasted that Desert level for the uber quest in v1.11x, and forgot to set the Waypoint Id to -1 (255), waypoint lists are constructed clientside, and we all know what that means
Diablo Clone BugUber Diablo (or the Clone, one of the two) doesn't use the diablo-mode chart entry, instead he uses the same normal monsters use, which can cause unexpected problems
Treasure Class Upgrade BugThis is a critical bug, the function does not check whenever it is reading the last record inside the TCEX BinImage, as a result it can end up traversing random memory until it asplodes
Poison Cloud BugsSome poison clouds have invalid hitclass set in Missiles.txt, as a result they play the same sound like a javelin does when you walk into them, which can be very annoying. The trail left by Plague Javelin doesn't do damage, because of a typo in the serverside movement function
Mana Burn BugMelee attackers that have the mana burn boss mod will incorrectly deal 256 times more manasteal damage then they should (the damage is shifted twice instead of once)
Quest Drop BugSome quest flags are being reset when they shouldn't allowing you to recieve Andariels and Duriels quest drop infinite times until you visit Act II.
Fangskin BugThe treasureclass assigned to Fangskin on hell doesn't exist
Monster Chain BugThe guest monsters added in v1.11b (and also the Diablo Clone) have broken chains which will lead to various (but not really noteworthy) glitches
Broken RunewordsSome of the property codes assigned to the v1.11x runewords are not spelled properly (which will make the game quit assigning stats after the bad property is reached, which in itself is a bug, it should just skip it, like it does elsewhere)
Various Tileset Flag BugsThere are several places where the walkable flags in the tiles are not properly set, allowing players to go to places they shouldn't be able to, this also applies to monsters spawning on inaccessable islands (for example in the Act III sewers)
Affix GlitchesSome items spawn with affixes they shouldn't recieve (such as circlets listed for both series of damage reduction, instead of only the first one meant for circlets), Small Charms should be able to recieve the Lucky prefix, instead the small charm version is assigned to large charms, some affixes have invalid itemtypes listed, which prevents them from spawning on those types (staves noteably listed as staff and not staf). There also are some problems with the qLvl and reqLvl of some affixes (ex. King's and Master's have the same qLvl and among the resistance affixes the strongest affixes have a lower level then a bunch of weaker ones available on the same items [IIRC] <keyword rods>), another incarnation of this is the Lizard's prefix on small charms, there are two variants available at the same qLvl that add different values (rather then one affix only), the weaker one was meant to be replaced by the later (I assume this because thats how some others like this are set up, the masters of copy/paste just forgot to edit the line...)
New ones added I forgot beforeUber Quest ItemsThe Uber Quest Items drop in single player as well, where they are completely useless (quest drops like these
should be hardcoded...)
Intelligence WrapThe AiParams for some monsters (Vampires noteably) are incorrect, leading to the earliest species being more aggressive then the end-game variants, the Guest Monsters do not have their Ai adjusted at all, which means most of them act like Act1-2 enemies
The Unspellable OneThat NPC who's name nobody can properly spell in Act III uses a MagicLevel of 1 for everything because Blizzard too cannot spell his name (the column header has a typo in it)
Privilege BugsCertain things are handled clientside that should never be controlled by the client, for very obvious reasons I wont mention what, because these things are presently
not known to the armies of seething scriptkiddiots and I have no intention to feed them.