예제 #1
0
        private void EndGame(RoomUser roomUser, Team winningTeam)
        {
            if (roomUser.team == winningTeam && winningTeam != Team.none)
            {
                this.room.SendPacket(new ActionMessageComposer(roomUser.VirtualId, 1));
            }
            else if (roomUser.team != Team.none)
            {
                Item FirstTile = this.GetFirstTile(roomUser.X, roomUser.Y);

                if (FirstTile == null)
                {
                    return;
                }
                roomUser.ApplyEffect(0);
                TeamManager managerForFreeze = this.room.GetTeamManager();
                managerForFreeze.OnUserLeave(roomUser);

                this.room.GetGameManager().UpdateGatesTeamCounts();

                roomUser.team = Team.none;

                if (this.room.GetGameItemHandler().GetExitTeleport() != null)
                {
                    this.room.GetGameMap().TeleportToItem(roomUser, this.room.GetGameItemHandler().GetExitTeleport());
                }

                roomUser.Freezed      = false;
                roomUser.SetStep      = false;
                roomUser.IsWalking    = false;
                roomUser.UpdateNeeded = true;
                roomUser.FreezeLives  = 0;
            }
        }
예제 #2
0
        private void EndGame(RoomUser roomUser, Team winningTeam)
        {
            if (roomUser.team == winningTeam && winningTeam != Team.none)
            {
                this.room.SendPacket(new ActionMessageComposer(roomUser.VirtualId, 1));
            }
            else if (roomUser.team != Team.none)
            {
                Item FirstTile = this.GetFirstTile(roomUser.X, roomUser.Y);

                if (FirstTile == null)
                {
                    return;
                }

                if (this.room.GetGameItemHandler().GetExitTeleport() != null)
                {
                    this.room.GetGameMap().TeleportToItem(roomUser, this.room.GetGameItemHandler().GetExitTeleport());
                }

                TeamManager managerForBanzai = roomUser.GetClient().GetHabbo().CurrentRoom.GetTeamManager();
                managerForBanzai.OnUserLeave(roomUser);
                this.room.GetGameManager().UpdateGatesTeamCounts();
                roomUser.ApplyEffect(0);
                roomUser.team = Team.none;
            }
        }
예제 #3
0
        private void FreezeUser(RoomUser user)
        {
            if (user.IsBot || user.shieldActive || user.team == Team.none || !this.gameStarted)
            {
                return;
            }

            if (user.Freezed)
            {
                user.Freezed = false;
                user.ApplyEffect(((int)user.team + 39));
            }
            else
            {
                user.Freezed       = true;
                user.FreezeCounter = 0;
                --user.FreezeLives;
                if (user.FreezeLives <= 0)
                {
                    ServerPacket Message = new ServerPacket(ServerPacketHeader.FreezeLivesComposer);
                    Message.WriteInteger(user.VirtualId);
                    Message.WriteInteger(user.FreezeLives);
                    user.GetClient().SendPacket(Message);

                    user.ApplyEffect(0);

                    this.room.GetGameManager().AddPointToTeam(user.team, -20, user);

                    TeamManager managerForFreeze = this.room.GetTeamManager();
                    managerForFreeze.OnUserLeave(user);

                    this.room.GetGameManager().UpdateGatesTeamCounts();
                    user.team = Team.none;

                    if (this.room.GetGameItemHandler().GetExitTeleport() != null)
                    {
                        this.room.GetGameMap().TeleportToItem(user, this.room.GetGameItemHandler().GetExitTeleport());
                    }

                    user.Freezed      = false;
                    user.SetStep      = false;
                    user.IsWalking    = false;
                    user.UpdateNeeded = true;

                    if (managerForFreeze.BlueTeam.Count <= 0 && managerForFreeze.RedTeam.Count <= 0 && (managerForFreeze.GreenTeam.Count <= 0 && managerForFreeze.YellowTeam.Count > 0))
                    {
                        this.StopGame();
                    }
                    else if (managerForFreeze.BlueTeam.Count > 0 && managerForFreeze.RedTeam.Count <= 0 && (managerForFreeze.GreenTeam.Count <= 0 && managerForFreeze.YellowTeam.Count <= 0))
                    {
                        this.StopGame();
                    }
                    else if (managerForFreeze.BlueTeam.Count <= 0 && managerForFreeze.RedTeam.Count > 0 && (managerForFreeze.GreenTeam.Count <= 0 && managerForFreeze.YellowTeam.Count <= 0))
                    {
                        this.StopGame();
                    }
                    else
                    {
                        if (managerForFreeze.BlueTeam.Count > 0 || managerForFreeze.RedTeam.Count > 0 || (managerForFreeze.GreenTeam.Count <= 0 || managerForFreeze.YellowTeam.Count > 0))
                        {
                            return;
                        }
                        this.StopGame();
                    }
                }
                else
                {
                    this.room.GetGameManager().AddPointToTeam(user.team, -10, user);
                    user.ApplyEffect(12);

                    ServerPacket Message = new ServerPacket(ServerPacketHeader.FreezeLivesComposer);
                    Message.WriteInteger(user.VirtualId);
                    Message.WriteInteger(user.FreezeLives);
                    user.GetClient().SendPacket(Message);
                }
            }
        }