/// <summary> /// Sends the given Character on the given Path. /// </summary> /// <param name="chr">The Character to fly around.</param> /// <param name="destinations">An array of destination TaxiNodes.</param> /// <returns>Whether the client was sent on its way.</returns> internal static bool TryFly(Character chr, NPC vendor, PathNode[] destinations) { var client = chr.Client; if (vendor == null && chr.Role.IsStaff) { var dest = destinations.LastOrDefault(); if (dest != null) { chr.TeleportTo(dest); return true; } return false; } if (vendor == null || !vendor.CheckVendorInteraction(chr)) { TaxiHandler.SendActivateTaxiReply(client, TaxiActivateResponse.NotAvailable); } else if (PreFlightCheatChecks(client, destinations) && PreFlightValidPathCheck(client, destinations) && (client.ActiveCharacter.GodMode || PreFlightMoneyCheck(client))) { // All good, send an "All Good" reply to the client. TaxiHandler.SendActivateTaxiReply(client, TaxiActivateResponse.Ok); // PvP flag is auto-cleared when starting a taxi-flight chr.UpdatePvPState(false, true); FlyUnit(chr, true); return true; } return false; }