Linha Secreta
![]()
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
| Campo | Valor |
|---|---|
| ID técnico | SecretLine |
| Conduta | Conduta Desconhecida |
| Categoria | Utilidade |
| Momento de uso | Meio do dia |
| Momento do efeito | Noite da mesma rodada |
| Alvo | Outro jogador vivo |
| Tipo de uso | Selecionar |
| Usos | 1 por rodada |
| Duração | Até o fim da noite |
Implementação Técnica
- Cliente:
SecretLineAbilityvalida 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 viaPlayerActionManager.UseSystemAbility(Id, targetId). - Servidor:
SecretLineStrategyvalida autoalvo e vitalidade, gravacaster.SecretLineTarget = targetIde marcacaster.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
ChatChannelManagerdetectaSecretLineTargetno 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 noGetGameStatepara ser visível apenas para o caster e o alvo, nunca para terceiros. - Limpeza:
PlayerUtility.ResetAbilitiesForNewRoundlimpaSecretLineTargete encerra o canal na virada de rodada.
Campos de PlayerData Modificados
| Campo | Efeito |
|---|---|
caster.SecretLineTarget | ID do alvo da linha secreta; visível apenas para os dois participantes |
caster.AbilityUsed | Marcado 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.