Skip to content

Skills & Passivas ​

Barras de skill ​

Skills slotados importam mesmo que esta biblioteca calcule stats, não rotações de dano: o motor usa a barra ativa para decidir efeitos condicionais — passivas de skill line (ex.: passivas de Destruction Staff só se aplicam com uma skill de staff na barra) e bônus de set condicionais.

ts
const stats = calculateBuild({
  character: { /* ... */ },
  skillBars: {
    bar1: [
      { skillId: 28807, morphIndex: 2 }, // Crystal Fragments (segundo morph)
      { skillId: 24322 },                // Mages' Fury (sem morph)
    ],
    bar2: [
      { skillId: 29073, morphIndex: 1 }, // Boundless Storm (primeiro morph)
    ],
  },
  activeWeaponBar: 1, // padrão — qual barra está ativa
});

Cada SkillSlot aceita:

CampoDescrição
skillIdID do skill base (sem morph) — chave de lookup do motor.
morphSkillIdAbility ID opcional do morph equipado; usado para resolver o texto correto da descrição.
morphIndex0 base (padrão), 1 primeiro morph, 2 segundo morph.

Até 6 skills por barra. activeWeaponBar também seleciona quais itens de arma (MainHand1/OffHand1 vs MainHand2/OffHand2) contam para encantamentos e bônus de set.

Passivas ​

Passivas são desbloqueadas por ability ID. As funções de catálogo dão os IDs — cada passiva aparece uma vez por rank, então escolha o rank desejado (normalmente o último):

ts
import {
  listRacialPassives,      // passivas de raça, ex.: listRacialPassives('High Elf')
  listClassPassives,       // passivas de classe (3 skill lines)
  listPassivesBySkillLine, // qualquer linha: 'Heavy Armor', 'Undaunted', 'Destruction Staff', ...
  listAvailableSkillLines, // todos os nomes válidos de skill line
} from 'uesp-eso-build-wrapper';

const idsPassivas = [
  ...listRacialPassives('High Elf'),
  ...listClassPassives('Sorcerer'),
  ...listPassivesBySkillLine('Light Armor'),
  ...listPassivesBySkillLine('Undaunted'),
].map((p) => p.abilityId);

const stats = calculateBuild({
  character: { /* ... */ },
  passiveSkills: idsPassivas,
});

O efeito de cada passiva é aplicado pelo motor casando o texto da descrição — o mesmo mecanismo que o editor da UESP usa.

Passivas de raça automáticas ​

autoPassives: true espelha o checkbox "Auto Purchase Racial Passives" da UESP: injeta automaticamente as passivas de rank máximo da raça selecionada.

ts
const stats = calculateBuild({
  character: { race: 'High Elf', /* ... */ },
  autoPassives: true,
});

Cobre apenas passivas de raça — passivas de classe e de skill line devem ser passadas explicitamente via passiveSkills.

Passivas inerentes (bônus/penalidades de armadura) ​

O editor da UESP carrega sozinho o baseline ESO_FREE_PASSIVES — os Light/Medium/Heavy Armor Bonuses e Penalties inerentes, raciais, craft e algumas ativas grátis. autoInherentPassives: true espelha isso: o motor aplica essas passivas além de passiveSkills.

ts
const stats = calculateBuild({
  character: { /* ... */ },
  items: itensEquipados,
  autoInherentPassives: true,
});

As entradas de armadura são gated por peça equipada, então sem armadura daquele peso elas não contribuem em nada. Use listInherentPassives() para enumerá-las — por exemplo, para marcá-las como adquiridas numa UI.

Elder Scrolls Online is a trademark of ZeniMax Media Inc. This project is not affiliated with or endorsed by ZeniMax Media Inc.