diff options
author | Wyrserth <wyrserth@protonmail.com> | 2019-07-18 02:19:19 +0200 |
---|---|---|
committer | Wyrserth <wyrserth@protonmail.com> | 2019-07-18 02:20:36 +0200 |
commit | 5f5d2028df70e82d5cd70837953acd059f2ac7fb (patch) | |
tree | be627448bb3079f2330faf962626202123ecc70f /src | |
parent | 50b2c3b34d5ffc9539e3f3954ec6b4e5f8a87efc (diff) |
Core/Creature: don't set guardian stats in Creature::UpdateEntry(), because stat calculation from guardians is already done in Guardian::InitStatsForLevel.
Closes #281.
Signed-off-by: Wyrserth <wyrserth@protonmail.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Creature/Creature.cpp | 34 | ||||
-rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 6 |
2 files changed, 20 insertions, 20 deletions
diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index 4c68ccd77e3..60a428c8dd4 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -569,21 +569,25 @@ bool Creature::UpdateEntry(uint32 entry, CreatureData const* data /*= nullptr*/, if (updateLevel) SelectLevel(); - uint32 previousHealth = GetHealth(); - UpdateLevelDependantStats(); - if (previousHealth > 0) - SetHealth(previousHealth); - - SetMeleeDamageSchool(SpellSchools(cInfo->dmgschool)); - SetStatFlatModifier(UNIT_MOD_RESISTANCE_HOLY, BASE_VALUE, float(cInfo->resistance[SPELL_SCHOOL_HOLY])); - SetStatFlatModifier(UNIT_MOD_RESISTANCE_FIRE, BASE_VALUE, float(cInfo->resistance[SPELL_SCHOOL_FIRE])); - SetStatFlatModifier(UNIT_MOD_RESISTANCE_NATURE, BASE_VALUE, float(cInfo->resistance[SPELL_SCHOOL_NATURE])); - SetStatFlatModifier(UNIT_MOD_RESISTANCE_FROST, BASE_VALUE, float(cInfo->resistance[SPELL_SCHOOL_FROST])); - SetStatFlatModifier(UNIT_MOD_RESISTANCE_SHADOW, BASE_VALUE, float(cInfo->resistance[SPELL_SCHOOL_SHADOW])); - SetStatFlatModifier(UNIT_MOD_RESISTANCE_ARCANE, BASE_VALUE, float(cInfo->resistance[SPELL_SCHOOL_ARCANE])); - - SetCanModifyStats(true); - UpdateAllStats(); + // Do not update guardian stats here - they are handled in Guardian::InitStatsForLevel() + if (!IsGuardian()) + { + uint32 previousHealth = GetHealth(); + UpdateLevelDependantStats(); + if (previousHealth > 0) + SetHealth(previousHealth); + + SetMeleeDamageSchool(SpellSchools(cInfo->dmgschool)); + SetStatFlatModifier(UNIT_MOD_RESISTANCE_HOLY, BASE_VALUE, float(cInfo->resistance[SPELL_SCHOOL_HOLY])); + SetStatFlatModifier(UNIT_MOD_RESISTANCE_FIRE, BASE_VALUE, float(cInfo->resistance[SPELL_SCHOOL_FIRE])); + SetStatFlatModifier(UNIT_MOD_RESISTANCE_NATURE, BASE_VALUE, float(cInfo->resistance[SPELL_SCHOOL_NATURE])); + SetStatFlatModifier(UNIT_MOD_RESISTANCE_FROST, BASE_VALUE, float(cInfo->resistance[SPELL_SCHOOL_FROST])); + SetStatFlatModifier(UNIT_MOD_RESISTANCE_SHADOW, BASE_VALUE, float(cInfo->resistance[SPELL_SCHOOL_SHADOW])); + SetStatFlatModifier(UNIT_MOD_RESISTANCE_ARCANE, BASE_VALUE, float(cInfo->resistance[SPELL_SCHOOL_ARCANE])); + + SetCanModifyStats(true); + UpdateAllStats(); + } // checked and error show at loading templates if (FactionTemplateEntry const* factionTemplate = sFactionTemplateStore.LookupEntry(cInfo->faction)) diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index c1ee51ef98c..50819405226 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -5863,11 +5863,7 @@ void Unit::SetMinion(Minion *minion, bool apply) } if (minion->HasUnitTypeMask(UNIT_MASK_CONTROLABLE_GUARDIAN)) - { - if (AddGuidValue(UNIT_FIELD_SUMMON, minion->GetGUID())) - { - } - } + AddGuidValue(UNIT_FIELD_SUMMON, minion->GetGUID()); if (minion->m_Properties && minion->m_Properties->Type == SUMMON_TYPE_MINIPET) SetCritterGUID(minion->GetGUID()); |