Skip to content

TNT Games computed stats

Derived TNT Games metrics, attached as the always-on computed property of the raw stats block: whenever player.stats.tntGames is present, player.stats.tntGames.computed is a TNTGamesComputed built by computeTNTGames(raw) from src/computed/modes/tntgames.ts. All inputs are fields of the raw TNTGamesStats block (and its tntRun, pvpRun, bowSpleef, tntTag, and wizards sub-blocks).

Conventions used below:

  • Ratios are bare (not percentages), rounded to 2 decimals. When the denominator is 0 the numerator is returned as-is (K/D convention).
  • *Share fields are percentages from 0 to 100, rounded to 2 decimals; a zero whole yields 0.
  • *ForNext* fields are the additional amount of the numerator stat needed to reach the next whole ratio (floor(num / den) + 1); 0 when the denominator is 0.

TNTGamesComputed

The top-level object at player.stats.tntGames.computed.

ts
export interface TNTGamesComputed {
  readonly tntRun: TNTGamesTNTRunComputed;
  readonly pvpRun: TNTGamesPVPRunComputed;
  readonly bowSpleef: TNTGamesBowSpleefComputed;
  readonly tntTag: TNTGamesTNTTagComputed;
  readonly wizards: TNTGamesWizardsComputed;
  readonly modeWinShare: TNTGamesModeWinShare;
}
FieldFormulaMeaning
tntRunsee TNTGamesTNTRunComputedDerived TNT Run metrics
pvpRunsee TNTGamesPVPRunComputedDerived PVP Run metrics
bowSpleefsee TNTGamesBowSpleefComputedDerived Bow Spleef metrics
tntTagsee TNTGamesTNTTagComputedDerived TNT Tag metrics
wizardssee TNTGamesWizardsComputedDerived Wizards metrics, including per-class breakdowns
modeWinSharesee TNTGamesModeWinShareEach mode's percentage of the player's overall TNT Games wins

TNTGamesTNTRunComputed

ts
export interface TNTGamesTNTRunComputed {
  readonly wlr: number;
  readonly potionsPerWin: number;
}
FieldFormulaMeaning
wlrtntRun.wins / tntRun.deathsWin/loss ratio for TNT Run; deaths stand in for losses
potionsPerWin(tntRun.slownessPotions + tntRun.speedPotions) / tntRun.winsTotal potions (slowness plus speed) thrown per TNT Run win

TNTGamesPVPRunComputed

ts
export interface TNTGamesPVPRunComputed {
  readonly kdr: number;
  readonly killsForNextKdr: number;
  readonly wlr: number;
  readonly killsPerWin: number;
}
FieldFormulaMeaning
kdrpvpRun.kills / pvpRun.deathsKill/death ratio in PVP Run
killsForNextKdrneededForNextWholeRatio(pvpRun.kills, pvpRun.deaths)Kills still needed to reach the next whole-number KDR
wlrpvpRun.wins / pvpRun.deathsWin/loss ratio for PVP Run; deaths stand in for losses
killsPerWinpvpRun.kills / pvpRun.winsAverage kills per PVP Run win

TNTGamesBowSpleefComputed

ts
export interface TNTGamesBowSpleefComputed {
  readonly wlr: number;
  readonly tagsPerWin: number;
}
FieldFormulaMeaning
wlrbowSpleef.wins / bowSpleef.deathsWin/loss ratio for Bow Spleef; deaths stand in for losses
tagsPerWinbowSpleef.tags / bowSpleef.winsAverage tags landed per Bow Spleef win

TNTGamesTNTTagComputed

ts
export interface TNTGamesTNTTagComputed {
  readonly kdr: number;
  readonly killsForNextKdr: number;
  readonly wlr: number;
  readonly killsPerWin: number;
}
FieldFormulaMeaning
kdrtntTag.kills / tntTag.deathsKill/death ratio in TNT Tag
killsForNextKdrneededForNextWholeRatio(tntTag.kills, tntTag.deaths)Kills still needed to reach the next whole-number KDR
wlrtntTag.wins / tntTag.deathsWin/loss ratio for TNT Tag; deaths stand in for losses
killsPerWintntTag.kills / tntTag.winsAverage kills per TNT Tag win

TNTGamesWizardsComputed

ts
export interface TNTGamesWizardsComputed {
  readonly kdr: number;
  readonly killsForNextKdr: number;
  readonly wlr: number;
  readonly kad: number;
  readonly assistRatio: number;
  readonly pointsPerWin: number;
  readonly killsPerWin: number;
  readonly classes: Readonly<Record<string, TNTGamesWizardClassComputed>>;
}
FieldFormulaMeaning
kdrwizards.kills / wizards.deathsOverall Wizards kill/death ratio
killsForNextKdrneededForNextWholeRatio(wizards.kills, wizards.deaths)Kills still needed to reach the next whole-number KDR
wlrwizards.wins / wizards.deathsWin/loss ratio for Wizards; deaths stand in for losses
kad(wizards.kills + wizards.assists) / wizards.deathsKills-and-assists per death
assistRatiowizards.assists / wizards.killsAssists per kill
pointsPerWinwizards.points / wizards.winsAverage capture points per Wizards win
killsPerWinwizards.kills / wizards.winsAverage kills per Wizards win
classesone entry per class namePer-class breakdown; see TNTGamesWizardClassComputed

The classes record always contains exactly these ten keys, in this order: ancient, arcane, blood, fire, hydro, ice, kinetic, storm, toxic, wither.

TNTGamesWizardClassComputed

One entry per wizard class, computed from that class's TNTGamesWizardBase raw stats.

ts
export interface TNTGamesWizardClassComputed {
  readonly kdr: number;
  readonly killsForNextKdr: number;
  readonly mitigationPerDeath: number;
}
FieldFormulaMeaning
kdrclass.kills / class.deathsKill/death ratio on this class
killsForNextKdrneededForNextWholeRatio(class.kills, class.deaths)Kills still needed on this class to reach the next whole-number KDR
mitigationPerDeath(class.healing + class.damageTaken) / class.deathsDamage soaked (healing plus damage taken) per death on this class

TNTGamesModeWinShare

Each field is a percentage (0-100) of the player's overall TNT Games wins (raw.wins) earned in that mode. 0 when raw.wins is 0.

ts
export interface TNTGamesModeWinShare {
  readonly tntRun: number;
  readonly pvpRun: number;
  readonly bowSpleef: number;
  readonly tntTag: number;
  readonly wizards: number;
}
FieldFormulaMeaning
tntRun100 * tntRun.wins / raw.winsShare of overall TNT Games wins from TNT Run
pvpRun100 * pvpRun.wins / raw.winsShare of overall TNT Games wins from PVP Run
bowSpleef100 * bowSpleef.wins / raw.winsShare of overall TNT Games wins from Bow Spleef
tntTag100 * tntTag.wins / raw.winsShare of overall TNT Games wins from TNT Tag
wizards100 * wizards.wins / raw.winsShare of overall TNT Games wins from Wizards

Released under the MIT License.