Created
April 18, 2012 19:47
-
-
Save Subv/2416058 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp | |
index df2b9c3..9dd5625 100755 | |
--- a/src/server/game/Spells/Spell.cpp | |
+++ b/src/server/game/Spells/Spell.cpp | |
@@ -486,9 +486,9 @@ SpellValue::SpellValue(SpellInfo const* proto) | |
AuraStackAmount = 1; | |
} | |
-Spell::Spell(Unit* caster, SpellInfo const* info, TriggerCastFlags triggerFlags, uint64 originalCasterGUID, bool skipCheck) : | |
+Spell::Spell(WorldObject* caster, SpellInfo const* info, TriggerCastFlags triggerFlags, uint64 originalCasterGUID, bool skipCheck) : | |
m_spellInfo(sSpellMgr->GetSpellForDifficultyFromSpell(info, caster)), | |
-m_caster((info->AttributesEx6 & SPELL_ATTR6_CAST_BY_CHARMER && caster->GetCharmerOrOwner()) ? caster->GetCharmerOrOwner() : caster) | |
+m_caster((info->AttributesEx6 & SPELL_ATTR6_CAST_BY_CHARMER && caster->isType(TYPEMASK_UNIT | TYPEMASK_PLAYER) && caster->ToUnit()->GetCharmerOrOwner()) ? caster->ToUnit()->GetCharmerOrOwner() : caster) | |
, m_spellValue(new SpellValue(m_spellInfo)) | |
{ | |
m_customError = SPELL_CUSTOM_ERROR_NONE; | |
@@ -529,7 +529,7 @@ m_caster((info->AttributesEx6 & SPELL_ATTR6_CAST_BY_CHARMER && caster->GetCharme | |
if (m_attackType == RANGED_ATTACK) | |
// wand case | |
- if ((m_caster->getClassMask() & CLASSMASK_WAND_USERS) != 0 && m_caster->GetTypeId() == TYPEID_PLAYER) | |
+ if ((m_caster->GetTypeId() == TYPEID_PLAYER && m_caster->ToPlayer()->getClassMask() & CLASSMASK_WAND_USERS) != 0) | |
if (Item* pItem = m_caster->ToPlayer()->GetWeaponForAttack(RANGED_ATTACK)) | |
m_spellSchoolMask = SpellSchoolMask(1 << pItem->GetTemplate()->Damage[0].DamageType); | |
@@ -542,7 +542,7 @@ m_caster((info->AttributesEx6 & SPELL_ATTR6_CAST_BY_CHARMER && caster->GetCharme | |
m_originalCaster = m_caster; | |
else | |
{ | |
- m_originalCaster = ObjectAccessor::GetUnit(*m_caster, m_originalCasterGUID); | |
+ m_originalCaster = ObjectAccessor::GetWorldObject(*m_caster, m_originalCasterGUID); | |
if (m_originalCaster && !m_originalCaster->IsInWorld()) | |
m_originalCaster = NULL; | |
} | |
@@ -571,7 +571,7 @@ m_caster((info->AttributesEx6 & SPELL_ATTR6_CAST_BY_CHARMER && caster->GetCharme | |
m_runesState = 0; | |
m_powerCost = 0; // setup to correct value in Spell::prepare, must not be used before. | |
m_casttime = 0; // setup to correct value in Spell::prepare, must not be used before. | |
- m_timer = 0; // will set to castime in prepare | |
+ m_timer = 0; // will set to cast time in prepare | |
m_channelTargetEffectMask = 0; | |
@@ -649,11 +649,11 @@ void Spell::InitExplicitTargets(SpellCastTargets const& targets) | |
} | |
// try to use attacked unit as a target | |
else if ((m_caster->GetTypeId() == TYPEID_UNIT) && neededTargets & (TARGET_FLAG_UNIT_ENEMY | TARGET_FLAG_UNIT)) | |
- unit = m_caster->getVictim(); | |
+ unit = m_caster->ToUnit()->getVictim(); | |
// didn't find anything - let's use self as target | |
if (!unit && neededTargets & (TARGET_FLAG_UNIT_RAID | TARGET_FLAG_UNIT_PARTY | TARGET_FLAG_UNIT_ALLY)) | |
- unit = m_caster; | |
+ unit = m_caster->ToUnit(); | |
m_targets.SetUnitTarget(unit); | |
} | |
diff --git a/src/server/game/Spells/Spell.h b/src/server/game/Spells/Spell.h | |
index 8f43b9b..03b4514 100755 | |
--- a/src/server/game/Spells/Spell.h | |
+++ b/src/server/game/Spells/Spell.h | |
@@ -340,7 +340,7 @@ class Spell | |
typedef std::set<Aura*> UsedSpellMods; | |
- Spell(Unit* caster, SpellInfo const* info, TriggerCastFlags triggerFlags, uint64 originalCasterGUID = 0, bool skipCheck = false); | |
+ Spell(WorldObject* caster, SpellInfo const* info, TriggerCastFlags triggerFlags, uint64 originalCasterGUID = 0, bool skipCheck = false); | |
~Spell(); | |
void InitExplicitTargets(SpellCastTargets const& targets); | |
@@ -397,7 +397,7 @@ class Spell | |
SpellCastResult CheckRuneCost(uint32 runeCostID); | |
SpellCastResult CheckCasterAuras() const; | |
- int32 CalculateDamage(uint8 i, Unit const* target) const { return m_caster->CalculateSpellDamage(target, m_spellInfo, i, &m_spellValue->EffectBasePoints[i]); } | |
+ int32 CalculateDamage(uint8 i, Unit const* target) const { return m_caster->isType(TYPEMASK_UNIT | TYPEMASK_PLAYER) && m_caster->ToUnit()->CalculateSpellDamage(target, m_spellInfo, i, &m_spellValue->EffectBasePoints[i]); } | |
bool HaveTargetsForEffect(uint8 effect) const; | |
void Delayed(); | |
@@ -456,7 +456,7 @@ class Spell | |
void ReSetTimer() { m_timer = m_casttime > 0 ? m_casttime : 0; } | |
bool IsNextMeleeSwingSpell() const; | |
bool IsTriggered() const { return _triggeredCastFlags & TRIGGERED_FULL_MASK; }; | |
- bool IsChannelActive() const { return m_caster->GetUInt32Value(UNIT_CHANNEL_SPELL) != 0; } | |
+ bool IsChannelActive() const { return m_caster->isType(TYPEMASK_UNIT | TYPEMASK_PLAYER) && m_caster->GetUInt32Value(UNIT_CHANNEL_SPELL) != 0; } | |
bool IsAutoActionResetSpell() const; | |
bool IsDeletable() const { return !m_referencedFromCurrentSpell && !m_executedCurrently; } | |
@@ -471,8 +471,8 @@ class Spell | |
CurrentSpellTypes GetCurrentContainer() const; | |
- Unit* GetCaster() const { return m_caster; } | |
- Unit* GetOriginalCaster() const { return m_originalCaster; } | |
+ WorldObject* GetCaster() const { return m_caster; } | |
+ WorldObject* GetOriginalCaster() const { return m_originalCaster; } | |
SpellInfo const* GetSpellInfo() const { return m_spellInfo; } | |
int32 GetPowerCost() const { return m_powerCost; } | |
@@ -488,13 +488,13 @@ class Spell | |
void SendLoot(uint64 guid, LootType loottype); | |
- Unit* const m_caster; | |
+ WorldObject* const m_caster; | |
SpellValue * const m_spellValue; | |
uint64 m_originalCasterGUID; // real source of cast (aura caster/etc), used for spell targets selection | |
// e.g. damage around area spell trigered by victim aura and damage enemies of aura caster | |
- Unit* m_originalCaster; // cached pointer for m_originalCaster, updated at Spell::UpdatePointers() | |
+ WorldObject* m_originalCaster; // cached pointer for m_originalCaster, updated at Spell::UpdatePointers() | |
Spell** m_selfContainer; // pointer to our spell container (if applicable) | |
diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp | |
index 05431ef..6fb332b 100755 | |
--- a/src/server/game/Spells/SpellMgr.cpp | |
+++ b/src/server/game/Spells/SpellMgr.cpp | |
@@ -443,7 +443,7 @@ void SpellMgr::SetSpellDifficultyId(uint32 spellId, uint32 id) | |
mSpellDifficultySearcherMap[spellId] = id; | |
} | |
-uint32 SpellMgr::GetSpellIdForDifficulty(uint32 spellId, Unit const* caster) const | |
+uint32 SpellMgr::GetSpellIdForDifficulty(uint32 spellId, WorldObject const* caster) const | |
{ | |
if (!GetSpellInfo(spellId)) | |
return spellId; | |
@@ -485,7 +485,7 @@ uint32 SpellMgr::GetSpellIdForDifficulty(uint32 spellId, Unit const* caster) con | |
return uint32(difficultyEntry->SpellID[mode]); | |
} | |
-SpellInfo const* SpellMgr::GetSpellForDifficultyFromSpell(SpellInfo const* spell, Unit const* caster) const | |
+SpellInfo const* SpellMgr::GetSpellForDifficultyFromSpell(SpellInfo const* spell, WorldObject const* caster) const | |
{ | |
uint32 newSpellId = GetSpellIdForDifficulty(spell->Id, caster); | |
SpellInfo const* newSpell = GetSpellInfo(newSpellId); | |
diff --git a/src/server/game/Spells/SpellMgr.h b/src/server/game/Spells/SpellMgr.h | |
index 521070f..20f218d 100755 | |
--- a/src/server/game/Spells/SpellMgr.h | |
+++ b/src/server/game/Spells/SpellMgr.h | |
@@ -611,8 +611,8 @@ class SpellMgr | |
// Spell difficulty | |
uint32 GetSpellDifficultyId(uint32 spellId) const; | |
void SetSpellDifficultyId(uint32 spellId, uint32 id); | |
- uint32 GetSpellIdForDifficulty(uint32 spellId, Unit const* caster) const; | |
- SpellInfo const* GetSpellForDifficultyFromSpell(SpellInfo const* spell, Unit const* caster) const; | |
+ uint32 GetSpellIdForDifficulty(uint32 spellId, WorldObject const* caster) const; | |
+ SpellInfo const* GetSpellForDifficultyFromSpell(SpellInfo const* spell, WorldObject const* caster) const; | |
// Spell Ranks table | |
SpellChainNode const* GetSpellChainNode(uint32 spell_id) const; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment