示例#1
0
<?php

require 'common.php';
if (count($_POST) > 0 && $_POST['acao'] == 'falar') {
    $id_personagem = intval($_POST['id_personagem']);
    $texto = $_POST['texto_log'];
    if (substr($texto, 0, 1) == '/') {
        $texto = Dado::jogadaTexto($texto);
    }
    Sessao::escreverlog($texto, $id_personagem, LOG_CHAT);
    header('Location: sessao.php?s=' . Sessao::idSessao() . '&id=' . $id_personagem);
    exit;
}
$sessao = Sessao::getSessaoAtual();
if ($sessao->getTipo() == SESSAO_GRUPO && $sessao->getTempoTurno() > 0 && $sessao->getTempoSessao() <= 0) {
    $sessao->finalizarTurno();
    $sessao->atualizar();
    header('Location: sessao.php?s=' . Sessao::idSessao() . '&id=' . Sessao::idPersonagemAtual());
    exit;
}
$sessao->atualizar();
/*
$mapaFull = Mapa::gerarHex();
if (!is_null($sessao->personagemAtual())) {
   $pessoa = $sessao->personagemAtual();
   $mapaFull = Mapa::mapaZoom($mapaFull, $pessoa->getX(), $pessoa->getY(), 960, 350, $pessoa->getSentido(), 2);
}
$imagem64 = Mapa::convertToBase64($mapaFull);
imagedestroy($mapaFull);
*/
$personagem = null;
 public function projetar($golpe, $dano)
 {
     $projecao = floor($dano / ($this->getST() - 2));
     if ($projecao <= 0) {
         return false;
     }
     $inimigo = $golpe->getChar();
     $sentido = Mapa::getSentido2DAtaque($golpe->getChar(), $this);
     $sentido = Mapa::inverterSentido2D($sentido);
     //echo $sentido;
     //exit();
     for ($i = 1; $i <= $projecao; $i++) {
         switch ($sentido) {
             case 0:
                 $retorno = $this->moverTopo();
                 break;
             case 1:
                 $retorno = $this->moverTopoDireito();
                 break;
             case 2:
                 $retorno = $this->moverRodapeDireito();
                 break;
             case 3:
                 $retorno = $this->moverRodape();
                 break;
             case 4:
                 $retorno = $this->moveRodapeEsquerdo();
                 break;
             case 5:
                 $retorno = $this->moverTopoEsquerdo();
                 break;
         }
         if ($retorno === false) {
             break;
         }
     }
     $mensagem = "O ataque de " . $inimigo->getNome() . " projetou " . $this->getNome() . " {$projecao} metro(s).";
     $jogada = Dado::testeHabilidade($this->getDX(), $projecao - 1);
     if (in_array($jogada->resultado, array(FALHA, FALHA_CRITICA))) {
         $this->setPosicao(POSICAO_DEITADO_COSTA);
         $mensagem .= " " . $this->getNome() . " falhou no teste (" . $jogada->jogada . ") e caiu!";
         $tipo_log = LOG_ATAQUE;
     } else {
         $mensagem .= " " . $this->getNome() . " foi bem sucedido no teste (" . $jogada->jogada . ") e evitou a queda!";
         $tipo_log = LOG_FALHA;
     }
     Sessao::escreverlog($mensagem, $inimigo->getIdOriginal(), $tipo_log);
 }