mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-15 23:20:36 +01:00
Core/Spells: Expose spell channel duration to scripts
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -628,6 +628,7 @@ class TC_GAME_API Spell
|
||||
|
||||
int32 GetCastTime() const { return m_casttime; }
|
||||
int32 GetRemainingCastTime() const { return m_timer; }
|
||||
int32 GetChannelDuration() const { return m_channelDuration; }
|
||||
bool IsAutoRepeat() const { return m_autoRepeat; }
|
||||
void SetAutoRepeat(bool rep) { m_autoRepeat = rep; }
|
||||
void ReSetTimer() { m_timer = m_casttime > 0 ? m_casttime : 0; }
|
||||
@@ -725,7 +726,7 @@ class TC_GAME_API Spell
|
||||
|
||||
std::vector<SpellPowerCost> m_powerCost; // Calculated spell cost initialized only in Spell::prepare
|
||||
int32 m_casttime; // Calculated spell cast time initialized only in Spell::prepare
|
||||
int32 m_channeledDuration; // Calculated channeled spell duration in order to calculate correct pushback.
|
||||
int32 m_channelDuration; // Calculated channeled spell duration in order to calculate correct pushback.
|
||||
bool m_canReflect; // can reflect this spell?
|
||||
bool m_autoRepeat;
|
||||
uint8 m_runesState;
|
||||
|
||||
Reference in New Issue
Block a user