В целом-то ТС прав. В ТК сделано так:
duration - это время длительности заклинания, т.е. 60000 мс берется, без учета что целью является игрок.Код://check pushback reduce // should be affected by modifiers, not take the dbc duration. int32 duration = ((m_channeledDuration > 0) ? m_channeledDuration : m_spellInfo->GetDuration()); int32 delaytime = CalculatePct(duration, 25); // channeling delay is normally 25% of its time per hit int32 delayReduce = 100; // must be initialized to 100 for percent modifiers playerCaster->ApplySpellMod(m_spellInfo->Id, SPELLMOD_NOT_LOSE_CASTING_TIME, delayReduce, this); delayReduce += playerCaster->GetTotalAuraModifier(SPELL_AURA_REDUCE_PUSHBACK) - 100; if (delayReduce >= 100) return; AddPct(delaytime, -delayReduce); if (m_timer <= delaytime) { delaytime = m_timer; m_timer = 0; } else m_timer -= delaytime;
Далее определяется delaytime, где от duration высчитывается 25% (выходит 15000 мс).
Далее к delayReduce применяются модификаторы и ауры, чтобы добавить это к delaytime.
Далее уже из текущего таймера вычитается delaytime (т.е. 15000 мс + модификаторы и тд).
Отдельного скрипта на МК я не увидел ни в одной из версий. Даже если учесть что МК дается в игрока и взять 10000 мс, непонятно почему на видео delaytime в 1.9 - 2.15 раза больше
- - - Updated - - -
Чуть ошибся, m_channeledDuration - уже вычислена заранее и скорее всего там как раз 10000 мс или меньше в зависимости от модификаторов. В таком случае не понимаю почему с 1 тычки сбивается.




Ответить с цитированием
