コード例 #1
0
    static public async Task ActAsync(TargetSpiritCtx ctx)
    {
        if (ctx.Other.Presence.Destroyed == 0)
        {
            return;
        }

        // into a single land, up to range 2 from your presence.
        // Note - Jonah says it is the originators power and range and decision, not the targets
        var spaceOptions = ctx.Self.GetTargetOptions(TargettingFrom.None, ctx.GameState, new TargetSourceCriteria(From.Presence), new TargetCriteria(2, Target.Any))
                           .Where(ctx.Other.Presence.IsValid)
                           .ToArray();
        TargetSpaceCtx selfPickLandCtx = await ctx.SelectSpace("Select location for target spirit to add presence", spaceOptions);

        // target spirit adds 2 of their destroyed presence
        await ctx.OtherCtx
        .Target(selfPickLandCtx.Space)
        .Presence.PlaceDestroyedHere(2);

        // if any presene was added, 2 damage to each town/city in that land.
        await selfPickLandCtx.DamageEachInvader(2, Invader.Town, Invader.City);

        // if you have 3 fire, 3 earth , 2 plant, 4 damage in that land
        if (await ctx.YouHave("3 fire,3 earth,2 plant"))
        {
            await selfPickLandCtx.DamageInvaders(4);
        }
    }
コード例 #2
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);
        }
    }
コード例 #3
0
    static public async Task ActAsync(TargetSpiritCtx ctx)
    {
        // destroy one of your presence
        await ctx.Presence.DestroyOne(DestoryPresenceCause.SpiritPower);

        // If 2 sun, do both in the same land
        await TargetSpiritAction(ctx.OtherCtx, await ctx.YouHave("2 sun"));
    }
コード例 #4
0
    static public async Task ActAsync(TargetSpiritCtx ctx)
    {
        // target Spirit gains a major power by drawing 2 and keeping 1, without having to forget another power card
        PowerCard card = (await ctx.OtherCtx.DrawMajor(false, 2)).Selected;

        // if 2 of each element,
        if (await ctx.YouHave("2 sun,2 moon,2 fire,2 air,2 water,2 earth,2 plant,2 animal"))
        {
            await PlayCardByPayingHalfCostOrForgetting(card, ctx.OtherCtx);
        }
    }
コード例 #5
0
    public static async Task ActAsync(TargetSpiritCtx ctx)
    {
        // Target Spirt may choose one of their Sacred Sites.
        var space = await ctx.OtherCtx.Presence.SelectSacredSite("Replace presence with badlands");

        await TargetSpiritActions(ctx.OtherCtx.Target(space));

        // if you have 3 moon,2 fire,2 air:
        if (await ctx.YouHave("3 moon,2 fire,2 air"))
        {
            var sCtx = ctx.Target(space);
            // 1 damage in an adjactnt land.
            await DamageInAdjacentLand(sCtx);

            // 1 damage in an adjactnt land.
            await DamageInAdjacentLand(sCtx);
        }
    }
コード例 #6
0
ファイル: PowerStorm.cs プロジェクト: rettigcd/spiritisland
    static public async Task ActionAsync(TargetSpiritCtx ctx)
    {
        // target spirit gains 3 energy
        ctx.Other.Energy += 3;

        // once this turn, target may repeat a power card by paying its cost again
        int repeats = 1;

        // if you have 2 sun, 2 fire, 3 air, target may repeat 2 more times by paying card their cost
        if (await ctx.YouHave("2 sun,2 fire,3 air"))
        {
            repeats += 2;
        }

        while (repeats-- > 0)
        {
            ctx.Other.AddActionFactory(new RepeatCardForCost(Name));
        }
    }
コード例 #7
0
    static public async Task ActAsync(TargetSpiritCtx ctx)
    {
        TargetSpaceCtx toCtx = await AddPresenceAndWilds(ctx.OtherCtx);

        // if you have 3 sun, 3 plant
        if (await ctx.YouHave("3 sun,3 plant"))
        {
            // in that land add 1 additional wilds
            await toCtx.Wilds.Add(1);

            // and remove 1 blight.
            var blight = toCtx.Blight;
            if (blight.Any)
            {
                await toCtx.RemoveBlight();
            }

            // Target Spirit gains a power card.
            await ctx.Self.Draw(ctx.GameState);
        }
    }
コード例 #8
0
 static public async Task ActAsync(TargetSpiritCtx ctx)
 {
     await TargetActions(ctx.OtherCtx, await ctx.YouHave("2 air,2 water"));
 }