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