Beispiel #1
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))
                ));
 }
 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))
                ));
 }
 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)
                ));
 }
Beispiel #4
0
    static public async Task Act(TargetSpaceCtx ctx)
    {
        // you may gather 1 dahan
        await ctx.GatherUpToNDahan(1);

        // Each dahan destroys 1 explorer
        await ctx.Invaders.Destroy(ctx.Dahan.Count, Invader.Explorer);
    }
 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))
                ));
 }
Beispiel #6
0
    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);
    }
Beispiel #7
0
    static public async Task ActAsync(TargetSpaceCtx ctx)
    {
        // Gather up to 1 Dahan.
        await ctx.GatherUpToNDahan(1);

        // Then, if Dahan are present, either:
        if (ctx.Dahan.Any)
        {
            await ctx.SelectActionOption(Cmd.Defend1PerDahan, DamageAddedOrMovedInvaders);
        }
    }
Beispiel #8
0
    static public async Task ActionAsync(TargetSpaceCtx ctx)
    {
        // Gather up to 2 Dahan
        await ctx.GatherUpToNDahan(2);

        // If there are now at least 2 dahan, then add 1 dahan and gain 1 energy
        if (2 <= ctx.Dahan.Count)
        {
            await ctx.Dahan.Add(1);

            ++ctx.Self.Energy;
        }
    }
Beispiel #9
0
    static public async Task Act(TargetSpaceCtx ctx)
    {
        // gather up to 4 dahan
        await ctx.GatherUpToNDahan(4);

        // if invaders are present and dahan now out numberthem, 3 fear
        var invaderCount = ctx.Tokens.InvaderTotal();

        if (0 < invaderCount && invaderCount < ctx.Dahan.Count)
        {
            ctx.AddFear(3);
        }
    }
Beispiel #10
0
    static public async Task ActAsync(TargetSpaceCtx ctx)
    {
        // You may Gather 1 dahan
        await ctx.GatherUpToNDahan(1);

        // If the Terro Level is 2 or lower
        if (ctx.GameState.Fear.TerrorLevel <= 2)
        {
            // Gather 1 town
            await ctx.Gather(1, Invader.Town);

            // And the first ravage in target land becomes a build there instead.
            FirstRavageBecomesABuild(ctx);
        }
    }
Beispiel #11
0
    static public async Task ActAsync(TargetSpaceCtx ctx)
    {
        // if you have 2 sun, 2 air, 2 animal, // First Gather up to 3 dahan
        if (await ctx.YouHave("2 sun,2 air,2 animal"))
        {
            await ctx.GatherUpToNDahan(3);
        }

        // move up to 5 dahan from target land to any land.
        Space destination = await ctx.MoveTokensOut(max : 5, TokenType.Dahan, range : 100);

        // defend 5 in that land
        if (destination != null)
        {
            ctx.Target(destination).Defend(5);
        }
    }
Beispiel #12
0
    static public async Task ActAsync(TargetSpaceCtx ctx)
    {
        // A Spirit with presence on target board may add 1 of their Destroyed presence.
        var spiritOptions = ctx.GameState.Spirits.Where(s => s.Presence.Spaces.Any(s => s.Board == ctx.Space.Board) && 0 < s.Presence.Destroyed).ToArray();

        var other = await ctx.Decision(new Select.Spirit(Name, spiritOptions, Present.AutoSelectSingle));

        if (other != null)
        {
            await ctx.TargetSpirit(other).OtherCtx.Target(ctx.Space).Presence.PlaceDestroyedHere();
        }

        // Gather up to 2 dahan.
        await ctx.GatherUpToNDahan(2);

        // Push 1 blight.
        await ctx.Push(1, TokenType.Blight);
    }
    static public async Task ActAsync(TargetSpaceCtx ctx)
    {
        await ctx.GatherUpToNDahan(2);

        await DahanHelper.BoostDahanHealthForRound(ctx, 2);
    }
Beispiel #14
0
    static public async Task ActAsync(TargetSpaceCtx ctx)
    {
        await ctx.GatherUpToNDahan(3);

        await ctx.PushUpToNDahan(3);
    }
    static public async Task Act(TargetSpaceCtx ctx)
    {
        await ctx.GatherUpTo(2, Invader.Explorer);

        await ctx.GatherUpToNDahan(2);
    }
 static Task OneFearAndGatherUpTo2Dahan(TargetSpaceCtx ctx)
 {
     ctx.AddFear(1);
     return(ctx.GatherUpToNDahan(2));
 }