Juster Posted November 12, 2013 Share Posted November 12, 2013 Внес правки, проверяем на фане. Link to comment
Homa-master Posted November 12, 2013 Share Posted November 12, 2013 Внес правки, проверяем на фане. Сейчас. Link to comment
Homa-master Posted November 12, 2013 Share Posted November 12, 2013 Внес правки, проверяем на фане. Я заявляю: "один тестить я это не могу" "с умственно отсталыми на фане тоже" :C ну, или я умственно отсталый. Вот видео, про вара и рогу четко видно, вар чардж жмет, а рога шс, у нас же если вар жмет чардж, я уже в стане, хоть он добежал, хоть нет, если опираться именно на этот факт, то ничего не работает, я вас прошу либо проверить самому с зеоксом, либо предложить мне какой-то вариант. Также нарыл какой-то код ccd на другом форуме, не знаю под какой патч, но мб вам он чем-то поможет. From 8134c487669745b74d09b2cc4333cdccc240d26f Mon Sep 17 00:00:00 2001 From: walkline Date: Mon, 21 May 2012 18:45:30 +0300 Subject: [PATCH] Implemented Crowd Control Delay. --- src/server/game/Spells/Spell.cpp | 55 ++++++++++++++++++++++++++++++++++++- src/server/game/Spells/Spell.h | 2 + 2 files changed, 55 insertions(+), 2 deletions(-) diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 1ecee94..322b497 100755 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -2165,7 +2165,11 @@ void Spell::AddUnitTarget(Unit* target, uint32 effectMask, bool checkIfValid /*= m_delayMoment = targetInfo.timeDelay; } else - targetInfo.timeDelay = 0LL; + { + targetInfo.timeDelay = GetCCDelay(m_spellInfo); + if (m_delayMoment == 0 || m_delayMoment > targetInfo.timeDelay) + m_delayMoment = targetInfo.timeDelay; + } // If target reflect spell back to caster if (targetInfo.missCondition == SPELL_MISS_REFLECT) @@ -3246,7 +3250,7 @@ void Spell::cast(bool skipCheck) SendSpellGo(); // Okay, everything is prepared. Now we need to distinguish between immediate and evented delayed spells - if ((m_spellInfo->Speed > 0.0f && !m_spellInfo->IsChanneled()) || m_spellInfo->Id == 14157) + if (((m_spellInfo->Speed > 0.0f || GetCCDelay(m_spellInfo) > 0) && !m_spellInfo->IsChanneled()) || m_spellInfo->Id == 14157) { // Remove used for cast item if need (it can be already NULL after TakeReagents call // in case delayed spell remove item at cast delay start @@ -5601,6 +5605,53 @@ SpellCastResult Spell::CheckPetCast(Unit* target) return CheckCast(true); } +uint32 Spell::GetCCDelay(SpellInfo const* _spell) +{ + // CCD for spell with auras + AuraType auraWithCCD[] = { + SPELL_AURA_MOD_STUN, + SPELL_AURA_MOD_CONFUSE, + SPELL_AURA_MOD_FEAR, + SPELL_AURA_MOD_SILENCE, + SPELL_AURA_MOD_DISARM, + SPELL_AURA_MOD_POSSESS + }; + uint8 CCDArraySize = 6; + + const uint32 delayForInstantSpells = 200; + + switch(_spell->SpellFamilyName) + { + case SPELLFAMILY_HUNTER: + // Traps + if (_spell->SpellFamilyFlags[0] & 0x8 || // Frozen trap + _spell->Id == 57879 || // Snake Trap + _spell->SpellFamilyFlags[2] & 0x00024000) // Explosive and Immolation Trap + return 0; + + // Entrapment + if (_spell->SpellIconID == 20) + return 0; + break; + case SPELLFAMILY_DEATHKNIGHT: + // Death Grip + if (_spell->Id == 49576) + return delayForInstantSpells; + break; + case SPELLFAMILY_ROGUE: + // Blind + if (_spell->Id == 2094) + return delayForInstantSpells; + break; + } + + for (uint8 i = 0; i + if (_spell->HasAura(auraWithCCD)) + return delayForInstantSpells; + + return 0; +} + SpellCastResult Spell::CheckCasterAuras() const { // spells totally immuned to caster auras (wsg flag drop, give marks etc) diff --git a/src/server/game/Spells/Spell.h b/src/server/game/Spells/Spell.h index db2ad24..ac3e175 100755 --- a/src/server/game/Spells/Spell.h +++ b/src/server/game/Spells/Spell.h @@ -384,6 +384,8 @@ class Spell SpellCastResult CheckCast(bool strict); SpellCastResult CheckPetCast(Unit* target); + static uint32 GetCCDelay(SpellInfo const* _spell); + // handlers void handle_immediate(); uint64 handle_delayed(uint64 t_offset); -- 1.7.5.4 Link to comment
Juster Posted November 12, 2013 Share Posted November 12, 2013 Предложенная реализация нам не подходит, у нас реализовано по другому и теперь должно работать, нужно больше тестов и не на 1м спелле. Link to comment
Homa-master Posted November 12, 2013 Share Posted November 12, 2013 (edited) Предложенная реализация нам не подходит, у нас реализовано по другому и теперь должно работать, нужно больше тестов и не на 1м спелле. Короче я отупел похоже. Edited November 12, 2013 by Homa-master Link to comment
Juster Posted November 12, 2013 Share Posted November 12, 2013 Сейчас тестил с магом, по принципу "шип+циклон" , он мне сказал "забей пашет", хоть опять же нормально шипом он так и не попал. Не, с ваишем как в мувике не катит D: На шадоустепе должно точно работать. Link to comment
Homa-master Posted November 12, 2013 Share Posted November 12, 2013 На шадоустепе должно точно работать. С Шс работает насколько я понял. Link to comment
Juster Posted November 12, 2013 Share Posted November 12, 2013 С Шс работает насколько я понял. Ну значит и для остального тоже. Link to comment
Homa-master Posted November 12, 2013 Share Posted November 12, 2013 Ну значит и для остального тоже. Ну а почему на ванише и чардже не работает тогда. Признаю тоже мой косяк, 3 дня назад только выучил, что это вообще такое. На офе как-то рефлекторно шип и циклон в 1 раз получался. Link to comment
Juster Posted November 12, 2013 Share Posted November 12, 2013 Ну а почему на ванише и чардже не работает тогда. Признаю тоже мой косяк, 3 дня назад только выучил, что это вообще такое. На офе как-то рефлекторно шип и циклон в 1 раз получался. Для стана есть парочка условий, а ваниш хз, сам вечером еще протестирую. Link to comment
Alllexanser Posted November 12, 2013 Share Posted November 12, 2013 на ванише подобная хрень не работает) Link to comment
Homa-master Posted November 12, 2013 Share Posted November 12, 2013 на ванише подобная хрень не работает) Ну мувик же D: Link to comment
Juster Posted November 13, 2013 Share Posted November 13, 2013 Закрыто в общем, сам потестил все задействованные спеллы и внес небольшие правки, теперь все ок. Link to comment
Recommended Posts