mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-15 23:20:36 +01:00
Core/Spells: Refactor CastSpellExtraArgs
* Allow C++20 designated initializers * Allow precise float values for SPELLVALUE_RADIUS_MOD, SPELLVALUE_CRIT_CHANCE and SPELLVALUE_DURATION_PCT
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user