first, `(Midas && IsOnGround())` is excessive. underground shops are not special! i.e. `IsOnGround()` should be removed.
and second: `Midas->SetMoney(Midas->GetMoney() + Price);` is not guarded with `if (Midas)`. it should be: `if (Midas) Midas->EditMoney(Price);`. otherwise alchemy wand broken by mine trap explosion, for example, will cause a segfault.