wowlab_engine_combat/builder/spell_builder/
finalize.rs1use super::{BuilderSpellDef, CooldownDef, DamageEffectRef, SpellDefinitionDraft};
2
3impl SpellDefinitionDraft {
4 pub(crate) fn finalize(self, name: String, id: u32) -> BuilderSpellDef {
5 let cooldown = self.cooldown_secs.map(|dur| CooldownDef {
6 duration_secs: dur,
7 category: self.cooldown_category,
8 category_duration_secs: self.category_cooldown_secs,
9 charge_category: self.charge_category,
10 max_charges: self.max_charges,
11 recharge_secs: self.recharge_secs.unwrap_or(dur),
12 });
13
14 let damage_effect = self
15 .damage_effect
16 .unwrap_or_else(|| DamageEffectRef::new(id, 1));
17 let channel_tick_spell_id = self.channel_tick_spell_id.unwrap_or(damage_effect.spell_id);
18
19 let travel = crate::travel::SpellTravelData {
20 explicit_fixed_ms: self.fixed_travel_time_override_ms,
21 projectile_speed: self.projectile_speed,
22 launch_delay_s: self.launch_delay_s,
23 dbc_fixed_travel_time: self.dbc_fixed_travel_time,
24 };
25
26 BuilderSpellDef::from_draft(
27 self,
28 id,
29 name,
30 travel,
31 cooldown,
32 damage_effect,
33 channel_tick_spell_id,
34 )
35 }
36}