aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorQAston <none@none>2010-07-16 14:42:24 +0200
committerQAston <none@none>2010-07-16 14:42:24 +0200
commit7e8c61c95a6505ac223ae07ebbbbae5c0b50c8fb (patch)
tree9668f6d29a2e0302e82df27ffd0395d7d69900f0 /src
parentb406321c01235d7cc35a834a6ce3f7e6da74b37a (diff)
*Remove hack for Divine Storm from Unit::DealDamage
*"Zip" some data in SpellMgr::LoadSpellCustomAttr *Add MaxAffectedTargets for Divine storm heal effect *Move Divine Storm to correct spellfamily switch-case block in Spell::EffectDummy *Some ordering fixes of case blocks in Spell::EffectDummy --HG-- branch : trunk
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp17
-rw-r--r--src/server/game/Spells/Auras/SpellEffects.cpp91
-rw-r--r--src/server/game/Spells/SpellMgr.cpp36
3 files changed, 54 insertions, 90 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index 61fc98e3ae2..15aadf32502 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -562,23 +562,6 @@ void Unit::DealDamageMods(Unit *pVictim, uint32 &damage, uint32* absorb)
uint32 Unit::DealDamage(Unit *pVictim, uint32 damage, CleanDamage const* cleanDamage, DamageEffectType damagetype, SpellSchoolMask damageSchoolMask, SpellEntry const *spellProto, bool durabilityLoss)
{
- // if attacker is a player and spell is not empty/fail
- if (GetTypeId() == TYPEID_PLAYER && spellProto)
- {
- // on divine storm dealed damage - heal
- if (spellProto->SpellFamilyName == SPELLFAMILY_PALADIN && spellProto->SpellFamilyFlags[1] & 0x20000)
- {
- Unit *pRaidGrpMember = GetNextRandomRaidMemberOrPet(30.0f);
-
- int32 divineDmg = damage * (25 + (HasAura(63220) ? 15 : 0)) / 100; //25%, if has Glyph of Divine Storm -> 40%
-
- if (!pRaidGrpMember)
- pRaidGrpMember = this;
-
- CastCustomSpell(pRaidGrpMember, 54172, &divineDmg, 0, 0, true);
- }
- }
-
if (pVictim->GetTypeId() == TYPEID_UNIT && pVictim->ToCreature()->IsAIEnabled)
pVictim->ToCreature()->AI()->DamageTaken(this, damage);
diff --git a/src/server/game/Spells/Auras/SpellEffects.cpp b/src/server/game/Spells/Auras/SpellEffects.cpp
index 3a80ce458f8..0f76affc1dc 100644
--- a/src/server/game/Spells/Auras/SpellEffects.cpp
+++ b/src/server/game/Spells/Auras/SpellEffects.cpp
@@ -786,33 +786,6 @@ void Spell::EffectDummy(uint32 i)
{
switch (m_spellInfo->Id)
{
- // Magic Pull
- case 51336:
- m_caster->CastSpell(unitTarget,50770,true);
- break;
- // Wrath of the Astromancer
- case 42784:
- {
- uint32 count = 0;
- for (std::list<TargetInfo>::iterator ihit= m_UniqueTargetInfo.begin(); ihit != m_UniqueTargetInfo.end(); ++ihit)
- if (ihit->effectMask & (1<<i))
- ++count;
-
- damage = 12000; // maybe wrong value
- damage /= count;
-
- SpellEntry const *spellInfo = sSpellStore.LookupEntry(42784);
-
- // now deal the damage
- for (std::list<TargetInfo>::iterator ihit= m_UniqueTargetInfo.begin(); ihit != m_UniqueTargetInfo.end(); ++ihit)
- if (ihit->effectMask & (1<<i))
- {
- if (Unit* casttarget = Unit::GetUnit((*unitTarget), ihit->targetGUID))
- m_caster->DealDamage(casttarget, damage, NULL, SPELL_DIRECT_DAMAGE, SPELL_SCHOOL_MASK_ARCANE, spellInfo, false);
- }
-
- return;
- }
case 8063: // Deviate Fish
{
if (m_caster->GetTypeId() != TYPEID_PLAYER)
@@ -1163,6 +1136,20 @@ void Spell::EffectDummy(uint32 i)
m_caster->CastSpell(m_caster, spell_id, true, NULL);
return;
}
+ case 34665: //Administer Antidote
+ {
+ if (!unitTarget || unitTarget->GetTypeId() != TYPEID_UNIT
+ || unitTarget->GetEntry() != 16880 || unitTarget->ToCreature()->isPet())
+ return;
+
+ unitTarget->ToCreature()->UpdateEntry(16992);
+ m_caster->ToPlayer()->RewardPlayerAndGroupAtEvent(16992, unitTarget);
+
+ if (unitTarget->IsAIEnabled)
+ unitTarget->ToCreature()->AI()->AttackStart(m_caster);
+
+ return;
+ }
case 35745: // Socrethar's Stone
{
uint32 spell_id;
@@ -1223,6 +1210,29 @@ void Spell::EffectDummy(uint32 i)
DoCreateItem(i, newitemid);
return;
}
+ // Wrath of the Astromancer
+ case 42784:
+ {
+ uint32 count = 0;
+ for (std::list<TargetInfo>::iterator ihit= m_UniqueTargetInfo.begin(); ihit != m_UniqueTargetInfo.end(); ++ihit)
+ if (ihit->effectMask & (1<<i))
+ ++count;
+
+ damage = 12000; // maybe wrong value
+ damage /= count;
+
+ SpellEntry const *spellInfo = sSpellStore.LookupEntry(42784);
+
+ // now deal the damage
+ for (std::list<TargetInfo>::iterator ihit= m_UniqueTargetInfo.begin(); ihit != m_UniqueTargetInfo.end(); ++ihit)
+ if (ihit->effectMask & (1<<i))
+ {
+ if (Unit* casttarget = Unit::GetUnit((*unitTarget), ihit->targetGUID))
+ m_caster->DealDamage(casttarget, damage, NULL, SPELL_DIRECT_DAMAGE, SPELL_SCHOOL_MASK_ARCANE, spellInfo, false);
+ }
+
+ return;
+ }
// Demon Broiled Surprise
case 43723:
{
@@ -1255,20 +1265,6 @@ void Spell::EffectDummy(uint32 i)
m_caster->CastSpell(m_caster, 42337, true, NULL);
return;
}
- case 34665: //Administer Antidote
- {
- if (!unitTarget || unitTarget->GetTypeId() != TYPEID_UNIT
- || unitTarget->GetEntry() != 16880 || unitTarget->ToCreature()->isPet())
- return;
-
- unitTarget->ToCreature()->UpdateEntry(16992);
- m_caster->ToPlayer()->RewardPlayerAndGroupAtEvent(16992, unitTarget);
-
- if (unitTarget->IsAIEnabled)
- unitTarget->ToCreature()->AI()->AttackStart(m_caster);
-
- return;
- }
case 44997: // Converting Sentry
{
//Converted Sentry Credit
@@ -1327,6 +1323,10 @@ void Spell::EffectDummy(uint32 i)
m_caster->CastSpell(m_caster, 49378, true);
}
return;
+ // Magic Pull
+ case 51336:
+ m_caster->CastSpell(unitTarget,50770,true);
+ break;
case 52845: // Brewfest Mount Transformation (Faction Swap)
if (m_caster->GetTypeId() != TYPEID_PLAYER)
return;
@@ -1432,6 +1432,11 @@ void Spell::EffectDummy(uint32 i)
m_caster->CastSpell(m_caster, 54586, true);
return;
}
+ case 54171: //Divine Storm
+ {
+ m_caster->CastCustomSpell(unitTarget, 54172, &damage, 0, 0, true);
+ return;
+ }
case 58418: // Portal to Orgrimmar
case 58420: // Portal to Stormwind
return; // implemented in EffectScript[0]
@@ -1890,10 +1895,6 @@ void Spell::EffectDummy(uint32 i)
switch(m_spellInfo->Id)
{
- case 54171: //Divine Storm
- {
- m_caster->CastCustomSpell(unitTarget, 54172, &damage, 0, 0, true);
- }
case 20425: // Judgement of command
{
if (!unitTarget)
diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp
index 701d1db1b05..2d2d28b2012 100644
--- a/src/server/game/Spells/SpellMgr.cpp
+++ b/src/server/game/Spells/SpellMgr.cpp
@@ -3615,6 +3615,12 @@ void SpellMgr::LoadSpellCustomAttr()
case 39365: // Thundering Storm
case 41071: // Raise Dead (HACK)
case 52124: // Sky Darkener Assault
+ case 42442: // Vengeance Landing Cannonfire
+ case 45863: // Cosmetic - Incinerate to Random Target
+ case 25425: // Shoot
+ case 45761: // Shoot
+ case 42611: // Shoot
+ case 62374: // Pursued
spellInfo->MaxAffectedTargets = 1;
count++;
break;
@@ -3636,6 +3642,8 @@ void SpellMgr::LoadSpellCustomAttr()
case 54172: // Divine Storm (heal)
case 29213: // Curse of the Plaguebringer - Noth
case 28542: // Life Drain - Sapphiron
+ case 66588: // Flaming Spear
+ case 54171: // Divine Storm
spellInfo->MaxAffectedTargets = 3;
count++;
break;
@@ -3760,10 +3768,6 @@ void SpellMgr::LoadSpellCustomAttr()
spellInfo->rangeIndex = 13;
count++;
break;
- case 62374: // Pursued
- spellInfo->MaxAffectedTargets = 1;
- count++;
- break;
case 48743: // Death Pact
spellInfo->AttributesEx &= ~SPELL_ATTR_EX_CANT_TARGET_SELF;
count++;
@@ -3785,30 +3789,6 @@ void SpellMgr::LoadSpellCustomAttr()
spellInfo->EffectMiscValue[0] = MECHANIC_IMMUNE_SHIELD;
count++;
break;
- case 42442: // Vengeance Landing Cannonfire
- spellInfo->MaxAffectedTargets = 1;
- count++;
- break;
- case 45863: // Cosmetic - Incinerate to Random Target
- spellInfo->MaxAffectedTargets = 1;
- count++;
- break;
- case 25425: // Shoot
- spellInfo->MaxAffectedTargets = 1;
- count++;
- break;
- case 45761: // Shoot
- spellInfo->MaxAffectedTargets = 1;
- count++;
- break;
- case 42611: // Shoot
- spellInfo->MaxAffectedTargets = 1;
- count++;
- break;
- case 66588: // Flaming Spear
- spellInfo->MaxAffectedTargets = 3;
- count++;
- break;
case 53651:
spellInfo->AttributesEx3 |= SPELL_ATTR_EX3_NO_INITIAL_AGGRO;
count++;