Beispiel #1
0
    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);
        }
    }
Beispiel #2
0
    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();
            }
        }
    }