diff --git a/common/server_cardzone.h b/common/server_cardzone.h index 41560e1e..51aefbaf 100644 --- a/common/server_cardzone.h +++ b/common/server_cardzone.h @@ -68,7 +68,7 @@ public: } void setCardsBeingLookedAt(int _cardsBeingLookedAt) { - cardsBeingLookedAt = _cardsBeingLookedAt; + cardsBeingLookedAt = qMax(0, _cardsBeingLookedAt); } bool isCardAtPosLookedAt(int pos) const; bool hasCoords() const diff --git a/common/server_player.cpp b/common/server_player.cpp index ee78a7fb..ea8a6de7 100644 --- a/common/server_player.cpp +++ b/common/server_player.cpp @@ -337,7 +337,11 @@ Response::ResponseCode Server_Player::drawCards(GameEventStorage &ges, int numbe ges.enqueueGameEvent(eventPrivate, playerId, GameEventStorageItem::SendToPrivate, playerId); ges.enqueueGameEvent(eventOthers, playerId, GameEventStorageItem::SendToOthers); - revealTopCardIfNeeded(deckZone, ges); + if (number > 0) { + revealTopCardIfNeeded(deckZone, ges); + int currentKnownCards = deckZone->getCardsBeingLookedAt(); + deckZone->setCardsBeingLookedAt(currentKnownCards - number); + } return Response::RespOk; }