diff options
| author | ariel- <ariel-@users.noreply.github.com> | 2016-11-16 02:39:15 +0100 |
|---|---|---|
| committer | joschiwald <joschiwald.trinity@gmail.com> | 2017-12-30 22:56:48 +0100 |
| commit | 5bcf14cdb8a7725bb3481fdc46289d13176b6ae0 (patch) | |
| tree | a8a1c94ffe3721e80fe574e05baa55cefb9452cc /src/server/scripts | |
| parent | 9d0dfeb425c3253765b823b1d3043bdebea4ece0 (diff) | |
Core/Unit: damage immune improvements (9f5df023b746d324588f175e264c62205b69e165 follow up)
- Handling checked in sniffs: Spell 63710 Void Barrier vs 49143 Frost Strike
* Send spell miss immune only if spell consists of damage effects
- Checked with 348 Immolate:
* No packets sent if damage immune, aura is applied normally
Also... who the fuck uses 0 to compare against pointers
(cherry picked from commit ca1c4525c7da320da2c0a55bfd803879e3cf60b2)
Core/Unit: fix build
Ctrl-S failure
(cherry picked from commit f3bdd705c0e3ab28585406ae8e08da44a09b14df)
Diffstat (limited to 'src/server/scripts')
| -rw-r--r-- | src/server/scripts/Commands/cs_misc.cpp | 10 | ||||
| -rw-r--r-- | src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp | 6 |
2 files changed, 13 insertions, 3 deletions
diff --git a/src/server/scripts/Commands/cs_misc.cpp b/src/server/scripts/Commands/cs_misc.cpp index 6d44db6cd3b..a046b487165 100644 --- a/src/server/scripts/Commands/cs_misc.cpp +++ b/src/server/scripts/Commands/cs_misc.cpp @@ -2421,10 +2421,11 @@ public: char* spellStr = strtok((char*)NULL, " "); + Player* attacker = handler->GetSession()->GetPlayer(); + // melee damage by specific school if (!spellStr) { - Player* attacker = handler->GetSession()->GetPlayer(); DamageInfo dmgInfo(attacker, target, damage, nullptr, schoolmask, SPELL_DIRECT_DAMAGE, BASE_ATTACK); attacker->CalcAbsorbResist(dmgInfo); @@ -2445,13 +2446,16 @@ public: // number or [name] Shift-click form |color|Hspell:spell_id|h[name]|h|r or Htalent form uint32 spellid = handler->extractSpellIdFromLink((char*)args); + if (!spellid) + return false; + SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(spellid); if (!spellInfo) return false; - SpellNonMeleeDamage damageInfo(handler->GetSession()->GetPlayer(), target, spellid, spellInfo->GetSpellXSpellVisualId(handler->GetSession()->GetPlayer()), spellInfo->SchoolMask); + SpellNonMeleeDamage damageInfo(attacker, target, spellid, spellInfo->GetSpellXSpellVisualId(handler->GetSession()->GetPlayer()), spellInfo->SchoolMask); damageInfo.damage = damage; - handler->GetSession()->GetPlayer()->DealDamageMods(damageInfo.target, damageInfo.damage, &damageInfo.absorb); + attacker->DealDamageMods(damageInfo.target, damageInfo.damage, &damageInfo.absorb); target->DealSpellDamage(&damageInfo, true); target->SendSpellNonMeleeDamageLog(&damageInfo); return true; diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp index f9af80eaca1..da5359364ff 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp @@ -1103,6 +1103,12 @@ class spell_sindragosa_s_fury : public SpellScriptLoader if (!GetHitUnit()->IsAlive() || !_targetCount) return; + if (GetHitUnit()->IsImmunedToDamage(GetSpellInfo())) + { + GetCaster()->SendSpellDamageImmune(GetHitUnit(), GetSpellInfo()->Id, false); + return; + } + float resistance = float(GetHitUnit()->GetResistance(SpellSchoolMask(GetSpellInfo()->SchoolMask))); uint32 minResistFactor = uint32((resistance / (resistance + 510.0f)) * 10.0f) * 2; uint32 randomResist = urand(0, (9 - minResistFactor) * 100) / 100 + minResistFactor; |
