In player.cpp and player.h:
void Player::checkSkullTicks(int32_t ticks)
{
int32_t newTicks = skullTicks - ticks;
It should be replaced with
void Player::checkSkullTicks(int64_t ticks)
{
int64_t newTicks = skullTicks - ticks;
It is because of variable ranges. If every frag is 1 day (86400 * 1000), then 30 frags will cross that range.
i wonder why a millisecond precision on this
Me too. Even minute precision might be enough. We could use std::chrono durations for ease of manipulation and better representation width.
Most helpful comment
i wonder why a millisecond precision on this