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); }
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); }
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? }