PDA

Просмотр полной версии : [10470][fix]DoSummonTotem


Vinolentus
07.09.2010, 20:46
diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp
index 5af2ae6..069d1a2 100644
--- a/src/game/SpellEffects.cpp
+++ b/src/game/SpellEffects.cpp
@@ -7151,6 +7151,8 @@ void Spell::DoSummonTotem(SpellEffectIndex eff_idx, uint8 slot_dbc)
m_caster->_AddTotem(TotemSlot(slot),pTotem);

pTotem->SetOwner(m_caster->GetGUID());
+ pTotem->setFaction(m_caster->getFaction());
+ pTotem->SetLevel(m_caster->getLevel());
pTotem->SetTypeBySummonSpell(m_spellInfo); // must be after Create call where m_spells initialized

int32 duration=GetSpellDuration(m_spellInfo);
diff --git a/src/game/Totem.cpp b/src/game/Totem.cpp
index 4152581..3cd1075 100644
--- a/src/game/Totem.cpp
+++ b/src/game/Totem.cpp
@@ -113,11 +113,6 @@ void Totem::SetOwner(uint64 guid)
{
SetCreatorGUID(guid);
SetOwnerGUID(guid);
- if (Unit *owner = GetOwner())
- {
- setFaction(owner->getFaction());
- SetLevel(owner->getLevel());
- }
}

Unit *Totem::GetOwner()

Если тотем саммонится не игроком, а нпц, мы последнего через GetOwner() не получим - тотем еще не добавлен на карту, и ObjectAccessor::GetUnit вернет NULL. Соответственно, ни правильной фракции, ни уровня тотему не достанется.

Vladimir
11.09.2010, 13:54
Я думаю лучше исправить аргумент в функции...

Но исправление фактически тоже.

В [10470]. Спасибо! :)