public static async Task ActAsync(TargetSpaceCtx ctx)
    {
        // 1 Damage to each town / city / dahan.
        await ctx.DamageEachInvader(1, Invader.Town, Invader.City);

        await ctx.Apply1DamageToEachDahan();

        // 1 Damage
        await ctx.DamageInvaders(1);

        // 1 Damage to dahan.
        await ctx.DamageDahan(1);
    }
    static async Task PerformEffect(TargetSpaceCtx ctx)
    {
        // Gather 1 explorer,town,city,dahan,presence, and beast from each adjacent land.
        var tokenGroups = new TokenClass[] { Invader.Explorer, Invader.Town, Invader.City, TokenType.Dahan, TokenType.Beast };

        foreach (var adj in ctx.Adjacent)
        {
            // move tokens
            var tokenCounts = ctx.GameState.Tokens[adj];
            foreach (var tokenGroup in tokenGroups)
            {
                var tokenToGather = tokenCounts.OfType(tokenGroup).OrderByDescending(x => x.RemainingHealth).FirstOrDefault();
                if (tokenToGather != null)
                {
                    await ctx.GameState.Tokens[adj].MoveTo(tokenToGather, ctx.Space);
                }
            }
            // move presense
            var spiritsInSpace = ctx.GameState.Spirits.Where(s => s.Presence.IsOn(adj)).ToArray();
            if (spiritsInSpace.Length > 0)
            {
                var spiritToGather = await ctx.Decision(new Select.Spirit(Name, spiritsInSpace, Present.AutoSelectSingle));                     // !!! switch to Gather Presence when we can support multiple spirits

                spiritToGather.Presence.Move(adj, ctx.Space, ctx.GameState);
            }
        }

        // 4 fear.  15 damage. 5 damage to dahan.
        ctx.AddFear(4);
        await ctx.DamageInvaders(15);

        await ctx.DamageDahan(5);

        // destroy 1 presence from each Spirit.
        foreach (var spirit in ctx.GameState.Spirits)
        {
            if (spirit.Presence.IsOn(ctx.Space))
            {
                await spirit.Presence.Destroy(ctx.Space, ctx.GameState, DestoryPresenceCause.SpiritPower);
            }
        }

        // Remove 2 beast
        await ctx.Beasts.Remove(2, RemoveReason.Removed);
    }
示例#3
0
    static public async Task ActAsync(TargetSpaceCtx ctx)
    {
        // 1 fear.
        ctx.AddFear(1);

        // 1 damage.
        await ctx.DamageInvaders(1);

        // 1 Damage to Dahan
        await ctx.DamageDahan(1);

        // Add 1 badlands, 1 beast, 1 disease, 1 strife, 1 wilds, and 1 blight.
        await ctx.Badlands.Add(1);

        await ctx.Beasts.Add(1);

        await ctx.AddStrife();

        await ctx.Wilds.Add(1);

        await ctx.AddBlight(1);
    }
示例#4
0
        static async Task ApplyPowerOnTarget(TargetSpaceCtx ctx)
        {
            // add 1 blight.
            await ctx.AddBlight(1);

            // Add 2 beasts
            var beasts = ctx.Beasts;
            await beasts.Add(2);

            // Gather up to 2 beasts
            await ctx.GatherUpTo(2, TokenType.Beast);

            // each beast deals:
            // 1 fear
            ctx.AddFear(beasts.Count);
            // 2 damage to invaders
            await ctx.DamageInvaders(beasts.Count * 2);

            // and 2 damage to dahan.
            await ctx.DamageDahan(beasts.Count);

            // Destroy 1 beast.
            await beasts.Destroy(1);
        }