Главная | Форум | Статьи | Фaйлы| Картинки WoW | Профиль | Регистрация | Вход

[ Новые сообщения · Правила форума · Поиск · RSS ]

WoW-Info — информационный World of Warcraft портал

Scourge Strike - Форум

  • Сторінка 1 з 1
  • 1
Scourge Strike
INFЕRNOДата: Вівторок, 29.05.2012, 18:13 | Сообщение # 1



INFЕRNO
Linux ~ root User
Чемпион
Группа: Best of the Best user Wow-info
Сообщений: 515

Замечания:

Оффлайн
Code
# HG changeset patch   
  # User illusion   
  # Date 1325684790 -14400   
  # Node ID 9ce8288cd717266c016c3315f62726b59837daba   
  # Parent  b8d7bac2b8334e93908952809c1fc5a81ed0651e   
  NR_Add GetTakenDamage function.   
  This function returned taken damage of hit unit(crit, armor, and etc).   
  Fix scourge strike, not fully fix.   

  diff -r b8d7bac2b833 -r 9ce8288cd717 src/server/game/Spells/Spell.cpp   
  --- a/src/server/game/Spells/Spell.cpp    Wed Jan 04 17:45:11 2012 +0400   
  +++ b/src/server/game/Spells/Spell.cpp    Wed Jan 04 17:46:30 2012 +0400   
  @@ -1335,10 +1335,10 @@   
       
            // Add bonuses and fill damageInfo struct   
            caster->CalculateSpellDamageTaken(&damageInfo, m_damage, m_spellInfo, m_attackType,  target->crit);   
  +        m_taken_damage = damageInfo.damage;   
            caster->DealDamageMods(damageInfo.target, damageInfo.damage, &damageInfo.absorb);   
       
            // Send log damage message to client   
  -   
            if (missInfo == SPELL_MISS_REFLECT)   
                damageInfo.attacker = unit;   
            caster->SendSpellNonMeleeDamageLog(&damageInfo);   
  @@ -1356,7 +1356,7 @@   
            }   
       
            caster->DealSpellDamage(&damageInfo, true);   
  -   
  +           
            // Haunt   
            if (m_spellInfo->SpellFamilyName == SPELLFAMILY_WARLOCK && m_spellInfo->SpellFamilyFlags[1] & 0x40000 && m_spellAura && m_spellAura->GetEffect(1))   
            {   
  diff -r b8d7bac2b833 -r 9ce8288cd717 src/server/game/Spells/Spell.h   
  --- a/src/server/game/Spells/Spell.h    Wed Jan 04 17:45:11 2012 +0400   
  +++ b/src/server/game/Spells/Spell.h    Wed Jan 04 17:46:30 2012 +0400   
  @@ -549,8 +549,9 @@   
            GameObject* focusObject;   
       
            // Damage and healing in effects need just calculate   
  -        int32 m_damage;           // Damge   in effects count here   
  +        int32 m_damage;           // Damage  in effects count here   
            int32 m_healing;          // Healing in effects count here   
  +        int32 m_taken_damage;     // Damage  in effects count here (after armor and resist)   
       
            // ******************************************   
            // Spell trigger system   
  diff -r b8d7bac2b833 -r 9ce8288cd717 src/server/game/Spells/SpellScript.cpp   
  --- a/src/server/game/Spells/SpellScript.cpp    Wed Jan 04 17:45:11 2012 +0400   
  +++ b/src/server/game/Spells/SpellScript.cpp    Wed Jan 04 17:46:30 2012 +0400   
  @@ -398,6 +398,16 @@   
        return m_spell->m_damage;   
    }   
       
  +int32 SpellScript::GetTakenDamage()   
  +{   
  +    if (!IsInAfterHitPhase())   
  +    {   
  +        sLog->outError("TSCR: Script: `%s` Spell: `%u`: function SpellScript::GetTakenDamage was called while spell not in after-hit phase!", m_scriptName, m_scriptSpellId);   
  +        return NULL;   
  +    }   
  +    return m_spell->m_taken_damage;   
  +}   
  +   
    void SpellScript::SetHitDamage(int32 damage)   
    {   
        if (!IsInTargetHook())   
  diff -r b8d7bac2b833 -r 9ce8288cd717 src/server/game/Spells/SpellScript.h   
  --- a/src/server/game/Spells/SpellScript.h    Wed Jan 04 17:45:11 2012 +0400   
  +++ b/src/server/game/Spells/SpellScript.h    Wed Jan 04 17:46:30 2012 +0400   
  @@ -212,6 +212,7 @@   
            bool IsInTargetHook() const;   
            bool IsInHitPhase() const;   
            bool IsInEffectHook() const;   
  +        bool IsInAfterHitPhase() const { return (m_currentScriptState == SPELL_SCRIPT_HOOK_AFTER_HIT); }   
        private:   
            Spell* m_spell;   
            uint8 m_hitPreventEffectMask;   
  @@ -302,6 +303,8 @@   
            int32 GetHitDamage();   
            void SetHitDamage(int32 damage);   
            void PreventHitDamage() { SetHitDamage(0); }   
  +        // returns total damage of a spell (crit comprensive)   
  +        int32 GetTakenDamage();   
            // setter/getter for for heal done by spell to target of spell hit   
            // returns healing calculated before hit, and real dmg done after hit   
            int32 GetHitHeal();   
  diff -r b8d7bac2b833 -r 9ce8288cd717 src/server/scripts/Spells/spell_dk.cpp   
  --- a/src/server/scripts/Spells/spell_dk.cpp    Wed Jan 04 17:45:11 2012 +0400   
  +++ b/src/server/scripts/Spells/spell_dk.cpp    Wed Jan 04 17:46:30 2012 +0400   
  @@ -375,6 +375,11 @@   
            class spell_dk_scourge_strike_SpellScript : public SpellScript   
            {   
                PrepareSpellScript(spell_dk_scourge_strike_SpellScript);   
  +            private:   
  +                float m_multip;   
  +            public:   
  +                spell_dk_scourge_strike_SpellScript() : m_multip(0.0f) { }   
  +   
       
                bool Validate(SpellInfo const* /*spellEntry*/)   
                {   
  @@ -387,8 +392,15 @@   
                {   
                    Unit* caster = GetCaster();   
                    if (Unit* unitTarget = GetHitUnit())   
  +                    m_multip = GetEffectValue() * unitTarget->GetDiseasesByCaster(caster->GetGUID());                       
  +            }   
  +   
  +            void HandleAfterHit()   
  +            {   
  +                Unit* caster = GetCaster();   
  +                if (Unit* unitTarget = GetHitUnit())   
                    {   
  -                    int32 bp = CalculatePctN(GetHitDamage(), GetEffectValue() * unitTarget->GetDiseasesByCaster(caster->GetGUID()));   
  +                    int32 bp = CalculatePctN(GetTakenDamage(), m_multip);   
                        caster->CastCustomSpell(unitTarget, DK_SPELL_SCOURGE_STRIKE_TRIGGERED, &bp, NULL, NULL, true);   
                    }   
                }   
  @@ -396,6 +408,7 @@   
                void Register()   
                {   
                    OnEffectHitTarget += SpellEffectFn(spell_dk_scourge_strike_SpellScript::HandleDummy, EFFECT_2, SPELL_EFFECT_DUMMY);   
  +                AfterHit += SpellHitFn(spell_dk_scourge_strike_SpellScript::HandleAfterHit);   
                }   
            };
 
  • Сторінка 1 з 1
  • 1
Пошук:

Новые сообщения в темах
Сдам в аренду сервер и хостинг · (Хост Предложения)
Автор: redlaine
Последнее сообщение в 23:53
хаха :D · (Приколы)
Автор: [N1ke]Medved
Последнее сообщение в 18:40
Autobattle - новый боевой бот ... · (Боты для WoW)
Автор: terrikon
Последнее сообщение в 18:39
PvE руководство для Чернокнижн... · (Чернокнижник)
Автор: Darkensand
Последнее сообщение в 18:38
Пустой свиток (Часть 11) · (Истории WoW)
Автор: R_a_Z_o_R
Последнее сообщение в 18:37
Друиды в Катаклизме: Официальн... · (Друид)
Автор: Darkensand
Последнее сообщение в 18:37
[Баг 3.3.5] Фарм ледяных бадже... · (Читы для WoW)
Автор: Darkensand
Последнее сообщение в 18:35
FarmBot (Бот для фарма руды и ... · (Боты для WoW)
Автор: homma
Последнее сообщение в 18:34
Почему мы сражаемся: ролевая и... · (Воин)
Автор: Darkensand
Последнее сообщение в 18:34
Книги по Wold of Warcraft · (Истории WoW)
Автор: R_a_Z_o_R
Последнее сообщение в 18:33
Маг огня в Cataclysm · (Маг)
Автор: Darkensand
Последнее сообщение в 18:33
Как начать играть в World of W... · (Полезно знать)
Автор: Belkmondesh
Последнее сообщение в 18:32
Характеризация профессий · (Профессии)
Автор: Darkensand
Последнее сообщение в 18:31
Что значит для арканов бета те... · (Маг)
Автор: Darkensand
Последнее сообщение в 18:31

Контакты Контакты Copyright WoW-Info — World of Warcraft портал © 2026 | Условия и правила использования ресурса | Реклама / Услуги
WoW-Info портал.World of Warcraft портал — готовые сервера, сайты, картинки, аддоны, патчи, читы, баги, mangos, ArcEmu, TrinityCore, Warcraft 3, новости, Cataclysm...
Яндекс.Метрика Хостинг від uCoz