public static async Task ActAsync(TargetSpaceCtx ctx) { // 1 Damage to each town / city / dahan. await ctx.DamageEachInvader(1, Invader.Town, Invader.City); await ctx.Apply1DamageToEachDahan(); // 1 Damage await ctx.DamageInvaders(1); // 1 Damage to dahan. await ctx.DamageDahan(1); }
static async Task PerformEffect(TargetSpaceCtx ctx) { // Gather 1 explorer,town,city,dahan,presence, and beast from each adjacent land. var tokenGroups = new TokenClass[] { Invader.Explorer, Invader.Town, Invader.City, TokenType.Dahan, TokenType.Beast }; foreach (var adj in ctx.Adjacent) { // move tokens var tokenCounts = ctx.GameState.Tokens[adj]; foreach (var tokenGroup in tokenGroups) { var tokenToGather = tokenCounts.OfType(tokenGroup).OrderByDescending(x => x.RemainingHealth).FirstOrDefault(); if (tokenToGather != null) { await ctx.GameState.Tokens[adj].MoveTo(tokenToGather, ctx.Space); } } // move presense var spiritsInSpace = ctx.GameState.Spirits.Where(s => s.Presence.IsOn(adj)).ToArray(); if (spiritsInSpace.Length > 0) { var spiritToGather = await ctx.Decision(new Select.Spirit(Name, spiritsInSpace, Present.AutoSelectSingle)); // !!! switch to Gather Presence when we can support multiple spirits spiritToGather.Presence.Move(adj, ctx.Space, ctx.GameState); } } // 4 fear. 15 damage. 5 damage to dahan. ctx.AddFear(4); await ctx.DamageInvaders(15); await ctx.DamageDahan(5); // destroy 1 presence from each Spirit. foreach (var spirit in ctx.GameState.Spirits) { if (spirit.Presence.IsOn(ctx.Space)) { await spirit.Presence.Destroy(ctx.Space, ctx.GameState, DestoryPresenceCause.SpiritPower); } } // Remove 2 beast await ctx.Beasts.Remove(2, RemoveReason.Removed); }
static public async Task ActAsync(TargetSpaceCtx ctx) { // 1 fear. ctx.AddFear(1); // 1 damage. await ctx.DamageInvaders(1); // 1 Damage to Dahan await ctx.DamageDahan(1); // Add 1 badlands, 1 beast, 1 disease, 1 strife, 1 wilds, and 1 blight. await ctx.Badlands.Add(1); await ctx.Beasts.Add(1); await ctx.AddStrife(); await ctx.Wilds.Add(1); await ctx.AddBlight(1); }
static async Task ApplyPowerOnTarget(TargetSpaceCtx ctx) { // add 1 blight. await ctx.AddBlight(1); // Add 2 beasts var beasts = ctx.Beasts; await beasts.Add(2); // Gather up to 2 beasts await ctx.GatherUpTo(2, TokenType.Beast); // each beast deals: // 1 fear ctx.AddFear(beasts.Count); // 2 damage to invaders await ctx.DamageInvaders(beasts.Count * 2); // and 2 damage to dahan. await ctx.DamageDahan(beasts.Count); // Destroy 1 beast. await beasts.Destroy(1); }