Beispiel #1
0
 /// <summary>
 /// Таймер игры
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void GameTimer_Tick(object sender, EventArgs e)
 {
     timer.Text = m + ":" + s;
     s          = s - 1;
     if (s == -1)
     {
         m = m - 1;
         s = 59;
     }
     if (m == -1 && !no_reply)
     {
         timer.Text = "Время вышло";
         GameTimer.Stop();   // Останавливаем таймер игры
         EffectTimer.Stop(); // Останавливаем действующие эффекты
         GlobalTimer.Stop(); // Останавливаем передвижение игроков
         if (Mouse.mice.Count == 4)
         {
             ServerTimer.Stop();        // Прекращаем обмен данных с сервером
             Server.ConclusionOfGame(); // Подведение итогов
             Close();
         }
         else if (Mouse.mice.Count == 1)
         {
             MessageBox.Show("Время вышло!", "Конец игры");
             Close();
         }
         no_reply = true;
     }
 }
Beispiel #2
0
        /// <summary>
        /// Действия после закрытия GameForm
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void GameForm_FormClosed(object sender, FormClosedEventArgs e)
        {
            no_reply = false;
            GameTimer.Stop();   // Останавливаем таймер игры
            EffectTimer.Stop(); // Останавливаем действующие эффекты
            GlobalTimer.Stop(); // Останавливаем передвижение игроков
            ServerTimer.Stop(); // Останавливаем обмен данных с сервером
            MenuForm menu_form = Owner as MenuForm;

            menu_form.Show(); // Вызываем FormMenu
        }
Beispiel #3
0
 /// <summary>
 /// Таймер действия эффектов (иначе - баффов)
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void EffectTimer_Tick(object sender, EventArgs e)
 {
     time_of_effect = time_of_effect - 1;
     // Если таймер закончился
     if (time_of_effect == -1)
     {
         EffectTimer.Stop();
         // Если действовало ускорение, то возвращаем исходную скорость
         if (Mouse.mice[current_mouse].speed == 3)
         {
             Mouse.mice[current_mouse].speed = 2;
         }
         // Если действовало замедление, то возвращаем исходную скорость
         if (Mouse.mice[current_mouse].speed == 1)
         {
             Mouse.mice[current_mouse].speed = 2;
         }
     }
 }
Beispiel #4
0
 public void StopSpell()
 {
     effectTimer.Stop();
 }
