-
Notifications
You must be signed in to change notification settings - Fork 926
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:
|
Talking to any NPC while help is being displayed will cause the npc panel to mix with it and stay broken even after closing help (can't interact with it) |
diasurgical/DevilutionX#5248 |
Analysis of bug by @AJenboref: diasurgical/DevilutionX#5346 (comment)
|
Solitary pillar in |
Everyone loves item bugs, so here's a few I just fixed after much pondering:
|
I found an exploit created by the negative stat shrines. First, let's lay down a few rules:
This trick works best with a level 1 Warrior. If you hit enough shrines to get your magic reduced to -1, then start a new game, it will be 255 since the value is unsigned. If you click any item it will refresh back to 50 however. The idea is you get a bunch of books for spells you cannot learn, get your magic down to -1, make a new game and use the books as this will not reset the stat. You then have to reduce your magic all over again back to 0 this time, hit the shrines to set your mana to zero, then drink elixirs to get mana again. For strength and dexterity which don't have stat effects, it works even better. On a level 1 warrior, you could save/load before the random stat shrines and keep hitting until you get them to -1, make a new game, then they will be maxed out! |
There is formula for the damage of Guardian which is not being used and the damage of Firebolt is used instead: devilution/Source/missiles.cpp Line 2772 in 50c9b53
|
Click an NPC, while walking to them click and hold down the inv button. Once the NPC interaction starts let go of the inv button. |
Rampant use of The attached file below contains debug output where I traced the calls to the RNG functions in DevilutionX. The functions in DevilutionX are more or less just renamed from the original functions in Devilution.
The most obvious solution to this would be to use the unmodified RNG state when capturing a seed to be used later. However, it would also make some sense to implement the ability to instance the RNG so you can generate a specific item or object's random number sequence without disturbing the random number sequence of, say, the RNG used for game mechanics. |
Because the game captures random numbers to be used later as seeds for the RNG, it's possible for two chests on the same dungeon level to produce duplicate items. The conditions for the simplest and most likely way for this to happen are outlined below.
If the stars align, RNG state after generating the chest's first item will be identical to the seed for the chest that was placed after it. I captured the following output from Devilution using
I believe in this case, the safest solution would be to "create space" in the random number sequence by burning random numbers after capturing the object seed. The number of random numbers burned should be determined based on the expected number of random numbers it would take to generate the items from the chest. Then the burned numbers would be used exclusively for generating the items from the chest, forcing the next chest to be seeded using a random number later in the sequence. |
2 hellfire bugs: placing nakrul lever uses a loop for finding a random spot for it then discards the results and forces it to be in front of his room anyway - as @galaxyhaxz suggested, probably leftover from dev testing - they forced it to spawn in front of his room so they wouldn't have to look for it :D |
The RNG bug described in diasurgical/DevilutionX#2206 leads to some odd interactions if you happen to be unlucky enough to get the 1 in 4 billion value at key points. Griswold can spawn with a shop that only offers two normal items: This also can happen with Pepin and (if playing in Hellfire) Adria. Pepin will only offer the potions he always sells (will not offer any scrolls or elixirs), Adria will only offer books. Another possible effect is repairing a staff can instead consume all charges, causing the max charges to be completely depleted at the same time. This is much harder to trigger as you not only need to get the bad roll but you need to have a combination of player level and staff spell level so that the maximum recharge amount (plevel / slevel) is not a power of two. Certain oils could give less of a bonus than expected (Oil of Mastery, Oil of Skill, Oil of Fortitude, Oil of Imperviousness) Hell levels could have a visual glitch due to a bad substitution where a piece of bone embedded in the ground is used on one tile instead of a bone spur sticking up. |
diasurgical/DevilutionX#6661 Scavengers leave the pack while feeding but never rejoin it: Feeding scavengers checked for nonzero values and overwrote leaderflag to 0, while GroupUnity only makes monsters with flag 2 rejoin packs = scavengers after feeding didn't have a way to rejoin pack. Stone curse broke packs hard - if you stoned any monster, whole pack would wait for it = stuck. |
I'd call that a feature in my book. |
Technically, only the leader is broke as he waits to sync all pack members and will idle until you are close. The members will still attack, but will not go farther than his radius.
|
The special case animation for the magic rock causes a couple of bugs/oddities compared to other diablo/hellfire items. Trying to pick up the rock from the stand with a full inventory causes it to fall to the floor and be drawn behind the stand: diasurgical/DevilutionX#7304 When the rock is "dropped" there's no falling animation, it goes straight into the flicker animation. The sound effect that plays sounds like a combination of a ring falling and a heavy thump, seems like it might've been intended to just have the thump sfx. |
Wrong tile is used for south wall corners |
Strangely, placing Lazarus and friends works/worked the same way in DevilutionX (haven't confirmed if this is a leftover from vanilla, but it seems plausible) as a random location is searched for, and then they were placed at a specific location after a valid location was found. |
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 Bone
is quest level 2, so the portal would appear on dungeon level 2 at the same X/Y coordinate.monster.cpp -> ProcessMonsters
The text was updated successfully, but these errors were encountered: