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:
ContextoJogopassou a carregar informações de combate (sala/inimigo), última posição válida e status de atualização, simplificando o código dejogo.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çõesdetalha 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
Moedaarmazena 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.carteirafoi adicionada à dataclass, é salva/carregada junto do save e aparece no HUD e no resumo de personagem. - Preços nos Itens:
preco_bronzepassou a ser obrigatório emsrc/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.jsondefine eventos como santuários, armadilhas e tesouros (ex.: “Santuário da Luz”, “Armadilha de Espinhos”, “Cofre Esquecido”), todos carregados e cacheados pelo módulosrc/eventos.py. - Integração com o Mapa:
Salapassou a terevento_ideevento_resolvido;gerador_mapa.pymarca aleatoriamente algumas salas “normais” com eventos, de acordo comEVENTO_PROBABILIDADEemconfig.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.pygarante 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
DificuldadePerfilemconfig.pydefine 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
Personagempassou 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.pydelega operações a módulos emsrc/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
pytesteruff100% verdes.