/// <summary>Событие таймера размышления</summary> private void m_thinking_timer_Tick(object sender, EventArgs e) { if (DungeonLevel != DungeonLevel.Form.Hero.DungeonLevel) { return; } Point total_connection_point_where_is_monster; if (m_is_attached_to_room) { total_connection_point_where_is_monster = m_connection_point_attached; } else { total_connection_point_where_is_monster = DungeonLevel.GetConnectionPointLocationFromGlobalLocation(Location.Point); } m_target_location = DungeonLevel.GetGlobalLocationRandomCellInConnectionPointNotWall(total_connection_point_where_is_monster); m_action_status = DungeoMonsterActionStatus.MovingToCell; m_thinking_timer.Stop(); m_thinking_timer_is_working = false; Random random = new Random(); m_moving_timer.Interval = 100 * random.Next(10, 51); m_moving_timer.Start(); m_moving_timer_is_working = true; }
/// <summary>Монстр переходит в состояние размышления</summary> public void StartThinking() { if (m_action_status != DungeoMonsterActionStatus.Thinking) { m_action_status = DungeoMonsterActionStatus.Thinking; m_thinking_timer.Start(); m_thinking_timer_is_working = true; } }
/// <summary>Монстр переходит в нулевое состояние</summary> public void StopThinking() { if (m_action_status != DungeoMonsterActionStatus.AFK) { m_action_status = DungeoMonsterActionStatus.AFK; m_thinking_timer.Stop(); m_thinking_timer_is_working = false; m_moving_timer.Stop(); m_moving_timer_is_working = false; } }
/// <summary>Создаёт монстра</summary> /// <param name="texture">Текстура монстра</param> /// <param name="name">Имя монстра</param> /// <param name="is_boss">Является ли монстр боссом</param> /// <param name="max_health">Здоровье монстра</param> /// <param name="regeneration">Регенерация (восстановление здоровья) монстра</param> /// <param name="max_energy">Энергия монстра</param> /// <param name="restore">Восстановление (возобновление энергии) монстра</param> /// <param name="power">Сила монстра</param> /// <param name="mobility">Ловкость монстра</param> /// <param name="speed">Скорость монстра</param> public DungeonMonster(Bitmap texture, string name = "Монстр", bool is_boss = false, double max_health = 50, double regeneration = 0, double max_energy = 25, double restore = 0.5, double power = 5, double mobility = 0, double speed = 1) : base(texture, name, max_health, regeneration, max_energy, restore, power, mobility, speed, 0, 0) { m_is_boss = is_boss; m_is_attached_to_room = false; m_action_status = DungeoMonsterActionStatus.AFK; m_thinking_timer_is_working = false; m_moving_timer_is_working = false; InitializeTimers(); }
/// <summary>Монстр переходит в состояние сражения с героем</summary> public void StartFighting() { m_action_status = DungeoMonsterActionStatus.Fighting; }