static public Task ActAsync(TargetSpaceCtx ctx)
    {
        // Isolate target land.
        ctx.Isolate();

        // Each Invader does -1 Damage.
        ctx.ModifyRavage(cfg => cfg.DamageFromAttacker = (attacker) => attacker.FullHealth + (attacker.Class.Category == TokenCategory.Invader ? -1 : 0));

        return(Task.CompletedTask);
    }
Exemplo n.º 2
0
    static public async Task ActAsync(TargetSpaceCtx ctx)
    {
        // Dahan have +4 health while in target land.
        await DahanHelper.BoostDahanHealthForRound(ctx, 4);

        // whenever blight would be added to target land, instead leave it on the card
        ctx.Blight.Blocked = true;

        if (await ctx.YouHave("4 earth"))
        {
            // Dahan ignore damage and destruction effects.
            ctx.ModifyRavage(cfg => { cfg.ShouldDamageDahan = false; });               // !!! this only stops dahan destruction during RAVAGE.  Needs to protect from power cards too.
            // Remove 1 blight from target or adjacent
            await RemoveBlightFromLandOrAdjacent(ctx);
        }
    }
Exemplo n.º 3
0
    static Task DuringRavage_InvadersDamageInvadersInAdjacentLandsInsteadOfDahan(TargetSpaceCtx ctx)
    {
        // Note - this works regardless of them ravaging in target land or not. yay!
        int damageFromStrifedInvaders = ctx.Tokens.Invaders().OfType <HealthToken>().Where(x => x.StrifeCount > 0).Sum(si => si.FullHealth * ctx.Tokens[si]);

        async Task Sequence(RavageAction eng)
        {
            // they damage invaders in adjacent lands instead of dahan and the land.
            var invaderSpaceCtx = await ctx.SelectAdjacentLand($"Apply {damageFromStrifedInvaders} damage to", x => x.HasInvaders);

            if (invaderSpaceCtx != null)
            {
                await StrifedRavage.DamageUnStriffed(invaderSpaceCtx, damageFromStrifedInvaders);
            }
            // dahan in target land do not fight back.
        }

        ctx.ModifyRavage(cfg => cfg.RavageSequence = Sequence);
        return(Task.CompletedTask);
    }