async Task DestroyNearbyPresence(ITokenRemovedArgs args) { if (args.Reason != RemoveReason.DestroyedInBattle) { return; } if (args.Token.Class != TokenType.Dahan) { return; } string prompt = $"{SwarnToVictory.Title}: {args.Count} dahan destroyed. Select presence to destroy."; int numToDestroy = args.Count; Space[] options; Space[] Calc() => args.Space.Range(1).Intersect(Presence.Spaces).ToArray(); while (numToDestroy-- > 0 && (options = Calc()).Length > 0) { var space = await this.Action.Decision(Select.DeployedPresence.ToDestroy(prompt, options, Present.Always)); await Presence.Destroy(space, args.GameState, DestoryPresenceCause.DahanDestroyed); } }