public function trabalhar($id_personagem, $id_construcao, $slug, $turno) { //var_dump($id_personagem, $id_construcao, $slug, $turno); $mensagens = array(); $regraPersonagem = new Personagem(); $personagem = $regraPersonagem->pegar($id_personagem); $construcao = $this->pegar($id_construcao); if ($construcao->id_personagem != $id_personagem) { $construdor = $regraPersonagem->pegar($construcao->id_personagem); $ouro = $construdor->ouro; //var_dump($construdor); } $nh = $personagem->pericias[$slug]->nh; $turno = $personagem->turno; $maximo = $construcao->teste[$slug]->maximo - $construcao->teste[$slug]->quantidade; $sucessos = 0; for ($i = 0; $i < 10; $i++) { if ($turno <= 0) { $mensagens[] = 'A quantidade de turnos acabou.'; break; } if ($construcao->id_personagem != $id_personagem) { $ouro -= VALOR_TRABALHO; if ($ouro < 0) { $mensagens[] = 'Seu ouro acabou.'; break; } $regraPersonagem->gastarOuro($construcao->id_personagem, VALOR_TRABALHO); $regraPersonagem->pagarOuro($id_personagem, VALOR_TRABALHO); } $sucesso = jogar($nh, 8); $mensagem = $personagem->nome . ' testeu ' . $personagem->pericias[$slug]->nome; if ($sucesso > 0) { $mensagem .= ' e obteve ' . $sucesso . ' sucesso(s).'; } elseif ($sucesso == 0) { $mensagem .= ' e não obteve nenhum sucesso.'; } elseif ($sucesso < 0) { $mensagem .= ' e obteve uma falha crítica.'; } if ($construcao->id_personagem != $id_personagem) { $mensagem .= ' Você pagou ' . VALOR_TRABALHO . ' gold pelo trabalho.'; } $sucessos += $sucesso; $regraPersonagem->gastarTurno($id_personagem, 1); $turno--; $this->adicionarPericia($id_construcao, $slug, $sucesso); if ($sucessos >= $maximo) { $mensagens[] = 'Essa parte da obra foi concluída.'; break; } $mensagens[] = $mensagem; } $this->verificar($id_construcao); return $mensagens; }
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 falha($quest, $grupo, &$mensagem) { $regraPersonagem = new Personagem(); foreach ($grupo as $personagem) { $regraPersonagem->gastarTurno($personagem->id_personagem, $quest->turno); } $query = "\n UPDATE quest SET\n cod_situacao = '" . QUEST_FALHA . "'\n WHERE id_quest = '" . do_escape($quest->id_quest) . "'\n "; do_update($query); }