diff --git a/complex.cpp b/complex.cpp index 857098fe..1d5340ce 100644 --- a/complex.cpp +++ b/complex.cpp @@ -2484,7 +2484,9 @@ EX void livecaves() { if(hv > 0 && c->wall == waNone) { if(c->item && c->cpdist == 1 && markOrb(itOrbWater)) { bool saf = c->item == itOrbSafety; + eItem it = c->item; collectItem(c, c); + if(it && !c->item) animate_item_throw(c, cwt.at, it); if(saf) return; } c->wall = waSea; diff --git a/items.cpp b/items.cpp index e4f02e30..d446aa4d 100644 --- a/items.cpp +++ b/items.cpp @@ -56,8 +56,12 @@ EX bool doPickupItemsWithMagnetism(cell *c) { } else if(c3->item == itOrbSafety || c3->item == itBuggy || c3->item == itBuggy2) csaf = c3; - else if(markOrb(itOrbMagnetism)) + else if(markOrb(itOrbMagnetism)) { + eItem it = c3->item; collectItem(c3, c3, false); + if(!c3->item) + animate_item_throw(c3, c, it); + } } if(csaf) return collectItem(csaf, csaf, false); diff --git a/pcmove.cpp b/pcmove.cpp index 3f9f0bfc..8aac2d6e 100644 --- a/pcmove.cpp +++ b/pcmove.cpp @@ -1311,7 +1311,11 @@ bool pcmove::perform_actual_move() { forCellEx(c3, c2) if(c3->wall == waIcewall && c3->item) { changes.ccell(c3); markOrb(itOrbWinter); - if(collectItem(c3, cwt.at)) return true; + eItem it = c3->item; + if(collectItem(c3, cwt.at)) + return true; + if(!c3->item) + animate_item_throw(c3, c2, it); } movecost(cwt.at, c2, 2);