Fórmula de Dano
Damage Formula — fator a fator
Detalhamento fator a fator da fórmula de dano: dano base, zona, energia restante, penetração, armadura e ângulo — com matrizes de valores e três exemplos numéricos completos.
Última edição em 07/07/2026, 20:23 por Admin
Fórmula de Dano
Página de game design (não diegética), derivada de Sistema de Dano. Disseca a fórmula fator a fator, com os valores iniciais de tuning e exemplos numéricos completos.
Dano Final = Dano Base da Munição
× Multiplicador da Região
× Energia Restante
× Modificador de Penetração
× Redução da Armadura
× Modificador de Ângulo
Ordem de resolução: a Balística resolve primeiro o voo (queda, arrasto, ricochete, penetração de cenário). Só o que chega ao corpo entra nesta fórmula — e todo acerto, mesmo com dano ~0, ainda gera os efeitos paralelos (Choque, Dor, degradação do item; ver Sistema de Dano).
Fator 1 — Dano Base da Munição
Derivado da energia na boca do cano (½mv²), numa escala inicial de tuning de Dano Base ≈ Energia (J) ÷ 20:
| Munição | Energia | Dano Base | Classe de Penetração |
|---|---|---|---|
| 9×19 mm comum | ~520 J | 26 | P-I |
| .45 comum | ~500 J | 25 | P-I |
| 12ga balote | ~2.240 J | 112 (curtíssimo alcance) | P-I |
| 5,56×45 comum | ~1.690 J | 85 | P-II |
| 7,62×39 comum | ~2.100 J | 105 | P-II |
| 7,62×51 comum | ~3.350 J | 167 | P-III |
| Calibre pesado | ~17.000 J | 850 | P-IV |
Variações por tipo: AP sobe 1 classe de penetração e aplica −15% ao dano de tecido; subsônica desce 1 classe e perde ~35% do dano base; improvisada mantém a classe com −20% do dano e dispersão maior.
Fator 2 — Multiplicador da Região
Vem direto da tabela de Dano por Parte do Corpo: Cabeça ×2,0 · Tórax ×1,0 · Abdômen ×0,9 · Pernas ×0,7 · Braços ×0,6 · Mãos/Pés ×0,5. Lembrete: a zona também define a transferência para a Vida global e o multiplicador de Choque — dois efeitos que rodam fora desta fórmula.
Fator 3 — Energia Restante
A razão velocidade no impacto ÷ velocidade inicial, dada pelo arrasto da Balística. Curvas de referência:
| Distância | Pistola (9 mm) | Fuzil (5,56/7,62) |
|---|---|---|
| 0–25 m | 1,00 | 1,00 |
| 100 m | ~0,70 | ~0,95 |
| 200 m | ~0,45 | ~0,88 |
| 300 m | ~0,30 | ~0,80 |
| 500 m | — | ~0,65 |
É o fator que faz pistola "morrer" com a distância e fuzil continuar perigoso. Subsônicas caem mais rápido; o vento não altera energia, só trajetória.
Fator 4 — Modificador de Penetração
Compara a Classe de Penetração da munição (P) com a Classe Balística da armadura na zona (C-I a C-IV). A diferença Δ = P − C decide:
| Δ (munição − armadura) | Modificador | Leitura |
|---|---|---|
| +2 ou mais | 1,00 | atravessa como se não houvesse colete |
| +1 | 1,00 | atravessa; a armadura ainda absorve o Fator 5 |
| 0 | 0,50 | penetração parcial — entra com metade, sangramento leve |
| −1 | 0,15 | quase bloqueado — hematoma profundo |
| −2 ou menos | 0,03 | bloqueado — dano ~0; Choque e degradação continuam |
Sem armadura na zona: modificador 1,00 (e Fator 5 = 1,00).
Fator 5 — Redução da Armadura
O que o item absorve, escalado pela durabilidade atual:
Redução = 1 − (Absorção da Classe × Coeficiente de Durabilidade)
| Classe | Absorção | Estado | Coef. | |
|---|---|---|---|---|
| C-I | 0,30 | Novo | 1,0 | |
| C-II | 0,45 | Gasto | 0,7 | |
| C-III | 0,60 | Danificado | 0,5 | |
| C-IV | 0,75 | Muito Danificado | 0,3 | |
| Arruinado | 0,0 (não protege) |
O dano absorvido não some: vira degradação do item e Choque no portador (ver Proteção e Armaduras).
Fator 6 — Modificador de Ângulo
cos(θ) do ângulo de incidência contra a superfície do corpo/placa. Impactos rasos (< ~20° da superfície) contra placa dura são candidatos a ricochete — resolvido antes, na Balística; se ricocheteia, esta fórmula nem roda.
Exemplos numéricos completos
A — 9 mm comum, 120 m, tórax com colete C-II Gasto
| Passo | Conta | Resultado |
|---|---|---|
| Dano Base | 9 mm comum | 26,0 |
| Região (tórax ×1,0) | 26 × 1,0 | 26,0 |
| Energia (120 m, pistola) | × ~0,65 | 16,9 |
| Penetração (P-I vs C-II, Δ=−1) | × 0,15 | 2,5 |
| Armadura (1 − 0,45×0,7) | × 0,685 | 1,7 |
| Ângulo (frontal) | × 1,0 | ≈ 2 de dano |
Leitura: pistola não fura colete de fuzil a distância — mas o alvo sente o Choque, e o colete degrada. Realista e barato de entender.
B — 7,62×51 AP, 250 m, tórax com colete C-III Novo
| Passo | Conta | Resultado |
|---|---|---|
| Dano Base | 167 × 0,85 (AP) | 142,0 |
| Região (tórax ×1,0) | × 1,0 | 142,0 |
| Energia (250 m, fuzil) | × ~0,84 | 119,3 |
| Penetração (P-IV vs C-III, Δ=+1) | × 1,0 | 119,3 |
| Armadura (1 − 0,60×1,0) | × 0,40 | 47,7 |
| Ângulo (frontal) | × 1,0 | ≈ 48 de dano + sangramento |
Leitura: o melhor colete do jogo, novo, ainda salva a vida contra AP de fuzil de batalha — uma vez. O segundo tiro encontra um colete Danificado.
C — 5,56 comum, 50 m, cabeça sem capacete
| Passo | Conta | Resultado |
|---|---|---|
| Dano Base | 5,56 comum | 85,0 |
| Região (cabeça ×2,0) | × 2,0 | 170,0 |
| Energia (50 m, fuzil) | × ~0,97 | 164,9 |
| Penetração/Armadura/Ângulo | × 1,0 | ≈ 165 ≥ 100 → morte |
Leitura: cabeça sem capacete contra fuzil é morte instantânea a qualquer distância prática. O capacete balístico (C-II) contra 5,56 (P-II, Δ=0) derrubaria para penetração parcial — sobrevivível, com nocaute quase certo pelo Choque ×3 da cabeça.
Implementação (Origin + GAS)
A fórmula roda exclusivamente no servidor Origin, como cálculo de execução do pipeline GAS adaptado: o resultado é empurrado no meta-atributo Damage do AttributeSet, e o hook server-side converte em Vida/Sangue e zera o meta (ver Atributos do Jogador). O cliente recebe apenas os novos valores e os cues por opcodes do OriginNetwork — nenhum dano é calculado no cliente.
// Server-side (Origin): execucao do GE de dano balistico.
// O cliente nunca roda isto — recebe o resultado via opcodes.
float FTSSBallisticDamageExec::Execute(const FTSSImpact& Impact) const
{
const FAmmoSpec& Ammo = Impact.Ammo;
const FZoneSpec& Zone = ZoneTable[Impact.BodyZone];
const FArmorSpec& Armor = Impact.ArmorAtZone; // pode ser "sem armadura"
float Dmg = Ammo.BaseDamage; // F1: base (energia/20, mods de tipo)
Dmg *= Zone.DamageMult; // F2: regiao
Dmg *= Impact.Speed / Ammo.MuzzleSpeed; // F3: energia restante
Dmg *= PenetrationTable(Ammo.PenClass, Armor.BallisticClass); // F4: Δ classes
Dmg *= 1.f - Armor.Absorption * Armor.DurabilityCoef; // F5: absorcao
Dmg *= FMath::Cos(Impact.IncidenceAngle); // F6: angulo
// Resultado empurra o meta-atributo Damage; o hook do servidor converte
// em Health/Blood (com Zone.GlobalTransfer) e dispara os efeitos paralelos
// (Choque, Dor, fonte de sangramento, degradacao do item).
return Dmg;
}
Ver também
- Sistema de Dano — o pipeline completo e os efeitos paralelos.
- Balística — o que acontece com o projétil antes de chegar ao corpo.
- Dano por Parte do Corpo — a tabela de zonas.
- Proteção e Armaduras — classes, absorção e durabilidade.