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; }