Core/Creatures: Taxi improvements
* Fixed flight master minimap icon * Fixed crash on Argus * Implemented teleport taxi nodes Port From (https://github.com/TrinityCore/TrinityCore/commit/73e0b3e77c04a7821f58d79211f344b9129602f1)
This commit is contained in:
@@ -750,17 +750,27 @@ namespace Game
|
||||
TaxiNodesRecord curDestNode = CliDB.TaxiNodesStorage.LookupByKey(curDest);
|
||||
|
||||
// far teleport case
|
||||
if (curDestNode != null && curDestNode.ContinentID != GetPlayer().GetMapId() && GetPlayer().GetMotionMaster().GetCurrentMovementGeneratorType() == MovementGeneratorType.Flight)
|
||||
if (GetPlayer().GetMotionMaster().GetCurrentMovementGeneratorType() == MovementGeneratorType.Flight)
|
||||
{
|
||||
FlightPathMovementGenerator flight = GetPlayer().GetMotionMaster().GetCurrentMovementGenerator() as FlightPathMovementGenerator;
|
||||
if (flight != null)
|
||||
{
|
||||
// short preparations to continue flight
|
||||
flight.SetCurrentNodeAfterTeleport();
|
||||
TaxiPathNodeRecord node = flight.GetPath()[(int)flight.GetCurrentNode()];
|
||||
flight.SkipCurrentNode();
|
||||
bool shouldTeleport = curDestNode != null && curDestNode.ContinentID != GetPlayer().GetMapId();
|
||||
if (!shouldTeleport)
|
||||
{
|
||||
var currentNode = flight.GetPath()[(int)flight.GetCurrentNode()];
|
||||
shouldTeleport = currentNode.Flags.HasFlag(TaxiPathNodeFlags.Teleport);
|
||||
}
|
||||
|
||||
GetPlayer().TeleportTo(curDestNode.ContinentID, node.Loc.X, node.Loc.Y, node.Loc.Z, GetPlayer().GetOrientation());
|
||||
if (shouldTeleport)
|
||||
{
|
||||
// short preparations to continue flight
|
||||
flight.SetCurrentNodeAfterTeleport();
|
||||
var node = flight.GetPath()[(int)flight.GetCurrentNode()];
|
||||
flight.SkipCurrentNode();
|
||||
|
||||
GetPlayer().TeleportTo(curDestNode.ContinentID, node.Loc.X, node.Loc.Y, node.Loc.Z, GetPlayer().GetOrientation());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user