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çãoEnergiaDano BaseClasse de Penetração
9×19 mm comum~520 J26P-I
.45 comum~500 J25P-I
12ga balote~2.240 J112 (curtíssimo alcance)P-I
5,56×45 comum~1.690 J85P-II
7,62×39 comum~2.100 J105P-II
7,62×51 comum~3.350 J167P-III
Calibre pesado~17.000 J850P-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ânciaPistola (9 mm)Fuzil (5,56/7,62)
0–25 m1,001,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)ModificadorLeitura
+2 ou mais1,00atravessa como se não houvesse colete
+11,00atravessa; a armadura ainda absorve o Fator 5
00,50penetração parcial — entra com metade, sangramento leve
−10,15quase bloqueado — hematoma profundo
−2 ou menos0,03bloqueado — 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)
ClasseAbsorçãoEstadoCoef.
C-I0,30Novo1,0
C-II0,45Gasto0,7
C-III0,60Danificado0,5
C-IV0,75Muito Danificado0,3
Arruinado0,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

PassoContaResultado
Dano Base9 mm comum26,0
Região (tórax ×1,0)26 × 1,026,0
Energia (120 m, pistola)× ~0,6516,9
Penetração (P-I vs C-II, Δ=−1)× 0,152,5
Armadura (1 − 0,45×0,7)× 0,6851,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

PassoContaResultado
Dano Base167 × 0,85 (AP)142,0
Região (tórax ×1,0)× 1,0142,0
Energia (250 m, fuzil)× ~0,84119,3
Penetração (P-IV vs C-III, Δ=+1)× 1,0119,3
Armadura (1 − 0,60×1,0)× 0,4047,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

PassoContaResultado
Dano Base5,56 comum85,0
Região (cabeça ×2,0)× 2,0170,0
Energia (50 m, fuzil)× ~0,97164,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