diasurgical / devilutionX

Diablo build for modern operating systems
Other
8.01k stars 786 forks source link

[Feature Request]: QoL - Rerolling shop items via keyboard shortcut to prevent long shopping sessions #7426

Closed sandreas closed 1 week ago

sandreas commented 1 week ago

Feature Type

Quality of Life

Describe

To find specific weapons on Griswold or Wirt (e.g. King's Bastard Sword of the Haste, a huge amount of time might go into restarting the game to reroll the shop items and try again.

It would be great to have an (off by default) keyboard shortcut to reroll shop items on-the-fly without having to restart (e.g. CTRL+R).

Feedback welcome.

StephenCWills commented 1 week ago

Duplicate #4766

sandreas commented 1 week ago

@StephenCWills Thanks for the quick response. I'm sorry I did not find this - I really searched for it :-) Never mind, seems to be seen as ruining the game. Understandable.

AJenbo commented 1 week ago

As a note to why; we might as well add a "Generate item option" at that point where it automatically rolls new shops until it gets the wanred item.

sandreas commented 1 week ago

As a note to why; we might as well add a "Generate item option" at that point where it automatically rolls new shops until it gets the wanred item.

This is kind of true - maybe I did not think this through.

Although this would still leave Jewelry and High-Level-Armors out (due to the fact that Jewelry is not available in shops and the price limit for items). Also does not remove the random aspect of the exact percentage / value of the prefix-suffix combinations (e.g. To Hit).

A "10 second timer between rerolls" to have at least a little gap - or maybe make this option only available for level 45+ chars would prevent getting rid of all fun :-) However, I understand the reasoning and am ok with it.

Thanks for pointing the reasons out and again for making this. Had a lot of fun on my linux machine recently.

AJenbo commented 1 week ago

I guess you could always script some input, with controller support that should be pretty easy i would assume.

galaxyhaxz commented 1 week ago

A "10 second timer between rerolls" to have at least a little gap

In Diablo 2 there was a problem with "shop bots" which would simply go in and out of red portals to reroll vendors, making it trivial to get nearly whatever magic item you need. Since magic items are lower tier in that game, it's more permissible. But in D1 where you only have magic/uniques and nearly all uniques suck, it makes it too trivial to get the best items. The price limit combined with the affix level limit on Griswold somewhat balance it, but I still think if you want to talk "balance" you'd have to remove magic items from everyone but Wirt, and limit the level Wirt sells while unlocking monsters in the dungeon so people actually have to play the game to find the best loot. Vendors should be stripped of most things in general to prevent abuse IMO

sandreas commented 1 week ago

In Diablo 2 there was a problem with "shop bots" which would simply go in and out of red portals to reroll vendors, making it trivial to get nearly whatever magic item you need.

I didn't know that. Thank you.

and nearly all uniques suck

I think it depends on the level you find them - some of them are even good enough for endgame. Examples are Royal Circlet, Grandfather, Eaglehorn, Windforce, Civerb's Cudgel, Dreamflange or Thinking Cap together with a Hidden Shrine

The price limit combined with the affix level limit on Griswold somewhat balance it, but I still think if you want to talk "balance" you'd have to remove magic items from everyone but Wirt, and limit the level Wirt sells while unlocking monsters in the dungeon so people actually have to play the game to find the best loot. Vendors should be stripped of most things in general to prevent abuse IMO

In Diablo 1 (non Hellfire) there was a price limit on Wirt (~90000) that made it hardly possible to shop really expensive gear (e.g. Obsidian Long War Bow of the Heavens) without luck with the 150% capped, see cite from Jarulfs guide below.

So I was able to Shop items > 130000 (like Gothic Plate of the Whale), as well as a Holy Great Helm of the Whale (AC37,HP94). I asked myself is this is a bug, but then I read about the 150% cap, however, it's actually inferior compared to my legit dropped items (e.g. Awesome Full Plate Mail of Vigor or Royal Circlet). Even a King's Bastard Sword of the ... is not much better than The Grandfather, so I think unique items are sometimes really good.

Restrictions on the price

Even if an item would be possible according to anything that has been said above, when the item is sold in town it cannot be more expensive than the price maximum. This maximum is 140 000 (90 000 at Wirt) gold in Diablo and 200 000 gold in Hellfire (150 000 gold in version 1.00 of Hellfire). Any item more expensive than that will never be sold. This will also rule out several items such as a merciless long war bow of heavens or an awesome full plate of the lion, especially at Wirt who could otherwise have sold any item that met the occurrence and level requirements explained above. Note that the price of items at Wirt is capped before they are modified by 150% in Diablo and 75% in Hellfire. This makes the effective cap at Wirt to be 135 000 in Diablo and 150 000 in Hellfire (112 500 in version 1.00 of Hellfire). This makes some items that are not available in Diablo available in Hellfire. On rare occasions it seems that the price, at least in Hellfire, can be slightly higher than the cap.

StephenCWills commented 1 week ago

(150 000 gold in version 1.00 of Hellfire)

(112 500 in version 1.00 of Hellfire)

These numbers are wrong. From what I've been able to tell, Wirt in Hellfire 1.00 has the same price cap as Diablo 1.09 with the 25% discount, leading to an effective price cap of 67500. They did indeed increase the price cap from 90k to 200k in 1.01.

On rare occasions it seems that the price, at least in Hellfire, can be slightly higher than the cap.

"Slightly" is a bit of an understatement. There is an escape hatch in the code to prevent infinite loops that would cause Wirt to generate any item regardless of its price.