Infecção

Arte de Infecção|192

Resumo

Marca um alvo para morte atrasada, colocando uma bomba-relógio social na partida.

Como Funciona

Durante a noite, o jogador pode usar esta habilidade uma vez por rodada, mas apenas se nenhuma infecção já estiver ativa na partida. Ao usá-la, deve selecionar um jogador vivo. Ao longo das próximas 3 resoluções noturnas, o contador corre em segundo plano. Ao zerar, o jogador infectado morre automaticamente no início do dia correspondente, sem votação.

Leitura de Design

Pressiona a mesa a reagir cedo e abre espaço para fake claims, já que a eliminação vem depois e pode embaralhar a leitura de causa.

Parâmetros Atuais no Projeto

CampoValor
ID técnicoInfection
CondutaConduta do Caos
CategoriaOfensiva
Momento de usoNoite
Momento do efeitoInício do dia após contagem regressiva
AlvoOutro jogador vivo
Tipo de usoSelecionar
Usos1 por rodada enquanto não houver infecção ativa
Duração3 turnos

Implementação Técnica

  • Cliente: InfectionAbility valida fase (NightStart), verifica que o caster é do time Fascista (TeamType.Fascist), está vivo, habilidade não usada, e checa se nenhum outro jogador já tem InfectionCountdown > 0 — só uma infecção pode estar ativa por vez. Despacha via PlayerActionManager.UseSystemAbility(Id, targetId).
  • Servidor (uso): InfectionStrategy revalida que nenhuma infecção ativa existe percorrendo todos os jogadores. Grava caster.InfectionTarget = targetId e marca caster.AbilityUsed = true. O countdown não começa aqui.
  • Servidor (resolução): Em GameplayService.ResolveNight, o InfectionResolver processa a intenção:
    • Na primeira resolução: aplica target.InfectionCountdown = 3 no alvo e limpa caster.InfectionTarget.
    • Em resoluções seguintes: decrementa o contador a cada noite.
    • Quando InfectionCountdown chega a zero: mata o alvo, aciona HandleLastWords e checa condição de vitória.

Campos de PlayerData Modificados

CampoEfeito
caster.InfectionTargetID do alvo a infectar; lido pelo InfectionResolver
target.InfectionCountdownContador regressivo (inicia em 3); morte ao zerar
caster.AbilityUsedMarcado como true

Estado no Projeto Atual

  • Implementada com intenção, contagem regressiva e resolução dedicada.
  • Se a implementação final mudar no jogo, esta nota deve acompanhar o código e não o contrário.

Ver Também