예제 #1
0
        private async void OnDeath(EntityGameEvent e)
        {
            if (!e.GameState.Entities.TryGetValue(e.Data, out var entity))
            {
                return;
            }
            if (!entity.IsMinion)
            {
                return;
            }
            if (entity.IsControlledBy(e.GameState.CurrentPlayerEntity?.PlayerId ?? 0))
            {
                return;
            }
            if (!TryGetSecrets(e.GameState.CurrentPlayerEntity, out var secrets))
            {
                return;
            }
            var solved = _secretSolver.SolveMinionDeath(entity).ToList();

            if (entity.IsActiveDeathrattle)
            {
                await _gameState.GameTime.Wait(500);
            }
            solved.AddRange(_secretSolver.SolveMinionDeathDeathrattles(entity));
            Resolve(solved, secrets);
        }
예제 #2
0
 private void OnCardPlayed(EntityGameEvent e)
 {
     if (!e.GameState.Entities.TryGetValue(e.Data, out var entity))
     {
         return;
     }
     if (!entity.IsControlledBy(e.GameState.CurrentPlayerEntity?.PlayerId ?? 0))
     {
         return;
     }
     if (!TryGetSecrets(entity, out var secrets))
     {
         return;
     }
     Resolve(_secretSolver.SolveCardPlayed(entity), secrets);
 }
예제 #3
0
        private void OnCardStolen(EntityGameEvent e)
        {
            if (!e.GameState.Entities.TryGetValue(e.Data, out var entity))
            {
                return;
            }
            if (!entity.IsSecret)
            {
                return;
            }
            var secret = _secrets.FirstOrDefault(x => x.Entity == entity);

            if (secret == null)
            {
                return;
            }
            // TODO: Solve all but known
            // do this when secrets gets a cardid instead?
        }