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); }
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)) )); }
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); } }
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) )); }
static public async Task ActAsync(TargetSpaceCtx ctx) { // 2 damage await ctx.DamageInvaders(2); // push 1 explorer await ctx.Push(1, Invader.Explorer); }
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); } }
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); } }
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)); }