Investigação Profunda

Arte de Investigação Profunda|192

Resumo

Marca um alvo à noite para receber a revelação do time dele ao final da resolução noturna.

Como Funciona

Durante a noite, o jogador pode usar esta habilidade uma vez por rodada. Ao usá-la, deve selecionar um jogador vivo que não seja ele mesmo. No fim da noite, recebe em privado o time real do alvo: Sobrevivente, Fascista, Fanático ou Mercenário. Diferente da Análise de Conduta, revela o time e não a conduta — mas ainda pode ser mascarado pela primeira leitura de Dupla Identidade.

Leitura de Design

É uma leitura mais profunda do que Análise de Conduta porque trabalha com time real, não apenas aparência superficial.

Parâmetros Atuais no Projeto

CampoValor
ID técnicoDeepInvestigation
CondutaConduta da Ordem
CategoriaInformação
Momento de usoNoite
Momento do efeitoFim da noite
AlvoOutro jogador vivo
Tipo de usoSelecionar
Usos1 por rodada
DuraçãoInstantânea

Implementação Técnica

  • Cliente: DeepInvestigationAbility valida fase (NightStart), verifica que a habilidade não foi usada. Despacha via PlayerActionManager.UseSystemAbility(Id, targetId).
  • Servidor (uso): InvestigationStrategy valida que o alvo não é o próprio caster, está vivo e existe. Grava caster.DeepInvestigationTarget = targetId e marca caster.AbilityUsed = true. Nenhuma revelação acontece ainda.
  • Servidor (resolução): Em GameplayService.ResolveNight, cada jogador com DeepInvestigationTarget preenchido recebe o resultado:
    • Chama PlayerUtility.GetRevealedTeam(target, caster.Id) para resolver o time com as mascarações cabíveis.
    • Adiciona uma entrada em caster.InvestigatedPlayers com Team preenchido e Conduct = None (revela time, não conduta).
  • Diferença em relação à Análise de Conduta: revela time (Survivor, Fascist, etc.), não conduta (Good, Bad, Unknown). É uma informação mais específica e difícil de falsificar.
  • Interação com Dupla Identidade: GetRevealedTeam aplica as mesmas regras — na primeira leitura por aquele investigador, retorna TeamType.Survivor.

Campos de PlayerData Modificados

CampoEfeito
caster.DeepInvestigationTargetID do alvo; lido em ResolveNight
caster.InvestigatedPlayersEntrada adicionada com Team resolvido e Conduct = None
caster.AbilityUsedMarcado como true

Estado no Projeto Atual

  • Implementada de ponta a ponta no cliente e servidor.
  • Se a implementação final mudar no jogo, esta nota deve acompanhar o código e não o contrário.

Ver Também