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); }
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); }
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); }
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); }
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); }