Skip to content

Creature Library

Felipe Lippelt edited this page Jun 19, 2026 · 1 revision

Creature Library / Biblioteca de Criaturas

Banco de NPCs e monstros reutilizável entre encontros e entre campanhas. O mestre importa uma criatura uma vez (colando JSON do 5etools, ou preenchendo um form), e ela fica salva pra subir no tracker em qualquer sessão futura.

É sistema-agnóstica: cada entrada carrega o campo system que discrimina a que sistema pertence.

Importar do 5etools (D&D 5e)

No painel Biblioteca de criaturas, expanda Importar do 5etools e cole o JSON de um monstro (botão de export do site). O servidor parseia, normaliza e salva.

  • Sistema: por padrão usa o sistema da campanha ativa; pode forçar (dnd5e-2024 / dnd5e-2014) no campo ao lado.
  • O parsing roda no servidor (valida + storage atômico); o cliente só envia a string crua.
  • Payloads acima de ~200KB são rejeitados.

O que é aproveitado do JSON

name, type, size, alignment (+ alignmentPrefix), ac, hp (média + fórmula), speed, atributos (STR–CHA), save, cr, senses, passive, languages, immune (incluindo grupos condicionais tipo "bludgeoning/piercing/slashing (from nonmagical attacks)"), conditionImmune, trait, action, bonus, reaction, legendary, spellcasting e source+page.

O que é descartado

Metadata interna do site, sem uso na mesa: traitTags, senseTags, actionTags, languageTags, damageTags, spellcastingTags, miscTags, conditionInflict*, savingThrowForced*, hasToken, hasFluff, hasFluffImages.

Markup inline

O 5etools usa tags tipo {@dc 22}, {@atk ms}, {@damage 3d10+7}. O importer (strip5eMarkup) converte tudo pra texto plano antes de salvar:

Tag Vira
{@dc 22} DC 22
{@hit 14} +14
{@atk ms} Melee Spell Attack
{@damage 3d10 + 7} 3d10 + 7
{@spell Detect Magic|XPHB} Detect Magic
{@recharge 5} (Recharge 5-6)

Criatura genérica (qualquer sistema)

Para sistemas sem parser dedicado (Lancer, Vampire, etc.), o painel mostra um form mínimo (GenericCreatureForm) com nome, tipo, CR, HP, CA e notas. Salva via saveCreature no sistema da campanha ativa. Sem parsing — os campos essenciais bastam pra rodar.

Usar numa sessão

Selecione a criatura na lista (filtro por nome/tipo/sistema), informe a iniciativa e clique + Tracker. Ela entra no Combat Tracker como combatente, com HP semeado pela média da criatura.

Persistência

Vive num arquivo separado e global: .creatures.json (não entra no .session.json). Motivo: a biblioteca não muda quando troca de campanha e cresce com o tempo — mantê-la no snapshot inflaria o broadcast. Cap defensivo de 500 entradas, write com debounce de 500ms.

Socket events

socket.emit('importCreature5e', rawJson, systemOverride?)
socket.emit('saveCreature', { system, name, type?, cr?, hp?, ac?, notes?, ... })
socket.emit('deleteCreature', id)
socket.emit('spawnCombatantFromCreature', creatureId, initiative)

Veja também: Combat Tracker, Encounter Library, RPG Systems.

Clone this wiki locally