Closed mewmew closed 3 years ago
Yay I guessed correctly :)
Also this is an extremely inefficient way to search for a good spot to land :/
We have a save game for anyone that would like to see it in effect: https://github.com/diasurgical/devilutionX/issues/1566
This is definitely a bug--however I think from their point of view they thought this would never actually be possible (there cannot be enough monsters/objects/players to take up all free tiles) thus didn't bother to add a fail safe.
Edit: this could potentially create a bug in mods where someone adds summoning and allows enough monsters to spawn indefinitely, to where the only free tile is the one already being stood upon.
Edit 2: Also as Anders said, it might be better if they had picked a tile, and if that tile isn't good, search around that tile first before starting the loop all over.
Since it uses random it could potentially pick the same wall tile 12544 times and then give up and teleport you in to it regardless :)
Since it uses random it could potentially pick the same wall tile 12544 times and then give up and teleport you in to it regardless :)
To be fair, any psuedo-random number generator with anything remotely resembling uniform distribution should never do that.
Yay I guessed correctly :)
Also this is an extremely inefficient way to search for a good spot to land :/
We have a save game for anyone that would like to see it in effect: diasurgical/devilutionX#1566
Wow, incredible that we have a reproducible save file that triggers this bug!
The psuedo-random number generator is known to only be 95% uniform so just have enough people play and it will eventually happen :)
Also casting phasing directly only gives 500 attempts as opposed to 112x112 making a bad tile selection far more likely. just saying :P
If the random number generator ends up giving X-Y coordinate pairs that always are on bad tiles (e.g. solid, with object or with monster) then after a total of MAXDUNX * MAXDUNY tries, it will still cast phasing to teleport to the bad tile.