public function executar($personagem, $id_profissao, $profissional = null)
 {
     if (is_null($profissional)) {
         $profissional = $personagem;
     }
     $profissao = $this->pegar($id_profissao);
     if ($this->temMaterial($personagem, $profissao->material) == false) {
         throw new Exception(_('Dont have enoght materials!'));
     }
     if ($this->elegivel($personagem, $profissao) == false) {
         throw new Exception(_('No elegible!'));
     }
     $regraPersonagem = new Personagem();
     $regraItem = new Item();
     //var_dump($profissao);
     $criou = true;
     foreach ($profissao->teste as $pericia => $dados) {
         $nh = $profissional->pericias[$pericia]->nh;
         $resultado = jogar($nh, $dados->dificuldade);
         $str = $profissional->nome;
         $str .= " testou ";
         $str .= $profissional->pericias[$pericia]->nome;
         if ($resultado >= $dados->requisito) {
             $resultado -= $dados->requisito;
             if ($resultado <= 0) {
                 $resultado = 1;
             }
             if ($resultado > 1) {
                 $str .= " e obteve " . $resultado . " sucessos.";
             } elseif ($resultado == 1) {
                 $str .= " e obteve sucesso.";
             }
         } else {
             if ($resultado < 0) {
                 $str .= " e obteve uma falha crítica.";
             } else {
                 $str .= " e falhou.";
             }
             $criou = false;
             break;
         }
     }
     if ($criou === true) {
         //var_dump($resultado);
         if ($resultado <= 0) {
             $resultado = 1;
         }
         if (array_key_exists($resultado, $profissao->loot)) {
             $loot = $profissao->loot[$resultado];
         } else {
             $loot = null;
             foreach ($profissao->loot as $_loot => $quantidade) {
                 $loot = $_loot;
             }
             //reset($profissao->loot);
             //$loot = $profissao->loot[end($profissao->loot)];
             //var_dump($loot);
             //exit();
         }
         //var_dump($profissao->loot, $loot); echo '<hr>';
         //exit();
         if (is_array($loot)) {
             $sorteio = array();
             foreach ($loot as $item => $quantidade) {
                 for ($i = 0; $i < $quantidade; $i++) {
                     $sorteio[] = $item;
                 }
             }
             //var_dump($sorteio);
             $slug = $sorteio[array_rand($sorteio)];
         } else {
             $slug = $loot;
         }
         $_item = $GLOBALS['_itens'][$slug];
         //var_dump($slug, $_item);
         $item = new stdClass();
         $item->id_personagem = $personagem->id_personagem;
         $item->nivel = 0;
         $item->slug = $slug;
         $item->nome = $_item['nome'];
         $item->quantidade = 1;
         $item->peso = $_item['peso'];
         $regraItem->inserir($item);
         $str .= ' ' . $personagem->nome . ' recebeu ' . $item->nome . '.';
     }
     $regraPersonagem->gastarTurno($personagem->id_personagem, $profissao->turno);
     if (count($profissao->material) > 0) {
         $this->removerMaterial($personagem, $profissao->material);
     }
     //var_dump($str, $profissao);
     $mensagem = new stdClass();
     $mensagem->sucesso = $criou;
     $mensagem->mensagem = $str;
     return $mensagem;
 }
Example #2
0
 private function repartirLoot($grupo, $id_personagem, $itens)
 {
     $regraItem = new Item();
     if (count($grupo) == 1) {
         foreach ($itens as $item) {
             $item->id_personagem = $id_personagem;
             $regraItem->inserir($item);
         }
     } elseif (count($grupo) > 1) {
         if (count($itens) == 1) {
             $item->id_personagem = $id_personagem;
             $regraItem->inserir($item);
         } elseif (count($itens) > 1) {
             $i = 0;
             $selecionado = array();
             foreach ($grupo as $personagem) {
                 if ($personagem->id_personagem != $id_personagem) {
                     $selecionado[] = $personagem;
                 }
             }
             //shuffle($selecionado);
             foreach ($itens as $item) {
                 if ($i == 0) {
                     $item->id_personagem = $id_personagem;
                     $regraItem->inserir($item);
                 } else {
                     $personagem = $selecionado[array_rand($selecionado)];
                     $item->id_personagem = $personagem->id_personagem;
                     $regraItem->inserir($item);
                 }
                 $i++;
             }
         }
     }
 }