aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormegamage <none@none>2009-05-23 20:41:48 -0500
committermegamage <none@none>2009-05-23 20:41:48 -0500
commit2475390852e23a938110ba79647a2ccc49a8fc86 (patch)
tree2ebaec9b3737e6af11271a3c1a914c3ccb1b42c3 /src
parent27e3352d2b2ba5e372d777203db4550775c2379e (diff)
*Fix a bug that player can change to an occupied seat on vehicle.
(The commit message of the last rev should be: do not allow player to use unusable vehicle seat) --HG-- branch : trunk
Diffstat (limited to 'src')
-rw-r--r--src/game/Debugcmds.cpp22
-rw-r--r--src/game/MovementHandler.cpp7
2 files changed, 18 insertions, 11 deletions
diff --git a/src/game/Debugcmds.cpp b/src/game/Debugcmds.cpp
index 356b2c25ca2..fda50f8b9a6 100644
--- a/src/game/Debugcmds.cpp
+++ b/src/game/Debugcmds.cpp
@@ -739,16 +739,20 @@ bool ChatHandler::HandleDebugEnterVehicle(const char * args)
uint32 entry = (uint32)atoi(i);
int8 seatId = j ? (int8)atoi(j) : -1;
- Creature *passenger = NULL;
- Trinity::AllCreaturesOfEntryInRange check(m_session->GetPlayer(), entry, 20.0f);
- Trinity::CreatureSearcher<Trinity::AllCreaturesOfEntryInRange> searcher(m_session->GetPlayer(), passenger, check);
- m_session->GetPlayer()->VisitNearbyObject(20.0f, searcher);
- if(!passenger || passenger == target)
- return false;
-
- passenger->EnterVehicle((Vehicle*)target, seatId);
+ if(!entry)
+ m_session->GetPlayer()->EnterVehicle((Vehicle*)target, seatId);
+ else
+ {
+ Creature *passenger = NULL;
+ Trinity::AllCreaturesOfEntryInRange check(m_session->GetPlayer(), entry, 20.0f);
+ Trinity::CreatureSearcher<Trinity::AllCreaturesOfEntryInRange> searcher(m_session->GetPlayer(), passenger, check);
+ m_session->GetPlayer()->VisitNearbyObject(30.0f, searcher);
+ if(!passenger || passenger == target)
+ return false;
+ passenger->EnterVehicle((Vehicle*)target, seatId);
+ }
- PSendSysMessage("Creature entered vehicle %d", (uint32)seatId);
+ PSendSysMessage("Unit %u entered vehicle %d", entry, (int32)seatId);
return true;
}
diff --git a/src/game/MovementHandler.cpp b/src/game/MovementHandler.cpp
index 59d0d263227..53aa5923782 100644
--- a/src/game/MovementHandler.cpp
+++ b/src/game/MovementHandler.cpp
@@ -517,9 +517,12 @@ void WorldSession::HandleChangeSeatsOnControlledVehicle(WorldPacket &recv_data)
recv_data >> seatId;
if(!guid)
- GetPlayer()->ChangeSeat(-1, seatId > 0);
+ GetPlayer()->ChangeSeat(-1, seatId > 0); // prev/next
else if(Vehicle *vehicle = ObjectAccessor::GetVehicle(guid))
- GetPlayer()->EnterVehicle(vehicle, seatId);
+ {
+ if(vehicle->HasEmptySeat(seatId))
+ GetPlayer()->EnterVehicle(vehicle, seatId);
+ }
}
void WorldSession::HandleRequestVehicleExit(WorldPacket &recv_data)