Você quer dizer que as ações têm várias voltas (ou seja, dormir por 50 voltas seguidas)?
O que eu faria é manter um objeto, player.currentAction. currentAction pode conter quantas voltas a ação exigiria, qual é a resolução da ação e uma lista de estados que cancelam a ação (em perigo, sendo atacada, muito quente etc.). A cada turno, antes de verificarmos a entrada do jogador, verificamos se o jogador está atualmente no meio de uma ação e, em seguida, fazemos algo como algo como ...
if(!player.currentAction.interrupted())
{
if(player.currentAction.complete() == true)
{
player.currentAction.doAction(); //Some actions, like casting a spell, would have something happen here. Others, like sleeping, may or may not, depending on how you coded it.
player.currentAction = null;
}
else player.currentAction.decreaseTimer(); //Decrease our timer by one.
}
else
{
player.currentAction.interrupt(); //Let the player know he's been interrupted. Bungle the spell, cancel sleep, etc.
player.currentAction = null;
}