diff options
| -rw-r--r-- | src/server/game/Entities/Creature/TemporarySummon.cpp | 2 | ||||
| -rw-r--r-- | src/server/game/Spells/SpellEffects.cpp | 12 |
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()) |
