O Zeca e os vults são urubus-de-cabeça-preta (Coragyps atratus). Cada clipe nasce de algo que um urubu-de-cabeça-preta de verdade faz, para que a ave seja lida como urubu antes de ser lida como luz de status.
Como é um urubu-de-cabeça-preta#
- Plumagem preta fosca com um leve brilho azulado; cauda curta e quadrada.
- Cabeça nua, enrugada e cinza-escura num pescoço curto; olho castanho-escuro sob uma sobrancelha; bico fino e escuro, com a ponta de chifre clara curvada para baixo bem no fim.
- Pernas cinza-claras.
- Em voo, asas largas e curtas cujas primárias são branco-prateadas por baixo, abertas como dedos.
Como ele se move#
| Comportamento | Como parece |
|---|---|
| Voo batido | Três ou quatro batidas rápidas, curtas e rígidas, depois um planeio curto de asas retas (sem “V”, ao contrário do urubu-de-cabeça-vermelha) |
| Voo planado | Círculos largos numa térmica, planando, subindo aos poucos |
| Decolagem | Um agachamento e um pulo, depois batidas fundas e pesadas para baixo |
| Pouso | Asas para cima e para a frente para frear, pés para fora, asas fechadas só depois de tocar o chão |
| Pousado | Ombros curvados, cabeça para a frente; vira a cabeça para observar e inclina para examinar |
| Banho de sol | Asas bem abertas, de frente para o sol: os pulsos no alto, a mão pendendo com as primárias abertas, o corpo redondo entre elas |
| Ameaça | Penas eriçadas, um chiado de bico aberto |
| Sono | Todo afofado, a cabeça virada para trás e deitada nas costas, sob as penas |
Clipes#
| Clipe | Atividade ou estado | Comportamento que ele empresta |
|---|---|---|
idle | ocioso | Observando, piscando, uma respiração de vez em quando, um ajeitar dos pés, uma olhada para trás por cima do ombro |
think | pensando | Cabeça erguida e parada, piscadas lentas |
read | lendo | Cabeça baixa, varrendo uma linha e descendo para a próxima |
search | buscando | Pescoço esticado, viradas rápidas de cabeça, uma inclinada para olhar mais de perto |
edit | editando | O movimento de comer: inclina, bica, puxa para trás |
run | executando | Puxões rápidos no fio, pés se ajeitando para firmar |
approval | aprovação | Pose de banho de sol: olha para você quase o tempo todo, vira a cabeça para um lado e para o outro entre um olhar e outro, e as asas abertas baixam e sobem de novo |
question | pergunta | A inclinada curiosa de cabeça, mantida |
done | concluído | Um pulo que pousa com um leve achatamento, um alongamento de asa e perna, se acomoda, depois a assinatura da espécie (veja abaixo) |
fail | falha | Penas eriçadas, um chiado, uma sacudida; depois abatido, cabeça pendurada e uma asa caída |
listen | o mic do chat está aberto | A cabeça inclinada na sua direção, pequenos acenos enquanto você fala |
dance | música tocando (Now playing ligado), o Zeca sozinho | Um balanço a cada batida, gingando, um pé batendo |
sleep | dormindo | Todo afofado, a cabeça virada para trás sobre as costas, só o alto dela aparecendo por cima dos ombros |
swallow | um arquivo solto em cima dele | Desce até o fio, pega, joga a cabeça para trás e engole |
gape | um arquivo arrastado sobre a ilha | Cabeça para cima, bico aberto, esperando ele cair dentro |
preen | o ponteiro parado sobre o Zeca | Uma sessão de limpeza das penas, cabeça na asa |
startle | um clique no Zeca | Um pulo com as asas jogadas para cima, cabeça erguida |
hello | o app abrindo | Um pouso com achatamento, um quique para cima bem esticado e um pouso mais suave; depois ele vira a cabeça para você e acena com uma asa |
speak | Sem uso: o Zeca responde só em texto, e nada no app o toca. Ele fica no sprite e no lab, onde os testes visuais o desenham | De frente para o chat, o bico abrindo e fechando num ritmo irregular, uma piscada entre as frases |
fly | web | Uma saída completa: decola, bate-bate-bate-plana para longe, plana de volta, freia, pousa, vira; cada batida para baixo levanta o corpo uma linha |
O clipe idle inclui uma sessão de limpeza das penas (cabeça na asa, mordiscadas rápidas), e o done estica
uma asa para baixo e para trás, com a perna do mesmo lado, antes da assinatura da espécie: o
alongamento que as aves fazem quando terminam algo.
Mais quatro clipes são montados para cada espécie com os quadros dela: doze (a cabeça pesa duas vezes, um tranco que o acorda, então ela vira para as
costas e a ave dorme), wake (um olho abre com a cabeça nas costas, a cabeça volta, o alongamento de
asa e perna (o urubu-rei, cujo done estica as duas asas, pula essa parte) e uma sacudida nas penas), court (asas meio abertas, cabeça baixa, um pulinho a cada
dois tempos e uma olhada para cada lado; os dois condores abrem as asas inteiras, mantêm a cabeça
alta e fazem uma reverência) e fed (depois de engolir, o papo estufa sob a faixa e esvazia em três
tamanhos, na plumagem da própria ave, só no poleiro).
A ilha os toca assim:
- doze: uma ave descansando num poleiro onde ela não plana cochila com ele depois de 90 segundos, ±12% conforme a sessão, e então dorme: o Zeca no fio vazio da ilha e no chat, o bando do Nest e o widget do canto (o bando ocioso da própria ilha plana em vez disso). Com movimento reduzido ela dorme direto.
- wake: o trabalho acorda uma ave dormindo, que se alonga antes do clipe de trabalho (ou antes de decolar, no trabalho na web). Uma permissão, uma pergunta ou uma falha entra direto, sem alongamento.
- court: com uma música tocando (Now playing), as aves ociosas do bando fazem o cortejo no fio em vez de planar, e voltam a subir quando ela para. O Zeca sozinho continua dançando.
- fed: quando o Zeca engole um arquivo no chat, o engolir segue para o papo cheio, que esvazia enquanto ele descansa; pensar, ouvir ou outro arquivo interrompe.
O Zeca percebe você#
No card de foco e no chat, um Zeca em repouso olha para o ponteiro: por cima do ombro quando ele está atrás, para você (com uma piscada) quando está em cima dele. Deixe o ponteiro parado nele e ele limpa as penas; clique nele e ele se assusta; três cliques seguidos e ele se estufa e chia. Quando o app abre, ele cai direto no fio, pousa com um achatamento (afofado, afundado sobre as pernas dobradas) e um quique, e acena um olá; a ilha recolhe quando ele termina. O achatamento é desenhado com as próprias partes dele, então toda espécie e todo visual sazonal pousa do mesmo jeito. Com movimento reduzido não há olá.
Marcas sobre a cabeça#
Uma pequena marca de pixel sobre a cabeça de uma ave diz o estado dela de relance, nas cores de estado da ilha. Ela fica sobre qualquer pose de cabeça em que a ave esteja, e se repete sozinha.
| Marca | Estado | Movimento |
|---|---|---|
| Um balão de pensamento | pensando | os pontinhos se preenchem um por um |
! em âmbar | uma permissão espera | ele pula |
? em ciano | uma pergunta | ele balança |
| Brilhos verdes | concluído | eles cintilam e trocam de lugar |
# em vermelho | falhou | ele treme |
| Uma gota de suor | limite de uso atingido | ela escorre |
z | dormindo | eles sobem flutuando |
Elas aparecem no card de foco e no chat (o Zeca em 3x) e no habitat (1x); a pílula compacta não tem espaço sobre as cabeças e mantém os selos dela.
O bando no fio#
- O Zeca nunca é a ave de uma sessão: ele fica no fio vazio e no chat. A sessão da frente (a que precisa de você, a que você escolheu ou a primeira a chegar) ocupa o lugar dele com a própria ave; toda outra sessão é um vult. Com o Zeca desligado (Settings → Flock & Zeca), um fio vazio fica vazio: nada de Zeca ocioso, nada da assinatura dele.
- O vult de uma sessão nova chega planando pela direita e pousa; uma sessão que termina decola e vai embora voando.
- Cada subagente em execução manda um batedor: um Cathartes (os urubus que acham comida pelo olfato) decola do poleiro da sua sessão e circula baixo ao lado dela, e vai embora quando o subagente termina. No máximo três por sessão, seis no total; só na ilha aberta (a pílula recolhida não tem espaço), nenhum com movimento reduzido. O bando e seus batedores passam por trás do card de um conector (o card do GitHub), nunca por cima do texto dele.
- Visitantes raros: a cada dez a vinte minutos com sessões abertas, um urubu que não é nenhum dos do fio
(um abutre do Velho Mundo ou um condor) chega planando pela direita, sobe uma vez na térmica da ilha
e segue o caminho, sem nunca pousar; ele passa por trás dos cards e das linhas, nunca por cima do texto deles.
Desligue em Settings → Flock & Zeca; nenhum com movimento reduzido ou enquanto a ilha está escondida. O lab traz
um na hora:
/lab/?visitor=1. - Depois de dois segundos ociosa, a ave de uma sessão decola para o céu compartilhado abaixo da ilha. Uma sessão concluída (o agente esperando o próximo prompt) toca primeiro o clipe de concluído, depois decola quando esse clipe e a assinatura da espécie acabam (seis a oito segundos depois que o estado de concluído aparece); o selo “done” dela fica até você dispensá-lo. Cada sessão mantém a sua ave nas transições entre compacto e aberto, na própria fase e velocidade de volta. O bando circula sem parar enquanto está ocioso, de dia. Trabalho traz para baixo só a ave daquela sessão; abrir a ilha deixa as outras aves voando. Sem sessões, não há bando decorativo.
- O dia de um urubu, pelo relógio local: sem sol, sem térmica. Ao amanhecer (6 às 9) as aves
ociosas ficam no fio com as asas abertas ao sol (a pose de asas abertas como um clipe
sunpróprio, sem marca em cima, para nunca agir como um card); das 9 às 17 elas planam; ao entardecer (17 às 19) descem, e à noite dormem no fio, cochilando poucos segundos depois de parar. O Zeca sozinho também toma sol ao amanhecer. Os visitantes raros só vêm de dia, acima dos mais altos do bando. - Cada espécie na sua altura: os Cathartes circulam baixo, o urubu-preto no meio, os condores, o urubu-rei e os do Velho Mundo no alto, na pílula como na ilha aberta.
- Os voos atualizam a 30 fps usando o timer compatível com o desktop. Subidas e retornos em curva preservam a velocidade orbital, com inclinação sutil. Na térmica cada espécie bate as asas como o próprio clipe fly dela (os Cathartes seguem balançando no V entre as rajadas), e quanto mais larga a asa, mais raras as rajadas: a cada 3,6 s no urubu-preto, por volta de 10 s num condor. Uma ave que se inclina na curva é desenhada, não girada: em cinco passos a asa de cima sobe e a de baixo desce e perde algumas colunas, em células inteiras do mesmo tamanho do voo reto. Os quadros de voo usam o cache de bitmaps existente e renderização nearest-neighbor.
- O céu é um canvas transparente e sem ponteiro dentro da superfície de desktop existente de 720 por 640; ele não aumenta a região de entrada nem remapeia a janela layer-shell do Linux.
- Com movimento reduzido (inclusive mudanças durante o voo), as aves voltam às suas cenas estáticas. Uma ave ociosa no poleiro cochila depois de 90 segundos, e uma ave ociosa decola depois de 2, cada uma ±12% conforme a sessão, para o bando nunca se mexer no mesmo passo. Cenas escondidas param os timers de desenho.
- O agente aparece como uma pequena faixa na base do pescoço (laranja Claude, verde-azulado Codex, rosa OpenCode, índigo Qwen, azul Copilot, violeta para qualquer outra ferramenta, o Antigravity incluído), nunca como a cor da ave.
- Um clipe toca pelo menos 600 ms antes que um mais calmo o substitua; aprovação, pergunta e falha entram na hora. Um voo sempre pousa antes de o próximo clipe começar.
As espécies#
O Zeca é um urubu-de-cabeça-preta, a menos que você escolha outra espécie para ele em Settings → Flock & Zeca. O bando
vem dos urubus do Brasil por padrão; a mesma página amplia para as Américas (com os dois
condores) ou para todos os urubus e abutres do mundo. Toda espécie é construída
a partir do rig do Zeca em ui/src/character/flock/ (uma paleta, um tamanho a partir das medidas da ave real,
alguns detalhes de pixel, e só os clipes em que a ave real se comporta diferente), então todos os
clipes do Zeca funcionam em todas as aves.
- Tamanho: a envergadura segue a média real (as 37 células do Zeca são 150 cm, então um condor tem 73). A envergadura extra se espalha por igual ao longo do braço e da mão de cada asa, então uma ave grande mantém o pulso, a curva e os dedos em vez de uma barra reta esticada. A pose de banho de sol é desenhada no tamanho de cada espécie, com linhas e colunas acrescentadas dentro da asa e o contorno do corpo redesenhado, então uma ave grande é maior por inteiro, nunca um tronco mais comprido; a asa erguida e o alongamento também crescem com a ave. As pontas das penas da mão só são claras onde as da ave real são (as primárias brancas do urubu-de-cabeça-preta, o prateado dos Cathartes), com as asas abertas, erguidas ou em voo, e o condor-dos-andes mostra o seu painel branco. O comprimento do corpo é comprimido para que as maiores aves ainda caibam na ilha. Os grifos, os condores, o abutre-preto, o abutre-orelhudo e o quebra-ossos têm um corpo alto próprio, com ombros e um pescoço longo que afunda no colar de penas em repouso e se estica quando alerta.
- Cabeças: toda espécie usa a cabeça do Zeca com a sua pele, o seu olho e o seu bico. De frente, os olhos ficam nas bordas do rosto, com o bico entre eles. As oito maiores (poleiro de 26 linhas ou mais: os dois condores, o quebra-ossos, o grifo, o grifo-do-cabo, o grifo-do-himalaia, o abutre-preto e o abutre-orelhudo) ganham uma cabeça uma linha mais funda e, de perfil, uma coluna mais longa, ou de frente uma coluna de bochecha a mais de cada lado, crescida para cima e para trás, então a ponta do bico e o pescoço ficam no lugar: a cabeça do Zeca num corpo de condor parecia a de uma ave pequena. A sobrancelha entra depois que a espécie pinta a sua pele, então uma testa de penas ou uma cabeça vermelha mantém a sua cor sobre o olho.
- Asas em voo: uma asa é desenhada no planeio, e as batidas para cima e para baixo a dobram no
ombro, mais na mão que no braço, então as batidas são lidas como uma única asa se movendo. Vista de baixo,
a borda de ataque é iluminada, as penas de voo atrás dela formam uma faixa mais clara (prateada no urubu-de-cabeça-vermelha e
nos urubus-de-cabeça-amarela), a borda de fuga é serrilhada e as primárias se abrem em dedos.
Onde as penas de voo da ave de verdade são escuras sob coberteiras claras (o abutre-do-egito, o
abutre-das-palmeiras e todos os grifos), a parte de trás da asa é escura; o branco do
condor-da-califórnia é um triângulo nas coberteiras, e o quebra-ossos voa com a barriga laranja e a
cauda longa em losango. Cada parte de voo também tem uma cópia
:moltcom uma pena de voo faltando em cada asa, que o voo mostra de dezembro a março (a muda de verão, pelo calendário local). - Plumagem em repouso: o urubu-de-cabeça-vermelha é o mais marrom dos três Cathartes, o urubu-de-cabeça-amarela o mais pálido, com as hastes claras das primárias riscando a asa dobrada, e o urubu-da-mata o mais preto, com brilho azul-esverdeado. A cauda branca do abutre-do-egito é uma cunha curta, e o abutre-de-dorso-branco e o abutre-de-dorso-branco-asiático mostram o uropígio branco só como uma faixa na borda das costas, sob a asa dobrada.
- Quem é quem: o Zeca é a espécie que você escolheu. O core (
crates/core/src/flock.rs) dá a cada outra sessão uma espécie do grupo que você escolheu, por um hash do id dela e da estação, um número que o app sorteia ao abrir: uma sessão mantém a sua ave enquanto vive, e o bando muda cada vez que o app abre. Um projeto com três ou mais sessões coroa rei a sessão mais antiga (o urubu-rei), e a coroa fica lá enquanto o foco muda. O rei nunca é sorteado, então continua raro. - Assinaturas: toda espécie tem um clipe próprio, a partir de algo que a ave real faz. A
ave de uma sessão concluída toca a dela logo depois do clipe de concluído, antes de decolar; o Zeca sozinho num
fio vazio (fora do chat) toca a dele vinte segundos depois de se acomodar, e depois uma vez por minuto
até cochilar. Uma assinatura que sai do poleiro (urubu-de-cabeça-amarela, grifo-de-rüppell,
abutre-de-dorso-branco e abutre-de-rabadilha-branca) acontece no céu: uma vez por volta, enquanto a
ave plana, ela toca os quadros de voo dela no seu próprio ponto da volta (crescendo a partir do
planeio e voltando a ele, sem passar do topo da ilha), e o urubu-de-cabeça-amarela desce rasante
até perto do chão da ilha. O lab também mostra cada uma (
/lab/?species=<id>). Com movimento reduzido, o Zeca não toca a dele por conta própria.
| Espécie | Assinatura |
|---|---|
| Urubu-de-cabeça-preta (Coragyps atratus) | Se refresca: urohidrose, por isso as pernas parecem brancas |
| Urubu-de-cabeça-vermelha (Cathartes aura) | Banho de sol, asas abertas (a pose horáltica); em voo, um V que balança |
| Urubu-de-cabeça-amarela (Cathartes burrovianus) | Baixo sobre o capim, balançando rápido |
| Urubu-da-mata (Cathartes melambrotus) | Espera o rei abrir a carcaça |
| Urubu-rei (Sarcoramphus papa) | Abre a carcaça com o bico mais forte |
| Condor-dos-andes (Vultur gryphus) | A cabeça fica vermelha: dominância |
| Condor-da-califórnia (Gymnogyps californianus) | Corte: cabeça vermelha, asas abertas, uma reverência |
| Abutre-do-egito (Neophron percnopterus) | Joga uma pedra num ovo |
| Quebra-ossos (Gypaetus barbatus) | Solta um osso para quebrá-lo |
| Abutre-das-palmeiras (Gypohierax angolensis) | Anda pela praia |
| Abutre-de-capuz (Necrosyrtes monachus) | O rosto fica vermelho quando agitado |
| Grifo (Gyps fulvus) | Estica o pescoço para fora do colar de penas |
| Grifo-de-rüppell (Gyps rueppelli) | Sobe mais alto: o voo de ave mais alto já registrado |
| Grifo-do-cabo (Gyps coprotheres) | Sente o calor com as manchas azuis do pescoço |
| Grifo-do-himalaia (Gyps himalayensis) | Sacode a neve |
| Abutre-de-dorso-branco (Gyps africanus) | Pousa no meio de um bando, freando com as asas |
| Abutre-indiano (Gyps indicus) | Enfia o pescoço nu na carcaça |
| Abutre-de-bico-fino (Gyps tenuirostris) | Sonda com o bico longo e fino |
| Abutre-de-rabadilha-branca (Gyps bengalensis) | Decola, mostrando as costas brancas |
| Abutre-preto (Aegypius monachus) | Se agiganta sobre os rivais |
| Abutre-orelhudo (Torgos tracheliotos) | Investe |
| Abutre-real (Sarcogyps calvus) | Sacode a cabeça e as barbelas |
| Abutre-de-cabeça-branca (Trigonoceps occipitalis) | Caça presas vivas |
Visuais#
Só o Zeca usa um visual, da estação ou para sempre; os vults mantêm as penas da sua espécie. O
core escolhe o visual a partir da data do usuário e da configuração (crates/core/src/looks.rs), e a view
o carrega.
| Visual | Quando (Auto) |
|---|---|
witch-hat | 1º de outubro a 1º de novembro |
santa-hat | 1º a 26 de dezembro |
party-hat | 31 de dezembro a 2 de janeiro |
bunny-ears | Sexta-feira Santa à segunda-feira de Páscoa (Páscoa pelo cômputo de Meeus/Jones/Butcher) |
sunglasses | Nunca: só quando escolhido nas configurações |
west-coast | Nunca: uma bandana azul de paisley amarrada atrás, com as pontas descendo pela nuca, e óculos envolventes |
fitted-cap | Nunca: um boné fechado preto, aba para a frente, uma logo escrita em branco na frente, e óculos envolventes |
mountain-hat | Nunca: o chapéu alto de feltro com a copa amassada, uma fita escura e aba larga |
headband | Nunca: uma faixa branca na cabeça e um curativo embaixo de um olho |
dreads | Nunca: dreads torcidos descendo pela nuca e ao lado do rosto, até abaixo do queixo, com ponteiras de ouro, e um grill de ouro |
front-knot | Nunca: uma bandana vermelha com nó na testa e as pontas para cima, e uma cruz de ouro numa corrente fina |
durag | Nunca: um durag de seda branco com a cauda descendo pelas costas, um grill de ouro, uma corrente com medalhão |
crown | Nunca: uma coroa de ouro com pedras vermelhas, meio inclinada, e uma corrente com medalhão |
bucket-hat | Nunca: um chapéu bucket vermelho de aba mole, e uma corrente grossa de ouro trançada |
clock-chain | Nunca: óculos grandes de armação branca e um relógio numa corrente, que balança quando ele dança |
headphones | Nunca: fones grandes prateados, a concha sobre o ouvido, e uma corrente de ouro |
shutter-shades | Nunca: óculos brancos de persiana e um medalhão |
chrome-chain | Nunca: uma corrente grossa cromada com um medalhão quadrado grande |
eye-patch | Nunca: um tapa-olho com tira dourada, e uma pilha de correntes de ouro |
Um visual sazonal é desenhado duas vezes no zeca.py, de perfil e de frente, com onde ele fica na
cabeça em repouso e na cabeça de frente. As outras poses seguem de onde a copa e o olho delas se moveram; a
olhada para trás usa o perfil espelhado, e em voo ele fica na pequena cabeça de voo. Os outros
visuais são compostos de peças (HATS, EYES, GRILL, NECK no zeca.py): uma combinação é uma linha
que nomeia um chapéu, óculos, um grill e o que pende do pescoço, e looks() carimba as peças da cabeça
numa grade por pose (o grill fica no bico de baixo, que se move mais que a copa), então o
renderizador as lê como qualquer visual. Nenhum visual sobe mais de 5 linhas acima da cabeça; o zeca.py recusa
um que suba.
O espaço do pescoço é do corpo: uma corrente pende de baixo da faixa do agente (a faixa, a marca do agente, fica inteira) e uma cabeça abaixada a cobre como cobriria de verdade. Um pingente pende do fio e fica uma célula para trás quando o corpo balança para a frente (a dança, a sacudida de uma falha); o peito o segura na volta. A pose de banho de sol usa a vista de frente; o voo não tem faixa, então nada pende ali. Dormindo, a cabeça virada para trás sob as penas usa o que cobre o alto da cabeça (um chapéu, uma bandana, os dreads, os fones) e nada do que fica no rosto; a corrente pende no peito afofado.
ui/src/character/looks.ts grava um visual numa cópia das cabeças e dos quadros de voo do conjunto: toda cabeça
cresce as mesmas linhas em cima e suas camadas sobem o mesmo tanto, então uma troca de pose no meio de um clipe mantém o chapéu
no lugar e todo clipe, espécie e cache de quadros funciona sem mudanças. Um visual também pode passar
da última linha da cabeça (os dreads descem abaixo do queixo): a grade cresce para baixo, o que não
move nenhuma camada. Em outra espécie, o visual
segue o olho dela (a crista do condor-dos-andes o desce uma linha). O lab mostra a prévia de cada um
(/lab/?look=<id>).
Um clique com o botão direito no Zeca abre os visuais dele na ilha (ui/src/island/looks.ts), agrupados como acima:
os quatro sazonais, os só de cabeça (os óculos de sol e os cinco estilosos sem nada no pescoço)
e os nove com corrente. Cada quadradinho é o quadro ocioso dele usando o visual; o que está sob o ponteiro vai
para o poleiro como prévia ao vivo. Os grupos ficam em LOOK_GROUPS (ui/src/character/looks.ts),
compartilhados com Settings; um teste do core verifica que cada visual tem um lugar ali.
O Zeca na bandeja#
No modo Panel (Settings), o Zeca mora no ícone da bandeja em vez da ilha no topo. O ícone tem dois
quadros por estado, escolhidos pela atenção do core: ocioso, trabalhando, precisa de você (o mais chamativo: um card
espera), concluído e falhou. Cada quadro é desenhado em 22, 24 e 32 px, e o ícone carrega os três,
então o painel escolhe o mais próximo do seu tamanho (22 px no padrão do Plasma) e o mostra sem escala. Em 32 px ele
é o próprio quadro da ilha (quando precisa de você, asas abertas mais estreitas que as da ilha, largas
demais para o ícone); em 22 e 24, um Zeca menor desenhado para eles: pousado, de cabeça baixa enquanto
trabalha, estufado e chiando quando falhou, asas abertas quando precisa de você. Todo estado menos o
ocioso também tem um selo redondo no canto superior direito com um glifo escuro: pontinhos de trabalho no branco (o último
pisca), precisa de você um ponto de exclamação no âmbar que pisca escuro e volta, concluído um check no verde, falhou um
X no vermelho. Os quadros mudam devagar (uma piscada de 0,2 s, fora isso pausas de 0,5 a 4 s), nenhum com
movimento reduzido. Um clique abre a ilha junto ao painel; o ícone só chama atenção, nunca
responde a um card. Os quadros são desenhados pelo zeca.py em app/icons/tray/<size>/, nunca em tempo de execução.
Onde a arte fica#
design/mascots/zeca/zeca.pyé a fonte: paleta, partes (corpo, poses de cabeça, quadros de voo) e clipes, os visuais sazonais e as peças de que os outros visuais são feitos. Rode-o depois de uma mudança; ele escreveui/src/character/zeca/zeca.json, os quadros da bandeja emapp/icons/tray/e as folhas de revisãodesign/mascots/zeca/clips.pngedesign/mascots/zeca/looks.png.- Um quadro empilha partes em deslocamentos inteiros, então uma pose de cabeça ou uma piscada é desenhada uma vez e reaproveitada.
ui/src/character/flock/transforma o rig do Zeca em cada outra espécie em tempo de execução (rig.tsguarda as transformações,species.tsas 23 espécies); nada é gerado nem versionado para elas.ui/src/character/sprites.tsdesenha os quadros e escolhe um pelo tempo; ele não sabe nada de urubus.- O lab (
npm run dev, depois/lab/) repete cada clipe em loop e faz uma saída completa: decolagem, cruzeiro batendo asas, uma térmica, um planeio de volta, o pouso.