예제 #1
0
 static public Task ActAsync(TargetSpaceCtx ctx)
 {
     return(ctx.SelectActionOption(
                Cmd.DamageToTownOrExplorer(3),
                Cmd.AddStrife(1)
                ));
 }
예제 #2
0
    static public async Task ActAsync(TargetSpaceCtx ctx)
    {
        switch (ctx.GameState.Fear.TerrorLevel)
        {
        case 1: ctx.AddFear(3); break;

        case 2: await ctx.SelectActionOption(Cmd.AddFear(2), Cmd.AddStrife(1)); break;

        case 3: await ctx.AddStrife(); break;
        }
    }
예제 #3
0
 static public ActionOption <GameState> EachPlayerAddsStrifeToNonRavageLand(int strifeCount)
 => Cmd.EachSpirit(
     Cmd.AddStrife(strifeCount).To(DoesNotMatchRavageCard, "land that does not match Ravage card")
     );
    public static async Task ActAsync(TargetSpaceCtx ctx)
    {
        // 6 damage.
        await ctx.DamageInvaders(6);

        // Add 2 badlands/strife
        var addBadlandsOrStrife = Cmd.Pick1("Add badlands/strife", Cmd.AddBadlands(1), Cmd.AddStrife(1));
        await addBadlandsOrStrife.Repeat(2).Execute(ctx);

        // and 1 blight.
        await ctx.AddBlight(1);

        await TakeActionInUpToNLands(ctx
                                     // In up to 3 adjacent lands with blight
                                     , 3, ctx.Adjacent.Where(s => ctx.Target(s).HasBlight)
                                     // add 1 badland/strife.
                                     , addBadlandsOrStrife
                                     );

        // if you have 3 fire 3 water:
        if (await ctx.YouHave("3 fire,3 water"))
        {
            await TakeActionInUpToNLands(ctx
                                         // in up to 3 adjacent lands,
                                         , 3, ctx.Adjacent
                                         // 1 damage to each invader.
                                         , new SpaceAction("1 damage to each invader", ctx => ctx.DamageEachInvader(1))
                                         );
        }
    }