wowlab_engine_content/generated/items/
sporecallers_blooming_loop.rs1#![allow(non_snake_case, dead_code)]
4use wowlab_engine_combat::{CombatSystemBuilder, AuraDefinitionDraft};
5use wowlab_engine_gamedata::{ItemBudget, ResolvedGameData};
6pub(crate) const ITEM_ID: u32 = 268_290;
8pub(crate) const DRIVER_SPELL_ID: u32 = 1_285_138;
10pub(crate) mod SPELL {}
11pub(crate) mod AURA {
12 pub(crate) const ROTBLOOM: u32 = 1_286_135;
14}
15pub(crate) mod AURA_BINDING {
16 pub(crate) const ROTBLOOM: wowlab_engine_combat::AuraBinding = wowlab_engine_combat::generated_identities::items::sporecallers_blooming_loop::ROTBLOOM;
17}
18pub(crate) mod SPELL_BINDING {}
19pub(crate) const RPPM_BINDING: wowlab_engine_combat::RppmBinding = wowlab_engine_combat::generated_identities::items::sporecallers_blooming_loop::RPPM;
20pub(crate) mod DAMAGE_SPELL {}
21pub(crate) mod DAMAGE_AURA {
22 pub(crate) const ROTBLOOM: wowlab_engine_combat::DamageActionId = wowlab_engine_combat::generated_identities::items::sporecallers_blooming_loop::damage::ACTION::SPELL_1286135;
23}
24pub(crate) mod DAMAGE_EFFECT {
25 pub(crate) const CONSUME_MULTIPLIER: wowlab_engine_combat::DamageEffectId = wowlab_engine_combat::generated_identities::items::sporecallers_blooming_loop::damage::EFFECT::SPELL_1285138_EFFECT_2;
26 pub(crate) const VIRULENT_DAMAGE: wowlab_engine_combat::DamageEffectId = wowlab_engine_combat::generated_identities::items::sporecallers_blooming_loop::damage::EFFECT::SPELL_1286316_EFFECT_1;
27}
28pub(crate) mod EFFECT {
29 pub(crate) const CONSUME_MULTIPLIER: (u32, u8) = (1_285_138, 2);
31 pub(crate) const VIRULENT_DAMAGE: (u32, u8) = (1_286_316, 1);
33}
34fn aura_rotbloom(
35 a: AuraDefinitionDraft,
36 data: &ResolvedGameData,
37 budget: ItemBudget,
38) -> Result<AuraDefinitionDraft, wowlab_engine_combat::BuilderError> {
39 a.on_target()
40 .apply_base_from_data(data, 1_286_135)?
41 .max_stacks(
42 data
43 .require_aura_max_stacks(
44 wowlab_types::sim::SpellIdx::from_raw(1_286_135),
45 )?,
46 )
47 .periodic_total_flat_damage_from_data(
48 data,
49 wowlab_engine_combat::validated_milliseconds(
50 data.period(wowlab_types::sim::SpellIdx::from_raw(1_286_135), 1),
51 1_286_135,
52 "periodic_damage.tick_ms",
53 )?,
54 1_286_135,
55 wowlab_engine_domain::dbc::item_scaled_effect_value(
56 wowlab_engine_domain::dbc::EffectLookup::new(
57 data,
58 wowlab_types::sim::EffectRef::new(
59 wowlab_types::sim::SpellIdx::from_raw(1_285_138),
60 1,
61 ),
62 ),
63 budget.item_level,
64 )
65 .or_else(|| data.is_empty().then_some(0.0))
66 .ok_or_else(|| {
67 wowlab_engine_combat::BuilderError::missing_item_scaling_data(
68 1_285_138,
69 1,
70 budget.item_level,
71 )
72 })?,
73 )?
74 .apply_periodic_behavior_from_data(data, 1_286_135)
75}
76pub(crate) fn register(
77 builder: CombatSystemBuilder,
78 data: &ResolvedGameData,
79 budget: ItemBudget,
80) -> CombatSystemBuilder {
81 let builder = builder
82 .effect_identities(
83 wowlab_engine_combat::generated_identities::items::sporecallers_blooming_loop::damage::ALL,
84 );
85
86 crate::items::register_item!(
87 builder, data, "Sporecallers Blooming Loop", rppm_driver : (RPPM_BINDING,
88 ITEM_ID, 1_285_138), auras : (budget) [(AURA::ROTBLOOM, AURA_BINDING::ROTBLOOM,
89 aura_rotbloom),]
90 )
91}