Infecção
![]()
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
| Campo | Valor |
|---|---|
| ID técnico | Infection |
| Conduta | Conduta do Caos |
| Categoria | Ofensiva |
| Momento de uso | Noite |
| Momento do efeito | Início do dia após contagem regressiva |
| Alvo | Outro jogador vivo |
| Tipo de uso | Selecionar |
| Usos | 1 por rodada enquanto não houver infecção ativa |
| Duração | 3 turnos |
Implementação Técnica
- Cliente:
InfectionAbilityvalida fase (NightStart), verifica que o caster é do time Fascista (TeamType.Fascist), está vivo, habilidade não usada, e checa se nenhum outro jogador já temInfectionCountdown > 0— só uma infecção pode estar ativa por vez. Despacha viaPlayerActionManager.UseSystemAbility(Id, targetId). - Servidor (uso):
InfectionStrategyrevalida que nenhuma infecção ativa existe percorrendo todos os jogadores. Gravacaster.InfectionTarget = targetIde marcacaster.AbilityUsed = true. O countdown não começa aqui. - Servidor (resolução): Em
GameplayService.ResolveNight, oInfectionResolverprocessa a intenção:- Na primeira resolução: aplica
target.InfectionCountdown = 3no alvo e limpacaster.InfectionTarget. - Em resoluções seguintes: decrementa o contador a cada noite.
- Quando
InfectionCountdownchega a zero: mata o alvo, acionaHandleLastWordse checa condição de vitória.
- Na primeira resolução: aplica
Campos de PlayerData Modificados
| Campo | Efeito |
|---|---|
caster.InfectionTarget | ID do alvo a infectar; lido pelo InfectionResolver |
target.InfectionCountdown | Contador regressivo (inicia em 3); morte ao zerar |
caster.AbilityUsed | Marcado 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.