mirror of
https://github.com/liyunfan1223/azerothcore-wotlk.git
synced 2026-08-08 15:58:04 +00:00
fix(Core): Crashfix. (#15338)
This commit is contained in:
@@ -19956,17 +19956,27 @@ void Unit::_ExitVehicle(Position const* exitPosition)
|
|||||||
pos = *exitPosition;
|
pos = *exitPosition;
|
||||||
|
|
||||||
// HACK
|
// HACK
|
||||||
if (vehicle->GetVehicleInfo()->m_ID == 380) // Kologarn right arm
|
VehicleEntry const* vehicleInfo = vehicle->GetVehicleInfo();
|
||||||
pos.Relocate(1776.0f, -24.0f, 448.75f, 0.0f);
|
if (vehicleInfo)
|
||||||
else if (vehicle->GetVehicleInfo()->m_ID == 91) // Helsman's Ship
|
|
||||||
pos.Relocate(2802.18f, 7054.91f, -0.6f, 4.67f);
|
|
||||||
else if (vehicle->GetVehicleInfo()->m_ID == 349) // AT Mounts, dismount to the right
|
|
||||||
{
|
{
|
||||||
float x = pos.GetPositionX() + 2.0f * cos(pos.GetOrientation() - M_PI / 2.0f);
|
if (vehicleInfo->m_ID == 380) // Kologarn right arm
|
||||||
float y = pos.GetPositionY() + 2.0f * std::sin(pos.GetOrientation() - M_PI / 2.0f);
|
{
|
||||||
float z = GetMapHeight(x, y, pos.GetPositionZ());
|
pos.Relocate(1776.0f, -24.0f, 448.75f, 0.0f);
|
||||||
if (z > INVALID_HEIGHT)
|
}
|
||||||
pos.Relocate(x, y, z);
|
else if (vehicleInfo->m_ID == 91) // Helsman's Ship
|
||||||
|
{
|
||||||
|
pos.Relocate(2802.18f, 7054.91f, -0.6f, 4.67f);
|
||||||
|
}
|
||||||
|
else if (vehicleInfo->m_ID == 349) // AT Mounts, dismount to the right
|
||||||
|
{
|
||||||
|
float x = pos.GetPositionX() + 2.0f * cos(pos.GetOrientation() - M_PI / 2.0f);
|
||||||
|
float y = pos.GetPositionY() + 2.0f * std::sin(pos.GetOrientation() - M_PI / 2.0f);
|
||||||
|
float z = GetMapHeight(x, y, pos.GetPositionZ());
|
||||||
|
if (z > INVALID_HEIGHT)
|
||||||
|
{
|
||||||
|
pos.Relocate(x, y, z);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
AddUnitState(UNIT_STATE_MOVE);
|
AddUnitState(UNIT_STATE_MOVE);
|
||||||
@@ -19986,7 +19996,7 @@ void Unit::_ExitVehicle(Position const* exitPosition)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// xinef: hack for flameleviathan seat vehicle
|
// xinef: hack for flameleviathan seat vehicle
|
||||||
if (vehicle->GetVehicleInfo()->m_ID != 341)
|
if (!vehicleInfo || vehicleInfo->m_ID != 341)
|
||||||
{
|
{
|
||||||
Movement::MoveSplineInit init(this);
|
Movement::MoveSplineInit init(this);
|
||||||
init.MoveTo(pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ());
|
init.MoveTo(pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ());
|
||||||
@@ -20008,16 +20018,18 @@ void Unit::_ExitVehicle(Position const* exitPosition)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// xinef: move fall, should we support all creatures that exited vehicle in air? Currently Quest Drag and Drop only, Air Assault quest
|
// xinef: move fall, should we support all creatures that exited vehicle in air? Currently Quest Drag and Drop only, Air Assault quest
|
||||||
if (GetTypeId() == TYPEID_UNIT && !CanFly() &&
|
if (GetTypeId() == TYPEID_UNIT && !CanFly() && vehicleInfo && (vehicleInfo->m_ID == 113 || vehicleInfo->m_ID == 8 || vehicleInfo->m_ID == 290 || vehicleInfo->m_ID == 298))
|
||||||
(vehicle->GetVehicleInfo()->m_ID == 113 || vehicle->GetVehicleInfo()->m_ID == 8 || vehicle->GetVehicleInfo()->m_ID == 290 || vehicle->GetVehicleInfo()->m_ID == 298))
|
{
|
||||||
GetMotionMaster()->MoveFall();
|
GetMotionMaster()->MoveFall();
|
||||||
//GetMotionMaster()->MoveFall(); // Enable this once passenger positions are calculater properly (see above)
|
}
|
||||||
|
|
||||||
if ((!player || !(player->GetDelayedOperations() & DELAYED_VEHICLE_TELEPORT)) && vehicle->GetBase()->HasUnitTypeMask(UNIT_MASK_MINION))
|
if ((!player || !(player->GetDelayedOperations() & DELAYED_VEHICLE_TELEPORT)) && vehicle->GetBase()->HasUnitTypeMask(UNIT_MASK_MINION))
|
||||||
if (((Minion*)vehicleBase)->GetOwner() == this)
|
if (((Minion*)vehicleBase)->GetOwner() == this)
|
||||||
{
|
{
|
||||||
if (vehicle->GetVehicleInfo()->m_ID != 349)
|
if (!vehicleInfo || vehicleInfo->m_ID != 349)
|
||||||
|
{
|
||||||
vehicle->Dismiss();
|
vehicle->Dismiss();
|
||||||
|
}
|
||||||
else if (vehicleBase->GetTypeId() == TYPEID_UNIT)
|
else if (vehicleBase->GetTypeId() == TYPEID_UNIT)
|
||||||
{
|
{
|
||||||
vehicle->Uninstall();
|
vehicle->Uninstall();
|
||||||
|
|||||||
Reference in New Issue
Block a user