Normally, any player who is not the current king should be able to claim the throne by sending the required claimFee. This resets the grace period and makes them the new king.
However, the contract contains a faulty condition
require(msg.sender == currentKing, "Game: You are already the king. No need to re-claim.")
This only allows the current king to claim the throne again, which is the opposite of the intended behavior. As a result, no new players can ever participate after the first claim, and the game logic breaks entirely.
Likelihood:
The issue happens immediately after the first player claims the throne.
All future attempts to claim by any other player will revert.
The game gets stuck in a non-functional state with 100% certainty after the initial king is crowned.
Impact:
Core gameplay is broken; no one can dethrone the king.
The game becomes unplayable, requiring a manual reset.
Players may lose gas or funds due to misunderstood logic.
Loss of trust in the game as a fair or functioning contract.
Explanation:
The require(msg.sender == currentKing) line ensures only the king can claim again, instead of preventing the king from reclaiming. This breaks the competition loop entirely.
Explanation:
This change flips the logic to the correct behavior: prevent the current king from reclaiming the throne, while allowing all other players to do so — restoring the intended gameplay flow.
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.