mirror of
https://github.com/mangosfour/server.git
synced 2025-12-12 10:37:03 +00:00
[0169] Implemented vendors selling currencies.
Also fix crash from recent master merge. Signed-off-by: Yaki Khadafi <ElSolDolLo@gmail.com>
This commit is contained in:
parent
d4af997fbd
commit
6dd0ba1d14
23 changed files with 550 additions and 194 deletions
|
|
@ -67,13 +67,13 @@ TrainerSpell const* TrainerSpellData::Find(uint32 spell_id) const
|
|||
return NULL;
|
||||
}
|
||||
|
||||
bool VendorItemData::RemoveItem(uint32 item_id)
|
||||
bool VendorItemData::RemoveItem(uint32 item_id, uint8 type)
|
||||
{
|
||||
bool found = false;
|
||||
for (VendorItemList::iterator i = m_items.begin(); i != m_items.end();)
|
||||
{
|
||||
// can have many examples
|
||||
if ((*i)->item == item_id)
|
||||
if ((*i)->item == item_id && (*i)->type == type)
|
||||
{
|
||||
i = m_items.erase(i);
|
||||
found = true;
|
||||
|
|
@ -85,10 +85,10 @@ bool VendorItemData::RemoveItem(uint32 item_id)
|
|||
return found;
|
||||
}
|
||||
|
||||
VendorItem const* VendorItemData::FindItemCostPair(uint32 item_id, uint32 extendedCost) const
|
||||
VendorItem const* VendorItemData::FindItemCostPair(uint32 item_id, uint8 type, uint32 extendedCost) const
|
||||
{
|
||||
for (VendorItemList::const_iterator i = m_items.begin(); i != m_items.end(); ++i)
|
||||
if ((*i)->item == item_id && (*i)->ExtendedCost == extendedCost)
|
||||
if ((*i)->item == item_id && (*i)->ExtendedCost == extendedCost && (*i)->type == type)
|
||||
return *i;
|
||||
return NULL;
|
||||
}
|
||||
|
|
@ -2544,19 +2544,22 @@ void Creature::SetWalk(bool enable)
|
|||
else
|
||||
m_movementInfo.RemoveMovementFlag(MOVEFLAG_WALK_MODE);
|
||||
|
||||
WorldPacket data(enable ? SMSG_SPLINE_MOVE_SET_WALK_MODE : SMSG_SPLINE_MOVE_SET_RUN_MODE, 9);
|
||||
if (enable)
|
||||
if (IsInWorld())
|
||||
{
|
||||
data.WriteGuidMask<7, 6, 5, 1, 3, 4, 2, 0>(GetObjectGuid());
|
||||
data.WriteGuidBytes<4, 2, 1, 6, 5, 0, 7, 3>(GetObjectGuid());
|
||||
}
|
||||
else
|
||||
{
|
||||
data.WriteGuidMask<5, 6, 3, 7, 2, 0, 4, 1>(GetObjectGuid());
|
||||
data.WriteGuidBytes<7, 0, 4, 6, 5, 1, 2, 3>(GetObjectGuid());
|
||||
}
|
||||
WorldPacket data(enable ? SMSG_SPLINE_MOVE_SET_WALK_MODE : SMSG_SPLINE_MOVE_SET_RUN_MODE, 9);
|
||||
if (enable)
|
||||
{
|
||||
data.WriteGuidMask<7, 6, 5, 1, 3, 4, 2, 0>(GetObjectGuid());
|
||||
data.WriteGuidBytes<4, 2, 1, 6, 5, 0, 7, 3>(GetObjectGuid());
|
||||
}
|
||||
else
|
||||
{
|
||||
data.WriteGuidMask<5, 6, 3, 7, 2, 0, 4, 1>(GetObjectGuid());
|
||||
data.WriteGuidBytes<7, 0, 4, 6, 5, 1, 2, 3>(GetObjectGuid());
|
||||
}
|
||||
|
||||
SendMessageToSet(&data, true);
|
||||
SendMessageToSet(&data, true);
|
||||
}
|
||||
}
|
||||
|
||||
void Creature::SetLevitate(bool enable)
|
||||
|
|
@ -2566,19 +2569,22 @@ void Creature::SetLevitate(bool enable)
|
|||
else
|
||||
m_movementInfo.RemoveMovementFlag(MOVEFLAG_LEVITATING);
|
||||
|
||||
WorldPacket data(enable ? SMSG_SPLINE_MOVE_GRAVITY_DISABLE : SMSG_SPLINE_MOVE_GRAVITY_ENABLE, 9);
|
||||
if (enable)
|
||||
if (IsInWorld())
|
||||
{
|
||||
data.WriteGuidMask<7, 3, 4, 2, 5, 1, 0, 6>(GetObjectGuid());
|
||||
data.WriteGuidBytes<7, 1, 3, 4, 6, 2, 5, 0>(GetObjectGuid());
|
||||
}
|
||||
else
|
||||
{
|
||||
data.WriteGuidMask<5, 4, 7, 1, 3, 6, 2, 0>(GetObjectGuid());
|
||||
data.WriteGuidBytes<7, 3, 4, 2, 1, 6, 0, 5>(GetObjectGuid());
|
||||
}
|
||||
WorldPacket data(enable ? SMSG_SPLINE_MOVE_GRAVITY_DISABLE : SMSG_SPLINE_MOVE_GRAVITY_ENABLE, 9);
|
||||
if (enable)
|
||||
{
|
||||
data.WriteGuidMask<7, 3, 4, 2, 5, 1, 0, 6>(GetObjectGuid());
|
||||
data.WriteGuidBytes<7, 1, 3, 4, 6, 2, 5, 0>(GetObjectGuid());
|
||||
}
|
||||
else
|
||||
{
|
||||
data.WriteGuidMask<5, 4, 7, 1, 3, 6, 2, 0>(GetObjectGuid());
|
||||
data.WriteGuidBytes<7, 3, 4, 2, 1, 6, 0, 5>(GetObjectGuid());
|
||||
}
|
||||
|
||||
SendMessageToSet(&data, true);
|
||||
SendMessageToSet(&data, true);
|
||||
}
|
||||
}
|
||||
|
||||
void Creature::SetRoot(bool enable)
|
||||
|
|
@ -2588,19 +2594,22 @@ void Creature::SetRoot(bool enable)
|
|||
else
|
||||
m_movementInfo.RemoveMovementFlag(MOVEFLAG_ROOT);
|
||||
|
||||
WorldPacket data(enable ? SMSG_SPLINE_MOVE_ROOT : SMSG_SPLINE_MOVE_UNROOT, 9);
|
||||
if (enable)
|
||||
if (IsInWorld())
|
||||
{
|
||||
data.WriteGuidMask<5, 4, 6, 1, 3, 7, 2, 0>(GetObjectGuid());
|
||||
data.WriteGuidBytes<2, 1, 7, 3, 5, 0, 6, 4>(GetObjectGuid());
|
||||
}
|
||||
else
|
||||
{
|
||||
data.WriteGuidMask<0, 1, 6, 5, 3, 2, 7, 4>(GetObjectGuid());
|
||||
data.WriteGuidBytes<6, 3, 1, 5, 2, 0, 7, 4>(GetObjectGuid());
|
||||
}
|
||||
WorldPacket data(enable ? SMSG_SPLINE_MOVE_ROOT : SMSG_SPLINE_MOVE_UNROOT, 9);
|
||||
if (enable)
|
||||
{
|
||||
data.WriteGuidMask<5, 4, 6, 1, 3, 7, 2, 0>(GetObjectGuid());
|
||||
data.WriteGuidBytes<2, 1, 7, 3, 5, 0, 6, 4>(GetObjectGuid());
|
||||
}
|
||||
else
|
||||
{
|
||||
data.WriteGuidMask<0, 1, 6, 5, 3, 2, 7, 4>(GetObjectGuid());
|
||||
data.WriteGuidBytes<6, 3, 1, 5, 2, 0, 7, 4>(GetObjectGuid());
|
||||
}
|
||||
|
||||
SendMessageToSet(&data, true);
|
||||
SendMessageToSet(&data, true);
|
||||
}
|
||||
}
|
||||
|
||||
void Creature::SetWaterWalk(bool enable)
|
||||
|
|
@ -2610,18 +2619,20 @@ void Creature::SetWaterWalk(bool enable)
|
|||
else
|
||||
m_movementInfo.RemoveMovementFlag(MOVEFLAG_WATERWALKING);
|
||||
|
||||
WorldPacket data(enable ? SMSG_SPLINE_MOVE_WATER_WALK : SMSG_SPLINE_MOVE_LAND_WALK, 9);
|
||||
if (enable)
|
||||
if (IsInWorld())
|
||||
{
|
||||
data.WriteGuidMask<6, 1, 4, 2, 3, 7, 5, 0>(GetObjectGuid());
|
||||
data.WriteGuidBytes<0, 6, 3, 7, 4, 2, 5, 1>(GetObjectGuid());
|
||||
}
|
||||
else
|
||||
{
|
||||
data.WriteGuidMask<5, 0, 4, 6, 7, 2, 3, 1>(GetObjectGuid());
|
||||
data.WriteGuidBytes<5, 7, 3, 4, 1, 2, 0, 6>(GetObjectGuid());
|
||||
}
|
||||
WorldPacket data(enable ? SMSG_SPLINE_MOVE_WATER_WALK : SMSG_SPLINE_MOVE_LAND_WALK, 9);
|
||||
if (enable)
|
||||
{
|
||||
data.WriteGuidMask<6, 1, 4, 2, 3, 7, 5, 0>(GetObjectGuid());
|
||||
data.WriteGuidBytes<0, 6, 3, 7, 4, 2, 5, 1>(GetObjectGuid());
|
||||
}
|
||||
else
|
||||
{
|
||||
data.WriteGuidMask<5, 0, 4, 6, 7, 2, 3, 1>(GetObjectGuid());
|
||||
data.WriteGuidBytes<5, 7, 3, 4, 1, 2, 0, 6>(GetObjectGuid());
|
||||
}
|
||||
|
||||
SendMessageToSet(&data, true);
|
||||
SendMessageToSet(&data, true);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue