Gear, Troops & Research

Chief Charm

The three Chief Charm slots and the shared upgrade table that every charm progresses through.

Use it to look up the materials, stat gain, power, and score of each charm upgrade step. The table has the same shape as the Chief Gear table, without deployment capacity.


Types

ChiefCharmSlot

FieldTypeDescription
idstringStable identifier
namestringDisplay name
troopTypeChiefGearTroopTypeLancer, Infantry, or Marksman
imagesstring[]18 icons. The icon of level n is images[n - 1]

ChiefCharmLevel

FieldTypeDescription
idstringStable identifier, such as level-11-stage-1
ordernumberPosition in the table, from 1
namestringDisplay name, such as Level 11 Stage 1
levelnumberCharm level, 1 to 18
stagenumberStage within the level
materialsChiefCharmMaterial[]Item ids from items() and the amount needed
statTotalPercentnumberTotal stat bonus at this step
powerTotalnumberTotal power at this step
scorenumberCharm score that the step to this entry adds

ChiefCharmMaterial

FieldTypeDescription
itemIdstringAn id from items()
amountnumberAmount needed

The materials are Charm Guide, Charm Design, and Charm Secrets.


Factories

import { chiefCharmSlots, chiefCharm } from 'whiteout-survival-data'

chiefCharmSlots() // all 3 slots (Infantry, Lancer, Marksman)
chiefCharm() // all 75 upgrade steps

chiefCharm(source) // wrap a pre-filtered array

Filters

MethodSignatureDescription
chiefCharmSlots().byTroopType(type)byTroopType(troopType: ChiefGearTroopType)Slots that buff Lancer, Infantry, or Marksman
chiefCharm().byLevel(level)byLevel(level: number)Steps of one charm level

Helpers

FunctionReturnsDescription
chiefCharmImage(slot, level)stringThe icon of a slot for a level from 1 to 18

Terminal methods

MethodReturnsDescription
.get()T[]All results
.first()T | undefinedFirst result
.find(id)T | undefinedFind by id
.findByName(name)T | undefinedCase-insensitive exact name match
.search(query)T[]Case-insensitive partial name match
.count()numberNumber of results

T is ChiefCharmSlot for chiefCharmSlots() and ChiefCharmLevel for chiefCharm().


Examples

import {
  chiefCharm,
  chiefCharmImage,
  chiefCharmSlots,
} from 'whiteout-survival-data'

// Every step of charm level 11
chiefCharm().byLevel(11).count() // 5

// Materials for one step. Charm Secrets first appears at level 11 stage 1
chiefCharm()
  .find('level-11-stage-1')
  ?.materials.map((m) => m.itemId)
// ['charm-guide', 'charm-design', 'charm-secrets']

// The charm that buffs Marksman, and its icon at level 18
const marksman = chiefCharmSlots().byTroopType('Marksman').first()
if (marksman) chiefCharmImage(marksman, 18) // '/images/chief-charm/Marksman-18.png'

Notes

Charm Secrets appears only from level 11 stage 1. The table lists exactly the materials of each step, so a step does not always have three.

A charm changes its look at each of its 18 levels. For that reason images is a plain array and not a map by rarity, as it is for Chief Gear.

The score is what events count. A whole level scores 625, 1,250, 3,125, 8,750, 11,250, 12,500, 12,500, 13,000, 14,000, 15,000, 16,000, 17,000, 18,000, 19,000, 20,000, 21,000, 22,500, and 24,300 for levels 1 to 18. The score does not depend on power. The steps that lead up to a level carry its score, so the rows level-4-stage-1, level-4-stage-2, level-4-stage-3, and level-5-stage-0 together score 11,250, the whole score of level 5.

The score split is not confirmed

A level with several steps splits its score evenly over them, with the remainder on the first steps. The game does not confirm this split.


Next steps

Previous
Chief Gear