aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp20
-rw-r--r--src/server/game/Entities/Unit/Unit.h4
-rw-r--r--src/server/game/Spells/Spell.cpp9
-rw-r--r--src/server/game/Spells/SpellInfo.cpp38
-rw-r--r--src/server/game/Spells/SpellInfo.h11
5 files changed, 37 insertions, 45 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index 62beb6dedef..a1878130e8c 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -9004,10 +9004,10 @@ DiminishingLevels Unit::GetDiminishing(DiminishingGroup group)
return DiminishingLevels(diminish.hitCount);
}
-void Unit::IncrDiminishing(SpellInfo const* auraSpellInfo, bool triggered)
+void Unit::IncrDiminishing(SpellInfo const* auraSpellInfo)
{
- DiminishingGroup const group = auraSpellInfo->GetDiminishingReturnsGroupForSpell(triggered);
- DiminishingLevels const maxLevel = auraSpellInfo->GetDiminishingReturnsMaxLevel(triggered);
+ DiminishingGroup const group = auraSpellInfo->GetDiminishingReturnsGroupForSpell();
+ DiminishingLevels const maxLevel = auraSpellInfo->GetDiminishingReturnsMaxLevel();
// Checking for existing in the table
DiminishingReturn& diminish = m_Diminishing[group];
@@ -9015,13 +9015,13 @@ void Unit::IncrDiminishing(SpellInfo const* auraSpellInfo, bool triggered)
++diminish.hitCount;
}
-float Unit::ApplyDiminishingToDuration(SpellInfo const* auraSpellInfo, bool triggered, int32& duration, Unit* caster, DiminishingLevels previousLevel)
+float Unit::ApplyDiminishingToDuration(SpellInfo const* auraSpellInfo, int32& duration, Unit* caster, DiminishingLevels previousLevel)
{
- DiminishingGroup const group = auraSpellInfo->GetDiminishingReturnsGroupForSpell(triggered);
+ DiminishingGroup const group = auraSpellInfo->GetDiminishingReturnsGroupForSpell();
if (duration == -1 || group == DIMINISHING_NONE)
return 1.0f;
- int32 const limitDuration = auraSpellInfo->GetDiminishingReturnsLimitDuration(triggered);
+ int32 const limitDuration = auraSpellInfo->GetDiminishingReturnsLimitDuration();
// test pet/charm masters instead pets/charmeds
Unit const* targetOwner = GetCharmerOrOwner();
@@ -9061,9 +9061,9 @@ float Unit::ApplyDiminishingToDuration(SpellInfo const* auraSpellInfo, bool trig
}
case DIMINISHING_AOE_KNOCKBACK:
{
- if ((auraSpellInfo->GetDiminishingReturnsGroupType(triggered) == DRTYPE_PLAYER && (((targetOwner ? targetOwner : this)->ToPlayer())
+ if ((auraSpellInfo->GetDiminishingReturnsGroupType() == DRTYPE_PLAYER && (((targetOwner ? targetOwner : this)->ToPlayer())
|| (ToCreature() && (ToCreature()->GetCreatureTemplate()->flags_extra & CREATURE_FLAG_EXTRA_ALL_DIMINISH))))
- || auraSpellInfo->GetDiminishingReturnsGroupType(triggered) == DRTYPE_ALL)
+ || auraSpellInfo->GetDiminishingReturnsGroupType() == DRTYPE_ALL)
{
DiminishingLevels diminish = previousLevel;
switch (diminish)
@@ -9077,9 +9077,9 @@ float Unit::ApplyDiminishingToDuration(SpellInfo const* auraSpellInfo, bool trig
}
default:
{
- if ((auraSpellInfo->GetDiminishingReturnsGroupType(triggered) == DRTYPE_PLAYER && (((targetOwner ? targetOwner : this)->ToPlayer())
+ if ((auraSpellInfo->GetDiminishingReturnsGroupType() == DRTYPE_PLAYER && (((targetOwner ? targetOwner : this)->ToPlayer())
|| (ToCreature() && (ToCreature()->GetCreatureTemplate()->flags_extra & CREATURE_FLAG_EXTRA_ALL_DIMINISH))))
- || auraSpellInfo->GetDiminishingReturnsGroupType(triggered) == DRTYPE_ALL)
+ || auraSpellInfo->GetDiminishingReturnsGroupType() == DRTYPE_ALL)
{
DiminishingLevels diminish = previousLevel;
switch (diminish)
diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h
index 84e769c3e3d..72e9a35c626 100644
--- a/src/server/game/Entities/Unit/Unit.h
+++ b/src/server/game/Entities/Unit/Unit.h
@@ -985,8 +985,8 @@ class TC_GAME_API Unit : public WorldObject
void SendCombatLogMessage(WorldPackets::CombatLog::CombatLogServerPacket* combatLog) const;
DiminishingLevels GetDiminishing(DiminishingGroup group);
- void IncrDiminishing(SpellInfo const* auraSpellInfo, bool triggered);
- float ApplyDiminishingToDuration(SpellInfo const* auraSpellInfo, bool triggered, int32& duration, Unit* caster, DiminishingLevels previousLevel);
+ void IncrDiminishing(SpellInfo const* auraSpellInfo);
+ float ApplyDiminishingToDuration(SpellInfo const* auraSpellInfo, int32& duration, Unit* caster, DiminishingLevels previousLevel);
void ApplyDiminishingAura(DiminishingGroup group, bool apply);
void ClearDiminishings();
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp
index bc19e1cc51d..92faf274ee5 100644
--- a/src/server/game/Spells/Spell.cpp
+++ b/src/server/game/Spells/Spell.cpp
@@ -2633,19 +2633,18 @@ SpellMissInfo Spell::DoSpellHitOnUnit(Unit* unit, uint32 effectMask, bool scaleA
aura_effmask |= 1 << effect->EffectIndex;
// Get Data Needed for Diminishing Returns, some effects may have multiple auras, so this must be done on spell hit, not aura add
- bool const triggered = m_triggeredByAuraSpell != nullptr;
- DiminishingGroup const diminishGroup = m_spellInfo->GetDiminishingReturnsGroupForSpell(triggered);
+ DiminishingGroup const diminishGroup = m_spellInfo->GetDiminishingReturnsGroupForSpell();
DiminishingLevels diminishLevel = DIMINISHING_LEVEL_1;
if (diminishGroup && aura_effmask)
{
diminishLevel = unit->GetDiminishing(diminishGroup);
- DiminishingReturnsType type = m_spellInfo->GetDiminishingReturnsGroupType(triggered);
+ DiminishingReturnsType type = m_spellInfo->GetDiminishingReturnsGroupType();
// Increase Diminishing on unit, current informations for actually casts will use values above
if ((type == DRTYPE_PLAYER &&
(unit->GetCharmerOrOwnerPlayerOrPlayerItself() || (unit->GetTypeId() == TYPEID_UNIT && unit->ToCreature()->GetCreatureTemplate()->flags_extra & CREATURE_FLAG_EXTRA_ALL_DIMINISH))) ||
type == DRTYPE_ALL)
- unit->IncrDiminishing(m_spellInfo, triggered);
+ unit->IncrDiminishing(m_spellInfo);
}
if (aura_effmask)
@@ -2692,7 +2691,7 @@ SpellMissInfo Spell::DoSpellHitOnUnit(Unit* unit, uint32 effectMask, bool scaleA
// Now Reduce spell duration using data received at spell hit
int32 duration = m_spellAura->GetMaxDuration();
- float diminishMod = unit->ApplyDiminishingToDuration(aurSpellInfo, triggered, duration, m_originalCaster, diminishLevel);
+ float diminishMod = unit->ApplyDiminishingToDuration(aurSpellInfo, duration, m_originalCaster, diminishLevel);
// unit is immune to aura if it was diminished to 0 duration
if (diminishMod == 0.0f)
diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp
index 1ad9ee5fd19..b71484017b7 100644
--- a/src/server/game/Spells/SpellInfo.cpp
+++ b/src/server/game/Spells/SpellInfo.cpp
@@ -2469,7 +2469,7 @@ void SpellInfo::_LoadSpellSpecific()
void SpellInfo::_LoadSpellDiminishInfo()
{
- auto diminishingGroupCompute = [this](bool triggered) -> DiminishingGroup
+ auto diminishingGroupCompute = [this]() -> DiminishingGroup
{
if (IsPositive())
return DIMINISHING_NONE;
@@ -2812,7 +2812,7 @@ void SpellInfo::_LoadSpellDiminishInfo()
}
};
- auto diminishingLimitDurationCompute = [this](DiminishingGroup group) -> int32
+ auto diminishingLimitDurationCompute = [this]() -> int32
{
// Explicit diminishing duration
switch (SpellFamilyName)
@@ -2848,39 +2848,33 @@ void SpellInfo::_LoadSpellDiminishInfo()
return 8 * IN_MILLISECONDS;
};
- SpellDiminishInfo triggeredInfo, normalInfo;
- triggeredInfo.DiminishGroup = diminishingGroupCompute(true);
- triggeredInfo.DiminishReturnType = diminishingTypeCompute(triggeredInfo.DiminishGroup);
- triggeredInfo.DiminishMaxLevel = diminishingMaxLevelCompute(triggeredInfo.DiminishGroup);
- triggeredInfo.DiminishDurationLimit = diminishingLimitDurationCompute(triggeredInfo.DiminishGroup);
+ SpellDiminishInfo diminishInfo;
+ diminishInfo.DiminishGroup = diminishingGroupCompute();
+ diminishInfo.DiminishReturnType = diminishingTypeCompute(diminishInfo.DiminishGroup);
+ diminishInfo.DiminishMaxLevel = diminishingMaxLevelCompute(diminishInfo.DiminishGroup);
+ diminishInfo.DiminishDurationLimit = diminishingLimitDurationCompute();
- normalInfo.DiminishGroup = diminishingGroupCompute(false);
- normalInfo.DiminishReturnType = diminishingTypeCompute(normalInfo.DiminishGroup);
- normalInfo.DiminishMaxLevel = diminishingMaxLevelCompute(normalInfo.DiminishGroup);
- normalInfo.DiminishDurationLimit = diminishingLimitDurationCompute(normalInfo.DiminishGroup);
-
- _diminishInfoTriggered = triggeredInfo;
- _diminishInfoNonTriggered = normalInfo;
+ _diminishInfo = diminishInfo;
}
-DiminishingGroup SpellInfo::GetDiminishingReturnsGroupForSpell(bool triggered) const
+DiminishingGroup SpellInfo::GetDiminishingReturnsGroupForSpell() const
{
- return triggered ? _diminishInfoTriggered.DiminishGroup : _diminishInfoNonTriggered.DiminishGroup;
+ return _diminishInfo.DiminishGroup;
}
-DiminishingReturnsType SpellInfo::GetDiminishingReturnsGroupType(bool triggered) const
+DiminishingReturnsType SpellInfo::GetDiminishingReturnsGroupType() const
{
- return triggered ? _diminishInfoTriggered.DiminishReturnType : _diminishInfoNonTriggered.DiminishReturnType;
+ return _diminishInfo.DiminishReturnType;
}
-DiminishingLevels SpellInfo::GetDiminishingReturnsMaxLevel(bool triggered) const
+DiminishingLevels SpellInfo::GetDiminishingReturnsMaxLevel() const
{
- return triggered ? _diminishInfoTriggered.DiminishMaxLevel : _diminishInfoNonTriggered.DiminishMaxLevel;
+ return _diminishInfo.DiminishMaxLevel;
}
-int32 SpellInfo::GetDiminishingReturnsLimitDuration(bool triggered) const
+int32 SpellInfo::GetDiminishingReturnsLimitDuration() const
{
- return triggered ? _diminishInfoTriggered.DiminishDurationLimit : _diminishInfoNonTriggered.DiminishDurationLimit;
+ return _diminishInfo.DiminishDurationLimit;
}
float SpellInfo::GetMinRange(bool positive) const
diff --git a/src/server/game/Spells/SpellInfo.h b/src/server/game/Spells/SpellInfo.h
index 638a137fc32..27028a6d5b6 100644
--- a/src/server/game/Spells/SpellInfo.h
+++ b/src/server/game/Spells/SpellInfo.h
@@ -556,10 +556,10 @@ class TC_GAME_API SpellInfo
SpellEffectInfo const* GetEffect(uint32 index) const { return GetEffect(DIFFICULTY_NONE, index); }
// spell diminishing returns
- DiminishingGroup GetDiminishingReturnsGroupForSpell(bool triggered) const;
- DiminishingReturnsType GetDiminishingReturnsGroupType(bool triggered) const;
- DiminishingLevels GetDiminishingReturnsMaxLevel(bool triggered) const;
- int32 GetDiminishingReturnsLimitDuration(bool triggered) const;
+ DiminishingGroup GetDiminishingReturnsGroupForSpell() const;
+ DiminishingReturnsType GetDiminishingReturnsGroupType() const;
+ DiminishingLevels GetDiminishingReturnsMaxLevel() const;
+ int32 GetDiminishingReturnsLimitDuration() const;
private:
// loading helpers
@@ -582,8 +582,7 @@ class TC_GAME_API SpellInfo
SpellSpecificType _spellSpecific;
AuraStateType _auraState;
- SpellDiminishInfo _diminishInfoNonTriggered;
- SpellDiminishInfo _diminishInfoTriggered;
+ SpellDiminishInfo _diminishInfo;
};
#endif // _SPELLINFO_H