Beispiel #1
0
        private void FreezeUser(RoomUser user)
        {
            if (user.shieldActive || user.Team == Team.none)
                return;

            if (user.Freezed)
            {
                user.Freezed = false;
                user.ApplyEffect((int)user.Team + 39);
                return;
            }
            user.Freezed = true;
            user.FreezeCounter = 0;

            user.FreezeLives--;

            if (user.FreezeLives <= 0)
            {
                ServerMessage message2 = new ServerMessage();
                message2.Init(Outgoing.UpdateFreezeLives);
                message2.AppendInt32(user.VirtualID);
                message2.AppendInt32(user.FreezeLives);
                user.GetClient().SendMessage(message2);

                user.ApplyEffect(-1);
                room.GetGameManager().AddPointToTeam(user.Team, -20, user);
                TeamManager t = room.GetTeamManagerForFreeze();
                t.OnUserLeave(user);
                user.Team = Team.none;
                if (exitTeleport != null)
                    room.GetGameMap().TeleportToItem(user, exitTeleport);

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

                if (t.BlueTeam.Count <= 0 && t.RedTeam.Count <= 0 && t.GreenTeam.Count <= 0 && t.YellowTeam.Count > 0)
                    this.StopGame(); // yellow team win
                else if (t.BlueTeam.Count > 0 && t.RedTeam.Count <= 0 && t.GreenTeam.Count <= 0 && t.YellowTeam.Count <= 0)
                    this.StopGame(); // blue team win
                else if (t.BlueTeam.Count <= 0 && t.RedTeam.Count > 0 && t.GreenTeam.Count <= 0 && t.YellowTeam.Count <= 0)
                    this.StopGame(); // red team win
                else if (t.BlueTeam.Count <= 0 && t.RedTeam.Count <= 0 && t.GreenTeam.Count > 0 && t.YellowTeam.Count <= 0)
                    this.StopGame(); // green team win
                return;
            }

            room.GetGameManager().AddPointToTeam(user.Team, -10, user);
            user.ApplyEffect(12);

            ServerMessage message = new ServerMessage();
            message.Init(Outgoing.UpdateFreezeLives);
            message.AppendInt32(user.VirtualID);
            message.AppendInt32(user.FreezeLives);

            user.GetClient().SendMessage(message);
        }
Beispiel #2
0
 private static void ActivateShield(RoomUser user)
 {
     user.ApplyEffect((int)user.Team + 48);
     user.shieldActive = true;
     user.shieldCounter = 0;
 }
Beispiel #3
0
 private static void RemoveUserFromTeam(RoomUser user)
 {
     user.Team = Team.none;
     user.ApplyEffect(-1);
 }
Beispiel #4
0
        internal void CycleUser(RoomUser user)
        {
            if (user.Freezed)
            {
                user.FreezeCounter++;

                if (user.FreezeCounter > 10)
                {
                    user.Freezed = false;
                    user.FreezeCounter = 0;

                    //user.ApplyEffect((int)user.Team + 39);
                    ActivateShield(user);
                }
            }

            if (user.shieldActive)
            {
                user.shieldCounter++;

                if (user.shieldCounter > 10)
                {
                    user.shieldActive = false;
                    user.shieldCounter = 10;

                    user.ApplyEffect((int)user.Team + 39);
                }
            }
        }