Core/Spells: Expose spell channel duration to scripts

This commit is contained in:
Shauren
2025-05-17 19:39:10 +02:00
parent 4a345301b8
commit aefdd67ed1
2 changed files with 7 additions and 6 deletions

View File

@@ -566,7 +566,7 @@ m_spellValue(new SpellValue(m_spellInfo, caster)), _spellEvent(nullptr)
m_runesState = 0;
m_casttime = 0; // setup to correct value in Spell::prepare, must not be used before.
m_timer = 0; // will set to castime in prepare
m_channeledDuration = 0; // will be setup in Spell::handle_immediate
m_channelDuration = 0; // will be setup in Spell::handle_immediate
m_launchHandled = false;
m_immediateHandled = false;
@@ -4039,7 +4039,7 @@ void Spell::handle_immediate()
else
duration = *m_spellValue->Duration;
m_channeledDuration = duration;
m_channelDuration = duration;
SendChannelStart(duration);
}
else if (duration == -1)
@@ -4328,7 +4328,7 @@ void Spell::update(uint32 difftime)
{
int32 completedStages = [&]() -> int32
{
Milliseconds passed(m_channeledDuration - m_timer);
Milliseconds passed(m_channelDuration - m_timer);
for (std::size_t i = 0; i < m_empower->StageDurations.size(); ++i)
{
passed -= m_empower->StageDurations[i];
@@ -8114,7 +8114,7 @@ void Spell::DelayedChannel()
//check pushback reduce
// should be affected by modifiers, not take the dbc duration.
int32 duration = ((m_channeledDuration > 0) ? m_channeledDuration : m_spellInfo->GetDuration());
int32 duration = ((m_channelDuration > 0) ? m_channelDuration : m_spellInfo->GetDuration());
int32 delaytime = CalculatePct(duration, 25); // channeling delay is normally 25% of its time per hit
@@ -8398,7 +8398,7 @@ bool Spell::CanReleaseEmpowerSpell() const
if (!m_empower->IsReleasedByClient && m_timer)
return false;
Milliseconds passedTime(m_channeledDuration - m_timer);
Milliseconds passedTime(m_channelDuration - m_timer);
return passedTime >= m_empower->MinHoldTime;
}