feat(Core/Spells): Allow modifying MiscValues during cast (#20731)

This commit is contained in:
Andrew
2024-11-26 12:17:02 -03:00
committed by GitHub
parent e5b83b29de
commit 2649ca2d65
4 changed files with 22 additions and 1 deletions
+13
View File
@@ -556,7 +556,11 @@ void SpellCastTargets::OutDebug() const
SpellValue::SpellValue(SpellInfo const* proto) SpellValue::SpellValue(SpellInfo const* proto)
{ {
for (uint32 i = 0; i < MAX_SPELL_EFFECTS; ++i) for (uint32 i = 0; i < MAX_SPELL_EFFECTS; ++i)
{
EffectBasePoints[i] = proto->Effects[i].BasePoints; EffectBasePoints[i] = proto->Effects[i].BasePoints;
MiscVal[i] = 0;
}
MaxAffectedTargets = proto->MaxAffectedTargets; MaxAffectedTargets = proto->MaxAffectedTargets;
RadiusMod = 1.0f; RadiusMod = 1.0f;
AuraStackAmount = 1; AuraStackAmount = 1;
@@ -8458,6 +8462,15 @@ void Spell::SetSpellValue(SpellValueMod mod, int32 value)
case SPELLVALUE_FORCED_CRIT_RESULT: case SPELLVALUE_FORCED_CRIT_RESULT:
m_spellValue->ForcedCritResult = (bool)value; m_spellValue->ForcedCritResult = (bool)value;
break; break;
case SPELLVALUE_MISCVALUE0:
m_spellValue->MiscVal[0] = value;
break;
case SPELLVALUE_MISCVALUE1:
m_spellValue->MiscVal[1] = value;
break;
case SPELLVALUE_MISCVALUE2:
m_spellValue->MiscVal[2] = value;
break;
} }
} }
+1
View File
@@ -218,6 +218,7 @@ struct SpellValue
uint8 AuraStackAmount; uint8 AuraStackAmount;
int32 AuraDuration; int32 AuraDuration;
bool ForcedCritResult; bool ForcedCritResult;
uint32 MiscVal[MAX_SPELL_EFFECTS];
}; };
enum SpellState enum SpellState
+4 -1
View File
@@ -117,7 +117,10 @@ enum SpellValueMod
SPELLVALUE_MAX_TARGETS, SPELLVALUE_MAX_TARGETS,
SPELLVALUE_AURA_STACK, SPELLVALUE_AURA_STACK,
SPELLVALUE_AURA_DURATION, SPELLVALUE_AURA_DURATION,
SPELLVALUE_FORCED_CRIT_RESULT SPELLVALUE_FORCED_CRIT_RESULT,
SPELLVALUE_MISCVALUE0,
SPELLVALUE_MISCVALUE1,
SPELLVALUE_MISCVALUE2,
}; };
enum SpellFacingFlags enum SpellFacingFlags
+4
View File
@@ -2332,6 +2332,10 @@ void Spell::EffectSummonType(SpellEffIndex effIndex)
return; return;
uint32 entry = m_spellInfo->Effects[effIndex].MiscValue; uint32 entry = m_spellInfo->Effects[effIndex].MiscValue;
if (m_spellValue->MiscVal[effIndex])
entry = m_spellValue->MiscVal[effIndex];
if (!entry) if (!entry)
return; return;