If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!

Bugs:Diablo (Windows)

From The Cutting Room Floor
Jump to navigation Jump to search

This page details bugs of Diablo (Windows).

Exploits

Access Nightmare/Hell in Singleplayer

Normally, Nightmare and Hell difficulty are only accessible in Multiplayer. However, if you start a multiplayer game in these difficulties and then start a singleplayer game, it will carry over the difficulty that you picked. This can lead to further bugs.

Access Unlearned Spells

If you click on the spell speedbook square and press 'S' at the same time, you will access whatever spell is last in memory, even if your character doesn't already know it. If it isn't known, it will be marked as a Level 0 spell. If you loaded a character from a previous save, it will be whatever spell was selected on that previous save. If you haven't previously loaded a character, it will be a Null Skill, which does nothing and looks like a fire-based spell that doesn't cost mana.

In the spellbook, clicking the small area between the number 4 and the right edge of the spellbook allows you to access a fifth, blank spellbook page. At one point during the game's development, five spellbook pages were available. The fifth page was removed, but its click "hotspot" was not.

Casting a spell from a scroll while a book-learned spell is on your speedbar will be cast at the level that the book-learned spell is at. For example, if you have Level 15 Firebolt on your speedbar and right-click a Scroll of Inferno, Inferno will be cast at Level 15.

Duplicating Items

A bug exists in the game which, if exploited, allows the player to duplicate any item at will. When the player is walking to pick up an item, if an item is removed from the belt or inventory at the same time and then dropped after the player has picked up the item off the ground, the item that is dropped will be an exact duplicate of the item that was picked up. This can easily be done by accident, and Blizzard claims that it would require a total rewrite of the game's engine to fix it.

Another way of duplicating items is using Town Portals. If a character goes to pick up an item as he/she is entering a Town Portal, a duplicate item will appear on the other side.

In later versions of the game, if more than one copy of an item is dropped on the ground, it will be removed. This fix is bugged though, and it can erroneously remove legitimate items. Most commonly, it will remove potions that are bought from vendors. Additionally, multiple ears dropped from the same player will be treated as duplicates, causing the game to only allow one ear per player on the ground.

Misc

When walking horizontally along the monitor, characters (both monsters and the player) are nearly impossible to hit with spells or arrows, regardless of which direction the projectile is coming from.

When entering the caves from town (using the entrance that opens near Wirt), you will enter Level 9 of the dungeon. On the entrance leading to town, there is a small section that erroneously points to level 8, instead of town. When the player runs their mouse over the entrance to town, there is a spot that reads "Up to Level 8". If they click on it, their player will walk all the way to the entrance to level 8, even if you haven't previously gone there. If Teleport is used, the player will teleport to the entrance and enter.

Random Generation

This section focuses on bugs regarding the random generation.

The game's level generation isn't always perfect. It can sometimes spawn monsters within closed doors, or generate regions that are impossible to access unless the player uses Phasing or Teleport.

Lava pools in the Caves can sometimes generate regions without tiles present; the player can look out into the void.

Unique Item Generation

The unique item generation in Diablo is much different than subsequent games in the series, and is riddled with errors. Within the code is a list of unique items. The first unique item in the list that meets the required level is chosen, and then it cannot spawn again. However, subsequent items in the list can then appear, since that first unique item is skipped. The list is iterated in reverse so that the player always finds the most powerful item first.

Intentionally, or unintentionally, the list of unique items that were found is not referenced in multiplayer. Instead, the game always picks the first item in the list that matches the level qualifier. As a result, it is impossible to find the following items in multiplayer, because their required level is equal to other unique items:

Item Name Item Type
The Mangler Large Axe
Crackrust Mace
Storm Spire War Staff
Bramble Ring
The Deflector Buckler
Gonnagal's Dirk Dagger
Lightforge Mace

This suffers further from a severe bug. When "New Game" is chosen from an existing character slot, the list of unique items that were found does not persist into the new savegame. As a result, any loot in singleplayer that was found as a result of a "second choice" in the unique item list will be morphed into the most powerful available item as per its itemlevel, even if this results in the player having two copies of the same item.

