public override void OnUserSay(RoomUser RoomUser, string string_0) { RoomUser Pet = base.GetRoomUser(); //TODO: Pet Commands :D if (Pet.RoomBot.RoomUser_0 == null) { if (string_0.ToLower().Equals(Pet.PetData.Name.ToLower())) { Pet.method_9(Rotation.GetRotation(Pet.X, Pet.Y, RoomUser.X, RoomUser.Y)); } else { if (string_0.ToLower().StartsWith(Pet.PetData.Name.ToLower() + " ") && RoomUser.GetClient().GetHabbo().Username.ToLower() == base.GetRoomUser().PetData.OwnerName.ToLower()) { string key = string_0.Substring(Pet.PetData.Name.ToLower().Length + 1); if ((Pet.PetData.Energy >= 10 && this.method_4() < 6) || Pet.PetData.Level >= 15) { Pet.Statusses.Clear(); if (!Essential.GetGame().GetRoleManager().dictionary_5.ContainsKey(key)) { string[] array = new string[] { EssentialEnvironment.GetExternalText("pet_response_confused1"), EssentialEnvironment.GetExternalText("pet_response_confused2"), EssentialEnvironment.GetExternalText("pet_response_confused3"), EssentialEnvironment.GetExternalText("pet_response_confused4"), EssentialEnvironment.GetExternalText("pet_response_confused5"), EssentialEnvironment.GetExternalText("pet_response_confused6"), EssentialEnvironment.GetExternalText("pet_response_confused7") }; Random random = new Random(); Pet.HandleSpeech(null, array[random.Next(0, array.Length - 1)], false); } else { switch (Essential.GetGame().GetRoleManager().dictionary_5[key]) { case 0: // Remove Status RemovePetStatus(); this.SpeechTimer = 0; this.ActionTimer = 0; this.FollowType = FollowType.None; // Add Status Pet.Statusses.Add("sit", TextHandling.GetString(Pet.double_0)); break; case 1: this.ActionTimer = 25; this.FollowType = FollowType.None; // Remove Status RemovePetStatus(); Pet.PetData.AddExpirience(10, -10); // Give XP // Add Status Pet.Statusses.Add("sit", TextHandling.GetString(Pet.double_0)); break; case 2: this.ActionTimer = 30; this.FollowType = FollowType.None; // Remove Status RemovePetStatus(); Pet.PetData.AddExpirience(10, -10); // Give XP // Add Status Pet.Statusses.Add("lay", TextHandling.GetString(Pet.double_0)); break; case 3: this.ActionTimer = 30; this.FollowType = FollowType.None; RemovePetStatus(); int NewX = RoomUser.X; int NewY = RoomUser.Y; #region Rotation if (RoomUser.BodyRotation == 4) { NewY = RoomUser.Y + 1; } else if (RoomUser.BodyRotation == 0) { NewY = RoomUser.Y - 1; } else if (RoomUser.BodyRotation == 6) { NewX = RoomUser.X - 1; } else if (RoomUser.BodyRotation == 2) { NewX = RoomUser.X + 1; } else if (RoomUser.BodyRotation == 3) { NewX = RoomUser.X + 1; NewY = RoomUser.Y + 1; } else if (RoomUser.BodyRotation == 1) { NewX = RoomUser.X + 1; NewY = RoomUser.Y - 1; } else if (RoomUser.BodyRotation == 7) { NewX = RoomUser.X - 1; NewY = RoomUser.Y - 1; } else if (RoomUser.BodyRotation == 5) { NewX = RoomUser.X - 1; NewY = RoomUser.Y + 1; } #endregion Pet.PetData.AddExpirience(11, -10); // Give XP Pet.MoveTo(NewX, NewY); break; case 4: this.ActionTimer = 10; this.FollowType = FollowType.None; //Remove Status RemovePetStatus(); Pet.PetData.AddExpirience(15, -13); // Give XP Pet.Statusses.Add("beg", TextHandling.GetString(Pet.double_0)); break; case 5: this.ActionTimer = 30; this.FollowType = FollowType.None; // Remove Status RemovePetStatus(); // Add Status Pet.Statusses.Add("ded", TextHandling.GetString(Pet.double_0)); Pet.PetData.AddExpirience(20, -18); // Give XP break; case 6: this.ActionTimer = 120; this.FollowType = FollowType.None; // Remove Status RemovePetStatus(); // Add Status Pet.Statusses.Add("sit", TextHandling.GetString(Pet.double_0)); Pet.PetData.AddExpirience(20, -18); // Give XP Pet.MoveTo(Pet.X, Pet.Y); break; case 7: this.ActionTimer = 120; this.FollowType = FollowType.Normal; this.FollowUser = RoomUser; Pet.PetData.AddExpirience(30, -30); // Give XP this.PetFollowUser(RoomUser, Pet, FollowType.Normal); break; case 8: //Stand break; case 9: this.ActionTimer = 5; this.FollowType = FollowType.None; // Remove Status RemovePetStatus(); // Add Status Pet.Statusses.Add("jmp", TextHandling.GetString(Pet.double_0)); Pet.PetData.AddExpirience(35, -30); // Give XP break; case 10: // Remove Status RemovePetStatus(); Pet.PetData.AddExpirience(35, -30); // Give XP this.SpeechTimer = 2; this.FollowType = FollowType.None; break; case 11: //Play break; case 12: // Remove Status RemovePetStatus(); Pet.PetData.AddExpirience(35, -30); // Give XP this.SpeechTimer = 120; this.FollowType = FollowType.None; break; case 13: //Nest Pesä this.ActionTimer = 30; List <RoomItem> Nests = new List <RoomItem>(); foreach (RoomItem PetItem in this.GetRoomUser().GetRoom().Hashtable_0.Values) { if (PetItem.GetBaseItem().InteractionType.ToLower() == "pet_nest") { Nests.Add(PetItem); } } if (Nests.Count == 0) { return; } int PetNX = Nests[new Random().Next(0, Nests.Count - 1)].GetX; int PetNY = Nests[new Random().Next(0, Nests.Count - 1)].Int32_1; Pet.MoveTo(PetNX, PetNY); Nests.Clear(); Nests = null; Pet.PetData.AddExpirience(15, -10); // Give XP break; case 14: //Drink this.ActionTimer = 30; List <RoomItem> Drinks = new List <RoomItem>(); foreach (RoomItem PetItem in this.GetRoomUser().GetRoom().Hashtable_0.Values) { if (PetItem.GetBaseItem().InteractionType.ToLower() == "pet_drink") { Drinks.Add(PetItem); } } if (Drinks.Count == 0) { return; } int PetDX = Drinks[new Random().Next(0, Drinks.Count - 1)].GetX; int PetDY = Drinks[new Random().Next(0, Drinks.Count - 1)].Int32_1; Pet.MoveTo(PetDX, PetDY); Drinks.Clear(); Drinks = null; Pet.PetData.AddExpirience(25, -10); // Give XP break; case 15: this.ActionTimer = 120; this.FollowType = FollowType.Left; this.FollowUser = RoomUser; Pet.PetData.AddExpirience(35, -30); // Give XP this.PetFollowUser(RoomUser, Pet, FollowType.Left); break; case 16: this.FollowType = FollowType.Right; this.FollowUser = RoomUser; Pet.PetData.AddExpirience(35, -30); // Give XP this.PetFollowUser(RoomUser, Pet, FollowType.Right); break; case 17: //Play football break; case 24: //Move forwar break; case 25: //Turn left break; case 26: //Turn right break; case 43: //Eat break; } } } else { string[] array2 = new string[] { EssentialEnvironment.GetExternalText("pet_response_sleeping1"), EssentialEnvironment.GetExternalText("pet_response_sleeping2"), EssentialEnvironment.GetExternalText("pet_response_sleeping3"), EssentialEnvironment.GetExternalText("pet_response_sleeping4"), EssentialEnvironment.GetExternalText("pet_response_sleeping5") }; string[] array3 = new string[] { EssentialEnvironment.GetExternalText("pet_response_refusal1"), EssentialEnvironment.GetExternalText("pet_response_refusal2"), EssentialEnvironment.GetExternalText("pet_response_refusal3"), EssentialEnvironment.GetExternalText("pet_response_refusal4"), EssentialEnvironment.GetExternalText("pet_response_refusal5") }; Pet.int_10 = Pet.int_12; Pet.int_11 = Pet.int_13; Pet.Statusses.Clear(); if (Pet.PetData.Energy < 10) { Random random2 = new Random(); Pet.HandleSpeech(null, array2[random2.Next(0, array2.Length - 1)], false); if (Pet.PetData.Type != 13u) { Pet.Statusses.Add("lay", Pet.double_0.ToString()); } else { Pet.Statusses.Add("lay", (Pet.double_0 - 1.0).ToString()); } this.SpeechTimer = 25; this.ActionTimer = 20; base.GetRoomUser().PetData.PetEnergy(25); } else { Random random2 = new Random(); Pet.HandleSpeech(null, array3[random2.Next(0, array3.Length - 1)], false); } } Pet.UpdateNeeded = true; } } } }