예제 #1
0
 static public Task ActionAsync(TargetSpaceCtx ctx)
 {
     return(ctx.SelectActionOption(
                new SpaceAction("Push 1 town", ctx => ctx.Push(1, Invader.Town)).Matches(x => x.Tokens.Has(Invader.Town)),
                new SpaceAction("Push 3 dahan", ctx => ctx.PushDahan(3)).Matches(x => x.Dahan.Any)
                ));
 }
예제 #2
0
 static public Task ActAsync(TargetSpaceCtx ctx)
 {
     return(ctx.SelectActionOption(
                new SpaceAction("Defend 4", ctx => ctx.Defend(4)),
                new SpaceAction("Invaders added to target are immediately pushed", PushFutureInvadersFromLands)
                ));
 }
예제 #3
0
 static public async Task ActAsync(TargetSpaceCtx ctx)
 {
     await ctx.SelectActionOption(
         new SpaceAction("Add 1 disease and 1 strife", AddDiseaseAndStrife ),
         new SpaceAction("Remove any # of beast/disease/strife/wilds for 1 fear + 3 damage each", RemoveTokensForFearAndDamage )
         );
 }
예제 #4
0
 static public Task ActAsync(TargetSpaceCtx ctx)
 {
     return(ctx.SelectActionOption(
                new SpaceAction("Gather up to 3 dahan", ctx => ctx.GatherUpToNDahan(3)),
                new SpaceAction("1 fear and push 1 explorer and 1 town", FearAndPushExplorerAndTown).Matches(x => x.Dahan.Any)
                ));
 }
예제 #5
0
 static public Task Act(TargetSpaceCtx ctx)
 {
     return(ctx.SelectActionOption(
                Cmd.PushNDahan(1),
                Cmd.PushExplorersOrTowns(ctx.Dahan.Count)
                ));
 }
예제 #6
0
 public static Task ActAsync(TargetSpaceCtx ctx)
 {
     return(ctx.SelectActionOption(
                new SpaceAction("Gather 1 explorer/town", ctx => ctx.GatherUpTo(1, Invader.Explorer, Invader.Town)),
                new SpaceAction("Gather up to 2 dahan", ctx => ctx.GatherUpToNDahan(2))
                ));
 }
예제 #7
0
 static public Task Option1(TargetSpaceCtx ctx)
 {
     return(ctx.SelectActionOption(
                Cmd.PushUpToNExplorers(2),
                Cmd.PushUpToNTowns(1)
                ));
 }
예제 #8
0
 static public Task ActAsync(TargetSpaceCtx ctx)
 {
     return(ctx.SelectActionOption(
                new SpaceAction("2 Damage", ctx => ctx.DamageInvaders(2)).Matches(x => x.HasInvaders),
                new SpaceAction("Remove 1 Blight", ctx => ctx.RemoveBlight()).Matches(x => x.HasBlight)
                ));
 }
예제 #9
0
 static public Task ActAsync(TargetSpaceCtx ctx)
 {
     return(ctx.SelectActionOption(
                Cmd.Destroy2FewerDahan,    // !! The next time dahan would be destroyed in target land, Destroy 2 fewer dahan.
                Cmd.PushUpToNDahan(3)      // Push up to 3 dahan
                ));
 }
예제 #10
0
 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))
                ));
 }
예제 #11
0
 static public Task ActAsync(TargetSpaceCtx ctx)
 {
     return(ctx.SelectActionOption(
                new SpaceAction("Draw Major Power", DrawMajorOrGetEnergy).Matches(x => x.Dahan.Any),        // if target land has dahan
                new SpaceAction("2 fear", ctx => ctx.AddFear(2)).Matches(x => x.HasInvaders)
                ));
 }
예제 #12
0
 static public Task ActionAsync(TargetSpaceCtx ctx)
 {
     return(ctx.SelectActionOption(
                new SpaceAction("Push 1 Explorer", ctx => ctx.Push(1, Invader.Explorer)),
                new SpaceAction("2 fear", ctx => ctx.AddFear(2))
                ));
 }
예제 #13
0
 static async Task DoPower(TargetSpaceCtx ctx)
 {
     await ctx.SelectActionOption(
         new SpaceAction( "Push explorers and towns toward nearest ocean", PushExplorersAndTownsTowardsOcean ),
         new SpaceAction( "Destroy all explorers and towns", ctx => ctx.Invaders.DestroyAny(int.MaxValue, Invader.Explorer, Invader.Town)).Matches(x => x.IsCoastal)
         );
 }
예제 #14
0
 static public Task ActAsync(TargetSpaceCtx ctx)
 {
     return(ctx.SelectActionOption(
                new SpaceAction("1 fear, add beast", FearAndBeast),
                new SpaceAction("destroy 1 explorer/town", DestroyExplorerTown).Matches(x => x.Beasts.Any)
                ));
 }
