Dano por Parte do Corpo
Hit Zones
Especificação das zonas de acerto do personagem: multiplicadores por vital, transferência para a Vida global, consequências funcionais por zona, slots de equipamento que protegem cada região e sequelas temporárias vs permanentes.
Última edição em 07/07/2026, 20:16 por Admin
Dano por Parte do Corpo
Página de game design (não diegética), derivada de Sistema de Atributos, Dano e Balística. Define as zonas de acerto do personagem e o que cada uma faz com os vitais descritos em Atributos do Jogador.
O princípio: onde o tiro acerta importa mais do que quanto de dano ele carrega. Cada zona tem multiplicadores próprios por vital, um coeficiente de transferência para a Vida global e consequências funcionais que mudam o que o jogador consegue fazer.
1. Tabela de zonas
Zonas de acerto com multiplicadores por vital e coeficiente de transferência para a Vida global:
| Zona | Mult. Vida | Transfer. p/ global | Mult. Choque | Consequências específicas |
|---|---|---|---|---|
| Cabeça | ×2,0 | ×2,0 | ×3,0 | Morte rápida (headshot sem capacete = letal com quase qualquer calibre); sobrevivendo: inconsciência, visão turva/zumbido (perda temporária de visão/audição), Dor máxima. |
| Tórax | ×1,0 | ×1,0 | ×1,0 | Órgãos: pulmão atingido = respiração curta (stamina máx −30%, não prende respiração na mira); coração = morte; sangramento interno (Sangue drena sem fonte visível). |
| Abdômen | ×0,9 | ×0,8 | ×0,8 | Sangramento forte, perda de comida/água, infecção provável. |
| Braços | ×0,6 | ×0,1 | ×0,33 | Mira: sway +50%, recuo pior controlado, ações de duas mãos mais lentas; braço quebrado = sem arma longa (só pistola). |
| Mãos | ×0,5 | ×0,1 | ×0,25 | Recarregar/sacar/usar 40% mais lento, chance de derrubar item ao ser atingido, crafting/lockpick prejudicados. |
| Pernas | ×0,7 | ×0,15 | ×0,4 | Corrida reduzida; perna quebrada = mancar/rastejar, queda ao tentar sprint, Choque a cada passo. |
| Pés | ×0,5 | ×0,1 | ×0,25 | Passos ruidosos, velocidade −20%, sem sapato + terreno ruim = feridas/sangramento. |
Leitura da tabela:
- Mult. Vida escala o dano aplicado à zona; Transfer. p/ global define quanto desse dano vaza para a Vida geral do personagem — é por isso que um tiro na mão (×0,5 local, ×0,1 global) incapacita sem matar, enquanto um na cabeça (×2,0 / ×2,0) mata.
- Mult. Choque escala o trauma transferido à Consciência: a cabeça (×3,0) apaga o personagem mesmo quando o capacete segura o projétil.
- As consequências específicas são funcionais, não cosméticas: braços estragam a mira, mãos estragam o manuseio, pernas estragam a mobilidade, tórax estraga a respiração (e a Stamina junto).
2. Slots de equipamento por zona
Cada zona lista os slots de equipamento que a protegem — o item absorve parte do dano e se desgasta (a degradação em 5 estados é detalhada em Sistema de Dano):
- Cabeça → capacete, máscara, óculos.
- Tórax → colete, roupa, mochila (a mochila com coeficiente de absorção menor).
O mesmo princípio se estende às demais zonas pelo slot que as cobre fisicamente (calça → pernas, luvas → mãos, botas → pés): a proteção é honesta — só protege a área que o item realmente cobre. Um tiro no braço não é "tiro no colete".
3. Sequelas: temporárias vs permanentes
Ferimentos deixam sequelas temporárias ou permanentes:
- Temporárias: fratura exige tala — o efeito (mancar, sem arma longa, etc.) dura até o tratamento com o item certo + tempo.
- Permanentes: trauma craniano grave pode deixar zumbido permanente — só removível com tratamento em hospital de assentamento.
A regra geral: quanto mais crítica a zona e mais grave o ferimento, mais caro (em itens, tempo e deslocamento até infraestrutura) é reverter a sequela.
4. Esboço de implementação
Estruturas conceituais (estilo Unreal). A tabela do §1 vira um perfil de dados por zona; a resolução de acerto mapeia o osso do hit result para a zona.
/** Zonas de acerto do personagem. */
UENUM(BlueprintType)
enum class EBodyZone : uint8
{
Head, // x2.0 Vida | x2.0 global | x3.0 Choque
Thorax, // x1.0 | x1.0 | x1.0
Abdomen, // x0.9 | x0.8 | x0.8
Arms, // x0.6 | x0.1 | x0.33
Hands, // x0.5 | x0.1 | x0.25
Legs, // x0.7 | x0.15 | x0.4
Feet // x0.5 | x0.1 | x0.25
};
/** Perfil de dano de uma zona -- uma linha da tabela, como dado editavel. */
USTRUCT(BlueprintType)
struct FZoneDamageProfile
{
GENERATED_BODY()
/** Multiplicador do dano de Vida aplicado a zona. */
UPROPERTY(EditDefaultsOnly)
float VidaMult = 1.f;
/** Fracao do dano da zona transferida para a Vida global. */
UPROPERTY(EditDefaultsOnly)
float GlobalTransfer = 1.f;
/** Multiplicador do Choque (trauma -> Consciencia) gerado pelo impacto. */
UPROPERTY(EditDefaultsOnly)
float ChoqueMult = 1.f;
/** Slots de equipamento que absorvem dano nesta zona (e se desgastam com o acerto). */
UPROPERTY(EditDefaultsOnly)
TArray<ETSSEquipSlot> SlotsProtegidos;
};
/** Mapeia o osso atingido (FHitResult::BoneName) para a zona de dano. */
EBodyZone ResolveHitZone(FName BoneName)
{
static const TMap<FName, EBodyZone> BoneToZone = {
{ TEXT("head"), EBodyZone::Head },
{ TEXT("neck_01"), EBodyZone::Head },
{ TEXT("spine_03"), EBodyZone::Thorax },
{ TEXT("pelvis"), EBodyZone::Abdomen },
{ TEXT("upperarm_l"), EBodyZone::Arms },
{ TEXT("upperarm_r"), EBodyZone::Arms },
{ TEXT("hand_l"), EBodyZone::Hands },
{ TEXT("hand_r"), EBodyZone::Hands },
{ TEXT("thigh_l"), EBodyZone::Legs },
{ TEXT("thigh_r"), EBodyZone::Legs },
{ TEXT("foot_l"), EBodyZone::Feet },
{ TEXT("foot_r"), EBodyZone::Feet },
};
if (const EBodyZone* Zone = BoneToZone.Find(BoneName))
{
return *Zone;
}
return EBodyZone::Thorax; // fallback conservador para ossos nao mapeados
}
Ver também
- Sistema de Atributos, Dano e Balística — página-hub com o sistema completo.
- Atributos do Jogador — os vitais que os multiplicadores desta página alimentam.