aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Spells/Spell.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2024-09-12 21:57:16 +0200
committerShauren <shauren.trinity@gmail.com>2024-09-12 21:57:16 +0200
commit975e7cc0723d3136822f6190de8742eef17a2539 (patch)
tree110a684b9989f1b62eb0af7680049fa26d083a30 /src/server/game/Spells/Spell.cpp
parentd3b05c591cae95557af552cebc97fe71d109a474 (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
Diffstat (limited to 'src/server/game/Spells/Spell.cpp')
-rw-r--r--src/server/game/Spells/Spell.cpp33
1 files changed, 22 insertions, 11 deletions
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp
index 1b7fa2db3a7..2b346dd01bf 100644
--- a/src/server/game/Spells/Spell.cpp
+++ b/src/server/game/Spells/Spell.cpp
@@ -8793,21 +8793,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;
@@ -8822,6 +8813,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()
{
}
@@ -9662,8 +9671,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;
}