Exemple #1
0
 static public Task ActAsync(TargetSpaceCtx ctx)
 {
     // 1 fear.
     ctx.AddFear(1);
     // Invaders skip Ravage Actions.
     ctx.SkipRavage();
     return(Task.CompletedTask);
 }
Exemple #2
0
    public static async Task ActAsync(TargetSpaceCtx ctx)
    {
        // add 1 beast
        await ctx.Beasts.Add(1);

        // Gather up to 1 beast.
        await ctx.GatherUpTo(1, TokenType.Beast);

        // if you have 2 air 2 earth 3 animal: after this power causes invaders to skip an action, 4 damage.
        Func <GameState, Space, Task> causeAdditionalDamage = await ctx.YouHave("2 air,3 animal")
                        ? (GameState gs, Space space) => ctx.Self.BindMyPower(gs).Target(space).DamageInvaders(4)
                        : null;

        // For each beast,
        int count = ctx.Beasts.Count;

        // 1 fear (max 4) and
        ctx.AddFear(System.Math.Min(4, count));
        for (int i = 0; i < count; ++i)
        {
            // Invaders skip one Action in target land.
            string skipPhase = await ctx.Self.SelectText($"Select Invader Phase to skip.({i+1} of {count})", new[] { "Ravage", "Build", "Explore" }, Present.Always);

            switch (skipPhase)
            {
            case "Ravage": ctx.SkipRavage(causeAdditionalDamage); break;

            case "Build": ctx.Skip1Build(causeAdditionalDamage); break;

            case "Explore": ctx.SkipExplore(causeAdditionalDamage); break;
            }
        }

        // !!! Issue 1 - Shouldn't be able to skip ravage twice if there is only 1 ravage occurring
        // !!! Issue 2 - Shouldn't be able to skip actions that don't happen
        // !!! Issue 3 - Shouldn't have to pick action until it happens.
        // This will help limit damage to 4 instead of 4 * # of beasts.
        // !!! If there are multiple 'skips' players should be able to decide which ones to take and in which order.
    }