Exemple #1
0
    static public async Task ActAsync(TargetSpaceCtx ctx)
    {
        // replace 1 city with 2 exploreres.
        await ReplaceInvader.SingleInvaderWithExplorers(ctx.Self, ctx.Invaders, Invader.City, 2);

        // replace 1 town with 1 explorer
        await ReplaceInvader.SingleInvaderWithExplorers(ctx.Self, ctx.Invaders, Invader.Town, 1);

        // replace 1 dahan with 1 explorer.
        if (await ctx.Tokens.Dahan.Remove1(RemoveReason.Replaced) != null)
        {
            await ctx.Tokens.AddDefault(Invader.Explorer, 1, AddReason.AsReplacement);
        }

        // if you have 2 fire 2 water 3 animal
        if (await ctx.YouHave("2 fire,2 water,3 animal"))
        {
            // before pushing, explorers and city/town do damage to each other
            int damageFromExplorers = ctx.Tokens.Sum(Invader.Explorer);
            int damageToExplorers   = ctx.Tokens.Sum(Invader.City) * 3 + ctx.Tokens.Sum(Invader.Town) * 2;
            await ctx.DamageInvaders(damageFromExplorers, Invader.City, Invader.Town);

            await ctx.DamageInvaders(damageToExplorers, Invader.Explorer);
        }

        // Push all explorers from target land to as many different lands as possible
        await ctx.Push(int.MaxValue, Invader.Explorer);
    }
Exemple #2
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))
                ));
 }
Exemple #3
0
    static public async Task ActAsymc(TargetSpaceCtx ctx)
    {
        // 1 fear if invaders are present.
        if (ctx.HasInvaders)
        {
            ctx.AddFear(1);
        }

        var beastSources = ctx.Adjacent.Where(s => ctx.Target(s).Beasts.Any).ToArray();

        // If you can gather 1 beast,
        if (beastSources.Length > 0)
        {
            // do so,
            await ctx.Gather(1, TokenType.Beast);

            // then push 1 explorer.
            await ctx.Push(1, Invader.Explorer);
        }
        else
        {
            // othersie, add 1 beast
            await ctx.Beasts.Add(1);
        }
    }
Exemple #4
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)
                ));
 }
Exemple #5
0
    static public async Task ActAsync(TargetSpaceCtx ctx)
    {
        // 2 damage
        await ctx.DamageInvaders(2);

        // push 1 explorer
        await ctx.Push(1, Invader.Explorer);
    }
Exemple #6
0
    static public async Task ActAsync(TargetSpaceCtx ctx)
    {
        await ctx.Push(1, Invader.Explorer);

        if (ctx.Space.IsOneOf(Terrain.Mountain, Terrain.Jungle))
        {
            await ctx.Wilds.Add(1);
        }
    }
Exemple #7
0
    static public async Task ActionAsync(TargetSpaceCtx ctx)
    {
        int explorerCount = ctx.Tokens.Sum(Invader.Explorer);

        if (0 < explorerCount)
        {
            await ctx.Push(explorerCount, Invader.Explorer);
        }
        else
        {
            await ctx.RemoveBlight();
        }
    }
    static public async Task Act(TargetSpaceCtx ctx)
    {
        // 1 fear
        ctx.AddFear(1);

        // Push 1 explorer/town
        await ctx.Push(1, Invader.Explorer, Invader.Town);

        if (await ctx.YouHave("2 fire"))
        {
            ctx.AddFear(1);
        }
    }
    static public async Task ActAsync(TargetSpaceCtx ctx)
    {
        // push 2 exploeres / towns / dahan
        // push another 2 explorers / towns / dahan pers beast in target land
        int pushCount = 2 + 2 * ctx.Beasts.Count;

        int startingInvaderCount = ctx.Tokens.InvaderTotal();

        // first push invaders
        await ctx.Push(pushCount, TokenType.Dahan, Invader.Explorer, Invader.Town);

        // if you pushed any invaders, 2 fear
        if (ctx.Tokens.InvaderTotal() < startingInvaderCount)
        {
            ctx.AddFear(2);
        }
    }
Exemple #10
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 Task Option1(TargetSpaceCtx ctx)
 {
     // push 1 explorer from target land per 2 sun you have
     return(ctx.Push(ctx.Self.Elements[Element.Sun] / 2, Invader.Explorer));
 }
 static public Task Option1Async(TargetSpaceCtx ctx)
 {
     // Push 1 Town/Explorer
     return(ctx.Push(1, Invader.Town, Invader.Explorer));
 }