Webadict

Untitled

Jul 30th, 2022 (edited)
164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 212.88 KB | None | 0 0
  1. ----#include scripts/global
  2. --[[File includes]]
  3. ----#include util
  4. --[[Gets the length of a table]]
  5. function length(T)
  6.     local count = 0
  7.     for _, v in pairs(T) do
  8.       count = count + 1
  9.     end
  10.     return count
  11. end
  12.  
  13. --[[Clones a tables contents]]
  14. function table.clone(org)
  15.   return {table.unpack(org)}
  16. end
  17.  
  18.  
  19. --[[Sorts a table by value but retains the key]]
  20. --[[getKeysSortedByValue(items, function(a, b) return a < b end)]]
  21. function getKeysSortedByValue(tbl, sortFunction)
  22.   local keys = {}
  23.   for key in pairs(tbl) do
  24.     table.insert(keys, key)
  25.   end
  26.  
  27.   table.sort(keys, function(a, b)
  28.     return sortFunction(tbl[a], tbl[b])
  29.   end)
  30.  
  31.   return keys
  32. end
  33.  
  34. ----#include util
  35. ----#include components
  36. components = {
  37.     STARTING_PLAYER_TOKEN_GUID = '1b547b',
  38.     FOOD_BAG_GUIDS = {
  39.         ["Rat"] = 'd52985',
  40.         ["Worm"] = '41fda6',
  41.         ["Berry"] = '66429a',
  42.         ["Fish"] = '78f55b',
  43.         ["Wheat"] = 'b9fadf'
  44.     },
  45.     TRASH_BAG_GUID = '735e54',
  46.     BIRD_DECK_GUID = '6bc66a',
  47.     ROUND_TOKEN_DECK_GUID = 'a7990b',
  48.     BONUS_DECK_GUID = '588f1a',
  49.     EGG_BAG_GUID = '6ae6ed'
  50. }
  51.  
  52. --[[Places items into the trash bag]]
  53. function components.trash(objects)
  54.     local trashBag = getObjectFromGUID(components.TRASH_BAG_GUID)
  55.  
  56.     if(objects != nil or length(objects) != 0) then
  57.         for _, object in pairs(objects) do
  58.             trashBag.putObject(object)
  59.         end
  60.     end
  61. end
  62.  
  63. --[[Gives food to a players bowl]]
  64. function components.giveFood(food, playerColor)
  65.     local bag = getObjectFromGUID(components.FOOD_BAG_GUIDS[food])
  66.     local playerBowl = getObjectFromGUID(players[playerColor].FOOD_BOWL_GUID)
  67.  
  68.     --[[randomly offset the food in the bowl]]
  69.     local pos = playerBowl.getPosition()
  70.     pos.y = pos.y + 1 + (math.random()*2)
  71.     pos.x = (pos.x -1) + (math.random()*2)
  72.     pos.z = (pos.z -1) + (math.random()*2)
  73.  
  74.     bag.takeObject({position = pos})
  75. end
  76.  
  77. function components.getEgg(pos)
  78.     local bag = getObjectFromGUID(components.EGG_BAG_GUID)
  79.     bag.takeObject({position = pos})
  80. end
  81.  
  82. function components.addDiscardContext()
  83.     for _, bonusCard in pairs(getObjectFromGUID(components.BONUS_DECK_GUID).getObjects()) do
  84.         print(bonusCard.name)
  85.         --[[bonusCard.addContextMenuItem("Discard", function() print('Hey') end)]]
  86.     end
  87.  
  88. --[[
  89.     local rat = getObjectFromGUID('17256b')
  90.  
  91.     rat.addContextMenuItem("Spend", function() components.trash({rat}) end)
  92.     ]]
  93. end
  94.  
  95. --[[function components.ratDealAll()
  96.     for _, seatedPlayerColor in pairs(getSeatedPlayers()) do
  97.         components.giveFood("Rat", seatedPlayerColor)
  98.     end
  99. end]]
  100.  
  101. ----#include components
  102. ----#include birdfeeder
  103. birdFeeder = {
  104.     DICE_GUIDS = {'6629f9','145ea8','54a228','85d869','4d34f3'},
  105.     FEEDER_ZONE_GUID = 'c701ba',
  106.     REMOVED_ZONE_GUID = '5196f0',
  107.     DICE_FEEDER_POSITIONS = {
  108.         {-4.613993,1.29,7.95},
  109.         {-3.613993,1.29,7.95},
  110.         {-2.613993,1.29,7.95},
  111.         {-1.613993,1.29,7.95},
  112.         {-0.613993,1.29,7.95}
  113.     },
  114.     DICE_FEEDER_REMOVED_POSITIONS = {
  115.         {1.61,1.29,8.01},
  116.         {2.61,1.29,8.01},
  117.         {1.61,1.29,7.00},
  118.         {2.61,1.29,7.00},
  119.         {2.11,1.29,9.02}
  120.     }
  121. }
  122.  
  123. --[[Moves all the dice back to the bird feeder]]
  124. function birdFeeder.returnDice(instant)
  125.     for key, dieGuid in pairs(birdFeeder.DICE_GUIDS) do
  126.         local d = getObjectFromGUID(dieGuid)
  127.  
  128.         if instant == nil or instant  then
  129.             d.setPosition(birdFeeder.DICE_FEEDER_POSITIONS[key])
  130.         else
  131.             d.setPositionSmooth(birdFeeder.DICE_FEEDER_POSITIONS[key],false,false)
  132.         end
  133.     end
  134. end
  135.  
  136. --[[Rolls all of the dice that are currently in the bird feeder]]
  137. function birdFeeder.roll()
  138.     broadcastToAll('Rolling Feeder', {1,0,0})
  139.  
  140.     birdFeeder.returnDice()
  141.  
  142.     Wait.time(function()
  143.         local feederZone = getObjectFromGUID(birdFeeder.FEEDER_ZONE_GUID)
  144.  
  145.         if(feederZone.getObjects() != nil) then
  146.             for k,v in pairs(feederZone.getObjects() ) do
  147.                 if v.getName() == 'Food' then
  148.                     v.roll()
  149.                 end
  150.             end
  151.         end
  152.     end, 0.2)
  153.  
  154.     Wait.time(function() birdFeeder.returnDice(false) end, 3)
  155. end
  156.  
  157. --[[Rolls all the dice that are not in the bird feeder]]
  158. --[[Moves the die to the removed section]]
  159. function birdFeeder.rollRemoved()
  160.     broadcastToAll('Rolling Outside Feeder', {1,0,0})
  161.  
  162.     local diceNotInFeeder = table.clone(birdFeeder.DICE_GUIDS)
  163.     local feederZone = getObjectFromGUID(birdFeeder.FEEDER_ZONE_GUID)
  164.  
  165.     --[[Get all dice that are not in the bird feeder]]--
  166.     --[[Can be anywhere on the table]]
  167.     if(feederZone.getObjects() != nil) then
  168.         for _,v in pairs(feederZone.getObjects() ) do
  169.             --[[Ensures that it is a food die]]
  170.             if v.getName() == 'Food' then
  171.                 for key,value in pairs(diceNotInFeeder) do
  172.                     if v.getGUID() == value then
  173.                         table.remove(diceNotInFeeder, key)
  174.                         break
  175.                     end
  176.                 end
  177.             end
  178.         end
  179.     end
  180.  
  181.     local count = 1
  182.  
  183.     --[[Rolls the dice not in the feeder]]
  184.     --[[Moves them to the removed feeder area]]
  185.     for _, dieGuid in pairs(diceNotInFeeder) do
  186.         local die = getObjectFromGUID(dieGuid)
  187.         local c = count
  188.         die.setPosition(birdFeeder.DICE_FEEDER_REMOVED_POSITIONS[count])
  189.         die.roll()
  190.         Wait.time(function() die.setPositionSmooth(birdFeeder.DICE_FEEDER_REMOVED_POSITIONS[c],false,false) end, 2)
  191.         count = count +1
  192.     end
  193. end
  194.  
  195. ----#include birdfeeder
  196. ----#include birdTray
  197. birdTray = {
  198.     DISCARD_POSITION = {-0.06,2.39,-0.08},
  199.     placements = {
  200.         {
  201.             position = {-7.82,1.39,-0.08},
  202.             zone = '55b191'
  203.         },
  204.         {
  205.             position = {-5.23,1.39,-0.08},
  206.             zone = '3ce88a'
  207.         },
  208.         {
  209.             position = {-2.64,1.39,-0.08},
  210.             zone = '4d306c'
  211.         }
  212.     }
  213. }
  214.  
  215. --[[Loads the bird cards into the bird tray]]
  216. function birdTray.load()
  217.     --[[Remove all objects and place in discard]]--
  218.     birdTray.clear()
  219.  
  220.     --[[Deal cards to a tray]]
  221.     Wait.time(function() birdTray.refill() end, 0.5) --[[need to wait for animations]]
  222. end
  223.  
  224. --[[Clears all cards from the bird tray]]
  225. function birdTray.clear()
  226.     for _, placement in pairs(birdTray.placements) do
  227.         local zone =  getObjectFromGUID(placement.zone)
  228.         local objects = zone.getObjects()
  229.  
  230.         --[[Remove all objects and place in discard]]--
  231.         if(objects != nil) then
  232.             for _, object in pairs(objects) do
  233.                 birdTray.discard(object)
  234.             end
  235.         end
  236.     end
  237. end
  238.  
  239. --[[Refills the empty placements in the bird tray]]
  240. function birdTray.refill()
  241.     local birdDeck = getObjectFromGUID(components.BIRD_DECK_GUID)
  242.  
  243.     for _, placement in pairs(birdTray.placements) do
  244.         local zone =  getObjectFromGUID(placement.zone)
  245.  
  246.         if(zone == nil) then return end
  247.  
  248.         local objects = zone.getObjects()
  249.         local cardFound = false
  250.  
  251.         if(objects != nil) then
  252.             for _, object in pairs(objects) do
  253.                 if object.name == 'Card' then
  254.                     cardFound = true
  255.                     break
  256.                 end
  257.             end
  258.         end
  259.  
  260.         if cardFound == false then
  261.             birdDeck.takeObject({position = placement.position, flip = true })
  262.         end
  263.     end
  264. end
  265.  
  266. --[[Discards a card to the correct discard pile]]
  267. function birdTray.discard(card)
  268.     if card.name == 'Card' then
  269.         --[[will need to detect if it is a bird or another card]]
  270.  
  271.         --[[Always flip card]]
  272.         card.setRotationSmooth({0,0,180},false,false)
  273.  
  274.         --[[Move card to discard]]
  275.         card.setPositionSmooth(birdTray.DISCARD_POSITION, false, false)
  276.     end
  277. end
  278.  
  279. ----#include birdTray
  280. ----#include scoreBoard
  281. scoreBoard = {
  282.     rounds = {
  283.         ["Round 1"] = {
  284.             position = {9.09,1.29,7.16},
  285.             placementZones = {
  286.                 ["First"] = {
  287.                     VP = {4,2,1,1,1},
  288.                     zone = 'd2f6c1'
  289.                 },
  290.                 ["Second"] = {
  291.                     VP = {1,0,0,0,0},
  292.                     zone = '01dd47'
  293.                 },
  294.                 ["Third"] = {
  295.                     VP = {0,0,0,0,0},
  296.                     zone = '1231bc'
  297.                 },
  298.                 ["Forth"] = {
  299.                     VP = {0,0,0,0,0},
  300.                     zone = '60c001'
  301.                 },
  302.             },
  303.             scoringTokenZone = {
  304.                 zone = '649bd6'
  305.             }
  306.         },
  307.         ["Round 2"] = {
  308.             position = {8.05,1.29,7.16},
  309.             placementZones = {
  310.                 ["First"] = {
  311.                     VP = {5,4,2,2,1},
  312.                     zone = '9ec2da'
  313.                 },
  314.                 ["Second"] = {
  315.                     VP = {2,1,1,0,0},
  316.                     zone = '6d0305'
  317.                 },
  318.                 ["Third"] = {
  319.                     VP = {1,0,0,0,0},
  320.                     zone = 'ed8fc5'
  321.                 },
  322.                 ["Forth"] = {
  323.                     VP = {0,0,0,0,0},
  324.                     zone = 'f6ba47'
  325.                 },
  326.             },
  327.             scoringTokenZone = {
  328.                 zone = '49857f'
  329.             }
  330.         },
  331.         ["Round 3"] = {
  332.             position = {7.00,1.29,7.16},
  333.             placementZones = {
  334.                 ["First"] = {
  335.                     VP = {6,4,3,2,2},
  336.                     zone = 'e754fb'
  337.                 },
  338.                 ["Second"] = {
  339.                     VP = {3,2,1,1,0},
  340.                     zone = 'a14624'
  341.                 },
  342.                 ["Third"] = {
  343.                     VP = {2,1,0,0,0},
  344.                     zone = 'd477a2'
  345.                 },
  346.                 ["Forth"] = {
  347.                     VP = {0,0,0,0,0},
  348.                     zone = 'a9c44d'
  349.                 },
  350.             },
  351.             scoringTokenZone = {
  352.                 zone = '245cb6'
  353.             }
  354.         },
  355.         ["Round 4"] = {
  356.             position = {5.97,1.29,7.16},
  357.             placementZones = {
  358.                 ["First"] = {
  359.                     VP = {7,5,4,3,2},
  360.                     zone = '7ca792'
  361.                 },
  362.                 ["Second"] = {
  363.                     VP = {4,3,2,1,1},
  364.                     zone = '97a2e1'
  365.                 },
  366.                 ["Third"] = {
  367.                     VP = {3,1,1,0,0},
  368.                     zone = 'b2bd0c'
  369.                 },
  370.                 ["Forth"] = {
  371.                     VP = {0,0,0,0,0},
  372.                     zone = '2e2004'
  373.                 },
  374.             },
  375.             scoringTokenZone = {
  376.                 zone = '99efc0'
  377.             }
  378.         }
  379.     }
  380. }
  381.  
  382. --[[Loads the score board with token tiles]]
  383. function scoreBoard.load()
  384.     local tokenDeck = getObjectFromGUID(components.ROUND_TOKEN_DECK_GUID)
  385.  
  386.     if(tokenDeck != nil) then
  387.         for _, round in pairs(scoreBoard.rounds) do
  388.             tokenDeck.takeObject({
  389.                 position = round.position,
  390.                 callback_function = function(obj)
  391.                     --[[50% chance that it'll flip the tile each game]]
  392.                     if math.random() <= 0.5 then
  393.                         obj.flip()
  394.                     end
  395.  
  396.                     --[[Locks the tiles after they are set]]
  397.                     Wait.time(function() obj.setLock(true) end, 1)
  398.                 end
  399.             })
  400.         end
  401.     end
  402. end
  403.  
  404. function scoreBoard.calculateScore(playerColor)
  405.     local roundScore = 0
  406.  
  407.     for _, round in pairs(scoreBoard.rounds) do
  408.         for _, placement in pairs(round.placementZones) do
  409.              local zone = getObjectFromGUID(placement.zone)
  410.              local colorCubeFound = false
  411.              local cubeCount = 0
  412.  
  413.              for _, object in pairs(zone.getObjects()) do
  414.                  local name = object.getName()
  415.                  if(string.match(object.getName(),'Cube')) then
  416.                      if(object.getName() == playerColor..' Cube' ) then
  417.                          colorCubeFound = true
  418.                      end
  419.                      cubeCount = cubeCount + 1
  420.                  end
  421.              end
  422.  
  423.              --[[Only score once in a round]]
  424.              if colorCubeFound then
  425.                  roundScore = roundScore + placement.VP[cubeCount]
  426.                  break
  427.              end
  428.         end
  429.     end
  430.  
  431.     return roundScore
  432. end
  433.  
  434. ----#include scoreBoard
  435. ----#include players/player
  436. players = {
  437. ----    #include blue_player
  438. ["Blue"] = {
  439.     STARTING_TOKEN_POSITION = {6.87,2,12.93},
  440.     BOARD_ZONE_GUID = 'e488e6',
  441.     PLAY_AREA_ZONE_GUID = 'bae144',
  442.     FOOD_BOWL_GUID = '5ad395',
  443.     BOARD_GUID = '86c4fb',
  444.     BOARD_CALCULATION_GUID = 'c03432',
  445.     BOARD_CALCULATION_ZONE_GUID = 'c2a67c',
  446.     BOARD_NECTOR_CALCULATION_ZONE_GUID = {'14b4e4','52cae3','495f1a'},
  447.     CUBE_POSITIONS =  {
  448.         {4.14,1.12,15.84},
  449.         {4.60,1.12,15.84},
  450.         {4.14,1.12,15.39},
  451.         {4.60,1.12,15.39},
  452.         {4.14,1.12,14.50},
  453.         {4.14,1.12,14.95},
  454.         {4.60,1.12,14.95},
  455.         {4.60,1.12,14.50}
  456.     },
  457.     BOARD_ROTATION = {180,180,0}
  458. },
  459.  
  460. ----    #include blue_player
  461. ----    #include green_player
  462. ["Green"] = {
  463.     STARTING_TOKEN_POSITION = {-20.57,2,12.95},
  464.     BOARD_ZONE_GUID = 'f9358b',
  465.     PLAY_AREA_ZONE_GUID = '523b04',
  466.     FOOD_BOWL_GUID = '3d7497',
  467.     BOARD_GUID = 'd3ad97',
  468.     BOARD_CALCULATION_GUID = '0a418e',
  469.     BOARD_CALCULATION_ZONE_GUID = '5690c4',
  470.     BOARD_NECTOR_CALCULATION_ZONE_GUID = {'9c2813','c17038','cc69ef'},
  471.     CUBE_POSITIONS =  {
  472.         {-22.56,1.12,16.23},
  473.         {-22.56,1.12,15.77},
  474.         {-22.11,1.12,16.23},
  475.         {-22.11,1.12,15.77},
  476.         {-22.56,1.12,14.86},
  477.         {-22.56,1.12,15.31},
  478.         {-22.11,1.12,15.31},
  479.         {-22.11,1.12,14.86}
  480.     },
  481.     BOARD_ROTATION = {180,180,0}
  482. },
  483.  
  484. ----    #include green_player
  485. ----    #include purple_player
  486. ["Purple"] = {
  487.     STARTING_TOKEN_POSITION = {13.33,2,6.68},
  488.     BOARD_ZONE_GUID = 'b7061e',
  489.     PLAY_AREA_ZONE_GUID = 'ba2e2d',
  490.     FOOD_BOWL_GUID = 'cba52c',
  491.     BOARD_GUID = 'a4346b',
  492.     BOARD_CALCULATION_GUID = '0cdbbd',
  493.     BOARD_CALCULATION_ZONE_GUID = '21594e',
  494.     BOARD_NECTOR_CALCULATION_ZONE_GUID = {'c2490a','7e07af','4f4ded'},
  495.     CUBE_POSITIONS =  {
  496.         {15.02,1.12,8.83},
  497.         {15.02,1.12,8.37},
  498.         {15.47,1.12,8.83},
  499.         {15.47,1.12,8.37},
  500.         {15.94,1.12,8.37},
  501.         {15.94,1.12,8.83},
  502.         {16.39,1.12,8.37},
  503.         {16.39,1.12,8.83}
  504.     },
  505.     BOARD_ROTATION = {180,270,0}
  506. },
  507.  
  508. ----    #include purple_player
  509. ----    #include yellow_player
  510. ["Yellow"] = {
  511.     STARTING_TOKEN_POSITION = {-13.55,2,-6.21},
  512.     BOARD_ZONE_GUID = '38e5d8',
  513.     PLAY_AREA_ZONE_GUID = 'd5f13a',
  514.     FOOD_BOWL_GUID = '3e2578',
  515.     BOARD_GUID = '11c94a',
  516.     BOARD_CALCULATION_GUID = '86a61a',
  517.     BOARD_CALCULATION_ZONE_GUID = 'e06a0a',
  518.     BOARD_NECTOR_CALCULATION_ZONE_GUID = {'847641','c1daaf','9adc19'},
  519.     CUBE_POSITIONS =  {
  520.         {-15.82,1.12,-8.50},
  521.         {-15.37,1.12,-8.50},
  522.         {-16.29,1.12,-8.05},
  523.         {-15.83,1.12,-8.05},
  524.         {-15.28,1.12,-8.05},
  525.         {-16.29,1.12,-8.50},
  526.         {-16.75,1.12,-8.05},
  527.         {-16.75,1.12,-8.51}
  528.     },
  529.     BOARD_ROTATION = {180,90,0}
  530. },
  531.  
  532. ----    #include yellow_player
  533. ----    #include white_player
  534. ["White"] = {
  535.     STARTING_TOKEN_POSITION = {5.48,2,-12.05},
  536.     BOARD_ZONE_GUID = '6b15a4',
  537.     PLAY_AREA_ZONE_GUID = '58ef8d',
  538.     FOOD_BOWL_GUID = '2ea02a',
  539.     BOARD_GUID = 'b16643',
  540.     BOARD_CALCULATION_GUID = 'fcbcaf',
  541.     BOARD_CALCULATION_ZONE_GUID = '54a7cc',
  542.     BOARD_NECTOR_CALCULATION_ZONE_GUID = {'ad2371','735094','f02fb0'},
  543.     CUBE_POSITIONS =  {
  544.         {7.34,1.12,-13.69},
  545.         {7.80,1.12,-13.69},
  546.         {7.34,1.12,-14.59},
  547.         {7.80,1.12,-14.59},
  548.         {7.34,1.12,-14.15},
  549.         {7.80,1.12,-14.15},
  550.         {7.34,1.12,-15.04},
  551.         {7.80,1.12,-15.04}
  552.     },
  553.     BOARD_ROTATION = {180,0,0}
  554. },
  555.  
  556. ----    #include white_player
  557. }
  558.  
  559. players.TURN_ORDER = {'White','Yellow','Green','Blue', 'Purple'}
  560. players.startingPlayerColor = nil
  561. players.UI_UPDATE_DELAY = 1
  562.  
  563. --[[Promotes all seated players in the game]]
  564. function players.promoteSeated()
  565.     for _, seatedPlayerColor in pairs(getSeatedPlayers()) do
  566.         if (Player[seatedPlayerColor].promoted != true and Player[seatedPlayerColor].admin == false) then
  567.             Player[seatedPlayerColor].promoted = true
  568.         end
  569.     end
  570. end
  571.  
  572. --[[Removes all of the unused player board and tokens]]
  573. function players.removeUnsedPlayerBoards()
  574.     for _, playerColor in pairs(players.TURN_ORDER) do
  575.         local playerIsSeated = false
  576.  
  577.         for key,seatedPlayerColor in pairs(getSeatedPlayers()) do
  578.             if playerColor == seatedPlayerColor then
  579.                 playerIsSeated = true
  580.                 break
  581.             end
  582.         end
  583.  
  584.         if not playerIsSeated then
  585.             players.removePlayer(playerColor)
  586.         end
  587.     end
  588. end
  589.  
  590. --[[Removes a specific players board and tokens]]
  591. function players.removePlayer(playerColor)
  592.     local objectsToRemove = {}
  593.  
  594.     local objects = getObjectFromGUID(players[playerColor].PLAY_AREA_ZONE_GUID).getObjects()
  595.  
  596.     for _, deleteObject in pairs(objects) do
  597.         if string.match(deleteObject.getName(), playerColor) then
  598.             table.insert(objectsToRemove, deleteObject)
  599.         end
  600.     end
  601.  
  602.     --[[remove player zone]]
  603.     getObjectFromGUID(players[playerColor].BOARD_CALCULATION_ZONE_GUID).destruct()
  604.  
  605.     components.trash(objectsToRemove)
  606. end
  607.  
  608. --[[Sets the starting player token beside the player board]]
  609. function players.setStatingToken(playerColor)
  610.     local token = getObjectFromGUID(components.STARTING_PLAYER_TOKEN_GUID)
  611.     token.setPositionSmooth(players[playerColor].STARTING_TOKEN_POSITION, false, false)
  612. end
  613.  
  614. --[[Randomizes the starting player and sets the first player token]]
  615. function players.randomizeStartingPlayer()
  616.     if Turns.enable == false then
  617.         Turns.enable = true
  618.     end
  619.  
  620.     local seatedPlayers = getSeatedPlayers()
  621.     local count = length(seatedPlayers)
  622.     players.startingPlayerColor = seatedPlayers[math.random(1,count)]
  623.  
  624.     if Turns.turn_color != startingPlayerColor then
  625.         Turns.turn_color = startingPlayerColor
  626.     end
  627.  
  628.     players.setStatingToken(players.startingPlayerColor)
  629. end
  630.  
  631. --[[Move the starting player token to the next player]]
  632. function players.nextPlayer()
  633.     local currentStartingPlayerColor = startingPlayerColor
  634.     local position = 1
  635.  
  636.     for key, playerColor in pairs(players.TURN_ORDER) do
  637.         if(playerColor == currentStartingPlayerColor) then
  638.             position = key
  639.             break;
  640.         end
  641.     end
  642.  
  643.     repeat
  644.         position = position + 1
  645.         if position > length(players.TURN_ORDER) then
  646.             position = 1
  647.         end
  648.  
  649.         local activePlayer = false
  650.         for _, playerColor in pairs(getSeatedPlayers()) do
  651.             if players.TURN_ORDER[position] == playerColor then
  652.                 activePlayer = true
  653.                 break
  654.             end
  655.         end
  656.     until(activePlayer == true)
  657.  
  658.     players.startingPlayerColor = players.TURN_ORDER[position]
  659.  
  660.     Turns.turn_color = players.startingPlayerColor
  661.     players.setStatingToken(players.startingPlayerColor)
  662. end
  663.  
  664. --[[Clears all player boards of cubes]]
  665. function players.clearAllBoards()
  666.     for _, playerColor in pairs(getSeatedPlayers()) do
  667.         players.clearBoard(playerColor)
  668.     end
  669. end
  670.  
  671. --[[Clears the player board of cubes]]
  672. function players.clearBoard(playerColor)
  673.     local cubes = {}
  674.  
  675.     --[[Get all the cubes on the player board]]
  676.     for _, object in pairs(getObjectFromGUID(players[playerColor].PLAY_AREA_ZONE_GUID).getObjects()) do
  677.         if(string.match(object.getName(),'Cube')) then
  678.             table.insert(cubes, object)
  679.         end
  680.     end
  681.  
  682.     --[[Moves all of the player cubes to the default location]]
  683.     for key, cube in pairs(cubes) do
  684.         if(string.match(cube.getName(),playerColor)) then
  685.             cube.setPositionSmooth(players[playerColor].CUBE_POSITIONS[key], false, false)
  686.         end
  687.     end
  688. end
  689.  
  690. --[[displays the labels for the player boards]]
  691. function players.loadBoardUI()
  692.     --[[Only seated players?]]
  693.     --[[for _, playerColor in pairs(getSeatedPlayers()) do]]
  694.  
  695.     --[[Loads the score tracker beside the player board]]
  696.     for _, playerColor in pairs(getSeatedPlayers()) do
  697.     --[[for _, playerColor in pairs(players.TURN_ORDER) do --[[Testing only]]
  698.         local playerBoardGuid = players[playerColor].BOARD_CALCULATION_GUID
  699.  
  700.         userControls.createButton("Bird_Count_Label", playerBoardGuid)
  701.         userControls.createButton("Egg_Count_Label", playerBoardGuid)
  702.         userControls.createButton("Cashed_Food_Count_Label", playerBoardGuid)
  703.         userControls.createButton("Tucked_Cards_Count_Label", playerBoardGuid)
  704.         userControls.createButton("Bonus_Cards_Count_Label", playerBoardGuid)
  705.         userControls.createButton("Round_Scoring_Count_Label", playerBoardGuid)
  706.         userControls.createButton("Nector_Scoring_Count_Label", playerBoardGuid)
  707.         userControls.createButton("Total_Count_Label", playerBoardGuid)
  708.     end
  709.  
  710.     local ref = "referenceTimer_".."UIScoringTimer"
  711.     _G[ref] = function() players.playerBoardUIUpdate() end
  712.  
  713.  
  714.     Timer.create({
  715.         identifier="UIScoringTimer",
  716.         function_name=ref,
  717.         function_owner=Global,
  718.         repetitions=0,
  719.         delay=players.UI_UPDATE_DELAY
  720.     })
  721. end
  722.  
  723. --[[Triggers to update the player board UI]]
  724. function players.playerBoardUIUpdate()
  725.     --[[Get all seated players in the game]]
  726.  
  727.     local nectarVP = nil
  728.  
  729.     for _, playerColor in pairs(getSeatedPlayers()) do
  730.     --[[for _, playerColor in pairs(players.TURN_ORDER) do --[[Testing only]]
  731.         local counts = {
  732.             birdVP = 0,
  733.             egg = 0,
  734.             cached = 0,
  735.             tucked = 0,
  736.             round = 0,
  737.             bonus = 0,
  738.             nector = 0
  739.         }
  740.  
  741.         --[[Counts the round scores]]
  742.         counts.round = scoreBoard.calculateScore(playerColor)
  743.  
  744.         --[[Gets the bonus cards in the players hand]]
  745.         local playerBonusCards = bonusCards.getFromHand(playerColor)
  746.  
  747.         --[[Counts eggs, tucked cards, bird VP, and cached food]]
  748.         for _, object in pairs(getObjectFromGUID(players[playerColor].BOARD_ZONE_GUID).getObjects()) do
  749.             --[[Check bird cards]]
  750.             if (object.name == "Card" or object.name == "CardCustom") then
  751.                  local card = birdCards.getData(object)
  752.                  if (card != nil) then
  753.                      counts.birdVP = counts.birdVP + card.VP
  754.  
  755.                      --[[Check the bonus cards to see if this bird is valid]]
  756.                      for _, bonus in pairs(playerBonusCards) do
  757.                          if (bonusCards.validate(bonus.bonusCard, card)) then
  758.                             bonus.validCount = bonus.validCount + 1
  759.                          end
  760.                      end
  761.                 end
  762.             elseif (object.name == "Deck") then
  763.                 --[[Counts tucked cards]]
  764.                 counts.tucked = counts.tucked + (object.getQuantity() - 1)
  765.  
  766.                 --[[Gets the bottom card (faced up, to score VP's)]]
  767.                 local card = birdCards.getDataByName(object.getObjects()[object.getQuantity()].name)
  768.                 if (card != nil) then
  769.                     counts.birdVP = counts.birdVP + card.VP
  770.  
  771.                     --[[Check the bonus cards to see if this bird is valid]]
  772.                     for _, bonus in pairs(playerBonusCards) do
  773.                         if (bonusCards.validate(bonus.bonusCard, card)) then
  774.                            bonus.validCount = bonus.validCount + 1
  775.                         end
  776.                     end
  777.                end
  778.             else
  779.                 local objectName = object.getName()
  780.                 if(objectName == "Egg") then
  781.                     counts.egg = counts.egg + 1
  782.                 elseif (objectName == "Berry" or objectName == "Rat" or objectName == "Fish" or objectName == "Worm" or objectName == "Wheat") then
  783.                     if(object.name == "Custom_Token_Stack") then
  784.                         counts.cached = counts.cached + object.getQuantity()
  785.                     else
  786.                         counts.cached = counts.cached + 1
  787.                     end
  788.                 end
  789.             end
  790.         end
  791.  
  792.         --[[Update bonus scores]]
  793.         for _, bonus in pairs(playerBonusCards) do
  794.             if(bonus.validCount > 0) then
  795.                 counts.bonus = counts.bonus + bonusCards.getScoring(bonus.bonusCard, bonus.validCount)
  796.             end
  797.         end
  798.  
  799.         --[[Update for Nector]]
  800.         if gameState.OCEANIA_EXP == true then
  801.             --[[Only call once per calcuation]]
  802.             if nectarVP == nil then
  803.                 nectorVP = players.calcualteNector()
  804.             end
  805.  
  806.             counts.nector = nectorVP[playerColor]
  807.         end
  808.  
  809.         players.updateBoardUI(playerColor, counts)
  810.     end
  811. end
  812.  
  813. function players.removeRoundEndNector()
  814.     for _, playerColor in pairs(getSeatedPlayers()) do
  815.     --[[for _, playerColor in pairs(players.TURN_ORDER) do]]
  816.         --[[ players[playerColor].PLAY_AREA_ZONE_GUID ]]
  817.         --[[ players[playerColor].BOARD_ZONE_GUID ]]
  818.  
  819.         local playerNector = {}
  820.  
  821.         --[[Gets nector in players area]]
  822.         for _, object in pairs(getObjectFromGUID(players[playerColor].PLAY_AREA_ZONE_GUID).getObjects()) do
  823.             if(string.match(object.getName(),'Nectar')) then
  824.                 table.insert(playerNector, object)
  825.             end
  826.         end
  827.  
  828.         --[[Removes nector in player board area]]
  829.         for _, object in pairs(getObjectFromGUID(players[playerColor].BOARD_ZONE_GUID).getObjects()) do
  830.             if(string.match(object.getName(),'Nectar')) then
  831.                 local nectorGUID = object.getGUID()
  832.  
  833.                 for key, value in pairs(playerNector) do
  834.                     if (value.getGUID() == nectorGUID) then
  835.                         table.remove(playerNector, key)
  836.                         break;
  837.                     end
  838.                 end
  839.  
  840.             end
  841.         end
  842.  
  843.         components.trash(playerNector)
  844.     end
  845. end
  846.  
  847. function players.calcualteNector()
  848.     local nectorPoints_first = {5,2,1,1,1}
  849.     local nectorPoints_second = {2,1,0,0,0}
  850.  
  851.     local playerVP = {}
  852.  
  853.     --[[Loop through Forest, Grass, Water]]
  854.     for habitatLocation = 1, 3, 1
  855.     do
  856.         local playerPoints = {}
  857.         local nectarCounts = {}
  858.  
  859.         for _, playerColor in pairs(getSeatedPlayers()) do
  860.         --[[for _, playerColor in pairs(players.TURN_ORDER) do]]
  861.             local NectorZoneGuid = players[playerColor].BOARD_NECTOR_CALCULATION_ZONE_GUID[habitatLocation]
  862.  
  863.             nectarCounts[playerColor] = 0
  864.             playerPoints[playerColor] = 0
  865.  
  866.             --[[Counts all the nectors on the player board in a habitat]]
  867.             for _, object in pairs(getObjectFromGUID(NectorZoneGuid).getObjects()) do
  868.  
  869.  
  870.                 if(string.match(object.getName(),'Nectar')) then
  871.                     if(object.name == "Custom_Token_Stack") then
  872.                         nectarCounts[playerColor] = nectarCounts[playerColor] + object.getQuantity()
  873.                     else
  874.                         nectarCounts[playerColor] = nectarCounts[playerColor] + 1
  875.                     end
  876.                 end
  877.             end
  878.         end
  879.  
  880.         --[[Sort the counts]]
  881.         sortedNectarCounts = getKeysSortedByValue(nectarCounts, function(a, b) return a > b end)
  882.  
  883.         --[[Detrmine 1st and 2nd place, with ties]]
  884.         local firstPlace = {}
  885.         local secondPlace = {}
  886.         local previousCount = nil
  887.         local isFirst = true
  888.  
  889.         for _, key  in pairs(sortedNectarCounts) do
  890.             if isFirst and (previousCount == nil or previousCount == nectarCounts[key]) then
  891.                 table.insert(firstPlace, key)
  892.             elseif isFirst and previousCount != nil then
  893.                 isFirst = false
  894.                 previousCount = nil
  895.             end
  896.  
  897.             if isFirst == false and (previousCount == nil or previousCount == nectarCounts[key]) then
  898.                 table.insert(secondPlace, key)
  899.             elseif isFirst == false and previousCount > nectarCounts[key] then
  900.                 break
  901.             end
  902.  
  903.             --[[set previousPlayer]]
  904.             previousCount = nectarCounts[key]
  905.         end
  906.  
  907.         for k,v in pairs(firstPlace) do
  908.  
  909.             if playerVP[v] == nil  then
  910.                 playerVP[v] = 0
  911.             end
  912.             if nectarCounts[v] > 0 then
  913.                 playerVP[v] = playerVP[v] + nectorPoints_first[length(firstPlace)]
  914.             end
  915.         end
  916.  
  917.         for k,v in pairs(secondPlace) do
  918.             if playerVP[v] == nil then
  919.                 playerVP[v] = 0
  920.             end
  921.             if nectarCounts[v] > 0 then
  922.                 playerVP[v] = playerVP[v] + nectorPoints_second[length(secondPlace)]
  923.             end
  924.  
  925.         end
  926.     end
  927.  
  928.     --[[
  929.     for key, value in pairs(playerVP) do
  930.         print(key .. " - " .. value)
  931.     end --[[DEBUG]]
  932.  
  933.     return playerVP
  934. end
  935.  
  936. function players.updateBoardUI(playerColor, counts)
  937.     local playerBoard = getObjectFromGUID(players[playerColor].BOARD_CALCULATION_GUID)
  938.  
  939.     playerBoard.editButton({index = userControls.buttons["Egg_Count_Label"].INDEX,
  940.                             label="Eggs: "..counts.egg})
  941.  
  942.     playerBoard.editButton({index = userControls.buttons["Cashed_Food_Count_Label"].INDEX,
  943.                             label="Cached Food: "..counts.cached})
  944.  
  945.     playerBoard.editButton({index = userControls.buttons["Bird_Count_Label"].INDEX,
  946.                             label="Bird VP: "..counts.birdVP})
  947.  
  948.     playerBoard.editButton({index = userControls.buttons["Tucked_Cards_Count_Label"].INDEX,
  949.                             label="Tucked Cards: "..counts.tucked})
  950.  
  951.     playerBoard.editButton({index = userControls.buttons["Bonus_Cards_Count_Label"].INDEX,
  952.                             label="Bonus VP: "..counts.bonus})
  953.  
  954.     playerBoard.editButton({index = userControls.buttons["Round_Scoring_Count_Label"].INDEX,
  955.                             label="Round VP: "..counts.round})
  956.  
  957.     if gameState.OCEANIA_EXP == true then
  958.         playerBoard.editButton({index = userControls.buttons["Nector_Scoring_Count_Label"].INDEX,
  959.                             label="Nectar VP: "..counts.nector})
  960.     end
  961.  
  962.     playerBoard.editButton({index = userControls.buttons["Total_Count_Label"].INDEX,
  963.                             label="Final Score: "..(counts.egg + counts.tucked + counts.cached + counts.birdVP + counts.round + counts.bonus + counts.nector)})
  964. end
  965.  
  966. ----#include players/player
  967. ----#include decks/europeanExp
  968. europeanExp = {
  969.     BONUS_DECK_GUID = '20e26c',
  970.     BIRD_DECK_GUID = 'f8f276',
  971.     ROUND_TOKENS_GUID = '0afd57',
  972.     BAG_GUID = '315a33'
  973. }
  974.  
  975. --[[Loads the european exp on the table]]
  976. function europeanExp.load()
  977.     local bag = getObjectFromGUID(europeanExp.BAG_GUID)
  978.     local birdDeck = getObjectFromGUID(components.BIRD_DECK_GUID)
  979.     local bonusDeck = getObjectFromGUID(components.BONUS_DECK_GUID)
  980.     local scoringDeck = getObjectFromGUID(components.ROUND_TOKEN_DECK_GUID)
  981.  
  982.     --[[Birds]]
  983.     europeanExp.takeEuropeanExpObjectFromBag(bag,birdDeck,europeanExp.BIRD_DECK_GUID,2)
  984.  
  985.     --[[Bonus]]
  986.     europeanExp.takeEuropeanExpObjectFromBag(bag,bonusDeck,europeanExp.BONUS_DECK_GUID,2)
  987.  
  988.     --[[Scores]]
  989.     europeanExp.takeEuropeanExpObjectFromBag(bag,scoringDeck,europeanExp.ROUND_TOKENS_GUID,0)
  990.  
  991.     --[[Removes the button after clicked]]
  992.     getObjectFromGUID(userControls.buttons["EuropeanExp_Button"].BIND_OBJECT_GUID).destruct()
  993. end
  994.  
  995. --[[Take the components from the expantion bag]]
  996. function europeanExp.takeEuropeanExpObjectFromBag(bagObject, destinationObject, sourceGUID, yOffset)
  997.     if yOffset == nil then
  998.         yOffset = 0
  999.     end
  1000.  
  1001.     bagObject.takeObject({
  1002.         guid = sourceGUID,
  1003.         position = {
  1004.             destinationObject.getPosition().x,
  1005.             destinationObject.getPosition().y + yOffset,
  1006.             destinationObject.getPosition().z
  1007.         },
  1008.         rotation={180,0,0},
  1009.         callback_function = function(obj)
  1010.             group({destinationObject, getObjectFromGUID(sourceGUID)})
  1011.             destinationObject.shuffle()
  1012.         end
  1013.     })
  1014. end
  1015.  
  1016. ----#include decks/europeanExp
  1017. ----#include decks/oceaniaExp
  1018. oceaniaExp = {
  1019.     BONUS_DECK_GUID = '50817a',
  1020.     BIRD_DECK_GUID = 'fb1538',
  1021.     ROUND_TOKENS_GUID = 'e75d74',
  1022.     NECTAR_BAG_GUID = '02c4c6',
  1023.     BAG_GUID = '1e2c52',
  1024.     DICE_GUIDS = {'dafb10','7cb6b4','901918','e32a3a','d416c7'},
  1025.     PLAYER_BOARD_GUIDS = {'d68d10','2de925','c219a4','f92aa8','5d31e6'},
  1026.     REFERENCE_GUID = 'a66391'
  1027. }
  1028.  
  1029. --[[Loads the european exp on the table]]
  1030. function oceaniaExp.load()
  1031.     local bag = getObjectFromGUID(oceaniaExp.BAG_GUID)
  1032.  
  1033.     --[[Birds]]
  1034.     local birdDeck = getObjectFromGUID(components.BIRD_DECK_GUID)
  1035.     oceaniaExp.takeOceaniaExpObjectFromBag(bag,birdDeck,oceaniaExp.BIRD_DECK_GUID,2)
  1036.  
  1037.     --[[Bonus]]
  1038.     local bonusDeck = getObjectFromGUID(components.BONUS_DECK_GUID)
  1039.     oceaniaExp.takeOceaniaExpObjectFromBag(bag,bonusDeck,oceaniaExp.BONUS_DECK_GUID,2)
  1040.  
  1041.     --[[Scores]]
  1042.     local scoringDeck = getObjectFromGUID(components.ROUND_TOKEN_DECK_GUID)
  1043.     oceaniaExp.takeOceaniaExpObjectFromBag(bag,scoringDeck,oceaniaExp.ROUND_TOKENS_GUID,0)
  1044.  
  1045.     --[[Nectar Bag]]
  1046.     local nectarBagLocation = {1.470127,0.943,4.138735}
  1047.     oceaniaExp.takeOceaniaExpObjectFromBagByLocation(bag,nectarBagLocation,oceaniaExp.NECTAR_BAG_GUID,0,true)
  1048.     --[[Add Bag to food list]]
  1049.     components.FOOD_BAG_GUIDS["Nectar"] = oceaniaExp.NECTAR_BAG_GUID
  1050.     userControls.createButton("Nectar_Bag_Button_Take")
  1051.     userControls.createButton("Nectar_Bag_Button_DealAll")
  1052.  
  1053.     --[[Reference Card]]
  1054.     local referenceCardLocation = {-10.445329,1,-4.652026}
  1055.     oceaniaExp.takeOceaniaExpObjectFromBagByLocation(bag,referenceCardLocation,oceaniaExp.REFERENCE_GUID,0,true,{180,0,0})
  1056.  
  1057.     --[[Dice]]
  1058.     --[[Remove all dice]]
  1059.     for key, dieGuid in pairs(birdFeeder.DICE_GUIDS) do
  1060.         components.trash({getObjectFromGUID(dieGuid)})
  1061.     end
  1062.  
  1063.     --[[Replace dice guids in feeder]]
  1064.     birdFeeder.DICE_GUIDS = oceaniaExp.DICE_GUIDS
  1065.  
  1066.     --[[Take the Dice from the bag]]
  1067.     for k,v in pairs(birdFeeder.DICE_FEEDER_POSITIONS) do
  1068.         oceaniaExp.takeOceaniaExpObjectFromBagByLocation(bag,v,oceaniaExp.DICE_GUIDS[k],0,false)
  1069.     end
  1070.  
  1071.     --[[Player Boards]]
  1072.     local playerCount = 1
  1073.     for k, p in pairs(players.TURN_ORDER) do
  1074.         local boardLocation = getObjectFromGUID(players[p].BOARD_GUID).getPosition();
  1075.         components.trash({getObjectFromGUID(players[p].BOARD_GUID)})
  1076.  
  1077.         oceaniaExp.takeOceaniaExpObjectFromBagByLocation(bag, boardLocation,oceaniaExp.PLAYER_BOARD_GUIDS[playerCount],0,true,players[p].BOARD_ROTATION, p .. " Board")
  1078.         playerCount=playerCount+1
  1079.     end
  1080.  
  1081.     --[[Sets the expantion]]
  1082.     gameState.OCEANIA_EXP = true;
  1083.  
  1084.     --[[Removes the button after clicked]]
  1085.     getObjectFromGUID(userControls.buttons["OceaniaExp_Button"].BIND_OBJECT_GUID).destruct()
  1086. end
  1087.  
  1088. function oceaniaExp.takeOceaniaExpObjectFromBagByLocation(bagObject, destinationLocation, sourceGUID, yOffset, lock, objectRotation, objectName)
  1089.     if yOffset == nil then
  1090.         yOffset = 0
  1091.     end
  1092.  
  1093.     if objectRotation == nil then
  1094.         objectRotation = {0,0,0}
  1095.     end
  1096.  
  1097.     bagObject.takeObject({
  1098.         guid = sourceGUID,
  1099.         position = {
  1100.             destinationLocation[1],
  1101.             destinationLocation[2] + yOffset,
  1102.             destinationLocation[3]
  1103.         },
  1104.         rotation=objectRotation,
  1105.         callback_function = function(obj)
  1106.             getObjectFromGUID(sourceGUID).setLock(lock)
  1107.  
  1108.             if objectName != nil then
  1109.                 getObjectFromGUID(sourceGUID).setName(objectName)
  1110.             end
  1111.         end
  1112.     })
  1113. end
  1114.  
  1115. --[[Take the components from the expantion bag]]
  1116. function oceaniaExp.takeOceaniaExpObjectFromBag(bagObject, destinationObject, sourceGUID, yOffset)
  1117.     if yOffset == nil then
  1118.         yOffset = 0
  1119.     end
  1120.  
  1121.     bagObject.takeObject({
  1122.         guid = sourceGUID,
  1123.         position = {
  1124.             destinationObject.getPosition().x,
  1125.             destinationObject.getPosition().y + yOffset,
  1126.             destinationObject.getPosition().z
  1127.         },
  1128.         rotation={180,0,0},
  1129.         callback_function = function(obj)
  1130.             group({destinationObject, getObjectFromGUID(sourceGUID)})
  1131.             destinationObject.shuffle()
  1132.         end
  1133.     })
  1134. end
  1135.  
  1136. ----#include decks/oceaniaExp
  1137. ----#include birdCards
  1138. birdCards = {
  1139.     BIRD_DECK_GUID = '6bc66a',
  1140. ----    #include birdCardData
  1141. data = {
  1142.     ["Acorn Woodpecker"] = {
  1143.         Name = "Acorn Woodpecker",
  1144.         Game = "core",
  1145.         Color = "Brown",
  1146.         PowerCategory = "Caching Food",
  1147.         Description = "Gain 1 [wheat] from the birdfeeder (if available). You may cache it on this card.",
  1148.         VP = 5,
  1149.         Nest = "Cavity",
  1150.         Eggs = 4,
  1151.         Wingspan = 46,
  1152.         Forest = true,
  1153.         Grain = 3,
  1154.         TotalFood = 3
  1155.     },
  1156.     ["American Avocet"] = {
  1157.         Name = "American Avocet",
  1158.         Game = "core",
  1159.         Color = "Pink",
  1160.         PowerCategory = "Egg-laying",
  1161.         Description = "When another player takes the 'lay eggs' action, this bird lays 1 [egg] on another bird with a [ground] nest.",
  1162.         VP = 6,
  1163.         Nest = "Ground",
  1164.         Eggs = 2,
  1165.         Wingspan = 79,
  1166.         Wetland = true,
  1167.         Worm = 2,
  1168.         Grain = 1,
  1169.         TotalFood = 3
  1170.     },
  1171.     ["American Bittern"] = {
  1172.     Name = "American Bittern",
  1173.     Game = "core",
  1174.     Color = "Brown",
  1175.     PowerCategory = "Card-drawing",
  1176.     Description = "Player(s) with the fewest [wetland] birds = draw 1 [card].",
  1177.     VP = 7,
  1178.     Nest = "Platform",
  1179.     Eggs = 2,
  1180.     Wingspan = 107,
  1181.     Wetland = true,
  1182.     Worm = 1,
  1183.     Fish = 1,
  1184.     Rat = 1,
  1185.     TotalFood = 3
  1186.   },
  1187.   ["American Coot"] = {
  1188.     Name = "American Coot",
  1189.     Game = "core",
  1190.     Color = "Brown",
  1191.     PowerCategory = "Flocking",
  1192.     Description = "Tuck a [card] from your hand behind this bird. If you do, draw 1 [card].",
  1193.     Flocking = true,
  1194.     VP = 3,
  1195.     Nest = "Platform",
  1196.     Eggs = 5,
  1197.     Wingspan = 61,
  1198.     Wetland = true,
  1199.     Grain = 1,
  1200.     WildFood = 1,
  1201.     TotalFood = 2
  1202.   },
  1203.   ["American Crow"] = {
  1204.     Name = "American Crow",
  1205.     Game = "core",
  1206.     Color = "Brown",
  1207.     PowerCategory = "Food from Supply",
  1208.     Description = "Discard 1 [egg] from any of your other birds to gain 1 [wild] from the supply.",
  1209.     VP = 4,
  1210.     Nest = "Platform",
  1211.     Eggs = 2,
  1212.     Wingspan = 99,
  1213.     Forest = true,
  1214.     Grassland = true,
  1215.     Wetland = true,
  1216.     WildFood = 1,
  1217.     TotalFood = 1
  1218.   },
  1219.   ["American Goldfinch"] = {
  1220.     Name = "American Goldfinch",
  1221.     Game = "core",
  1222.     Color = "White",
  1223.     PowerCategory = "Food from Supply",
  1224.     Description = "Gain 3 [wheat] from the supply.",
  1225.     VP = 3,
  1226.     Nest = "Bowl",
  1227.     Eggs = 3,
  1228.     Wingspan = 23,
  1229.     Grassland = true,
  1230.     Grain = 2,
  1231.     TotalFood = 2
  1232.   },
  1233.   ["American Kestrel"] = {
  1234.     Name = "American Kestrel",
  1235.     Game = "core",
  1236.     Color = "Brown",
  1237.     PowerCategory = "Hunting/Fishing",
  1238.     Description = "Roll all dice not in birdfeeder. If any are [rat], gain 1 [rat] and cache it on this card.",
  1239.     Predator = true,
  1240.     VP = 5,
  1241.     Nest = "Cavity",
  1242.     Eggs = 3,
  1243.     Wingspan = 56,
  1244.     Grassland = true,
  1245.     Worm = 1,
  1246.     Rat = 1,
  1247.     TotalFood = 2
  1248.   },
  1249.   ["American Oystercatcher"] = {
  1250.     Name = "American Oystercatcher",
  1251.     Game = "core",
  1252.     Color = "White",
  1253.     PowerCategory = "Card-drawing",
  1254.     Description = "Draw [card] equal to the number of players +1. Starting with you and proceeding clockwise, each player selects 1 of those cards and places it in their hand. You keep the extra card.",
  1255.     VP = 5,
  1256.     Nest = "Ground",
  1257.     Eggs = 2,
  1258.     Wingspan = 81,
  1259.     Wetland = true,
  1260.     Worm = 2,
  1261.     TotalFood = 2
  1262.   },
  1263.   ["American Redstart"] = {
  1264.     Name = "American Redstart",
  1265.     Game = "swiftstart",
  1266.     Color = "Brown",
  1267.     Description = "Gain 1 [wild] from the birdfeeder.",
  1268.     VP = 4,
  1269.     Nest = "Bowl",
  1270.     Eggs = 4,
  1271.     Wingspan = 20,
  1272.     Forest = true,
  1273.     Worm = 1,
  1274.     Berry = 1,
  1275.     TotalFood = 2
  1276.   },
  1277.   ["American Robin"] = {
  1278.     Name = "American Robin",
  1279.     Game = "core",
  1280.     Color = "Brown",
  1281.     PowerCategory = "Flocking",
  1282.     Description = "Tuck a [card] from your hand behind this bird. If you do, draw 1 [card].",
  1283.     Flocking = true,
  1284.     VP = 1,
  1285.     Nest = "Bowl",
  1286.     Eggs = 4,
  1287.     Wingspan = 43,
  1288.     Forest = true,
  1289.     Grassland = true,
  1290.     Worm = 1,
  1291.     Berry = 1,
  1292.     EitherFood = true,
  1293.     TotalFood = 1
  1294.   },
  1295.   ["American White Pelican"] = {
  1296.     Name = "American White Pelican",
  1297.     Game = "core",
  1298.     Color = "Brown",
  1299.     PowerCategory = "Flocking",
  1300.     Description = "Discard a [fish] to tuck 2 [card] from the deck behind this bird.",
  1301.     Flocking = true,
  1302.     VP = 5,
  1303.     Nest = "Ground",
  1304.     Eggs = 1,
  1305.     Wingspan = 274,
  1306.     Wetland = true,
  1307.     Fish = 2,
  1308.     TotalFood = 2
  1309.   },
  1310.   ["American Woodcock"] = {
  1311.     Name = "American Woodcock",
  1312.     Game = "core",
  1313.     VP = 9,
  1314.     Nest = "Ground",
  1315.     Eggs = 2,
  1316.     Wingspan = 46,
  1317.     Forest = true,
  1318.     Grassland = true,
  1319.     Worm = 2,
  1320.     Grain = 1,
  1321.     TotalFood = 3
  1322.   },
  1323.   ["Anhinga"] = {
  1324.     Name = "Anhinga",
  1325.     Game = "core",
  1326.     Color = "Brown",
  1327.     PowerCategory = "Hunting/Fishing",
  1328.     Description = "Roll all dice not in birdfeeder. If any are [fish], gain 1 [fish] and cache it on this card.",
  1329.     Predator = true,
  1330.     VP = 6,
  1331.     Nest = "Platform",
  1332.     Eggs = 2,
  1333.     Wingspan = 114,
  1334.     Wetland = true,
  1335.     Fish = 2,
  1336.     TotalFood = 2
  1337.   },
  1338.   ["Anna's Hummingbird"] = {
  1339.     Name = "Anna's Hummingbird",
  1340.     Game = "core",
  1341.     Color = "Brown",
  1342.     PowerCategory = "Food from Birdfeeder",
  1343.     Description = "Each player gains 1 [die] from the birdfeeder, starting with the player of your choice.",
  1344.     VP = 4,
  1345.     Nest = "Bowl",
  1346.     Eggs = 2,
  1347.     Wingspan = 13,
  1348.     Forest = true,
  1349.     Grassland = true,
  1350.     Wetland = true,
  1351.     WildFood = 1,
  1352.     TotalFood = 1
  1353.   },
  1354.   ["Ash-Throated Flycatcher"] = {
  1355.     Name = "Ash-Throated Flycatcher",
  1356.     Game = "core",
  1357.     Color = "White",
  1358.     PowerCategory = "Egg-laying",
  1359.     Description = "Lay 1 [egg] on each of your birds with a [cavity] nest.",
  1360.     VP = 4,
  1361.     Nest = "Cavity",
  1362.     Eggs = 4,
  1363.     Wingspan = 30,
  1364.     Grassland = true,
  1365.     Worm = 2,
  1366.     Berry = 1,
  1367.     TotalFood = 3
  1368.   },
  1369.   ["Atlantic Puffin"] = {
  1370.     Name = "Atlantic Puffin",
  1371.     Game = "core",
  1372.     Color = "White",
  1373.     PowerCategory = "Other",
  1374.     Description = "Draw 2 new bonus cards and keep 1.",
  1375.     BonusCard = true,
  1376.     VP = 8,
  1377.     Nest = "Wild",
  1378.     Eggs = 1,
  1379.     Wingspan = 53,
  1380.     Wetland = true,
  1381.     Fish = 3,
  1382.     TotalFood = 3
  1383.   },
  1384.   ["Audouin's Gull"] = {
  1385.     Name = "Audouin's Gull",
  1386.     Game = "european",
  1387.     Color = "Brown",
  1388.     PowerCategory = "Flocking",
  1389.     Description = "Draw 2 [card] from the deck. Tuck 1 behind this bird and keep the other.",
  1390.     Flocking = true,
  1391.     VP = 1,
  1392.     Nest = "Ground",
  1393.     Eggs = 2,
  1394.     Wingspan = 132,
  1395.     Wetland = true,
  1396.     Fish = 1,
  1397.     WildFood = 1,
  1398.     TotalFood = 2
  1399.   },
  1400.   ["Baird's Sparrow"] = {
  1401.     Name = "Baird's Sparrow",
  1402.     Game = "core",
  1403.     Color = "Brown",
  1404.     PowerCategory = "Egg-laying",
  1405.     Description = "Lay 1 [egg] on any bird.",
  1406.     VP = 3,
  1407.     Nest = "Ground",
  1408.     Eggs = 2,
  1409.     Wingspan = 23,
  1410.     Grassland = true,
  1411.     Worm = 1,
  1412.     Grain = 1,
  1413.     TotalFood = 2
  1414.   },
  1415.   ["Bald Eagle"] = {
  1416.     Name = "Bald Eagle",
  1417.     Game = "core",
  1418.     Color = "White",
  1419.     PowerCategory = "Food from Birdfeeder",
  1420.     Description = "Gain all [fish] that are in the birdfeeder.",
  1421.     VP = 9,
  1422.     Nest = "Platform",
  1423.     Eggs = 1,
  1424.     Wingspan = 203,
  1425.     Wetland = true,
  1426.     Fish = 2,
  1427.     Rat = 1,
  1428.     TotalFood = 3
  1429.   },
  1430.   ["Baltimore Oriole"] = {
  1431.     Name = "Baltimore Oriole",
  1432.     Game = "core",
  1433.     Color = "Brown",
  1434.     PowerCategory = "Food from Supply",
  1435.     Description = "All players gain 1 [berry] from the supply.",
  1436.     VP = 9,
  1437.     Nest = "Wild",
  1438.     Eggs = 2,
  1439.     Wingspan = 30,
  1440.     Forest = true,
  1441.     Worm = 1,
  1442.     Berry = 2,
  1443.     TotalFood = 3
  1444.   },
  1445.   ["Barn Owl"] = {
  1446.     Name = "Barn Owl",
  1447.     Game = "core",
  1448.     Color = "Brown",
  1449.     PowerCategory = "Hunting/Fishing",
  1450.     Description = "Roll all dice not in birdfeeder. If any are [rat], gain 1 [rat] and cache it on this card.",
  1451.     Predator = true,
  1452.     VP = 5,
  1453.     Nest = "Cavity",
  1454.     Eggs = 4,
  1455.     Wingspan = 107,
  1456.     Forest = true,
  1457.     Grassland = true,
  1458.     Wetland = true,
  1459.     Rat = 2,
  1460.     TotalFood = 2
  1461.   },
  1462.   ["Barn Swallow"] = {
  1463.     Name = "Barn Swallow",
  1464.     Game = "core",
  1465.     Color = "Brown",
  1466.     PowerCategory = "Flocking",
  1467.     Description = "Tuck a [card] from your hand behind this bird. If you do, draw 1 [card].",
  1468.     Flocking = true,
  1469.     VP = 1,
  1470.     Nest = "Wild",
  1471.     Eggs = 3,
  1472.     Wingspan = 38,
  1473.     Grassland = true,
  1474.     Wetland = true,
  1475.     Worm = 1,
  1476.     TotalFood = 1
  1477.   },
  1478.   ["Barred Owl"] = {
  1479.     Name = "Barred Owl",
  1480.     Game = "core",
  1481.     Color = "Brown",
  1482.     PowerCategory = "Hunting/Fishing",
  1483.     Description = "Look at a [card] from the deck. If <75cm, tuck it behind this bird. If not, discard it.",
  1484.     Predator = true,
  1485.     VP = 3,
  1486.     Nest = "Cavity",
  1487.     Eggs = 2,
  1488.     Wingspan = 107,
  1489.     Forest = true,
  1490.     Rat = 1,
  1491.     TotalFood = 1
  1492.   },
  1493.   ["Barrow's Goldeneye"] = {
  1494.     Name = "Barrow's Goldeneye",
  1495.     Game = "core",
  1496.     Color = "Pink",
  1497.     PowerCategory = "Egg-laying",
  1498.     Description = "When another player takes the 'lay eggs' action, this bird lays 1 [egg] on another bird with a [cavity] nest.",
  1499.     VP = 5,
  1500.     Nest = "Cavity",
  1501.     Eggs = 4,
  1502.     Wingspan = 71,
  1503.     Wetland = true,
  1504.     Worm = 1,
  1505.     Grain = 1,
  1506.     Fish = 1,
  1507.     TotalFood = 3
  1508.   },
  1509.   ["Bell's Vireo"] = {
  1510.     Name = "Bell's Vireo",
  1511.     Game = "core",
  1512.     Color = "White",
  1513.     PowerCategory = "Other",
  1514.     Description = "Draw 2 new bonus cards and keep 1.",
  1515.     BonusCard = true,
  1516.     VP = 4,
  1517.     Nest = "Wild",
  1518.     Eggs = 2,
  1519.     Wingspan = 18,
  1520.     Forest = true,
  1521.     Grassland = true,
  1522.     Worm = 2,
  1523.     TotalFood = 2
  1524.   },
  1525.   ["Belted Kingfisher"] = {
  1526.     Name = "Belted Kingfisher",
  1527.     Game = "core",
  1528.     Color = "Pink",
  1529.     PowerCategory = "Food from Supply",
  1530.     Description = "When another player plays a [wetland] bird, gain 1 [fish] from the supply.",
  1531.     VP = 4,
  1532.     Nest = "Wild",
  1533.     Eggs = 4,
  1534.     Wingspan = 53,
  1535.     Wetland = true,
  1536.     Fish = 1,
  1537.     WildFood = 1,
  1538.     TotalFood = 2
  1539.   },
  1540.   ["Bewick's Wren"] = {
  1541.     Name = "Bewick's Wren",
  1542.     Game = "core",
  1543.     Color = "Brown",
  1544.     PowerCategory = "Other",
  1545.     Description = "If this bird is to the right of all other birds in its habitat, move it to another habitat.",
  1546.     VP = 4,
  1547.     Nest = "Cavity",
  1548.     Eggs = 3,
  1549.     Wingspan = 18,
  1550.     Forest = true,
  1551.     Grassland = true,
  1552.     Wetland = true,
  1553.     Worm = 2,
  1554.     Grain = 1,
  1555.     TotalFood = 3
  1556.   },
  1557.   ["Black Redstart"] = {
  1558.     Name = "Black Redstart",
  1559.     Game = "european",
  1560.     Color = "Teal",
  1561.     PowerCategory = "Egg-laying",
  1562.     Description = "Choose a habitat with no [egg]. Lay 1 [egg] on each bird in that habitat.",
  1563.     VP = 0,
  1564.     Nest = "Wild",
  1565.     Eggs = 4,
  1566.     Wingspan = 24,
  1567.     Grassland = true,
  1568.     Worm = 1,
  1569.     Grain = 1,
  1570.     Berry = 1,
  1571.     TotalFood = 3
  1572.   },
  1573.   ["Black Skimmer"] = {
  1574.     Name = "Black Skimmer",
  1575.     Game = "core",
  1576.     Color = "Brown",
  1577.     PowerCategory = "Hunting/Fishing",
  1578.     Description = "Roll all dice not in birdfeeder. If any are [fish], gain 1 [fish] and cache it on this card.",
  1579.     Predator = true,
  1580.     VP = 6,
  1581.     Nest = "Ground",
  1582.     Eggs = 2,
  1583.     Wingspan = 112,
  1584.     Wetland = true,
  1585.     Fish = 2,
  1586.     TotalFood = 2
  1587.   },
  1588.   ["Black Tern"] = {
  1589.     Name = "Black Tern",
  1590.     Game = "core",
  1591.     Color = "Brown",
  1592.     PowerCategory = "Card-drawing",
  1593.     Description = "Draw 1 [card]. If you do, discard 1 [card] from your hand at the end of your turn.",
  1594.     VP = 4,
  1595.     Nest = "Wild",
  1596.     Eggs = 2,
  1597.     Wingspan = 61,
  1598.     Wetland = true,
  1599.     Worm = 1,
  1600.     Fish = 1,
  1601.     EitherFood = true,
  1602.     TotalFood = 1
  1603.   },
  1604.   ["Black Vulture"] = {
  1605.     Name = "Black Vulture",
  1606.     Game = "core",
  1607.     Color = "Pink",
  1608.     PowerCategory = "Food from Birdfeeder",
  1609.     Description = "When another player's predator succeeds, gain 1 [die] from the birdfeeder.",
  1610.     VP = 2,
  1611.     Nest = "Cavity",
  1612.     Eggs = 1,
  1613.     Wingspan = 150,
  1614.     Forest = true,
  1615.     TotalFood = 0
  1616.   },
  1617.   ["Black Woodpecker"] = {
  1618.     Name = "Black Woodpecker",
  1619.     Game = "european",
  1620.     Color = "Brown",
  1621.     PowerCategory = "Food-related",
  1622.     Description = "Gain all [worm] that are in the birdfeeder.",
  1623.     VP = 4,
  1624.     Nest = "Cavity",
  1625.     Eggs = 2,
  1626.     Wingspan = 70,
  1627.     Forest = true,
  1628.     Worm = 2,
  1629.     Berry = 1,
  1630.     TotalFood = 3
  1631.   },
  1632.   ["Black-Bellied Whistling Duck"] = {
  1633.     Name = "Black-Bellied Whistling Duck",
  1634.     Game = "core",
  1635.     Color = "Brown",
  1636.     PowerCategory = "Flocking",
  1637.     Description = "Discard 1 [wheat] to tuck 2 [card] from the deck behind this bird.",
  1638.     Flocking = true,
  1639.     VP = 2,
  1640.     Nest = "Cavity",
  1641.     Eggs = 5,
  1642.     Wingspan = 76,
  1643.     Wetland = true,
  1644.     Grain = 2,
  1645.     TotalFood = 2
  1646.   },
  1647.   ["Black-Billed Magpie"] = {
  1648.     Name = "Black-Billed Magpie",
  1649.     Game = "core",
  1650.     Color = "Pink",
  1651.     PowerCategory = "Food from Birdfeeder",
  1652.     Description = "When another player's predator succeeds, gain 1 [die] from the birdfeeder.",
  1653.     VP = 3,
  1654.     Nest = "Wild",
  1655.     Eggs = 3,
  1656.     Wingspan = 64,
  1657.     Grassland = true,
  1658.     WildFood = 2,
  1659.     TotalFood = 2
  1660.   },
  1661.   ["Black-Chinned Hummingbird"] = {
  1662.     Name = "Black-Chinned Hummingbird",
  1663.     Game = "swiftstart",
  1664.     Color = "Brown",
  1665.     Description = "All players gain a [berry] from the supply.",
  1666.     VP = 4,
  1667.     Nest = "Bowl",
  1668.     Eggs = 2,
  1669.     Wingspan = 8,
  1670.     Forest = true,
  1671.     Grassland = true,
  1672.     Wetland = true,
  1673.     WildFood = 1,
  1674.     TotalFood = 1
  1675.   },
  1676.   ["Black-Crowned Night-Heron"] = {
  1677.     Name = "Black-Crowned Night-Heron",
  1678.     Game = "core",
  1679.     Color = "Brown",
  1680.     PowerCategory = "Food from Supply",
  1681.     Description = "Discard 1 [egg] from any of your other birds to gain 1 [wild] from the supply.",
  1682.     VP = 9,
  1683.     Nest = "Platform",
  1684.     Eggs = 2,
  1685.     Wingspan = 112,
  1686.     Wetland = true,
  1687.     Worm = 1,
  1688.     Fish = 1,
  1689.     Rat = 1,
  1690.     TotalFood = 3
  1691.   },
  1692.   ["Black-Headed Gull"] = {
  1693.     Name = "Black-Headed Gull",
  1694.     Game = "european",
  1695.     Color = "Brown",
  1696.     PowerCategory = "Food-related",
  1697.     Description = "Steal 1 [wild] from another player's supply and add it to your own supply. They gain 1 [die] from the birdfeeder.",
  1698.     VP = 3,
  1699.     Nest = "Ground",
  1700.     Eggs = 2,
  1701.     Wingspan = 102,
  1702.     Wetland = true,
  1703.     Worm = 1,
  1704.     WildFood = 1,
  1705.     TotalFood = 2
  1706.   },
  1707.   ["Black-Necked Stilt"] = {
  1708.     Name = "Black-Necked Stilt",
  1709.     Game = "core",
  1710.     Color = "White",
  1711.     PowerCategory = "Card-drawing",
  1712.     Description = "Draw 2 [card].",
  1713.     VP = 4,
  1714.     Nest = "Ground",
  1715.     Eggs = 2,
  1716.     Wingspan = 74,
  1717.     Wetland = true,
  1718.     Worm = 2,
  1719.     TotalFood = 2
  1720.   },
  1721.   ["Black-Tailed Godwit"] = {
  1722.     Name = "Black-Tailed Godwit",
  1723.     Game = "european",
  1724.     Color = "White",
  1725.     PowerCategory = "Other",
  1726.     Description = "Draw 1 new bonus card. Then draw 3 [card] and keep 1 of them.",
  1727.     BonusCard = true,
  1728.     VP = 6,
  1729.     Nest = "Ground",
  1730.     Eggs = 2,
  1731.     Wingspan = 76,
  1732.     Wetland = true,
  1733.     Worm = 2,
  1734.     Grain = 1,
  1735.     TotalFood = 3
  1736.   },
  1737.   ["Black-Throated Diver"] = {
  1738.     Name = "Black-Throated Diver",
  1739.     Game = "european",
  1740.     Color = "Brown",
  1741.     PowerCategory = "Card-drawing",
  1742.     Description = "Discard all remaining face-up [card] and refill the tray. If you do, draw 1 of the new face-up [card].",
  1743.     VP = 5,
  1744.     Nest = "Ground",
  1745.     Eggs = 1,
  1746.     Wingspan = 120,
  1747.     Wetland = true,
  1748.     Fish = 2,
  1749.     TotalFood = 2
  1750.   },
  1751.   ["Blue Grosbeak"] = {
  1752.     Name = "Blue Grosbeak",
  1753.     Game = "core",
  1754.     Color = "Brown",
  1755.     PowerCategory = "Other",
  1756.     Description = "If this bird is to the right of all other birds in its habitat, move it to another habitat.",
  1757.     VP = 4,
  1758.     Nest = "Bowl",
  1759.     Eggs = 3,
  1760.     Wingspan = 28,
  1761.     Forest = true,
  1762.     Grassland = true,
  1763.     Wetland = true,
  1764.     Worm = 1,
  1765.     Grain = 2,
  1766.     TotalFood = 3
  1767.   },
  1768.   ["Blue Jay"] = {
  1769.     Name = "Blue Jay",
  1770.     Game = "core",
  1771.     Color = "Brown",
  1772.     PowerCategory = "Caching Food",
  1773.     Description = "Gain 1 [wheat] from the birdfeeder (if available). You may cache it on this card.",
  1774.     VP = 3,
  1775.     Nest = "Bowl",
  1776.     Eggs = 2,
  1777.     Wingspan = 41,
  1778.     Forest = true,
  1779.     Grain = 1,
  1780.     WildFood = 1,
  1781.     TotalFood = 2
  1782.   },
  1783.   ["Blue-Gray Gnatcatcher"] = {
  1784.     Name = "Blue-Gray Gnatcatcher",
  1785.     Game = "core",
  1786.     Color = "Brown",
  1787.     PowerCategory = "Food from Supply",
  1788.     Description = "Gain 1 [worm] from the supply.",
  1789.     VP = 1,
  1790.     Nest = "Bowl",
  1791.     Eggs = 3,
  1792.     Wingspan = 15,
  1793.     Forest = true,
  1794.     Worm = 1,
  1795.     TotalFood = 1
  1796.   },
  1797.   ["Blue-Winged Warbler"] = {
  1798.     Name = "Blue-Winged Warbler",
  1799.     Game = "core",
  1800.     Color = "White",
  1801.     VP = 8,
  1802.     Nest = "Bowl",
  1803.     Eggs = 2,
  1804.     Wingspan = 20,
  1805.     Forest = true,
  1806.     Grassland = true,
  1807.     Worm = 2,
  1808.     TotalFood = 2
  1809.   },
  1810.   ["Bluethroat"] = {
  1811.     Name = "Bluethroat",
  1812.     Game = "european",
  1813.     Color = "Brown",
  1814.     PowerCategory = "Food-related",
  1815.     Description = "Choose a food type. All players gain 1 of that food from the supply.",
  1816.     VP = 7,
  1817.     Nest = "Ground",
  1818.     Eggs = 5,
  1819.     Wingspan = 22,
  1820.     Grassland = true,
  1821.     Wetland = true,
  1822.     Worm = 1,
  1823.     Grain = 1,
  1824.     Berry = 1,
  1825.     TotalFood = 3
  1826.   },
  1827.   ["Bobolink"] = {
  1828.     Name = "Bobolink",
  1829.     Game = "core",
  1830.     Color = "White",
  1831.     PowerCategory = "Egg-laying",
  1832.     Description = "Lay 1 [egg] on each of your birds with a [ground] nest.",
  1833.     VP = 4,
  1834.     Nest = "Ground",
  1835.     Eggs = 3,
  1836.     Wingspan = 30,
  1837.     Grassland = true,
  1838.     Worm = 1,
  1839.     Grain = 2,
  1840.     TotalFood = 3
  1841.   },
  1842.   ["Bonelli's Eagle"] = {
  1843.     Name = "Bonelli's Eagle",
  1844.     Game = "european",
  1845.     Color = "White",
  1846.     PowerCategory = "Hunting and Fishing",
  1847.     Description = "For each [rat] in this bird's cost, you may pay 1 [card] from your hand instead. If you do, tuck the paid [card] behind this card.",
  1848.     Predator = true,
  1849.     VP = 8,
  1850.     Nest = "Platform",
  1851.     Eggs = 1,
  1852.     Wingspan = 160,
  1853.     Forest = true,
  1854.     Grassland = true,
  1855.     Wetland = true,
  1856.     Rat = 3,
  1857.     ["* (food cost)"] = true,
  1858.     TotalFood = 3
  1859.   },
  1860.   ["Brant"] = {
  1861.     Name = "Brant",
  1862.     Game = "swiftstart",
  1863.     Color = "White",
  1864.     Description = "Draw the 3 face-up [card] in the bird tray.",
  1865.     VP = 3,
  1866.     Nest = "Ground",
  1867.     Eggs = 2,
  1868.     Wingspan = 114,
  1869.     Wetland = true,
  1870.     Grain = 1,
  1871.     WildFood = 1,
  1872.     TotalFood = 2
  1873.   },
  1874.   ["Brewer's Blackbird"] = {
  1875.     Name = "Brewer's Blackbird",
  1876.     Game = "core",
  1877.     Color = "Brown",
  1878.     PowerCategory = "Flocking",
  1879.     Description = "Tuck a [card] from your hand behind this bird. If you do, also lay 1 [egg] on this bird.",
  1880.     Flocking = true,
  1881.     VP = 3,
  1882.     Nest = "Bowl",
  1883.     Eggs = 3,
  1884.     Wingspan = 41,
  1885.     Grassland = true,
  1886.     Grain = 1,
  1887.     WildFood = 1,
  1888.     TotalFood = 2
  1889.   },
  1890.   ["Broad-Winged Hawk"] = {
  1891.     Name = "Broad-Winged Hawk",
  1892.     Game = "swiftstart",
  1893.     Color = "Brown",
  1894.     Description = "Roll all dice not in birdfeeder. If any are a [rat], gain 1 [rat] and cache it on this card.",
  1895.     Predator = true,
  1896.     VP = 4,
  1897.     Nest = "Platform",
  1898.     Eggs = 2,
  1899.     Wingspan = 85,
  1900.     Forest = true,
  1901.     Rat = 1,
  1902.     TotalFood = 1
  1903.   },
  1904.   ["Bronzed Cowbird"] = {
  1905.     Name = "Bronzed Cowbird",
  1906.     Game = "core",
  1907.     Color = "Pink",
  1908.     PowerCategory = "Egg-laying",
  1909.     Description = "When another player takes the 'lay eggs' action, this bird lays 1 [egg] on another bird with a [bowl] nest.",
  1910.     VP = 5,
  1911.     Nest = "None",
  1912.     Eggs = 0,
  1913.     Wingspan = 36,
  1914.     Grassland = true,
  1915.     Worm = 1,
  1916.     Grain = 1,
  1917.     TotalFood = 2
  1918.   },
  1919.   ["Brown Pelican"] = {
  1920.     Name = "Brown Pelican",
  1921.     Game = "core",
  1922.     Color = "White",
  1923.     PowerCategory = "Food from Supply",
  1924.     Description = "Gain 3 [fish] from the supply.",
  1925.     VP = 4,
  1926.     Nest = "Platform",
  1927.     Eggs = 2,
  1928.     Wingspan = 201,
  1929.     Wetland = true,
  1930.     Fish = 2,
  1931.     TotalFood = 2
  1932.   },
  1933.   ["Brown-Headed Cowbird"] = {
  1934.     Name = "Brown-Headed Cowbird",
  1935.     Game = "core",
  1936.     Color = "Pink",
  1937.     PowerCategory = "Egg-laying",
  1938.     Description = "When another player takes the 'lay eggs' action, this bird lays 1 [egg] on another bird with a [bowl] nest.",
  1939.     VP = 3,
  1940.     Nest = "None",
  1941.     Eggs = 0,
  1942.     Wingspan = 30,
  1943.     Grassland = true,
  1944.     Grain = 1,
  1945.     TotalFood = 1
  1946.   },
  1947.   ["Bullfinch"] = {
  1948.     Name = "Bullfinch",
  1949.     Game = "european",
  1950.     Color = "Brown",
  1951.     PowerCategory = "Food-related",
  1952.     Description = "Reset the birdfeeder. If you do, gain 1 [wheat] or [berry] from the birdfeeder after resetting.",
  1953.     VP = 3,
  1954.     Nest = "Bowl",
  1955.     Eggs = 4,
  1956.     Wingspan = 24,
  1957.     Forest = true,
  1958.     Grain = 1,
  1959.     Berry = 1,
  1960.     TotalFood = 2
  1961.   },
  1962.   ["Burrowing Owl"] = {
  1963.     Name = "Burrowing Owl",
  1964.     Game = "core",
  1965.     Color = "Brown",
  1966.     PowerCategory = "Hunting/Fishing",
  1967.     Description = "Roll all dice not in birdfeeder. If any are [rat], gain 1 [rat] and cache it on this card.",
  1968.     Predator = true,
  1969.     VP = 5,
  1970.     Nest = "Wild",
  1971.     Eggs = 4,
  1972.     Wingspan = 53,
  1973.     Grassland = true,
  1974.     Worm = 1,
  1975.     Rat = 1,
  1976.     TotalFood = 2
  1977.   },
  1978.   ["Bushtit"] = {
  1979.     Name = "Bushtit",
  1980.     Game = "core",
  1981.     Color = "Brown",
  1982.     PowerCategory = "Flocking",
  1983.     Description = "Tuck a [card] from your hand behind this bird. If you do, also lay 1 [egg] on this bird.",
  1984.     Flocking = true,
  1985.     VP = 2,
  1986.     Nest = "Wild",
  1987.     Eggs = 5,
  1988.     Wingspan = 15,
  1989.     Forest = true,
  1990.     Grassland = true,
  1991.     Wetland = true,
  1992.     Worm = 1,
  1993.     Grain = 1,
  1994.     TotalFood = 2
  1995.   },
  1996.   ["California Condor"] = {
  1997.     Name = "California Condor",
  1998.     Game = "core",
  1999.     Color = "White",
  2000.     PowerCategory = "Other",
  2001.     Description = "Draw 2 new bonus cards and keep 1.",
  2002.     BonusCard = true,
  2003.     VP = 1,
  2004.     Nest = "Ground",
  2005.     Eggs = 1,
  2006.     Wingspan = 277,
  2007.     Forest = true,
  2008.     Grassland = true,
  2009.     Wetland = true,
  2010.     TotalFood = 0
  2011.   },
  2012.   ["California Quail"] = {
  2013.     Name = "California Quail",
  2014.     Game = "core",
  2015.     Color = "Brown",
  2016.     PowerCategory = "Egg-laying",
  2017.     Description = "Lay 1 [egg] on this bird.",
  2018.     VP = 3,
  2019.     Nest = "Ground",
  2020.     Eggs = 6,
  2021.     Wingspan = 36,
  2022.     Forest = true,
  2023.     Grassland = true,
  2024.     Worm = 1,
  2025.     Grain = 2,
  2026.     TotalFood = 3
  2027.   },
  2028.   ["Canada Goose"] = {
  2029.     Name = "Canada Goose",
  2030.     Game = "core",
  2031.     Color = "Brown",
  2032.     PowerCategory = "Flocking",
  2033.     Description = "Discard 1 [wheat] to tuck 2 [card] from the deck behind this bird.",
  2034.     Flocking = true,
  2035.     VP = 3,
  2036.     Nest = "Ground",
  2037.     Eggs = 3,
  2038.     Wingspan = 132,
  2039.     Grassland = true,
  2040.     Wetland = true,
  2041.     Grain = 2,
  2042.     TotalFood = 2
  2043.   },
  2044.   ["Canvasback"] = {
  2045.     Name = "Canvasback",
  2046.     Game = "swiftstart",
  2047.     Color = "Brown",
  2048.     Description = "All players draw 1 [card] from the deck.",
  2049.     VP = 4,
  2050.     Nest = "Wild",
  2051.     Eggs = 4,
  2052.     Wingspan = 82,
  2053.     Wetland = true,
  2054.     Grain = 1,
  2055.     WildFood = 1,
  2056.     TotalFood = 2
  2057.   },
  2058.   ["Carolina Chickadee"] = {
  2059.     Name = "Carolina Chickadee",
  2060.     Game = "core",
  2061.     Color = "Brown",
  2062.     PowerCategory = "Caching Food",
  2063.     Description = "Gain 1 [wheat] from the supply and cache it on this card.",
  2064.     VP = 2,
  2065.     Nest = "Cavity",
  2066.     Eggs = 3,
  2067.     Wingspan = 20,
  2068.     Forest = true,
  2069.     Worm = 1,
  2070.     Grain = 1,
  2071.     EitherFood = true,
  2072.     TotalFood = 1
  2073.   },
  2074.   ["Carolina Wren"] = {
  2075.     Name = "Carolina Wren",
  2076.     Game = "core",
  2077.     Color = "White",
  2078.     PowerCategory = "Card-drawing",
  2079.     Description = "Draw 2 [card].",
  2080.     VP = 1,
  2081.     Nest = "Cavity",
  2082.     Eggs = 5,
  2083.     Wingspan = 20,
  2084.     Forest = true,
  2085.     Worm = 1,
  2086.     Berry = 1,
  2087.     EitherFood = true,
  2088.     TotalFood = 1
  2089.   },
  2090.   ["Carrion Crow"] = {
  2091.     Name = "Carrion Crow",
  2092.     Game = "european",
  2093.     Color = "Teal",
  2094.     PowerCategory = "Food-related",
  2095.     Description = "Choose any 1 player (including yourself). Cache 1 [rat] from the supply on this bird for each [predator] that player has.",
  2096.     VP = 3,
  2097.     Nest = "Platform",
  2098.     Eggs = 2,
  2099.     Wingspan = 92,
  2100.     Grassland = true,
  2101.     Wetland = true,
  2102.     Worm = 1,
  2103.     WildFood = 1,
  2104.     TotalFood = 2
  2105.   },
  2106.   ["Cassin's Finch"] = {
  2107.     Name = "Cassin's Finch",
  2108.     Game = "core",
  2109.     Color = "White",
  2110.     PowerCategory = "Other",
  2111.     Description = "Draw 2 new bonus cards and keep 1.",
  2112.     BonusCard = true,
  2113.     VP = 4,
  2114.     Nest = "Bowl",
  2115.     Eggs = 3,
  2116.     Wingspan = 30,
  2117.     Forest = true,
  2118.     Grain = 1,
  2119.     Berry = 1,
  2120.     TotalFood = 2
  2121.   },
  2122.   ["Cassin's Sparrow"] = {
  2123.     Name = "Cassin's Sparrow",
  2124.     Game = "core",
  2125.     Color = "Brown",
  2126.     PowerCategory = "Egg-laying",
  2127.     Description = "Lay 1 [egg] on any bird.",
  2128.     VP = 3,
  2129.     Nest = "Ground",
  2130.     Eggs = 2,
  2131.     Wingspan = 20,
  2132.     Grassland = true,
  2133.     Worm = 1,
  2134.     Grain = 1,
  2135.     TotalFood = 2
  2136.   },
  2137.   ["Cedar Waxwing"] = {
  2138.     Name = "Cedar Waxwing",
  2139.     Game = "core",
  2140.     Color = "Brown",
  2141.     PowerCategory = "Flocking",
  2142.     Description = "Tuck a [card] from your hand behind this bird. If you do, gain 1 [berry] from the supply.",
  2143.     Flocking = true,
  2144.     VP = 3,
  2145.     Nest = "Bowl",
  2146.     Eggs = 3,
  2147.     Wingspan = 25,
  2148.     Forest = true,
  2149.     Grassland = true,
  2150.     Berry = 2,
  2151.     TotalFood = 2
  2152.   },
  2153.   ["Cerulean Warbler"] = {
  2154.     Name = "Cerulean Warbler",
  2155.     Game = "core",
  2156.     Color = "White",
  2157.     PowerCategory = "Other",
  2158.     Description = "Draw 2 new bonus cards and keep 1.",
  2159.     BonusCard = true,
  2160.     VP = 4,
  2161.     Nest = "Bowl",
  2162.     Eggs = 2,
  2163.     Wingspan = 20,
  2164.     Forest = true,
  2165.     Worm = 1,
  2166.     Grain = 1,
  2167.     TotalFood = 2
  2168.   },
  2169.   ["Cetti's Warbler"] = {
  2170.     Name = "Cetti's Warbler",
  2171.     Game = "european",
  2172.     Color = "Teal",
  2173.     PowerCategory = "Other",
  2174.     Description = "This bird counts double toward the end-of-round goal, if it qualifies for the goal.",
  2175.     VP = 4,
  2176.     Nest = "Bowl",
  2177.     Eggs = 3,
  2178.     Wingspan = 17,
  2179.     Wetland = true,
  2180.     Worm = 1,
  2181.     Grain = 1,
  2182.     TotalFood = 2
  2183.   },
  2184.   ["Chestnut-Collared Longspur"] = {
  2185.     Name = "Chestnut-Collared Longspur",
  2186.     Game = "core",
  2187.     Color = "White",
  2188.     PowerCategory = "Other",
  2189.     Description = "Draw 2 new bonus cards and keep 1.",
  2190.     BonusCard = true,
  2191.     VP = 5,
  2192.     Nest = "Ground",
  2193.     Eggs = 4,
  2194.     Wingspan = 25,
  2195.     Grassland = true,
  2196.     Worm = 1,
  2197.     Grain = 2,
  2198.     TotalFood = 3
  2199.   },
  2200.   ["Chihuahuan Raven"] = {
  2201.     Name = "Chihuahuan Raven",
  2202.     Game = "core",
  2203.     Color = "Brown",
  2204.     PowerCategory = "Food from Supply",
  2205.     Description = "Discard 1 [egg] from any of your other birds to gain 2 [wild] from the supply.",
  2206.     VP = 4,
  2207.     Nest = "Platform",
  2208.     Eggs = 3,
  2209.     Wingspan = 112,
  2210.     Grassland = true,
  2211.     Rat = 1,
  2212.     WildFood = 2,
  2213.     TotalFood = 3
  2214.   },
  2215.   ["Chimney Swift"] = {
  2216.     Name = "Chimney Swift",
  2217.     Game = "core",
  2218.     Color = "Brown",
  2219.     PowerCategory = "Other",
  2220.     Description = "If this bird is to the right of all other birds in its habitat, move it to another habitat.",
  2221.     VP = 3,
  2222.     Nest = "Wild",
  2223.     Eggs = 2,
  2224.     Wingspan = 36,
  2225.     Forest = true,
  2226.     Grassland = true,
  2227.     Wetland = true,
  2228.     Worm = 2,
  2229.     TotalFood = 2
  2230.   },
  2231.   ["Chipping Sparrow"] = {
  2232.     Name = "Chipping Sparrow",
  2233.     Game = "core",
  2234.     Color = "Brown",
  2235.     PowerCategory = "Egg-laying",
  2236.     Description = "Lay 1 [egg] on any bird.",
  2237.     VP = 1,
  2238.     Nest = "Bowl",
  2239.     Eggs = 3,
  2240.     Wingspan = 23,
  2241.     Forest = true,
  2242.     Grassland = true,
  2243.     Worm = 1,
  2244.     Grain = 1,
  2245.     EitherFood = true,
  2246.     TotalFood = 1
  2247.   },
  2248.   ["Clark's Grebe"] = {
  2249.     Name = "Clark's Grebe",
  2250.     Game = "core",
  2251.     Color = "Brown",
  2252.     PowerCategory = "Card-drawing",
  2253.     Description = "Draw 1 [card]. If you do, discard 1 [card] from your hand at the end of your turn.",
  2254.     VP = 5,
  2255.     Nest = "Wild",
  2256.     Eggs = 2,
  2257.     Wingspan = 61,
  2258.     Wetland = true,
  2259.     Fish = 1,
  2260.     TotalFood = 1
  2261.   },
  2262.   ["Clark's Nutcracker"] = {
  2263.     Name = "Clark's Nutcracker",
  2264.     Game = "core",
  2265.     Color = "Brown",
  2266.     PowerCategory = "Caching Food",
  2267.     Description = "Gain 1 [wheat] from the birdfeeder (if available). You may cache it on this card.",
  2268.     VP = 5,
  2269.     Nest = "Platform",
  2270.     Eggs = 2,
  2271.     Wingspan = 61,
  2272.     Forest = true,
  2273.     Grain = 2,
  2274.     WildFood = 1,
  2275.     TotalFood = 3
  2276.   },
  2277.   ["Coal Tit"] = {
  2278.     Name = "Coal Tit",
  2279.     Game = "european",
  2280.     Color = "Brown",
  2281.     PowerCategory = "Food-related",
  2282.     Description = "Gain 1 [wheat] from the supply and cache it on this card. At any time, you may spend [wheat] cached on this card.",
  2283.     VP = 2,
  2284.     Nest = "Cavity",
  2285.     Eggs = 6,
  2286.     Wingspan = 16,
  2287.     Forest = true,
  2288.     Worm = 1,
  2289.     Grain = 1,
  2290.     TotalFood = 2
  2291.   },
  2292.   ["Common Blackbird"] = {
  2293.     Name = "Common Blackbird",
  2294.     Game = "european",
  2295.     Color = "White",
  2296.     PowerCategory = "Other",
  2297.     Description = "Place this bird sideways, so that it covers 2 [forest] spaces. Pay the lower egg cost.",
  2298.     VP = 4,
  2299.     Nest = "Bowl",
  2300.     Eggs = 5,
  2301.     Wingspan = 36,
  2302.     Forest = true,
  2303.     Worm = 1,
  2304.     Berry = 2,
  2305.     TotalFood = 3
  2306.   },
  2307.   ["Common Buzzard"] = {
  2308.     Name = "Common Buzzard",
  2309.     Game = "european",
  2310.     Color = "White",
  2311.     PowerCategory = "Hunting and fishing",
  2312.     Description = "Instead of paying any costs, you may play this bird on top of another bird on your player mat. Discard any eggs and food from that bird. It becomes a tucked card.",
  2313.     Predator = true,
  2314.     VP = 4,
  2315.     Nest = "Platform",
  2316.     Eggs = 2,
  2317.     Wingspan = 123,
  2318.     Forest = true,
  2319.     Grassland = true,
  2320.     Wetland = true,
  2321.     Rat = 1,
  2322.     ["* (food cost)"] = true,
  2323.     TotalFood = 1
  2324.   },
  2325.   ["Common Chaffinch"] = {
  2326.     Name = "Common Chaffinch",
  2327.     Game = "european",
  2328.     Color = "Brown",
  2329.     PowerCategory = "Flocking",
  2330.     Description = "Choose 1-5 birds in this habitat. Tuck 1 [card] from your hand behind each.",
  2331.     Flocking = true,
  2332.     VP = 4,
  2333.     Nest = "Bowl",
  2334.     Eggs = 2,
  2335.     Wingspan = 23,
  2336.     Forest = true,
  2337.     Grassland = true,
  2338.     Worm = 1,
  2339.     Grain = 1,
  2340.     EitherFood = true,
  2341.     TotalFood = 1
  2342.   },
  2343.   ["Common Chiffchaff"] = {
  2344.     Name = "Common Chiffchaff",
  2345.     Game = "european",
  2346.     Color = "Brown",
  2347.     PowerCategory = "Flocking",
  2348.     Description = "Choose 1-5 birds in this habitat. Tuck 1 [card] from your hand behind each.",
  2349.     Flocking = true,
  2350.     VP = 3,
  2351.     Nest = "Ground",
  2352.     Eggs = 3,
  2353.     Wingspan = 20,
  2354.     Forest = true,
  2355.     Wetland = true,
  2356.     Worm = 1,
  2357.     Grain = 1,
  2358.     Berry = 1,
  2359.     EitherFood = true,
  2360.     TotalFood = 1
  2361.   },
  2362.   ["Common Cuckoo"] = {
  2363.     Name = "Common Cuckoo",
  2364.     Game = "european",
  2365.     Color = "Pink",
  2366.     PowerCategory = "Egg-laying",
  2367.     Description = "When another player takes the 'lay eggs' action, this bird lays 1 [egg] on another bird with a [bowl] or [ground] nest.",
  2368.     VP = 4,
  2369.     Nest = "None",
  2370.     Eggs = 0,
  2371.     Wingspan = 57,
  2372.     Forest = true,
  2373.     Grassland = true,
  2374.     Worm = 2,
  2375.     TotalFood = 2
  2376.   },
  2377.   ["Common Goldeneye"] = {
  2378.     Name = "Common Goldeneye",
  2379.     Game = "european",
  2380.     Color = "Teal",
  2381.     PowerCategory = "Egg-laying",
  2382.     Description = "Lay 1 [egg] on this bird for each other bird with a [cavity] nest that you have.",
  2383.     VP = 2,
  2384.     Nest = "Cavity",
  2385.     Eggs = 4,
  2386.     Wingspan = 73,
  2387.     Forest = true,
  2388.     Wetland = true,
  2389.     Worm = 1,
  2390.     Fish = 1,
  2391.     TotalFood = 2
  2392.   },
  2393.   ["Common Grackle"] = {
  2394.     Name = "Common Grackle",
  2395.     Game = "core",
  2396.     Color = "Brown",
  2397.     PowerCategory = "Flocking",
  2398.     Description = "Tuck a [card] from your hand behind this bird. If you do, also lay 1 [egg] on this bird.",
  2399.     Flocking = true,
  2400.     VP = 3,
  2401.     Nest = "Bowl",
  2402.     Eggs = 3,
  2403.     Wingspan = 43,
  2404.     Forest = true,
  2405.     Grassland = true,
  2406.     Wetland = true,
  2407.     Grain = 1,
  2408.     WildFood = 1,
  2409.     TotalFood = 2
  2410.   },
  2411.   ["Common Kingfisher"] = {
  2412.     Name = "Common Kingfisher",
  2413.     Game = "european",
  2414.     Color = "Brown",
  2415.     PowerCategory = "Food-related",
  2416.     Description = "Steal 1 [fish] from another player's supply and cache it on this bird. They gain 1 [die] from the birdfeeder.",
  2417.     VP = 4,
  2418.     Nest = "Wild",
  2419.     Eggs = 5,
  2420.     Wingspan = 26,
  2421.     Wetland = true,
  2422.     Worm = 1,
  2423.     Fish = 2,
  2424.     TotalFood = 3
  2425.   },
  2426.   ["Common Little Bittern"] = {
  2427.     Name = "Common Little Bittern",
  2428.     Game = "european",
  2429.     Color = "Brown",
  2430.     PowerCategory = "Card-drawing",
  2431.     Description = "Gain 1 face-up [card] that can live in [grassland].",
  2432.     VP = 2,
  2433.     Nest = "Platform",
  2434.     Eggs = 3,
  2435.     Wingspan = 49,
  2436.     Wetland = true,
  2437.     Worm = 1,
  2438.     Fish = 1,
  2439.     TotalFood = 2
  2440.   },
  2441.   ["Common Loon"] = {
  2442.     Name = "Common Loon",
  2443.     Game = "core",
  2444.     Color = "Brown",
  2445.     PowerCategory = "Card-drawing",
  2446.     Description = "Player(s) with the fewest [wetland] birds = draw 1 [card].",
  2447.     VP = 6,
  2448.     Nest = "Ground",
  2449.     Eggs = 1,
  2450.     Wingspan = 117,
  2451.     Wetland = true,
  2452.     Fish = 1,
  2453.     WildFood = 1,
  2454.     TotalFood = 2
  2455.   },
  2456.   ["Common Merganser"] = {
  2457.     Name = "Common Merganser",
  2458.     Game = "core",
  2459.     Color = "Brown",
  2460.     PowerCategory = "Hunting/Fishing",
  2461.     Description = "Roll all dice not in birdfeeder. If any are [fish], gain 1 [fish] and cache it on this card.",
  2462.     Predator = true,
  2463.     VP = 5,
  2464.     Nest = "Cavity",
  2465.     Eggs = 4,
  2466.     Wingspan = 86,
  2467.     Wetland = true,
  2468.     Fish = 1,
  2469.     WildFood = 1,
  2470.     TotalFood = 2
  2471.   },
  2472.   ["Common Moorhen"] = {
  2473.     Name = "Common Moorhen",
  2474.     Game = "european",
  2475.     Color = "Brown",
  2476.     PowerCategory = "Other",
  2477.     Description = "Discard 1 [wild] from your supply. If you do, play another bird in your [wetland]. Pay its normal food and egg cost.",
  2478.     VP = 3,
  2479.     Nest = "Wild",
  2480.     Eggs = 6,
  2481.     Wingspan = 53,
  2482.     Wetland = true,
  2483.     Worm = 1,
  2484.     Grain = 1,
  2485.     Fish = 1,
  2486.     TotalFood = 3
  2487.   },
  2488.   ["Common Nighthawk"] = {
  2489.     Name = "Common Nighthawk",
  2490.     Game = "core",
  2491.     Color = "Brown",
  2492.     PowerCategory = "Other",
  2493.     Description = "If this bird is to the right of all other birds in its habitat, move it to another habitat.",
  2494.     VP = 3,
  2495.     Nest = "Ground",
  2496.     Eggs = 2,
  2497.     Wingspan = 56,
  2498.     Forest = true,
  2499.     Grassland = true,
  2500.     Wetland = true,
  2501.     Worm = 2,
  2502.     TotalFood = 2
  2503.   },
  2504.   ["Common Nightingale"] = {
  2505.     Name = "Common Nightingale",
  2506.     Game = "european",
  2507.     Color = "Brown",
  2508.     PowerCategory = "Food-related",
  2509.     Description = "Choose a food type. All players gain 1 of that food from the supply.",
  2510.     VP = 3,
  2511.     Nest = "Bowl",
  2512.     Eggs = 4,
  2513.     Wingspan = 23,
  2514.     Forest = true,
  2515.     Grassland = true,
  2516.     Wetland = true,
  2517.     Worm = 1,
  2518.     Grain = 1,
  2519.     Berry = 1,
  2520.     EitherFood = true,
  2521.     TotalFood = 1
  2522.   },
  2523.   ["Common Raven"] = {
  2524.     Name = "Common Raven",
  2525.     Game = "core",
  2526.     Color = "Brown",
  2527.     PowerCategory = "Food from Supply",
  2528.     Description = "Discard 1 [egg] from any of your other birds to gain 2 [wild] from the supply.",
  2529.     VP = 5,
  2530.     Nest = "Platform",
  2531.     Eggs = 2,
  2532.     Wingspan = 135,
  2533.     Forest = true,
  2534.     Grassland = true,
  2535.     Wetland = true,
  2536.     Rat = 1,
  2537.     WildFood = 2,
  2538.     TotalFood = 3
  2539.   },
  2540.   ["Common Starling"] = {
  2541.     Name = "Common Starling",
  2542.     Game = "european",
  2543.     Color = "Teal",
  2544.     PowerCategory = "Flocking",
  2545.     Description = "Discard up to 5 [wild] from your supply. For each, tuck 1 [card] from the deck behind this bird.",
  2546.     Flocking = true,
  2547.     VP = 3,
  2548.     Nest = "Cavity",
  2549.     Eggs = 4,
  2550.     Wingspan = 38,
  2551.     Grassland = true,
  2552.     Wetland = true,
  2553.     Worm = 1,
  2554.     Grain = 1,
  2555.     Berry = 1,
  2556.     EitherFood = true,
  2557.     TotalFood = 1
  2558.   },
  2559.   ["Common Swift"] = {
  2560.     Name = "Common Swift",
  2561.     Game = "european",
  2562.     Color = "Teal",
  2563.     PowerCategory = "Flocking",
  2564.     Description = "Discard up to 5 [worm] from your supply. For each, tuck 1 [card] from the deck behind this bird.",
  2565.     Flocking = true,
  2566.     VP = 5,
  2567.     Nest = "Cavity",
  2568.     Eggs = 2,
  2569.     Wingspan = 46,
  2570.     Grassland = true,
  2571.     Worm = 1,
  2572.     TotalFood = 1
  2573.   },
  2574.   ["Common Yellowthroat"] = {
  2575.     Name = "Common Yellowthroat",
  2576.     Game = "core",
  2577.     Color = "Brown",
  2578.     PowerCategory = "Card-drawing",
  2579.     Description = "Draw 2 [card]. If you do, discard 1 [card] from your hand at the end of your turn.",
  2580.     VP = 1,
  2581.     Nest = "Bowl",
  2582.     Eggs = 4,
  2583.     Wingspan = 18,
  2584.     Wetland = true,
  2585.     Worm = 1,
  2586.     TotalFood = 1
  2587.   },
  2588.   ["Cooper's Hawk"] = {
  2589.     Name = "Cooper's Hawk",
  2590.     Game = "core",
  2591.     Color = "Brown",
  2592.     PowerCategory = "Hunting/Fishing",
  2593.     Description = "Look at a [card] from the deck. If <75cm, tuck it behind this bird. If not, discard it.",
  2594.     Predator = true,
  2595.     VP = 3,
  2596.     Nest = "Platform",
  2597.     Eggs = 2,
  2598.     Wingspan = 79,
  2599.     Forest = true,
  2600.     Rat = 1,
  2601.     TotalFood = 1
  2602.   },
  2603.   ["Corsican Nuthatch"] = {
  2604.     Name = "Corsican Nuthatch",
  2605.     Game = "european",
  2606.     Color = "White",
  2607.     PowerCategory = "Other",
  2608.     Description = "Draw 1 new bonus card. Then gain 1 [die] from the birdfeeder.",
  2609.     BonusCard = true,
  2610.     VP = 4,
  2611.     Nest = "Cavity",
  2612.     Eggs = 2,
  2613.     Wingspan = 21,
  2614.     Forest = true,
  2615.     Grain = 2,
  2616.     TotalFood = 2
  2617.   },
  2618.   ["Dark-Eyed Junco"] = {
  2619.     Name = "Dark-Eyed Junco",
  2620.     Game = "core",
  2621.     Color = "Brown",
  2622.     PowerCategory = "Flocking",
  2623.     Description = "Tuck a [card] from your hand behind this bird. If you do, gain 1 [wheat] from the supply.",
  2624.     Flocking = true,
  2625.     VP = 3,
  2626.     Nest = "Ground",
  2627.     Eggs = 3,
  2628.     Wingspan = 23,
  2629.     Forest = true,
  2630.     Grassland = true,
  2631.     Worm = 1,
  2632.     Grain = 1,
  2633.     TotalFood = 2
  2634.   },
  2635.   ["Dickcissel"] = {
  2636.     Name = "Dickcissel",
  2637.     Game = "core",
  2638.     Color = "Brown",
  2639.     PowerCategory = "Flocking",
  2640.     Description = "Tuck a [card] from your hand behind this bird. If you do, also lay 1 [egg] on this bird.",
  2641.     Flocking = true,
  2642.     VP = 4,
  2643.     Nest = "Ground",
  2644.     Eggs = 3,
  2645.     Wingspan = 25,
  2646.     Grassland = true,
  2647.     Worm = 1,
  2648.     Grain = 2,
  2649.     TotalFood = 3
  2650.   },
  2651.   ["Double-Crested Cormorant"] = {
  2652.     Name = "Double-Crested Cormorant",
  2653.     Game = "core",
  2654.     Color = "Brown",
  2655.     PowerCategory = "Flocking",
  2656.     Description = "Discard [fish] to tuck 2 [card] from the deck behind this bird.",
  2657.     Flocking = true,
  2658.     VP = 3,
  2659.     Nest = "Platform",
  2660.     Eggs = 3,
  2661.     Wingspan = 132,
  2662.     Wetland = true,
  2663.     Fish = 1,
  2664.     WildFood = 1,
  2665.     TotalFood = 2
  2666.   },
  2667.   ["Downy Woodpecker"] = {
  2668.     Name = "Downy Woodpecker",
  2669.     Game = "core",
  2670.     Color = "White",
  2671.     PowerCategory = "Other",
  2672.     Description = "Play a second bird in your [forest]. Pay its normal cost.",
  2673.     VP = 3,
  2674.     Nest = "Cavity",
  2675.     Eggs = 2,
  2676.     Wingspan = 30,
  2677.     Forest = true,
  2678.     Worm = 1,
  2679.     Grain = 1,
  2680.     Berry = 1,
  2681.     EitherFood = true,
  2682.     TotalFood = 1
  2683.   },
  2684.   ["Dunnock"] = {
  2685.     Name = "Dunnock",
  2686.     Game = "european",
  2687.     Color = "Teal",
  2688.     PowerCategory = "Egg-laying",
  2689.     Description = "Choose 1 other player. For each action cube on their [grassland], lay 1 [egg] on this bird.",
  2690.     VP = 1,
  2691.     Nest = "Bowl",
  2692.     Eggs = 4,
  2693.     Wingspan = 20,
  2694.     Forest = true,
  2695.     Worm = 1,
  2696.     Grain = 1,
  2697.     TotalFood = 2
  2698.   },
  2699.   ["Eastern Bluebird"] = {
  2700.     Name = "Eastern Bluebird",
  2701.     Game = "core",
  2702.     Color = "White",
  2703.     PowerCategory = "Other",
  2704.     Description = "Play a second bird in your [grassland]. Pay its normal cost.",
  2705.     VP = 4,
  2706.     Nest = "Cavity",
  2707.     Eggs = 5,
  2708.     Wingspan = 33,
  2709.     Grassland = true,
  2710.     Worm = 1,
  2711.     Berry = 1,
  2712.     TotalFood = 2
  2713.   },
  2714.   ["Eastern Imperial Eagle"] = {
  2715.     Name = "Eastern Imperial Eagle",
  2716.     Game = "european",
  2717.     Color = "White",
  2718.     PowerCategory = "Hunting and Fishing",
  2719.     Description = "For each [rat] in this bird's cost, you may pay 1 [card] from your hand instead. If you do, tuck the paid [card] behind this card.",
  2720.     Predator = true,
  2721.     VP = 7,
  2722.     Nest = "Platform",
  2723.     Eggs = 2,
  2724.     Wingspan = 200,
  2725.     Grassland = true,
  2726.     Rat = 3,
  2727.     ["* (food cost)"] = true,
  2728.     TotalFood = 3
  2729.   },
  2730.   ["Eastern Kingbird"] = {
  2731.     Name = "Eastern Kingbird",
  2732.     Game = "core",
  2733.     Color = "Pink",
  2734.     PowerCategory = "Food from Supply",
  2735.     Description = "When another player plays a [forest] bird, gain 1 [worm] from the supply.",
  2736.     VP = 2,
  2737.     Nest = "Bowl",
  2738.     Eggs = 2,
  2739.     Wingspan = 38,
  2740.     Forest = true,
  2741.     Grassland = true,
  2742.     Wetland = true,
  2743.     Worm = 1,
  2744.     Berry = 1,
  2745.     EitherFood = true,
  2746.     TotalFood = 1
  2747.   },
  2748.   ["Eastern Phoebe"] = {
  2749.     Name = "Eastern Phoebe",
  2750.     Game = "core",
  2751.     Color = "Brown",
  2752.     PowerCategory = "Food from Supply",
  2753.     Description = "All players gain 1 [worm] from the supply.",
  2754.     VP = 3,
  2755.     Nest = "Wild",
  2756.     Eggs = 4,
  2757.     Wingspan = 28,
  2758.     Forest = true,
  2759.     Grassland = true,
  2760.     Wetland = true,
  2761.     Worm = 1,
  2762.     Berry = 1,
  2763.     EitherFood = true,
  2764.     TotalFood = 1
  2765.   },
  2766.   ["Eastern Screech Owl"] = {
  2767.     Name = "Eastern Screech Owl",
  2768.     Game = "core",
  2769.     Color = "Brown",
  2770.     PowerCategory = "Hunting/Fishing",
  2771.     Description = "Roll all dice not in birdfeeder. If any are [rat], gain 1 [rat] and cache it on this card.",
  2772.     Predator = true,
  2773.     VP = 4,
  2774.     Nest = "Cavity",
  2775.     Eggs = 2,
  2776.     Wingspan = 51,
  2777.     Forest = true,
  2778.     Worm = 1,
  2779.     Rat = 1,
  2780.     EitherFood = true,
  2781.     TotalFood = 1
  2782.   },
  2783.   ["Eleonora's Falcon"] = {
  2784.     Name = "Eleonora's Falcon",
  2785.     Game = "european",
  2786.     Color = "Brown",
  2787.     PowerCategory = "Egg-laying",
  2788.     Description = "Roll all dice not in the birdfeeder. If any are [rat], place 1 [egg] on this card.",
  2789.     VP = 6,
  2790.     Nest = "Ground",
  2791.     Eggs = 2,
  2792.     Wingspan = 95,
  2793.     Wetland = true,
  2794.     Worm = 1,
  2795.     Rat = 1,
  2796.     TotalFood = 2
  2797.   },
  2798.   ["Eurasian Collared-Dove"] = {
  2799.     Name = "Eurasian Collared-Dove",
  2800.     Game = "european",
  2801.     Color = "Teal",
  2802.     PowerCategory = "Flocking",
  2803.     Description = "Discard up to 5 [wild] from your supply. For each, tuck 1 [card] from the deck behind this bird.",
  2804.     Flocking = true,
  2805.     VP = 5,
  2806.     Nest = "Platform",
  2807.     Eggs = 2,
  2808.     Wingspan = 52,
  2809.     Grassland = true,
  2810.     Grain = 1,
  2811.     Berry = 1,
  2812.     TotalFood = 2
  2813.   },
  2814.   ["Eurasian Golden Oriole"] = {
  2815.     Name = "Eurasian Golden Oriole",
  2816.     Game = "european",
  2817.     Color = "Pink",
  2818.     PowerCategory = "Food-related",
  2819.     Description = "When another player takes the 'gain food' action, gain 1 [worm] or [berry] from the birdfeeder at the end of their turn.",
  2820.     VP = 4,
  2821.     Nest = "Wild",
  2822.     Eggs = 2,
  2823.     Wingspan = 46,
  2824.     Forest = true,
  2825.     Grassland = true,
  2826.     Worm = 1,
  2827.     Berry = 1,
  2828.     WildFood = 1,
  2829.     TotalFood = 3
  2830.   },
  2831.   ["Eurasian Green Woodpecker"] = {
  2832.     Name = "Eurasian Green Woodpecker",
  2833.     Game = "european",
  2834.     Color = "Teal",
  2835.     PowerCategory = "Other",
  2836.     Description = "This bird counts double toward the end-of-round goal, if it qualifies for the goal.",
  2837.     VP = 4,
  2838.     Nest = "Cavity",
  2839.     Eggs = 3,
  2840.     Wingspan = 48,
  2841.     Forest = true,
  2842.     Grassland = true,
  2843.     Grain = 1,
  2844.     Berry = 1,
  2845.     TotalFood = 2
  2846.   },
  2847.   ["Eurasian Hobby"] = {
  2848.     Name = "Eurasian Hobby",
  2849.     Game = "european",
  2850.     Color = "White",
  2851.     PowerCategory = "Hunting and fishing",
  2852.     Description = "Instead of paying any costs, you may play this bird on top of another bird on your player mat. Discard any eggs and food from that bird. It becomes a tucked card.",
  2853.     Predator = true,
  2854.     VP = 4,
  2855.     Nest = "Platform",
  2856.     Eggs = 2,
  2857.     Wingspan = 75,
  2858.     Forest = true,
  2859.     Grassland = true,
  2860.     Wetland = true,
  2861.     Worm = 1,
  2862.     Rat = 1,
  2863.     EitherFood = true,
  2864.     ["* (food cost)"] = true,
  2865.     TotalFood = 1
  2866.   },
  2867.   ["Eurasian Jay"] = {
  2868.     Name = "Eurasian Jay",
  2869.     Game = "european",
  2870.     Color = "Brown",
  2871.     PowerCategory = "Food-related",
  2872.     Description = "Steal 1 [wheat] from another player's supply and cache it on this bird. They gain 1 [die] from the birdfeeder.",
  2873.     VP = 4,
  2874.     Nest = "Bowl",
  2875.     Eggs = 3,
  2876.     Wingspan = 56,
  2877.     Forest = true,
  2878.     Worm = 1,
  2879.     Grain = 1,
  2880.     WildFood = 1,
  2881.     TotalFood = 3
  2882.   },
  2883.   ["Eurasian Magpie"] = {
  2884.     Name = "Eurasian Magpie",
  2885.     Game = "european",
  2886.     Color = "Teal",
  2887.     PowerCategory = "Food-related",
  2888.     Description = "Choose 1 other player. For each action cube in their [grassland], cache 1 [wild] from the supply on any of your birds.",
  2889.     VP = 1,
  2890.     Nest = "Platform",
  2891.     Eggs = 3,
  2892.     Wingspan = 56,
  2893.     Grassland = true,
  2894.     Worm = 1,
  2895.     WildFood = 1,
  2896.     TotalFood = 2
  2897.   },
  2898.   ["Eurasian Nutcracker"] = {
  2899.     Name = "Eurasian Nutcracker",
  2900.     Game = "european",
  2901.     Color = "Brown",
  2902.     PowerCategory = "Food-related",
  2903.     Description = "Choose 1-5 birds in your [forest]. Cache 1 [wheat] from your supply on each.",
  2904.     VP = 5,
  2905.     Nest = "Bowl",
  2906.     Eggs = 2,
  2907.     Wingspan = 55,
  2908.     Forest = true,
  2909.     Grain = 1,
  2910.     TotalFood = 1
  2911.   },
  2912.   ["Eurasian Nuthatch"] = {
  2913.     Name = "Eurasian Nuthatch",
  2914.     Game = "european",
  2915.     Color = "Brown",
  2916.     PowerCategory = "Food-related",
  2917.     Description = "Gain 1 [wheat] from the supply and cache it on this card. At any time, you may spend [wheat] cached on this card.",
  2918.     VP = 3,
  2919.     Nest = "Cavity",
  2920.     Eggs = 3,
  2921.     Wingspan = 25,
  2922.     Forest = true,
  2923.     Worm = 1,
  2924.     Grain = 1,
  2925.     TotalFood = 2
  2926.   },
  2927.   ["Eurasian Sparrowhawk"] = {
  2928.     Name = "Eurasian Sparrowhawk",
  2929.     Game = "european",
  2930.     Color = "White",
  2931.     PowerCategory = "Hunting and Fishing",
  2932.     Description = "For each [rat] in this bird's cost, you may pay 1 [card] from your hand instead. If you do, tuck the paid [card] behind this card.",
  2933.     Predator = true,
  2934.     VP = 4,
  2935.     Nest = "Platform",
  2936.     Eggs = 2,
  2937.     Wingspan = 65,
  2938.     Forest = true,
  2939.     Rat = 1,
  2940.     ["* (food cost)"] = true,
  2941.     TotalFood = 1
  2942.   },
  2943.   ["Eurasian Tree Sparrow"] = {
  2944.     Name = "Eurasian Tree Sparrow",
  2945.     Game = "european",
  2946.     Color = "Pink",
  2947.     PowerCategory = "Food-related",
  2948.     Description = "When another player takes the 'gain food' action, gain 1 [wheat] from the birdfeeder at the end of their turn.",
  2949.     VP = 3,
  2950.     Nest = "Cavity",
  2951.     Eggs = 4,
  2952.     Wingspan = 21,
  2953.     Forest = true,
  2954.     Grassland = true,
  2955.     Worm = 1,
  2956.     Grain = 1,
  2957.     TotalFood = 2
  2958.   },
  2959.   ["European Bee-Eater"] = {
  2960.     Name = "European Bee-Eater",
  2961.     Game = "european",
  2962.     Color = "Brown",
  2963.     PowerCategory = "Food-related",
  2964.     Description = "Reset the birdfeeder. If you do, gain 1 [worm] from the birdfeeder after resetting.",
  2965.     VP = 3,
  2966.     Nest = "Cavity",
  2967.     Eggs = 3,
  2968.     Wingspan = 38,
  2969.     Grassland = true,
  2970.     Worm = 2,
  2971.     TotalFood = 2
  2972.   },
  2973.   ["European Goldfinch"] = {
  2974.     Name = "European Goldfinch",
  2975.     Game = "european",
  2976.     Color = "Pink",
  2977.     PowerCategory = "Flocking",
  2978.     Description = "When another player tucks a [card] for any reason, tuck 1 [card] from the deck behind this bird.",
  2979.     Flocking = true,
  2980.     VP = 6,
  2981.     Nest = "Bowl",
  2982.     Eggs = 4,
  2983.     Wingspan = 23,
  2984.     Forest = true,
  2985.     Grassland = true,
  2986.     Grain = 2,
  2987.     Berry = 1,
  2988.     TotalFood = 3
  2989.   },
  2990.   ["European Honey Buzzard"] = {
  2991.     Name = "European Honey Buzzard",
  2992.     Game = "european",
  2993.     Color = "Teal",
  2994.     PowerCategory = "Food-related",
  2995.     Description = "Reset the birdfeeder. If you do, gain all [worm] in the birdfeeder after resetting.",
  2996.     VP = 4,
  2997.     Nest = "Platform",
  2998.     Eggs = 1,
  2999.     Wingspan = 134,
  3000.     Forest = true,
  3001.     Worm = 1,
  3002.     WildFood = 1,
  3003.     TotalFood = 2
  3004.   },
  3005.   ["European Robin"] = {
  3006.     Name = "European Robin",
  3007.     Game = "european",
  3008.     Color = "Brown",
  3009.     PowerCategory = "Food-related",
  3010.     Description = "From the supply, gain 1 food of a type you already gained this turn.",
  3011.     VP = 4,
  3012.     Nest = "Bowl",
  3013.     Eggs = 4,
  3014.     Wingspan = 22,
  3015.     Forest = true,
  3016.     Worm = 1,
  3017.     Grain = 1,
  3018.     Berry = 1,
  3019.     TotalFood = 3
  3020.   },
  3021.   ["European Roller"] = {
  3022.     Name = "European Roller",
  3023.     Game = "european",
  3024.     Color = "White",
  3025.     PowerCategory = "Other",
  3026.     Description = "Place this bird sideways, so that it covers 2 [grassland] spaces. Pay the lower egg cost.",
  3027.     VP = 3,
  3028.     Nest = "Cavity",
  3029.     Eggs = 2,
  3030.     Wingspan = 70,
  3031.     Grassland = true,
  3032.     Worm = 1,
  3033.     Rat = 1,
  3034.     TotalFood = 2
  3035.   },
  3036.   ["European Turtle Dove"] = {
  3037.     Name = "European Turtle Dove",
  3038.     Game = "european",
  3039.     Color = "White",
  3040.     PowerCategory = "Other",
  3041.     Description = "Draw 1 new bonus card. Then gain 1 [die] from the birdfeeder, lay 1 [egg] on any bird, or draw 1 [card].",
  3042.     BonusCard = true,
  3043.     VP = 4,
  3044.     Nest = "Platform",
  3045.     Eggs = 1,
  3046.     Wingspan = 51,
  3047.     Forest = true,
  3048.     Grassland = true,
  3049.     Wetland = true,
  3050.     Grain = 2,
  3051.     TotalFood = 2
  3052.   },
  3053.   ["Ferruginous Hawk"] = {
  3054.     Name = "Ferruginous Hawk",
  3055.     Game = "core",
  3056.     Color = "Brown",
  3057.     PowerCategory = "Hunting/Fishing",
  3058.     Description = "Roll all dice not in birdfeeder. If any are [rat], gain 1 [rat] and cache it on this card.",
  3059.     Predator = true,
  3060.     VP = 6,
  3061.     Nest = "Platform",
  3062.     Eggs = 2,
  3063.     Wingspan = 142,
  3064.     Grassland = true,
  3065.     Rat = 2,
  3066.     TotalFood = 2
  3067.   },
  3068.   ["Fish Crow"] = {
  3069.     Name = "Fish Crow",
  3070.     Game = "core",
  3071.     Color = "Brown",
  3072.     PowerCategory = "Food from Supply",
  3073.     Description = "Discard 1 [egg] from any of your other birds to gain 1 [wild] from the supply.",
  3074.     VP = 6,
  3075.     Nest = "Platform",
  3076.     Eggs = 2,
  3077.     Wingspan = 91,
  3078.     Forest = true,
  3079.     Grassland = true,
  3080.     Wetland = true,
  3081.     Fish = 1,
  3082.     WildFood = 1,
  3083.     TotalFood = 2
  3084.   },
  3085.   ["Forster's Tern"] = {
  3086.     Name = "Forster's Tern",
  3087.     Game = "core",
  3088.     Color = "Brown",
  3089.     PowerCategory = "Card-drawing",
  3090.     Description = "Draw 1 [card]. If you do, discard 1 [card] from your hand at the end of your turn.",
  3091.     VP = 4,
  3092.     Nest = "Wild",
  3093.     Eggs = 2,
  3094.     Wingspan = 79,
  3095.     Wetland = true,
  3096.     Worm = 1,
  3097.     Fish = 1,
  3098.     EitherFood = true,
  3099.     TotalFood = 1
  3100.   },
  3101.   ["Franklin's Gull"] = {
  3102.     Name = "Franklin's Gull",
  3103.     Game = "core",
  3104.     Color = "Brown",
  3105.     PowerCategory = "Card-drawing",
  3106.     Description = "Discard 1 [egg] to draw 2 [card].",
  3107.     VP = 3,
  3108.     Nest = "Wild",
  3109.     Eggs = 2,
  3110.     Wingspan = 91,
  3111.     Grassland = true,
  3112.     Wetland = true,
  3113.     Fish = 1,
  3114.     WildFood = 1,
  3115.     TotalFood = 2
  3116.   },
  3117.   ["Goldcrest"] = {
  3118.     Name = "Goldcrest",
  3119.     Game = "european",
  3120.     Color = "Brown",
  3121.     PowerCategory = "Other",
  3122.     Description = "Discard 1 [card] from your hand. If you do, play another bird in your [forest]. Pay its normal food and egg cost.",
  3123.     VP = 1,
  3124.     Nest = "Bowl",
  3125.     Eggs = 6,
  3126.     Wingspan = 15,
  3127.     Forest = true,
  3128.     Worm = 1,
  3129.     TotalFood = 1
  3130.   },
  3131.   ["Golden Eagle"] = {
  3132.     Name = "Golden Eagle",
  3133.     Game = "core",
  3134.     Color = "Brown",
  3135.     PowerCategory = "Hunting/Fishing",
  3136.     Description = "Look at a [card] from the deck. If <100cm, tuck it behind this bird. If not, discard it.",
  3137.     Predator = true,
  3138.     VP = 8,
  3139.     Nest = "Platform",
  3140.     Eggs = 1,
  3141.     Wingspan = 201,
  3142.     Grassland = true,
  3143.     Wetland = true,
  3144.     Rat = 3,
  3145.     TotalFood = 3
  3146.   },
  3147.   ["Grasshopper Sparrow"] = {
  3148.     Name = "Grasshopper Sparrow",
  3149.     Game = "core",
  3150.     Color = "Brown",
  3151.     PowerCategory = "Egg-laying",
  3152.     Description = "Lay 1 [egg] on any bird.",
  3153.     VP = 2,
  3154.     Nest = "Ground",
  3155.     Eggs = 2,
  3156.     Wingspan = 20,
  3157.     Grassland = true,
  3158.     Worm = 1,
  3159.     Grain = 1,
  3160.     EitherFood = true,
  3161.     TotalFood = 1
  3162.   },
  3163.   ["Gray Catbird"] = {
  3164.     Name = "Gray Catbird",
  3165.     Game = "core",
  3166.     Color = "Brown",
  3167.     PowerCategory = "Other",
  3168.     Description = "Repeat a brown power on one other bird in this habitat.",
  3169.     VP = 5,
  3170.     Nest = "Bowl",
  3171.     Eggs = 3,
  3172.     Wingspan = 28,
  3173.     Forest = true,
  3174.     Grassland = true,
  3175.     Wetland = true,
  3176.     Worm = 1,
  3177.     Berry = 2,
  3178.     TotalFood = 3
  3179.   },
  3180.   ["Great Blue Heron"] = {
  3181.     Name = "Great Blue Heron",
  3182.     Game = "core",
  3183.     Color = "White",
  3184.     PowerCategory = "Other",
  3185.     Description = "Play a second bird in your [wetland]. Pay its normal cost.",
  3186.     VP = 5,
  3187.     Nest = "Platform",
  3188.     Eggs = 2,
  3189.     Wingspan = 183,
  3190.     Wetland = true,
  3191.     Worm = 1,
  3192.     Fish = 1,
  3193.     TotalFood = 2
  3194.   },
  3195.   ["Great Crested Flycatcher"] = {
  3196.     Name = "Great Crested Flycatcher",
  3197.     Game = "core",
  3198.     Color = "Brown",
  3199.     PowerCategory = "Food from Birdfeeder",
  3200.     Description = "Gain 1 [worm] from the birdfeeder, if there is one.",
  3201.     VP = 5,
  3202.     Nest = "Cavity",
  3203.     Eggs = 3,
  3204.     Wingspan = 33,
  3205.     Forest = true,
  3206.     Worm = 1,
  3207.     Berry = 1,
  3208.     TotalFood = 2
  3209.   },
  3210.   ["Great Crested Grebe"] = {
  3211.     Name = "Great Crested Grebe",
  3212.     Game = "european",
  3213.     Color = "Brown",
  3214.     PowerCategory = "Card-drawing",
  3215.     Description = "Draw 1 [card] for each empty card slot in this row. At the end of your turn, keep 1 and discard the rest.",
  3216.     VP = 3,
  3217.     Nest = "Wild",
  3218.     Eggs = 2,
  3219.     Wingspan = 65,
  3220.     Wetland = true,
  3221.     Fish = 2,
  3222.     TotalFood = 2
  3223.   },
  3224.   ["Great Egret"] = {
  3225.     Name = "Great Egret",
  3226.     Game = "core",
  3227.     Color = "White",
  3228.     PowerCategory = "Other",
  3229.     Description = "Play a second bird in your [wetland]. Pay its normal cost.",
  3230.     VP = 7,
  3231.     Nest = "Platform",
  3232.     Eggs = 3,
  3233.     Wingspan = 130,
  3234.     Wetland = true,
  3235.     Fish = 2,
  3236.     Rat = 1,
  3237.     TotalFood = 3
  3238.   },
  3239.   ["Great Horned Owl"] = {
  3240.     Name = "Great Horned Owl",
  3241.     Game = "core",
  3242.     Color = "Brown",
  3243.     PowerCategory = "Hunting/Fishing",
  3244.     Description = "Look at a [card] from the deck. If <100cm, tuck it behind this bird. If not, discard it.",
  3245.     Predator = true,
  3246.     VP = 8,
  3247.     Nest = "Platform",
  3248.     Eggs = 2,
  3249.     Wingspan = 112,
  3250.     Forest = true,
  3251.     Rat = 3,
  3252.     TotalFood = 3
  3253.   },
  3254.   ["Great Tit"] = {
  3255.     Name = "Great Tit",
  3256.     Game = "european",
  3257.     Color = "Brown",
  3258.     PowerCategory = "Food-related",
  3259.     Description = "Reset the birdfeeder. If you do, gain 1 [die] from the birdfeeder after resetting.",
  3260.     VP = 4,
  3261.     Nest = "Cavity",
  3262.     Eggs = 6,
  3263.     Wingspan = 24,
  3264.     Forest = true,
  3265.     Worm = 1,
  3266.     Grain = 1,
  3267.     Berry = 1,
  3268.     TotalFood = 3
  3269.   },
  3270.   ["Greater Flamingo"] = {
  3271.     Name = "Greater Flamingo",
  3272.     Game = "european",
  3273.     Color = "Brown",
  3274.     PowerCategory = "Flocking",
  3275.     Description = "Choose 1 other player. For each action cube on their [wetland], tuck 1 [card] from your hand behind this bird, then draw an equal number of [card].",
  3276.     Flocking = true,
  3277.     VP = 3,
  3278.     Nest = "Ground",
  3279.     Eggs = 1,
  3280.     Wingspan = 152,
  3281.     Wetland = true,
  3282.     Worm = 1,
  3283.     Grain = 2,
  3284.     TotalFood = 3
  3285.   },
  3286.   ["Greater Prairie Chicken"] = {
  3287.     Name = "Greater Prairie Chicken",
  3288.     Game = "core",
  3289.     Color = "White",
  3290.     PowerCategory = "Other",
  3291.     Description = "Draw 2 new bonus cards and keep 1.",
  3292.     BonusCard = true,
  3293.     VP = 5,
  3294.     Nest = "Ground",
  3295.     Eggs = 4,
  3296.     Wingspan = 71,
  3297.     Grassland = true,
  3298.     Worm = 1,
  3299.     Grain = 2,
  3300.     TotalFood = 3
  3301.   },
  3302.   ["Greater Roadrunner"] = {
  3303.     Name = "Greater Roadrunner",
  3304.     Game = "core",
  3305.     Color = "Brown",
  3306.     PowerCategory = "Hunting/Fishing",
  3307.     Description = "Look at a [card] from the deck. If <50cm, tuck it behind this bird. If not, discard it.",
  3308.     Predator = true,
  3309.     VP = 7,
  3310.     Nest = "Platform",
  3311.     Eggs = 2,
  3312.     Wingspan = 56,
  3313.     Grassland = true,
  3314.     Worm = 1,
  3315.     Rat = 1,
  3316.     WildFood = 1,
  3317.     TotalFood = 3
  3318.   },
  3319.   ["Green Heron"] = {
  3320.     Name = "Green Heron",
  3321.     Game = "core",
  3322.     Color = "Brown",
  3323.     PowerCategory = "Food from Supply",
  3324.     Description = "Trade 1 [wild] for any [wild] from the supply.",
  3325.     VP = 4,
  3326.     Nest = "Platform",
  3327.     Eggs = 3,
  3328.     Wingspan = 66,
  3329.     Wetland = true,
  3330.     Worm = 1,
  3331.     Fish = 1,
  3332.     EitherFood = true,
  3333.     TotalFood = 1
  3334.   },
  3335.   ["Grey Heron"] = {
  3336.     Name = "Grey Heron",
  3337.     Game = "european",
  3338.     Color = "White",
  3339.     PowerCategory = "Other",
  3340.     Description = "Place this bird sideways, so that it covers 2 [wetland] spaces. Pay the lower egg cost.",
  3341.     VP = 3,
  3342.     Nest = "Platform",
  3343.     Eggs = 2,
  3344.     Wingspan = 185,
  3345.     Wetland = true,
  3346.     Fish = 2,
  3347.     TotalFood = 2
  3348.   },
  3349.   ["Greylag Goose"] = {
  3350.     Name = "Greylag Goose",
  3351.     Game = "european",
  3352.     Color = "Teal",
  3353.     PowerCategory = "Other",
  3354.     Description = "This bird counts double toward the end-of-round goal, if it qualifies for the goal.",
  3355.     VP = 7,
  3356.     Nest = "Ground",
  3357.     Eggs = 2,
  3358.     Wingspan = 164,
  3359.     Wetland = true,
  3360.     Grain = 3,
  3361.     TotalFood = 3
  3362.   },
  3363.   ["Griffon Vulture"] = {
  3364.     Name = "Griffon Vulture",
  3365.     Game = "european",
  3366.     Color = "Teal",
  3367.     PowerCategory = "Food-related",
  3368.     Description = "Choose any 1 player (including yourself). Cache 1 [rat] from the supply on this bird for each [predator] that player has.",
  3369.     VP = 1,
  3370.     Nest = "Platform",
  3371.     Eggs = 1,
  3372.     Wingspan = 252,
  3373.     Grassland = true,
  3374.     TotalFood = 0
  3375.   },
  3376.   ["Hawfinch"] = {
  3377.     Name = "Hawfinch",
  3378.     Game = "european",
  3379.     Color = "Brown",
  3380.     PowerCategory = "Food-related",
  3381.     Description = "Reset the birdfeeder. If you do, gain 1 [wheat] from the birdfeeder after resetting.",
  3382.     VP = 4,
  3383.     Nest = "Bowl",
  3384.     Eggs = 2,
  3385.     Wingspan = 30,
  3386.     Forest = true,
  3387.     Grain = 2,
  3388.     TotalFood = 2
  3389.   },
  3390.   ["Hermit Thrush"] = {
  3391.     Name = "Hermit Thrush",
  3392.     Game = "core",
  3393.     Color = "Brown",
  3394.     PowerCategory = "Food from Birdfeeder",
  3395.     Description = "Player(s) with fewest [forest] birds gain 1 [die] from birdfeeder.",
  3396.     VP = 7,
  3397.     Nest = "Wild",
  3398.     Eggs = 2,
  3399.     Wingspan = 30,
  3400.     Forest = true,
  3401.     Worm = 1,
  3402.     Berry = 2,
  3403.     TotalFood = 3
  3404.   },
  3405.   ["Hooded Crow"] = {
  3406.     Name = "Hooded Crow",
  3407.     Game = "european",
  3408.     Color = "Teal",
  3409.     PowerCategory = "Flocking",
  3410.     Description = "Choose 1 other player. For each action cube on their [grassland], tuck 1 [card] from your hand behind this bird, then draw an equal number of [card].",
  3411.     Flocking = true,
  3412.     VP = 3,
  3413.     Nest = "Platform",
  3414.     Eggs = 2,
  3415.     Wingspan = 99,
  3416.     Grassland = true,
  3417.     Wetland = true,
  3418.     Worm = 1,
  3419.     WildFood = 2,
  3420.     TotalFood = 3
  3421.   },
  3422.   ["Hooded Merganser"] = {
  3423.     Name = "Hooded Merganser",
  3424.     Game = "core",
  3425.     Color = "Brown",
  3426.     PowerCategory = "Other",
  3427.     Description = "Repeat 1 [predator] power in this habitat.",
  3428.     VP = 5,
  3429.     Nest = "Cavity",
  3430.     Eggs = 4,
  3431.     Wingspan = 61,
  3432.     Wetland = true,
  3433.     Worm = 1,
  3434.     Fish = 1,
  3435.     TotalFood = 2
  3436.   },
  3437.   ["Hooded Warbler"] = {
  3438.     Name = "Hooded Warbler",
  3439.     Game = "core",
  3440.     Color = "White",
  3441.     VP = 7,
  3442.     Nest = "Bowl",
  3443.     Eggs = 3,
  3444.     Wingspan = 18,
  3445.     Forest = true,
  3446.     Worm = 2,
  3447.     TotalFood = 2
  3448.   },
  3449.   ["Horned Lark"] = {
  3450.     Name = "Horned Lark",
  3451.     Game = "core",
  3452.     Color = "Pink",
  3453.     PowerCategory = "Flocking",
  3454.     Description = "When another player plays a [grassland] bird, tuck 1 [card] from your hand behind this bird.",
  3455.     Flocking = true,
  3456.     VP = 5,
  3457.     Nest = "Ground",
  3458.     Eggs = 4,
  3459.     Wingspan = 30,
  3460.     Grassland = true,
  3461.     Worm = 1,
  3462.     Grain = 1,
  3463.     TotalFood = 2
  3464.   },
  3465.   ["House Finch"] = {
  3466.     Name = "House Finch",
  3467.     Game = "core",
  3468.     Color = "Brown",
  3469.     PowerCategory = "Flocking",
  3470.     Description = "Tuck a [card] from your hand behind this bird. If you do, draw 1 [card].",
  3471.     Flocking = true,
  3472.     VP = 3,
  3473.     Nest = "Bowl",
  3474.     Eggs = 6,
  3475.     Wingspan = 25,
  3476.     Forest = true,
  3477.     Grassland = true,
  3478.     Wetland = true,
  3479.     Grain = 1,
  3480.     Berry = 1,
  3481.     TotalFood = 2
  3482.   },
  3483.   ["House Sparrow"] = {
  3484.     Name = "House Sparrow",
  3485.     Game = "european",
  3486.     Color = "Teal",
  3487.     PowerCategory = "Flocking",
  3488.     Description = "Discard up to 5 [wheat] from your supply. For each, tuck 1 [card] from the deck behind this bird.",
  3489.     Flocking = true,
  3490.     VP = 6,
  3491.     Nest = "Cavity",
  3492.     Eggs = 5,
  3493.     Wingspan = 22,
  3494.     Grassland = true,
  3495.     Grain = 1,
  3496.     Berry = 1,
  3497.     TotalFood = 2
  3498.   },
  3499.   ["House Wren"] = {
  3500.     Name = "House Wren",
  3501.     Game = "core",
  3502.     Color = "White",
  3503.     PowerCategory = "Other",
  3504.     Description = "Play a second bird in your [grassland] or [forest]. Pay its normal cost.",
  3505.     VP = 1,
  3506.     Nest = "Cavity",
  3507.     Eggs = 5,
  3508.     Wingspan = 15,
  3509.     Forest = true,
  3510.     Grassland = true,
  3511.     Worm = 1,
  3512.     TotalFood = 1
  3513.   },
  3514.   ["Inca Dove"] = {
  3515.     Name = "Inca Dove",
  3516.     Game = "core",
  3517.     Color = "White",
  3518.     PowerCategory = "Egg-laying",
  3519.     Description = "Lay 1 [egg] on each of your birds with a [platform] nest.",
  3520.     VP = 2,
  3521.     Nest = "Platform",
  3522.     Eggs = 4,
  3523.     Wingspan = 28,
  3524.     Grassland = true,
  3525.     Grain = 2,
  3526.     TotalFood = 2
  3527.   },
  3528.   ["Indigo Bunting"] = {
  3529.     Name = "Indigo Bunting",
  3530.     Game = "core",
  3531.     Color = "Brown",
  3532.     PowerCategory = "Food from Birdfeeder",
  3533.     Description = "Gain 1 [worm] or [berry] from the birdfeeder, if there is one.",
  3534.     VP = 5,
  3535.     Nest = "Bowl",
  3536.     Eggs = 3,
  3537.     Wingspan = 20,
  3538.     Forest = true,
  3539.     Grassland = true,
  3540.     Worm = 1,
  3541.     Grain = 1,
  3542.     Berry = 1,
  3543.     TotalFood = 3
  3544.   },
  3545.   ["Juniper Titmouse"] = {
  3546.     Name = "Juniper Titmouse",
  3547.     Game = "core",
  3548.     Color = "Brown",
  3549.     PowerCategory = "Caching Food",
  3550.     Description = "Gain 1 [wheat] from the supply and cache it on this card.",
  3551.     VP = 4,
  3552.     Nest = "Cavity",
  3553.     Eggs = 3,
  3554.     Wingspan = 23,
  3555.     Forest = true,
  3556.     Worm = 1,
  3557.     Grain = 1,
  3558.     TotalFood = 2
  3559.   },
  3560.   ["Killdeer"] = {
  3561.     Name = "Killdeer",
  3562.     Game = "core",
  3563.     Color = "Brown",
  3564.     PowerCategory = "Card-drawing",
  3565.     Description = "Discard 1 [egg] to draw 2 [card].",
  3566.     VP = 1,
  3567.     Nest = "Ground",
  3568.     Eggs = 3,
  3569.     Wingspan = 46,
  3570.     Grassland = true,
  3571.     Wetland = true,
  3572.     Worm = 1,
  3573.     Grain = 1,
  3574.     EitherFood = true,
  3575.     TotalFood = 1
  3576.   },
  3577.   ["King Rail"] = {
  3578.     Name = "King Rail",
  3579.     Game = "core",
  3580.     Color = "White",
  3581.     PowerCategory = "Other",
  3582.     Description = "Draw 2 new bonus cards and keep 1.",
  3583.     BonusCard = true,
  3584.     VP = 4,
  3585.     Nest = "Platform",
  3586.     Eggs = 6,
  3587.     Wingspan = 51,
  3588.     Wetland = true,
  3589.     Worm = 1,
  3590.     Fish = 1,
  3591.     WildFood = 1,
  3592.     TotalFood = 3
  3593.   },
  3594.   ["Lazuli Bunting"] = {
  3595.     Name = "Lazuli Bunting",
  3596.     Game = "core",
  3597.     Color = "Brown",
  3598.     PowerCategory = "Egg-laying",
  3599.     Description = "All players lay 1 [egg] on any 1 [bowl] bird. You may lay 1 [egg] on 1 additional [bowl] bird.",
  3600.     VP = 4,
  3601.     Nest = "Bowl",
  3602.     Eggs = 4,
  3603.     Wingspan = 23,
  3604.     Grassland = true,
  3605.     Worm = 1,
  3606.     Grain = 1,
  3607.     Berry = 1,
  3608.     TotalFood = 3
  3609.   },
  3610.   ["Lesser Whitethroat"] = {
  3611.     Name = "Lesser Whitethroat",
  3612.     Game = "european",
  3613.     Color = "Teal",
  3614.     PowerCategory = "Egg-laying",
  3615.     Description = "Choose a habitat with no [egg]. Lay 1 [egg] on each bird in that habitat.",
  3616.     VP = 0,
  3617.     Nest = "Bowl",
  3618.     Eggs = 2,
  3619.     Wingspan = 18,
  3620.     Forest = true,
  3621.     Grassland = true,
  3622.     Worm = 1,
  3623.     Berry = 1,
  3624.     TotalFood = 2
  3625.   },
  3626.   ["Lincoln's Sparrow"] = {
  3627.     Name = "Lincoln's Sparrow",
  3628.     Game = "core",
  3629.     Color = "Brown",
  3630.     PowerCategory = "Other",
  3631.     Description = "If this bird is to the right of all other birds in its habitat, move it to another habitat.",
  3632.     VP = 3,
  3633.     Nest = "Ground",
  3634.     Eggs = 2,
  3635.     Wingspan = 20,
  3636.     Forest = true,
  3637.     Grassland = true,
  3638.     Wetland = true,
  3639.     Worm = 1,
  3640.     Grain = 1,
  3641.     TotalFood = 2
  3642.   },
  3643.   ["Little Bustard"] = {
  3644.     Name = "Little Bustard",
  3645.     Game = "european",
  3646.     Color = "White",
  3647.     PowerCategory = "Other",
  3648.     Description = "Draw 1 new bonus card. Then gain 1 [card] or lay 1 [egg] on any bird.",
  3649.     BonusCard = true,
  3650.     VP = 4,
  3651.     Nest = "Ground",
  3652.     Eggs = 2,
  3653.     Wingspan = 110,
  3654.     Grassland = true,
  3655.     Worm = 1,
  3656.     Grain = 1,
  3657.     TotalFood = 2
  3658.   },
  3659.   ["Little Owl"] = {
  3660.     Name = "Little Owl",
  3661.     Game = "european",
  3662.     Color = "Brown",
  3663.     PowerCategory = "Food-related",
  3664.     Description = "Steal 1 [rat] from another player's supply and cache it on this bird. They gain 1 [die] from the birdfeeder.",
  3665.     VP = 4,
  3666.     Nest = "Cavity",
  3667.     Eggs = 2,
  3668.     Wingspan = 56,
  3669.     Forest = true,
  3670.     Grassland = true,
  3671.     Worm = 1,
  3672.     Rat = 1,
  3673.     TotalFood = 2
  3674.   },
  3675.   ["Loggerhead Shrike"] = {
  3676.     Name = "Loggerhead Shrike",
  3677.     Game = "core",
  3678.     Color = "Pink",
  3679.     PowerCategory = "Caching Food",
  3680.     Description = "When another player takes the 'gain food' action, if they gain any number of [rat], also gain 1 [rat] from the supply and cache it on this card.",
  3681.     VP = 3,
  3682.     Nest = "Bowl",
  3683.     Eggs = 4,
  3684.     Wingspan = 30,
  3685.     Grassland = true,
  3686.     Wetland = true,
  3687.     Worm = 1,
  3688.     Rat = 1,
  3689.     TotalFood = 2
  3690.   },
  3691.   ["Long-Tailed Tit"] = {
  3692.     Name = "Long-Tailed Tit",
  3693.     Game = "european",
  3694.     Color = "White",
  3695.     PowerCategory = "Other",
  3696.     Description = "Place this bird sideways, so that it covers 2 [forest] spaces. Pay the lower egg cost.",
  3697.     VP = 0,
  3698.     Nest = "Wild",
  3699.     Eggs = 4,
  3700.     Wingspan = 18,
  3701.     Forest = true,
  3702.     Worm = 1,
  3703.     Grain = 1,
  3704.     TotalFood = 2
  3705.   },
  3706.   ["Mallard"] = {
  3707.     Name = "Mallard",
  3708.     Game = "core",
  3709.     Color = "Brown",
  3710.     PowerCategory = "Card-drawing",
  3711.     Description = "Draw 1 [card].",
  3712.     VP = 0,
  3713.     Nest = "Ground",
  3714.     Eggs = 4,
  3715.     Wingspan = 89,
  3716.     Wetland = true,
  3717.     Worm = 1,
  3718.     Grain = 1,
  3719.     EitherFood = true,
  3720.     TotalFood = 1
  3721.   },
  3722.   ["Mississippi Kite"] = {
  3723.     Name = "Mississippi Kite",
  3724.     Game = "core",
  3725.     Color = "Brown",
  3726.     PowerCategory = "Hunting/Fishing",
  3727.     Description = "Roll all dice not in birdfeeder. If any are [rat], gain 1 [rat] and cache it on this card.",
  3728.     Predator = true,
  3729.     VP = 4,
  3730.     Nest = "Platform",
  3731.     Eggs = 1,
  3732.     Wingspan = 79,
  3733.     Forest = true,
  3734.     Grassland = true,
  3735.     Worm = 1,
  3736.     Rat = 1,
  3737.     EitherFood = true,
  3738.     TotalFood = 1
  3739.   },
  3740.   ["Moltoni's Warbler"] = {
  3741.     Name = "Moltoni's Warbler",
  3742.     Game = "european",
  3743.     Color = "Teal",
  3744.     PowerCategory = "Other",
  3745.     Description = "If you used all 4 types of actions this round, play another bird. Pay its normal food and egg cost.",
  3746.     VP = 3,
  3747.     Nest = "Bowl",
  3748.     Eggs = 2,
  3749.     Wingspan = 17,
  3750.     Grassland = true,
  3751.     Worm = 1,
  3752.     Berry = 1,
  3753.     TotalFood = 2
  3754.   },
  3755.   ["Montagu's Harrier"] = {
  3756.     Name = "Montagu's Harrier",
  3757.     Game = "european",
  3758.     Color = "White",
  3759.     PowerCategory = "Hunting and fishing",
  3760.     Description = "Instead of paying any costs, you may play this bird on top of another bird on your player mat. Discard any eggs and food from that bird. It becomes a tucked card.",
  3761.     Predator = true,
  3762.     VP = 4,
  3763.     Nest = "Ground",
  3764.     Eggs = 2,
  3765.     Wingspan = 113,
  3766.     Grassland = true,
  3767.     Rat = 2,
  3768.     ["* (food cost)"] = true,
  3769.     TotalFood = 2
  3770.   },
  3771.   ["Mountain Bluebird"] = {
  3772.     Name = "Mountain Bluebird",
  3773.     Game = "core",
  3774.     Color = "White",
  3775.     PowerCategory = "Other",
  3776.     Description = "Play a second bird in your [grassland]. Pay its normal cost.",
  3777.     VP = 4,
  3778.     Nest = "Cavity",
  3779.     Eggs = 5,
  3780.     Wingspan = 36,
  3781.     Grassland = true,
  3782.     Worm = 1,
  3783.     Berry = 1,
  3784.     TotalFood = 2
  3785.   },
  3786.   ["Mountain Chickadee"] = {
  3787.     Name = "Mountain Chickadee",
  3788.     Game = "core",
  3789.     Color = "Brown",
  3790.     PowerCategory = "Caching Food",
  3791.     Description = "Gain 1 [wheat] from the supply and cache it on this card.",
  3792.     VP = 2,
  3793.     Nest = "Cavity",
  3794.     Eggs = 3,
  3795.     Wingspan = 23,
  3796.     Forest = true,
  3797.     Worm = 1,
  3798.     Grain = 1,
  3799.     EitherFood = true,
  3800.     TotalFood = 1
  3801.   },
  3802.   ["Mourning Dove"] = {
  3803.     Name = "Mourning Dove",
  3804.     Game = "core",
  3805.     Color = "Brown",
  3806.     PowerCategory = "Egg-laying",
  3807.     Description = "Lay 1 [egg] on this bird.",
  3808.     VP = 0,
  3809.     Nest = "Platform",
  3810.     Eggs = 5,
  3811.     Wingspan = 46,
  3812.     Forest = true,
  3813.     Grassland = true,
  3814.     Wetland = true,
  3815.     Grain = 1,
  3816.     TotalFood = 1
  3817.   },
  3818.   ["Mute Swan"] = {
  3819.     Name = "Mute Swan",
  3820.     Game = "european",
  3821.     Color = "Brown",
  3822.     PowerCategory = "Flocking",
  3823.     Description = "Choose 1-3 birds in your [wetland]. Tuck 1 [card] from your hand behind each. If you tuck at least 1 card, draw 1 [card].",
  3824.     VP = 4,
  3825.     Nest = "Ground",
  3826.     Eggs = 3,
  3827.     Wingspan = 220,
  3828.     Wetland = true,
  3829.     Worm = 1,
  3830.     Grain = 1,
  3831.     WildFood = 1,
  3832.     TotalFood = 3
  3833.   },
  3834.   ["Northern Bobwhite"] = {
  3835.     Name = "Northern Bobwhite",
  3836.     Game = "core",
  3837.     Color = "Brown",
  3838.     PowerCategory = "Egg-laying",
  3839.     Description = "Lay 1 [egg] on this bird.",
  3840.     VP = 5,
  3841.     Nest = "Ground",
  3842.     Eggs = 6,
  3843.     Wingspan = 33,
  3844.     Grassland = true,
  3845.     Grain = 3,
  3846.     TotalFood = 3
  3847.   },
  3848.   ["Northern Cardinal"] = {
  3849.     Name = "Northern Cardinal",
  3850.     Game = "core",
  3851.     Color = "Brown",
  3852.     PowerCategory = "Food from Supply",
  3853.     Description = "Gain 1 [berry] from the supply.",
  3854.     VP = 3,
  3855.     Nest = "Bowl",
  3856.     Eggs = 5,
  3857.     Wingspan = 30,
  3858.     Forest = true,
  3859.     Grain = 1,
  3860.     Berry = 1,
  3861.     TotalFood = 2
  3862.   },
  3863.   ["Northern Flicker"] = {
  3864.     Name = "Northern Flicker",
  3865.     Game = "core",
  3866.     Color = "White",
  3867.     PowerCategory = "Food from Birdfeeder",
  3868.     Description = "Gain all [worm] that are in the birdfeeder.",
  3869.     VP = 2,
  3870.     Nest = "Cavity",
  3871.     Eggs = 4,
  3872.     Wingspan = 51,
  3873.     Forest = true,
  3874.     Grassland = true,
  3875.     Worm = 1,
  3876.     Grain = 1,
  3877.     Berry = 1,
  3878.     EitherFood = true,
  3879.     TotalFood = 1
  3880.   },
  3881.   ["Northern Gannet"] = {
  3882.     Name = "Northern Gannet",
  3883.     Game = "european",
  3884.     Color = "Brown",
  3885.     PowerCategory = "Hunting and fishing",
  3886.     Description = "Roll all dice not in birdfeeder. If any are a [fish], gain that many [fish] from the supply and cache them on this bird.",
  3887.     Predator = true,
  3888.     VP = 5,
  3889.     Nest = "Ground",
  3890.     Eggs = 1,
  3891.     Wingspan = 173,
  3892.     Wetland = true,
  3893.     Fish = 2,
  3894.     TotalFood = 2
  3895.   },
  3896.   ["Northern Goshawk"] = {
  3897.     Name = "Northern Goshawk",
  3898.     Game = "european",
  3899.     Color = "White",
  3900.     PowerCategory = "Hunting and Fishing",
  3901.     Description = "For each [rat] in this bird's cost, you may pay 1 [card] from your hand instead. If you do, tuck the paid [card] behind this card.",
  3902.     Predator = true,
  3903.     VP = 5,
  3904.     Nest = "Platform",
  3905.     Eggs = 2,
  3906.     Wingspan = 106,
  3907.     Forest = true,
  3908.     Rat = 2,
  3909.     ["* (food cost)"] = true,
  3910.     TotalFood = 2
  3911.   },
  3912.   ["Northern Harrier"] = {
  3913.     Name = "Northern Harrier",
  3914.     Game = "core",
  3915.     Color = "Brown",
  3916.     PowerCategory = "Hunting/Fishing",
  3917.     Description = "Look at a [card] from the deck. If <75cm, tuck it behind this bird. If not, discard it.",
  3918.     Predator = true,
  3919.     VP = 3,
  3920.     Nest = "Platform",
  3921.     Eggs = 2,
  3922.     Wingspan = 109,
  3923.     Grassland = true,
  3924.     Wetland = true,
  3925.     Rat = 1,
  3926.     TotalFood = 1
  3927.   },
  3928.   ["Northern Mockingbird"] = {
  3929.     Name = "Northern Mockingbird",
  3930.     Game = "core",
  3931.     Color = "Brown",
  3932.     PowerCategory = "Other",
  3933.     Description = "Repeat a brown power on one other bird in this habitat.",
  3934.     VP = 2,
  3935.     Nest = "Bowl",
  3936.     Eggs = 4,
  3937.     Wingspan = 36,
  3938.     Forest = true,
  3939.     Grassland = true,
  3940.     Wetland = true,
  3941.     Worm = 1,
  3942.     Berry = 1,
  3943.     TotalFood = 2
  3944.   },
  3945.   ["Northern Shoveler"] = {
  3946.     Name = "Northern Shoveler",
  3947.     Game = "core",
  3948.     Color = "Brown",
  3949.     PowerCategory = "Card-drawing",
  3950.     Description = "All players draw 1 [card] from the deck.",
  3951.     VP = 7,
  3952.     Nest = "Ground",
  3953.     Eggs = 4,
  3954.     Wingspan = 76,
  3955.     Wetland = true,
  3956.     Worm = 1,
  3957.     Grain = 2,
  3958.     TotalFood = 3
  3959.   },
  3960.   ["Osprey"] = {
  3961.     Name = "Osprey",
  3962.     Game = "core",
  3963.     Color = "Brown",
  3964.     PowerCategory = "Food from Supply",
  3965.     Description = "All players gain 1 [fish] from the supply.",
  3966.     VP = 5,
  3967.     Nest = "Platform",
  3968.     Eggs = 2,
  3969.     Wingspan = 160,
  3970.     Wetland = true,
  3971.     Fish = 1,
  3972.     TotalFood = 1
  3973.   },
  3974.   ["Painted Bunting"] = {
  3975.     Name = "Painted Bunting",
  3976.     Game = "core",
  3977.     Color = "White",
  3978.     PowerCategory = "Other",
  3979.     Description = "Draw 2 new bonus cards and keep 1.",
  3980.     BonusCard = true,
  3981.     VP = 5,
  3982.     Nest = "Bowl",
  3983.     Eggs = 4,
  3984.     Wingspan = 23,
  3985.     Grassland = true,
  3986.     Worm = 1,
  3987.     Grain = 2,
  3988.     TotalFood = 3
  3989.   },
  3990.   ["Painted Whitestart"] = {
  3991.     Name = "Painted Whitestart",
  3992.     Game = "swiftstart",
  3993.     Color = "Brown",
  3994.     Description = "Gain 1 [worm] from the supply.",
  3995.     VP = 1,
  3996.     Nest = "Ground",
  3997.     Eggs = 3,
  3998.     Wingspan = 22,
  3999.     Forest = true,
  4000.     Worm = 1,
  4001.     TotalFood = 1
  4002.   },
  4003.   ["Parrot Crossbill"] = {
  4004.     Name = "Parrot Crossbill",
  4005.     Game = "european",
  4006.     Color = "Brown",
  4007.     PowerCategory = "Food-related",
  4008.     Description = "Remove any 1 [die] from the birdfeeder, then gain 1 [wheat] from the supply.",
  4009.     VP = 6,
  4010.     Nest = "Bowl",
  4011.     Eggs = 2,
  4012.     Wingspan = 30,
  4013.     Forest = true,
  4014.     Grain = 3,
  4015.     TotalFood = 3
  4016.   },
  4017.   ["Peregrine Falcon"] = {
  4018.     Name = "Peregrine Falcon",
  4019.     Game = "core",
  4020.     Color = "Brown",
  4021.     PowerCategory = "Hunting/Fishing",
  4022.     Description = "Look at a [card] from the deck. If <100cm, tuck it behind this bird. If not, discard it.",
  4023.     Predator = true,
  4024.     VP = 5,
  4025.     Nest = "Platform",
  4026.     Eggs = 2,
  4027.     Wingspan = 104,
  4028.     Grassland = true,
  4029.     Wetland = true,
  4030.     Rat = 2,
  4031.     TotalFood = 2
  4032.   },
  4033.   ["Pied-Billed Grebe"] = {
  4034.     Name = "Pied-Billed Grebe",
  4035.     Game = "core",
  4036.     Color = "Brown",
  4037.     PowerCategory = "Card-drawing",
  4038.     Description = "Draw 2 [card]. If you do, discard 1 [card] from your hand at the end of your turn.",
  4039.     VP = 0,
  4040.     Nest = "Platform",
  4041.     Eggs = 4,
  4042.     Wingspan = 41,
  4043.     Wetland = true,
  4044.     Worm = 1,
  4045.     Fish = 1,
  4046.     EitherFood = true,
  4047.     TotalFood = 1
  4048.   },
  4049.   ["Pileated Woodpecker"] = {
  4050.     Name = "Pileated Woodpecker",
  4051.     Game = "core",
  4052.     Color = "Brown",
  4053.     PowerCategory = "Egg-laying",
  4054.     Description = "All players lay 1 [egg] on any 1 [cavity] bird. You may lay 1 [egg] on 1 additional [cavity] bird.",
  4055.     VP = 4,
  4056.     Nest = "Cavity",
  4057.     Eggs = 2,
  4058.     Wingspan = 74,
  4059.     Forest = true,
  4060.     Worm = 1,
  4061.     Berry = 1,
  4062.     TotalFood = 2
  4063.   },
  4064.   ["Pine Siskin"] = {
  4065.     Name = "Pine Siskin",
  4066.     Game = "core",
  4067.     Color = "Brown",
  4068.     PowerCategory = "Flocking",
  4069.     Description = "Tuck a [card] from your hand behind this bird. If you do, gain 1 [wheat] from the supply.",
  4070.     Flocking = true,
  4071.     VP = 3,
  4072.     Nest = "Bowl",
  4073.     Eggs = 2,
  4074.     Wingspan = 23,
  4075.     Forest = true,
  4076.     Grain = 2,
  4077.     TotalFood = 2
  4078.   },
  4079.   ["Prothonotary Warbler"] = {
  4080.     Name = "Prothonotary Warbler",
  4081.     Game = "core",
  4082.     Color = "White",
  4083.     VP = 8,
  4084.     Nest = "Cavity",
  4085.     Eggs = 4,
  4086.     Wingspan = 23,
  4087.     Forest = true,
  4088.     Wetland = true,
  4089.     Worm = 2,
  4090.     Grain = 1,
  4091.     TotalFood = 3
  4092.   },
  4093.   ["Purple Gallinule"] = {
  4094.     Name = "Purple Gallinule",
  4095.     Game = "core",
  4096.     Color = "Brown",
  4097.     PowerCategory = "Card-drawing",
  4098.     Description = "All players draw 1 [card] from the deck.",
  4099.     VP = 7,
  4100.     Nest = "Platform",
  4101.     Eggs = 4,
  4102.     Wingspan = 56,
  4103.     Wetland = true,
  4104.     Grain = 1,
  4105.     Berry = 1,
  4106.     WildFood = 1,
  4107.     TotalFood = 3
  4108.   },
  4109.   ["Purple Martin"] = {
  4110.     Name = "Purple Martin",
  4111.     Game = "core",
  4112.     Color = "Brown",
  4113.     PowerCategory = "Flocking",
  4114.     Description = "Tuck a [card] from your hand behind this bird. If you do, draw 1 [card].",
  4115.     Flocking = true,
  4116.     VP = 2,
  4117.     Nest = "Cavity",
  4118.     Eggs = 3,
  4119.     Wingspan = 46,
  4120.     Grassland = true,
  4121.     Wetland = true,
  4122.     Worm = 1,
  4123.     TotalFood = 1
  4124.   },
  4125.   ["Pygmy Nuthatch"] = {
  4126.     Name = "Pygmy Nuthatch",
  4127.     Game = "core",
  4128.     Color = "Brown",
  4129.     PowerCategory = "Flocking",
  4130.     Description = "Tuck a [card] from your hand behind this bird. If you do, gain 1 [worm] or 1 [wheat] from the supply.",
  4131.     Flocking = true,
  4132.     VP = 2,
  4133.     Nest = "Cavity",
  4134.     Eggs = 4,
  4135.     Wingspan = 20,
  4136.     Forest = true,
  4137.     Worm = 1,
  4138.     Grain = 1,
  4139.     TotalFood = 2
  4140.   },
  4141.   ["Red Crossbill"] = {
  4142.     Name = "Red Crossbill",
  4143.     Game = "core",
  4144.     Color = "Brown",
  4145.     PowerCategory = "Food from Supply",
  4146.     Description = "All players gain 1 [wheat] from the supply.",
  4147.     VP = 6,
  4148.     Nest = "Bowl",
  4149.     Eggs = 2,
  4150.     Wingspan = 28,
  4151.     Forest = true,
  4152.     Grain = 2,
  4153.     TotalFood = 2
  4154.   },
  4155.   ["Red Kite"] = {
  4156.     Name = "Red Kite",
  4157.     Game = "european",
  4158.     Color = "White",
  4159.     PowerCategory = "Hunting and fishing",
  4160.     Description = "Instead of paying any costs, you may play this bird on top of another bird on your player mat. Discard any eggs and food from that bird. It becomes a tucked card.",
  4161.     Predator = true,
  4162.     VP = 4,
  4163.     Nest = "Platform",
  4164.     Eggs = 2,
  4165.     Wingspan = 157,
  4166.     Forest = true,
  4167.     Grassland = true,
  4168.     Wetland = true,
  4169.     Rat = 1,
  4170.     WildFood = 1,
  4171.     ["* (food cost)"] = true,
  4172.     TotalFood = 2
  4173.   },
  4174.   ["Red Knot"] = {
  4175.     Name = "Red Knot",
  4176.     Game = "european",
  4177.     Color = "White",
  4178.     PowerCategory = "Other",
  4179.     Description = "Draw 1 new bonus card. Then draw 3 [card] and keep 1 of them.",
  4180.     BonusCard = true,
  4181.     VP = 7,
  4182.     Nest = "Ground",
  4183.     Eggs = 2,
  4184.     Wingspan = 50,
  4185.     Wetland = true,
  4186.     Worm = 3,
  4187.     TotalFood = 3
  4188.   },
  4189.   ["Red-Backed Shrike"] = {
  4190.     Name = "Red-Backed Shrike",
  4191.     Game = "european",
  4192.     Color = "Brown",
  4193.     PowerCategory = "Food-related",
  4194.     Description = "Steal 1 [worm] from another player's supply and cache it on this bird. They gain 1 [die] from the birdfeeder.",
  4195.     VP = 5,
  4196.     Nest = "Bowl",
  4197.     Eggs = 2,
  4198.     Wingspan = 33,
  4199.     Grassland = true,
  4200.     Worm = 1,
  4201.     Rat = 1,
  4202.     WildFood = 1,
  4203.     TotalFood = 3
  4204.   },
  4205.   ["Red-Bellied Woodpecker"] = {
  4206.     Name = "Red-Bellied Woodpecker",
  4207.     Game = "core",
  4208.     Color = "Brown",
  4209.     PowerCategory = "Caching Food",
  4210.     Description = "Gain 1 [wheat] from the birdfeeder (if available). You may cache it on this card.",
  4211.     VP = 1,
  4212.     Nest = "Cavity",
  4213.     Eggs = 3,
  4214.     Wingspan = 41,
  4215.     Forest = true,
  4216.     Worm = 1,
  4217.     Grain = 1,
  4218.     EitherFood = true,
  4219.     TotalFood = 1
  4220.   },
  4221.   ["Red-Breasted Merganser"] = {
  4222.     Name = "Red-Breasted Merganser",
  4223.     Game = "swiftstart",
  4224.     Color = "Brown",
  4225.     Description = "Draw 2 [card]. If you do, discard 1 [card] from your hand at the end of your turn.",
  4226.     VP = 3,
  4227.     Nest = "Ground",
  4228.     Eggs = 4,
  4229.     Wingspan = 78,
  4230.     Wetland = true,
  4231.     Worm = 1,
  4232.     Fish = 1,
  4233.     TotalFood = 2
  4234.   },
  4235.   ["Red-Breasted Nuthatch"] = {
  4236.     Name = "Red-Breasted Nuthatch",
  4237.     Game = "core",
  4238.     Color = "Brown",
  4239.     PowerCategory = "Caching Food",
  4240.     Description = "Gain 1 [wheat] from the supply and cache it on this card.",
  4241.     VP = 2,
  4242.     Nest = "Cavity",
  4243.     Eggs = 3,
  4244.     Wingspan = 23,
  4245.     Forest = true,
  4246.     Worm = 1,
  4247.     Grain = 1,
  4248.     EitherFood = true,
  4249.     TotalFood = 1
  4250.   },
  4251.   ["Red-Cockaded Woodpecker"] = {
  4252.     Name = "Red-Cockaded Woodpecker",
  4253.     Game = "core",
  4254.     Color = "White",
  4255.     PowerCategory = "Other",
  4256.     Description = "Draw 2 new bonus cards and keep 1.",
  4257.     BonusCard = true,
  4258.     VP = 4,
  4259.     Nest = "Cavity",
  4260.     Eggs = 2,
  4261.     Wingspan = 36,
  4262.     Forest = true,
  4263.     Worm = 1,
  4264.     Berry = 1,
  4265.     TotalFood = 2
  4266.   },
  4267.   ["Red-Crowned Crane"] = {
  4268.     Name = "Red-Crowned Crane",
  4269.     Game = "chinesepromo",
  4270.     Color = "White",
  4271.     Description = "Draw 3 new bonus cards and keep 1.",
  4272.     BonusCard = true,
  4273.     VP = 7,
  4274.     Nest = "Ground",
  4275.     Eggs = 1,
  4276.     Wingspan = 235,
  4277.     Wetland = true,
  4278.     Worm = 1,
  4279.     Grain = 1,
  4280.     Fish = 1,
  4281.     TotalFood = 3
  4282.   },
  4283.   ["Red-Eyed Vireo"] = {
  4284.     Name = "Red-Eyed Vireo",
  4285.     Game = "core",
  4286.     Color = "White",
  4287.     PowerCategory = "Other",
  4288.     Description = "Play a second bird in your [forest]. Pay its normal cost.",
  4289.     VP = 3,
  4290.     Nest = "Wild",
  4291.     Eggs = 2,
  4292.     Wingspan = 25,
  4293.     Forest = true,
  4294.     Worm = 1,
  4295.     Berry = 1,
  4296.     EitherFood = true,
  4297.     TotalFood = 1
  4298.   },
  4299.   ["Red-Headed Woodpecker"] = {
  4300.     Name = "Red-Headed Woodpecker",
  4301.     Game = "core",
  4302.     Color = "Brown",
  4303.     PowerCategory = "Caching Food",
  4304.     Description = "Gain 1 [wheat] from the birdfeeder (if available). You may cache it on this card.",
  4305.     VP = 4,
  4306.     Nest = "Cavity",
  4307.     Eggs = 3,
  4308.     Wingspan = 43,
  4309.     Forest = true,
  4310.     Grassland = true,
  4311.     Wetland = true,
  4312.     Worm = 1,
  4313.     Grain = 1,
  4314.     WildFood = 1,
  4315.     TotalFood = 3
  4316.   },
  4317.   ["Red-Legged Partridge"] = {
  4318.     Name = "Red-Legged Partridge",
  4319.     Game = "european",
  4320.     Color = "Brown",
  4321.     PowerCategory = "Egg-laying",
  4322.     Description = "Lay 1 [egg] on each bird in this column, including this one.",
  4323.     VP = 1,
  4324.     Nest = "Ground",
  4325.     Eggs = 6,
  4326.     Wingspan = 48,
  4327.     Grassland = true,
  4328.     Grain = 3,
  4329.     TotalFood = 3
  4330.   },
  4331.   ["Red-Shouldered Hawk"] = {
  4332.     Name = "Red-Shouldered Hawk",
  4333.     Game = "core",
  4334.     Color = "Brown",
  4335.     PowerCategory = "Hunting/Fishing",
  4336.     Description = "Look at a [card] from the deck. If <75cm, tuck it under this bird. If not, discard it.",
  4337.     Predator = true,
  4338.     VP = 3,
  4339.     Nest = "Platform",
  4340.     Eggs = 2,
  4341.     Wingspan = 102,
  4342.     Forest = true,
  4343.     Rat = 1,
  4344.     TotalFood = 1
  4345.   },
  4346.   ["Red-Tailed Hawk"] = {
  4347.     Name = "Red-Tailed Hawk",
  4348.     Game = "core",
  4349.     Color = "Brown",
  4350.     PowerCategory = "Hunting/Fishing",
  4351.     Description = "Look at a [card] from the deck. If <75cm, tuck it behind this bird. If not, discard it.",
  4352.     Predator = true,
  4353.     VP = 5,
  4354.     Nest = "Platform",
  4355.     Eggs = 2,
  4356.     Wingspan = 124,
  4357.     Forest = true,
  4358.     Grassland = true,
  4359.     Wetland = true,
  4360.     Rat = 2,
  4361.     TotalFood = 2
  4362.   },
  4363.   ["Red-Winged Blackbird"] = {
  4364.     Name = "Red-Winged Blackbird",
  4365.     Game = "core",
  4366.     Color = "Brown",
  4367.     PowerCategory = "Flocking",
  4368.     Description = "Tuck a [card] from your hand behind this bird. If you do, also lay 1 [egg] on this bird.",
  4369.     Flocking = true,
  4370.     VP = 2,
  4371.     Nest = "Bowl",
  4372.     Eggs = 3,
  4373.     Wingspan = 33,
  4374.     Grassland = true,
  4375.     Wetland = true,
  4376.     Grain = 1,
  4377.     TotalFood = 1
  4378.   },
  4379.   ["Ring-Billed Gull"] = {
  4380.     Name = "Ring-Billed Gull",
  4381.     Game = "core",
  4382.     Color = "Brown",
  4383.     PowerCategory = "Flocking",
  4384.     Description = "Tuck a [card] from your hand behind this bird. If you do, draw 1 [card].",
  4385.     Flocking = true,
  4386.     VP = 4,
  4387.     Nest = "Ground",
  4388.     Eggs = 2,
  4389.     Wingspan = 122,
  4390.     Wetland = true,
  4391.     WildFood = 2,
  4392.     TotalFood = 2
  4393.   },
  4394.   ["Rose-Breasted Grosbeak"] = {
  4395.     Name = "Rose-Breasted Grosbeak",
  4396.     Game = "core",
  4397.     Color = "Brown",
  4398.     PowerCategory = "Food from Birdfeeder",
  4399.     Description = "Gain 1 [wheat] or [berry] from the birdfeeder, if there is one.",
  4400.     VP = 6,
  4401.     Nest = "Bowl",
  4402.     Eggs = 3,
  4403.     Wingspan = 33,
  4404.     Forest = true,
  4405.     Worm = 1,
  4406.     Grain = 1,
  4407.     Berry = 1,
  4408.     TotalFood = 3
  4409.   },
  4410.   ["Roseate Spoonbill"] = {
  4411.     Name = "Roseate Spoonbill",
  4412.     Game = "core",
  4413.     Color = "White",
  4414.     PowerCategory = "Other",
  4415.     Description = "Draw 2 new bonus cards and keep 1.",
  4416.     BonusCard = true,
  4417.     VP = 6,
  4418.     Nest = "Platform",
  4419.     Eggs = 2,
  4420.     Wingspan = 127,
  4421.     Wetland = true,
  4422.     Worm = 1,
  4423.     Grain = 1,
  4424.     Fish = 1,
  4425.     TotalFood = 3
  4426.   },
  4427.   ["Ruby-Crowned Kinglet"] = {
  4428.     Name = "Ruby-Crowned Kinglet",
  4429.     Game = "core",
  4430.     Color = "White",
  4431.     PowerCategory = "Other",
  4432.     Description = "Play a second bird in your [forest]. Pay its normal cost.",
  4433.     VP = 2,
  4434.     Nest = "Bowl",
  4435.     Eggs = 3,
  4436.     Wingspan = 20,
  4437.     Forest = true,
  4438.     Worm = 1,
  4439.     Grain = 1,
  4440.     Berry = 1,
  4441.     EitherFood = true,
  4442.     TotalFood = 1
  4443.   },
  4444.   ["Ruby-Throated Hummingbird"] = {
  4445.     Name = "Ruby-Throated Hummingbird",
  4446.     Game = "core",
  4447.     Color = "Brown",
  4448.     PowerCategory = "Food from Birdfeeder",
  4449.     Description = "Each player gains 1 [die] from the birdfeeder, starting with the player of your choice.",
  4450.     VP = 4,
  4451.     Nest = "Bowl",
  4452.     Eggs = 2,
  4453.     Wingspan = 10,
  4454.     Forest = true,
  4455.     Grassland = true,
  4456.     Wetland = true,
  4457.     WildFood = 1,
  4458.     TotalFood = 1
  4459.   },
  4460.   ["Ruddy Duck"] = {
  4461.     Name = "Ruddy Duck",
  4462.     Game = "core",
  4463.     Color = "Brown",
  4464.     PowerCategory = "Card-drawing",
  4465.     Description = "Draw 2 [card]. If you do, discard 1 [card] from your hand at the end of your turn.",
  4466.     VP = 0,
  4467.     Nest = "Platform",
  4468.     Eggs = 5,
  4469.     Wingspan = 48,
  4470.     Wetland = true,
  4471.     Worm = 1,
  4472.     Grain = 1,
  4473.     EitherFood = true,
  4474.     TotalFood = 1
  4475.   },
  4476.   ["Ruff"] = {
  4477.     Name = "Ruff",
  4478.     Game = "european",
  4479.     Color = "Teal",
  4480.     PowerCategory = "Flocking",
  4481.     Description = "Tuck up to 3 [card] from your hand behind this bird. Draw 1 [card] for each card you tucked.",
  4482.     Flocking = true,
  4483.     VP = 2,
  4484.     Nest = "Ground",
  4485.     Eggs = 2,
  4486.     Wingspan = 56,
  4487.     Grassland = true,
  4488.     Wetland = true,
  4489.     Worm = 1,
  4490.     WildFood = 1,
  4491.     TotalFood = 2
  4492.   },
  4493.   ["Sandhill Crane"] = {
  4494.     Name = "Sandhill Crane",
  4495.     Game = "core",
  4496.     Color = "Brown",
  4497.     PowerCategory = "Flocking",
  4498.     Description = "Discard 1 [wheat] to tuck 2 [card] from the deck behind this bird.",
  4499.     Flocking = true,
  4500.     VP = 5,
  4501.     Nest = "Ground",
  4502.     Eggs = 1,
  4503.     Wingspan = 196,
  4504.     Grassland = true,
  4505.     Wetland = true,
  4506.     Grain = 2,
  4507.     WildFood = 1,
  4508.     TotalFood = 3
  4509.   },
  4510.   ["Savannah Sparrow"] = {
  4511.     Name = "Savannah Sparrow",
  4512.     Game = "core",
  4513.     Color = "White",
  4514.     PowerCategory = "Other",
  4515.     Description = "Play a second bird in your [grassland]. Pay its normal cost.",
  4516.     VP = 2,
  4517.     Nest = "Ground",
  4518.     Eggs = 3,
  4519.     Wingspan = 18,
  4520.     Grassland = true,
  4521.     Worm = 1,
  4522.     Grain = 1,
  4523.     EitherFood = true,
  4524.     TotalFood = 1
  4525.   },
  4526.   ["Savi's Warbler"] = {
  4527.     Name = "Savi's Warbler",
  4528.     Game = "european",
  4529.     Color = "Brown",
  4530.     PowerCategory = "Card-drawing",
  4531.     Description = "Draw 2 [card]. All other players draw 1 [card] from the deck.",
  4532.     VP = 1,
  4533.     Nest = "Bowl",
  4534.     Eggs = 4,
  4535.     Wingspan = 20,
  4536.     Wetland = true,
  4537.     Worm = 1,
  4538.     TotalFood = 1
  4539.   },
  4540.   ["Say's Phoebe"] = {
  4541.     Name = "Say's Phoebe",
  4542.     Game = "core",
  4543.     Color = "White",
  4544.     PowerCategory = "Egg-laying",
  4545.     Description = "Lay 1 [egg] on each of your birds with a [bowl] nest.",
  4546.     VP = 5,
  4547.     Nest = "Bowl",
  4548.     Eggs = 3,
  4549.     Wingspan = 33,
  4550.     Grassland = true,
  4551.     Worm = 3,
  4552.     TotalFood = 3
  4553.   },
  4554.   ["Scaled Quail"] = {
  4555.     Name = "Scaled Quail",
  4556.     Game = "swiftstart",
  4557.     Color = "Brown",
  4558.     Description = "Lay 1 [egg] on this bird.",
  4559.     VP = 0,
  4560.     Nest = "Ground",
  4561.     Eggs = 6,
  4562.     Wingspan = 36,
  4563.     Grassland = true,
  4564.     Grain = 1,
  4565.     TotalFood = 1
  4566.   },
  4567.   ["Scissor-Tailed Flycatcher"] = {
  4568.     Name = "Scissor-Tailed Flycatcher",
  4569.     Game = "core",
  4570.     Color = "Brown",
  4571.     PowerCategory = "Food from Supply",
  4572.     Description = "All players gain 1 [worm] from the supply.",
  4573.     VP = 8,
  4574.     Nest = "Bowl",
  4575.     Eggs = 2,
  4576.     Wingspan = 38,
  4577.     Grassland = true,
  4578.     Worm = 2,
  4579.     Berry = 1,
  4580.     TotalFood = 3
  4581.   },
  4582.   ["Short-Toed Treecreeper"] = {
  4583.     Name = "Short-Toed Treecreeper",
  4584.     Game = "european",
  4585.     Color = "Brown",
  4586.     PowerCategory = "Other",
  4587.     Description = "Discard 1 [egg] from any bird. If you do, play another bird in your [forest]. Pay its normal food and egg cost.",
  4588.     VP = 2,
  4589.     Nest = "Cavity",
  4590.     Eggs = 5,
  4591.     Wingspan = 20,
  4592.     Forest = true,
  4593.     Worm = 1,
  4594.     Grain = 1,
  4595.     TotalFood = 2
  4596.   },
  4597.   ["Snow Bunting"] = {
  4598.     Name = "Snow Bunting",
  4599.     Game = "european",
  4600.     Color = "Pink",
  4601.     PowerCategory = "Tucking",
  4602.     Description = "When another player tucks a [card] for any reason, tuck 1 [card] from your hand behind this bird, then draw 1 [card] at the end of their turn.",
  4603.     Flocking = true,
  4604.     VP = 5,
  4605.     Nest = "Cavity",
  4606.     Eggs = 2,
  4607.     Wingspan = 35,
  4608.     Grassland = true,
  4609.     Wetland = true,
  4610.     Worm = 1,
  4611.     Grain = 1,
  4612.     TotalFood = 2
  4613.   },
  4614.   ["Snowy Egret"] = {
  4615.     Name = "Snowy Egret",
  4616.     Game = "core",
  4617.     Color = "Brown",
  4618.     PowerCategory = "Hunting/Fishing",
  4619.     Description = "Roll all dice not in birdfeeder. If any are [fish], gain 1 [fish] and cache it on this card.",
  4620.     Predator = true,
  4621.     VP = 4,
  4622.     Nest = "Platform",
  4623.     Eggs = 2,
  4624.     Wingspan = 104,
  4625.     Wetland = true,
  4626.     Worm = 1,
  4627.     Fish = 1,
  4628.     EitherFood = true,
  4629.     TotalFood = 1
  4630.   },
  4631.   ["Snowy Owl"] = {
  4632.     Name = "Snowy Owl",
  4633.     Game = "european",
  4634.     Color = "White",
  4635.     PowerCategory = "Other",
  4636.     Description = "Draw 1 new bonus card. Then gain 1 [card] or lay 1 [egg] on any bird.",
  4637.     BonusCard = true,
  4638.     VP = 4,
  4639.     Nest = "Ground",
  4640.     Eggs = 3,
  4641.     Wingspan = 138,
  4642.     Grassland = true,
  4643.     Wetland = true,
  4644.     Rat = 2,
  4645.     TotalFood = 2
  4646.   },
  4647.   ["Song Sparrow"] = {
  4648.     Name = "Song Sparrow",
  4649.     Game = "core",
  4650.     Color = "Brown",
  4651.     PowerCategory = "Other",
  4652.     Description = "If this bird is to the right of all other birds in its habitat, move it to another habitat.",
  4653.     VP = 0,
  4654.     Nest = "Bowl",
  4655.     Eggs = 5,
  4656.     Wingspan = 20,
  4657.     Forest = true,
  4658.     Grassland = true,
  4659.     Wetland = true,
  4660.     Worm = 1,
  4661.     Grain = 1,
  4662.     Berry = 1,
  4663.     EitherFood = true,
  4664.     TotalFood = 1
  4665.   },
  4666.   ["Spotted Owl"] = {
  4667.     Name = "Spotted Owl",
  4668.     Game = "core",
  4669.     Color = "White",
  4670.     PowerCategory = "Other",
  4671.     Description = "Draw 2 new bonus cards and keep 1.",
  4672.     BonusCard = true,
  4673.     VP = 5,
  4674.     Nest = "Cavity",
  4675.     Eggs = 1,
  4676.     Wingspan = 102,
  4677.     Forest = true,
  4678.     Rat = 2,
  4679.     TotalFood = 2
  4680.   },
  4681.   ["Spotted Sandpiper"] = {
  4682.     Name = "Spotted Sandpiper",
  4683.     Game = "core",
  4684.     Color = "Brown",
  4685.     PowerCategory = "Card-drawing",
  4686.     Description = "All players draw 1 [card] from the deck.",
  4687.     VP = 5,
  4688.     Nest = "Ground",
  4689.     Eggs = 2,
  4690.     Wingspan = 38,
  4691.     Wetland = true,
  4692.     Worm = 1,
  4693.     TotalFood = 1
  4694.   },
  4695.   ["Spotted Towhee"] = {
  4696.     Name = "Spotted Towhee",
  4697.     Game = "core",
  4698.     Color = "Brown",
  4699.     PowerCategory = "Food from Supply",
  4700.     Description = "Gain 1 [wheat] from the supply.",
  4701.     VP = 0,
  4702.     Nest = "Ground",
  4703.     Eggs = 4,
  4704.     Wingspan = 28,
  4705.     Forest = true,
  4706.     Grassland = true,
  4707.     Worm = 1,
  4708.     Grain = 1,
  4709.     Berry = 1,
  4710.     EitherFood = true,
  4711.     TotalFood = 1
  4712.   },
  4713.   ["Sprague's Pipit"] = {
  4714.     Name = "Sprague's Pipit",
  4715.     Game = "core",
  4716.     Color = "White",
  4717.     PowerCategory = "Other",
  4718.     Description = "Draw 2 new bonus cards and keep 1.",
  4719.     BonusCard = true,
  4720.     VP = 3,
  4721.     Nest = "Ground",
  4722.     Eggs = 3,
  4723.     Wingspan = 25,
  4724.     Grassland = true,
  4725.     Worm = 1,
  4726.     Grain = 1,
  4727.     TotalFood = 2
  4728.   },
  4729.   ["Squacco Heron"] = {
  4730.     Name = "Squacco Heron",
  4731.     Game = "european",
  4732.     Color = "Brown",
  4733.     PowerCategory = "Card-drawing",
  4734.     Description = "Gain 1 face-up [card] that can live in [wetland].",
  4735.     VP = 3,
  4736.     Nest = "Platform",
  4737.     Eggs = 2,
  4738.     Wingspan = 86,
  4739.     Wetland = true,
  4740.     Worm = 1,
  4741.     Fish = 1,
  4742.     TotalFood = 2
  4743.   },
  4744.   ["Steller's Jay"] = {
  4745.     Name = "Steller's Jay",
  4746.     Game = "core",
  4747.     Color = "Brown",
  4748.     PowerCategory = "Caching Food",
  4749.     Description = "Gain 1 [wheat] from the birdfeeder (if available). You may cache it on this card.",
  4750.     VP = 5,
  4751.     Nest = "Bowl",
  4752.     Eggs = 2,
  4753.     Wingspan = 48,
  4754.     Forest = true,
  4755.     Grain = 2,
  4756.     WildFood = 1,
  4757.     TotalFood = 3
  4758.   },
  4759.   ["Swainson's Hawk"] = {
  4760.     Name = "Swainson's Hawk",
  4761.     Game = "core",
  4762.     Color = "Brown",
  4763.     PowerCategory = "Hunting/Fishing",
  4764.     Description = "Look at a [card] from the deck. If <75cm, tuck it behind this bird. If not, discard it.",
  4765.     Predator = true,
  4766.     VP = 5,
  4767.     Nest = "Platform",
  4768.     Eggs = 2,
  4769.     Wingspan = 130,
  4770.     Grassland = true,
  4771.     Worm = 1,
  4772.     Rat = 1,
  4773.     TotalFood = 2
  4774.   },
  4775.   ["Thekla's Lark"] = {
  4776.     Name = "Thekla's Lark",
  4777.     Game = "european",
  4778.     Color = "Brown",
  4779.     PowerCategory = "Egg-laying",
  4780.     Description = "Discard 1 [wheat] from your supply. If you do, lay 2 [egg] on this bird.",
  4781.     VP = 4,
  4782.     Nest = "Ground",
  4783.     Eggs = 3,
  4784.     Wingspan = 34,
  4785.     Grassland = true,
  4786.     Worm = 2,
  4787.     Grain = 1,
  4788.     TotalFood = 3
  4789.   },
  4790.   ["Tree Swallow"] = {
  4791.     Name = "Tree Swallow",
  4792.     Game = "core",
  4793.     Color = "Brown",
  4794.     PowerCategory = "Flocking",
  4795.     Description = "Tuck a [card] from your hand behind this bird. If you do, draw 1 [card].",
  4796.     Flocking = true,
  4797.     VP = 3,
  4798.     Nest = "Cavity",
  4799.     Eggs = 4,
  4800.     Wingspan = 38,
  4801.     Wetland = true,
  4802.     Worm = 1,
  4803.     Berry = 1,
  4804.     TotalFood = 2
  4805.   },
  4806.   ["Trumpeter Swan"] = {
  4807.     Name = "Trumpeter Swan",
  4808.     Game = "core",
  4809.     Color = "White",
  4810.     VP = 9,
  4811.     Nest = "Ground",
  4812.     Eggs = 2,
  4813.     Wingspan = 203,
  4814.     Wetland = true,
  4815.     Grain = 2,
  4816.     WildFood = 1,
  4817.     TotalFood = 3
  4818.   },
  4819.   ["Tufted Titmouse"] = {
  4820.     Name = "Tufted Titmouse",
  4821.     Game = "core",
  4822.     Color = "White",
  4823.     PowerCategory = "Other",
  4824.     Description = "Play a second bird in your [forest]. Pay its normal cost.",
  4825.     VP = 2,
  4826.     Nest = "Cavity",
  4827.     Eggs = 3,
  4828.     Wingspan = 25,
  4829.     Forest = true,
  4830.     Worm = 1,
  4831.     Grain = 1,
  4832.     Berry = 1,
  4833.     EitherFood = true,
  4834.     TotalFood = 1
  4835.   },
  4836.   ["Turkey Vulture"] = {
  4837.     Name = "Turkey Vulture",
  4838.     Game = "core",
  4839.     Color = "Pink",
  4840.     PowerCategory = "Food from Birdfeeder",
  4841.     Description = "When another player's predator succeeds, gain 1 [die] from the birdfeeder.",
  4842.     VP = 1,
  4843.     Nest = "Cavity",
  4844.     Eggs = 1,
  4845.     Wingspan = 170,
  4846.     Forest = true,
  4847.     Grassland = true,
  4848.     Wetland = true,
  4849.     TotalFood = 0
  4850.   },
  4851.   ["Vaux's Swift"] = {
  4852.     Name = "Vaux's Swift",
  4853.     Game = "swiftstart",
  4854.     Color = "Brown",
  4855.     Description = "Tuck a [card] from your hand behind this bird. If you do, gain 1 [worm] from the supply.",
  4856.     Flocking = true,
  4857.     VP = 2,
  4858.     Nest = "Cavity",
  4859.     Eggs = 3,
  4860.     Wingspan = 31,
  4861.     Forest = true,
  4862.     Worm = 1,
  4863.     TotalFood = 1
  4864.   },
  4865.   ["Violet-Green Swallow"] = {
  4866.     Name = "Violet-Green Swallow",
  4867.     Game = "core",
  4868.     Color = "Brown",
  4869.     PowerCategory = "Flocking",
  4870.     Description = "Tuck a [card] from your hand behind this bird. If you do, draw 1 [card].",
  4871.     Flocking = true,
  4872.     VP = 3,
  4873.     Nest = "Cavity",
  4874.     Eggs = 3,
  4875.     Wingspan = 36,
  4876.     Forest = true,
  4877.     Grassland = true,
  4878.     Wetland = true,
  4879.     Worm = 2,
  4880.     TotalFood = 2
  4881.   },
  4882.   ["Western Meadowlark"] = {
  4883.     Name = "Western Meadowlark",
  4884.     Game = "core",
  4885.     Color = "Brown",
  4886.     PowerCategory = "Egg-laying",
  4887.     Description = "All players lay 1 [egg] on any 1 [ground] bird. You may lay 1 [egg] on 1 additional [ground] bird.",
  4888.     VP = 2,
  4889.     Nest = "Ground",
  4890.     Eggs = 4,
  4891.     Wingspan = 38,
  4892.     Grassland = true,
  4893.     Worm = 1,
  4894.     Grain = 1,
  4895.     TotalFood = 2
  4896.   },
  4897.   ["Western Tanager"] = {
  4898.     Name = "Western Tanager",
  4899.     Game = "core",
  4900.     Color = "Brown",
  4901.     PowerCategory = "Food from Birdfeeder",
  4902.     Description = "Gain 1 [worm] or [berry] from the birdfeeder, if there is one.",
  4903.     VP = 6,
  4904.     Nest = "Bowl",
  4905.     Eggs = 2,
  4906.     Wingspan = 30,
  4907.     Forest = true,
  4908.     Worm = 2,
  4909.     Berry = 1,
  4910.     TotalFood = 3
  4911.   },
  4912.   ["White Stork"] = {
  4913.     Name = "White Stork",
  4914.     Game = "european",
  4915.     Color = "Brown",
  4916.     PowerCategory = "Card-drawing",
  4917.     Description = "Discard all remaining face-up [card] and refill the tray. If you do, draw 1 of the new face-up [card].",
  4918.     VP = 8,
  4919.     Nest = "Platform",
  4920.     Eggs = 2,
  4921.     Wingspan = 160,
  4922.     Grassland = true,
  4923.     Wetland = true,
  4924.     Worm = 1,
  4925.     Fish = 1,
  4926.     WildFood = 1,
  4927.     TotalFood = 3
  4928.   },
  4929.   ["White Wagtail"] = {
  4930.     Name = "White Wagtail",
  4931.     Game = "european",
  4932.     Color = "Teal",
  4933.     PowerCategory = "Other",
  4934.     Description = "If you used all 4 types of actions this round, play another bird. Pay its normal food and egg cost.",
  4935.     VP = 2,
  4936.     Nest = "Bowl",
  4937.     Eggs = 5,
  4938.     Wingspan = 28,
  4939.     Grassland = true,
  4940.     Wetland = true,
  4941.     Worm = 2,
  4942.     TotalFood = 2
  4943.   },
  4944.   ["White-Backed Woodpecker"] = {
  4945.     Name = "White-Backed Woodpecker",
  4946.     Game = "european",
  4947.     Color = "Brown",
  4948.     PowerCategory = "Food-related",
  4949.     Description = "Gain 1 [die] from the birdfeeder.",
  4950.     VP = 2,
  4951.     Nest = "Cavity",
  4952.     Eggs = 2,
  4953.     Wingspan = 39,
  4954.     Forest = true,
  4955.     Worm = 1,
  4956.     Berry = 1,
  4957.     EitherFood = true,
  4958.     TotalFood = 1
  4959.   },
  4960.   ["White-Breasted Nuthatch"] = {
  4961.     Name = "White-Breasted Nuthatch",
  4962.     Game = "core",
  4963.     Color = "Brown",
  4964.     PowerCategory = "Caching Food",
  4965.     Description = "Gain 1 [wheat] from the supply and cache it on this card.",
  4966.     VP = 2,
  4967.     Nest = "Cavity",
  4968.     Eggs = 3,
  4969.     Wingspan = 28,
  4970.     Forest = true,
  4971.     Worm = 1,
  4972.     Grain = 1,
  4973.     EitherFood = true,
  4974.     TotalFood = 1
  4975.   },
  4976.   ["White-Crowned Sparrow"] = {
  4977.     Name = "White-Crowned Sparrow",
  4978.     Game = "core",
  4979.     Color = "Brown",
  4980.     PowerCategory = "Other",
  4981.     Description = "If this bird is to the right of all other birds in its habitat, move it to another habitat.",
  4982.     VP = 2,
  4983.     Nest = "Ground",
  4984.     Eggs = 5,
  4985.     Wingspan = 25,
  4986.     Forest = true,
  4987.     Grassland = true,
  4988.     Wetland = true,
  4989.     Worm = 1,
  4990.     Grain = 1,
  4991.     TotalFood = 2
  4992.   },
  4993.   ["White-Faced Ibis"] = {
  4994.     Name = "White-Faced Ibis",
  4995.     Game = "core",
  4996.     Color = "Brown",
  4997.     PowerCategory = "Hunting/Fishing",
  4998.     Description = "Roll all dice not in birdfeeder. If any are [fish], gain 1 [fish] and cache it on this card.",
  4999.     Predator = true,
  5000.     VP = 8,
  5001.     Nest = "Platform",
  5002.     Eggs = 2,
  5003.     Wingspan = 91,
  5004.     Wetland = true,
  5005.     Worm = 2,
  5006.     Fish = 1,
  5007.     TotalFood = 3
  5008.   },
  5009.   ["White-Throated Dipper"] = {
  5010.     Name = "White-Throated Dipper",
  5011.     Game = "european",
  5012.     Color = "Brown",
  5013.     PowerCategory = "Card-drawing",
  5014.     Description = "Discard all remaining face-up [card] and refill the tray. If you do, draw 1 of the new face-up [card].",
  5015.     VP = 3,
  5016.     Nest = "Cavity",
  5017.     Eggs = 4,
  5018.     Wingspan = 28,
  5019.     Wetland = true,
  5020.     Worm = 1,
  5021.     Fish = 1,
  5022.     TotalFood = 2
  5023.   },
  5024.   ["White-Throated Swift"] = {
  5025.     Name = "White-Throated Swift",
  5026.     Game = "swiftstart",
  5027.     Color = "Brown",
  5028.     Description = "Tuck a [card] from your hand behind this bird. If you do, lay 1 [egg] on any bird.",
  5029.     Flocking = true,
  5030.     VP = 2,
  5031.     Nest = "Cavity",
  5032.     Eggs = 2,
  5033.     Wingspan = 38,
  5034.     Grassland = true,
  5035.     Worm = 1,
  5036.     TotalFood = 1
  5037.   },
  5038.   ["Whooping Crane"] = {
  5039.     Name = "Whooping Crane",
  5040.     Game = "core",
  5041.     Color = "White",
  5042.     PowerCategory = "Other",
  5043.     Description = "Draw 2 new bonus cards and keep 1.",
  5044.     BonusCard = true,
  5045.     VP = 6,
  5046.     Nest = "Ground",
  5047.     Eggs = 1,
  5048.     Wingspan = 221,
  5049.     Wetland = true,
  5050.     WildFood = 3,
  5051.     TotalFood = 3
  5052.   },
  5053.   ["Wild Turkey"] = {
  5054.     Name = "Wild Turkey",
  5055.     Game = "core",
  5056.     VP = 8,
  5057.     Nest = "Ground",
  5058.     Eggs = 5,
  5059.     Wingspan = 135,
  5060.     Forest = true,
  5061.     Grassland = true,
  5062.     Grain = 2,
  5063.     Berry = 1,
  5064.     TotalFood = 3
  5065.   },
  5066.   ["Willet"] = {
  5067.     Name = "Willet",
  5068.     Game = "core",
  5069.     Color = "Brown",
  5070.     PowerCategory = "Hunting/Fishing",
  5071.     Description = "Roll all dice not in birdfeeder. If any are [fish], gain 1 [fish] and cache it on this card.",
  5072.     Predator = true,
  5073.     VP = 4,
  5074.     Nest = "Ground",
  5075.     Eggs = 2,
  5076.     Wingspan = 66,
  5077.     Wetland = true,
  5078.     Worm = 1,
  5079.     Fish = 1,
  5080.     EitherFood = true,
  5081.     TotalFood = 1
  5082.   },
  5083.   ["Wilson's Snipe"] = {
  5084.     Name = "Wilson's Snipe",
  5085.     Game = "core",
  5086.     Color = "Brown",
  5087.     PowerCategory = "Card-drawing",
  5088.     Description = "All players draw 1 [card] from the deck.",
  5089.     VP = 5,
  5090.     Nest = "Ground",
  5091.     Eggs = 2,
  5092.     Wingspan = "41",
  5093.     Wetland = true,
  5094.     Worm = 1,
  5095.     TotalFood = 1
  5096.   },
  5097.   ["Wilson's Storm Petrel"] = {
  5098.     Name = "Wilson's Storm Petrel",
  5099.     Game = "european",
  5100.     Color = "Brown",
  5101.     PowerCategory = "Card-drawing",
  5102.     Description = "Draw 1 [card] for each empty card slot in this row. At the end of your turn, keep 1 and discard the rest.",
  5103.     VP = 6,
  5104.     Nest = "Wild",
  5105.     Eggs = 1,
  5106.     Wingspan = 38,
  5107.     Wetland = true,
  5108.     Worm = 1,
  5109.     Fish = 2,
  5110.     TotalFood = 3
  5111.   },
  5112.   ["Wood Duck"] = {
  5113.     Name = "Wood Duck",
  5114.     Game = "core",
  5115.     Color = "Brown",
  5116.     PowerCategory = "Card-drawing",
  5117.     Description = "Draw 2 [card]. If you do, discard 1 [card] from your hand at the end of your turn.",
  5118.     VP = 4,
  5119.     Nest = "Cavity",
  5120.     Eggs = 4,
  5121.     Wingspan = 76,
  5122.     Forest = true,
  5123.     Wetland = true,
  5124.     Grain = 2,
  5125.     Berry = 1,
  5126.     TotalFood = 3
  5127.   },
  5128.   ["Wood Stork"] = {
  5129.     Name = "Wood Stork",
  5130.     Game = "core",
  5131.     Color = "White",
  5132.     PowerCategory = "Other",
  5133.     Description = "Draw 2 new bonus cards and keep 1.",
  5134.     BonusCard = true,
  5135.     VP = 6,
  5136.     Nest = "Platform",
  5137.     Eggs = 2,
  5138.     Wingspan = 155,
  5139.     Wetland = true,
  5140.     Fish = 1,
  5141.     Rat = 1,
  5142.     WildFood = 1,
  5143.     TotalFood = 3
  5144.   },
  5145.   ["Yellow-Bellied Sapsucker"] = {
  5146.     Name = "Yellow-Bellied Sapsucker",
  5147.     Game = "core",
  5148.     Color = "Brown",
  5149.     PowerCategory = "Food from Supply",
  5150.     Description = "Gain 1 [worm] from the supply.",
  5151.     VP = 3,
  5152.     Nest = "Cavity",
  5153.     Eggs = 3,
  5154.     Wingspan = 41,
  5155.     Forest = true,
  5156.     Worm = 1,
  5157.     Berry = 1,
  5158.     TotalFood = 2
  5159.   },
  5160.   ["Yellow-Billed Cuckoo"] = {
  5161.     Name = "Yellow-Billed Cuckoo",
  5162.     Game = "core",
  5163.     Color = "Pink",
  5164.     PowerCategory = "Egg-laying",
  5165.     Description = "When another player takes the 'lay eggs' action, this bird lays 1 [egg] on another bird with a [bowl] nest.",
  5166.     VP = 5,
  5167.     Nest = "Platform",
  5168.     Eggs = 2,
  5169.     Wingspan = 46,
  5170.     Forest = true,
  5171.     Worm = 2,
  5172.     WildFood = 1,
  5173.     TotalFood = 3
  5174.   },
  5175.   ["Yellow-Breasted Chat"] = {
  5176.     Name = "Yellow-Breasted Chat",
  5177.     Game = "core",
  5178.     Color = "Brown",
  5179.     PowerCategory = "Other",
  5180.     Description = "If this bird is to the right of all other birds in its habitat, move it to another habitat.",
  5181.     VP = 5,
  5182.     Nest = "Bowl",
  5183.     Eggs = 3,
  5184.     Wingspan = 25,
  5185.     Forest = true,
  5186.     Grassland = true,
  5187.     Wetland = true,
  5188.     Worm = 1,
  5189.     Berry = 2,
  5190.     TotalFood = 3
  5191.   },
  5192.   ["Yellow-Headed Blackbird"] = {
  5193.     Name = "Yellow-Headed Blackbird",
  5194.     Game = "core",
  5195.     Color = "Brown",
  5196.     PowerCategory = "Flocking",
  5197.     Description = "Tuck a [card] from your hand behind this bird. If you do, also lay 1 [egg] on this bird.",
  5198.     Flocking = true,
  5199.     VP = 4,
  5200.     Nest = "Bowl",
  5201.     Eggs = 3,
  5202.     Wingspan = 38,
  5203.     Wetland = true,
  5204.     Worm = 1,
  5205.     Grain = 1,
  5206.     TotalFood = 2
  5207.   },
  5208.   ["Yellow-Rumped Warbler"] = {
  5209.     Name = "Yellow-Rumped Warbler",
  5210.     Game = "core",
  5211.     Color = "Brown",
  5212.     PowerCategory = "Flocking",
  5213.     Description = "Tuck a [card] from your hand behind this bird. If you do, draw 1 [card].",
  5214.     Flocking = true,
  5215.     VP = 1,
  5216.     Nest = "Bowl",
  5217.     Eggs = 4,
  5218.     Wingspan = 23,
  5219.     Forest = true,
  5220.     Worm = 1,
  5221.     Grain = 1,
  5222.     Berry = 1,
  5223.     EitherFood = true,
  5224.     TotalFood = 1
  5225.   },
  5226.   ["Yellowhammer"] = {
  5227.     Name = "Yellowhammer",
  5228.     Game = "european",
  5229.     Color = "Teal",
  5230.     PowerCategory = "Other",
  5231.     Description = "If you used all 4 types of actions this round, play another bird. Pay its normal food and egg cost.",
  5232.     VP = 2,
  5233.     Nest = "Ground",
  5234.     Eggs = 3,
  5235.     Wingspan = 26,
  5236.     Forest = true,
  5237.     Grassland = true,
  5238.     Grain = 2,
  5239.     TotalFood = 2
  5240.   },
  5241.  
  5242.  
  5243.  
  5244.  
  5245.   ["Abbott's Booby"] = {
  5246.     Name = "Abbott's Booby",
  5247.     Game = "oceania",
  5248.     Color = "White",
  5249.     Description = "Draw 3 bonus cards, then discard 2. You may discard bonus cards you did not draw this turn.",
  5250.     BonusCard = true,
  5251.     VP = 5,
  5252.     Nest = "Platform",
  5253.     Eggs = 1,
  5254.     Wingspan = 10,
  5255.     Wetland = true,
  5256.     Fish = 2,
  5257.     TotalFood = 2
  5258. },
  5259. ["Australasian Pipit"] = {
  5260.     Name = "Australasian Pipit",
  5261.     Game = "oceania",
  5262.     Color = "Yellow",
  5263.     PowerCategory = "Flocking",
  5264.     Description = "Tuck 1 [card] from the deck behind each bird in your [grassland], including this one.",
  5265.     Flocking = true,
  5266.     VP = 3,
  5267.     Nest = "Ground",
  5268.     Eggs = 4,
  5269.     Wingspan = 31,
  5270.     Grassland = true,
  5271.     Worm = 1,
  5272.     Grain = 1,
  5273.     TotalFood = 2
  5274. },
  5275. ["Australasian Shoveler"] = {
  5276.     Name = "Australasian Shoveler",
  5277.     Game = "oceania",
  5278.     Color = "Brown",
  5279.     PowerCategory = "Egg-laying",
  5280.     Description = "Choose 1 other player. You both draw 1 [card] from the deck.",
  5281.     VP = 4,
  5282.     Nest = "Ground",
  5283.     Eggs = 4,
  5284.     Wingspan = 75,
  5285.     Wetland = true,
  5286.     Worm = 1,
  5287.     Grain = 1,
  5288.     TotalFood = 2
  5289. },
  5290. ["Australian Ibis"] = {
  5291.     Name = "Australian Ibis",
  5292.     Game = "oceania",
  5293.     Color = "Brown",
  5294.     PowerCategory = "Card-drawing",
  5295.     Description = "Shuffle the discard pile, then draw 2 [card] from it. Choose 1 and tuck it behind this bird or add it to your hand. Discard the other.",
  5296.     Flocking = true,
  5297.     VP = 5,
  5298.     Nest = "Platform",
  5299.     Eggs = 2,
  5300.     Wingspan = 118,
  5301.     Grassland = true,
  5302.     Wetland = true,
  5303.     Worm = 1,
  5304.     Fish = 1,
  5305.     WildFood = 1,
  5306.     TotalFood = 3
  5307. },
  5308. ["Australian Magpie"] = {
  5309.     Name = "Australian Magpie",
  5310.     Game = "oceania",
  5311.     Color = "Yellow",
  5312.     PowerCategory = "Food-related",
  5313.     Description = "Discard 1 [egg] from each bird in this row and column that has an [egg] on it, excluding this bird. For each discarded [egg], cache 2 [seed] from the supply on this bird.",
  5314.     VP = 4,
  5315.     Nest = "Platform",
  5316.     Eggs = 2,
  5317.     Wingspan = 75,
  5318.     Grassland = true,
  5319.     Worm = 1,
  5320.     Rat = 2,
  5321.     TotalFood = 3
  5322. },
  5323. ["Australian Owlet-Nightjar"] = {
  5324.     Name = "Australian Owlet-Nightjar",
  5325.     Game = "oceania",
  5326.     Color = "Pink",
  5327.     PowerCategory = "Food-related",
  5328.     Description = "When another player takes the [gain food] action, gain 1 [invertebrate] from the birdfeeder, if there is one, at the end of their turn.",
  5329.     VP = 2,
  5330.     Nest = "Cavity",
  5331.     Eggs = 2,
  5332.     Wingspan = 28,
  5333.     Forest = true,
  5334.     Grassland = true,
  5335.     Wetland = true,
  5336.     Worm = 1,
  5337.     Rat = 1,
  5338.     EitherFood = true,
  5339.     TotalFood = 1
  5340. },
  5341. ["Australian Raven"] = {
  5342.     Name = "Australian Raven",
  5343.     Game = "oceania",
  5344.     Color = "Yellow",
  5345.     PowerCategory = "Flocking",
  5346.     Description = "Cache up to 5 [wild] from your supply on this bird.",
  5347.     VP = 7,
  5348.     Nest = "Platform",
  5349.     Eggs = 3,
  5350.     Wingspan = 100,
  5351.     Forest = true,
  5352.     Grassland = true,
  5353.     Wetland = true,
  5354.     Worm = 1,
  5355.     Rat = 1,
  5356.     WildFood = 1,
  5357.     TotalFood = 3
  5358. },
  5359. ["Australian Reed Warbler"] = {
  5360.     Name = "Australian Reed Warbler",
  5361.     Game = "oceania",
  5362.     Color = "White",
  5363.     Description = "Play another bird in your wetland. Pay its normal cost with a 1 [egg] discount.",
  5364.     VP = 2,
  5365.     Nest = "Bowl",
  5366.     Eggs = 3,
  5367.     Wingspan = 21,
  5368.     Wetland = true,
  5369.     Worm = 1,
  5370.     TotalFood = 1
  5371. },
  5372. ["Australian Shelduck"] = {
  5373.     Name = "Australian Shelduck",
  5374.     Game = "oceania",
  5375.     Color = "Brown",
  5376.     PowerCategory = "Other",
  5377.     Description = "Draw 1 face-up [card] from the tray with a [cavity] or [star] nest. You may reset or refill the tray before doing so.",
  5378.     VP = 3,
  5379.     Nest = "Cavity",
  5380.     Eggs = 4,
  5381.     Wingspan = 113,
  5382.     Wetland = true,
  5383.     Worm = 1,
  5384.     Grain = 1,
  5385.     TotalFood = 2
  5386. },
  5387. ["Australian Zebra Finch"] = {
  5388.     Name = "Australian Zebra Finch",
  5389.     Game = "oceania",
  5390.     Color = "Brown",
  5391.     PowerCategory = "Other",
  5392.     Description = "If the player to your right has a [seed] in their personal supply, tuck a [card] from the deck behind this bird.",
  5393.     VP = 1,
  5394.     Nest = "Wild",
  5395.     Eggs = 3,
  5396.     Wingspan = 22,
  5397.     Grassland = true,
  5398.     Grain = 1,
  5399.     TotalFood = 1
  5400. },
  5401. ["Black Noddy"] = {
  5402.     Name = "Black Noddy",
  5403.     Game = "oceania",
  5404.     Color = "Brown",
  5405.     PowerCategory = "Other",
  5406.     Description = "Reset the birdfeeder and gain all [fish], if there are any. You may discard any of these [fish] to tuck that many [card] from the deck behind this bird instead.",
  5407.     Flocking = true,
  5408.     VP = 9,
  5409.     Nest = "Platform",
  5410.     Eggs = 1,
  5411.     Wingspan = 69,
  5412.     Wetland = true,
  5413.     Fish = 3,
  5414.     TotalFood = 3
  5415. },
  5416. ["Black Swan"] = {
  5417.     Name = "Black Swan",
  5418.     Game = "oceania",
  5419.     Color = "Yellow",
  5420.     PowerCategory = "Other",
  5421.     Description = "Lay 1 [egg] on each of your birds with a wingspan over 100cm, including this one.",
  5422.     VP = 6,
  5423.     Nest = "Ground",
  5424.     Eggs = 3,
  5425.     Wingspan = 180,
  5426.     Wetland = true,
  5427.     Grain = 1,
  5428.     WildFood = 2,
  5429.     TotalFood = 3
  5430. },
  5431. ["Black-Shouldered Kite"] = {
  5432.     Name = "Black-Shouldered Kite",
  5433.     Game = "oceania",
  5434.     Color = "Brown",
  5435.     PowerCategory = "Food-related",
  5436.     Description = "Reset the birdfeeder and gain 1 [rodent], if there is one. You may give it to another player; if you do, lay up to 3 [egg] on this bird.",
  5437.     Predator = true,
  5438.     VP = 2,
  5439.     Nest = "Platform",
  5440.     Eggs = 3,
  5441.     Wingspan = 87,
  5442.     Grassland = true,
  5443.     Rat = 2,
  5444.     TotalFood = 2
  5445. },
  5446. ["Blyth's Hornbill"] = {
  5447.     Name = "Blyth's Hornbill",
  5448.     Game = "oceania",
  5449.     Color = "White",
  5450.     Description = "Discard all [egg] from 1 of your birds with a [cavity] nest. Tuck twice that many [card] from the deck behind this bird.",
  5451.     Flocking = true,
  5452.     VP = 7,
  5453.     Nest = "Cavity",
  5454.     Eggs = 2,
  5455.     Wingspan = 150,
  5456.     Forest = true,
  5457.     Berry = 3,
  5458.     TotalFood = 3
  5459. },
  5460. ["Brolga"] = {
  5461.     Name = "Brolga",
  5462.     Game = "oceania",
  5463.     Color = "Brown",
  5464.     PowerCategory = "Other",
  5465.     Description = "Choose 1 other player. They lay 1 [egg]; you draw 2 [card].",
  5466.     VP = 6,
  5467.     Nest = "Ground",
  5468.     Eggs = 2,
  5469.     Wingspan = 215,
  5470.     Wetland = true,
  5471.     Worm = 1,
  5472.     Grain = 1,
  5473.     WildFood = 1,
  5474.     TotalFood = 3
  5475. },
  5476. ["Brown Falcon"] = {
  5477.     Name = "Brown Falcon",
  5478.     Game = "oceania",
  5479.     Color = "Brown",
  5480.     PowerCategory = "Hunting/Fishing",
  5481.     Description = "Look at a [card] from the deck. If its food cost includes an [invertebrate] or a [rodent], tuck it behind this bird. If not, discard it.",
  5482.     Predator = true,
  5483.     VP = 5,
  5484.     Nest = "Platform",
  5485.     Eggs = 2,
  5486.     Wingspan = 102,
  5487.     Forest = true,
  5488.     Grassland = true,
  5489.     Wetland = true,
  5490.     Worm = 1,
  5491.     Rat = 1,
  5492.     TotalFood = 2
  5493. },
  5494. ["Budgerigar"] = {
  5495.     Name = "Budgerigar",
  5496.     Game = "oceania",
  5497.     Color = "Brown",
  5498.     PowerCategory = "Card-drawing",
  5499.     Description = "Tuck the smallest bird in the tray behind this bird.",
  5500.     Flocking = true,
  5501.     VP = 0,
  5502.     Nest = "Cavity",
  5503.     Eggs = 3,
  5504.     Wingspan = 30,
  5505.     Forest = true,
  5506.     Grassland = true,
  5507.     Wetland = true,
  5508.     Grain = 1,
  5509.     TotalFood = 1
  5510. },
  5511. ["Cockatiel"] = {
  5512.     Name = "Cockatiel",
  5513.     Game = "oceania",
  5514.     Color = "Brown",
  5515.     PowerCategory = "Hunting/Fishing",
  5516.     Description = "Discard 1 [seed] to choose a [card] from the tray and tuck it behind this bird.",
  5517.     Flocking = true,
  5518.     VP = 2,
  5519.     Nest = "Cavity",
  5520.     Eggs = 5,
  5521.     Wingspan = 32,
  5522.     Forest = true,
  5523.     Grassland = true,
  5524.     Wetland = true,
  5525.     Grain = 1,
  5526.     TotalFood = 1
  5527. },
  5528. ["Count Raggi's Bird-of-Paradise"] = {
  5529.     Name = "Count Raggi's Bird-of-Paradise",
  5530.     Game = "oceania",
  5531.     Color = "Brown",
  5532.     PowerCategory = "Egg-laying",
  5533.     Description = "Choose 1 other player. You both gain 1 [fruit] from the supply.",
  5534.     VP = 7,
  5535.     Nest = "Bowl",
  5536.     Eggs = 2,
  5537.     Wingspan = 22,
  5538.     Forest = true,
  5539.     Worm = 1,
  5540.     Berry = 2,
  5541.     TotalFood = 3
  5542. },
  5543. ["Crested Pigeon"] = {
  5544.     Name = "Crested Pigeon",
  5545.     Game = "oceania",
  5546.     Color = "Yellow",
  5547.     PowerCategory = "Egg-laying",
  5548.     Description = "Cache up to 8 [seed] from your supply on this bird.",
  5549.     VP = 3,
  5550.     Nest = "Platform",
  5551.     Eggs = 4,
  5552.     Wingspan = 45,
  5553.     Grassland = true,
  5554.     Grain = 1,
  5555.     TotalFood = 1
  5556. },
  5557. ["Crimson Chat"] = {
  5558.     Name = "Crimson Chat",
  5559.     Game = "oceania",
  5560.     Color = "Brown",
  5561.     PowerCategory = "Food-related",
  5562.     Description = "Discard 1 [wild] to tuck 1 [card] from the deck behind this bird.",
  5563.     Flocking = true,
  5564.     VP = 4,
  5565.     Nest = "Bowl",
  5566.     Eggs = 2,
  5567.     Wingspan = 19,
  5568.     Grassland = true,
  5569.     Worm = 1,
  5570.     Grain = 1,
  5571.     Berry = 1,
  5572.     EitherFood = true,
  5573.     TotalFood = 1
  5574. },
  5575. ["Eastern Rosella"] = {
  5576.     Name = "Eastern Rosella",
  5577.     Game = "oceania",
  5578.     Color = "Brown",
  5579.     PowerCategory = "Flocking",
  5580.     Description = "All players gain 1 [nectar] from the supply. You also gain 1 [seed] from the supply.",
  5581.     VP = 4,
  5582.     Nest = "Cavity",
  5583.     Eggs = 3,
  5584.     Wingspan = 48,
  5585.     Forest = true,
  5586.     Grassland = true,
  5587.     Grain = 1,
  5588.     Nectar = 2,
  5589.     TotalFood = 3
  5590. },
  5591. ["Eastern Whipbird"] = {
  5592.     Name = "Eastern Whipbird",
  5593.     Game = "oceania",
  5594.     Color = "Brown",
  5595.     PowerCategory = "Food-related",
  5596.     Description = "Choose 1 other player. You both gain 1 [seed] from the supply.",
  5597.     VP = 5,
  5598.     Nest = "Bowl",
  5599.     Eggs = 2,
  5600.     Wingspan = 30,
  5601.     Forest = true,
  5602.     Worm = 1,
  5603.     Grain = 1,
  5604.     TotalFood = 2
  5605. },
  5606. ["Emu"] = {
  5607.     Name = "Emu",
  5608.     Game = "oceania",
  5609.     Color = "Brown",
  5610.     PowerCategory = "Food-related",
  5611.     Description = "Gain all [seed] that are in the birdfeeder. Keep half (rounded up), then choose how to distribute the remainder among the other player(s).",
  5612.     VP = 4,
  5613.     Nest = "Ground",
  5614.     Eggs = 6,
  5615.     Wingspan = 0,
  5616.     Forest = true,
  5617.     Grassland = true,
  5618.     Wetland = true,
  5619.     Worm = 1,
  5620.     Grain = 1,
  5621.     Berry = 1,
  5622.     TotalFood = 3
  5623. },
  5624. ["Galah"] = {
  5625.     Name = "Galah",
  5626.     Game = "oceania",
  5627.     Color = "Brown",
  5628.     PowerCategory = "Hunting/Fishing",
  5629.     Description = "Choose 1 other player. They reset the birdfeeder and gain a [seed], if there is one. You tuck 2 [card] from the deck behind this bird.",
  5630.     Flocking = true,
  5631.     VP = 5,
  5632.     Nest = "Cavity",
  5633.     Eggs = 2,
  5634.     Wingspan = 75,
  5635.     Forest = true,
  5636.     Grassland = true,
  5637.     Grain = 3,
  5638.     TotalFood = 3
  5639. },
  5640. ["Golden-Headed Cisticola"] = {
  5641.     Name = "Golden-Headed Cisticola",
  5642.     Game = "oceania",
  5643.     Color = "White",
  5644.     Description = "Play another bird in your [grassland]. Pay its normal cost with a 1 [egg] discount.",
  5645.     VP = 1,
  5646.     Nest = "Wild",
  5647.     Eggs = 3,
  5648.     Wingspan = 15,
  5649.     Grassland = true,
  5650.     Worm = 1,
  5651.     TotalFood = 1
  5652. },
  5653. ["Gould's Finch"] = {
  5654.     Name = "Gould's Finch",
  5655.     Game = "oceania",
  5656.     Color = "Yellow",
  5657.     PowerCategory = "Flocking",
  5658.     Description = "Play a bird. Pay its normal food and egg cost. If it has a [when played] or [game end] power, you may use it.",
  5659.     VP = 3,
  5660.     Nest = "Cavity",
  5661.     Eggs = 3,
  5662.     Wingspan = 14,
  5663.     Forest = true,
  5664.     Grassland = true,
  5665.     Wetland = true,
  5666.     Grain = 1,
  5667.     TotalFood = 1
  5668. },
  5669. ["Green Pygmy-Goose"] = {
  5670.     Name = "Green Pygmy-Goose",
  5671.     Game = "oceania",
  5672.     Color = "Brown",
  5673.     PowerCategory = "Food-related",
  5674.     Description = "Draw 2 [card] from the deck. Keep 1 and give the other to another player.",
  5675.     VP = 4,
  5676.     Nest = "Cavity",
  5677.     Eggs = 4,
  5678.     Wingspan = 54,
  5679.     Wetland = true,
  5680.     Grain = 2,
  5681.     TotalFood = 2
  5682. },
  5683. ["Grey Butcherbird"] = {
  5684.     Name = "Grey Butcherbird",
  5685.     Game = "oceania",
  5686.     Color = "Brown",
  5687.     PowerCategory = "Hunting/Fishing",
  5688.     Description = "Look at a [card] from the deck. If its wingspan is less than 40cm, tuck it behind this bird and cache 1 [rodent] from the supply on this bird. If not, discard it.",
  5689.     Predator = true,
  5690.     VP = 5,
  5691.     Nest = "Bowl",
  5692.     Eggs = 2,
  5693.     Wingspan = 40,
  5694.     Forest = true,
  5695.     Grassland = true,
  5696.     Wetland = true,
  5697.     Worm = 1,
  5698.     Rat = 1,
  5699.     WildFood = 1,
  5700.     TotalFood = 3
  5701. },
  5702. ["Grey Shrikethrush"] = {
  5703.     Name = "Grey Shrikethrush",
  5704.     Game = "oceania",
  5705.     Color = "Brown",
  5706.     PowerCategory = "Egg-laying",
  5707.     Description = "Reset the birdfeeder and gain all [rodent], if there are any. You may cache any or all of them on this bird.",
  5708.     Predator = true,
  5709.     VP = 2,
  5710.     Nest = "Bowl",
  5711.     Eggs = 3,
  5712.     Wingspan = 26,
  5713.     Forest = true,
  5714.     Worm = 1,
  5715.     Nectar = 1,
  5716.     EitherFood = true,
  5717.     TotalFood = 1
  5718. },
  5719. ["Grey Teal"] = {
  5720.     Name = "Grey Teal",
  5721.     Game = "oceania",
  5722.     Color = "Brown",
  5723.     PowerCategory = "Other",
  5724.     Description = "Look at 3 [card] from the deck. Keep 1 [wetland] bird, if there is one. You may add it to your hand or tuck it behind this bird. Discard the other cards.",
  5725.     Flocking = true,
  5726.     VP = 2,
  5727.     Nest = "Ground",
  5728.     Eggs = 5,
  5729.     Wingspan = 64,
  5730.     Wetland = true,
  5731.     Worm = 1,
  5732.     Grain = 1,
  5733.     TotalFood = 2
  5734. },
  5735. ["Grey Warbler"] = {
  5736.     Name = "Grey Warbler",
  5737.     Game = "oceania",
  5738.     Color = "White",
  5739.     Description = "Play another bird in your [forest]. Pay its normal cost with a 1 [egg] discount.",
  5740.     VP = 1,
  5741.     Nest = "Wild",
  5742.     Eggs = 3,
  5743.     Wingspan = 16,
  5744.     Forest = true,
  5745.     Worm = 1,
  5746.     Grain = 1,
  5747.     Berry = 1,
  5748.     EitherFood = true,
  5749.     TotalFood = 1
  5750. },
  5751. ["Grey-Headed Mannikin"] = {
  5752.     Name = "Grey-Headed Mannikin",
  5753.     Game = "oceania",
  5754.     Color = "Yellow",
  5755.     PowerCategory = "Hunting/Fishing",
  5756.     Description = "Play a bird. Pay its normal food cost, but ignore 1 [egg] in its egg cost. If it has a [when played] or [game end] power, you may use it.",
  5757.     VP = 2,
  5758.     Nest = "Wild",
  5759.     Eggs = 3,
  5760.     Wingspan = 15,
  5761.     Grassland = true,
  5762.     Grain = 1,
  5763.     TotalFood = 1
  5764. },
  5765. ["Horsfield's Bronze-Cuckoo"] = {
  5766.     Name = "Horsfield's Bronze-Cuckoo",
  5767.     Game = "oceania",
  5768.     Color = "Pink",
  5769.     PowerCategory = "Card-drawing",
  5770.     Description = "When another player takes the [lay eggs] action, lay 1 [egg] on a bird with a wingspan less than 30cm.",
  5771.     VP = 2,
  5772.     Eggs = 0,
  5773.     Wingspan = 29,
  5774.     Forest = true,
  5775.     Grassland = true,
  5776.     Wetland = true,
  5777.     Worm = 1,
  5778.     TotalFood = 1
  5779. },
  5780. ["Horsfield's Bushlark"] = {
  5781.     Name = "Horsfield's Bushlark",
  5782.     Game = "oceania",
  5783.     Color = "Brown",
  5784.     PowerCategory = "Food-related",
  5785.     Description = "Discard 1 [seed]. If you do, lay up to 2 [egg] on this bird.",
  5786.     VP = 2,
  5787.     Nest = "Ground",
  5788.     Eggs = 2,
  5789.     Wingspan = 12,
  5790.     Grassland = true,
  5791.     Worm = 1,
  5792.     Grain = 1,
  5793.     TotalFood = 2
  5794. },
  5795. ["Kakapo"] = {
  5796.     Name = "Kākāpō",
  5797.     Game = "oceania",
  5798.     Color = "Yellow",
  5799.     PowerCategory = "Other",
  5800.     Description = "Draw 4 bonus cards, keep 1, and discard the other 3.",
  5801.     BonusCard = true,
  5802.     VP = 4,
  5803.     Nest = "Ground",
  5804.     Eggs = 2,
  5805.     Wingspan = 0,
  5806.     Forest = true,
  5807.     Grain = 1,
  5808.     Berry = 1,
  5809.     TotalFood = 2
  5810. },
  5811. ["Kea"] = {
  5812.     Name = "Kea",
  5813.     Game = "oceania",
  5814.     Color = "White",
  5815.     Description = "Draw 1 bonus card. You may discard any number of [wild] to draw that many additional bonus cards. Keep 1 of the cards you drew and discard the rest.",
  5816.     BonusCard = true,
  5817.     VP = 5,
  5818.     Nest = "Ground",
  5819.     Eggs = 2,
  5820.     Wingspan = 90,
  5821.     Forest = true,
  5822.     Grassland = true,
  5823.     Berry = 1,
  5824.     Nectar = 1,
  5825.     TotalFood = 2
  5826. },
  5827. ["Kelp Gull"] = {
  5828.     Name = "Kelp Gull",
  5829.     Game = "oceania",
  5830.     Color = "Brown",
  5831.     PowerCategory = "Food-related",
  5832.     Description = "Discard any number of [wild] to draw that many [card].",
  5833.     VP = 6,
  5834.     Nest = "Ground",
  5835.     Eggs = 2,
  5836.     Wingspan = 135,
  5837.     Wetland = true,
  5838.     Fish = 1,
  5839.     WildFood = 1,
  5840.     TotalFood = 2
  5841. },
  5842. ["Kereru"] = {
  5843.     Name = "Kererū",
  5844.     Game = "oceania",
  5845.     Color = "Brown",
  5846.     PowerCategory = "Other",
  5847.     Description = "If the player to your left has a [nectar] in their personal supply, gain 1 [nectar] from the general supply.",
  5848.     VP = 3,
  5849.     Nest = "Platform",
  5850.     Eggs = 2,
  5851.     Wingspan = 75,
  5852.     Forest = true,
  5853.     Berry = 1,
  5854.     Nectar = 1,
  5855.     TotalFood = 2
  5856. },
  5857. ["Korimako"] = {
  5858.     Name = "Korimako",
  5859.     Game = "oceania",
  5860.     Color = "Brown",
  5861.     PowerCategory = "Flocking",
  5862.     Description = "Discard any number of [rodent] to gain that many [nectar] from the supply.",
  5863.     VP = 4,
  5864.     Nest = "Bowl",
  5865.     Eggs = 3,
  5866.     Wingspan = 22,
  5867.     Forest = true,
  5868.     Worm = 1,
  5869.     Berry = 1,
  5870.     Nectar = 1,
  5871.     TotalFood = 3
  5872. },
  5873. ["Laughing Kookaburra"] = {
  5874.     Name = "Laughing Kookaburra",
  5875.     Game = "oceania",
  5876.     Color = "Brown",
  5877.     PowerCategory = "Other",
  5878.     Description = "Reset the birdfeeder. If you do, gain 1 [invertebrate], [fish], or [rodent], if there is one.",
  5879.     Predator = true,
  5880.     VP = 1,
  5881.     Nest = "Cavity",
  5882.     Eggs = 3,
  5883.     Wingspan = 60,
  5884.     Forest = true,
  5885.     Grassland = true,
  5886.     Wetland = true,
  5887.     Worm = 1,
  5888.     Fish = 1,
  5889.     Rat = 1,
  5890.     EitherFood = true,
  5891.     TotalFood = 1
  5892. },
  5893. ["Lesser Frigatebird"] = {
  5894.     Name = "Lesser Frigatebird",
  5895.     Game = "oceania",
  5896.     Color = "Brown",
  5897.     PowerCategory = "Flocking",
  5898.     Description = "All players may discard 1 [egg] from a [wetland] bird. Each player that discards an [egg] gains 1 [wild] from the supply.",
  5899.     VP = 9,
  5900.     Nest = "Platform",
  5901.     Eggs = 1,
  5902.     Wingspan = 175,
  5903.     Wetland = true,
  5904.     Worm = 1,
  5905.     Fish = 2,
  5906.     TotalFood = 3
  5907. },
  5908. ["Lewin's Honeyeater"] = {
  5909.     Name = "Lewin's Honeyeater",
  5910.     Game = "oceania",
  5911.     Color = "Brown",
  5912.     PowerCategory = "Flocking",
  5913.     Description = "Choose 1 other player. You both gain 1 [nectar] from the supply.",
  5914.     VP = 5,
  5915.     Nest = "Bowl",
  5916.     Eggs = 2,
  5917.     Wingspan = 29,
  5918.     Forest = true,
  5919.     Berry = 1,
  5920.     Nectar = 1,
  5921.     TotalFood = 2
  5922. },
  5923. ["Little Penguin"] = {
  5924.     Name = "Little Penguin",
  5925.     Game = "oceania",
  5926.     Color = "Brown",
  5927.     PowerCategory = "Other",
  5928.     Description = "Draw and discard 5 [card] from the deck. For each [fish] in their food costs, cache 1 [fish] from the supply on this bird.",
  5929.     Predator = true,
  5930.     VP = 7,
  5931.     Nest = "Wild",
  5932.     Eggs = 2,
  5933.     Wingspan = 0,
  5934.     Wetland = true,
  5935.     Fish = 3,
  5936.     TotalFood = 3
  5937. },
  5938. ["Little Pied Cormorant"] = {
  5939.     Name = "Little Pied Cormorant",
  5940.     Game = "oceania",
  5941.     Color = "Yellow",
  5942.     PowerCategory = "Food-related",
  5943.     Description = "Lay 1 [egg] on each of your birds with a [platform] nest, including this one.",
  5944.     VP = 4,
  5945.     Nest = "Platform",
  5946.     Eggs = 2,
  5947.     Wingspan = 88,
  5948.     Wetland = true,
  5949.     Worm = 1,
  5950.     Fish = 1,
  5951.     TotalFood = 2
  5952. },
  5953. ["Magpie-Lark"] = {
  5954.     Name = "Magpie-Lark",
  5955.     Game = "oceania",
  5956.     Color = "Yellow",
  5957.     PowerCategory = "Food-related",
  5958.     Description = "Discard 2 [egg] from your [forest]. If you do, play 1 bird in your [grassland] at its normal food cost (ignore its egg cost). If it has a [when played] or [game end] power, you may use it.",
  5959.     VP = 5,
  5960.     Nest = "Bowl",
  5961.     Eggs = 3,
  5962.     Wingspan = 57,
  5963.     Grassland = true,
  5964.     Worm = 1,
  5965.     Grain = 1,
  5966.     EitherFood = true,
  5967.     TotalFood = 1
  5968. },
  5969. ["Major Mitchell's Cockatoo"] = {
  5970.     Name = "Major Mitchell's Cockatoo",
  5971.     Game = "oceania",
  5972.     Color = "Brown",
  5973.     PowerCategory = "Other",
  5974.     Description = "Tuck 1 [card] from your hand behind this bird. If you do, all players gain 1 [seed] from the supply.",
  5975.     Flocking = true,
  5976.     VP = 6,
  5977.     Nest = "Cavity",
  5978.     Eggs = 2,
  5979.     Wingspan = 81,
  5980.     Forest = true,
  5981.     Grassland = true,
  5982.     Grain = 2,
  5983.     TotalFood = 2
  5984. },
  5985. ["Malleefowl"] = {
  5986.     Name = "Malleefowl",
  5987.     Game = "oceania",
  5988.     Color = "Yellow",
  5989.     PowerCategory = "Food-related",
  5990.     Description = "Lay 1 [egg] on each of your birds with a [ground] nest, including this one.",
  5991.     VP = 2,
  5992.     Nest = "Ground",
  5993.     Eggs = 6,
  5994.     Wingspan = 33,
  5995.     Forest = true,
  5996.     Grassland = true,
  5997.     Grain = 1,
  5998.     WildFood = 1,
  5999.     TotalFood = 2
  6000. },
  6001. ["Maned Duck"] = {
  6002.     Name = "Maned Duck",
  6003.     Game = "oceania",
  6004.     Color = "Brown",
  6005.     PowerCategory = "Card-drawing",
  6006.     Description = "Tuck up to 3 [card] from your hand behind this bird. If you tuck at least 1 [card], gain 1 [seed] from the supply.",
  6007.     Flocking = true,
  6008.     VP = 2,
  6009.     Nest = "Cavity",
  6010.     Eggs = 4,
  6011.     Wingspan = 79,
  6012.     Wetland = true,
  6013.     WildFood = 2,
  6014.     TotalFood = 2
  6015. },
  6016. ["Many-Colored Fruit Dove"] = {
  6017.     Name = "Many-Colored Fruit Dove",
  6018.     Game = "oceania",
  6019.     Color = "Brown",
  6020.     PowerCategory = "Egg-laying",
  6021.     Description = "All players gain 1 [fruit] from the supply. You gain 1 additional [fruit] from the supply.",
  6022.     VP = 2,
  6023.     Nest = "Platform",
  6024.     Eggs = 2,
  6025.     Wingspan = 30,
  6026.     Forest = true,
  6027.     Berry = 1,
  6028.     TotalFood = 1
  6029. },
  6030. ["Masked Lapwing"] = {
  6031.     Name = "Masked Lapwing",
  6032.     Game = "oceania",
  6033.     Color = "White",
  6034.     Description = "Reset the birdfeeder, then, for each type of food in the birdfeeder, gain 1 of that type.",
  6035.     VP = 1,
  6036.     Nest = "Ground",
  6037.     Eggs = 3,
  6038.     Wingspan = 80,
  6039.     Grassland = true,
  6040.     Wetland = true,
  6041.     Worm = 1,
  6042.     Grain = 1,
  6043.     EitherFood = true,
  6044.     TotalFood = 1
  6045. },
  6046. ["Mistletoebird"] = {
  6047.     Name = "Mistletoebird",
  6048.     Game = "oceania",
  6049.     Color = "Brown",
  6050.     PowerCategory = "Card-drawing",
  6051.     Description = "Gain 1 [fruit] from the supply, or discard 1 [fruit] to gain 1 [nectar] from the supply.",
  6052.     VP = 3,
  6053.     Nest = "Wild",
  6054.     Eggs = 4,
  6055.     Wingspan = 18,
  6056.     Forest = true,
  6057.     Berry = 2,
  6058.     Nectar = 1,
  6059.     TotalFood = 3
  6060. },
  6061. ["Musk Duck"] = {
  6062.     Name = "Musk Duck",
  6063.     Game = "oceania",
  6064.     Color = "Brown",
  6065.     PowerCategory = "Other",
  6066.     Description = "Draw 1 face-up [card] from the tray with a [ground] or [star] nest. You may reset or refill the tray before doing so.",
  6067.     VP = 2,
  6068.     Nest = "Ground",
  6069.     Eggs = 2,
  6070.     Wingspan = 87,
  6071.     Wetland = true,
  6072.     Worm = 1,
  6073.     Grain = 1,
  6074.     Fish = 1,
  6075.     EitherFood = true,
  6076.     TotalFood = 1
  6077. },
  6078. ["New Holland Honeyeater"] = {
  6079.     Name = "New Holland Honeyeater",
  6080.     Game = "oceania",
  6081.     Color = "Brown",
  6082.     PowerCategory = "Food-related",
  6083.     Description = "Gain 1 [nectar] from the birdfeeder, if there is one.",
  6084.     VP = 0,
  6085.     Nest = "Bowl",
  6086.     Eggs = 3,
  6087.     Wingspan = 20,
  6088.     Grassland = true,
  6089.     Nectar = 1,
  6090.     TotalFood = 1
  6091. },
  6092. ["Noisy Miner"] = {
  6093.     Name = "Noisy Miner",
  6094.     Game = "oceania",
  6095.     Color = "Brown",
  6096.     PowerCategory = "Food-related",
  6097.     Description = "Tuck 1 [card] from your hand behind this bird. If you do, lay up to 2 [egg] on this bird. All other players may lay 1 [egg].",
  6098.     Flocking = true,
  6099.     VP = 3,
  6100.     Nest = "Bowl",
  6101.     Eggs = 6,
  6102.     Wingspan = 41,
  6103.     Forest = true,
  6104.     Grassland = true,
  6105.     Worm = 1,
  6106.     Nectar = 1,
  6107.     WildFood = 1,
  6108.     TotalFood = 3
  6109. },
  6110. ["North Island Brown Kiwi"] = {
  6111.     Name = "North Island Brown Kiwi",
  6112.     Game = "oceania",
  6113.     Color = "White",
  6114.     Description = "Discard a bonus card. If you do, draw 4 bonus cards, keep 2, and discard the other 2.",
  6115.     BonusCard = true,
  6116.     VP = 6,
  6117.     Nest = "Wild",
  6118.     Eggs = 1,
  6119.     Wingspan = 0,
  6120.     Forest = true,
  6121.     Grassland = true,
  6122.     Worm = 2,
  6123.     Grain = 1,
  6124.     TotalFood = 3
  6125. },
  6126. ["Orange-Footed Scrubfowl"] = {
  6127.     Name = "Orange-Footed Scrubfowl",
  6128.     Game = "oceania",
  6129.     Color = "Yellow",
  6130.     PowerCategory = "Food-related",
  6131.     Description = "Lay 1 [egg] on each of your birds with a [ground] nest, including this one.",
  6132.     VP = 1,
  6133.     Nest = "Ground",
  6134.     Eggs = 5,
  6135.     Wingspan = 43,
  6136.     Forest = true,
  6137.     Grain = 1,
  6138.     Berry = 1,
  6139.     EitherFood = true,
  6140.     TotalFood = 1
  6141. },
  6142. ["Pacific Black Duck"] = {
  6143.     Name = "Pacific Black Duck",
  6144.     Game = "oceania",
  6145.     Color = "Yellow",
  6146.     PowerCategory = "Card-drawing",
  6147.     Description = "For every 2 [egg] in your [wetland], lay 1 [egg] on this bird.",
  6148.     VP = 2,
  6149.     Nest = "Cavity",
  6150.     Eggs = 6,
  6151.     Wingspan = 88,
  6152.     Wetland = true,
  6153.     Grain = 1,
  6154.     WildFood = 1,
  6155.     TotalFood = 2
  6156. },
  6157. ["Peaceful Dove"] = {
  6158.     Name = "Peaceful Dove",
  6159.     Game = "oceania",
  6160.     Color = "Brown",
  6161.     PowerCategory = "Food-related",
  6162.     Description = "Discard any number of [seed]. Lay 1 [egg] on this bird for each discarded [seed].",
  6163.     VP = 3,
  6164.     Nest = "Platform",
  6165.     Eggs = 4,
  6166.     Wingspan = 25,
  6167.     Forest = true,
  6168.     Grassland = true,
  6169.     Grain = 1,
  6170.     TotalFood = 1
  6171. },
  6172. ["Pesquet's Parrot"] = {
  6173.     Name = "Pesquet's Parrot",
  6174.     Game = "oceania",
  6175.     Color = "Brown",
  6176.     PowerCategory = "Hunting/Fishing",
  6177.     Description = "If the player to your right has a [nectar] in their personal supply, gain 1 [nectar] from the general supply.",
  6178.     VP = 3,
  6179.     Nest = "Cavity",
  6180.     Eggs = 2,
  6181.     Wingspan = 30,
  6182.     Forest = true,
  6183.     Berry = 1,
  6184.     Nectar = 1,
  6185.     TotalFood = 2
  6186. },
  6187. ["Pheasant Coucal"] = {
  6188.     Name = "Pheasant Coucal",
  6189.     Game = "oceania",
  6190.     Color = "Pink",
  6191.     PowerCategory = "Other",
  6192.     Description = "When another player takes the [lay eggs] action, lay 1 [egg] on this bird.",
  6193.     VP = 1,
  6194.     Nest = "Ground",
  6195.     Eggs = 4,
  6196.     Wingspan = 50,
  6197.     Grassland = true,
  6198.     Worm = 1,
  6199.     Rat = 1,
  6200.     TotalFood = 2
  6201. },
  6202. ["Pink-Eared Duck"] = {
  6203.     Name = "Pink-Eared Duck",
  6204.     Game = "oceania",
  6205.     Color = "Brown",
  6206.     PowerCategory = "Other",
  6207.     Description = "Draw 2 [card] from the deck. Keep 1 and give the other to another player.",
  6208.     VP = 4,
  6209.     Nest = "Cavity",
  6210.     Eggs = 3,
  6211.     Wingspan = 64,
  6212.     Wetland = true,
  6213.     Grain = 1,
  6214.     WildFood = 1,
  6215.     TotalFood = 2
  6216. },
  6217. ["Plains-Wanderer"] = {
  6218.     Name = "Plains-Wanderer",
  6219.     Game = "oceania",
  6220.     Color = "White",
  6221.     Description = "Draw 1 bonus card for each bird in your [grassland]. Keep 1 and discard the rest.",
  6222.     BonusCard = true,
  6223.     VP = 4,
  6224.     Nest = "Ground",
  6225.     Eggs = 3,
  6226.     Wingspan = 32,
  6227.     Grassland = true,
  6228.     Worm = 1,
  6229.     Grain = 1,
  6230.     TotalFood = 2
  6231. },
  6232. ["Princess Stephanie's Astrapia"] = {
  6233.     Name = "Princess Stephanie's Astrapia",
  6234.     Game = "oceania",
  6235.     Color = "Brown",
  6236.     PowerCategory = "Other",
  6237.     Description = "Choose 1 other player. You both lay 1 [egg].",
  6238.     VP = 6,
  6239.     Nest = "Platform",
  6240.     Eggs = 1,
  6241.     Wingspan = 45,
  6242.     Forest = true,
  6243.     Worm = 1,
  6244.     Berry = 1,
  6245.     TotalFood = 2
  6246. },
  6247. ["Pukeko"] = {
  6248.     Name = "Pūkeko",
  6249.     Game = "oceania",
  6250.     Color = "Brown",
  6251.     PowerCategory = "Flocking",
  6252.     Description = "Lay 1 [egg] on an adjacent bird.",
  6253.     VP = 4,
  6254.     Nest = "Ground",
  6255.     Eggs = 3,
  6256.     Wingspan = 78,
  6257.     Wetland = true,
  6258.     Grain = 2,
  6259.     WildFood = 1,
  6260.     TotalFood = 3
  6261. },
  6262. ["Rainbow Lorikeet"] = {
  6263.     Name = "Rainbow Lorikeet",
  6264.     Game = "oceania",
  6265.     Color = "Brown",
  6266.     PowerCategory = "Egg-laying",
  6267.     Description = "Discard 1 [nectar] to the [spent nectar] space for your [forest]. If you do, gain 2 [die] from the birdfeeder.",
  6268.     VP = 1,
  6269.     Nest = "Cavity",
  6270.     Eggs = 2,
  6271.     Wingspan = 46,
  6272.     Forest = true,
  6273.     Berry = 1,
  6274.     Nectar = 1,
  6275.     TotalFood = 2
  6276. },
  6277. ["Red Wattlebird"] = {
  6278.     Name = "Red Wattlebird",
  6279.     Game = "oceania",
  6280.     Color = "White",
  6281.     Description = "Gain 1 [nectar] from the supply for each bird with a wingspan less than 49cm in your [forest].",
  6282.     VP = 3,
  6283.     Nest = "Bowl",
  6284.     Eggs = 2,
  6285.     Wingspan = 49,
  6286.     Forest = true,
  6287.     Nectar = 2,
  6288.     TotalFood = 2
  6289. },
  6290. ["Red-Backed Fairywren"] = {
  6291.     Name = "Red-Backed Fairywren",
  6292.     Game = "oceania",
  6293.     Color = "Yellow",
  6294.     PowerCategory = "Other",
  6295.     Description = "Lay 1 [egg] on each of your birds with a [star] nest, including this one.",
  6296.     VP = 4,
  6297.     Nest = "Wild",
  6298.     Eggs = 3,
  6299.     Wingspan = 15,
  6300.     Grassland = true,
  6301.     Worm = 1,
  6302.     Grain = 1,
  6303.     TotalFood = 2
  6304. },
  6305. ["Red-Capped Robin"] = {
  6306.     Name = "Red-Capped Robin",
  6307.     Game = "oceania",
  6308.     Color = "Brown",
  6309.     PowerCategory = "Flocking",
  6310.     Description = "If the player to your left has an [invertebrate] in their personal supply, gain 1 [invertebrate] from the general supply.",
  6311.     VP = 2,
  6312.     Nest = "Bowl",
  6313.     Eggs = 4,
  6314.     Wingspan = 17,
  6315.     Forest = true,
  6316.     Worm = 1,
  6317.     TotalFood = 1
  6318. },
  6319. ["Red-Necked Avocet"] = {
  6320.     Name = "Red-Necked Avocet",
  6321.     Game = "oceania",
  6322.     Color = "Brown",
  6323.     PowerCategory = "Other",
  6324.     Description = "If the player to your left or right has an [invertebrate] in their personal supply, gain 1 [invertebrate] from the general supply.",
  6325.     VP = 4,
  6326.     Nest = "Ground",
  6327.     Eggs = 2,
  6328.     Wingspan = 75,
  6329.     Wetland = true,
  6330.     Worm = 1,
  6331.     Grain = 1,
  6332.     TotalFood = 2
  6333. },
  6334. ["Red-Winged Parrot"] = {
  6335.     Name = "Red-Winged Parrot",
  6336.     Game = "oceania",
  6337.     Color = "Brown",
  6338.     PowerCategory = "Flocking",
  6339.     Description = "Give 1 [nectar] from your supply to another player. If you do, lay 2 [egg] on this bird or gain 2 [die] from the birdfeeder.",
  6340.     VP = 6,
  6341.     Nest = "Cavity",
  6342.     Eggs = 2,
  6343.     Wingspan = 49,
  6344.     Forest = true,
  6345.     Grassland = true,
  6346.     Wetland = true,
  6347.     Grain = 1,
  6348.     Berry = 1,
  6349.     Nectar = 1,
  6350.     TotalFood = 3
  6351. },
  6352. ["Regent Bowerbird"] = {
  6353.     Name = "Regent Bowerbird",
  6354.     Game = "oceania",
  6355.     Color = "Brown",
  6356.     PowerCategory = "Hunting/Fishing",
  6357.     Description = "Choose 1 other player. You both gain 1 [invertebrate] from the supply.",
  6358.     VP = 3,
  6359.     Nest = "Bowl",
  6360.     Eggs = 2,
  6361.     Wingspan = 36,
  6362.     Forest = true,
  6363.     Grassland = true,
  6364.     Worm = 1,
  6365.     Grain = 1,
  6366.     Berry = 1,
  6367.     EitherFood = true,
  6368.     TotalFood = 1
  6369. },
  6370. ["Royal Spoonbill"] = {
  6371.     Name = "Royal Spoonbill",
  6372.     Game = "oceania",
  6373.     Color = "Brown",
  6374.     PowerCategory = "Food-related",
  6375.     Description = "Draw 1 face-up [card] from the tray with a [platform] or [star] nest. You may reset or refill the tray before doing so.",
  6376.     VP = 4,
  6377.     Nest = "Platform",
  6378.     Eggs = 2,
  6379.     Wingspan = 120,
  6380.     Wetland = true,
  6381.     Worm = 1,
  6382.     Fish = 1,
  6383.     TotalFood = 2
  6384. },
  6385. ["Rufous Night-Heron"] = {
  6386.     Name = "Rufous Night-Heron",
  6387.     Game = "oceania",
  6388.     Color = "Brown",
  6389.     PowerCategory = "Hunting/Fishing",
  6390.     Description = "Look at a [card] from the deck. If it can live in [wetland], tuck it behind this bird. If not, discard it.",
  6391.     Predator = true,
  6392.     VP = 5,
  6393.     Nest = "Platform",
  6394.     Eggs = 2,
  6395.     Wingspan = 106,
  6396.     Wetland = true,
  6397.     Worm = 1,
  6398.     Fish = 1,
  6399.     TotalFood = 2
  6400. },
  6401. ["Rufous Owl"] = {
  6402.     Name = "Rufous Owl",
  6403.     Game = "oceania",
  6404.     Color = "Brown",
  6405.     PowerCategory = "Other",
  6406.     Description = "Draw 1 face-up [card] from the tray with a wingspan less than 75cm and tuck it behind this bird.",
  6407.     Predator = true,
  6408.     VP = 7,
  6409.     Nest = "Cavity",
  6410.     Eggs = 2,
  6411.     Wingspan = 115,
  6412.     Forest = true,
  6413.     Rat = 3,
  6414.     TotalFood = 3
  6415. },
  6416. ["Rufous-Banded Honeyeater"] = {
  6417.     Name = "Rufous-Banded Honeyeater",
  6418.     Game = "oceania",
  6419.     Color = "Brown",
  6420.     PowerCategory = "Food-related",
  6421.     Description = "Discard 1 [invertebrate]. If you do, gain 1 [nectar] from the supply.",
  6422.     VP = 0,
  6423.     Nest = "Bowl",
  6424.     Eggs = 4,
  6425.     Wingspan = 22,
  6426.     Forest = true,
  6427.     Wetland = true,
  6428.     Worm = 1,
  6429.     Nectar = 1,
  6430.     EitherFood = true,
  6431.     TotalFood = 1
  6432. },
  6433. ["Sacred Kingfisher"] = {
  6434.     Name = "Sacred Kingfisher",
  6435.     Game = "oceania",
  6436.     Color = "Pink",
  6437.     PowerCategory = "Egg-laying",
  6438.     Description = "When another player takes the [gain food] action, gain 1 [invertebrate], [fish], or [rodent] from the birdfeeder, if there is one, at the end of their turn.",
  6439.     Predator = true,
  6440.     VP = 0,
  6441.     Nest = "Cavity",
  6442.     Eggs = 4,
  6443.     Wingspan = 30,
  6444.     Forest = true,
  6445.     Grassland = true,
  6446.     Wetland = true,
  6447.     Worm = 1,
  6448.     Fish = 1,
  6449.     Rat = 1,
  6450.     EitherFood = true,
  6451.     TotalFood = 1
  6452. },
  6453. ["Silvereye"] = {
  6454.     Name = "Silvereye",
  6455.     Game = "oceania",
  6456.     Color = "Brown",
  6457.     PowerCategory = "Food-related",
  6458.     Description = "All players gain 1 [nectar] from the supply.",
  6459.     VP = 4,
  6460.     Nest = "Bowl",
  6461.     Eggs = 4,
  6462.     Wingspan = 17,
  6463.     Forest = true,
  6464.     Grassland = true,
  6465.     Wetland = true,
  6466.     Worm = 1,
  6467.     Nectar = 1,
  6468.     TotalFood = 2
  6469. },
  6470. ["South Island Robin"] = {
  6471.     Name = "South Island Robin",
  6472.     Game = "oceania",
  6473.     Color = "Brown",
  6474.     PowerCategory = "Food-related",
  6475.     Description = "If the player to your right has an [invertebrate] in their supply, cache 1 [invertebrate] from the general supply on this bird.",
  6476.     VP = 1,
  6477.     Nest = "Bowl",
  6478.     Eggs = 5,
  6479.     Wingspan = 24,
  6480.     Forest = true,
  6481.     Grassland = true,
  6482.     Worm = 1,
  6483.     TotalFood = 1
  6484. },
  6485. ["Southern Cassowary"] = {
  6486.     Name = "Southern Cassowary",
  6487.     Game = "oceania",
  6488.     Color = "White",
  6489.     PowerCategory = "Other",
  6490.     Description = "Discard a bird from your [forest] and put this bird in its place (do not pay an egg cost). If you do, lay 4 [egg] on this bird and gain 2 [fruit] from the supply.",
  6491.     VP = 4,
  6492.     Nest = "Ground",
  6493.     Eggs = 4,
  6494.     Wingspan = 0,
  6495.     Forest = true,
  6496.     Berry = 2,
  6497.     WildFood = 1,
  6498.     TotalFood = 3
  6499. },
  6500. ["Spangled Drongo"] = {
  6501.     Name = "Spangled Drongo",
  6502.     Game = "oceania",
  6503.     Color = "Pink",
  6504.     PowerCategory = "Egg-laying",
  6505.     Description = "When another player gains [nectar], gain 1 [nectar] from the supply.",
  6506.     VP = 1,
  6507.     Nest = "Bowl",
  6508.     Eggs = 2,
  6509.     Wingspan = 27,
  6510.     Forest = true,
  6511.     Worm = 1,
  6512.     Nectar = 1,
  6513.     WildFood = 1,
  6514.     TotalFood = 3
  6515. },
  6516. ["Splendid Fairywren"] = {
  6517.     Name = "Splendid Fairywren",
  6518.     Game = "oceania",
  6519.     Color = "Yellow",
  6520.     PowerCategory = "Food-related",
  6521.     Description = "Lay 1 [egg] on each of your birds with a wingspan less than 30cm, including this one.",
  6522.     VP = 1,
  6523.     Nest = "Wild",
  6524.     Eggs = 5,
  6525.     Wingspan = 15,
  6526.     Forest = true,
  6527.     Grassland = true,
  6528.     Worm = 2,
  6529.     TotalFood = 2
  6530. },
  6531. ["Spotless Crake"] = {
  6532.     Name = "Spotless Crake",
  6533.     Game = "oceania",
  6534.     Color = "Yellow",
  6535.     PowerCategory = "Hunting/Fishing",
  6536.     Description = "Lay 1 [egg] on each bird in your [wetland], including this one.",
  6537.     VP = 1,
  6538.     Nest = "Ground",
  6539.     Eggs = 3,
  6540.     Wingspan = 28,
  6541.     Wetland = true,
  6542.     Worm = 1,
  6543.     Grain = 1,
  6544.     EitherFood = true,
  6545.     TotalFood = 1
  6546. },
  6547. ["Stubble Quail"] = {
  6548.     Name = "Stubble Quail",
  6549.     Game = "oceania",
  6550.     Color = "White",
  6551.     Description = "Discard up to 6 [wild]. Lay 1 [egg] on this bird for each discarded food.",
  6552.     VP = 4,
  6553.     Nest = "Ground",
  6554.     Eggs = 6,
  6555.     Wingspan = 29,
  6556.     Grassland = true,
  6557.     Worm = 1,
  6558.     Grain = 1,
  6559.     EitherFood = true,
  6560.     TotalFood = 1
  6561. },
  6562. ["Sulphur-Crested Cockatoo"] = {
  6563.     Name = "Sulphur-Crested Cockatoo",
  6564.     Game = "oceania",
  6565.     Color = "Brown",
  6566.     PowerCategory = "Card-drawing",
  6567.     Description = "Tuck 1 [card] from your hand behind this bird. If you do, all players gain 1 [nectar] from the supply.",
  6568.     Flocking = true,
  6569.     VP = 6,
  6570.     Nest = "Cavity",
  6571.     Eggs = 2,
  6572.     Wingspan = 103,
  6573.     Forest = true,
  6574.     Grain = 1,
  6575.     Berry = 1,
  6576.     TotalFood = 2
  6577. },
  6578. ["Superb Lyrebird"] = {
  6579.     Name = "Superb Lyrebird",
  6580.     Game = "oceania",
  6581.     Color = "Brown",
  6582.     PowerCategory = "Food-related",
  6583.     Description = "Copy a brown power on one bird in the [forest] of the player to your right.",
  6584.     VP = 5,
  6585.     Nest = "Wild",
  6586.     Eggs = 1,
  6587.     Wingspan = 73,
  6588.     Forest = true,
  6589.     Worm = 2,
  6590.     WildFood = 1,
  6591.     TotalFood = 3
  6592. },
  6593. ["Tawny Frogmouth"] = {
  6594.     Name = "Tawny Frogmouth",
  6595.     Game = "oceania",
  6596.     Color = "Brown",
  6597.     PowerCategory = "Flocking",
  6598.     Description = "Reset the birdfeeder. Cache 1 [invertebrate] or 1 [rodent] from the birdfeeder (if available) on this bird.",
  6599.     Predator = true,
  6600.     VP = 5,
  6601.     Nest = "Platform",
  6602.     Eggs = 2,
  6603.     Wingspan = 82,
  6604.     Forest = true,
  6605.     Grassland = true,
  6606.     Wetland = true,
  6607.     Worm = 2,
  6608.     Rat = 1,
  6609.     TotalFood = 3
  6610. },
  6611. ["Tui"] = {
  6612.     Name = "Tūī",
  6613.     Game = "oceania",
  6614.     Color = "Brown",
  6615.     PowerCategory = "Food-related",
  6616.     Description = "Copy a brown power on one bird in the [forest] of the player to your left.",
  6617.     VP = 5,
  6618.     Nest = "Bowl",
  6619.     Eggs = 2,
  6620.     Wingspan = 42,
  6621.     Forest = true,
  6622.     Worm = 1,
  6623.     Nectar = 2,
  6624.     TotalFood = 3
  6625. },
  6626. ["Wedge-Tailed Eagle"] = {
  6627.     Name = "Wedge-Tailed Eagle",
  6628.     Game = "oceania",
  6629.     Color = "Brown",
  6630.     PowerCategory = "Food-related",
  6631.     Description = "Look at a [card] from the deck. If its wingspan is over 65cm, tuck it behind this bird and cache 1 [rodent] from the supply on this bird. If not, discard it.",
  6632.     Predator = true,
  6633.     VP = 7,
  6634.     Nest = "Platform",
  6635.     Eggs = 2,
  6636.     Wingspan = 207,
  6637.     Forest = true,
  6638.     Grassland = true,
  6639.     Wetland = true,
  6640.     Rat = 3,
  6641.     TotalFood = 3
  6642. },
  6643. ["Welcome Swallow"] = {
  6644.     Name = "Welcome Swallow",
  6645.     Game = "oceania",
  6646.     Color = "White",
  6647.     Description = "Tuck 1 [card] from the deck behind each bird in this habitat, including this bird.",
  6648.     Flocking = true,
  6649.     VP = 1,
  6650.     Nest = "Wild",
  6651.     Eggs = 5,
  6652.     Wingspan = 28,
  6653.     Grassland = true,
  6654.     Wetland = true,
  6655.     Worm = 2,
  6656.     TotalFood = 2
  6657. },
  6658. ["White-Bellied Sea-Eagle"] = {
  6659.     Name = "White-Bellied Sea-Eagle",
  6660.     Game = "oceania",
  6661.     Color = "Brown",
  6662.     PowerCategory = "Card-drawing",
  6663.     Description = "Reset the birdfeeder. Gain 1 [fish] or 1 [rodent] from the birdfeeder, if there is one, and cache it on this bird.",
  6664.     Predator = true,
  6665.     VP = 7,
  6666.     Nest = "Platform",
  6667.     Eggs = 2,
  6668.     Wingspan = 200,
  6669.     Forest = true,
  6670.     Wetland = true,
  6671.     Fish = 1,
  6672.     Rat = 2,
  6673.     TotalFood = 3
  6674. },
  6675. ["White-Breasted Woodswallow"] = {
  6676.     Name = "White-Breasted Woodswallow",
  6677.     Game = "oceania",
  6678.     Color = "White",
  6679.     Description = "Lay 1 [egg] on each bird in your [grassland], including this one.",
  6680.     VP = 3,
  6681.     Nest = "Bowl",
  6682.     Eggs = 2,
  6683.     Wingspan = 32,
  6684.     Grassland = true,
  6685.     Worm = 2,
  6686.     TotalFood = 2
  6687. },
  6688. ["White-Faced Heron"] = {
  6689.     Name = "White-Faced Heron",
  6690.     Game = "oceania",
  6691.     Color = "Brown",
  6692.     PowerCategory = "Tucking",
  6693.     Description = "Reset the birdfeeder and gain all [fish], if there are any. You may cache any or all of them on this bird.",
  6694.     Predator = true,
  6695.     VP = 6,
  6696.     Nest = "Platform",
  6697.     Eggs = 4,
  6698.     Wingspan = 106,
  6699.     Wetland = true,
  6700.     Worm = 1,
  6701.     Fish = 1,
  6702.     Rat = 1,
  6703.     TotalFood = 3
  6704. },
  6705. ["Willie-Wagtail"] = {
  6706.     Name = "Willie-Wagtail",
  6707.     Game = "oceania",
  6708.     Color = "Brown",
  6709.     PowerCategory = "Flocking",
  6710.     Description = "Draw 1 face-up [card] from the tray with a [bowl] or [star] nest. You may reset or refill the tray before doing so.",
  6711.     VP = 2,
  6712.     Nest = "Bowl",
  6713.     Eggs = 5,
  6714.     Wingspan = 30,
  6715.     Forest = true,
  6716.     Grassland = true,
  6717.     Wetland = true,
  6718.     Worm = 1,
  6719.     WildFood = 1,
  6720.     TotalFood = 2
  6721. },
  6722. ["Wrybill"] = {
  6723.     Name = "Wrybill",
  6724.     Game = "oceania",
  6725.     Color = "White",
  6726.     Description = "Look through all discarded bonus cards. Keep 1 of them.",
  6727.     BonusCard = true,
  6728.     VP = 4,
  6729.     Nest = "Ground",
  6730.     Eggs = 2,
  6731.     Wingspan = 49,
  6732.     Wetland = true,
  6733.     Worm = 1,
  6734.     Fish = 1,
  6735.     TotalFood = 2
  6736. }
  6737.  
  6738. }
  6739.  
  6740. ----    #include birdCardData
  6741. }
  6742.  
  6743. function birdCards.getData(card)
  6744.     if( card == nil) then
  6745.         return nil
  6746.     end
  6747.  
  6748.     return birdCards.data[card.getName()]
  6749. end
  6750.  
  6751. function birdCards.getDataByName(name)
  6752.     return birdCards.data[name]
  6753. end
  6754.  
  6755. ----#include birdCards
  6756. ----#include bonusCards
  6757. bonusCards = {
  6758. ----    #include bonusCardData
  6759. data = {
  6760.     ["Anatomist"] = {
  6761.         description = "Birds with body parts in their names",
  6762.         validateType = "BIRD_NAME",
  6763.         validation = {"back", "beak", "belly", "bellied", "bill", "breast", "cap", "chin", "collar", "crest", "crown", "eye", "ear", "face", "foot", "head", "leg", "neck", "mouth", "rump", "shoulder", "tail", "throat", "toe", "wing", "wattle"},
  6764.         rejection = {"burrowing", "mistletoe", "honeyeater", "trumpet"},
  6765.         points = {0,3,3,7}
  6766.     },
  6767.     ["Backyard Birder"] = {
  6768.         description = "Birds worth less than 4 points",
  6769.         validateType = "BIRD_ATTRIBUTE",
  6770.         validation = {
  6771.             birdAttribute = "VP",
  6772.             argument = "<",
  6773.             value = 4
  6774.         },
  6775.         points = {0,0,0,0,3,3,6}
  6776.     },
  6777.     ["Bird Bander"] = {
  6778.         description = "Birds that can live in multiple habitats",
  6779.         validateType = "BIRD_ATTRIBUTES",
  6780.         validation = {
  6781.             birdAttributes = {
  6782.                 {
  6783.                     birdAttribute = "Forest",
  6784.                     argument = "=",
  6785.                     value = true
  6786.                 },
  6787.                 {
  6788.                     birdAttribute = "Grassland",
  6789.                     argument = "=",
  6790.                     value = true
  6791.                 },
  6792.                 {
  6793.                     birdAttribute = "Wetland",
  6794.                     argument = "=",
  6795.                     value = true
  6796.                 },
  6797.             },
  6798.             argument = ">",
  6799.             value = 1
  6800.         },
  6801.         validationValue = 2,
  6802.         points = {0,0,0,4,4,7}
  6803.     },
  6804.     ["Bird Counter"] = {
  6805.         description = "Birds with a [flocking] power",
  6806.         validateType = "BIRD_ATTRIBUTE",
  6807.         validation = {
  6808.                 birdAttribute = "Color",
  6809.                 argument = "=",
  6810.                 value = "Brown"
  6811.         },
  6812.         points = {2,4,6,8,10,12,14,16,18,20,22,24,26,28,30}
  6813.     },
  6814.     ["Bird Feeder"] = {
  6815.         description = "Birds that eat [seed]",
  6816.         validateType = "BIRD_ATTRIBUTE",
  6817.         validation = {
  6818.             birdAttribute = "Grain",
  6819.             argument = ">",
  6820.             value = 0
  6821.         },
  6822.         points = {0,0,0,0,3,3,3,7}
  6823.     },
  6824.     ["Cartographer"] = {
  6825.         description = "Birds with geography terms in their name",
  6826.         validateType = "BIRD_NAME",
  6827.         validation = { "australian", "australasian", "american", "atlantic", "baltimore", "california", "canada", "carolina", "chihuahua", "corsican", "eastern", "eurasian", "european", "inca", "mallee", "mississippi", "moor", "mountain", "northern", "north", "new holland", "prairie", "pacific", "plains", "sandhill", "savannah", "south", "southern", "sea", "scrub", "western", "holland"},
  6828.         rejection = { "roseate" },
  6829.         points = {0,3,3,7}
  6830.     },
  6831.     ["Diet Specialist"] = {
  6832.         description = "Birds with a food cost of 3 food",
  6833.         validateType = "BIRD_ATTRIBUTE",
  6834.         validation = {
  6835.             birdAttribute = "TotalFood",
  6836.             argument = ">",
  6837.             value = 2
  6838.         },
  6839.         points = {0,3,3,6}
  6840.     },
  6841.     ["Enclosure Builder"] = {
  6842.         description = "Birds with [ground] nests",
  6843.         validateType = "BIRD_ATTRIBUTE",
  6844.         validation = {
  6845.             birdAttribute = "Nest",
  6846.             argument = "or",
  6847.             value = {"Ground", "Wild"}
  6848.         },
  6849.         points = {0,0,0,4,4,7}
  6850.     },
  6851.     ["Falconer"] = {
  6852.         description = "Birds with a [predator] power",
  6853.         validateType = "BIRD_ATTRIBUTE",
  6854.         validation = {
  6855.             birdAttribute = "Predator",
  6856.             argument = "=",
  6857.             value = true
  6858.         },
  6859.         points = {2,4,6,8,10,12,14,16,18,20,22,24,26,28,30}
  6860.     },
  6861.     ["Fishery Manager"] = {
  6862.         description = "Birds that eat [fish]",
  6863.         validateType = "BIRD_ATTRIBUTE",
  6864.         validation = {
  6865.             birdAttribute = "Fish",
  6866.             argument = ">",
  6867.             value = 0
  6868.         },
  6869.         points = {0,3,3,8}
  6870.     },
  6871.     ["Food Web Expert"] = {
  6872.         description = "Birds that eat only [worms]",
  6873.         validateType = "BIRD_ATTRIBUTES",
  6874.         validation = {
  6875.             {
  6876.                 birdAttribute = "Worm",
  6877.                 argument = ">",
  6878.                 value = 0
  6879.             },
  6880.             {
  6881.                 birdAttribute = "Rat",
  6882.                 argument = "=",
  6883.                 value = nil
  6884.             },
  6885.             {
  6886.                 birdAttribute = "Fish",
  6887.                 argument = "=",
  6888.                 value = nil
  6889.             },
  6890.             {
  6891.                 birdAttribute = "Berry",
  6892.                 argument = "=",
  6893.                 value = nil
  6894.             },
  6895.             {
  6896.                 birdAttribute = "Grain",
  6897.                 argument = "=",
  6898.                 value = nil
  6899.             },
  6900.             {
  6901.                 birdAttribute = "Wild",
  6902.                 argument = "=",
  6903.                 value = nil
  6904.             },
  6905.             {
  6906.                 birdAttribute = "Nectar",
  6907.                 argument = "=",
  6908.                 value = nil
  6909.             }
  6910.         },
  6911.         points = {2,4,6,8,10,12,14,16,18,20,22,24,26,28,30}
  6912.     },
  6913.     ["Forester"] = {
  6914.         description = "Birds that can only live in [forest]",
  6915.         validateType = "BIRD_ATTRIBUTES",
  6916.         validation = {
  6917.             {
  6918.                 birdAttribute = "Forest",
  6919.                 argument = "=",
  6920.                 value = true
  6921.             },
  6922.             {
  6923.                 birdAttribute = "Grassland",
  6924.                 argument = "=",
  6925.                 value = nil
  6926.             },
  6927.             {
  6928.                 birdAttribute = "Wetland",
  6929.                 argument = "=",
  6930.                 value = nil
  6931.             }
  6932.         },
  6933.         points = {0,0,4,4,5}
  6934.     },
  6935.     ["Historian"] = {
  6936.         description = "Birds named after a person",
  6937.         validateType = "BIRD_NAME",
  6938.         validation = {"'s"},
  6939.         points = {2,4,6,8,10,12,14,16,18,20,22,24,26,28,30}
  6940.     },
  6941.     ["Large Bird Specialist"] = {
  6942.         description = "Birds with wingspans over 65 cm",
  6943.         validateType = "BIRD_ATTRIBUTE",
  6944.         validation = {
  6945.             birdAttribute = "Wingspan",
  6946.             argument = ">",
  6947.             value = 65
  6948.         },
  6949.         points = {0,0,0,3,3,6}
  6950.     },
  6951.     ["Nest Box Builder"] = {
  6952.         description = "Birds with [cavity] nests",
  6953.         validateType = "BIRD_ATTRIBUTE",
  6954.         validation = {
  6955.             birdAttribute = "Nest",
  6956.             argument = "or",
  6957.             value = {"Cavity", "Wild"}
  6958.         },
  6959.         points = {0,0,0,4,4,7}
  6960.     },
  6961.     ["Omnivore Specialist"] = {
  6962.         description = "Birds that eat [wild]",
  6963.         validateType = "BIRD_ATTRIBUTE",
  6964.         validation = {
  6965.             birdAttribute = "WildFood",
  6966.             argument = ">",
  6967.             value = 0
  6968.         },
  6969.         points = {2,4,6,8,10,12,14,16,18,20,22,24,26,28,30}
  6970.     },
  6971.     ["Passerine Specialist"] = {
  6972.         description = "Birds with wingspans 30 cm or less",
  6973.         validateType = "BIRD_ATTRIBUTE",
  6974.         validation = {
  6975.             birdAttribute = "Wingspan",
  6976.             argument = "<",
  6977.             value = 31
  6978.         },
  6979.         points = {0,0,0,3,3,6}
  6980.     },
  6981.     ["Photographer"] = {
  6982.         description = "Birds with colors in their names",
  6983.         validateType = "BIRD_NAME",
  6984.         validation = { "ash", "black", "blue", "bronze", "brown", "cerulean", "chestnut", "crimson", "coal", "ferruginous", "gold", "gray", "grey", "green", "indigo", "lazuli", "orange", "purple", "pink", "red", "rose", "roseate", "ruby", "ruddy", "rufous", "snow", "silver", "sulphur", "tawny", "violet", "white", "yellow"},
  6985.         rejection = { "barred", "colored", "sacred", "collared-" },
  6986.         points = {0,0,0,3,3,6}
  6987.     },
  6988.     ["Platform Builder"] = {
  6989.         description = "Birds with [platform] nests",
  6990.         validateType = "BIRD_ATTRIBUTE",
  6991.         validation = {
  6992.             birdAttribute = "Nest",
  6993.             argument = "or",
  6994.             value = {"Platform", "Wild"}
  6995.         },
  6996.         points = {0,0,0,4,4,7}
  6997.     },
  6998.     ["Prairie Manager"] = {
  6999.         description = "Birds that can only live in [Grassland]",
  7000.         validateType = "BIRD_ATTRIBUTES",
  7001.         validation = {
  7002.             {
  7003.                 birdAttribute = "Forest",
  7004.                 argument = "=",
  7005.                 value = nil
  7006.             },
  7007.             {
  7008.                 birdAttribute = "Grassland",
  7009.                 argument = "=",
  7010.                 value = true
  7011.             },
  7012.             {
  7013.                 birdAttribute = "Wetland",
  7014.                 argument = "=",
  7015.                 value = nil
  7016.             }
  7017.         },
  7018.         points = {0,3,3,8}
  7019.     },
  7020.     ["Forester"] = {
  7021.         description = "Birds that can only live in [grassland]",
  7022.         validateType = "BIRD_ATTRIBUTES",
  7023.         validation = {
  7024.             {
  7025.                 birdAttribute = "Forest",
  7026.                 argument = "=",
  7027.                 value = nil
  7028.             },
  7029.             {
  7030.                 birdAttribute = "Grassland",
  7031.                 argument = "=",
  7032.                 value = true
  7033.             },
  7034.             {
  7035.                 birdAttribute = "Wetland",
  7036.                 argument = "=",
  7037.                 value = nil
  7038.             }
  7039.         },
  7040.         points = {0,3,3,8}
  7041.     },
  7042.     ["Rodentologist"] = {
  7043.         description = "Birds that eat [rat]",
  7044.         validateType = "BIRD_ATTRIBUTE",
  7045.         validation = {
  7046.             birdAttribute = "Rat",
  7047.             argument = ">",
  7048.             value = 0
  7049.         },
  7050.         points = {2,4,6,8,10,12,14,16,18,20,22,24,26,28,30}
  7051.     },
  7052.     ["Viticulturalist"] = {
  7053.         description = "Birds that eat [Berry]",
  7054.         validateType = "BIRD_ATTRIBUTE",
  7055.         validation = {
  7056.             birdAttribute = "Berry",
  7057.             argument = ">",
  7058.             value = 0
  7059.         },
  7060.         points = {0,3,3,7}
  7061.     },
  7062.     ["Wetland Scientist"] = {
  7063.         description = "Birds that can only live in [Wetland]",
  7064.         validateType = "BIRD_ATTRIBUTES",
  7065.         validation = {
  7066.             {
  7067.                 birdAttribute = "Forest",
  7068.                 argument = "=",
  7069.                 value = nil
  7070.             },
  7071.             {
  7072.                 birdAttribute = "Grassland",
  7073.                 argument = "=",
  7074.                 value = nil
  7075.             },
  7076.             {
  7077.                 birdAttribute = "Wetland",
  7078.                 argument = "=",
  7079.                 value = true
  7080.             }
  7081.         },
  7082.         points = {0,0,3,3,7}
  7083.     },
  7084.     ["Wildlife Gardener"] = {
  7085.         description = "Birds with [bowl] nests",
  7086.         validateType = "BIRD_ATTRIBUTE",
  7087.         validation = {
  7088.             birdAttribute = "Nest",
  7089.             argument = "or",
  7090.             value = {"bowl", "Wild"}
  7091.         },
  7092.         points = {0,0,0,4,4,7}
  7093.     }
  7094.  
  7095.     --[[NEED TO COMPLETE]]
  7096.     --[[
  7097.     ["Behaviorist"] = {
  7098.         description = "For each column that contains birds with 3 different power colors",
  7099.         validateType = "",
  7100.         validation = {},
  7101.         points = {}
  7102.     },
  7103.     ["Breeding Manager"] = {
  7104.         description = "Birds that have at least 4 eggs laid on them",
  7105.         validateType = "",
  7106.         validation = {},
  7107.         points = {}
  7108.     },
  7109.     ["Citizen Scientist"] = {
  7110.         description = "Birds with tucked cards",
  7111.         validateType = "",
  7112.         validation = {},
  7113.         points = {}
  7114.     },
  7115.     ["Ecologist"] = {
  7116.         description = "Birds in your habitat with the fewest birds.",
  7117.         validateType = "",
  7118.         validation = {},
  7119.         points = {}
  7120.     },
  7121.     ["Ethologist"] = {
  7122.         description = "In any one habitat",
  7123.         validateType = "",
  7124.         validation = {},
  7125.         points = {}
  7126.     },
  7127.     ["Oologist"] = {
  7128.         description = "Birds that have at least 1 egg laid on them",
  7129.         validateType = "",
  7130.         validation = {},
  7131.         points = {}
  7132.     },
  7133.     ["Visionary Leader"] = {
  7134.         description = "Bird cards in hand at end of game",
  7135.         validateType = "",
  7136.         validation = {},
  7137.         points = {}
  7138.     },
  7139.  
  7140.     ["Forest Data Analyst"] = {
  7141.         description = "Consecutive birds in [forest] with ascending or descending wingspans",
  7142.         validateType = "",
  7143.         validation = {},
  7144.         points = {}
  7145.     },
  7146.     ["Grassland Data Analyst"] = {
  7147.         description = "Consecutive birds in [grassland] with ascending or descending wingspans",
  7148.         validateType = "",
  7149.         validation = {},
  7150.         points = {}
  7151.     },
  7152.     ["Wetland Data Analyst"] = {
  7153.         description = "Consecutive birds in [wetland] with ascending or descending wingspans",
  7154.         validateType = "",
  7155.         validation = {},
  7156.         points = {}
  7157.     },
  7158.     ["Site Selection Specialist"] = {
  7159.         description = "Columns with a matching pair or trio of nests",
  7160.         validateType = "",
  7161.         validation = {},
  7162.         points = {}
  7163.     },
  7164.     ["Mechanical Engineer"] = {
  7165.         description = "Sets of the 4 nest types / 1 set = [bowl] [cavity] [ground] [platform]",
  7166.         validateType = "",
  7167.         validation = {},
  7168.         points = {}
  7169.     },
  7170.  
  7171.     ]]
  7172. }
  7173.  
  7174. --[[
  7175.  
  7176. [""] = {
  7177.     description = "",
  7178.     validateType = "",
  7179.     validation = {},
  7180.     points = {}
  7181. },
  7182.  
  7183. ]]
  7184.  
  7185. ----    #include bonusCardData
  7186. }
  7187.  
  7188. --[[
  7189. function bonusCards.validate(bonusCard, birdCard)
  7190.     if(bonusCard == nil or bonusCard.description != "Bonus Card") then
  7191.         return nil
  7192.     end
  7193.  
  7194.     print(eval(bonusCards.data[birdCard.name].validate(birdCard)))
  7195.  
  7196.     --[[return bonusCards.data[card.getName()].validate(birdCard)]
  7197. end]]
  7198.  
  7199. --[[Checks if the bird card is valid for the bonus]]
  7200. function bonusCards.validate(bonusCard, birdCard)
  7201.     if(bonusCard == nil or bonusCard.getDescription() != "Bonus Card") then
  7202.         return nil
  7203.     end
  7204.  
  7205.     local bonusData = bonusCards.data[bonusCard.getName()]
  7206.     local birdData = birdCards.getDataByName(birdCard.Name)
  7207.  
  7208.     if(bonusData != nil) then
  7209.         if(bonusData.validateType == "BIRD_NAME") then
  7210.             return bonusCards.validateByName(bonusData.validation, birdData, bonusData.rejection)
  7211.         elseif(bonusData.validateType == "BIRD_ATTRIBUTE") then
  7212.             return bonusCards.validateByData(bonusData.validation, birdData)
  7213.         elseif(bonusData.validateType == "BIRD_ATTRIBUTES") then
  7214.             return bonusCards.validateByMultiData(bonusData.validation, birdData)
  7215.         end
  7216.     end
  7217.  
  7218.     return false
  7219. end
  7220.  
  7221. --[[Validate the if the card name matches the valid names]]
  7222. function bonusCards.validateByName(names, birdCardData, failedNames)
  7223.     local valid = false
  7224.     if (failedNames != nil) then
  7225.         for _, name in pairs(failedNames) do
  7226.             if (string.find(string.lower(birdCardData.Name),name) != nil) then
  7227.                 return false
  7228.             end
  7229.         end
  7230.     end
  7231.     for _, name in pairs(names) do
  7232.         if (string.find(string.lower(birdCardData.Name),name) != nil) then
  7233.             valid = true
  7234.             break
  7235.         end
  7236.     end
  7237.     return valid
  7238. end
  7239.  
  7240. --[[Checks if more then one critera needs to be valid]]
  7241. function bonusCards.validateByMultiData(validation, birdCardData)
  7242.     local isValid = true
  7243.  
  7244.     if (validation.birdAttributes != nil) then
  7245.         local count = 0
  7246.         isValid = false
  7247.         for _, v in pairs(validation.birdAttributes) do
  7248.             if(bonusCards.validateByData(v, birdCardData) == true) then
  7249.                 count = count + 1
  7250.             end
  7251.         end
  7252.        
  7253.         if (validation.argument == ">") then
  7254.             if(count > validation.value) then
  7255.                 isValid = true
  7256.             end
  7257.         end
  7258.     else
  7259.         for _, v in pairs(validation) do
  7260.             if(bonusCards.validateByData(v, birdCardData) == false) then
  7261.                 isValid = false
  7262.                 break
  7263.             end
  7264.         end
  7265.     end
  7266.  
  7267.     return isValid
  7268. end
  7269.  
  7270. --[[Validates the bird cards to see if they match the bonus critera]]
  7271. function bonusCards.validateByData(validation, birdCardData)
  7272.     local isValid = false
  7273.     local data = birdCardData[validation.birdAttribute]
  7274.  
  7275.     if (validation.argument == "=") then
  7276.         if(data == validation.value) then
  7277.             isValid = true
  7278.         end
  7279.     elseif (validation.argument == ">") then
  7280.         if(data != nil and data > validation.value) then
  7281.             isValid = true
  7282.         end
  7283.     elseif (validation.argument == "<") then
  7284.         if(data != nil and data < validation.value) then
  7285.             isValid = true
  7286.         end
  7287.     elseif (validation.argument == "or") then
  7288.         for _, value in pairs(validation.value) do
  7289.             if(data == value) then
  7290.                 isValid = true
  7291.                 break
  7292.             end
  7293.         end
  7294.     end
  7295.  
  7296.     return isValid
  7297. end
  7298.  
  7299. --[[Calculates the scores based on how many cards are valid]]
  7300. function bonusCards.getScoring(bonusCard, birdQuanity)
  7301.     local bonusData = bonusCards.data[bonusCard.getName()]
  7302.  
  7303.     if(bonusData == nil) then
  7304.         return 0
  7305.     end
  7306.  
  7307.     local len = length(bonusData.points)
  7308.  
  7309.     local score = 0
  7310.  
  7311.     if (birdQuanity != 0) then
  7312.         if (birdQuanity > length(bonusData.points)) then
  7313.             score = bonusData.points[len]
  7314.         else
  7315.             score = bonusData.points[birdQuanity]
  7316.         end
  7317.     end
  7318.  
  7319.     --[[print(bonusCard.getName()..' - '..birdQuanity..' = '..score)]]
  7320.  
  7321.     return score
  7322. end
  7323.  
  7324. --[[Gets all bonus cards from hand]]
  7325. function bonusCards.getFromHand(playerColor)
  7326.     local cardsInHand = Player[playerColor].getHandObjects()
  7327.     local bonusCards = {}
  7328.  
  7329.     for _, card in pairs(cardsInHand) do
  7330.         if(card != nil and card.getDescription() != nil and card.getDescription() == "Bonus Card") then
  7331.             table.insert(bonusCards, {bonusCard = card, validCount = 0})
  7332.         end
  7333.     end
  7334.  
  7335.     return bonusCards
  7336. end
  7337.  
  7338. ----#include bonusCards
  7339. ----#include controls/user_controls
  7340. userControls = {
  7341.     buttons = {
  7342. ----        #include startGame_button
  7343. ["StartGame_Button"] = {
  7344.     BIND_OBJECT_GUID = '1d6cf4',
  7345.     Parameters = {
  7346.         function_owner = Global,
  7347.         label = 'Start Game',
  7348.         position = {0,0.1,0},
  7349.         height = 1000,
  7350.         width = 7000,
  7351.         alignment = 3,
  7352.         font_size = 600
  7353.     },
  7354.     callback = function() gameState.start() end,
  7355.     onLoad = true
  7356. },
  7357.  
  7358. ----        #include startGame_button
  7359. ----        #include europeanExp_button
  7360. ["EuropeanExp_Button"] = {
  7361.     BIND_OBJECT_GUID = '8e2071',
  7362.     Parameters = {
  7363.         function_owner = Global,
  7364.         label = 'European Expansion',
  7365.         position = {0,0.1,0},
  7366.         height = 1000,
  7367.         width = 7000,
  7368.         alignment = 3,
  7369.         font_size = 600
  7370.     },
  7371.     callback = function() europeanExp.load() end,
  7372.     onLoad = true
  7373. },
  7374.  
  7375. ----        #include europeanExp_button
  7376. ----        #include oceaniaExp_button
  7377. ["OceaniaExp_Button"] = {
  7378.     BIND_OBJECT_GUID = '16acd1',
  7379.     Parameters = {
  7380.         function_owner = Global,
  7381.         label = 'Oceania Expansion',
  7382.         position = {0,0.1,0},
  7383.         height = 1000,
  7384.         width = 7000,
  7385.         alignment = 3,
  7386.         font_size = 600
  7387.     },
  7388.     callback = function() oceaniaExp.load() end,
  7389.     onLoad = true
  7390. },
  7391.  
  7392. ----        #include oceaniaExp_button
  7393. ----        #include birdFeeder_button
  7394. ["Bird_Feeder_Button_InFeeder"] = {
  7395.     BIND_OBJECT_GUID = '6cbab5',
  7396.     Parameters = {
  7397.         click_function = 'birdFeeder.roll',
  7398.         function_owner = nil,
  7399.         label = 'Roll Bird Feeder',
  7400.         position = {0,0.2,0},
  7401.         rotation = {0,180,0},
  7402.         height = 1000,
  7403.         width = 6000,
  7404.         alignment = 3,
  7405.         font_size = 600
  7406.     },
  7407.     callback = function() birdFeeder.roll() end,
  7408.     onLoad = false
  7409. },
  7410. ["Bird_Feeder_Button_NotInFeeder"] = {
  7411.     BIND_OBJECT_GUID = '2fd483',
  7412.     Parameters = {
  7413.         click_function = 'birdFeeder.rollRemoved',
  7414.         function_owner = self,
  7415.         label = 'Roll Outside Feeder',
  7416.         position = {0,0.2,0},
  7417.         rotation = {0,180,0},
  7418.         height = 1000,
  7419.         width = 6000,
  7420.         alignment = 3,
  7421.         font_size = 600
  7422.     },
  7423.     callback = function() birdFeeder.rollRemoved() end,
  7424.     onLoad = false
  7425. },
  7426.  
  7427. ----        #include birdFeeder_button
  7428. ----        #include roundEnd_button
  7429. ["RoundEnd_Button"] = {
  7430.     BIND_OBJECT_GUID = 'e514ba',
  7431.     Parameters = {
  7432.         function_owner = nil,
  7433.         label = 'End Round 1',
  7434.         position = {0,0.2,0},
  7435.         rotation = {0,180,0},
  7436.         height = 1000,
  7437.         width = 6000,
  7438.         alignment = 3,
  7439.         font_size = 600
  7440.     },
  7441.     callback = function()
  7442.         gameState.endRound();
  7443.  
  7444.         if(gameState.currentState != "End") then
  7445.             getObjectFromGUID(userControls.buttons["RoundEnd_Button"].BIND_OBJECT_GUID).editButton({label = "End " .. gameState.currentState})
  7446.         end
  7447.     end,
  7448.     onLoad = false
  7449. },
  7450.  
  7451. ----        #include roundEnd_button
  7452. ----        #include playerBoard_label
  7453. ["Bird_Count_Label"] = {
  7454.     Parameters = {
  7455.         click_function = 'none',
  7456.         function_owner = nil,
  7457.         label = 'Bird VP: 0',
  7458.         position = {0.4,-3,0},
  7459.         rotation = {180,90,0},
  7460.         height = 00,
  7461.         width = 0,
  7462.         alignment = 3,
  7463.         font_size = 50,
  7464.         font_color={0,0,0}
  7465.     },
  7466.     INDEX = 0,
  7467.     onLoad = false
  7468. },
  7469. ["Egg_Count_Label"] = {
  7470.     Parameters = {
  7471.         click_function = 'none',
  7472.         function_owner = nil,
  7473.         label = 'Eggs: 0',
  7474.         position = {0.3,-3,-0.05},
  7475.         rotation = {180,90,0},
  7476.         height = 00,
  7477.         width = 0,
  7478.         alignment = 3,
  7479.         font_size = 50,
  7480.         font_color={0,0,0}
  7481.     },
  7482.     INDEX = 1,
  7483.     onLoad = false
  7484. },
  7485. ["Cashed_Food_Count_Label"] = {
  7486.     Parameters = {
  7487.         click_function = 'none',
  7488.         function_owner = nil,
  7489.         label = 'Cached Food: 0',
  7490.         position = {0.2,-3,0.1},
  7491.         rotation = {180,90,0},
  7492.         height = 00,
  7493.         width = 0,
  7494.         alignment = 3,
  7495.         font_size = 50,
  7496.         font_color={0,0,0}
  7497.     },
  7498.     INDEX = 2,
  7499.     onLoad = false
  7500. },
  7501. ["Tucked_Cards_Count_Label"] = {
  7502.     Parameters = {
  7503.         click_function = 'none',
  7504.         function_owner = nil,
  7505.         label = 'Tucked Cards: 0',
  7506.         position = {0.1,-3,0.11},
  7507.         rotation = {180,90,0},
  7508.         height = 00,
  7509.         width = 0,
  7510.         alignment = 3,
  7511.         font_size = 50,
  7512.         font_color={0,0,0}
  7513.     },
  7514.     INDEX = 3,
  7515.     onLoad = false
  7516. },
  7517. ["Bonus_Cards_Count_Label"] = {
  7518.     Parameters = {
  7519.         click_function = 'none',
  7520.         function_owner = nil,
  7521.         label = 'Bonus VP: 0',
  7522.         position = {0,-3,0.05},
  7523.         rotation = {180,90,0},
  7524.         height = 00,
  7525.         width = 0,
  7526.         alignment = 3,
  7527.         font_size = 50,
  7528.         font_color={0,0,0}
  7529.     },
  7530.     INDEX = 4,
  7531.     onLoad = false
  7532. },
  7533. ["Round_Scoring_Count_Label"] = {
  7534.     Parameters = {
  7535.         click_function = 'none',
  7536.         function_owner = nil,
  7537.         label = 'Round VP: 0',
  7538.         position = {-0.1,-3,0.05},
  7539.         rotation = {180,90,0},
  7540.         height = 00,
  7541.         width = 0,
  7542.         alignment = 3,
  7543.         font_size = 50,
  7544.         font_color={0,0,0}
  7545.     },
  7546.     INDEX = 5,
  7547.     onLoad = false
  7548. },
  7549. ["Nector_Scoring_Count_Label"] = {
  7550.     Parameters = {
  7551.         click_function = 'none',
  7552.         function_owner = nil,
  7553.         label = 'Nectar VP: 0',
  7554.         position = {-0.2,-3,0.05},
  7555.         rotation = {180,90,0},
  7556.         height = 00,
  7557.         width = 0,
  7558.         alignment = 3,
  7559.         font_size = 50,
  7560.         font_color={0,0,0}
  7561.     },
  7562.     INDEX = 6,
  7563.     onLoad = false
  7564. },
  7565. ["Total_Count_Label"] = {
  7566.     Parameters = {
  7567.         click_function = 'none',
  7568.         function_owner = nil,
  7569.         label = 'Final Score: 0',
  7570.         position = {-0.4,-3,0.06},
  7571.         rotation = {180,90,0},
  7572.         height = 00,
  7573.         width = 0,
  7574.         alignment = 3,
  7575.         font_size = 50,
  7576.         font_color={0,0,0}
  7577.     },
  7578.     INDEX = 7,
  7579.     onLoad = false
  7580. },
  7581.  
  7582. ----        #include playerBoard_label
  7583. ----        #include foodBags_button
  7584. ["Rat_Bag_Button_Take"] = {
  7585.     BIND_OBJECT_GUID = 'd52985',
  7586.     Parameters = {
  7587.         function_owner = nil,
  7588.         label = 'Take',
  7589.         position = {0,0.1,-1.5},
  7590.         rotation = {0,180,0},
  7591.         height = 100,
  7592.         width = 600,
  7593.         alignment = 3,
  7594.         font_size = 100
  7595.     },
  7596.     callback = function(objectButtonClicked, playerColorClicked)
  7597.         if(playerColorClicked != '') then
  7598.             components.giveFood("Rat", playerColorClicked)
  7599.         end
  7600.     end,
  7601.     onLoad = false
  7602. },
  7603. ["Rat_Bag_Button_DealAll"] = {
  7604.     BIND_OBJECT_GUID = 'd52985',
  7605.     Parameters = {
  7606.         function_owner = nil,
  7607.         label = 'Deal All',
  7608.         position = {0,0.1,1.5},
  7609.         rotation = {0,180,0},
  7610.         height = 100,
  7611.         width = 600,
  7612.         alignment = 3,
  7613.         font_size = 100
  7614.     },
  7615.     callback = function()
  7616.         for _, seatedPlayerColor in pairs(getSeatedPlayers()) do
  7617.             components.giveFood("Rat", seatedPlayerColor)
  7618.         end
  7619.     end,
  7620.     onLoad = false
  7621. },
  7622. ["Worm_Bag_Button_Take"] = {
  7623.     BIND_OBJECT_GUID = '41fda6',
  7624.     Parameters = {
  7625.         function_owner = nil,
  7626.         label = 'Take',
  7627.         position = {0,0.1,-1.5},
  7628.         rotation = {0,180,0},
  7629.         height = 100,
  7630.         width = 600,
  7631.         alignment = 3,
  7632.         font_size = 100
  7633.     },
  7634.     callback = function(objectButtonClicked, playerColorClicked)
  7635.         if(playerColorClicked != '') then
  7636.             components.giveFood("Worm", playerColorClicked)
  7637.         end
  7638.     end,
  7639.     onLoad = false
  7640. },
  7641. ["Worm_Bag_Button_DealAll"] = {
  7642.     BIND_OBJECT_GUID = '41fda6',
  7643.     Parameters = {
  7644.         function_owner = nil,
  7645.         label = 'Deal All',
  7646.         position = {0,0.1,1.5},
  7647.         rotation = {0,180,0},
  7648.         height = 100,
  7649.         width = 600,
  7650.         alignment = 3,
  7651.         font_size = 100
  7652.     },
  7653.     callback = function()
  7654.         for _, seatedPlayerColor in pairs(getSeatedPlayers()) do
  7655.             components.giveFood("Worm", seatedPlayerColor)
  7656.         end
  7657.     end,
  7658.     onLoad = false
  7659. },
  7660. ["Berry_Bag_Button_Take"] = {
  7661.     BIND_OBJECT_GUID = '66429a',
  7662.     Parameters = {
  7663.         function_owner = nil,
  7664.         label = 'Take',
  7665.         position = {0,0.1,-1.5},
  7666.         rotation = {0,180,0},
  7667.         height = 100,
  7668.         width = 600,
  7669.         alignment = 3,
  7670.         font_size = 100
  7671.     },
  7672.     callback = function(objectButtonClicked, playerColorClicked)
  7673.         if(playerColorClicked != '') then
  7674.             components.giveFood("Berry", playerColorClicked)
  7675.         end
  7676.     end,
  7677.     onLoad = false
  7678. },
  7679. ["Berry_Bag_Button_DealAll"] = {
  7680.     BIND_OBJECT_GUID = '66429a',
  7681.     Parameters = {
  7682.         function_owner = nil,
  7683.         label = 'Deal All',
  7684.         position = {0,0.1,1.5},
  7685.         rotation = {0,180,0},
  7686.         height = 100,
  7687.         width = 600,
  7688.         alignment = 3,
  7689.         font_size = 100
  7690.     },
  7691.     callback = function()
  7692.         for _, seatedPlayerColor in pairs(getSeatedPlayers()) do
  7693.             components.giveFood("Berry", seatedPlayerColor)
  7694.         end
  7695.     end,
  7696.     onLoad = false
  7697. },
  7698. ["Fish_Bag_Button_Take"] = {
  7699.     BIND_OBJECT_GUID = '78f55b',
  7700.     Parameters = {
  7701.         function_owner = nil,
  7702.         label = 'Take',
  7703.         position = {0,0.1,-1.5},
  7704.         rotation = {0,180,0},
  7705.         height = 100,
  7706.         width = 600,
  7707.         alignment = 3,
  7708.         font_size = 100
  7709.     },
  7710.     callback = function(objectButtonClicked, playerColorClicked)
  7711.         if(playerColorClicked != '') then
  7712.             components.giveFood("Fish", playerColorClicked)
  7713.         end
  7714.     end,
  7715.     onLoad = false
  7716. },
  7717. ["Fish_Bag_Button_DealAll"] = {
  7718.     BIND_OBJECT_GUID = '78f55b',
  7719.     Parameters = {
  7720.         function_owner = nil,
  7721.         label = 'Deal All',
  7722.         position = {0,0.1,1.5},
  7723.         rotation = {0,180,0},
  7724.         height = 100,
  7725.         width = 600,
  7726.         alignment = 3,
  7727.         font_size = 100
  7728.     },
  7729.     callback = function()
  7730.         for _, seatedPlayerColor in pairs(getSeatedPlayers()) do
  7731.             components.giveFood("Fish", seatedPlayerColor)
  7732.         end
  7733.     end,
  7734.     onLoad = false
  7735. },
  7736. ["Wheat_Bag_Button_Take"] = {
  7737.     BIND_OBJECT_GUID = 'b9fadf',
  7738.     Parameters = {
  7739.         function_owner = nil,
  7740.         label = 'Take',
  7741.         position = {0,0.1,-1.5},
  7742.         rotation = {0,180,0},
  7743.         height = 100,
  7744.         width = 600,
  7745.         alignment = 3,
  7746.         font_size = 100
  7747.     },
  7748.     callback = function(objectButtonClicked, playerColorClicked)
  7749.         if(playerColorClicked != '') then
  7750.             components.giveFood("Wheat", playerColorClicked)
  7751.         end
  7752.     end,
  7753.     onLoad = false
  7754. },
  7755. ["Wheat_Bag_Button_DealAll"] = {
  7756.     BIND_OBJECT_GUID = 'b9fadf',
  7757.     Parameters = {
  7758.         function_owner = nil,
  7759.         label = 'Deal All',
  7760.         position = {0,0.1,1.5},
  7761.         rotation = {0,180,0},
  7762.         height = 100,
  7763.         width = 600,
  7764.         alignment = 3,
  7765.         font_size = 100
  7766.     },
  7767.     callback = function()
  7768.         for _, seatedPlayerColor in pairs(getSeatedPlayers()) do
  7769.             components.giveFood("Wheat", seatedPlayerColor)
  7770.         end
  7771.     end,
  7772.     onLoad = false
  7773. },
  7774. ["Nectar_Bag_Button_Take"] = {
  7775.     BIND_OBJECT_GUID = '02c4c6',
  7776.     Parameters = {
  7777.         function_owner = nil,
  7778.         label = 'Take',
  7779.         position = {0,0.1,-1.5},
  7780.         rotation = {0,180,0},
  7781.         height = 100,
  7782.         width = 600,
  7783.         alignment = 3,
  7784.         font_size = 100
  7785.     },
  7786.     callback = function(objectButtonClicked, playerColorClicked)
  7787.         if(playerColorClicked != '') then
  7788.             components.giveFood("Nectar", playerColorClicked)
  7789.         end
  7790.     end,
  7791.     onLoad = false
  7792. },
  7793. ["Nectar_Bag_Button_DealAll"] = {
  7794.     BIND_OBJECT_GUID = '02c4c6',
  7795.     Parameters = {
  7796.         function_owner = nil,
  7797.         label = 'Deal All',
  7798.         position = {0,0.1,1.5},
  7799.         rotation = {0,180,0},
  7800.         height = 100,
  7801.         width = 600,
  7802.         alignment = 3,
  7803.         font_size = 100
  7804.     },
  7805.     callback = function()
  7806.         for _, seatedPlayerColor in pairs(getSeatedPlayers()) do
  7807.             components.giveFood("Nectar", seatedPlayerColor)
  7808.         end
  7809.     end,
  7810.     onLoad = false
  7811. },
  7812.  
  7813. ----        #include foodBags_button
  7814. ----        #include birdTray_button
  7815. ["BirdTry_Button_Refresh"] = {
  7816.     BIND_OBJECT_GUID = '73d70d',
  7817.     Parameters = {
  7818.         function_owner = nil,
  7819.         label = 'Refresh',
  7820.         position = {-1.9,0.1,0.8},
  7821.         rotation = {0,0,0},
  7822.         height = 3,
  7823.         width = 400,
  7824.         alignment = 3,
  7825.         font_size = 70
  7826.     },
  7827.     callback = function()
  7828.         birdTray.clear()
  7829.         Wait.time(function() birdTray.refill() end, 0.5)
  7830.     end,
  7831.     onLoad = false
  7832. },
  7833.  
  7834. ----        #include birdTray_button
  7835.     }
  7836. }
  7837.  
  7838. --[[Creates all user control buttons on the table]]
  7839. function userControls.onLoadButtons()
  7840.     for key, button in pairs(userControls.buttons) do
  7841.         if (gameState.currentState == 'Not Started') then
  7842.             if (button.onLoad) then
  7843.                 userControls.createButton(key)
  7844.             end
  7845.         elseif (gameState.currentState != 'Not Started' and gameState.currentState != 'End') then
  7846.             if (button.onLoad == false) then
  7847.                 userControls.createButton(key)
  7848.             end
  7849.         end
  7850.     end
  7851. end
  7852.  
  7853. function userControls.createButton(buttonName)
  7854.     userControls.createButton(buttonName, nil)
  7855. end
  7856.  
  7857. function userControls.createButton(buttonName, bindObject)
  7858.     local button = userControls.buttons[buttonName]
  7859.  
  7860.     if bindObject == nil then
  7861.         bindObject = button.BIND_OBJECT_GUID
  7862.     end
  7863.  
  7864.     local object = getObjectFromGUID(bindObject)
  7865.  
  7866.     if(object != nil) then
  7867.         if(button.callback != nil) then
  7868.             local ref = "referenceFunction_"..buttonName
  7869.             _G[ref] = button.callback
  7870.             button.Parameters.click_function = ref
  7871.         end
  7872.  
  7873.         object.createButton(button.Parameters)
  7874.     end
  7875.  
  7876. end
  7877.  
  7878. --[[Removes a button from the table]]
  7879. function userControls.removeButton(buttonName)
  7880.     if (userControls.buttons[buttonName] != nil) then
  7881.         buttonObject = getObjectFromGUID(userControls.buttons[buttonName].BIND_OBJECT_GUID)
  7882.  
  7883.         --[[check to see if it is already removed]]
  7884.         if (buttonObject != nil) then
  7885.             destroyObject(buttonObject)
  7886.         end
  7887.     end
  7888. end
  7889.  
  7890. ----#include controls/user_controls
  7891. ----#include events
  7892. function onPlayerTurn(playerColor)
  7893.     if(gameState.currentState != "Not Started" and gameState.currentState != "Loading" and gameState.currentState != "End") then
  7894.         birdTray.refill()
  7895.     end
  7896. end
  7897.  
  7898. ----#include events
  7899. ----#include gameState
  7900. gameState = {
  7901.     GAME_STATES = {"Not Started", "Round 1", "Round 2", "Round 3", "Round 4", "End"},
  7902.     currentState = "Not Started",
  7903.     currentRound = 0,
  7904.     OCEANIA_EXP = false
  7905. }
  7906.  
  7907. --[[Starts the game by dealing all of the components out to the players and cleans up the table]]
  7908. function gameState.start()
  7909.     local birdDeck = getObjectFromGUID(components.BIRD_DECK_GUID)
  7910.     local roundScordingDeck = getObjectFromGUID(components.ROUND_TOKEN_DECK_GUID)
  7911.     local bonusDeck = getObjectFromGUID(components.BONUS_DECK_GUID)
  7912.  
  7913.     --[[shuffle all decks]]
  7914.     birdDeck.shuffle()
  7915.     roundScordingDeck.shuffle()
  7916.     bonusDeck.shuffle()
  7917.  
  7918.     --[[Add menu context]]
  7919.     --[[components.addDiscardContext()]]
  7920.  
  7921.     --[[populate the bird tray]]
  7922.     birdTray.load()
  7923.  
  7924.     --[[Set round scoring]]
  7925.     scoreBoard.load()
  7926.  
  7927.     --[[Deal out the starting player hands]]
  7928.     birdDeck.deal(5)
  7929.     bonusDeck.deal(2)
  7930.  
  7931.     --[[Deal out the food to all players]]
  7932.     for _, playerColor in pairs(getSeatedPlayers()) do
  7933.         for food, foodBag in pairs(components.FOOD_BAG_GUIDS) do
  7934.             components.giveFood(food, playerColor)
  7935.         end
  7936.     end
  7937.  
  7938.     --[[Randomize the starting player]]
  7939.     players.randomizeStartingPlayer()
  7940.  
  7941.     --[[Roll the bird feeder]]
  7942.     birdFeeder.roll()
  7943.  
  7944.     --[[Destroy the user buttons]]
  7945.     userControls.removeButton("OceaniaExp_Button")
  7946.     userControls.removeButton("EuropeanExp_Button")
  7947.     userControls.removeButton("StartGame_Button")
  7948.  
  7949.     --[[remove round unused scoring deck]]
  7950.     components.trash({roundScordingDeck})
  7951.  
  7952.     --[[remove unseated player components]]
  7953.     players.removeUnsedPlayerBoards()
  7954.  
  7955.     --[[Reset the cubes on the player board]]
  7956.     players.clearAllBoards()
  7957.  
  7958.     --[[Loads the UI for the player boards]]
  7959.     players.loadBoardUI()
  7960.  
  7961.     --[[Setup end round button]]
  7962.     --userControls.createButton("RoundEnd_Button")
  7963.  
  7964.     --[[Setup bird tray refresh]]
  7965.     --userControls.createButton("BirdTry_Button_Refresh")
  7966.  
  7967.     --[[Promote all seated players]]
  7968.     players.promoteSeated()
  7969.  
  7970.     gameState.currentState = "Round 1"
  7971.     gameState.currentRound = 1
  7972.  
  7973.     --[[Loads all scripted buttons]]
  7974.     userControls.onLoadButtons()
  7975. end
  7976.  
  7977. --[[Triggers the end of round]]
  7978. function gameState.endRound()
  7979.     gameState.currentState = "Loading"
  7980.  
  7981.     gameState.currentRound = gameState.currentRound + 1
  7982.     gameState.currentState = gameState.GAME_STATES[gameState.currentRound + 1]
  7983.  
  7984.     if(gameState.currentState == "End") then
  7985.         getObjectFromGUID(userControls.buttons["RoundEnd_Button"].BIND_OBJECT_GUID).destruct()
  7986.  
  7987.         for _,seatedPlayerColor in pairs(getSeatedPlayers()) do
  7988.             local zone = getObjectFromGUID(players[seatedPlayerColor].BOARD_CALCULATION_ZONE_GUID)
  7989.  
  7990.             if(zone != nil) then
  7991.                 zone.destruct()
  7992.             end
  7993.         end
  7994.     else
  7995.         birdTray.load()
  7996.         players.clearAllBoards()
  7997.         players.removeRoundEndNector()
  7998.         players.nextPlayer()
  7999.         --birdFeeder.roll()
  8000.     end
  8001. end
  8002.  
  8003. ----#include gameState
  8004. ----#include keyBinding
  8005. keyBinding = {}
  8006.  
  8007. function keyBinding.load()
  8008.     addHotkey("SpawnEggs", spawnEgg)
  8009. end
  8010.  
  8011. function spawnEgg(player_color, hovered_object, world_position, key_down_up)
  8012.     components.getEgg(world_position)
  8013. end
  8014.  
  8015. ----#include keyBinding
  8016.  
  8017. ----#include debug
  8018. --[[
  8019. function testDeck(deck)
  8020.     local birdDeck = getObjectFromGUID(deck)
  8021.     local cards = birdDeck.getObjects()
  8022.     print(length(birdCardData))
  8023.  
  8024.     for _, c in pairs(cards) do
  8025.         print(c.name)
  8026.         if(birdCardData[c.name] == nil) then
  8027.             print(c.name)
  8028.             local s = {guid = c.guid, position = birdTray.DISCARD_POSITION}
  8029.             birdDeck.takeObject(s)
  8030.         end
  8031.     end
  8032. end
  8033.  
  8034. function scoreBoard.init()
  8035.     for _, round in pairs(scoreBoard.rounds) do
  8036.         round.scoringTokenZone.zone = spawnObject(round.scoringTokenZone.zoneParameters)
  8037.  
  8038.         for _, placement in pairs(round.placementZones) do
  8039.             placement.zone =  spawnObject(placement.zoneParameters)
  8040.         end
  8041.     end
  8042. end
  8043. ]]
  8044.  
  8045. function FindHiddenZone()
  8046.     for _,obj in ipairs(getAllObjects()) do
  8047.         if obj.tag == 'Fog' then
  8048.             print(obj.getGUID())
  8049.         end
  8050.     end
  8051. end
  8052.  
  8053. function PrintLocation(object)
  8054.     print(object.getPosition())
  8055. end
  8056.  
  8057. function CheckBonusValidation(birdCardName,bonusCardName)
  8058.     local birdCard = {}
  8059.     local deck = getObjectFromGUID(components.BIRD_DECK_GUID).getObjects()
  8060.  
  8061.     for _, card in pairs(deck) do
  8062.         if(card.name == birdCardName) then
  8063.             birdCard = card
  8064.             break;
  8065.         end
  8066.     end
  8067.  
  8068.     local bonusCard = {}
  8069.     for _, card in pairs(getObjectFromGUID(components.BONUS_DECK_GUID).getObjects()) do
  8070.         if(card.name == bonusCardName) then
  8071.             bonusCard = card
  8072.             break;
  8073.         end
  8074.     end
  8075.  
  8076.     print(birdCard.name)
  8077.     print(bonusCard.name)
  8078.  
  8079.     print(bonusCards.validate(bonusCard, birdCard))
  8080. end
  8081.  
  8082. function ShrinkPlayerZones()
  8083.     for _,seatedPlayerColor in pairs(players.TURN_ORDER) do
  8084.         local zone = getObjectFromGUID(players[seatedPlayerColor].BOARD_CALCULATION_ZONE_GUID)
  8085.  
  8086.         if(zone != nil) then
  8087.             zone.scale({x=1,y=0.1,z=1})
  8088.             zone.setPosition({x=zone.getPosition().x,y=1,z=zone.getPosition().z})
  8089.         end
  8090.     end
  8091. end
  8092.  
  8093. ----#include debug
  8094.  
  8095. --[[ The onLoad event is called after the game save finishes loading. --]]
  8096. function onLoad(script_state)
  8097.     if (script_state == nil or script_state == "" ) then
  8098.         --[[Makes the game random]]
  8099.         math.randomseed(os.time())
  8100.  
  8101.         --[[Returns all dice to the feeder]]
  8102.         birdFeeder.returnDice()
  8103.  
  8104.         --[[Creates the user buttons on the table]]
  8105.         userControls.onLoadButtons()
  8106.  
  8107.         --[[Loads key bindings]]
  8108.         keyBinding.load()
  8109.     else
  8110.         -- JSON decode our saved state
  8111.         local state = JSON.decode(script_state)
  8112.  
  8113.         if(state.currentState != nil) then
  8114.             gameState.currentState = state.currentState
  8115.         end
  8116.  
  8117.         if(state.currentRound != nil) then
  8118.             gameState.currentRound = state.currentRound
  8119.  
  8120.             --[[Re-loads the score board]]
  8121.             if(gameState.currentRound > 0) then
  8122.                 players.loadBoardUI()
  8123.             end
  8124.         end
  8125.  
  8126.         --[[Creates the user buttons on the table]]
  8127.         userControls.onLoadButtons()
  8128.  
  8129.         --[[Loads key bindings]]
  8130.         keyBinding.load()
  8131.     end
  8132.  
  8133.  
  8134.     --math.randomseed(os.time())
  8135.  
  8136.  
  8137.  
  8138.     --[[players.loadBoardUI() --[[testing]]
  8139.  
  8140.     --[[Wait.time(function() CheckBonusValidation("Wood Duck", "Photographer") end, 5)]]
  8141.  
  8142.     --return JSON.encode(gameState)
  8143. end
  8144.  
  8145.  
  8146. function onSave()
  8147.     local state = {
  8148.         currentState = gameState.currentState,
  8149.         currentRound = gameState.currentRound
  8150.     }
  8151.  
  8152.     return JSON.encode(state)
  8153. end
  8154.  
  8155.  
  8156. --[[ The onUpdate event is called once per frame. --]]
  8157. function onUpdate()
  8158.     --[[ print('onUpdate loop!') --]]
  8159.  
  8160.     --[[PrintLocation(getObjectFromGUID(oceaniaExp.REFERENCE_GUID))]]
  8161. end
  8162.  
  8163. ----#include scripts/global
Add Comment
Please, Sign In to add comment