Core/Spells

* Removed area MiscValue check for spells with SPELL_EFFECT_BIND, it's purpose is only to be sent in packets, not determine real area player will be bound to.
* Corrected guid sent in SMSG_PLAYERBOUND, it should be caster's guid, not player's
* Also updated position for Teach: Death Gate

Closes #9661
This commit is contained in:
Shauren
2013-05-11 12:16:36 +02:00
parent 1fbe054bd5
commit e2f8abd48d
3 changed files with 5 additions and 14 deletions

View File

@@ -0,0 +1 @@
UPDATE `spell_target_position` SET `target_map`=0 WHERE `id`=53821;

View File

@@ -6085,7 +6085,7 @@ void Spell::EffectBind(SpellEffIndex effIndex)
player->SetHomebind(homeLoc, areaId);
// binding
WorldPacket data(SMSG_BINDPOINTUPDATE, (4+4+4+4+4));
WorldPacket data(SMSG_BINDPOINTUPDATE, 4 + 4 + 4 + 4 + 4);
data << float(homeLoc.GetPositionX());
data << float(homeLoc.GetPositionY());
data << float(homeLoc.GetPositionZ());
@@ -6097,8 +6097,8 @@ void Spell::EffectBind(SpellEffIndex effIndex)
homeLoc.GetPositionX(), homeLoc.GetPositionY(), homeLoc.GetPositionZ(), homeLoc.GetMapId(), areaId);
// zone update
data.Initialize(SMSG_PLAYERBOUND, 8+4);
data << uint64(player->GetGUID());
data.Initialize(SMSG_PLAYERBOUND, 8 + 4);
data << uint64(m_caster->GetGUID());
data << uint32(areaId);
player->SendDirectMessage(&data);
}

View File

@@ -1549,21 +1549,11 @@ void SpellMgr::LoadSpellTargetPositions()
{
if (spellInfo->Effects[i].TargetA.GetTarget() == TARGET_DEST_DB || spellInfo->Effects[i].TargetB.GetTarget() == TARGET_DEST_DB)
{
// additional requirements
if (spellInfo->Effects[i].Effect == SPELL_EFFECT_BIND && spellInfo->Effects[i].MiscValue)
{
uint32 area_id = sMapMgr->GetAreaId(st.target_mapId, st.target_X, st.target_Y, st.target_Z);
if (area_id != uint32(spellInfo->Effects[i].MiscValue))
{
sLog->outError(LOG_FILTER_SQL, "Spell (Id: %u) listed in `spell_target_position` expected to point to area %u, but points to area %u instead.", Spell_ID, spellInfo->Effects[i].MiscValue, area_id);
break;
}
}
found = true;
break;
}
}
if (!found)
{
sLog->outError(LOG_FILTER_SQL, "Spell (Id: %u) listed in `spell_target_position` does not have target TARGET_DEST_DB (17).", Spell_ID);