static public Task Act(TargetSpaceCtx ctx) { return(ctx.SelectActionOption( new SpaceAction($"Each dahan deals 1 damage to a different invader", ctx => ctx.Apply1DamageToDifferentInvaders(ctx.Dahan.Count)), new SpaceAction("push up to 3 dahan", ctx => ctx.PushUpToNDahan(3)) )); }
static public Task Act(TargetSpaceCtx ctx) { return(ctx.SelectActionOption( new SpaceAction("push up to 4 dahan", ctx => ctx.PushUpToNDahan(4)).Matches(x => x.Dahan.Any), new SpaceAction("2 fear", ctx => ctx.AddFear(2)).Matches(x => x.Tokens.HasInvaders()) )); }
static public Task ActAsync(TargetSpaceCtx ctx) { return(ctx.SelectActionOption( new SpaceAction("remove 1 blight", ctx => ctx.RemoveBlight()), new SpaceAction("push up to 3 dahan", ctx => ctx.PushUpToNDahan(3)) )); }
static async Task ActInnerAsync(TargetSpaceCtx ctx) { bool hasDahan = ctx.Dahan.Any; bool hasInvaders = ctx.HasInvaders; // If no dahan / Invaders are present: Remove 1 blight. if (!hasDahan && !hasInvaders) { await ctx.RemoveBlight(); } // If invaders are present: they Build, then Ravage if (hasInvaders) { await ctx.GameState.GetBuildEngine() .Exec( new BuildingEventArgs(ctx.GameState, new Dictionary <Space, BuildingEventArgs.BuildType>()), ctx.Tokens, ctx.GameState ); await new RavageAction(ctx.GameState, ctx.Invaders).Exec(); } // If dahan are present: Add 1 dahan. Push up to 2 dahan. if (hasDahan) { await ctx.Dahan.Add(1); await ctx.PushUpToNDahan(2); } }
static public async Task ActAsync(TargetSpaceCtx ctx) { // Add 1 badland. await ctx.Badlands.Add(1); // Push up to 2 dahan. await ctx.PushUpToNDahan(2); }
static public async Task OptionAsync(TargetSpaceCtx ctx) { var elements = ctx.Self.Elements; int gatherCount = elements[Element.Air]; int pushCount = elements[Element.Sun]; await ctx.GatherUpToNDahan(gatherCount); await ctx.PushUpToNDahan(pushCount); }
static public async Task ActAsync(TargetSpaceCtx ctx) { // 2 damange. await ctx.DamageInvaders(2); // Push up to 2 dahan. await ctx.PushUpToNDahan(2); // When your Powers would destroy invaders, instead they generate fear and/or push those invaders // NO! - Bringer gets this by default // If this card is traded to another spirit, it is too hard to swap out their InvaderGroup builder }
static public async Task ActionAsync(TargetSpaceCtx ctx) { // Push up to 2 dahan. var destinationSpaces = await ctx.PushUpToNDahan(2); // if pushed dahan into town or city bool pushedToBuildingSpace = destinationSpaces .Any(neighbor => ctx.Target(neighbor).Tokens.HasAny(Invader.Town, Invader.City)); if (pushedToBuildingSpace) { ctx.AddFear(1); } }
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); }
public static async Task ActAsync(TargetSpaceCtx ctx) { // 2 damage per dahan in target land await ctx.DamageInvaders(2 *ctx.Dahan.Count); if (await ctx.YouHave("3 sun,2 animal")) { // you may push up to 2 dahan. var pushedToLands = await ctx.PushUpToNDahan(2); // 2 damage per dahan foreach (var neighbor in pushedToLands.Distinct()) { await DahanDeal2DamageEach(ctx.Target(neighbor)); } } }
static public async Task ActionAsync(TargetSpaceCtx ctx) { // for each dahan in target land, 1 damage and defend 2 // -- damage -- await ctx.DamageInvaders(ctx.Dahan.Count); // if you have 2 sun, 2 earth, 2 plant if (await ctx.YouHave("2 sun, 2 earth, 2 plant")) { // you may push up to 2 dahan Space[] dest = await ctx.PushUpToNDahan(2); // defend pushed foreach (var d in dest) { ctx.Target(d).Defend(2); } } // -- defend remaining -- ctx.Defend(ctx.Dahan.Count * 2); }
static public Task Option1(TargetSpaceCtx ctx) { return(ctx.PushUpToNDahan(1)); }
static public async Task ActAsync(TargetSpaceCtx ctx) { await ctx.GatherUpToNDahan(3); await ctx.PushUpToNDahan(3); }