Como o mecanismo Wired funciona

Fluxo interno do WiredHandler presente neste emulador: do evento até a execução dos efeitos.

1. A pilha é definida pela posição X/Y

Quando um ativador dispara, o servidor busca as condições e os efeitos localizados nas mesmas coordenadas X/Y do ativador. É isso que forma a pilha lógica. A altura Z não é o principal vínculo usado pelo WiredHandler nessa busca.

Por isso, Wireds visualmente empilhados precisam compartilhar corretamente o mesmo tile X/Y para participarem da mesma sequência.
1 · EVENTO
Um evento do hotel chama WiredHandler.handle(triggerType, ...).
2 · ATIVADOR
O handler procura os ativadores daquele tipo, aplica cooldown/permissão e chama trigger.execute().
3 · FILTROS
Condições que implementam WiredFilter são processadas antes das condições normais. Elas podem selecionar Habbos ou mobis e alimentar o contexto dos efeitos.
4 · CONDIÇÕES
Condições normais são avaliadas com regras AND/OR. O modificador “pelo menos uma condição” troca a regra para aceitar a pilha quando uma delas passa.
5 · EXTRAS / MODIFICADORES
Random, Unseen, Cancel Movement, Execute In Order, Load Habbos, Movement Physics e Custom Addon podem mudar seleção, ordem ou contexto.
6 · EFEITOS
Os efeitos liberados são agendados considerando delay, cooldown, usuário disparador, filtros e ordem.

Deduplicação por tile

Durante o mesmo evento, o handler mantém um conjunto de tiles já disparados. Se houver mais de um ativador do mesmo tipo no mesmo X/Y, a pilha pode ser processada apenas uma vez naquele ciclo.

Condições AND/OR

Condições com operador OR são agrupadas por tipo; uma correspondência daquele tipo pode satisfazer o grupo. As condições AND precisam passar individualmente, salvo interferência de plugin/evento.

Filtros primeiro

Os filtros são ordenados por ID e executados antes das condições normais. Se um filtro falha ou termina sem contexto válido, a pilha para.

Random / Unseen

Os efeitos executáveis são separados dos modificadores. Random embaralha a lista e escolhe um; Unseen usa seu extra para alternar/selecionar o efeito correspondente.

Execute In Order

Quando o modificador está presente, os efeitos são ordenados por ID. O intervalo padrão observado é de 40 ms, salvo ajuste de Animation Time.

Movement Physics

Ativa execução sequenciada com passo padrão de 120 ms; o Wired Animation Time pode substituir esse intervalo.

Contexto de usuários e mobis

Na hora de executar os efeitos, o handler monta a lista de RoomUnit e os itens filtrados. A prioridade observada é: filtro de Habbos → Load Habbos → usuário que disparou → Custom Addon → contexto sem usuário.

Quando há filtro de mobis, cada item filtrado é anexado ao array stuff recebido pelo efeito. Se um filtro de Habbos ou de mobis terminar vazio, nenhum efeito é executado.

Delay, cooldown e execução

Cada efeito é agendado com (delay × 500 ms) + atraso extra. Antes de agendar, o servidor verifica cooldown/permissão. Se o efeito exigir usuário disparador e não houver RoomUnit, ele é bloqueado. A execução acontece na thread do emulador e é registrada pelo profiler/trace.

Plugins podem interromper o fluxo

O mecanismo dispara eventos como WiredStackTriggeredEvent, WiredConditionFailedEvent e WiredStackExecutedEvent. Plugins podem cancelar etapas, portanto uma pilha aparentemente correta ainda pode ser interrompida por lógica externa.

Como diagnosticar no hotel

O source analisado possui o sistema WiredTraceManager. Para observar uma pilha real:

:wiredinfo fluxo ID:wiredinfo erros:wiredinfo monitor on:wiredinfo monitor:wiredinfo monitor off

O monitor consegue mostrar ativador recebido, filtros, condição que falhou, pilha liberada, efeito agendado, efeito bloqueado, retorno false e exceções.