calref / cboe

Classic Blades of Exile
http://spiderwebforums.ipbhost.com/index.php?/forum/12-blades-of-exile/
Other
169 stars 41 forks source link

Sweetgrove: Hammer the Healer selling Invisible Herbs #216

Open clort81 opened 4 years ago

clort81 commented 4 years ago

hamer_the_healer

There are invisible items which can be bought and cost gold, but do not appear in any character's inventory.

CelticMinstrel commented 4 years ago

This shop is a healing shop which means the "items" for sale are actually events that heal the party or cure status effects. Since your party is at full health, it's correct for it to be empty, but it's definitely a bug that clicking the empty space does something...

clort81 commented 4 years ago

I'll try to find the bug causing empty slots to be 'buyable' but:

This is an instance of a general class of UI mistake called "Giving the user a menu of no-choice". It would be more useful - particularly for n00b players - to receive "No-one is in need of healing" in response to an attempt to open the healing shop when all members are at full health.

After selecting item 'a'

Thread 1 "Blades of Exile" hit Breakpoint 1, handle_shop_event (p=...) at build/obj/game/boe.dlgutil.cpp:223
223     for(short i = 0; i < 8; i++) {
(gdb) p what_picked
No symbol "what_picked" in current context.
(gdb) step
224         unsigned long what_picked = shop_array[i + shop_sbar->getPosition()];
(gdb) p what_picked
$3 = 4796052129274396672
(gdb) p active_shop.getItem(what_picked).type
$6 = eShopItemType::EMPTY
(gdb) p active_shop.size()
$7 = 9
(gdb) p shop_sbar->getPosition()
$8 = 0
(gdb) p i
$9 = 0
(gdb) 
p shop_array[i + shop_sbar->getPosition()]
Cannot access memory at address 0x0

Savefile for sweetgrove healer: Sweetgrove3k.zip

CelticMinstrel commented 4 years ago

Seems like this might be caused in part by what_picked being unsigned…

It would be more useful - particularly for n00b players - to receive "No-one is in need of healing" in response to an attempt to open the healing shop when all members are at full health.

Does this happen in the original game? Healing used to be handled as a separate case from item shops, so I could imagine him coding in an exception when there's no-one to heal…