*Fix a crash in Object.h
*Fix action button saving *Fix a crash on item swap in guild bank *Fix exploit moving after death in Unit.cpp *Fix assert fail at grid load in Creature.cpp Thanks Sisif for these! :) --HG-- branch : trunk
This commit is contained in:
@@ -1537,7 +1537,13 @@ bool Creature::LoadFromDB(uint32 guid, Map *map)
|
||||
}
|
||||
|
||||
m_DBTableGuid = guid;
|
||||
if (map->GetInstanceId() != 0) guid = objmgr.GenerateLowGuid(HIGHGUID_UNIT);
|
||||
if (map->GetInstanceId() == 0)
|
||||
{
|
||||
if (map->GetCreature(MAKE_NEW_GUID(guid,data->id,HIGHGUID_UNIT)))
|
||||
return false;
|
||||
}
|
||||
else
|
||||
guid = objmgr.GenerateLowGuid(HIGHGUID_UNIT);
|
||||
|
||||
uint16 team = 0;
|
||||
if(!Create(guid,map,data->phaseMask,data->id,0,team,data->posX,data->posY,data->posZ,data->orientation,data))
|
||||
|
||||
@@ -1074,7 +1074,7 @@ void WorldSession::HandleGuildBankSwapItems( WorldPacket & recv_data )
|
||||
recv_data >> unk2; // always 0
|
||||
recv_data >> SplitedAmount;
|
||||
|
||||
if (BankTabSlotDst >= GUILD_BANK_MAX_SLOTS || (BankTabDst == BankTab && BankTabSlotDst == BankTabSlot))
|
||||
if (BankTabSlotDst >= GUILD_BANK_MAX_SLOTS || (BankTabDst == BankTab && BankTabSlotDst == BankTabSlot) || BankTab >= GUILD_BANK_MAX_TABS)
|
||||
{
|
||||
recv_data.rpos(recv_data.wpos()); // prevent additional spam at rejected packet
|
||||
return;
|
||||
@@ -1100,7 +1100,7 @@ void WorldSession::HandleGuildBankSwapItems( WorldPacket & recv_data )
|
||||
recv_data >> SplitedAmount;
|
||||
}
|
||||
|
||||
if (BankTabSlot >= GUILD_BANK_MAX_SLOTS && BankTabSlot != 0xFF)
|
||||
if ((BankTabSlot >= GUILD_BANK_MAX_SLOTS && BankTabSlot != 0xFF) || BankTab >= GUILD_BANK_MAX_TABS)
|
||||
{
|
||||
recv_data.rpos(recv_data.wpos()); // prevent additional spam at rejected packet
|
||||
return;
|
||||
|
||||
+4
-1
@@ -518,7 +518,10 @@ class TRINITY_DLL_SPEC WorldObject : public Object, public WorldLocation
|
||||
|
||||
bool IsInMap(const WorldObject* obj) const
|
||||
{
|
||||
return IsInWorld() && obj->IsInWorld() && (GetMap() == obj->GetMap()) && InSamePhase(obj);
|
||||
if (obj)
|
||||
return IsInWorld() && obj->IsInWorld() && (GetMap() == obj->GetMap()) && InSamePhase(obj);
|
||||
else
|
||||
return false;
|
||||
}
|
||||
bool IsWithinDist3d(float x, float y, float z, float dist) const
|
||||
{ return IsInDist(x, y, z, dist + GetObjectSize()); }
|
||||
|
||||
+1
-1
@@ -169,7 +169,7 @@ struct ActionButton
|
||||
void SetActionAndType(uint32 action, ActionButtonType type)
|
||||
{
|
||||
uint32 newData = action | (uint32(type) << 24);
|
||||
if (newData != packedData)
|
||||
if (newData != packedData || uState == ACTIONBUTTON_DELETED)
|
||||
{
|
||||
packedData = newData;
|
||||
if (uState != ACTIONBUTTON_NEW)
|
||||
|
||||
@@ -11176,6 +11176,7 @@ void Unit::setDeathState(DeathState s)
|
||||
GetMotionMaster()->Clear(false);
|
||||
GetMotionMaster()->MoveIdle();
|
||||
if(m_vehicleKit) m_vehicleKit->Die();
|
||||
StopMoving();
|
||||
//without this when removing IncreaseMaxHealth aura player may stuck with 1 hp
|
||||
//do not why since in IncreaseMaxHealth currenthealth is checked
|
||||
SetHealth(0);
|
||||
|
||||
Reference in New Issue
Block a user