Example #1
0
        public void StopGame(bool userTriggered = false)
        {
            _gameStarted = false;
            _room.GetGameManager().UnlockGates();
            _room.GetGameManager().StopGame();

            ResetGame();

            if (ExitTeleports.Count > 0)
            {
                foreach (Item ExitTile in ExitTeleports.Values.ToList())
                {
                    if (ExitTile.ExtraData == "1" || String.IsNullOrEmpty(ExitTile.ExtraData))
                    {
                        ExitTile.ExtraData = "0";
                    }

                    ExitTile.UpdateState();
                }
            }

            Team Winners = _room.GetGameManager().GetWinningTeam();

            foreach (RoomUser User in _room.GetRoomUserManager().GetUserList().ToList())
            {
                User.FreezeLives = 0;
                if (User.Team == Winners)
                {
                    User.UnIdle();
                    User.DanceId = 0;
                    _room.SendPacket(new ActionComposer(User.VirtualId, 1));
                }

                if (ExitTeleports.Count > 0)
                {
                    Item tile = _freezeTiles.Values.Where(x => x.GetX == User.X && x.GetY == User.Y).FirstOrDefault();
                    if (tile != null)
                    {
                        Item ExitTle = GetRandomExitTile();

                        if (ExitTle != null)
                        {
                            _room.GetGameMap().UpdateUserMovement(User.Coordinate, ExitTle.Coordinate, User);
                            User.SetPos(ExitTle.GetX, ExitTle.GetY, ExitTle.GetZ);
                            User.UpdateNeeded = true;

                            if (User.IsAsleep)
                            {
                                User.UnIdle();
                            }
                        }
                    }
                }
            }

            if (!userTriggered)
            {
                _room.GetWired().TriggerEvent(WiredBoxType.TriggerGameEnds, null);
            }
        }
Example #2
0
        public void StartGame()
        {
            GameIsStarted = true;
            CountTeamPoints();
            ResetGame();
            if (ExitTeleports.Count > 0)
            {
                foreach (var ExitTile in ExitTeleports.Values.ToList())
                {
                    if (ExitTile.ExtraData == "0" || string.IsNullOrEmpty(ExitTile.ExtraData))
                    {
                        ExitTile.ExtraData = "1";
                    }
                    ExitTile.UpdateState();
                }
            }

            _room.GetGameManager().LockGates();
        }
Example #3
0
        public void StartGame()
        {
            this._gameStarted = true;
            timestarted       = QuasarEnvironment.GetUnixTimestamp();
            CountTeamPoints();
            ResetGame();

            if (this.ExitTeleports.Count > 0)
            {
                foreach (Item ExitTile in ExitTeleports.Values.ToList())
                {
                    if (ExitTile.ExtraData == "0" || String.IsNullOrEmpty(ExitTile.ExtraData))
                    {
                        ExitTile.ExtraData = "1";
                    }

                    ExitTile.UpdateState();
                }
            }

            this._room.GetGameManager().LockGates();
        }
Example #4
0
        public void StopGame(bool userTriggered = false)
        {
            this._gameStarted = false;
            this._room.GetGameManager().UnlockGates();
            this._room.GetGameManager().StopGame();

            ResetGame();

            if (this.ExitTeleports.Count > 0)
            {
                foreach (Item ExitTile in ExitTeleports.Values.ToList())
                {
                    if (ExitTile.ExtraData == "1" || String.IsNullOrEmpty(ExitTile.ExtraData))
                    {
                        ExitTile.ExtraData = "0";
                    }

                    ExitTile.UpdateState();
                }
            }

            TEAM Winners = this._room.GetGameManager().GetWinningTeam();

            foreach (RoomUser User in this._room.GetRoomUserManager().GetUserList().ToList())
            {
                User.FreezeLives = 0;
                if (User.Team == Winners)
                {
                    User.UnIdle();
                    User.DanceId = 0;
                    this._room.SendMessage(new ActionComposer(User.VirtualId, 1));
                }

                if (Winners != TEAM.NONE)
                {
                    // List<RoomUser> winners = _room.GetRoomUserManager().GetRoomUsers();

                    // foreach (RoomUser user in winners.ToList())

                    if (User.Team != TEAM.NONE)
                    {
                        if (QuasarEnvironment.GetUnixTimestamp() - timestarted > 10)
                        {
                            QuasarEnvironment.GetGame().GetAchievementManager().ProgressAchievement(User.GetClient(), "ACH_FreezePlayer", 1);
                            QuasarEnvironment.GetGame().GetAchievementManager().ProgressAchievement(User.GetClient(), "ACH_FreezeUser", 2);
                        }
                    }

                    if (Winners == TEAM.RED)
                    {
                        if (User.CurrentEffect == 40)
                        {
                            QuasarEnvironment.GetGame().GetAchievementManager().ProgressAchievement(User.GetClient(), "ACH_FreezeWinner", 1);
                            QuasarEnvironment.GetGame().GetAchievementManager().ProgressAchievement(User.GetClient(), "ACH_GameScoreTotal", 1);
                            _room.SendMessage(new ActionComposer(User.VirtualId, 1));
                        }
                    }

                    else if (Winners == TEAM.GREEN)
                    {
                        if (User.CurrentEffect == 41)
                        {
                            QuasarEnvironment.GetGame().GetAchievementManager().ProgressAchievement(User.GetClient(), "ACH_FreezeWinner", 1);
                            QuasarEnvironment.GetGame().GetAchievementManager().ProgressAchievement(User.GetClient(), "ACH_GameScoreTotal", 1);
                            _room.SendMessage(new ActionComposer(User.VirtualId, 1));
                        }
                    }

                    else if (Winners == TEAM.BLUE)
                    {
                        if (User.CurrentEffect == 42)
                        {
                            QuasarEnvironment.GetGame().GetAchievementManager().ProgressAchievement(User.GetClient(), "ACH_FreezeWinner", 1);
                            QuasarEnvironment.GetGame().GetAchievementManager().ProgressAchievement(User.GetClient(), "ACH_GameScoreTotal", 1);
                            _room.SendMessage(new ActionComposer(User.VirtualId, 1));
                        }
                    }

                    else if (Winners == TEAM.YELLOW)
                    {
                        if (User.CurrentEffect == 43)
                        {
                            QuasarEnvironment.GetGame().GetAchievementManager().ProgressAchievement(User.GetClient(), "ACH_FreezeWinner", 1);
                            QuasarEnvironment.GetGame().GetAchievementManager().ProgressAchievement(User.GetClient(), "ACH_GameScoreTotal", 1);
                            _room.SendMessage(new ActionComposer(User.VirtualId, 1));
                        }
                    }



                    if (ExitTeleports.Count > 0)
                    {
                        Item tile = _freezeTiles.Values.Where(x => x.GetX == User.X && x.GetY == User.Y).FirstOrDefault();
                        if (tile != null)
                        {
                            Item ExitTle = GetRandomExitTile();

                            if (ExitTle != null)
                            {
                                _room.GetGameMap().UpdateUserMovement(User.Coordinate, ExitTle.Coordinate, User);
                                User.SetPos(ExitTle.GetX, ExitTle.GetY, ExitTle.GetZ);
                                User.UpdateNeeded = true;

                                if (User.IsAsleep)
                                {
                                    User.UnIdle();
                                }
                            }
                        }
                    }
                }

                if (!userTriggered)
                {
                    _room.GetWired().TriggerEvent(WiredBoxType.TriggerGameEnds, null);
                }
            }
        }