anchor.diff:  
   %Can always play supply cards
   check_allowed(_Phase, Player, _CurPlayer,
  -              {Player, hand, _Id}, #card{type=supply}, {Player, discard}, _Game) ->
  +              {Player, hand, _Id}, #card_def{type=supply}, {Player, discard}, _Game) ->
     allowed;
   %Can deploy units on own deploy phase
   %If have enough supply for card
   check_allowed(deploy, Player, Player,
  -              {Player, hand, _Id}, #card{cost=Cost, type=unit}, {Player, field}, Game) ->
  +              {Player, hand, _Id}, #card_def{cost=Cost, type=unit}, {Player, field}, Game) ->
     #player{supply=Supply} = get_player(Game, Player),
     case Supply of
       Supply when Supply >= Cost -> allowed;
  
positive.code: 
  play_card_if_allowed(not_allowed, _Card, _From, _To, Game) ->
    Game;
  play_card_if_allowed(allowed, #card{type=unit, cost=Cost}, 
                       From, {Player, field}=To, #game{}=Game) ->
    {Card, RemovedGame} = remove_card(Game, From),
    PaidSupply = add_supply(Player, - Cost, RemovedGame),
    add_card(PaidSupply, Card, To);
  play_card_if_allowed(allowed, #card{type=supply, attrs=Attrs}, 
                       From, {Player, discard}=To, #game{}=Game) ->
    {supply, Supply} = lists:keyfind(supply, 1, Attrs),
    {Card, RemovedGame} = remove_card(Game, From),
  
negative.code: -type card_type() :: supply | unit | realm.
  -record(game, {players = []}).
  -record(player, {id, hand = [], discard = [], deck = [], lost = [], field = [], life = 20, supply = 0}).
  -record(card_def, {key, cost = 0, reqs=[], type = supply :: card_type(), attrs = []}).
  -type card_attachment() :: any()
  -record(card, {key, type, attached}).
  
  init_rand() ->
    <<A:32,B:32,C:32>> = crypto:rand_bytes(12),
  