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); }
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); } }
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); }