def dar_loot_boss(self, personagem): efeito_digitando('Loot encontrado.') Item = choice(vestes + armas) if issubclass(Item, Arma): status = [randint(3, 5), randint(2, 2), randint(2, 3)] status = map(lambda x: x * self.nivel, status) status_nomes = ['dano', 'velo_ataque', 'critico'] status_dict = dict(zip(status_nomes, status)) item = Item(**status_dict) elif issubclass(Item, Roupa): status = [ randint(2, 3), randint(2, 3), randint(12, 20), randint(2, 3) ] status = map(lambda x: x * self.nivel, status) status_nomes = ['armadura', 'velo_movi', 'vida', 'resistencias'] status_dict = dict(zip(status_nomes, status)) item = Item(**status_dict) elif issubclass(Item, Anel): status = [ randint(2, 3), randint(12, 20), randint(2, 3), randint(2, 3) ] status = map(lambda x: x * self.nivel, status) status_nomes = ['dano', 'vida', 'resistencias', 'armadura'] status_dict = dict(zip(status_nomes, status)) item = Item(nome='Anel', **status_dict) personagem.pratas += randint(30 * self.nivel, 50 * self.nivel) personagem.inventario.append(item)
def caverna_pessoa(self, caminho: Local, pessoa: Pessoa): # pessoa != personagem efeito_digitando(str(caminho)) if str(caminho) == 'caverna': tela.imprimir('deseja entrar na caverna? s/n\n') if tela.obter_string().lower() in ['s', 'sim']: caverna = Caverna('poço azul', self.personagem, self.nivel) caverna.explorar() self.personagem.recuperar_magia_stamina() self.personagem.status['vida'] = 100 tela.imprimir('saindo da caverna') sleep(2) tela.limpar_tela() elif str(caminho) == 'pessoa desconhecida': tela.imprimir('deseja interagir com pessoa desconhecida?: ') if tela.obter_string().lower() in ['s', 'sim']: pessoa.interagir(self.personagem) pessoa.volta = True tela.limpar_tela() elif str(caminho) == 'arvore deku': status = { 'vida': 300, 'dano': 5, 'resis': 15, 'velo-ataque': 1, 'critico': 15, 'armadura': 15, 'magia': 100, 'stamina': 100, 'velo-movi': 1 } boss = ArvoreDeku(self.nivel, status) combate(self.personagem, boss) if self.personagem.status['vida'] == 0: self.morto() return elif self.personagem.status['vida'] > 0: self.personagem.experiencia += boss.experiencia boss.dar_loot_boss(self.personagem) self.personagem.recuperar_magia_stamina() morte = self.sortear_inimigos() if morte: self.morto() return for quest in self.personagem.quests: condicoes = [ randint(1, 5) == 1, quest.item not in self.personagem.inventario, not pessoa.missao_finalizada ] if all(condicoes): self.personagem.inventario.append(quest.item) tela.imprimir(f"item {quest.item.nome} adiquirido.\n") sleep(1)
def sortear_inimigos(self): if randint(1, 5) == 1: efeito_digitando('Monstros encontrados.') sleep(1) tela.limpar_tela() for y in range(randint(1, 3)): Inimigo = choice([Tartaruga, Camaleao, Tamandua, Sapo]) inimigo = Inimigo() combate(self.personagem, inimigo) if self.personagem.status['vida'] == 0: return True elif self.personagem.status['vida'] > 0: self.personagem.experiencia += inimigo.experiencia inimigo.sortear_drops(self.personagem) self.personagem.recuperar_magia_stamina() tela.limpar_tela2() return False
def sortear_inimigos(self): if randint(0, 1): efeito_digitando('Monstros encontrados.') sleep(1) tela.limpar_tela() for y in range(randint(1, 3)): Inimigo = choice(self._mostros) inimigo = Inimigo(nivel=self.nivel) combate(self.personagem, inimigo) if self.personagem.status['vida'] == 0: return True elif self.personagem.status['vida'] > 0: self.personagem.experiencia += inimigo.experiencia inimigo.sortear_drops(self.personagem) self.personagem.recuperar_magia_stamina() tela.limpar_tela2() return False
def explorar(self): tela.limpar_tela() tela.imprimir( 'Esta caverna é difícil, necessita de algumas poções de vida' '. Recomendo comprar 10 poções de vida média.') tela.imprimir(f'deseja explorar a caverna: {self.nome} s/n?\n') if tela.obter_string().lower() in ['s', 'sim']: for caminho in self._caminhos: efeito_digitando(str(caminho)) if caminho.local in self._locais_com_monstros: morto = self.sortear_inimigos() if morto: self.morto() return tela.limpar_tela() bosses = [Topera, Mico, Sucuri] Boss = choice(bosses) status = { 'vida': 300, 'dano': 5, 'resis': 15, 'velo-ataque': 1, 'critico': 15, 'armadura': 15, 'magia': 100, 'stamina': 100, 'velo-movi': 1 } boss = Boss(self.nivel, status) combate(self.personagem, boss) if self.personagem.status['vida'] == 0: self.morto() return elif self.personagem.status['vida'] > 0: self.personagem.experiencia += boss.experiencia boss.dar_loot_boss(self.personagem) self.personagem.recuperar_magia_stamina() tela.limpar_tela() tela.limpar_tela2()