Beispiel #5
0
        private void Activate(object parent)
        {
            if (Effect == JewelEffect.None || Charges <= 0)
            {
                return;
            }

            if (parent is Mobile)
            {
                Mobile from = (Mobile)parent;

                string modName = this.Serial.ToString();

                switch (Effect)
                {
                case JewelEffect.Strength:
                    from.AddStatMod(new StatMod(StatType.Str, modName + "Str", 10, TimeSpan.Zero));
                    from.CheckStatTimers();
                    from.FixedParticles(0x375a, 10, 15, 5017, EffectLayer.Waist);
                    from.PlaySound(0x1ee);
                    break;

                case JewelEffect.Agility:
                    from.AddStatMod(new StatMod(StatType.Dex, modName + "Dex", 10, TimeSpan.Zero));
                    from.CheckStatTimers();
                    from.FixedParticles(0x375a, 10, 15, 5010, EffectLayer.Waist);
                    from.PlaySound(0x28e);
                    break;

                case JewelEffect.Cunning:
                    from.AddStatMod(new StatMod(StatType.Int, modName + "Int", 10, TimeSpan.Zero));
                    from.CheckStatTimers();
                    from.FixedParticles(0x375a, 10, 15, 5011, EffectLayer.Head);
                    from.PlaySound(0x1eb);
                    break;

                case JewelEffect.Bless:
                    from.AddStatMod(new StatMod(StatType.Str, modName + "BlessStr", 10, TimeSpan.Zero));
                    from.AddStatMod(new StatMod(StatType.Dex, modName + "BlessDex", 10, TimeSpan.Zero));
                    from.AddStatMod(new StatMod(StatType.Int, modName + "BlessInt", 10, TimeSpan.Zero));
                    from.CheckStatTimers();
                    from.FixedParticles(0x373a, 10, 15, 5018, EffectLayer.Waist);
                    from.PlaySound(0x1ea);
                    break;

                case JewelEffect.Weaken:
                    from.AddStatMod(new StatMod(StatType.Str, modName + "LowerStr", -10, TimeSpan.Zero));
                    from.CheckStatTimers();
                    from.FixedParticles(0x3779, 10, 15, 5009, EffectLayer.Waist);
                    from.PlaySound(0x1e6);
                    break;

                case JewelEffect.Clumsy:
                    from.AddStatMod(new StatMod(StatType.Dex, modName + "LowerDex", -10, TimeSpan.Zero));
                    from.CheckStatTimers();
                    from.FixedParticles(0x3779, 10, 15, 5002, EffectLayer.Head);
                    from.PlaySound(0x1df);
                    break;

                case JewelEffect.Feeblemind:
                    from.AddStatMod(new StatMod(StatType.Int, modName + "LowerInt", -10, TimeSpan.Zero));
                    from.CheckStatTimers();
                    from.FixedParticles(0x3779, 10, 15, 5004, EffectLayer.Head);
                    from.PlaySound(0x1e4);
                    break;

                case JewelEffect.Curse:
                    from.AddStatMod(new StatMod(StatType.Str, modName + "CurseStr", -10, TimeSpan.Zero));
                    from.AddStatMod(new StatMod(StatType.Dex, modName + "CurseDex", -10, TimeSpan.Zero));
                    from.AddStatMod(new StatMod(StatType.Int, modName + "CurseInt", -10, TimeSpan.Zero));
                    from.CheckStatTimers();
                    from.FixedParticles(0x374a, 10, 15, 5028, EffectLayer.Waist);
                    from.PlaySound(0x1ea);
                    break;

                case JewelEffect.NightSight:
                    from.EndAction(typeof(LightCycle));
                    from.BeginAction(typeof(LightCycle));
                    from.LightLevel = (int)LightCycle.DungeonLevel;
                    from.FixedParticles(0x376a, 9, 32, 5007, EffectLayer.Waist);
                    from.PlaySound(0x1e3);
                    break;

                case JewelEffect.Invisibility:
                    Effects.SendLocationParticles(EffectItem.Create(new Point3D(from.X, from.Y, from.Z + 16), from.Map, EffectItem.DefaultDuration), 0x376A, 10, 15, 5045);
                    from.PlaySound(0x203);
                    from.Hidden = true;
                    break;

                case JewelEffect.MagicReflection:
                    from.MagicDamageAbsorb = 15;
                    from.FixedParticles(0x375a, 10, 15, 5037, EffectLayer.Waist);
                    from.PlaySound(0x1e9);
                    break;

                case JewelEffect.Protection:
                    from.VirtualArmorMod += 10;
                    from.FixedParticles(0x375a, 9, 20, 5016, EffectLayer.Waist);
                    from.PlaySound(0x1ed);
                    break;
                }

                ConsumeCharge(from, this);

                if (m_st != null)
                {
                    m_st.Stop();
                }

                m_st = new EffectTimer(from, this);
                m_st.Start();
            }
        }
