aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/Entities/Creature/TemporarySummon.cpp2
-rw-r--r--src/server/game/Spells/SpellEffects.cpp12
2 files changed, 4 insertions, 10 deletions
diff --git a/src/server/game/Entities/Creature/TemporarySummon.cpp b/src/server/game/Entities/Creature/TemporarySummon.cpp
index a101b874cad..2c7e5c61367 100644
--- a/src/server/game/Entities/Creature/TemporarySummon.cpp
+++ b/src/server/game/Entities/Creature/TemporarySummon.cpp
@@ -458,7 +458,7 @@ void Guardian::InitStats(WorldObject* summoner, Milliseconds duration)
{
Minion::InitStats(summoner, duration);
- InitStatsForLevel(GetOwner()->GetLevel());
+ InitStatsForLevel(GetLevel()); // level is already initialized in TempSummon::InitStats, so use that
if (GetOwner()->GetTypeId() == TYPEID_PLAYER && HasUnitTypeMask(UNIT_MASK_CONTROLABLE_GUARDIAN))
m_charmInfo->InitCharmCreateSpells();
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp
index 801e53d1539..d162d725ce1 100644
--- a/src/server/game/Spells/SpellEffects.cpp
+++ b/src/server/game/Spells/SpellEffects.cpp
@@ -4858,7 +4858,7 @@ void Spell::SummonGuardian(SpellEffectInfo const* effect, uint32 entry, SummonPr
{
Position pos;
if (count == 0)
- pos = *destTarget;
+ pos = destTarget->GetPosition();
else
// randomize position for multiple summons
pos = unitCaster->GetRandomPoint(*destTarget, radius);
@@ -4867,20 +4867,14 @@ void Spell::SummonGuardian(SpellEffectInfo const* effect, uint32 entry, SummonPr
if (!summon)
return;
- if (summon->HasUnitTypeMask(UNIT_MASK_GUARDIAN))
+ if (summon->IsGuardian())
{
- uint8 level = summon->GetLevel();
- if (properties && !properties->GetFlags().HasFlag(SummonPropertiesFlags::UseCreatureLevel))
- level = unitCaster->GetLevel();
-
// level of pet summoned using engineering item based at engineering skill level
if (m_CastItem && unitCaster->GetTypeId() == TYPEID_PLAYER)
if (ItemTemplate const* proto = m_CastItem->GetTemplate())
if (proto->GetRequiredSkill() == SKILL_ENGINEERING)
if (uint16 skill202 = unitCaster->ToPlayer()->GetSkillValue(SKILL_ENGINEERING))
- level = skill202 / 5;
-
- ((Guardian*)summon)->InitStatsForLevel(level);
+ static_cast<Guardian*>(summon)->InitStatsForLevel(skill202 / 5);
}
if (summon->HasUnitTypeMask(UNIT_MASK_MINION) && m_targets.HasDst())