λ Sistema

Mecánicas del juego

Todas las fórmulas exactas, las unidades en que se almacenan los stats en el CSV fuente, y dos calculadoras interactivas para experimentar con builds y armaduras.

Daño y DPS

Fórmula maestra
DPS = AttackSpeed × AttackDamage × (1 + CriticalChance × (CriticalDamage − 1))
  • · AttackSpeed = raw / 100 (90 → 0.9 atk/s)
  • · AttackDamage = raw (entero, sin escalar)
  • · CriticalChance = raw / 100 (25 → 0.25 = 25%)
  • · CriticalDamage = raw / 1000 (1400 → ×1.40 multiplicador)
Preset de héroe
DPS
1.98
Daño medio/golpe
2.20
Crit damage
2.80
Hits/seg
0.90
Comparativa con héroes base
Knight
×1.00
Ranger
×1.65
Sorcerer
×1.36
Priest
×2.04
Hunter
×1.13
Slayer
×1.18

Defensa y HP efectivo

Fórmulas
damage_taken = 100 / (100 + Armor)
mitigation = Armor / (100 + Armor)
EHP_físico = MaxHp × (100 + Armor) / 100
  • · Sin techo: cada punto añade EHP, pero la mitigación se acerca asintóticamente al 100%.
Preset de héroe
EHP físico
2030
Daño recibido
69.0%
Mitigación
31.0%
EHP / HP
1.45
Curva de mitigación (0 → 500)
31.0% @ 45100%0%500

Orden de aplicación de stats

Pipeline
  1. Base del héroe/equipo
  2. Sumar modificadores Flat
  3. Multiplicar por (1 + Σ Additive)
  4. Multiplicar por cada Multiplicative como (1 + valor)
1Base100100.00
2Base + Flat (20)100 + 20120.00
3× (1 + Additive 50%)120 × 1.50180.00
4× Mults (20% × 15%)180.00 × 1.20 × 1.15248.40
Final248.40

Recompensas de stage

Oro por monstruo normal
monster.RewardGold × stage_level.MonsterGoldMultiplier / 100
Exp por monstruo normal
monster.RewardExp × stage_level.MonsterExpMultiplier / 100
Oro del jefe
boss.RewardGold × stage.BossGoldMultiplier / 1000 × stage_level.MonsterGoldMultiplier / 100
  • · Doble multiplicador: el del boss × el del nivel global.
HP del jefe
boss.MaxLife × stage.BossHpMultiplier / 1000 × stage_level.MonsterHpMultiplier / 100
Daño del jefe
boss.AttackDamage × stage.BossDamageMultiplier / 1000 × stage_level.MonsterAtkDmgMultiplier / 100
Oro/clear esperado
oro_medio_monstruo × (waves × monstruos_por_wave) + oro_jefe
  • · Lo que aparece en cada página de stage como 'Oro / clear'.

Cálculo de drops

Resolución de la pool de un stage
DropKey = StageInfo.{MonsterDropItemKey|BossDropItemKey} × 10 + difficulty_variant
  • · Stage referencia con 6 dígitos; el DropKey real es de 7 (último dígito = variante: 1 o 5).
Probabilidad de un item en una pool
prob = entry.Weight / Σ(weights con misma hero_condition)
  • · Las entradas con HeroKeyCondition forman buckets separados — solo aplican si juegas con ese héroe.
REWARDTYPE = ITEMGROUP
RewardKey → ItemGroupInfoData (1-a-muchos: el peso se reparte por cada item del grupo)
REWARDTYPE = ITEM
RewardKey es directamente el ItemKey
Ver JSON original
{
  "_version": "TBH 1.00.05",
  "dps_formula": {
    "formula": "DPS = AttackSpeed * AttackDamage * (1 + CriticalChance * (CriticalDamage - 1))",
    "units": {
      "AttackSpeed": "raw_value / 100 (e.g. 90 -> 0.9 attacks per second)",
      "AttackDamage": "raw integer (multiplied by skill Value/1000 for skill DPS)",
      "CriticalChance": "raw_value / 100 (e.g. 25 -> 0.25 = 25%)",
      "CriticalDamage": "raw_value / 1000 (e.g. 1400 -> 1.40x crit multiplier)"
    },
    "examples": [
      {
        "hero": "Knight",
        "dps_base": 1.98
      },
      {
        "hero": "Ranger",
        "dps_base": 1.2
      },
      {
        "hero": "Sorcerer",
        "dps_base": 1.4575
      }
    ]
  },
  "ehp_formula": {
    "formula": "EffectiveHP = MaxHp * (100 + Armor) / 100",
    "armor_curve": "damage_taken_fraction = 100 / (100 + armor)"
  },
  "stat_mod_application_order": [
    "1. Base stat from hero/gear",
    "2. Sum all Flat modifiers (add to base)",
    "3. Multiply by (1 + sum of Additive modifiers)",
    "4. Multiply by each Multiplicative modifier (1 + value)"
  ],
  "stage_reward_multipliers": {
    "monster_gold": "monster.RewardGold * stage_level.MonsterGoldMultiplier/100",
    "monster_exp": "monster.RewardExp * stage_level.MonsterExpMultiplier/100",
    "boss_gold": "boss.RewardGold * stage.BossGoldMultiplier/1000 * stage_level.MonsterGoldMultiplier/100",
    "boss_hp": "boss.MaxLife * stage.BossHpMultiplier/1000 * stage_level.MonsterHpMultiplier/100"
  },
  "drop_calculation": {
    "stage_pool_resolution": "StageInfo.MonsterDropItemKey/BossDropItemKey are 6-digit base keys; actual DropKey = base*10 + difficulty_variant (1 or 5 observed)",
    "drop_pool_probability": "For each DropKey: probability_in_pool = entry.Weight / sum(all_weights_in_pool)",
    "hero_conditional_drops": "Some entries have HeroKeyCondition set — they only apply when playing that hero"
  }
}