/// <summary> /// For arrow keys (websockets) /// </summary> public static Point GetDirectionDeviation(RoomUser User) { if (User == null) { return(new Point(0, 0)); } if (User.GetClient() == null) { return(new Point(0, 0)); } WalkDirections Direction = User.GetClient().GetRoleplay().WalkDirection; Point Deviation = new Point(User.Coordinate.X, User.Coordinate.Y); if (Direction == WalkDirections.Up) { Deviation = new Point(User.Coordinate.X - 2, User.Coordinate.Y); if (!User.GetRoom().GetGameMap().IsValidStep(new Vector2D(User.X, User.Y), new Vector2D(Deviation.X, Deviation.Y), (User.GoalX == Deviation.X && User.GoalY == User.SetY), User.AllowOverride)) { Deviation = new Point(User.Coordinate.X - 1, User.Coordinate.Y); } } else if (Direction == WalkDirections.Down) { Deviation = new Point(User.Coordinate.X + 2, User.Coordinate.Y); if (!User.GetRoom().GetGameMap().IsValidStep(new Vector2D(User.X, User.Y), new Vector2D(Deviation.X, Deviation.Y), (User.GoalX == Deviation.X && User.GoalY == User.SetY), User.AllowOverride)) { Deviation = new Point(User.Coordinate.X + 1, User.Coordinate.Y); } } else if (Direction == WalkDirections.Right) { Deviation = new Point(User.Coordinate.X, User.Coordinate.Y - 2); if (!User.GetRoom().GetGameMap().IsValidStep(new Vector2D(User.X, User.Y), new Vector2D(Deviation.X, Deviation.Y), (User.GoalX == Deviation.X && User.GoalY == User.SetY), User.AllowOverride)) { Deviation = new Point(User.Coordinate.X, User.Coordinate.Y - 1); } } else if (Direction == WalkDirections.Left) { Deviation = new Point(User.Coordinate.X, User.Coordinate.Y + 2); if (!User.GetRoom().GetGameMap().IsValidStep(new Vector2D(User.X, User.Y), new Vector2D(Deviation.X, Deviation.Y), (User.GoalX == Deviation.X && User.GoalY == User.SetY), User.AllowOverride)) { Deviation = new Point(User.Coordinate.X, User.Coordinate.Y + 1); } } return(Deviation); }
public static bool TransportDeployedBot(RoomUser RoleplayBot, int NewRoomID, bool SaveDataToCache = true) { if (RoleplayBot == null) { return(false); } if (RoleplayBot.GetBotRoleplay() == null) { return(false); } int BotsID = RoleplayBot.GetBotRoleplay().Id; try { Room NewRoom; if (RoleplayManager.GenerateRoom(NewRoomID, false) == null) { return(false); } else { NewRoom = RoleplayManager.GenerateRoom(NewRoomID, false); } RoleplayBotManager.EjectDeployedBot(RoleplayBot, RoleplayBot.GetRoom(), SaveDataToCache); RoleplayBotManager.DeployBotByID(BotsID, "default", NewRoom.Id); //Console.WriteLine("Transfered bot " + RoleplayBotManager.GetDeployedBotById(BotsID).GetBotRoleplay().Name + " to [" + NewRoom.Id + "] " + NewRoom.Name); return(true); } catch (Exception ex) { RoleplayBotManager.OnError(ex.Message); return(false); } }
public void method_87(RoomUser User, bool bool_13, bool bool_14) { int num = 0; try { if (User != null) { if (User.GetRoom().IsPublic) { if (Essential.GetGame().GetRoomManager().ContainsMagicTile(User.GetRoom().Id, User.X, User.Y)) { MagicTile TaikaLaatta = Essential.GetGame().GetRoomManager().GetMagicTile(User.GetRoom().Id, User.X, User.Y); if (TaikaLaatta.Action == "WARP") { ServerMessage Message = new ServerMessage(Outgoing.RoomForward); // Updated Message.AppendBoolean(true); Message.AppendInt32(TaikaLaatta.NextRoomId); User.GetClient().SendMessage(Message); if (TaikaLaatta.NextX > 0) { User.GetClient().GetHabbo().UsedWarpTile = true; User.GetClient().GetHabbo().NextRoomId = TaikaLaatta.NextRoomId; User.GetClient().GetHabbo().NextX = TaikaLaatta.NextX; User.GetClient().GetHabbo().NextY = TaikaLaatta.NextY; User.GetClient().GetHabbo().NextZ = TaikaLaatta.NextZ; User.GetClient().GetHabbo().NextRot = TaikaLaatta.NextRot; } } else if (TaikaLaatta.Action == "REMOVE_SWIM") { if (User.Statusses.ContainsKey("swim")) { User.Statusses.Remove("swim"); User.UpdateNeeded = true; } } else if (TaikaLaatta.Action == "TAKE_SWIM") { if (User.Statusses.ContainsKey("swim")) { User.Statusses.Remove("swim"); } if (User.Statusses.ContainsKey("sign")) { User.Statusses.Remove("sign"); } User.Statusses.Add("swim", ""); User.UpdateNeeded = true; } } } num = 1; if (User.IsPet) { User.PetData.X = User.X; User.PetData.Y = User.Y; User.PetData.Z = User.double_0; } else { if (User.IsBot) { User.RoomBot.x = User.X; User.RoomBot.y = User.Y; User.RoomBot.z = User.double_0; } else { if (User.class34_1 != null && User.RoomUser_0 != null) { return; } } } num = 2; if (!User.bool_12) { User.UpdateNeeded = false; } else { num = 3; if (bool_13) { num = 4; if (User.byte_1 > 0) { num = 5; if (User.IsBot) { if (this.byte_1[User.X, User.Y] == 0) { User.RoomBot.EffectId = -1; User.byte_1 = 0; } } else { num = 6; if ((User.GetClient().GetHabbo().Gender.ToLower() == "m" && this.byte_1[User.X, User.Y] == 0) || (User.GetClient().GetHabbo().Gender.ToLower() == "f" && this.byte_2[User.X, User.Y] == 0)) { User.GetClient().GetHabbo().GetEffectsInventoryComponent().method_2(-1, true); User.byte_1 = 0; } } } num = 7; if (User.Statusses.ContainsKey("lay") || User.Statusses.ContainsKey("sit")) { User.Statusses.Remove("lay"); User.Statusses.Remove("sit"); User.UpdateNeeded = true; } List<RoomItem> list = this.method_93(User.X, User.Y); SquarePoint spoint = new SquarePoint(0, 0, 0, 0, 0, false, false, list, User.double_0, this.GetRoomUsersBySquare(User.X, User.Y), this); double num2 = spoint.WalkUnder ? spoint.SmallestZ(User.double_0) : this.method_84(User.X, User.Y, list); if (num2 != User.double_0) { User.double_0 = num2; User.UpdateNeeded = true; } num = 8; if (this.RoomModel.squareState[User.X, User.Y] == SquareState.GROUPGATE) { foreach (DataRow dataRow in User.GetClient().GetHabbo().dataTable_0.Rows) { foreach (RoomItem item in list) { if (item.GetBaseItem().Name == "gld_gate") { if ((int)dataRow["groupid"] == int.Parse(item.GuildData)) { item.ExtraData = "1"; item.UpdateState(false, true); } } } } } SquarePoint spoint2 = new SquarePoint(0, 0, 0, 0, 0, false, false, this.method_93(User.X, User.Y), User.double_0, this.GetRoomUsersBySquare(User.X, User.Y), this); if (this.RoomModel.squareState[User.X, User.Y] == SquareState.SEAT && !spoint2.WalkUnder) { if (!User.Statusses.ContainsKey("sit")) { User.Statusses.Add("sit", "1.0"); if (User.byte_1 > 0) { if (!User.IsBot) { User.GetClient().GetHabbo().GetEffectsInventoryComponent().method_2(-1, true); } else { User.RoomBot.EffectId = -1; } User.byte_1 = 0; } num = 9; User.double_0 = this.RoomModel.double_1[User.X, User.Y]; User.int_7 = this.RoomModel.int_3[User.X, User.Y]; User.BodyRotation = this.RoomModel.int_3[User.X, User.Y]; if (User.IsBot && User.RoomBot.RoomUser_0 != null) { User.RoomBot.RoomUser_0.double_0 = User.double_0 + 1.0; User.RoomBot.RoomUser_0.int_7 = User.int_7; User.RoomBot.RoomUser_0.BodyRotation = User.BodyRotation; } User.UpdateNeeded = true; } } if (list.Count < 1 && this.list_4.Contains(User.UId)) { User.GetClient().GetHabbo().GetEffectsInventoryComponent().method_2(-1, false); this.list_4.Remove(User.UId); User.int_14 = 0; User.UpdateNeeded = true; } num = 10; lock (list) { foreach (RoomItem Item in list) { num = 11; if (Item.GetBaseItem().IsSeat && (!User.IsPet || User.RoomBot.RoomUser_0 == null) && !spoint2.WalkUnder) { if (!User.Statusses.ContainsKey("sit")) { double num3; try { if (Item.GetBaseItem().Height_Adjustable.Count > 1) { num3 = Item.GetBaseItem().Height_Adjustable[(int)Convert.ToInt16(Item.ExtraData)]; } else { num3 = Item.GetBaseItem().Height; } goto IL_BCA; } catch { num3 = Item.GetBaseItem().Height; goto IL_BCA; } IL_51B: if (User.byte_1 > 0) { if (!User.IsBot) { User.GetClient().GetHabbo().GetEffectsInventoryComponent().method_2(-1, true); } else { User.RoomBot.EffectId = -1; } User.byte_1 = 0; goto IL_55D; } goto IL_55D; IL_BCA: if (User.Statusses.ContainsKey("sit")) { goto IL_51B; } try { //It's not that bad if it fails to sit.. You shouldn't crash the whole room with it!! User.Statusses.Add("sit", num3.ToString().Replace(',', '.')); } catch { } goto IL_51B; } IL_55D: User.double_0 = Item.Double_0; User.int_7 = Item.int_3; User.BodyRotation = Item.int_3; if (User.IsBot && User.RoomBot.RoomUser_0 != null) { User.RoomBot.RoomUser_0.double_0 = User.double_0 + 1.0; User.RoomBot.RoomUser_0.int_7 = User.int_7; User.RoomBot.RoomUser_0.BodyRotation = User.BodyRotation; } User.UpdateNeeded = true; } num = 12; if (Item.GetBaseItem().InteractionType.ToLower() == "bed") { if (!User.Statusses.ContainsKey("lay")) { double num3; try { if (Item.GetBaseItem().Height_Adjustable.Count > 1) { num3 = Item.GetBaseItem().Height_Adjustable[(int)Convert.ToInt16(Item.ExtraData)]; } else { num3 = Item.GetBaseItem().Height; } } catch { num3 = Item.GetBaseItem().Height; } if (!User.Statusses.ContainsKey("lay")) { User.Statusses.Add("lay", Item.GetBaseItem().Height.ToString().Replace(',', '.') + " null"); } if (User.byte_1 > 0) { if (!User.IsBot) { User.GetClient().GetHabbo().GetEffectsInventoryComponent().method_2(-1, true); } else { User.RoomBot.EffectId = -1; } User.byte_1 = 0; } } User.double_0 = Item.Double_0; User.int_7 = Item.int_3; User.BodyRotation = Item.int_3; if (User.IsBot && User.RoomBot.RoomUser_0 != null) { User.RoomBot.RoomUser_0.double_0 = User.double_0 + 1.0; User.RoomBot.RoomUser_0.int_7 = User.int_7; User.RoomBot.RoomUser_0.BodyRotation = User.BodyRotation; } User.UpdateNeeded = true; } if (Item.GetBaseItem().Tent && User.TentID == 0) { if (!User.IsBot && !User.IsPet) { ServerMessage Message = new ServerMessage(Outgoing.ObjectDataUpdate); Message.AppendStringWithBreak(Item.uint_0.ToString()); Message.AppendInt32(0); Message.AppendStringWithBreak("1"); User.GetClient().SendMessage(Message); User.TentID = Item.uint_0; } } if (!User.IsBot && !User.IsPet) { if (User.team != Team.None) { if (Item.GetRoom().frzTimer == true) { if (Item.GetBaseItem().Name == "es_box") { if (Item.freezePowerUp != FreezePowerUp.None) { this.GetFreeze().PickUpPowerUp(Item, User); } } } } } if (Item.GetBaseItem().PrivateTile) { User.privateTileID = Item.uint_0; User.onPrivateTile = true; } TeamManager roomTeamManager; roomTeamManager = Item.GetRoom().GetRoomTeamManager(); if (!User.IsBot && !User.IsPet && (Item.GetBaseItem().InteractionType.ToLower() == "freeze_blue_gate" || Item.GetBaseItem().InteractionType.ToLower() == "freeze_red_gate" || Item.GetBaseItem().InteractionType.ToLower() == "freeze_green_gate" || Item.GetBaseItem().InteractionType.ToLower() == "freeze_yellow_gate")) { if (roomTeamManager.CanEnterOnTeam(Item.team)) { if (User.team == Team.None) { User.game = Rooms.Games.Game.Freeze; User.team = Item.team; roomTeamManager.AddUser(User); int FreezeEffect = ((int)Item.team) + 39; if (User.GetClient().GetHabbo().GetEffectsInventoryComponent().int_0 != FreezeEffect) { User.GetClient().GetHabbo().GetEffectsInventoryComponent().method_2(FreezeEffect, true); } } else { roomTeamManager.OnUserLeave(User); User.GetClient().GetHabbo().GetEffectsInventoryComponent().method_2(0, true); } } } num = 13; if (Item.GetBaseItem().InteractionType.ToLower().IndexOf("bb_") > -1 && !User.IsBot && !User.IsPet) { if (Item.GetBaseItem().InteractionType.ToLower().IndexOf("_gate") > -1) { if (Item.GetBaseItem().InteractionType.ToLower() == "bb_yellow_gate" || Item.GetBaseItem().InteractionType.ToLower() == "bb_red_gate" || Item.GetBaseItem().InteractionType.ToLower() == "bb_green_gate" || Item.GetBaseItem().InteractionType.ToLower() == "bb_blue_gate") { if (roomTeamManager.CanEnterOnTeam(Item.team)) { if (User.team == Team.None) { User.game = Rooms.Games.Game.BattleBanzai; User.team = Item.team; roomTeamManager.AddUser(User); int FreezeEffect = ((int)Item.team) + 32; if (User.GetClient().GetHabbo().GetEffectsInventoryComponent().int_0 != FreezeEffect) { User.GetClient().GetHabbo().GetEffectsInventoryComponent().method_2(FreezeEffect, true); } } else { roomTeamManager.OnUserLeave(User); User.GetClient().GetHabbo().GetEffectsInventoryComponent().method_2(0, true); } } } } if (Item.GetBaseItem().InteractionType.ToLower() == "bb_teleport") { this.method_91(Item, User); } if (Item.GetBaseItem().InteractionType.ToLower() == "bb_patch" && this.GetTopItem(Item.GetX, Item.Int32_1) == Item && User.team != Team.None && User.game == Rooms.Games.Game.BattleBanzai && User.bool_6 && Item.ExtraData != "14" && Item.ExtraData != "5" && Item.ExtraData != "8" && Item.ExtraData != "11" && Item.ExtraData != "1") { if (Item.ExtraData == "0" || Item.ExtraData == "") { if (User.team == Team.Yellow) { Item.ExtraData = Convert.ToString(12); } else if (User.team == Team.Red) { Item.ExtraData = Convert.ToString(3); } else if (User.team == Team.Green) { Item.ExtraData = Convert.ToString(6); } else if (User.team == Team.Blue) { Item.ExtraData = Convert.ToString(9); } } else { if (Convert.ToInt32(Item.ExtraData) > 0) { if (User.team == Team.Yellow && (Item.ExtraData == "12" || Item.ExtraData == "13")) { Item.ExtraData = Convert.ToString(Convert.ToInt32(Item.ExtraData) + 1); } else { if (User.team == Team.Red && (Item.ExtraData == "3" || Item.ExtraData == "4")) { Item.ExtraData = Convert.ToString(Convert.ToInt32(Item.ExtraData) + 1); } else { if (User.team == Team.Green && (Item.ExtraData == "6" || Item.ExtraData == "7")) { Item.ExtraData = Convert.ToString(Convert.ToInt32(Item.ExtraData) + 1); } else { if (User.team == Team.Blue && (Item.ExtraData == "9" || Item.ExtraData == "10")) { Item.ExtraData = Convert.ToString(Convert.ToInt32(Item.ExtraData) + 1); } else { if (User.team == Team.Yellow) { Item.ExtraData = Convert.ToString(12); } else if (User.team == Team.Red) { Item.ExtraData = Convert.ToString(3); } else if (User.team == Team.Green) { Item.ExtraData = Convert.ToString(6); } else if (User.team == Team.Blue) { Item.ExtraData = Convert.ToString(9); } } } } } } } try { if (User.team == Team.Yellow && Item.ExtraData == "14") { User.GetClient().GetHabbo().TilesLocked++; User.GetClient().GetHabbo().CheckBattleBanzaiTilesLockedAchievements(); } if (User.team == Team.Red && Item.ExtraData == "5") { User.GetClient().GetHabbo().TilesLocked++; User.GetClient().GetHabbo().CheckBattleBanzaiTilesLockedAchievements(); } if (User.team == Team.Green && Item.ExtraData == "8") { User.GetClient().GetHabbo().TilesLocked++; User.GetClient().GetHabbo().CheckBattleBanzaiTilesLockedAchievements(); } if (User.team == Team.Blue && Item.ExtraData == "11") { User.GetClient().GetHabbo().TilesLocked++; User.GetClient().GetHabbo().CheckBattleBanzaiTilesLockedAchievements(); } int team = 0; if (User.team == Team.Yellow) { team = 14; } else if (User.team == Team.Red) { team = 5; } else if (User.team == Team.Green) { team = 8; } else if (User.team == Team.Blue) { team = 11; } this.method_89(team, Item, false, User.GetClient()); Item.UpdateState(true, true); } catch { /*IGNORING BECAUSE IT F***S THE WHOLE F*****G THING UP */} } } } goto IL_1155; } } num = 14; List<RoomItem> list2 = this.method_93(User.int_12, User.int_13); lock (list2) { foreach (RoomItem current in list2) { if (this.double_0[current.GetX, current.Int32_1] <= current.Double_0) { if (bool_14) { if (!User.IsBot) this.method_11(User, current); else if (User.IsBot && !User.IsPet) this.TriggerBotOnFurni(User, current); } if (current.GetBaseItem().InteractionType.ToLower() == "instant_teleport") { if (!User.IsBot) { User.int_19 = -1; current.InteractingUser = User.GetClient().GetHabbo().Id; User.RoomItem_0 = current; current.ProcessUpdates(); } } if (current.GetBaseItem().InteractionType.ToLower() == "pressure_pad") { current.ExtraData = "1"; current.UpdateState(false, true); } if (current.GetBaseItem().InteractionType.ToLower() == "pressure_random") { current.ExtraData = new Random().Next(1, current.GetBaseItem().Modes).ToString(); current.UpdateState(false, true); } if (current.GetBaseItem().InteractionType.ToLower() == "pet_drink") { if (User.IsPet) { User.ClearStatuses(); User.Statusses.Add("eat", TextHandling.GetString(User.double_0)); } } num = 15; if (current.GetBaseItem().InteractionType.ToLower() == "fbgate" && (!string.IsNullOrEmpty(current.string_2) || !string.IsNullOrEmpty(current.string_3)) && User != null && !User.IsBot) { if (User.string_0 != "") { User.GetClient().GetHabbo().Figure = User.string_0; User.string_0 = ""; ServerMessage Message = new ServerMessage(Outgoing.UpdateUserInformation); Message.AppendInt32(User.VirtualId); Message.AppendStringWithBreak(User.GetClient().GetHabbo().Figure); Message.AppendStringWithBreak(User.GetClient().GetHabbo().Gender.ToLower()); Message.AppendStringWithBreak(User.GetClient().GetHabbo().Motto); Message.AppendInt32(User.GetClient().GetHabbo().AchievementScore); // Message.AppendStringWithBreak(""); this.SendMessage(Message, null); } else { string a = User.GetClient().GetHabbo().Gender; User.string_0 = User.GetClient().GetHabbo().Figure; if (a == "m") { AntiMutant.ValidateUserLook(User, current.string_2); } else { AntiMutant.ValidateUserLook(User, current.string_3); } ServerMessage Message = new ServerMessage(Outgoing.UpdateUserInformation); Message.AppendInt32(User.VirtualId); Message.AppendStringWithBreak(User.GetClient().GetHabbo().Figure); Message.AppendStringWithBreak(User.GetClient().GetHabbo().Gender.ToLower()); Message.AppendStringWithBreak(User.GetClient().GetHabbo().Motto); Message.AppendInt32(User.GetClient().GetHabbo().AchievementScore); //Message.AppendStringWithBreak(""); this.SendMessage(Message, null); } } num = 16; if(current.GetBaseItem().InteractionType.ToLower() == "bb_puck") { Thread thrd = new Thread(delegate() { try { int newX = current.GetX; int newY = current.Int32_1; int i = 3; int BodyRotation = User.BodyRotation; while (i > 0) { int oldNewX = newX; int oldNewY = newY; if (BodyRotation == 0) newY--; if (BodyRotation == 1) { newX++; newY--; } if (BodyRotation == 2) newX++; if (BodyRotation == 3) { newY++; newX++; } if (BodyRotation == 4) newY++; if (BodyRotation == 5) { newX--; newY++; } if (BodyRotation == 6) newX--; if (BodyRotation == 7) { newX--; newY--; } i--; bool moveFurni = true; if (!method_36(newX, newY)) { newX = oldNewX; newY = oldNewY; BodyRotation = GetOtherRotation(BodyRotation); moveFurni = false; } foreach (RoomItem ri in this.method_93(newX, newY)) { if (!ri.GetBaseItem().Walkable) { newX = oldNewX; newY = oldNewY; BodyRotation = GetOtherRotation(BodyRotation); moveFurni = false; } } if (moveFurni) { this.method_40(current, newX, newY, current.uint_0, current.Double_0); foreach(RoomItem ri in this.method_93(newX,newY)) { if (ri.GetBaseItem().InteractionType.ToLower() == "bb_patch") { FillBanzaiPatches(User, ri); } } Thread.Sleep(230);// this may be using a LOT of CPU... So be careful what you do with it! } } } catch(Exception ex) { Console.WriteLine(ex.ToString()); //If there wouldn't be any try.. Whole room crashes if a heavy exception occurs. } }); thrd.Start(); } if (current.GetBaseItem().InteractionType.ToLower() == "ball") { try { #region "Football" int num6 = current.GetX; int num7 = current.Int32_1; current.ExtraData = "11"; if (User != null && User.GetClient() != null && User.GetClient().GetHabbo() != null) { current.LastPlayerHitFootball = User; } if (User.BodyRotation == 4) { num7++; if (!this.method_79(null, current, num6, num7, 0, false, true, false)) { this.method_79(null, current, num6, num7 - 2, 0, false, true, true); } } else { if (User.BodyRotation == 0) { num7--; if (!this.method_79(null, current, num6, num7, 0, false, true, false)) { this.method_79(null, current, num6, num7 + 2, 0, false, true, true); } } else { if (User.BodyRotation == 6) { num6--; if (!this.method_79(null, current, num6, num7, 0, false, true, false)) { this.method_79(null, current, num6 + 2, num7, 0, false, true, true); } } else { if (User.BodyRotation == 2) { num6++; if (!this.method_79(null, current, num6, num7, 0, false, true, false)) { this.method_79(null, current, num6 - 2, num7, 0, false, true, true); } } else { if (User.BodyRotation == 3) { num6++; num7++; if (!this.method_79(null, current, num6, num7, 0, false, true, false)) { this.method_79(null, current, num6 - 2, num7 - 2, 0, false, true, true); } } else { if (User.BodyRotation == 1) { num6++; num7--; if (!this.method_79(null, current, num6, num7, 0, false, true, false)) { this.method_79(null, current, num6 - 2, num7 + 2, 0, false, true, true); } } else { if (User.BodyRotation == 7) { num6--; num7--; if (!this.method_79(null, current, num6, num7, 0, false, true, false)) { this.method_79(null, current, num6 + 2, num7 + 2, 0, false, true, true); } } else { if (User.BodyRotation == 5) { num6--; num7++; if (!this.method_79(null, current, num6, num7, 0, false, true, false)) { this.method_79(null, current, num6 + 2, num7 - 2, 0, false, true, true); } } } } } } } } } #endregion } catch{} } } } } IL_1155: ; } } } catch (Exception ex) { Logging.LogThreadException(ex.ToString(), string.Concat(new object[] { "Room [ID: ", this.Id, "] [Part: ", num, "] Update User Status" })); this.method_34(); } }
/// <summary> /// Sends the user to desired chair in the room /// </summary> /// <param name="Client"></param> public static void SpawnChairs(GameClient Client, string ChairName, RoomUser Bot = null) { try { RoomUser RoomUser; if (Client != null) { if (Client.GetHabbo().CurrentRoomId != Convert.ToInt32(RoleplayData.GetData("court", "roomid"))) { Client.GetHabbo().Look = Client.GetRoleplay().OriginalOutfit; Client.GetHabbo().Motto = Client.GetRoleplay().Class; Client.GetHabbo().Poof(false); } } if (Bot != null) { RoomUser = Bot; } else { RoomUser = Client.GetRoomUser(); } List <Item> Chairs = new List <Item>(); if (RoomUser == null) { return; } if (RoomUser.isSitting || RoomUser.Statusses.ContainsKey("sit")) { if (RoomUser.Statusses.ContainsKey("sit")) { RoomUser.RemoveStatus("sit"); } RoomUser.isSitting = false; RoomUser.UpdateNeeded = true; } if (RoomUser.isLying || RoomUser.Statusses.ContainsKey("lay")) { if (RoomUser.Statusses.ContainsKey("lay")) { RoomUser.RemoveStatus("lay"); } RoomUser.isLying = false; RoomUser.UpdateNeeded = true; } RoomUser.CanWalk = false; RoomUser.ClearMovement(true); lock (RoomUser.GetRoom().GetRoomItemHandler().GetFloor) { foreach (Item item in RoomUser.GetRoom().GetRoomItemHandler().GetFloor) { if (item.GetBaseItem().ItemName == ChairName) { if (!Chairs.Contains(item)) { Chairs.Add(item); } } } var Chairs2 = new List <Item>(); foreach (var chair in Chairs) { if (!chair.GetRoom().GetGameMap().SquareHasUsers(chair.GetX, chair.GetY)) { if (!Chairs2.Contains(chair)) { Chairs2.Add(chair); } } } Item LandItem = null; Random Random = new Random(); if (Chairs2.Count >= 1) { if (Chairs2.Count == 1) { LandItem = Chairs2[0]; } else { LandItem = Chairs2[Random.Next(0, Chairs2.Count)]; } } else if (Chairs2.Count >= 1) { if (Chairs.Count == 1) { LandItem = Chairs[0]; } else { LandItem = Chairs[Random.Next(0, Chairs.Count)]; } } if (LandItem != null) { if (RoomUser.Statusses.ContainsKey("sit")) { RoomUser.RemoveStatus("sit"); } if (RoomUser.Statusses.ContainsKey("lay")) { RoomUser.RemoveStatus("lay"); } RoomUser.Statusses.Add("sit", Utilities.TextHandling.GetString(LandItem.GetBaseItem().Height)); Point OldCoord = new Point(RoomUser.Coordinate.X, RoomUser.Coordinate.Y); Point NewCoord = new Point(LandItem.GetX, LandItem.GetY); var Room = GenerateRoom(RoomUser.RoomId); if (Room != null) { Room.GetGameMap().UpdateUserMovement(OldCoord, NewCoord, RoomUser); } RoomUser.X = LandItem.GetX; RoomUser.Y = LandItem.GetY; RoomUser.Z = LandItem.GetZ; RoomUser.RotHead = LandItem.Rotation; RoomUser.RotBody = LandItem.Rotation; } RoomUser.CanWalk = true; RoomUser.UpdateNeeded = true; } } catch { } }
/// <summary> /// Sends the user to desired bed in the room /// </summary> /// <param name="Client"></param> public static void SpawnBeds(GameClient Client, string BedName, RoomUser Bot = null) { RoomUser RoomUser; if (Bot != null) { RoomUser = Bot; } else { RoomUser = Client.GetRoomUser(); } List <Item> Beds = new List <Item>(); if (RoomUser == null) { return; } if (RoomUser.isSitting || RoomUser.Statusses.ContainsKey("sit")) { if (RoomUser.Statusses.ContainsKey("sit")) { RoomUser.RemoveStatus("sit"); } RoomUser.isSitting = false; RoomUser.UpdateNeeded = true; } if (RoomUser.isLying || RoomUser.Statusses.ContainsKey("lay")) { if (RoomUser.Statusses.ContainsKey("lay")) { RoomUser.RemoveStatus("lay"); } RoomUser.isLying = false; RoomUser.UpdateNeeded = true; } if (RoomUser != null) { RoomUser.ClearMovement(true); } lock (RoomUser.GetRoom().GetRoomItemHandler().GetFloor) { foreach (Item item in RoomUser.GetRoom().GetRoomItemHandler().GetFloor) { if (item.GetBaseItem().ItemName == BedName) { if (!Beds.Contains(item)) { Beds.Add(item); } } } var Beds2 = new List <Item>(); foreach (var bed in Beds) { if (!bed.GetRoom().GetGameMap().SquareHasUsers(bed.GetX, bed.GetY)) { if (!Beds2.Contains(bed)) { Beds2.Add(bed); } } } Item LandItem = null; Random Random = new Random(); if (Beds2.Count >= 1) { if (Beds2.Count == 1) { LandItem = Beds2[0]; } else { LandItem = Beds2[Random.Next(0, Beds2.Count)]; } } else if (Beds.Count >= 1) { if (Beds.Count == 1) { LandItem = Beds[0]; } else { LandItem = Beds[Random.Next(0, Beds.Count)]; } } if (LandItem != null) { if (RoomUser.Statusses.ContainsKey("sit")) { RoomUser.RemoveStatus("sit"); } if (RoomUser.Statusses.ContainsKey("lay")) { RoomUser.RemoveStatus("lay"); } RoomUser.Statusses.Add("lay", Utilities.TextHandling.GetString(LandItem.GetBaseItem().Height) + " null"); Point OldCoord = new Point(RoomUser.X, RoomUser.Y); Point NewCoord = new Point(LandItem.GetX, LandItem.GetY); RoomUser.X = LandItem.GetX; RoomUser.Y = LandItem.GetY; RoomUser.Z = LandItem.GetZ; RoomUser.RotHead = LandItem.Rotation; RoomUser.RotBody = LandItem.Rotation; RoomUser.UpdateNeeded = true; RoomUser.GetRoom().GetGameMap().UpdateUserMovement(OldCoord, NewCoord, RoomUser); } } }
/// <summary> /// Executes this type of combat on a Bot /// </summary> public void ExecuteBot(GameClient Client, RoleplayBot Bot = null) { if (!this.CanCombat(Client, null, Bot)) { return; } int Damage = this.GetDamage(Client, null, Bot); RoomUser BotUser = Client.GetHabbo().CurrentRoom.GetRoomUserManager().GetBotByName(Bot.Name); if (BotUser.GetRoom() == null) { Client.SendWhisper("Este usuário não foi encontrado nesta sala!", 1); return; } if (BotUser == null) { Client.SendWhisper("Este usuário não foi encontrado nesta sala!", 1); return; } if (BotUser.GetRoom() != Client.GetRoomUser().GetRoom()) { Client.SendWhisper("Este usuário não foi encontrado nesta sala!", 1); return; } // If about to die bool Died = false; if (Bot.CurHealth - Damage <= 0) { Died = true; } else { RoleplayManager.Shout(Client, "*Dá um soco em " + Bot.Name + ", causando " + Damage + " damage*", 6); } PlusEnvironment.GetGame().GetAchievementManager().ProgressAchievement(Client, "ACH_Punching", 1); PlusEnvironment.GetGame().GetQuestManager().ProgressUserQuest(Client, QuestType.PUNCH_USER, 1); if ((Client.GetRoleplay().CurEnergy - 2) <= 0) { Client.GetRoleplay().CurEnergy = 0; } else { Client.GetRoleplay().CurEnergy -= 2; } Client.GetRoleplay().Punches++; if (Bot.CurHealth - Damage <= 0) { Bot.CurHealth = 0; } else { Bot.CurHealth -= Damage; } if (!Died) { BotUser.Chat("*[" + Bot.CurHealth + "/" + Bot.MaxHealth + "]*", true, 3); BotUser.GetBotRoleplayAI().OnAttacked(Client); } else { BotUser.GetBotRoleplayAI().OnDeath(Client); } Client.GetRoleplay().CooldownManager.CreateCooldown("fist", 1000, (Client.GetRoleplay().Game == null ? (Client.GetRoleplay().Class.ToLower() == "fighter" ? RoleplayManager.HitCooldown : RoleplayManager.DefaultHitCooldown) : RoleplayManager.HitCooldownInEvent)); }