fn card_destruction_into_unizombie(game: GameState) -> Option<GameState> {
    // try setting downbeat if its in the hand before playing card destruction
    game.clone().set(Card::Downbeat)
        .or_else(|| Some(game))
        .and_then(|game| game.activate(Card::CardDestruction))
        .and_then(|game| game.shuffle_deck())
        .and_then(|game| {
            let cards = game.hand.len();
            game.discard_hand().and_then(|game| game.draw(cards))
        })
        .and_then(|game| game.clone().return_to_hand(Card::Downbeat)
            .or_else(|| Some(game))
        )
        .and_then(|game| unizombie_from_hand(game.clone())
            .or_else(|| solitaire_into_unizombie(game.clone()))
            .or_else(|| jackobolan_into_unizombie(game.clone()))
            .or_else(|| downbeat_into_unizombie(game.clone()))
            .or_else(|| jackobolan_and_downbeat_into_unizombie(game.clone()))
            .or_else(|| jackobolan_and_tuner_into_unizombie(game.clone()))
            .or_else(|| adhara_into_unizombie(game))
        )
}
/**
 * Attempts to use card destruction to refresh the hand and summon unizombie
 */
Attempts to use card destruction to refresh the hand and summon unizombie
Attempts to use card destruction to refresh the hand and summon unizombie
fn card_destruction_into_unizombie(game: GameState) -> Option<GameState> {
    // try setting downbeat if its in the hand before playing card destruction
    game.clone().set(Card::Downbeat)
        .or_else(|| Some(game))
        .and_then(|game| game.activate(Card::CardDestruction))
        .and_then(|game| game.shuffle_deck())
        .and_then(|game| {
            let cards = game.hand.len();
            game.discard_hand().and_then(|game| game.draw(cards))
        })
        .and_then(|game| game.clone().return_to_hand(Card::Downbeat)
            .or_else(|| Some(game))
        )
        .and_then(|game| unizombie_from_hand(game.clone())
            .or_else(|| solitaire_into_unizombie(game.clone()))
            .or_else(|| jackobolan_into_unizombie(game.clone()))
            .or_else(|| downbeat_into_unizombie(game.clone()))
            .or_else(|| jackobolan_and_downbeat_into_unizombie(game.clone()))
            .or_else(|| jackobolan_and_tuner_into_unizombie(game.clone()))
            .or_else(|| adhara_into_unizombie(game))
        )
}
fn card_destruction_into_unizombie ( game : GameState ) -> Option < GameState > { // try setting downbeat if its in the hand before playing card destruction game . clone ( ) . set ( Card :: Downbeat ) . or_else ( | | Some ( game ) ) . and_then ( | game | game . activate ( Card :: CardDestruction ) ) . and_then ( | game | game . shuffle_deck ( ) ) . and_then ( | game | { let cards = game . hand . len ( ) ; game . discard_hand ( ) . and_then ( | game | game . draw ( cards ) ) } ) . and_then ( | game | game . clone ( ) . return_to_hand ( Card :: Downbeat ) . or_else ( | | Some ( game ) ) ) . and_then ( | game | unizombie_from_hand ( game . clone ( ) ) . or_else ( | | solitaire_into_unizombie ( game . clone ( ) ) ) . or_else ( | | jackobolan_into_unizombie ( game . clone ( ) ) ) . or_else ( | | downbeat_into_unizombie ( game . clone ( ) ) ) . or_else ( | | jackobolan_and_downbeat_into_unizombie ( game . clone ( ) ) ) . or_else ( | | jackobolan_and_tuner_into_unizombie ( game . clone ( ) ) ) . or_else ( | | adhara_into_unizombie ( game ) ) ) }
Attempts to use card destruction to refresh the hand and summon unizombie
Attempts to use card destruction to refresh the hand and summon unizombie
game
GameState
game
GameState