Some items are impossible to find in singleplayer through legitimate means without finding another item first, either because there are multiple unique items for the same item type with the same required item level (see the above list), or because the base item type has a minimum level higher than the unique item can spawn with, and there is another unique item whose minimum level is less than (or equal to) the base item type's required item level.

As a result, if any of the items from the list above or below are found by legitimate means in singleplayer, it will always be morphed into another item upon starting a new game.

Item Name Item Type Unique Min Level Item Type Min Level Overridden by... Overridden Min Level
The Celestial Bow Long Bow 2 5 The Blackoak Bow 5
Deadly Hunter Composite Bow 3 7 Bow of the Dead 5
Gibbous Moon Broad Sword 2 8 Shadowhawk 8
BloodSlayer Broad Axe 3 8 Stonecleaver 7
Staff of Shadows Long Staff 2 4 Immolator 4
Helm of Sprits Helm 1 8 OverLord's Helm 7
Ring of Regha Ring 1 5 Constricting Ring 5
The Bleeder 2

However, due to another bug, it is actually possible to acquire the items in the above table without the morphing issue. When a monster is killed in a higher difficulty level, it is given a bonus to the minimum level of the item type that it is spawned:

Difficulty Level Bonus
Normal +0
Nightmare +15
Hell +30

This is clearly intentional and logical; in higher difficulties, better items spawn. In Hell mode for example, monsters that were normally level 1 would be able to drop item types of level 31 and above. This is high enough to cover every item type in the game.

The minimum level that the unique spawns at though is based on the base, unaltered value, however. So for example, Long Staffs cannot spawn from level 2 enemies on Normal difficulty. On Nightmare difficulty, they can, however, because their modified level is 17. Since the base level of the monster is what determines which unique item appears, a Staff of Shadows would appear, not an Immolator. Note though that unique monsters have +4 to their base levels, so if a unique Long Staff were to drop from a unique monster on dungeon level 2, it would be an Immolator, not a Staff of Shadows, since the base level would be 6, and high enough to drop the Immolator.

Therefore, if we want to acquire any of the items above without the possibility of them morphing, we have to abuse another bug to get around these two bugs.

This weird quirk has the effect of making Nightmare and Hell worse for farming loot, since end-game bosses like Lazarus and Diablo drop the exact same items as in Normal mode.

This also affects magic items. The affixes that are generated on magic items are based on the base, unaltered level of monsters, and aren't affected by difficulty level. However, the affixes on items that Wirt sells you are based on your character level, and thus you're more likely to find better items from him than you are from monsters.

Unexpected Regeneration

Occasionally, levels in the game will always regenerate every time they are accessed, instead of the first time. Frustratingly, this sometimes causes you to also not appear at the entrance, and instead inside a group of monsters, since the game uses the previous position of the staircase.

Negative Numbers

Very, very rarely, the random number generator can generate a negative number when the code expects a number to fall within a random range of positive numbers. Specifically, the issue lies with a broken implementation of Borland's "random" function (as listed in the Hellfire source code):

//***************************************************************************
//***************************************************************************
long GetRndSeed() {
	SeedCount++;
	static const DWORD INCREMENT = 1;
	static const DWORD MULTIPLIER = 0x015a4e35L;
	sglGameSeed = MULTIPLIER * sglGameSeed + INCREMENT;
	return abs(sglGameSeed);
}


//***************************************************************************
//***************************************************************************
long random(byte idx,long v) {
	if (v <= 0) return 0;

	// high order bits are more "random" than low order bits
	if (v < 0x0ffff) return (GetRndSeed() >> 16) % v;

	return GetRndSeed() % v;
}

