-
Notifications
You must be signed in to change notification settings - Fork 2
Mecânicas do Jogo
Esta seção detalha as regras e fórmulas que governam o sistema de combate, progressão e outras mecânicas centrais do jogo.
O combate é baseado em um sistema de turnos onde o Herói e o Monstro se revezam em suas ações até que a vida de um deles chegue a zero. A ordem dos ataques é determinada pela agilidade, mas no estado atual, o Herói sempre ataca primeiro para uma melhor jogabilidade.
O diagrama abaixo ilustra a sequência lógica de eventos e verificações que ocorrem sempre que um personagem ataca o outro durante um turno de combate.
graph TD
A["Início do Turno: Atacante escolhe 'Atacar'"] --> B{"Verifica Esquiva do Alvo"};
B -- "Sim (Alvo se esquiva)" --> C["Dano = 0 <br> Fim do Turno"];
B -- "Não (Ataque acerta)" --> D{"Verifica Acerto Crítico do Atacante"};
D -- "Sim (Ataque Crítico)" --> E["Calcula Dano Final <br> Dano = (Ataque - Defesa) * multiplicadorCritico"];
D -- "Não (Ataque Normal)" --> F["Calcula Dano Final <br> Dano = Ataque - Defesa"];
E --> G{"Dano Final <= 0?"};
F --> G;
G -- "Sim" --> H["Dano Mínimo = 1"];
G -- "Não" --> I["Mantém Dano Calculado"];
H --> J["Alvo recebe 1 de dano"];
I --> K["Alvo recebe o dano final"];
J --> L["Fim do Turno"];
K --> L["Fim do Turno"];
%% Estilo para Legibilidade
style A fill:#d4edda,stroke:#155724,stroke-width:2px,color:#333
style C fill:#f8d7da,stroke:#721c24,stroke-width:2px,color:#333
style L fill:#cce5ff,stroke:#004085,stroke-width:2px,color:#333
O cálculo de dano leva em consideração o ataque total do agressor (incluindo bônus de equipamentos) e a defesa do alvo.
-
Dano Base:
danoBase = atacante.getAtaque()
(O ataque pode incluir bônus de armas equipadas, como espadas.) -
Redução de Dano:
reducao = alvo.getDefesa()
(A defesa é subtraída diretamente do ataque.) -
Dano Final:
danoFinal = danoBase - reducao
Para evitar que personagens com defesa alta fiquem imunes, existe um dano mínimo garantido. Se danoFinal for menor ou igual a zero, o dano causado será 1.
Todo ataque tem uma chance de ser crítico, causando dano multiplicado.
-
Chance de Crítico: Determinada pelo atributo
chanceCriticodo atacante. Um número aleatório entre 0 e 99 é gerado; se for menor quechanceCritico, o ataque é crítico. -
Multiplicador de Crítico: O dano crítico é multiplicado pelo atributo
multiplicadorCriticodo atacante (exemplo: 1.5x). -
Cálculo do Dano Crítico:
danoCritico = danoFinal * multiplicadorCritico
O alvo pode esquivar do ataque, anulando o dano.
-
Chance de Esquiva: Determinada pelo atributo
chanceEsquivado alvo. Um número aleatório entre 0 e 99 é gerado; se for menor quechanceEsquiva, o ataque é esquivado e o dano é zero.
O Herói possui uma habilidade especial que causa mais dano ao custo de energia.
- Custo: Consome 10 pontos de energia.
-
Dano:
danoGolpeHeroico = (heroi.getAtaque() * 1.5) + (heroi.getNivel() * 5) - (alvo.getDefesa() * 0.5) - Chance de Crítico: Aumentada durante o golpe especial.
- A habilidade não pode ser usada se o Herói não tiver energia suficiente.
Ao vencer uma batalha, o Herói ganha pontos de experiência (XP). Acumular XP suficiente resulta em "Level Up", tornando o Herói mais forte.
- Ganho de XP: O Herói ganha 10 XP por vitória.
-
Requisito de Nível: Para subir de nível, o Herói precisa de
100 * nivelAtualde XP. -
Benefícios do Level Up:
- Todos os atributos base (
forca,defesa,agilidade, etc.) são aumentados em +1. - Os status de combate (vida, energia) são recalculados com base nos novos atributos.
- A vida do Herói é totalmente restaurada.
- O progresso é salvo automaticamente no banco de dados.
- Todos os atributos base (