Linha Secreta

Arte de Linha Secreta|192

Resumo

Cria um canal privado temporário entre o usuário e o alvo durante a noite.

Como Funciona

Durante o meio do dia, o jogador pode usar esta habilidade uma vez por rodada. Ao usá-la, deve selecionar um jogador vivo que não seja ele mesmo. Durante a noite da mesma rodada, um canal de voz privado é aberto entre os dois jogadores — apenas eles podem se ouvir nesse canal. O canal se encerra automaticamente no início da rodada seguinte.

Leitura de Design

É uma habilidade social pura, excelente para construir aliança relâmpago, sem exigir revelação pública do vínculo.

Parâmetros Atuais no Projeto

CampoValor
ID técnicoSecretLine
CondutaConduta Desconhecida
CategoriaUtilidade
Momento de usoMeio do dia
Momento do efeitoNoite da mesma rodada
AlvoOutro jogador vivo
Tipo de usoSelecionar
Usos1 por rodada
DuraçãoAté o fim da noite

Implementação Técnica

  • Cliente: SecretLineAbility valida fase (DayMiddle), verifica que o caster está vivo, habilidade não usada, alvo fornecido, existe no estado, não é o próprio caster e está vivo. Despacha via PlayerActionManager.UseSystemAbility(Id, targetId).
  • Servidor: SecretLineStrategy valida autoalvo e vitalidade, grava caster.SecretLineTarget = targetId e marca caster.AbilityUsed = true. Retorna uma mensagem privada exclusiva para o caster: "[PRIVATE:{caster.Id}] You have established a Secret Line with {target.RoleId}. It will open at night.".
  • Cliente (canal Vivox): O ChatChannelManager detecta SecretLineTarget no estado do jogador e cria um canal Vivox dedicado para os dois participantes. O canal abre na fase noturna da mesma rodada.
  • Fog of War: O campo SecretLineTarget é filtrado no GetGameState para ser visível apenas para o caster e o alvo, nunca para terceiros.
  • Limpeza: PlayerUtility.ResetAbilitiesForNewRound limpa SecretLineTarget e encerra o canal na virada de rodada.

Campos de PlayerData Modificados

CampoEfeito
caster.SecretLineTargetID do alvo da linha secreta; visível apenas para os dois participantes
caster.AbilityUsedMarcado como true

Estado no Projeto Atual

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

Histórico

  • Nome legado no material importado: Conversa Privada.

Ver Também