Skip to main content

wowlab_engine_gamedata/game_data/
item_budget.rs

1//! [`ItemBudget`]: ilvl/quality stat budgets for buffs that scale with the casting item's level.
2
3use wowlab_types::game::GearSlot;
4
5use super::game_tables::RatingMultiplierSlot;
6
7/// Item-level stat budgets for buffs with attribute 354.
8#[derive(Clone, Copy, Debug, Default, PartialEq)]
9pub struct ItemBudget {
10    /// Effective item level used to select DBC effect-scaling columns.
11    pub item_level: i32,
12    pub stat: f64,
13    /// Budget for rating effects (scaling class `-7`): `stat * CombatRatingsMultByIlvl(slot, ilvl)`.
14    pub rating: f64,
15}
16
17/// Returns the combat-rating multiplier column for a gear slot.
18#[must_use]
19pub const fn rating_multiplier_slot_for_gear(slot: GearSlot) -> RatingMultiplierSlot {
20    match slot {
21        GearSlot::Trinket1 | GearSlot::Trinket2 => RatingMultiplierSlot::Trinket,
22        GearSlot::Neck | GearSlot::Finger1 | GearSlot::Finger2 => RatingMultiplierSlot::Jewelry,
23        GearSlot::MainHand | GearSlot::OffHand => RatingMultiplierSlot::Weapon,
24        _ => RatingMultiplierSlot::Armor,
25    }
26}