static public async Task ActAsync(TargetSpiritCtx ctx) { // You and other spirit share presence for targeting if (ctx.Self != ctx.Other) { ctx.GameState.TimePasses_ThisRound.Push(new SourceCalcRestorer(ctx.Self).Restore); ctx.GameState.TimePasses_ThisRound.Push(new SourceCalcRestorer(ctx.Other).Restore); _ = new EntwinedPresenceSource(ctx.Self, ctx.Other); // auto-binds to spirits } // Target spirit gains a power Card. var result = await ctx.OtherCtx.Draw(); // You gain one of the power Cards they did not keep. await DrawFromDeck.TakeCard(ctx.Self, result.Rejected.ToList()); // if you have 2 water, 4 plant, if (await ctx.YouHave("2 water,4 plant")) { // you and target spirit each gain 3 energy ctx.Self.Energy += 3; ctx.Other.Energy += 3; // may gift the other 1 power from hand. await GiftCardToSpirit(ctx.Self, ctx.Other); await GiftCardToSpirit(ctx.Other, ctx.Self); } }
static public async Task ActAsync(TargetSpiritCtx ctx) { // if you target yourself if (ctx.Other == ctx.Self) { // Draw minor await ctx.DrawMinor(); return; } // Otherwise: Target Spirit gains a Power Card. var powerType = await DrawFromDeck.SelectPowerCardType(ctx.Self); if (powerType == PowerType.Minor) { await ctx.OtherCtx.DrawMinor(); } else { await ctx.OtherCtx.DrawMajor(false, 4); // If it's a Major Power, they may pay 2 Energy instead of Forgetting a Power Card. if (ctx.Other.Energy >= 2 && await ctx.Other.UserSelectsFirstText("Pay for Major Card", "2 energy", "forget a card")) { ctx.Other.Energy -= 2; } else { await ctx.Other.ForgetPowerCard_UserChoice(); } } }