Exemplo n.º 1
0
    public static LocationCard NECROMANCERS_PASS()
    {
        LocationCard the_card = new LocationCard("Necromancer's Pass",
                                                 3, 2, "Travel: The first player must discard 2 cards from his hand at random to travel here."
                                                 , "ORC", new List <LOTRGame.TRAITS>()
        {
            LOTRGame.TRAITS.STRONGHOLD, LOTRGame.TRAITS.DOL_GULDUR
        }, "??");
        Func <GameArgs, bool> criteria = (GameArgs args) =>
        {
            LOTRPlayer first_player = args.relevant_player;
            return(first_player.get_cards_in_hand().Count >= 2);
        };

        the_card.set_travel_criteria(criteria);
        List <Func <EventArgs, Card, bool> > card_played_criteria = new List <Func <EventArgs, Card, bool> >()
        {
            CardEnablers.card_is_me
        };

        the_card.respond_to_event(GameEvent.LOCATION_TRAVELED,
                                  PlayerCardResponses.action_maker(card_played_criteria, EnemyCardResponses.necromancers_pass, the_card));

        return(the_card);
    }
Exemplo n.º 2
0
    public static LocationCard GREAT_FOREST_WEB()
    {
        LocationCard the_card = new LocationCard("Great Forest Web",
                                                 2, 2, "Travel: Each player must exhaust 1 hero he controls to travel here."
                                                 , "SPIDER", new List <LOTRGame.TRAITS>()
        {
            LOTRGame.TRAITS.FOREST
        }, "");
        Func <GameArgs, bool> criteria = (GameArgs args) =>
        {
            LOTRGame game = args.g;
            foreach (var player in game.get_players())
            {
                bool has_ready_character = false;
                foreach (var card in player.get_heroes())
                {
                    if (!card.is_exhausted())
                    {
                        has_ready_character = true;
                        break;
                    }
                }

                if (!has_ready_character)
                {
                    foreach (var card in player.get_allies())
                    {
                        if (!card.is_exhausted())
                        {
                            has_ready_character = true;
                            break;
                        }
                    }
                }

                if (!has_ready_character)
                {
                    return(false);
                }
            }
            return(true);
        };

        the_card.set_travel_criteria(criteria);
        List <Func <EventArgs, Card, bool> > card_played_criteria = new List <Func <EventArgs, Card, bool> >()
        {
            CardEnablers.card_is_me
        };

        the_card.respond_to_event(GameEvent.LOCATION_TRAVELED,
                                  PlayerCardResponses.action_maker(card_played_criteria, EnemyCardResponses.great_forest_web, the_card, valid_targets: CardEnablers.valid_targets_player_characters_ready));
        return(the_card);
    }
Exemplo n.º 3
0
    public static LocationCard FOREST_GATE()
    {
        LocationCard the_card = new LocationCard("Forest Gate",
                                                 2, 4, "Response: After you travel to Forest Gate, the first player may draw 2 cards."
                                                 , "TREE", new List <LOTRGame.TRAITS>()
        {
            LOTRGame.TRAITS.FOREST
        }, "??");

        the_card.respond_to_event(GameEvent.LOCATION_TRAVELED,
                                  PlayerCardResponses.action_maker(new List <Func <EventArgs, Card, bool> >()
        {
            CardEnablers.card_is_me
        }, EnemyCardResponses.forest_gate, the_card));
        return(the_card);
    }
Exemplo n.º 4
0
    public static LocationCard OLD_FOREST_ROAD()
    {
        LocationCard result = new LocationCard("Old Forest Road",
                                               1, 3, "Response: After you travel to Old Forest Road, the first player may choose and ready 1 character he controls."
                                               , "TREE", new List <LOTRGame.TRAITS>()
        {
            LOTRGame.TRAITS.FOREST
        }, "??");
        List <Func <EventArgs, Card, bool> > card_played_criteria = new List <Func <EventArgs, Card, bool> >()
        {
            CardEnablers.card_is_me, CardEnablers.has_exhausted_characters
        };

        result.respond_to_event(GameEvent.LOCATION_TRAVELED,
                                PlayerCardResponses.action_maker(card_played_criteria, EnemyCardResponses.old_forest_road, result, valid_targets: CardEnablers.valid_targets_player_characters_exhausted));
        return(result);
    }
Exemplo n.º 5
0
    public static LocationCard MOUNTAINS_OF_MIRKWOOD()
    {
        LocationCard the_card = new LocationCard("Mountains of Mirkwood",
                                                 2, 3, "Travel: Reveal the top card of the encounter deck and add it to the staging area to travel here." +
                                                 "Response: After Mountains of Mirkwood leaves play as an explored location, each player may search the top 5 cards of his deck for 1 card and add it to his hand. " +
                                                 "Shuffle the rest of the searched cards back into their owners' decks."
                                                 , "SPIDER", new List <LOTRGame.TRAITS>()
        {
            LOTRGame.TRAITS.FOREST, LOTRGame.TRAITS.MOUNTAIN
        }, "??");
        List <Func <EventArgs, Card, bool> > card_played_criteria = new List <Func <EventArgs, Card, bool> >()
        {
            CardEnablers.card_is_me
        };

        the_card.respond_to_event(GameEvent.LOCATION_TRAVELED,
                                  PlayerCardResponses.action_maker(card_played_criteria, EnemyCardResponses.mountains_of_mirkwood, the_card));
        return(the_card);
    }