diff options
| author | Shauren <shauren.trinity@gmail.com> | 2024-09-12 21:57:16 +0200 |
|---|---|---|
| committer | Ovahlord <dreadkiller@gmx.de> | 2024-09-13 19:30:56 +0200 |
| commit | 5a495d8e02a35e08bd57e4bccc7388ea4853a819 (patch) | |
| tree | 46352e697fbaca98308952137da1e01da4e3dbe2 /src/server/game/Spells/Spell.cpp | |
| parent | 1a00001eb0a79d8709f10363fabbaccd56ea76c5 (diff) | |
Core/Spells: Refactor CastSpellExtraArgs
* Allow C++20 designated initializers
* Allow precise float values for SPELLVALUE_RADIUS_MOD, SPELLVALUE_CRIT_CHANCE and SPELLVALUE_DURATION_PCT
(cherry picked from commit 975e7cc0723d3136822f6190de8742eef17a2539)
Diffstat (limited to 'src/server/game/Spells/Spell.cpp')
| -rw-r--r-- | src/server/game/Spells/Spell.cpp | 33 |
1 files changed, 22 insertions, 11 deletions
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index c960f38bc48..b9c1beb464c 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -8538,21 +8538,12 @@ void Spell::SetSpellValue(SpellValueMod mod, int32 value) switch (mod) { - case SPELLVALUE_RADIUS_MOD: - m_spellValue->RadiusMod = (float)value / 10000; - break; case SPELLVALUE_MAX_TARGETS: m_spellValue->MaxAffectedTargets = (uint32)value; break; case SPELLVALUE_AURA_STACK: m_spellValue->AuraStackAmount = uint8(value); break; - case SPELLVALUE_CRIT_CHANCE: - m_spellValue->CriticalChance = value / 100.0f; // @todo ugly /100 remove when basepoints are double - break; - case SPELLVALUE_DURATION_PCT: - m_spellValue->DurationMul = float(value) / 100.0f; - break; case SPELLVALUE_DURATION: m_spellValue->Duration = value; break; @@ -8567,6 +8558,24 @@ void Spell::SetSpellValue(SpellValueMod mod, int32 value) } } +void Spell::SetSpellValue(SpellValueModFloat mod, float value) +{ + switch (mod) + { + case SPELLVALUE_RADIUS_MOD: + m_spellValue->RadiusMod = value; + break; + case SPELLVALUE_CRIT_CHANCE: + m_spellValue->CriticalChance = value; + break; + case SPELLVALUE_DURATION_PCT: + m_spellValue->DurationMul = value / 100.0f; + break; + default: + break; + } +} + void Spell::PrepareTargetProcessing() { } @@ -9383,8 +9392,10 @@ CastSpellExtraArgs& CastSpellExtraArgs::SetTriggeringSpell(Spell const* triggeri TriggeringSpell = triggeringSpell; if (triggeringSpell) { - OriginalCastItemLevel = triggeringSpell->m_castItemLevel; - OriginalCastId = triggeringSpell->m_castId; + if (!OriginalCastItemLevel) + OriginalCastItemLevel = triggeringSpell->m_castItemLevel; + if (!OriginalCastItemLevel) + OriginalCastId = triggeringSpell->m_castId; } return *this; } |
