예제 #1
0
        public void Execute(GameClients.GameClient Session, Rooms.Room Room, string[] Params)
        {
            #region Variables
            RoomUser  User      = Session.GetRoomUser();
            Group     Group     = GroupManager.GetJob(Session.GetRoleplay().JobId);
            GroupRank GroupRank = GroupManager.GetJobRank(Session.GetRoleplay().JobId, Session.GetRoleplay().JobRank);
            #endregion

            #region Conditions
            if (User == null)
            {
                return;
            }

            if (Params.Length == 1)
            {
                Session.SendWhisper("Digite [:servir (item)]! Você só pode servir os seguintes itens: " + FoodManager.GetServableItems(Session) + "!", 1);
                return;
            }

            string FoodName = Params[1].ToString();
            Food   Food     = FoodManager.GetFoodAndDrink(FoodName);

            if (!Session.GetRoleplay().IsWorking)
            {
                Session.SendWhisper("Você deve estar trabalhando para fazer isso!", 1);
                return;
            }

            if (Session.GetRoleplay().IsDead)
            {
                Session.SendWhisper("Você não pode servir alimentos ou bebidas enquanto está morto!", 1);
                return;
            }

            if (Session.GetRoleplay().IsJailed)
            {
                Session.SendWhisper("Você não pode servir alimentos ou bebidas enquanto está preso!", 1);
                return;
            }

            if (!GroupManager.HasJobCommand(Session, "serve"))
            {
                Session.SendWhisper("Você não tem permissão para usar este comando!", 1);
                return;
            }

            if (!GroupRank.CanWorkHere(Session.GetHabbo().CurrentRoomId))
            {
                Session.SendWhisper("Você não trabalha aqui! Seu(s) quarto de trabalho é [Quarto ID(s): " + String.Join(",", GroupRank.WorkRooms) + "]", 1);
                return;
            }

            if (Food == null)
            {
                Session.SendWhisper("Este não é um tipo de alimento ou bebida válido! Você só pode servir: " + FoodManager.GetServableItems(Session) + "!", 1);
                return;
            }

            if (!FoodManager.CanServe(User))
            {
                Session.SendWhisper("Encontre uma mesa agradável para servir!", 1);
                return;
            }

            if (Food.Type == "food" && !GroupManager.HasJobCommand(Session, "food"))
            {
                Session.SendWhisper("Desculpe! Você só pode servir: " + FoodManager.GetServableItems(Session) + "!", 1);
                return;
            }

            if (Food.Type == "drink" && !GroupManager.HasJobCommand(Session, "drinks"))
            {
                Session.SendWhisper("Desculpe! Você só pode servir: " + FoodManager.GetServableItems(Session) + "!", 1);
                return;
            }

            if (!Food.Servable)
            {
                if (Food.Type == "drink")
                {
                    Session.SendWhisper("Desculpe! Você só pode servir: " + FoodManager.GetServableItems(Session) + "!", 1);
                }
                else
                {
                    Session.SendWhisper("Desculpe! Você só pode servir: " + FoodManager.GetServableItems(Session) + "!", 1);
                }
                return;
            }
            #endregion

            #region Execute
            double MaxHeight = 0.0;
            Item   ItemInFront;
            if (Room.GetGameMap().GetHighestItemForSquare(User.SquareInFront, out ItemInFront))
            {
                if (ItemInFront != null)
                {
                    MaxHeight = ItemInFront.TotalHeight;
                }
            }

            Session.Shout(Food.ServeText, 4);
            RoleplayManager.PlaceItemToRoom(Session, Food.ItemId, 0, User.SquareInFront.X, User.SquareInFront.Y, MaxHeight, User.RotBody, false, Room.Id, false, Food.ExtraData, true);
            #endregion
        }
예제 #2
0
        public override void HandleRequest(GameClient Client, string Message)
        {
            if (!OnDuty)
            {
                return;
            }

            if (RespondToSpeech(Client, Message))
            {
                return;
            }

            string Name          = GetBotRoleplay().Name.ToLower();
            var    ServableFoods = FoodManager.GetServableBotItems("food");

            #region Serving Food
            if (Message.ToLower().Contains("serve") && Message.ToLower() != "serve")
            {
                string[] Params = Message.Split(' ');

                if (Params.Length == 1)
                {
                    return;
                }
                else
                {
                    if (Client.GetRoleplay().Hunger <= 0)
                    {
                        string WhisperMessage = "Você não parece com fome " + Client.GetHabbo().Username + "!";
                        Client.SendMessage(new WhisperComposer(GetRoomUser().VirtualId, WhisperMessage, 0, 2));
                        return;
                    }

                    if (GetBotRoleplay().WalkingToItem)
                    {
                        string WhisperMessage = "Eu já estou servindo alguém! Espera aí.";
                        Client.SendMessage(new WhisperComposer(GetRoomUser().VirtualId, WhisperMessage, 0, 2));
                        return;
                    }

                    string DesiredFood = Params[1].ToLower();
                    var    Food        = FoodManager.GetFood(DesiredFood);

                    if (Food == null)
                    {
                        string WhisperMessage = "Este alimento não existe! Digite 'comidas' para ver o que posso lhe fornecer.";
                        Client.SendMessage(new WhisperComposer(GetRoomUser().VirtualId, WhisperMessage, 0, 2));
                    }
                    else
                    {
                        if (FoodManager.CanServe(Client.GetRoomUser()))
                        {
                            BeginServingFood(Food, Client);
                        }
                        else
                        {
                            string WhisperMessage = "Encontre uma mesa vazia para que eu sirva comida para você!";
                            Client.SendMessage(new WhisperComposer(GetRoomUser().VirtualId, WhisperMessage, 0, 2));
                        }
                    }
                }
            }
            #endregion

            else if (Message.ToLower() == Name)
            {
                GetRoomUser().Chat("Sim " + Client.GetHabbo().Username + ", você precisa de algo?", true);
            }
            else
            {
                switch (Message.ToLower())
                {
                    #region Food List
                case "food":
                case "hunger":
                case "serve":
                case "sirva":
                {
                    if (Client.GetRoleplay().Hunger <= 0)
                    {
                        string WhisperMessage = "Você não parece com fome " + Client.GetHabbo().Username + "!";
                        Client.SendMessage(new WhisperComposer(GetRoomUser().VirtualId, WhisperMessage, 0, 2));
                    }
                    else
                    {
                        GetRoomUser().Chat("Bem vindo(a) " + Client.GetHabbo().Username + ", você parece com fome! O que você gostaria de comer?", true);

                        StringBuilder FoodList = new StringBuilder().Append("<----- Comidas Disponíveis ----->\n");
                        FoodList.Append("Para solicitar qualquer uma das comidas, digite 'serve <nome da comida>', esteja em uma mesa vazia!\n\n");

                        foreach (var Food in ServableFoods.OrderBy(x => x.Cost))
                        {
                            if (Food != null)
                            {
                                string RealName = Food.Name.Substring(0, 1).ToUpper() + Food.Name.Substring(1);

                                FoodList.Append("<----- " + RealName + " ----->\n");
                                FoodList.Append("Preço: R$" + Food.Cost + " <---> Fome: -" + Food.Hunger + "\n");
                                FoodList.Append("Sangue: +" + Food.Health + " <---> Energia: +" + Food.Energy + "\n\n");
                            }
                        }

                        Client.SendMessage(new MOTDNotificationComposer(FoodList.ToString()));
                    }
                    break;
                }
                    #endregion
                }
            }
        }