Uma API REST stateless construída em ASP.NET Core para interpretar notações clássicas de dados de RPG de mesa e resolver mecânicas complexas de combate em tempo real. Sem dependência de banco de dados, puramente focada em algoritmos de probabilidade, manipulação de strings (Regex) e regras de negócio.
- Interpretador de Dados (Dice Parser): Converte strings clássicas (ex:
2d6+3,1d20-1) em rolagens matemáticas precisas. - Sistema de Vantagem/Desvantagem: Resolve testes de habilidade rolando dados múltiplos e mantendo o maior ou menor valor, aplicando modificadores.
- Resolução Completa de Combate: Calcula turnos inteiros de ataque, validando a Classe de Armadura (AC), Acertos Críticos (Natural 20), Falhas Críticas (Natural 1) e aplicando o dano dinamicamente no HP do alvo.
- C# / .NET (ASP.NET Core)
- Geração de números pseudoaleatórios nativa do .NET.
Você pode rodar o projeto localmente usando o .NET CLI ou através de containers.
# Clone o repositório
git clone [https://github.com/Xcode-sketcher/RPG-Combat-Engine.git](https://github.com/Xcode-sketcher/RPG-Combat-Engine.git)
cd RPG-Combat-Engine
# Restaure as dependências e rode o projeto
dotnet restore
dotnet run
POST /api/dice/roll
Avalia uma expressão de dados simples e retorna o resultado.
Request:
{
"expression": "2d6+3"
}
POST /api/dice/check
Rola um teste aplicando a mecânica de rolar dois dados de 20 faces. O status pode ser Normal, Advantage ou Disadvantage.
Request:
{
"modifier": 4,
"status": "Advantage"
}
POST /api/combat/attack
Calcula o resultado completo de um golpe, verificando se a precisão supera a armadura do alvo e calculando o dano se houver acerto (com suporte a dano dobrado em caso de crítico).
Request (Exemplo: Atacando os druidas no Bosque):
{
"attacker": {
"name": "Dark Urge",
"attackBonus": 5,
"damageExpression": "1d8+2"
},
"defender": {
"name": "Druid Guard",
"armorClass": 14,
"currentHp": 22
}
}