aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormegamage <none@none>2009-04-21 14:05:54 -0500
committermegamage <none@none>2009-04-21 14:05:54 -0500
commit297498f1f7343f2c653075a45f36fcb46d833ef0 (patch)
tree03208854e2e66bcca87ab7b9a4e9d18ec54215e2 /src
parente20e65ced9efd11a009fd63bcd4047ecc4bd3e63 (diff)
*Fix the bug that all vehicles are broken.
--HG-- branch : trunk
Diffstat (limited to 'src')
-rw-r--r--src/game/Debugcmds.cpp2
-rw-r--r--src/game/MiscHandler.cpp2
-rw-r--r--src/game/MovementHandler.cpp10
-rw-r--r--src/game/Player.cpp4
-rw-r--r--src/game/SpellEffects.cpp2
-rw-r--r--src/game/Unit.cpp4
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());