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); } }); }
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())); } }
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!"); } } }
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); } } }); }
private int GetInvokationNumber() { return(Monsters.Count(informations => informations.Stats.Summoner == Fighter.Id)); }