diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/game/Debugcmds.cpp | 2 | ||||
-rw-r--r-- | src/game/MiscHandler.cpp | 2 | ||||
-rw-r--r-- | src/game/MovementHandler.cpp | 10 | ||||
-rw-r--r-- | src/game/Player.cpp | 4 | ||||
-rw-r--r-- | src/game/SpellEffects.cpp | 2 | ||||
-rw-r--r-- | src/game/Unit.cpp | 4 |
6 files changed, 9 insertions, 15 deletions
diff --git a/src/game/Debugcmds.cpp b/src/game/Debugcmds.cpp index 940edeb74c2..1febf06638c 100644 --- a/src/game/Debugcmds.cpp +++ b/src/game/Debugcmds.cpp @@ -718,7 +718,7 @@ bool ChatHandler::HandleDebugEnterVehicle(const char * args) if(!passenger || passenger == target) return false; - ((Vehicle*)target)->AddPassenger(passenger); + passenger->EnterVehicle(target); PSendSysMessage("Creature entered vehicle"); return true; diff --git a/src/game/MiscHandler.cpp b/src/game/MiscHandler.cpp index ce86026af90..2fdee922446 100644 --- a/src/game/MiscHandler.cpp +++ b/src/game/MiscHandler.cpp @@ -1697,7 +1697,7 @@ void WorldSession::HandleSpellClick( WorldPacket & recv_data ) return; } - vehicle->AddPassenger(_player); + _player->EnterVehicle(vehicle); } void WorldSession::HandleInspectAchievements( WorldPacket & recv_data ) diff --git a/src/game/MovementHandler.cpp b/src/game/MovementHandler.cpp index c400e1f23fc..9a2f119cb42 100644 --- a/src/game/MovementHandler.cpp +++ b/src/game/MovementHandler.cpp @@ -475,12 +475,7 @@ void WorldSession::HandleDismissControlledVehicle(WorldPacket &recv_data) MovementInfo mi; ReadMovementInfo(recv_data, &mi); _player->m_movementInfo = mi; - - // using charm guid, because we don't have vehicle guid... - if(Vehicle *vehicle = ObjectAccessor::GetVehicle(vehicleGUID)) - { - vehicle->RemovePassenger(_player); - } + _player->ExitVehicle(); } void WorldSession::HandleChangeSeatsOnControlledVehicle(WorldPacket &recv_data) @@ -519,8 +514,7 @@ void WorldSession::HandleRequestVehicleExit(WorldPacket &recv_data) { sLog.outDebug("WORLD: Recvd CMSG_REQUEST_VEHICLE_EXIT"); recv_data.hexlike(); - if(GetPlayer()->m_Vehicle) - GetPlayer()->m_Vehicle->RemovePassenger(GetPlayer()); + GetPlayer()->ExitVehicle(); } void WorldSession::HandleMountSpecialAnimOpcode(WorldPacket& /*recvdata*/) diff --git a/src/game/Player.cpp b/src/game/Player.cpp index 937b92a47b1..1f6a461a0b9 100644 --- a/src/game/Player.cpp +++ b/src/game/Player.cpp @@ -16569,6 +16569,8 @@ void Player::RemovePet(Pet* pet, PetSaveMode mode, bool returnreagent) void Player::StopCastingCharm() { + ExitVehicle(); + Unit* charm = GetCharm(); if(!charm) return; @@ -16577,8 +16579,6 @@ void Player::StopCastingCharm() { if(((Creature*)charm)->isPet() && ((Pet*)charm)->getPetType() == POSSESSED_PET) ((Pet*)charm)->Remove(PET_SAVE_AS_DELETED); - else if(((Creature*)charm)->isVehicle()) - ((Vehicle*)charm)->RemovePassenger(this); } if(GetCharmGUID()) { diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index 30b53e9618c..13cb0448088 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -6540,7 +6540,7 @@ void Spell::SummonVehicle(uint32 entry, SummonPropertiesEntry const *properties) if(damage) { m_caster->CastSpell(vehicle, damage, true); - vehicle->AddPassenger(m_caster); + m_caster->EnterVehicle(vehicle); } } diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 7dec93b881e..4288ce1e58f 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -10206,7 +10206,7 @@ void Unit::setDeathState(DeathState s) UnsummonAllTotems(); RemoveAllControlled(); RemoveAllAurasOnDeath(); - if(m_Vehicle) m_Vehicle->RemovePassenger(this); + ExitVehicle(); //This is needed to clear visible auras after unit dies ModifyAuraState(AURA_STATE_HEALTHLESS_20_PERCENT, false); @@ -11172,7 +11172,7 @@ void Unit::RemoveFromWorld() RemoveCharmAuras(); RemoveBindSightAuras(); RemoveNotOwnSingleTargetAuras(); - if(m_Vehicle) m_Vehicle->RemovePassenger(this); + ExitVehicle(); if(GetCharmerGUID()) sLog.outCrash("Unit %u has charmer guid when removed from world", GetEntry()); |