/// <summary> /// Called when the living is about to get an item from someone /// else /// </summary> /// <param name="source">Source from where to get the item</param> /// <param name="item">Item to get</param> /// <returns>true if the item was successfully received</returns> public override bool ReceiveItem(GameLiving source, InventoryItem item) { if (source == null || item == null) { return(false); } if (source is GamePlayer) { GamePlayer player = (GamePlayer)source; if (item.Name.ToLower().StartsWith(LanguageMgr.GetTranslation(ServerProperties.Properties.DB_LANGUAGE, "GameStableMaster.ReceiveItem.TicketTo")) && item.Item_Type == 40) { foreach (GameNPC npc in GetNPCsInRadius(1500)) { if (npc is GameTaxiBoat) { player.Out.SendMessage(LanguageMgr.GetTranslation(player.Client.Account.Language, "GameBoatStableMaster.ReceiveItem.Departed", Name), eChatType.CT_System, eChatLoc.CL_PopupWindow); return(false); } } string destination = item.Name.Substring(LanguageMgr.GetTranslation(ServerProperties.Properties.DB_LANGUAGE, "GameStableMaster.ReceiveItem.TicketTo").Length); PathPoint path = MovementMgr.LoadPath(item.Id_nb); // PathPoint path = MovementMgr.Instance.LoadPath(this.Name + "=>" + destination); if ((path != null) && (Math.Abs(path.X - X) < 500) && (Math.Abs(path.Y - Y) < 500)) { player.Inventory.RemoveCountFromStack(item, 1); InventoryLogging.LogInventoryAction(player, this, eInventoryActionType.Merchant, item.Template); GameTaxiBoat boat = new GameTaxiBoat(); boat.Name = "Boat to " + destination; boat.Realm = source.Realm; boat.X = path.X; boat.Y = path.Y; boat.Z = path.Z; boat.CurrentRegion = CurrentRegion; boat.Heading = path.GetHeading(path.Next); boat.AddToWorld(); boat.CurrentWayPoint = path; GameEventMgr.AddHandler(boat, GameNPCEvent.PathMoveEnds, new DOLEventHandler(OnHorseAtPathEnd)); // new MountHorseAction(player, boat).Start(400); new HorseRideAction(boat).Start(30 * 1000); player.Out.SendMessage(LanguageMgr.GetTranslation(player.Client.Account.Language, "GameBoatStableMaster.ReceiveItem.SummonedBoat", Name, destination), eChatType.CT_System, eChatLoc.CL_SystemWindow); return(true); } else { player.Out.SendMessage(LanguageMgr.GetTranslation(player.Client.Account.Language, "GameBoatStableMaster.ReceiveItem.UnknownWay", Name, destination), eChatType.CT_System, eChatLoc.CL_SystemWindow); } } } return(base.ReceiveItem(source, item)); }
/// <summary> /// Called when the living is about to get an item from someone /// else /// </summary> /// <param name="source">Source from where to get the item</param> /// <param name="item">Item to get</param> /// <returns>true if the item was successfully received</returns> public override bool ReceiveItem(GameLiving source, InventoryItem item) { if (source == null || item == null) return false; if (source is GamePlayer) { GamePlayer player = (GamePlayer)source; if (item.Name.ToLower().StartsWith(LanguageMgr.GetTranslation(ServerProperties.Properties.DB_LANGUAGE, "GameStableMaster.ReceiveItem.TicketTo")) && item.Item_Type == 40) { foreach (GameNPC npc in GetNPCsInRadius(1500)) { if (npc is GameTaxiBoat) { player.Out.SendMessage(LanguageMgr.GetTranslation(player.Client.Account.Language, "GameBoatStableMaster.ReceiveItem.Departed", this.Name), eChatType.CT_System, eChatLoc.CL_PopupWindow); return false; } } String destination = item.Name.Substring(LanguageMgr.GetTranslation(ServerProperties.Properties.DB_LANGUAGE, "GameStableMaster.ReceiveItem.TicketTo").Length); PathPoint path = MovementMgr.LoadPath(item.Id_nb); //PathPoint path = MovementMgr.Instance.LoadPath(this.Name + "=>" + destination); if ((path != null) && ((Math.Abs(path.X - this.X)) < 500) && ((Math.Abs(path.Y - this.Y)) < 500)) { player.Inventory.RemoveCountFromStack(item, 1); InventoryLogging.LogInventoryAction(player, this, eInventoryActionType.Merchant, item.Template); GameTaxiBoat boat = new GameTaxiBoat(); boat.Name = "Boat to " + destination; boat.Realm = source.Realm; boat.X = path.X; boat.Y = path.Y; boat.Z = path.Z; boat.CurrentRegion = CurrentRegion; boat.Heading = path.GetHeading( path.Next ); boat.AddToWorld(); boat.CurrentWayPoint = path; GameEventMgr.AddHandler(boat, GameNPCEvent.PathMoveEnds, new DOLEventHandler(OnHorseAtPathEnd)); //new MountHorseAction(player, boat).Start(400); new HorseRideAction(boat).Start(30 * 1000); player.Out.SendMessage(LanguageMgr.GetTranslation(player.Client.Account.Language, "GameBoatStableMaster.ReceiveItem.SummonedBoat", this.Name, destination), eChatType.CT_System, eChatLoc.CL_SystemWindow); return true; } else { player.Out.SendMessage(LanguageMgr.GetTranslation(player.Client.Account.Language, "GameBoatStableMaster.ReceiveItem.UnknownWay", this.Name, destination), eChatType.CT_System, eChatLoc.CL_SystemWindow); } } } return base.ReceiveItem(source, item); }