diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 8e8bbf6e3..932704c01 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -556,7 +556,11 @@ void SpellCastTargets::OutDebug() const SpellValue::SpellValue(SpellInfo const* proto) { for (uint32 i = 0; i < MAX_SPELL_EFFECTS; ++i) + { EffectBasePoints[i] = proto->Effects[i].BasePoints; + MiscVal[i] = 0; + } + MaxAffectedTargets = proto->MaxAffectedTargets; RadiusMod = 1.0f; AuraStackAmount = 1; @@ -8458,6 +8462,15 @@ void Spell::SetSpellValue(SpellValueMod mod, int32 value) case SPELLVALUE_FORCED_CRIT_RESULT: m_spellValue->ForcedCritResult = (bool)value; 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; } } diff --git a/src/server/game/Spells/Spell.h b/src/server/game/Spells/Spell.h index 45ae57194..4d44af2e4 100644 --- a/src/server/game/Spells/Spell.h +++ b/src/server/game/Spells/Spell.h @@ -218,6 +218,7 @@ struct SpellValue uint8 AuraStackAmount; int32 AuraDuration; bool ForcedCritResult; + uint32 MiscVal[MAX_SPELL_EFFECTS]; }; enum SpellState diff --git a/src/server/game/Spells/SpellDefines.h b/src/server/game/Spells/SpellDefines.h index 4da855467..22caee957 100644 --- a/src/server/game/Spells/SpellDefines.h +++ b/src/server/game/Spells/SpellDefines.h @@ -117,7 +117,10 @@ enum SpellValueMod SPELLVALUE_MAX_TARGETS, SPELLVALUE_AURA_STACK, SPELLVALUE_AURA_DURATION, - SPELLVALUE_FORCED_CRIT_RESULT + SPELLVALUE_FORCED_CRIT_RESULT, + SPELLVALUE_MISCVALUE0, + SPELLVALUE_MISCVALUE1, + SPELLVALUE_MISCVALUE2, }; enum SpellFacingFlags diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index ace8a1b51..4e8e9e507 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -2332,6 +2332,10 @@ void Spell::EffectSummonType(SpellEffIndex effIndex) return; uint32 entry = m_spellInfo->Effects[effIndex].MiscValue; + + if (m_spellValue->MiscVal[effIndex]) + entry = m_spellValue->MiscVal[effIndex]; + if (!entry) return;