diasurgical / devilution Public
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Document Diablo's bugs #64
Comments
|
Are these bugs going to be fixed in devilution after devilution development becomes stable or is the devilution source code gonna be a pure documentation update including leaving in the vanilla bugs? |
|
The |
|
Ah ok, I did read this like a week ago but I guess I forgot ;D. |
|
The pull request above is basically a copy of the text from the original posting with some Markup for formatting. Is something like this is what is being requested? |
|
We can definitely make use of your copy in case the original one goes down. However, this issue is to track new bugs that haven't been documented anywhere else, so that we can fix them in the future. (Not Devilution of course, but mods based on) |
|
As a rule for any bug published can we have the save file for this? I would like to have something to make this more easy to replicate... because I am thinking on looking at the TP sequence and the Chamber of bone locations... because Technically TP is working but it's not marking the chamber of bone as a different map , if I am not mistaken... EDIT: I am probably completely wrong on that one. The dungeon map array looks ok for the most part... Perhaps the Portal setting and getting is wrong? Perhaps it's not specifying the correct map for special maps? Ok . Which memory map (showing address locations) is the most accurate for the origional diablo? Do you have it ? All the addresses I am seeing appear to be inaccurate. |
|
@ApertureSecurity check Found another one while testing the world.cpp refactor. This bug is also part of vanilla. EDIT: This bug was Devilution only |
|
@galaxyhaxz is this in the origional game or are we going to add this to our bug list? |
|
Well, it looks like the door issue mentioned above was devilution specific. However, these pieces are saved with the character so it becomes bugged when loading the character in a vanilla game. ee56751 |
Interesting find. This is good to know when validating bugs in the future against vanilla Diablo. Basically, we can use the same seed for dungeon generation when validation, but we can't use save files. |
|
There is an overflow bug in the dungeon algorithm of Cathedral that sometimes causes out-of-map pieces. Documented here. I can confirm that Devilution works correctly (i.e. is bugged like vanilla). Current known seeds: |
Eldritch Shrine BugThe Eldritch shrine (turns healing/mana pots into rejuvs and full pots into full rejuvs) uses the player's holding item buffer to temporarily store the rejuvs. What could possibly go wrong here?........ xD xD If you click on the shrine and then pickup an item from your inventory/belt, the item you're holding will get overwritten. When you place it back down, it turns into a rejuv. BEWARE! As a side note, this can be exploited for an extra rejuv, grabbing say 1 piece of gold or some junk item. BugfixThe routine for this in |
Haha, great hack! |
|
It's great. We are gonna be able to create a version of Diablo that fixes all known bugs. Of course, Devilution will contain all original bugs to stay true to its origin. |
Is this in vanilla too? Never seen the panel being incorrectly rendered before. |
|
All your belt items also went invisible. Could be a miss calculated CelSkip/CelCap |
|
@mewmew Yeah it's in vanilla. You won't notice the bug unless you hover your mouse over that spot in the control panel, it overwrites the panel graphic. I rewrote the whole render and discovered this bug while testing. It's likely caused by @AJenbo The belt items is just a side effect of the new render, not in vanilla. If you notice there's transparency! <3 Edit: attached save file so you can test it. Load the game and place mouse over top left corner. Interesting is that this bug doesn't happen in the debug release or prior. So it was caused by something changed in the render in 1.00. |
|
@AJenbo had pointed this bug out awhile back, as it was thought to be caused by my render re-implementation. Actually, it's caused by the whole |
|
Nice catch, my print screen has a delay so getting shots like this is a pain :) The other yellow box is causing issues when we upgrade the render to have per-pixel transparency because it renders the tile twice, resulting in 75% opaqueness instead of 50% |
|
@AJenbo I believe that issue is the same one I reported above. There's a broken tile that can occasionally spawn in the caves that does that. Here is a list of seeds for Caves with that broken tile and the coordinate of it: Here is code to fix the tile by brute force. It should be ran during Additionally, here are seeds for Catacombs that contain the broken wall tile: And the code to fix it: Last but not least, some more seeds with the overflow bug in DRLG_L1 documented by @mewmew: |
@NiteKat do you have a save game to reproduce? Would be very useful for trying to fix the issue. |
diasurgical/devilutionX#2879 |
Somehow this had just never been documented here. |
|
Never seen this mentioned as a bug, so here's my take. There are two unique items in the game which can spawn on two base items. "Gnarled Root" (Club/Spiked Club) and "Stormshield" (Tower/Gothic Shield). This is definitely a bug as items in the global item table are supposed to have a unique ID per item, so unique items can reference that ID. However, Club/Spiked Club use the same ID instead of the latter being none. Same applies to tower shield. Additionally, Warrior's Club has the same entry for unique item lookup as Club. It should be empty however. Lightforge also uses the wrong lookup type in the unique item table, using a regular mace, allowing it to drop. It always morphs on a new game because of this. It is a quest item and special drop. |
|
The way diablo chooses levels for magic affixes is buggy and leads to several problems. So I'll explain. First they are chosen in one of three ways depending on item type:
Bug # 1: Staves are like jewelry in that they are always supposed to be magic or contain charges. It is possible however to find a plain white staff. For example, a level 4 monster drops a magic staff with a suffix, however there are no suffixes between the level range (2-4) thus it drops without anything. Bug # 2: Minimum magic level is capped to 25 max. Now only Wirt is capable of generating items this high. Why is this a problem? It means past a certain point some affixes stop spawning. At character level 50, Wirt can no longer sell Obsidian (thus the famous Ob Zods). When fixing monsters to drop with their difficulty bonus, it opens up a plethora of affix bugs.
When removing the level cap, it additionally opens up these bugs:
This may just be an odd design quirk, but once you fix monsters, the minimum level set on affixes really starts breaking the game. |
|
Diablo's magical unique loot system explained using staff of shadows as an example: Which means in theory staff of shadows can never drop, because if lvl 4+ loot drops (to roll the long staff), then immolator will always gets picked over staff of shadows. Ofc you can get it to drop in single player if immolator drops first, because then it will stop blocking staff of shadows - such a staff will morph back into immolator in vanilla's new game. However, it's possible to get a stable one because of a bug described in diasurgical/devilutionX#2763 To make it even more confusing, unique monsters have a hardcoded +4 bonus to affix/unique generation level BUT NOT the base item level - which means that you can only get staff of shadows from a NON-UNIQUE lvl 2-3 monster on nightmare/hell difficulty, because if it was a unique monster, the long staff could always hit immolator. This is certainly a bug because there's 0 reason why for example celestial bow (which looks like something a lvl 3 rogue would be happy about but later? ...) can only drop on nightmare or hell ;) To make it even more funny, it means that in singleplayer you can get some uniques in 2 versions - stable or unstable that will morph in a new game. |
|
Adjacent attack damage from Monk, Bard, and Barbarian attacks with certain weapon types is handled by calling the damage function again but passing the negative |
|
Runes of Lightning never deal damage. When a monster steps on the rune, a Lightball missile is generated on the tile, but damage is never set for the missile, so min and max damage are both 0. You'll hear it hit plenty of times, but every hit deals 0 damage. Editing to add a thanks to @StephenCWills for looking into this one with me. Wasn't sure of his github handle at first so I didn't add it in the initial post. :) |
|
Because of how unshifted damage is randomized, 0-0 dmg will end up randomizing 0-63 (64 = 1 hp), so the damage is less than 1 hp, can add up - lightning rune had 0 dmg but ended up actually damaging the player because of this |
|
Save data can overflow the save buffer. The buffer size is 262147 bytes, but a save can take up to 322586 bytes. In Hellfire the issue is more likely to happen as the save game can reach 327218, mostly because of additional item data. |
|
Monster tags (mWhoHit) for experience are not shared with players when they enter a level that has active players on it. This means that you can have a player receive less than full XP while another player receives full XP. This happens when a player has hit a monster, another player loads onto the level and kills the hit monster before anyone else hits the monster again. The player that loaded onto the floor only sees themselves hit the monster, so they get full XP, while the original player (or players) get split XP. I also noticed that monster tags get cleared (mWhoHit) if all players leave a floor. I'd say it's debatable if this is a bug or not, but feels like it is (and feels connected to the above issue). Editing to add: diasurgical/devilutionX#3111 I did not test to confirm, but it is very likely this issue with mWhoHit is also Vanilla behavior. It's possible for mWhoHit to just desync altogether even if all players were on the floor during a fight with a monster. As described in the linked issue, the player that attempted the attack missed, but the other player saw the hit land, so mWhoHit desynced. If the player that saw a hit now kills the monster, they get half XP while the other player gets 0 XP. Monster health did not desync at all, so mWhoHit does not use the same mechanisms that damage to monsters use. |
|
Monster hp is not synced when a player enters the level. |
|
Monsters will inform the group lader that they spotted the player, but the leader will not inform the rest of the pack. This can often lead to situations where groups are stuck because a single member of it is unaware that the fight has started and the rest of them do not want to leave him behind. |
|
Scavengers may leave a group twice, once if separated, and a second time if they need to eat. This leads to the leaders pack size under flowing and the leader then thinking there are 255 minions who aren't following orders, preventing it from moving anymore during the game. |
|
diasurgical/devilutionX#3158 INFO: (36 84) GENERATING GOLD PILE: 54
INFO: (36 84) OVERWRITING GOLD PILE: 27
INFO: (36 84) OVERWRITING GOLD PILE: 13
INFO: (36 84) OVERWRITING GOLD PILE: 6
INFO: (36 84) OVERWRITING GOLD PILE: 3
INFO: (36 84) OVERWRITING GOLD PILE: 1
INFO: (36 84) OVERWRITING GOLD PILE: 0The reason people don't really see this one is
This bug also has a second part, found by @galaxyhaxz |
|
diasurgical/devilutionX#3260 If hit by a missile player can resist and had > 0 resistance against, the game would play the sound of attacker's class getting hit for both players. |
|
|
|
diasurgical/devilutionX#3485 |
Good hiding place! |
|
Algorithm for checking if you have the stats to use an equipped item is poopy. Items requiring no stats technically require 0 stats, so going negative makes you unable to use any items. You equip civerb's cudgel, your magic is -2. Considering the slot order it means that if you equipped a chest piece that brought your stats below 0, it'd make ALL items unusable : D |




















Currently documented bugs: The DSF Buglist for Diablo v1.09 (Lurker Lounge)
The goal of this issue is to document any new bugs we come across while examining the code that are native to the original game. This will help us fix them later on when we make mods/ports.
New bugs discovered (last update 06/24/18)
Chamber of Boneis quest level 2, so the portal would appear on dungeon level 2 at the same X/Y coordinate.monster.cpp -> ProcessMonstersThe text was updated successfully, but these errors were encountered: