Esempio n. 1
0
 internal void StartLife()
 {
     Observable.Interval(TimeSpan.FromSeconds(1)).Subscribe(x =>
     {
         try
         {
             if (Monsters.Count(s => s.IsAlive) == 0)
             {
                 OnMapClean.ForEach(e =>
                 {
                     EventHelper.Instance.RunEvent(e);
                 });
                 OnMapClean.RemoveAll(s => s != null);
             }
             if (!IsSleeping)
             {
                 RemoveMapItem();
             }
         }
         catch (Exception e)
         {
             Logger.Error(e);
         }
     });
 }
Esempio n. 2
0
        public async void MonsterLifeManager()
        {
            var  rnd             = new Random();
            Task MonsterLifeTask = null;

            foreach (MapMonster monster in Monsters.OrderBy(i => rnd.Next()))
            {
                MonsterLifeTask = new Task(() => monster.MonsterLife());
                MonsterLifeTask.Start();
                await Task.Delay(rnd.Next(1000 / Monsters.Count(), 1000 / Monsters.Count()));
            }
        }
Esempio n. 3
0
        public void Start()
        {
            var lastMonster    = Monsters.Last();
            var secondMonster  = Monsters.Skip(1).First();
            var lowHPMonster   = Monsters.Where(p => p.HP < 20).First();
            var highStrMonster = Monsters.Where(p => p.Strength >= 11).First();
            var randomMonster  = Monsters.ElementAt(new Random().Next(0, Monsters.Count()));

            if (Monster == null)
            {
                Monster = randomMonster;
            }
            Console.WriteLine();
            Console.WriteLine("**************** BATTLE ****************");
            Console.WriteLine("You've encountered a " + Monster.Name + "! ");
            while (Hero.HP > 0 && Monster.HP > 0)
            {
                Console.WriteLine($"[{Monster.Name}] STR: {Monster.Strength} | DEF: {Monster.Defense} | HP: {Monster.HP} / {Monster.OriginalHP} | SPD: {Monster.Speed}");
                Console.WriteLine("What will you do?");
                Console.WriteLine("1. Fight *");
                if (Hero.Speed > Monster.Speed)
                {
                    Console.WriteLine("2. Flee");
                }
                var input = Console.ReadLine();
                if (input == "1" || input == "")
                {
                    this.HeroTurn();
                }
                else if (Hero.Speed > Monster.Speed && input == "2")
                {
                    Flee();
                    return;
                }
                else
                {
                    Console.WriteLine("" +
                                      "Unknown command!");
                }
            }
        }
Esempio n. 4
0
 internal void StartLife()
 {
     Observable.Interval(TimeSpan.FromSeconds(5)).Subscribe(x =>
     {
         if (InstanceBag?.EndState != 1)
         {
             WaveEvents.ForEach(s =>
             {
                 if (s.LastStart.AddSeconds(s.Delay) <= DateTime.Now)
                 {
                     if (s.Offset == 0)
                     {
                         s.Events.ForEach(e => EventHelper.Instance.RunEvent(e));
                     }
                     s.Offset    = s.Offset > 0 ? (byte)(s.Offset - 1) : (byte)0;
                     s.LastStart = DateTime.Now;
                 }
             });
             try
             {
                 if (Monsters.Count(s => s.IsAlive) == 0)
                 {
                     OnMapClean.ForEach(e => EventHelper.Instance.RunEvent(e));
                     OnMapClean.RemoveAll(s => s != null);
                 }
                 if (!IsSleeping)
                 {
                     RemoveMapItem();
                 }
             }
             catch (Exception e)
             {
                 Logger.Error(e);
             }
         }
     });
 }
Esempio n. 5
0
 private int GetInvokationNumber()
 {
     return(Monsters.Count(informations => informations.Stats.Summoner == Fighter.Id));
 }