예제 #15
0
 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))
                ));
 }
예제 #16
0
 static public Task ActAsync(TargetSpaceCtx ctx)
 {
     return(ctx.SelectActionOption(
                new SpaceAction("1 damage", ctx => ctx.DamageInvaders(1)),
                new SpaceAction("Defend 4", ctx => ctx.Defend(4))
                ));
 }
예제 #17
0
 static public Task ActAsync(TargetSpaceCtx ctx)
 {
     return(ctx.SelectActionOption(
                Cmd.AddWilds(1),
                Cmd.PushUpToNExplorers(1)
                ));
 }
예제 #18
0
 static public Task Act(TargetSpaceCtx ctx)
 {
     return(ctx.SelectActionOption(
                new SpaceAction("1 damage per dahan", ctx => ctx.DamageInvaders(ctx.Dahan.Count)),
                new SpaceAction("gather up to 3 dahan", ctx => ctx.GatherUpToNDahan(3))
                ));
 }
예제 #19
0
 static public Task ActAsync(TargetSpaceCtx ctx)
 {
     return(ctx.SelectActionOption(
                new SpaceAction("1 fear, Destroy 1 explorer", FearAndExplorer),
                new SpaceAction("add 1 wilds", ctx => ctx.Wilds.Add(1))
                ));
 }
예제 #20
0
 static public Task ActAsync(TargetSpaceCtx ctx)
 {
     return(ctx.SelectActionOption(
                Cmd.DamageToTownOrExplorer(3),
                Cmd.AddStrife(1)
                ));
 }
 static public Task Option2(TargetSpaceCtx ctx)
 {
     return(ctx.SelectActionOption(
                DahanDamage,
                Cmd.PushUpToNDahan(3)
                ));
 }
예제 #22
0
 static public Task ActAsync(TargetSpaceCtx ctx)
 {
     return(ctx.SelectActionOption(
                new SpaceAction("Add 1 disease", ctx => ctx.Disease.Add(1)),
                new SpaceAction("2 fear, +1(if disease) +1(if blight)", AddFear).Matches(x => x.Tokens.HasInvaders())
                ));
 }
예제 #23
0
 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())
                ));
 }
예제 #24
0
 static public Task ActAsync(TargetSpaceCtx ctx)
 {
     return(ctx.SelectActionOption(
                new SpaceAction("add disease ", ctx => ctx.Disease.Add(1)),
                new SpaceAction("1 fear and 1 strife", FearAndStrife)
                ));
 }
예제 #25
0
 public static Task ActAsync(TargetSpaceCtx ctx)
 {
     return(ctx.SelectActionOption(
                new SpaceAction("+1 badland, +1 wilds", ctx => { ctx.Badlands.Add(1); ctx.Wilds.Add(1); }),
                new SpaceAction("1 damage", ctx => ctx.DamageInvaders(1))
                ));
 }
예제 #26
0
 static public Task ActAsync(TargetSpaceCtx ctx)
 {
     return(ctx.SelectActionOption(
                new SpaceAction("1 damage to each town/city", ctx => ctx.DamageEachInvader(1, Invader.City, Invader.Town)),
                new SpaceAction("defend 10", ctx => ctx.Defend(10))
                ));
 }
 static public Task ActAsync(TargetSpaceCtx ctx)
 {
     return(ctx.SelectActionOption(
                new SpaceAction("For each dahan, 1 Damage to town/city.", EachDahanDamagesTownOrCity),
                new SpaceAction("1 Fear. Gather up to 2 Dahan", OneFearAndGatherUpTo2Dahan)
                ));
 }
 static public async Task ActAsync(TargetSpaceCtx ctx)
 {
     await ctx.SelectActionOption(
         new SpaceAction("1 fear, add 1 beast", ctx => { ctx.AddFear(1); ctx.Beasts.Add(1); } ),
         new SpaceAction("3 fear", ctx => ctx.AddFear(3))
         .Matches(x => ctx.Tokens.HasInvaders() && x.Beasts.Any)
         );
 }
예제 #29
0
    static public async Task ActAsync(TargetSpaceCtx ctx)
    {
        // Gather or Push 1 Explorer.
        await ctx.SelectActionOption(Cmd.GatherUpToNExplorers(1), Cmd.PushUpToNExplorers(1));

        // Isolate target land.
        ctx.Isolate();
    }
예제 #30
0
 static public Task ActAsync(TargetSpaceCtx ctx)
 {
     return(ctx.SelectActionOption(
                new SpaceAction("Gather up to 2 dahan", ctx => ctx.GatherUpToNDahan(2)),
                new SpaceAction("1 fear/dahan, max 3", ctx => ctx.AddFear(Math.Min(3, ctx.Dahan.Count)))
                .Matches(x => x.Tokens.HasAny(Invader.City, Invader.Town))
                ));
 }