If sglGameSeed happens to be 1457187811, the resulting call of random on any v that is greater than 2 and non-power-of-two will result in a negative number. To put it more plainly: if the game needs to generate a random number within a range (and the maximum value of the range is greater than 2 and isn't a power of two), there is a very small chance that the number generated will actually be a negative number, instead of a number within that range. This can wreak havoc in the game, causing anything from memory corruption to random sound effects being played. Since the chances of this happening are incredibly small and the effects are so random, it's unlikely that this has been observed more than a handful of times over the years.

Spells

Mana Shield

If the player takes more damage than they have Life, then they will not go into their get-hit animation, ostensibly to prevent the player from going into hit recovery instead of death. However, while you are under the effect of Mana Shield, the check is still performed, and as a result, if the player has very low hitpoints, they can become immune to any kind of stuns.

If Infravision wears off while the player is wielding the Constricting Ring, the ring will do one frame's worth of damage through the Mana Shield.

Burning crosses completely ignore Mana Shield.

Despite the spellbook listing otherwise, Mana Shield always reduces the amount of damage taken by 33%. Therefore it makes no difference at all how high Mana Shield is raised to; Level 1 Mana Shield is just as effective as Level 15. An exception to this is the Constricting Ring; its life-draining effect is reduced by 25% instead.

Fireball

Fireball misstates how much damage it does in the spellbook. A direct hit from a fireball will cause some initial damage, but the splash damage from the fireball will also deal damage to the target that is directly hit. This clearly isn't intentional, as it causes Fireball to become the strongest spell in the game by far. Another bug is that the splash damage is removed (and only the direct damage is applied) if the fireball travels over an object such as a chest or a spike.

Flash

Conversely, Flash does less damage than is indicated in the spellbook. For some reason, the position of the player relative to the monster makes a difference as to how much damage the monster receives.

   1
  2 3
 4 X 5
  6 7
   8

If the player is standing in the X in the diagram above and casts Flash, the monsters in squares 1, 3, and 5 will only receive 10% of the damage. If the monster is in the X, if you stand in squares 4, 6, or 8, you will only deal 10% of the stated damage.

Chain Lightning

Chain Lightning can often spawn more sprites/missiles than the game can handle, causing the spell effect to be reduced to compensate.

Town Portal

Town Portals that are placed in special levels will also appear in other levels at the same X/Y coordinates:

A portal in... ...will also appear in...
King Leoric's Tomb Level 1
Chamber of Bone Level 2
Maze (unused) Level 3
Poisoned Water Supply Level 4
Archbishop Lazarus's Lair Level 5

Teleport

You can teleport onto squares that monsters occupy. If you do so, you cannot attack the monster, but they can attack you. Likewise, you can teleport onto Golems.

You can teleport into areas that are normally inaccessible. This includes some patches of land that are behind walls, but don't appear to be floors. Archbishop Lazarus's lair is notorious for having many areas like this. Additionally, the staircases within the Hell levels can be teleported into. If the player teleports into them, they can shoot ranged attacks from their position, but ranged and melee attacks cannot hit them.

With correct timing, the player can queue a teleport as they are entering a new level. The X/Y position of the teleport is saved, and when the player enters the level, they will teleport to those same X/Y coordinates on the new level. With good enough luck, the player can wind up teleporting all the way across a level.

Golem

The amount of hitpoints in the spellbook description is incorrect. It is actually a fraction of the user's maximum mana. If the player has negative max mana (due to one of the rollover bugs described above), the max mana will be interpreted as an unsigned number instead of a signed number and the golem will have near-infinite amount of health.

Golems can be seen from an infinite distance by ranged attackers (such as succubi, goat archers, and skeleton archers), even if the ranged attacker is not aware of your presence.

If a player summons a golem and leaves a dungeon, the golem is unsummoned. However, if it is a multiplayer game, other players will not see that the golem has been unsummoned. From their perspective, it will be alive and well. (The summoning player won't be able to see it, however, if they return to the dungeon level.)

Should the player die while Diablo has his attention focused on the player, Diablo will continue attacking the player using melee, and ignore their summoned golem. If the player is patient and lucky enough, the golem will eventually kill Diablo, and the ending cinematic will play. In other words: it is possible to beat the game while you are dead.

Multiple golems summoned by different players in multiplayer will attack each other, regardless of friendly fire/hostility.

You can summon a Golem on the tile you are currently standing on, so long as you are adjacent to a monster.

Resurrect

If a player dies while wearing an item that reduces health, there is a chance that they cannot be resurrected. (If the player is wearing no items that increase health, they will always be unable to be resurrected.) This is because items that the player was wearing are dropped, and in the process of doing so, their health gets raised past 0, despite being dead. The Resurrect skill checks for both a dead player and their health being zero, hence why they cannot be resurrected.

Shrines

Enchanted Shrines normally give +1 to all spells and reduce one spell by one level. However, should a spell be maxed out but also chosen to reduce the spell level, it will be reduced by two levels instead of 1. This is because the shrine first increases all spell levels by 1, and then reduces a random spell by 2.

Mysterious Shrines suffer from a similar issue. Normally they give +5 to one stat and reduce all other stats by 1. They do not check if a stat is maxed before attempting to increase it, however. As a result, should the player have a stat maxed out and that stat is chosen by the Mysterious Shrine to be raised, the effect is that the player will have all of their other stats reduced by 1. Likewise, Fountains of Tears (which reduce a random stat by 1 and increase another random stat by 1) have this problem as well.

Hidden Shrines normally reduce one item's durability by 10, but increase all other items durability by 10. There is no maximum as to how high the item's durability can go. However, the durability is only saved as a single byte in the save file. As a result, durability will overflow. Additionally, there are some issues when items are raised to specific durability values using Hidden Shrines:

  • Items that are raised to 255 durability will become indestructible and won't lose durability.
  • Items that are raised to 256 durability will have 0 durability upon saving and reopening the save. If the item is repaired by Griswold, the game will crash. If a Warrior attempts to repair the item, it will disappear.

Thaumaturgic Shrines do not refill trapped chests.

Visual Glitches

Some cave stalagmites have visual glitches due to a missing tile.

The palette for the loadscreen on the Poisoned Water Supply is incorrect. The water's palette translation is erroneously applied the load screen. As a result, portions of the loadscreen will appear bright yellow/orange if the quest hasn't been completed, and blue if the quest has been completed.

Numerous areas around Tristram have minor graphical artifacts, missing shadows under trees, etc.

Light Radius

The player has a light radius around them, which not only brightens the area around them, but also impacts a few key gameplay mechanics. Players cannot see monsters who are outside of their light radius, and likewise, monsters cannot be awakened if they fall outside the player's light radius. Therefore, for a stealth-oriented build, it might be wiser to have items which reduce the player's light radius, despite this being considered a curse by the developers. (Cursed items cannot be sold to vendors.)

However, reducing the light radius is bugged. When an item with light-radius-altering properties is equipped, the minimum light radius is changed to 100%. Meaning, if an item is equipped with a -20% reduction to the light radius, no effect will be visible. That is, until the player moves to another level, in which case the light radius will be at the proper amount (80%). This persists until another light-radius-altering item is equipped. This does not affect the visuals however, so it will still look as if you are at an 80% light radius.

Light radius also affects how far away you need to be from walls in order for them to be revealed on the automap. At -80% light radius however, the game is bugged and sometimes won't reveal walls correctly. This is because when the light radius is reduced to this level, the game will try to incorrectly reveal a tile at the player's (X, X) position instead of their (X, Y) position. Additionally, you can only see monsters diagonally when at this low of a light level, and your character sprite disappears when moving up/down.

Knockback

The light radius does not get updated when you are knocked back. Therefore, it's possible to fall outside of your own light radius and become invisible.

Bosses

Boss monsters also have a light radius that follows them. However, if you leave and re-enter the level, the light radius will reappear at the boss's spawn position.

The light square of Moonbender (a Blink boss) will freeze in place if it 'blinks' next to you, and won't follow the boss even if the boss moves afterward.