Beispiel #6
0
        /// <summary>
        /// Изменение координат мыши и действия при нахождении бонусов и сыра
        /// </summary>
        private void MovementOfMouse()
        {
            int    x        = Mouse.mice[current_mouse].position.Left - Server.shift_of_map_Left; // Координата X текущей мыши
            int    y        = Mouse.mice[current_mouse].position.Top - Server.shift_of_map_Top;   // Координата Y текущей мыши
            int    step     = Convert.ToInt32(Mouse.mice[current_mouse].speed);                   // Шаг
            double double_x = (Convert.ToDouble(x)) / Server.size_of_cell;                        // Позиция X внутри ячейки
            double double_y = (Convert.ToDouble(y)) / Server.size_of_cell;                        // Позиция Y внутри ячейки

            // Нажата клавиша влево
            if (key_left_pressed)
            {
                // Проверка на преграды и прочее
                if (CheckingOfMovement(Mouse.mice[current_mouse].position.Left, Mouse.mice[current_mouse].position.Top, "left", current_mouse))
                {
                    Mouse.mice[current_mouse].position.Location = new Point(Mouse.mice[current_mouse].position.Left - step, Mouse.mice[current_mouse].position.Top);
                }
            }
            // Нажата клавиша вправо
            if (key_right_pressed)
            {
                // Проверка на преграды и прочее
                if (CheckingOfMovement(Mouse.mice[current_mouse].position.Left, Mouse.mice[current_mouse].position.Top, "right", current_mouse))
                {
                    Mouse.mice[current_mouse].position.Location = new Point(Mouse.mice[current_mouse].position.Left + step, Mouse.mice[current_mouse].position.Top);
                }
            }
            // Нажата клавиша вверх
            if (key_up_pressed)
            {
                // Проверка на преграды и прочее
                if (CheckingOfMovement(Mouse.mice[current_mouse].position.Left, Mouse.mice[current_mouse].position.Top, "up", current_mouse))
                {
                    Mouse.mice[current_mouse].position.Location = new Point(Mouse.mice[current_mouse].position.Left, Mouse.mice[current_mouse].position.Top - step);
                }
            }
            // Нажата клавиша вниз
            if (key_down_pressed)
            {
                // Проверка на преграды и прочее
                if (CheckingOfMovement(Mouse.mice[current_mouse].position.Left, Mouse.mice[current_mouse].position.Top, "down", current_mouse))
                {
                    Mouse.mice[current_mouse].position.Location = new Point(Mouse.mice[current_mouse].position.Left, Mouse.mice[current_mouse].position.Top + step);
                }
            }
            // Если никакая клавиша не нажата
            if (!key_left_pressed && !key_right_pressed && !key_up_pressed && !key_down_pressed)
            {
                int result = AutoAligment(Mouse.mice[current_mouse].position.Left, Mouse.mice[current_mouse].position.Top);
                // Проверка на автоцентровку (выравнивание по правому краю)
                if (result == 1)
                {
                    int coordinate_X_of_right_cell = Convert.ToInt32(Math.Ceiling(double_x) * Server.size_of_cell + Server.shift_of_map_Left);
                    Mouse.mice[current_mouse].position.Location = new Point(coordinate_X_of_right_cell, y + Server.shift_of_map_Left);
                }
                // Проверка на автоцентровку (выравнивание по левому краю)
                if (result == 2)
                {
                    int coordinate_X_of_left_cell = Convert.ToInt32(Math.Floor(double_x) * Server.size_of_cell + Server.shift_of_map_Left);
                    Mouse.mice[current_mouse].position.Location = new Point(coordinate_X_of_left_cell, y + Server.shift_of_map_Left);
                }
                // Проверка на автоцентровку (выравнивание по нижнему краю)
                if (result == 3)
                {
                    int coordinate_Y_of_down_cell = Convert.ToInt32(Math.Ceiling(double_y) * Server.size_of_cell + Server.shift_of_map_Top);
                    Mouse.mice[current_mouse].position.Location = new Point(x + Server.shift_of_map_Left, coordinate_Y_of_down_cell);
                }
                // Проверка на автоцентровку (выравнивание по верхнему краю)
                if (result == 4)
                {
                    int coordinate_Y_of_up_cell = Convert.ToInt32(Math.Floor(double_y) * Server.size_of_cell + Server.shift_of_map_Top);
                    Mouse.mice[current_mouse].position.Location = new Point(x + Server.shift_of_map_Left, coordinate_Y_of_up_cell);
                }
            }
            // Если подобрали бонус
            if (bonus)
            {
                bonus = false;
                Mouse.mice[current_mouse].speed = 3;
                EffectTimer.Stop();  // Останавливаем таймер, если он запущен
                time_of_effect = 10;
                EffectTimer.Start(); // Запускаем таймер эффекта бонуса
                Server.bonus_sound.Play();
            }
            // Если подобрали сыр
            if (cheese)
            {
                cheese = false;
                Mouse.mice[current_mouse].number_of_cheeses++;
                Server.cheese_sound.Play();
            }
            // Если наткнулись на мышеловку
            if (trap)
            {
                trap = false;
                Mouse.mice[current_mouse].speed = 1;
                EffectTimer.Stop();  // Останавливаем таймер, если он запущен
                time_of_effect = 10;
                EffectTimer.Start(); // Запускаем таймер эффекта бонуса
                Server.cheese_sound.Play();
            }
        }