public function finalizarTurno()
 {
     foreach (Mapa::listarPessoa() as $personagem) {
         $personagem->executarGolpePendente();
     }
     $query = "\n            UPDATE sessao SET\n                ultimo_turno = NOW()\n            WHERE id_sessao = '" . do_escape(static::idSessao()) . "'\n        ";
     do_update($query);
     Mapa::escreverlog('Turno terminado!');
     foreach (Mapa::listarPessoa() as $personagem) {
         $personagem->continuarAcordado();
         $personagem->ativarTurno();
         if ($personagem->getAutomatico() && $personagem->getCodSituacao() == ATIVO) {
             $personagem->autoplay();
         }
     }
     //exit();
 }
 public function acaoAtirar(ArmaMuscular $arma, $acaoSlug)
 {
     $acoes = array();
     foreach (Mapa::listarPessoa() as $pessoa) {
         if ($pessoa->getIdGrupo() != $this->getIdGrupo()) {
             if ($pessoa->getCodSituacao() != ATIVO && $pessoa->getCodSituacao() != ATORDOADO) {
                 continue;
             }
             if (!Mapa::estaVendo($this, $pessoa)) {
                 continue;
             }
             $danoBasico = $this->pegarDanoBasico($arma->getDano());
             $danoBasico['bonus'] += $arma->getBonus();
             $nh = $this->getNH($arma->getPericiaSlug());
             $nh -= $this->choque;
             $distancia = Mapa::ataqueDistancia($this, $pessoa);
             $nh += $distancia->visibilidade;
             $molinete = false;
             $sentido = Mapa::getSentido2DAtaque($this, $pessoa);
             if (in_array($sentido, array(SENTIDO_LATERAL_DIREITA, SENTIDO_LATERAL_ESQUERDA, SENTIDO_COSTAS))) {
                 $molinete = true;
                 $nh -= 5;
                 if ($nh > 9) {
                     $nh = 9;
                 }
             }
             $acao = new AcaoAtirar();
             $acao->setAtaque($acaoSlug == AC_ATAQUE_DIREITA ? AC_ATIRAR_DIREITA : AC_ATIRAR_ESQUERDA);
             $acao->setAlvo($pessoa);
             $acao->setGolpe($arma->getTipo());
             $acao->setDano($arma->getDano());
             $acao->setNH($nh);
             $acao->setArma($arma->getNome());
             $acao->setSentido($sentido);
             $acao->setMolinete($molinete);
             $acao->setDanoDescricao(Dado::descreverDano($danoBasico['dados'], $danoBasico['bonus']));
             $acao->setMao($acaoSlug == AC_ATAQUE_DIREITA ? MAO_DIREITA : MAO_ESQUERDA);
             $acao->setDistancia($distancia->distancia);
             $acoes[] = $acao;
         }
     }
     return $acoes;
 }