Sistema de Dano
Damage Pipeline
Especificação do pipeline de dano: fórmula do dano final (base × zona × energia × penetração × armadura × ângulo), efeitos paralelos (sangramento, choque, dor), degradação do equipamento em 5 estados, dano permanente vs temporário e dano de queda.
Última edição em 07/07/2026, 20:24 por Admin
Sistema de Dano
Página de game design (não diegética), derivada de Sistema de Atributos, Dano e Balística. Define o pipeline que transforma um impacto (projétil, melee, queda) em consequências sobre os vitais de Atributos do Jogador e sobre o equipamento, usando as zonas e multiplicadores de Dano por Parte do Corpo.
1. A fórmula
Pipeline conceitual de um projétil:
Dano Final = Dano Base da Munição
× Multiplicador da Região (tabela de zonas)
× Energia Restante (velocidade no impacto / velocidade inicial)
× Modificador de Penetração (munição vs classe da armadura)
× Redução da Armadura (absorção do item na zona)
× Modificador de Ângulo (impacto oblíquo perde energia / ricocheteia)
Cada fator tem um dono claro:
- Dano Base vem da munição (calibre, massa, carga).
- Multiplicador da Região vem da tabela de zonas (Dano por Parte do Corpo).
- Energia Restante vem da balística: a razão entre a velocidade no impacto e a velocidade inicial — tiros de longe chegam mais fracos.
- Penetração compara o tipo de munição com a classe da armadura na zona.
- Redução da Armadura é a absorção do item equipado na zona, escalada pela durabilidade atual.
- Ângulo: impactos oblíquos perdem energia, podendo ricochetear antes mesmo de aplicar dano.
Detalhamento fator a fator — matrizes de valores (classes de penetração, absorção por classe, curvas de energia por distância) e três exemplos numéricos completos: Fórmula de Dano.
2. Efeitos paralelos de cada acerto
Cada acerto resolve, além da Vida:
- Sangramento: chance por zona e calibre de abrir fontes de sangramento (leve 2/s, média 12/s, forte 20/s de Sangue). Fontes não estancam sozinhas em ferida grave: exigem bandagem/torniquete/sutura.
- Choque/trauma: todo impacto gera Choque mesmo sem penetrar (energia transferida). Choque abaixo do limiar de Consciência = inconsciência — o "nocaute" de um capacete que segurou o tiro.
- Dor: proporcional ao dano e à zona.
- Dano ao equipamento: o item da zona perde durabilidade em 5 estados (tabela abaixo).
Durabilidade do equipamento — 5 estados
| Estado | Coeficiente | Efeito |
|---|---|---|
| Novo | 1,0 | Função plena. |
| Gasto | 0,7 | Função reduzida. |
| Danificado | 0,5 | Função reduzida. |
| Muito Danificado | 0,3 | Função mínima. |
| Arruinado | 0,0 | Perde toda a função. |
3. Permanente vs temporário
- Vida regenera (condicionada a Sangue/Fome/Sede altos).
- Sangue regenera devagar.
- Fraturas exigem item + tempo.
- Vida máxima só é reduzida por contaminação/infecção não tratadas — e é recuperável em hospital.
Ou seja: quase todo dano é reversível com recursos e tempo; o que reduz o teto do personagem são condições negligenciadas, não o combate em si.
4. Dano de queda
Dano de queda usa o mesmo pipeline:
- Choque a partir de ~3 m;
- dano de Vida a partir de ~5 m;
- fratura de perna na faixa de 5–9 m;
- letal por volta de ~14 m.
5. Esboço de implementação (Origin + GAS)
Regra arquitetural do projeto: o dano é calculado exclusivamente no servidor Origin (custom), dentro do pipeline GAS adaptado do projeto. O cliente UE (plugin OriginGAS, replicação UE desligada) nunca calcula dano — recebe os novos valores dos atributos e os GameplayCues (efeitos visuais/sonoros do acerto) por opcodes do OriginNetwork.
O fluxo server-side segue o pattern do meta-atributo Damage:
- A simulação balística do servidor determina o impacto (zona, velocidade, ângulo, armadura presente).
- A execução do efeito de dano roda a fórmula do §1 (implementação detalhada em Fórmula de Dano) e empurra a magnitude no meta-atributo
Damagedo AttributeSet do alvo. - O hook pós-execução do servidor converte
Damageem Vida/Sangue — aplicando o dano local da zona e a transferência global — e zera o meta-atributo. - Os efeitos paralelos são aplicados como efeitos/estados no servidor e anunciados ao cliente por opcodes (atributos atualizados + tags + cues).
// Server-side (Origin): fluxo de um acerto apos a balistica resolver o impacto.
void FTSSDamagePipeline::ResolveHit(const FTSSImpact& Impact)
{
const FZoneSpec& Zone = ZoneTable[Impact.BodyZone];
// 1) Formula completa (ver pagina "Formula de Dano") -> meta-atributo Damage.
const float Damage = BallisticDamageExec.Execute(Impact);
Attributes.PushMeta(EMeta::Damage, Damage);
// 2) Hook pos-execucao: converte o meta em vitais e zera.
// - dano local na zona + transferencia p/ Vida global (Zone.GlobalTransfer)
// - Blood via fonte de sangramento (abaixo), nao direto
Attributes.CommitDamageMeta(Impact.BodyZone, Zone.GlobalTransfer);
// 3) Efeitos paralelos -- rodam em TODO acerto, mesmo bloqueado:
Bleeding.TryOpenSource(Impact); // leve 2/s | media 12/s | forte 20/s
Attributes.ApplyShock(Impact.TransferredEnergy * Zone.ShockMult); // nocaute < 25
Attributes.ApplyPain(Damage, Impact.BodyZone);
Equipment.Degrade(Impact.BodyZone, Damage); // 5 estados; Arruinado nao protege
// 4) OriginNetwork anuncia: atributos atualizados + tags de estado + cues
// (o cliente OriginGAS espelha e toca os efeitos cosmeticos).
}
Divisão de responsabilidades: servidor Origin = balística, fórmula, vitais, estados e durabilidade; OriginNetwork = snapshot/updates de atributos, tags e cues; cliente OriginGAS = espelho dos atributos + feedback audiovisual (hitmarker diegético, vinheta de dor, ragdoll na inconsciência).
Ver também
- Fórmula de Dano — o detalhamento fator a fator, com matrizes e exemplos numéricos.
- Sistema de Atributos, Dano e Balística — página-hub com o sistema completo (balística, proteção, peso, skills).
- Atributos do Jogador — os vitais que este pipeline consome (Vida, Sangue, Consciência, Dor).
- Dano por Parte do Corpo — a tabela de zonas e multiplicadores usada na fórmula.