static public async Task ActAsync(TargetSpaceCtx ctx) { // destroy all explorers. await ctx.Invaders.Destroy(int.MaxValue, Invader.Explorer); // Add 1 wilds. await ctx.Wilds.Add(1); // Add 1 wilds in the originating Sands. // !! won't find original if this was picked using a range-extender - would need to capture that info during the targetting process var originatingOptions = ctx.Range(1) .Where(a => ctx.Self.Presence.Spaces.Contains(a) && a.IsSand) .ToArray(); var originalCtx = await ctx.SelectSpace("Select origination space", originatingOptions, Present.AutoSelectSingle); if (originalCtx != null) { await originalCtx.Wilds.Add(1); } // 1 damage per wilds in / adjacent to target land. int wildsDamage = ctx.Space.Range(1).Sum(s => ctx.Target(s).Wilds.Count); // if you have 2 fire, 3 plant: // +1 damage per wilds in / adjacent to target land. if (await ctx.YouHave("2 fire,3 plant")) { wildsDamage += wildsDamage; } await ctx.DamageInvaders(wildsDamage); }
static public async Task ActAsync(TargetSpaceCtx ctx ) { // 1 fear. ctx.AddFear(1); // add 1 badlands. await ctx.Badlands.Add(1); // Add 1 beast within 1 range. var spaceCtx = await ctx.SelectSpace("Add beast", ctx.FindSpacesWithinRangeOf(1,Target.Any)); await spaceCtx.Beasts.Add(1); // Push up to 2 dahan. await ctx.PushUpToNDahan(2); }