Skip to content

v1.6.0 – Eventos de Sala, Dificuldade Dinâmica e Mundo Mais Vivo

Latest

Choose a tag to compare

@PauloNRocha PauloNRocha released this 16 Nov 22:56
· 23 commits to main since this release
7959ef7

Esta versão consolida tudo o que foi entregue desde a v1.5.0: refinamos a máquina de estados, introduzimos um sistema econômico básico, adicionamos eventos de sala orientados a dados e, finalmente, modos de dificuldade completos. O resultado é uma “Aventura no Terminal” mais profunda, rejogável e previsível do ponto de vista técnico, sem perder a essência de RPG de terminal.

Novas Funcionalidades e Melhorias

Máquina de Estados Refinada (v1.5.1)

  • Loop Principal por Estados: Menu, Criação, Exploração, Inventário, Combate e Saída agora são estados explícitos, permitindo suspender e retomar o fluxo sem gambiarras.
  • Contexto de Jogo Unificado: ContextoJogo passou a carregar informações de combate (sala/inimigo), última posição válida e status de atualização, simplificando o código de jogo.py.
  • Exploração em “Ticks”: Cada ação do jogador retorna o próximo estado, preparando terreno para futuras telas dedicadas (Game Over, diálogos, eventos de sala complexos).

UI de Criação de Personagem e Nova Classe (v1.5.1)

  • Tela de Classes com Cartões Rich: Guerreiro, Mago, Arqueiro e agora Ladino são exibidos em cartões comparáveis, com atributos base e descrições claras, permitindo escolher por número, inicial ou nome.
  • Nova Classe Ladino: HP 18 / ATK 7 / DEF 3, com foco em agilidade, furtividade e potencial de crítico, enriquecendo o leque de estilos de jogo.

Atualizações Automáticas Integradas (v1.5.1)

  • Verificador de Atualizações via GitHub Releases: Na inicialização, o jogo consulta se há nova versão disponível e exibe uma mensagem amigável com instruções de atualização.
  • Menu Principal com Alerta Visual: Quando existe nova release, o menu mostra um painel de aviso e a opção 0. Verificar Atualizações detalha como atualizar de acordo com o modo de instalação.
  • Preferências em settings.json: Controle de auto-check, frequência e pré-releases é feito por um arquivo simples, mantendo o comportamento sob controle do jogador.

Economia Básica e Carteira do Jogador (v1.5.2)

  • Dataclass Moeda: Novo tipo Moeda armazena sempre em bronze (valor_bronze) e exibe valores em Ouro/Prata/Bronze de forma legível (1 Ouro, 3 Prata, 5 Bronze).
  • Carteira Integrada ao Personagem: Personagem.carteira foi adicionada à dataclass, é salva/carregada junto do save e aparece no HUD e no resumo de personagem.
  • Preços nos Itens: preco_bronze passou a ser obrigatório em src/data/itens.json, com validação no carregamento para evitar inconsistências.
  • Drops de Moedas em Combate: Ao vencer inimigos, o jogador recebe moedas com faixas configuráveis por raridade e leve escalonamento por nível de masmorra, preparando o terreno para comércio e NPCs no futuro.

Eventos de Sala Orientados a Dados (v1.6.0)

  • Arquivo eventos.json: src/data/eventos.json define eventos como santuários, armadilhas e tesouros (ex.: “Santuário da Luz”, “Armadilha de Espinhos”, “Cofre Esquecido”), todos carregados e cacheados pelo módulo src/eventos.py.
  • Integração com o Mapa: Sala passou a ter evento_id e evento_resolvido; gerador_mapa.py marca aleatoriamente algumas salas “normais” com eventos, de acordo com EVENTO_PROBABILIDADE em config.py.
  • Disparo Durante a Exploração: Ao entrar numa sala com evento pendente, o jogo exibe uma tela específica (Rich Panel) descrevendo o acontecimento e aplica efeitos configuráveis (cura/dano em HP, ganho de moedas formatadas).
  • Segurança e Testes: tests/test_eventos.py garante que eventos de cura não causem overflows e que eventos de tesouro respeitem os valores definidos em JSON, mantendo a compatibilidade com saves e dados.

Modos de Dificuldade com Impacto Real (v1.6.0)

  • Perfis de Dificuldade: Novo DificuldadePerfil em config.py define três modos:
    • Explorador (Fácil): inimigos um pouco mais fracos, mais moedas/XP e menos encontros.
    • Aventureiro (Normal): experiência padrão, neutra.
    • Pesadelo (Difícil): inimigos mais resistentes e agressivos, menos loot bruto, mais encontros.
  • Escolha Antes da Aventura: Ao criar um personagem, o jogador escolhe a dificuldade em uma tela específica de cartões (Rich), com descrição e porcentagens de impacto em HP/ATK/DEF, XP, encontros e loot.
  • Persistência no Save: A dificuldade escolhida é salva junto com o estado do jogo; ao carregar, o perfil é restaurado e validado, garantindo que o balanceamento continue coerente.
  • Impacto no Mundo: A dificuldade influencia geração de inimigos (gerador_inimigos.py), chance de salas com inimigos (gerador_mapa.py), chance de consumíveis nos drops (gerador_itens.py) e recompensas de moedas em eventos (eventos.py).

Correções e Polimento

Robustez de Eventos e Dados (v1.6.0)

  • Correção de Import em src/eventos.py: O tipo Personagem passou a ser importado apenas para type checking (TYPE_CHECKING), eliminando o erro de lint (F821) e evitando dependências circulares.
  • Garantia de Mínimo de Recompensa: Eventos de tesouro agora respeitam multiplicadores de dificuldade sem gerar situações de “0 moedas” quando havia valor base positivo.

Qualidade de Código e Testes (v1.5.1–1.6.0)

  • Modularização de Inventário e Combate: jogo.py delega operações a módulos em src/estados, removendo duplicação de lógica e facilitando a leitura.
  • Suíte de Testes Ampliada: Novos testes cobrem economia (preços e carteira), eventos (cura e moedas), modos de dificuldade (impacto real nos inimigos e loot) e geração de itens (bônus para consumíveis), mantendo pytest e ruff 100% verdes.