From 4e76f1ac988f56fa688fff33f2cfbc4d031b14a9 Mon Sep 17 00:00:00 2001 From: tomrus88 Date: Sun, 16 Nov 2008 17:04:27 +0300 Subject: [PATCH] crash fix --- contrib/extractor/ad.exe | Bin 160768 -> 159744 bytes src/game/Map.cpp | 6 +++--- src/game/MovementHandler.cpp | 9 +++++---- src/game/Pet.cpp | 2 +- src/game/Player.cpp | 6 +++--- src/game/SpellAuras.cpp | 27 +++++++++++++++++++-------- src/game/Unit.cpp | 2 +- 7 files changed, 32 insertions(+), 20 deletions(-) diff --git a/contrib/extractor/ad.exe b/contrib/extractor/ad.exe index eec43be65dd74dbc0a1f1749a05323faf9944a3b..2ee6e5be85d4c352e9d96eb902139111bdaafacc 100755 GIT binary patch delta 16403 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 DJ(ahC delta 17050 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, obj->GetPositionY()); if(p.x_coord >= TOTAL_NUMBER_OF_CELLS_PER_MAP || p.y_coord >= TOTAL_NUMBER_OF_CELLS_PER_MAP ) { - sLog.outError("Map::Remove: Object " I64FMTD " have invalid coordinates X:%f Y:%f grid cell [%u:%u]", obj->GetGUID(), obj->GetPositionX(), obj->GetPositionY(), p.x_coord, p.y_coord); + sLog.outError("Map::Remove: Object " I64FMT " have invalid coordinates X:%f Y:%f grid cell [%u:%u]", obj->GetGUID(), obj->GetPositionX(), obj->GetPositionY(), p.x_coord, p.y_coord); return; } @@ -700,7 +700,7 @@ Map::Remove(T *obj, bool remove) if( !loaded(GridPair(cell.data.Part.grid_x, cell.data.Part.grid_y)) ) return; - DEBUG_LOG("Remove object " I64FMTD " from grid[%u,%u]", obj->GetGUID(), cell.data.Part.grid_x, cell.data.Part.grid_y); + DEBUG_LOG("Remove object " I64FMT " from grid[%u,%u]", obj->GetGUID(), cell.data.Part.grid_x, cell.data.Part.grid_y); NGridType *grid = getNGrid(cell.GridX(), cell.GridY()); assert( grid != NULL ); @@ -954,7 +954,7 @@ bool Map::UnloadGrid(const uint32 &x, const uint32 &y, bool pForce) if (i_InstanceId == 0) { if(GridMaps[gx][gy]) delete (GridMaps[gx][gy]); - // x and y are swaped + // x and y are swapped VMAP::VMapFactory::createOrGetVMapManager()->unloadMap(GetId(), gy, gx); } else diff --git a/src/game/MovementHandler.cpp b/src/game/MovementHandler.cpp index 13b987610..59d71c31b 100644 --- a/src/game/MovementHandler.cpp +++ b/src/game/MovementHandler.cpp @@ -364,7 +364,7 @@ void WorldSession::HandleMovementOpcodes( WorldPacket & recv_data ) data.append(recv_data.contents(), recv_data.size()); GetPlayer()->SendMessageToSet(&data, false); - if(!_player->GetCharmGUID()) + if(!_player->GetCharmGUID()) // nothing is charmed { _player->SetPosition(movementInfo.x, movementInfo.y, movementInfo.z, movementInfo.o); _player->m_movementInfo = movementInfo; @@ -372,12 +372,13 @@ void WorldSession::HandleMovementOpcodes( WorldPacket & recv_data ) } else { - if(mover->GetTypeId() != TYPEID_PLAYER) + if(mover->GetTypeId() != TYPEID_PLAYER) // unit, creature, pet, vehicle... { - mover->Relocate(movementInfo.x, movementInfo.y, movementInfo.z, movementInfo.o); + if(Map *map = mover->GetMap()) + map->CreatureRelocation((Creature*)mover, movementInfo.x, movementInfo.y, movementInfo.z, movementInfo.o); mover->SetUnitMovementFlags(MovementFlags); } - else + else // player { ((Player*)mover)->SetPosition(movementInfo.x, movementInfo.y, movementInfo.z, movementInfo.o); ((Player*)mover)->m_movementInfo = movementInfo; diff --git a/src/game/Pet.cpp b/src/game/Pet.cpp index 4838ac098..d31585995 100644 --- a/src/game/Pet.cpp +++ b/src/game/Pet.cpp @@ -517,7 +517,7 @@ void Pet::Update(uint32 diff) { // unsummon pet that lost owner Unit* owner = GetOwner(); - if(!owner || !IsWithinDistInMap(owner, OWNER_MAX_DISTANCE) || isControlled() && !owner->GetPetGUID()) + if(!owner || (!IsWithinDistInMap(owner, OWNER_MAX_DISTANCE) && (owner->GetCharmGUID() && (owner->GetCharmGUID() != GetGUID()))) || (isControlled() && !owner->GetPetGUID())) { Remove(PET_SAVE_NOT_IN_SLOT, true); return; diff --git a/src/game/Player.cpp b/src/game/Player.cpp index 606d1e7bf..36fba438e 100644 --- a/src/game/Player.cpp +++ b/src/game/Player.cpp @@ -1222,7 +1222,7 @@ void Player::Update( uint32 p_time ) SendUpdateToOutOfRangeGroupMembers(); Pet* pet = GetPet(); - if(pet && !IsWithinDistInMap(pet, OWNER_MAX_DISTANCE)) + if(pet && !IsWithinDistInMap(pet, OWNER_MAX_DISTANCE) && (GetCharmGUID() && (pet->GetGUID() != GetCharmGUID()))) { RemovePet(pet, PET_SAVE_NOT_IN_SLOT, true); return; @@ -15889,8 +15889,8 @@ void Player::RemovePet(Pet* pet, PetSaveMode mode, bool returnreagent) m_guardianPets.erase(pet->GetGUID()); break; default: - if(GetPetGUID()==pet->GetGUID()) - SetPet(0); + if(GetPetGUID() == pet->GetGUID()) + SetPet(NULL); break; } diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index e775150e1..ab4e4544a 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -2983,19 +2983,30 @@ void Aura::HandleModPossessPet(bool apply, bool Real) return; Unit* caster = GetCaster(); - if(!caster || caster->GetTypeId() != TYPEID_PLAYER) - return; - if(caster->GetPet() != m_target) + Pet *pet = caster->GetPet(); + if(!pet || (pet != m_target) || !caster || (caster->GetTypeId() != TYPEID_PLAYER)) return; if(apply) - m_target->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_UNKNOWN5); + pet->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_UNKNOWN5); else - m_target->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_UNKNOWN5); + pet->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_UNKNOWN5); - ((Player*)caster)->SetFarSight(apply ? m_target->GetGUID() : NULL); - ((Player*)caster)->SetCharm(apply ? m_target : NULL); - ((Player*)caster)->SetClientControl(m_target, apply ? 1 : 0); + ((Player*)caster)->SetFarSight(apply ? pet->GetGUID() : NULL); + ((Player*)caster)->SetCharm(apply ? pet : NULL); + ((Player*)caster)->SetClientControl(pet, apply ? 1 : 0); + + if(apply) + { + pet->StopMoving(); + pet->GetMotionMaster()->Clear(); + pet->GetMotionMaster()->MoveIdle(); + } + else + { + pet->AttackStop(); + pet->GetMotionMaster()->MoveFollow(caster, PET_FOLLOW_DIST, PET_FOLLOW_ANGLE); + } } void Aura::HandleModCharm(bool apply, bool Real) diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 8344bc0da..05246322c 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -4133,7 +4133,7 @@ void Unit::RemoveAura(AuraMap::iterator &i, AuraRemoveMode mode) m_Auras.erase(i); ++m_removedAuras; // internal count used by unit update - // Status unsummoned at aura remove + // Statue unsummoned at aura remove Totem* statue = NULL; if(IsChanneledSpell(Aur->GetSpellProto())) if(Unit* caster = Aur->GetCaster())