Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ----#include scripts/global
- --[[File includes]]
- ----#include util
- --[[Gets the length of a table]]
- function length(T)
- local count = 0
- for _, v in pairs(T) do
- count = count + 1
- end
- return count
- end
- --[[Clones a tables contents]]
- function table.clone(org)
- return {table.unpack(org)}
- end
- --[[Sorts a table by value but retains the key]]
- --[[getKeysSortedByValue(items, function(a, b) return a < b end)]]
- function getKeysSortedByValue(tbl, sortFunction)
- local keys = {}
- for key in pairs(tbl) do
- table.insert(keys, key)
- end
- table.sort(keys, function(a, b)
- return sortFunction(tbl[a], tbl[b])
- end)
- return keys
- end
- ----#include util
- ----#include components
- components = {
- STARTING_PLAYER_TOKEN_GUID = '1b547b',
- FOOD_BAG_GUIDS = {
- ["Rat"] = 'd52985',
- ["Worm"] = '41fda6',
- ["Berry"] = '66429a',
- ["Fish"] = '78f55b',
- ["Wheat"] = 'b9fadf'
- },
- TRASH_BAG_GUID = '735e54',
- BIRD_DECK_GUID = '6bc66a',
- ROUND_TOKEN_DECK_GUID = 'a7990b',
- BONUS_DECK_GUID = '588f1a',
- EGG_BAG_GUID = '6ae6ed'
- }
- --[[Places items into the trash bag]]
- function components.trash(objects)
- local trashBag = getObjectFromGUID(components.TRASH_BAG_GUID)
- if(objects != nil or length(objects) != 0) then
- for _, object in pairs(objects) do
- trashBag.putObject(object)
- end
- end
- end
- --[[Gives food to a players bowl]]
- function components.giveFood(food, playerColor)
- local bag = getObjectFromGUID(components.FOOD_BAG_GUIDS[food])
- local playerBowl = getObjectFromGUID(players[playerColor].FOOD_BOWL_GUID)
- --[[randomly offset the food in the bowl]]
- local pos = playerBowl.getPosition()
- pos.y = pos.y + 1 + (math.random()*2)
- pos.x = (pos.x -1) + (math.random()*2)
- pos.z = (pos.z -1) + (math.random()*2)
- bag.takeObject({position = pos})
- end
- function components.getEgg(pos)
- local bag = getObjectFromGUID(components.EGG_BAG_GUID)
- bag.takeObject({position = pos})
- end
- function components.addDiscardContext()
- for _, bonusCard in pairs(getObjectFromGUID(components.BONUS_DECK_GUID).getObjects()) do
- print(bonusCard.name)
- --[[bonusCard.addContextMenuItem("Discard", function() print('Hey') end)]]
- end
- --[[
- local rat = getObjectFromGUID('17256b')
- rat.addContextMenuItem("Spend", function() components.trash({rat}) end)
- ]]
- end
- --[[function components.ratDealAll()
- for _, seatedPlayerColor in pairs(getSeatedPlayers()) do
- components.giveFood("Rat", seatedPlayerColor)
- end
- end]]
- ----#include components
- ----#include birdfeeder
- birdFeeder = {
- DICE_GUIDS = {'6629f9','145ea8','54a228','85d869','4d34f3'},
- FEEDER_ZONE_GUID = 'c701ba',
- REMOVED_ZONE_GUID = '5196f0',
- DICE_FEEDER_POSITIONS = {
- {-4.613993,1.29,7.95},
- {-3.613993,1.29,7.95},
- {-2.613993,1.29,7.95},
- {-1.613993,1.29,7.95},
- {-0.613993,1.29,7.95}
- },
- DICE_FEEDER_REMOVED_POSITIONS = {
- {1.61,1.29,8.01},
- {2.61,1.29,8.01},
- {1.61,1.29,7.00},
- {2.61,1.29,7.00},
- {2.11,1.29,9.02}
- }
- }
- --[[Moves all the dice back to the bird feeder]]
- function birdFeeder.returnDice(instant)
- for key, dieGuid in pairs(birdFeeder.DICE_GUIDS) do
- local d = getObjectFromGUID(dieGuid)
- if instant == nil or instant then
- d.setPosition(birdFeeder.DICE_FEEDER_POSITIONS[key])
- else
- d.setPositionSmooth(birdFeeder.DICE_FEEDER_POSITIONS[key],false,false)
- end
- end
- end
- --[[Rolls all of the dice that are currently in the bird feeder]]
- function birdFeeder.roll()
- broadcastToAll('Rolling Feeder', {1,0,0})
- birdFeeder.returnDice()
- Wait.time(function()
- local feederZone = getObjectFromGUID(birdFeeder.FEEDER_ZONE_GUID)
- if(feederZone.getObjects() != nil) then
- for k,v in pairs(feederZone.getObjects() ) do
- if v.getName() == 'Food' then
- v.roll()
- end
- end
- end
- end, 0.2)
- Wait.time(function() birdFeeder.returnDice(false) end, 3)
- end
- --[[Rolls all the dice that are not in the bird feeder]]
- --[[Moves the die to the removed section]]
- function birdFeeder.rollRemoved()
- broadcastToAll('Rolling Outside Feeder', {1,0,0})
- local diceNotInFeeder = table.clone(birdFeeder.DICE_GUIDS)
- local feederZone = getObjectFromGUID(birdFeeder.FEEDER_ZONE_GUID)
- --[[Get all dice that are not in the bird feeder]]--
- --[[Can be anywhere on the table]]
- if(feederZone.getObjects() != nil) then
- for _,v in pairs(feederZone.getObjects() ) do
- --[[Ensures that it is a food die]]
- if v.getName() == 'Food' then
- for key,value in pairs(diceNotInFeeder) do
- if v.getGUID() == value then
- table.remove(diceNotInFeeder, key)
- break
- end
- end
- end
- end
- end
- local count = 1
- --[[Rolls the dice not in the feeder]]
- --[[Moves them to the removed feeder area]]
- for _, dieGuid in pairs(diceNotInFeeder) do
- local die = getObjectFromGUID(dieGuid)
- local c = count
- die.setPosition(birdFeeder.DICE_FEEDER_REMOVED_POSITIONS[count])
- die.roll()
- Wait.time(function() die.setPositionSmooth(birdFeeder.DICE_FEEDER_REMOVED_POSITIONS[c],false,false) end, 2)
- count = count +1
- end
- end
- ----#include birdfeeder
- ----#include birdTray
- birdTray = {
- DISCARD_POSITION = {-0.06,2.39,-0.08},
- placements = {
- {
- position = {-7.82,1.39,-0.08},
- zone = '55b191'
- },
- {
- position = {-5.23,1.39,-0.08},
- zone = '3ce88a'
- },
- {
- position = {-2.64,1.39,-0.08},
- zone = '4d306c'
- }
- }
- }
- --[[Loads the bird cards into the bird tray]]
- function birdTray.load()
- --[[Remove all objects and place in discard]]--
- birdTray.clear()
- --[[Deal cards to a tray]]
- Wait.time(function() birdTray.refill() end, 0.5) --[[need to wait for animations]]
- end
- --[[Clears all cards from the bird tray]]
- function birdTray.clear()
- for _, placement in pairs(birdTray.placements) do
- local zone = getObjectFromGUID(placement.zone)
- local objects = zone.getObjects()
- --[[Remove all objects and place in discard]]--
- if(objects != nil) then
- for _, object in pairs(objects) do
- birdTray.discard(object)
- end
- end
- end
- end
- --[[Refills the empty placements in the bird tray]]
- function birdTray.refill()
- local birdDeck = getObjectFromGUID(components.BIRD_DECK_GUID)
- for _, placement in pairs(birdTray.placements) do
- local zone = getObjectFromGUID(placement.zone)
- if(zone == nil) then return end
- local objects = zone.getObjects()
- local cardFound = false
- if(objects != nil) then
- for _, object in pairs(objects) do
- if object.name == 'Card' then
- cardFound = true
- break
- end
- end
- end
- if cardFound == false then
- birdDeck.takeObject({position = placement.position, flip = true })
- end
- end
- end
- --[[Discards a card to the correct discard pile]]
- function birdTray.discard(card)
- if card.name == 'Card' then
- --[[will need to detect if it is a bird or another card]]
- --[[Always flip card]]
- card.setRotationSmooth({0,0,180},false,false)
- --[[Move card to discard]]
- card.setPositionSmooth(birdTray.DISCARD_POSITION, false, false)
- end
- end
- ----#include birdTray
- ----#include scoreBoard
- scoreBoard = {
- rounds = {
- ["Round 1"] = {
- position = {9.09,1.29,7.16},
- placementZones = {
- ["First"] = {
- VP = {4,2,1,1,1},
- zone = 'd2f6c1'
- },
- ["Second"] = {
- VP = {1,0,0,0,0},
- zone = '01dd47'
- },
- ["Third"] = {
- VP = {0,0,0,0,0},
- zone = '1231bc'
- },
- ["Forth"] = {
- VP = {0,0,0,0,0},
- zone = '60c001'
- },
- },
- scoringTokenZone = {
- zone = '649bd6'
- }
- },
- ["Round 2"] = {
- position = {8.05,1.29,7.16},
- placementZones = {
- ["First"] = {
- VP = {5,4,2,2,1},
- zone = '9ec2da'
- },
- ["Second"] = {
- VP = {2,1,1,0,0},
- zone = '6d0305'
- },
- ["Third"] = {
- VP = {1,0,0,0,0},
- zone = 'ed8fc5'
- },
- ["Forth"] = {
- VP = {0,0,0,0,0},
- zone = 'f6ba47'
- },
- },
- scoringTokenZone = {
- zone = '49857f'
- }
- },
- ["Round 3"] = {
- position = {7.00,1.29,7.16},
- placementZones = {
- ["First"] = {
- VP = {6,4,3,2,2},
- zone = 'e754fb'
- },
- ["Second"] = {
- VP = {3,2,1,1,0},
- zone = 'a14624'
- },
- ["Third"] = {
- VP = {2,1,0,0,0},
- zone = 'd477a2'
- },
- ["Forth"] = {
- VP = {0,0,0,0,0},
- zone = 'a9c44d'
- },
- },
- scoringTokenZone = {
- zone = '245cb6'
- }
- },
- ["Round 4"] = {
- position = {5.97,1.29,7.16},
- placementZones = {
- ["First"] = {
- VP = {7,5,4,3,2},
- zone = '7ca792'
- },
- ["Second"] = {
- VP = {4,3,2,1,1},
- zone = '97a2e1'
- },
- ["Third"] = {
- VP = {3,1,1,0,0},
- zone = 'b2bd0c'
- },
- ["Forth"] = {
- VP = {0,0,0,0,0},
- zone = '2e2004'
- },
- },
- scoringTokenZone = {
- zone = '99efc0'
- }
- }
- }
- }
- --[[Loads the score board with token tiles]]
- function scoreBoard.load()
- local tokenDeck = getObjectFromGUID(components.ROUND_TOKEN_DECK_GUID)
- if(tokenDeck != nil) then
- for _, round in pairs(scoreBoard.rounds) do
- tokenDeck.takeObject({
- position = round.position,
- callback_function = function(obj)
- --[[50% chance that it'll flip the tile each game]]
- if math.random() <= 0.5 then
- obj.flip()
- end
- --[[Locks the tiles after they are set]]
- Wait.time(function() obj.setLock(true) end, 1)
- end
- })
- end
- end
- end
- function scoreBoard.calculateScore(playerColor)
- local roundScore = 0
- for _, round in pairs(scoreBoard.rounds) do
- for _, placement in pairs(round.placementZones) do
- local zone = getObjectFromGUID(placement.zone)
- local colorCubeFound = false
- local cubeCount = 0
- for _, object in pairs(zone.getObjects()) do
- local name = object.getName()
- if(string.match(object.getName(),'Cube')) then
- if(object.getName() == playerColor..' Cube' ) then
- colorCubeFound = true
- end
- cubeCount = cubeCount + 1
- end
- end
- --[[Only score once in a round]]
- if colorCubeFound then
- roundScore = roundScore + placement.VP[cubeCount]
- break
- end
- end
- end
- return roundScore
- end
- ----#include scoreBoard
- ----#include players/player
- players = {
- ---- #include blue_player
- ["Blue"] = {
- STARTING_TOKEN_POSITION = {6.87,2,12.93},
- BOARD_ZONE_GUID = 'e488e6',
- PLAY_AREA_ZONE_GUID = 'bae144',
- FOOD_BOWL_GUID = '5ad395',
- BOARD_GUID = '86c4fb',
- BOARD_CALCULATION_GUID = 'c03432',
- BOARD_CALCULATION_ZONE_GUID = 'c2a67c',
- BOARD_NECTOR_CALCULATION_ZONE_GUID = {'14b4e4','52cae3','495f1a'},
- CUBE_POSITIONS = {
- {4.14,1.12,15.84},
- {4.60,1.12,15.84},
- {4.14,1.12,15.39},
- {4.60,1.12,15.39},
- {4.14,1.12,14.50},
- {4.14,1.12,14.95},
- {4.60,1.12,14.95},
- {4.60,1.12,14.50}
- },
- BOARD_ROTATION = {180,180,0}
- },
- ---- #include blue_player
- ---- #include green_player
- ["Green"] = {
- STARTING_TOKEN_POSITION = {-20.57,2,12.95},
- BOARD_ZONE_GUID = 'f9358b',
- PLAY_AREA_ZONE_GUID = '523b04',
- FOOD_BOWL_GUID = '3d7497',
- BOARD_GUID = 'd3ad97',
- BOARD_CALCULATION_GUID = '0a418e',
- BOARD_CALCULATION_ZONE_GUID = '5690c4',
- BOARD_NECTOR_CALCULATION_ZONE_GUID = {'9c2813','c17038','cc69ef'},
- CUBE_POSITIONS = {
- {-22.56,1.12,16.23},
- {-22.56,1.12,15.77},
- {-22.11,1.12,16.23},
- {-22.11,1.12,15.77},
- {-22.56,1.12,14.86},
- {-22.56,1.12,15.31},
- {-22.11,1.12,15.31},
- {-22.11,1.12,14.86}
- },
- BOARD_ROTATION = {180,180,0}
- },
- ---- #include green_player
- ---- #include purple_player
- ["Purple"] = {
- STARTING_TOKEN_POSITION = {13.33,2,6.68},
- BOARD_ZONE_GUID = 'b7061e',
- PLAY_AREA_ZONE_GUID = 'ba2e2d',
- FOOD_BOWL_GUID = 'cba52c',
- BOARD_GUID = 'a4346b',
- BOARD_CALCULATION_GUID = '0cdbbd',
- BOARD_CALCULATION_ZONE_GUID = '21594e',
- BOARD_NECTOR_CALCULATION_ZONE_GUID = {'c2490a','7e07af','4f4ded'},
- CUBE_POSITIONS = {
- {15.02,1.12,8.83},
- {15.02,1.12,8.37},
- {15.47,1.12,8.83},
- {15.47,1.12,8.37},
- {15.94,1.12,8.37},
- {15.94,1.12,8.83},
- {16.39,1.12,8.37},
- {16.39,1.12,8.83}
- },
- BOARD_ROTATION = {180,270,0}
- },
- ---- #include purple_player
- ---- #include yellow_player
- ["Yellow"] = {
- STARTING_TOKEN_POSITION = {-13.55,2,-6.21},
- BOARD_ZONE_GUID = '38e5d8',
- PLAY_AREA_ZONE_GUID = 'd5f13a',
- FOOD_BOWL_GUID = '3e2578',
- BOARD_GUID = '11c94a',
- BOARD_CALCULATION_GUID = '86a61a',
- BOARD_CALCULATION_ZONE_GUID = 'e06a0a',
- BOARD_NECTOR_CALCULATION_ZONE_GUID = {'847641','c1daaf','9adc19'},
- CUBE_POSITIONS = {
- {-15.82,1.12,-8.50},
- {-15.37,1.12,-8.50},
- {-16.29,1.12,-8.05},
- {-15.83,1.12,-8.05},
- {-15.28,1.12,-8.05},
- {-16.29,1.12,-8.50},
- {-16.75,1.12,-8.05},
- {-16.75,1.12,-8.51}
- },
- BOARD_ROTATION = {180,90,0}
- },
- ---- #include yellow_player
- ---- #include white_player
- ["White"] = {
- STARTING_TOKEN_POSITION = {5.48,2,-12.05},
- BOARD_ZONE_GUID = '6b15a4',
- PLAY_AREA_ZONE_GUID = '58ef8d',
- FOOD_BOWL_GUID = '2ea02a',
- BOARD_GUID = 'b16643',
- BOARD_CALCULATION_GUID = 'fcbcaf',
- BOARD_CALCULATION_ZONE_GUID = '54a7cc',
- BOARD_NECTOR_CALCULATION_ZONE_GUID = {'ad2371','735094','f02fb0'},
- CUBE_POSITIONS = {
- {7.34,1.12,-13.69},
- {7.80,1.12,-13.69},
- {7.34,1.12,-14.59},
- {7.80,1.12,-14.59},
- {7.34,1.12,-14.15},
- {7.80,1.12,-14.15},
- {7.34,1.12,-15.04},
- {7.80,1.12,-15.04}
- },
- BOARD_ROTATION = {180,0,0}
- },
- ---- #include white_player
- }
- players.TURN_ORDER = {'White','Yellow','Green','Blue', 'Purple'}
- players.startingPlayerColor = nil
- players.UI_UPDATE_DELAY = 1
- --[[Promotes all seated players in the game]]
- function players.promoteSeated()
- for _, seatedPlayerColor in pairs(getSeatedPlayers()) do
- if (Player[seatedPlayerColor].promoted != true and Player[seatedPlayerColor].admin == false) then
- Player[seatedPlayerColor].promoted = true
- end
- end
- end
- --[[Removes all of the unused player board and tokens]]
- function players.removeUnsedPlayerBoards()
- for _, playerColor in pairs(players.TURN_ORDER) do
- local playerIsSeated = false
- for key,seatedPlayerColor in pairs(getSeatedPlayers()) do
- if playerColor == seatedPlayerColor then
- playerIsSeated = true
- break
- end
- end
- if not playerIsSeated then
- players.removePlayer(playerColor)
- end
- end
- end
- --[[Removes a specific players board and tokens]]
- function players.removePlayer(playerColor)
- local objectsToRemove = {}
- local objects = getObjectFromGUID(players[playerColor].PLAY_AREA_ZONE_GUID).getObjects()
- for _, deleteObject in pairs(objects) do
- if string.match(deleteObject.getName(), playerColor) then
- table.insert(objectsToRemove, deleteObject)
- end
- end
- --[[remove player zone]]
- getObjectFromGUID(players[playerColor].BOARD_CALCULATION_ZONE_GUID).destruct()
- components.trash(objectsToRemove)
- end
- --[[Sets the starting player token beside the player board]]
- function players.setStatingToken(playerColor)
- local token = getObjectFromGUID(components.STARTING_PLAYER_TOKEN_GUID)
- token.setPositionSmooth(players[playerColor].STARTING_TOKEN_POSITION, false, false)
- end
- --[[Randomizes the starting player and sets the first player token]]
- function players.randomizeStartingPlayer()
- if Turns.enable == false then
- Turns.enable = true
- end
- local seatedPlayers = getSeatedPlayers()
- local count = length(seatedPlayers)
- players.startingPlayerColor = seatedPlayers[math.random(1,count)]
- if Turns.turn_color != startingPlayerColor then
- Turns.turn_color = startingPlayerColor
- end
- players.setStatingToken(players.startingPlayerColor)
- end
- --[[Move the starting player token to the next player]]
- function players.nextPlayer()
- local currentStartingPlayerColor = startingPlayerColor
- local position = 1
- for key, playerColor in pairs(players.TURN_ORDER) do
- if(playerColor == currentStartingPlayerColor) then
- position = key
- break;
- end
- end
- repeat
- position = position + 1
- if position > length(players.TURN_ORDER) then
- position = 1
- end
- local activePlayer = false
- for _, playerColor in pairs(getSeatedPlayers()) do
- if players.TURN_ORDER[position] == playerColor then
- activePlayer = true
- break
- end
- end
- until(activePlayer == true)
- players.startingPlayerColor = players.TURN_ORDER[position]
- Turns.turn_color = players.startingPlayerColor
- players.setStatingToken(players.startingPlayerColor)
- end
- --[[Clears all player boards of cubes]]
- function players.clearAllBoards()
- for _, playerColor in pairs(getSeatedPlayers()) do
- players.clearBoard(playerColor)
- end
- end
- --[[Clears the player board of cubes]]
- function players.clearBoard(playerColor)
- local cubes = {}
- --[[Get all the cubes on the player board]]
- for _, object in pairs(getObjectFromGUID(players[playerColor].PLAY_AREA_ZONE_GUID).getObjects()) do
- if(string.match(object.getName(),'Cube')) then
- table.insert(cubes, object)
- end
- end
- --[[Moves all of the player cubes to the default location]]
- for key, cube in pairs(cubes) do
- if(string.match(cube.getName(),playerColor)) then
- cube.setPositionSmooth(players[playerColor].CUBE_POSITIONS[key], false, false)
- end
- end
- end
- --[[displays the labels for the player boards]]
- function players.loadBoardUI()
- --[[Only seated players?]]
- --[[for _, playerColor in pairs(getSeatedPlayers()) do]]
- --[[Loads the score tracker beside the player board]]
- for _, playerColor in pairs(getSeatedPlayers()) do
- --[[for _, playerColor in pairs(players.TURN_ORDER) do --[[Testing only]]
- local playerBoardGuid = players[playerColor].BOARD_CALCULATION_GUID
- userControls.createButton("Bird_Count_Label", playerBoardGuid)
- userControls.createButton("Egg_Count_Label", playerBoardGuid)
- userControls.createButton("Cashed_Food_Count_Label", playerBoardGuid)
- userControls.createButton("Tucked_Cards_Count_Label", playerBoardGuid)
- userControls.createButton("Bonus_Cards_Count_Label", playerBoardGuid)
- userControls.createButton("Round_Scoring_Count_Label", playerBoardGuid)
- userControls.createButton("Nector_Scoring_Count_Label", playerBoardGuid)
- userControls.createButton("Total_Count_Label", playerBoardGuid)
- end
- local ref = "referenceTimer_".."UIScoringTimer"
- _G[ref] = function() players.playerBoardUIUpdate() end
- Timer.create({
- identifier="UIScoringTimer",
- function_name=ref,
- function_owner=Global,
- repetitions=0,
- delay=players.UI_UPDATE_DELAY
- })
- end
- --[[Triggers to update the player board UI]]
- function players.playerBoardUIUpdate()
- --[[Get all seated players in the game]]
- local nectarVP = nil
- for _, playerColor in pairs(getSeatedPlayers()) do
- --[[for _, playerColor in pairs(players.TURN_ORDER) do --[[Testing only]]
- local counts = {
- birdVP = 0,
- egg = 0,
- cached = 0,
- tucked = 0,
- round = 0,
- bonus = 0,
- nector = 0
- }
- --[[Counts the round scores]]
- counts.round = scoreBoard.calculateScore(playerColor)
- --[[Gets the bonus cards in the players hand]]
- local playerBonusCards = bonusCards.getFromHand(playerColor)
- --[[Counts eggs, tucked cards, bird VP, and cached food]]
- for _, object in pairs(getObjectFromGUID(players[playerColor].BOARD_ZONE_GUID).getObjects()) do
- --[[Check bird cards]]
- if (object.name == "Card" or object.name == "CardCustom") then
- local card = birdCards.getData(object)
- if (card != nil) then
- counts.birdVP = counts.birdVP + card.VP
- --[[Check the bonus cards to see if this bird is valid]]
- for _, bonus in pairs(playerBonusCards) do
- if (bonusCards.validate(bonus.bonusCard, card)) then
- bonus.validCount = bonus.validCount + 1
- end
- end
- end
- elseif (object.name == "Deck") then
- --[[Counts tucked cards]]
- counts.tucked = counts.tucked + (object.getQuantity() - 1)
- --[[Gets the bottom card (faced up, to score VP's)]]
- local card = birdCards.getDataByName(object.getObjects()[object.getQuantity()].name)
- if (card != nil) then
- counts.birdVP = counts.birdVP + card.VP
- --[[Check the bonus cards to see if this bird is valid]]
- for _, bonus in pairs(playerBonusCards) do
- if (bonusCards.validate(bonus.bonusCard, card)) then
- bonus.validCount = bonus.validCount + 1
- end
- end
- end
- else
- local objectName = object.getName()
- if(objectName == "Egg") then
- counts.egg = counts.egg + 1
- elseif (objectName == "Berry" or objectName == "Rat" or objectName == "Fish" or objectName == "Worm" or objectName == "Wheat") then
- if(object.name == "Custom_Token_Stack") then
- counts.cached = counts.cached + object.getQuantity()
- else
- counts.cached = counts.cached + 1
- end
- end
- end
- end
- --[[Update bonus scores]]
- for _, bonus in pairs(playerBonusCards) do
- if(bonus.validCount > 0) then
- counts.bonus = counts.bonus + bonusCards.getScoring(bonus.bonusCard, bonus.validCount)
- end
- end
- --[[Update for Nector]]
- if gameState.OCEANIA_EXP == true then
- --[[Only call once per calcuation]]
- if nectarVP == nil then
- nectorVP = players.calcualteNector()
- end
- counts.nector = nectorVP[playerColor]
- end
- players.updateBoardUI(playerColor, counts)
- end
- end
- function players.removeRoundEndNector()
- for _, playerColor in pairs(getSeatedPlayers()) do
- --[[for _, playerColor in pairs(players.TURN_ORDER) do]]
- --[[ players[playerColor].PLAY_AREA_ZONE_GUID ]]
- --[[ players[playerColor].BOARD_ZONE_GUID ]]
- local playerNector = {}
- --[[Gets nector in players area]]
- for _, object in pairs(getObjectFromGUID(players[playerColor].PLAY_AREA_ZONE_GUID).getObjects()) do
- if(string.match(object.getName(),'Nectar')) then
- table.insert(playerNector, object)
- end
- end
- --[[Removes nector in player board area]]
- for _, object in pairs(getObjectFromGUID(players[playerColor].BOARD_ZONE_GUID).getObjects()) do
- if(string.match(object.getName(),'Nectar')) then
- local nectorGUID = object.getGUID()
- for key, value in pairs(playerNector) do
- if (value.getGUID() == nectorGUID) then
- table.remove(playerNector, key)
- break;
- end
- end
- end
- end
- components.trash(playerNector)
- end
- end
- function players.calcualteNector()
- local nectorPoints_first = {5,2,1,1,1}
- local nectorPoints_second = {2,1,0,0,0}
- local playerVP = {}
- --[[Loop through Forest, Grass, Water]]
- for habitatLocation = 1, 3, 1
- do
- local playerPoints = {}
- local nectarCounts = {}
- for _, playerColor in pairs(getSeatedPlayers()) do
- --[[for _, playerColor in pairs(players.TURN_ORDER) do]]
- local NectorZoneGuid = players[playerColor].BOARD_NECTOR_CALCULATION_ZONE_GUID[habitatLocation]
- nectarCounts[playerColor] = 0
- playerPoints[playerColor] = 0
- --[[Counts all the nectors on the player board in a habitat]]
- for _, object in pairs(getObjectFromGUID(NectorZoneGuid).getObjects()) do
- if(string.match(object.getName(),'Nectar')) then
- if(object.name == "Custom_Token_Stack") then
- nectarCounts[playerColor] = nectarCounts[playerColor] + object.getQuantity()
- else
- nectarCounts[playerColor] = nectarCounts[playerColor] + 1
- end
- end
- end
- end
- --[[Sort the counts]]
- sortedNectarCounts = getKeysSortedByValue(nectarCounts, function(a, b) return a > b end)
- --[[Detrmine 1st and 2nd place, with ties]]
- local firstPlace = {}
- local secondPlace = {}
- local previousCount = nil
- local isFirst = true
- for _, key in pairs(sortedNectarCounts) do
- if isFirst and (previousCount == nil or previousCount == nectarCounts[key]) then
- table.insert(firstPlace, key)
- elseif isFirst and previousCount != nil then
- isFirst = false
- previousCount = nil
- end
- if isFirst == false and (previousCount == nil or previousCount == nectarCounts[key]) then
- table.insert(secondPlace, key)
- elseif isFirst == false and previousCount > nectarCounts[key] then
- break
- end
- --[[set previousPlayer]]
- previousCount = nectarCounts[key]
- end
- for k,v in pairs(firstPlace) do
- if playerVP[v] == nil then
- playerVP[v] = 0
- end
- if nectarCounts[v] > 0 then
- playerVP[v] = playerVP[v] + nectorPoints_first[length(firstPlace)]
- end
- end
- for k,v in pairs(secondPlace) do
- if playerVP[v] == nil then
- playerVP[v] = 0
- end
- if nectarCounts[v] > 0 then
- playerVP[v] = playerVP[v] + nectorPoints_second[length(secondPlace)]
- end
- end
- end
- --[[
- for key, value in pairs(playerVP) do
- print(key .. " - " .. value)
- end --[[DEBUG]]
- return playerVP
- end
- function players.updateBoardUI(playerColor, counts)
- local playerBoard = getObjectFromGUID(players[playerColor].BOARD_CALCULATION_GUID)
- playerBoard.editButton({index = userControls.buttons["Egg_Count_Label"].INDEX,
- label="Eggs: "..counts.egg})
- playerBoard.editButton({index = userControls.buttons["Cashed_Food_Count_Label"].INDEX,
- label="Cached Food: "..counts.cached})
- playerBoard.editButton({index = userControls.buttons["Bird_Count_Label"].INDEX,
- label="Bird VP: "..counts.birdVP})
- playerBoard.editButton({index = userControls.buttons["Tucked_Cards_Count_Label"].INDEX,
- label="Tucked Cards: "..counts.tucked})
- playerBoard.editButton({index = userControls.buttons["Bonus_Cards_Count_Label"].INDEX,
- label="Bonus VP: "..counts.bonus})
- playerBoard.editButton({index = userControls.buttons["Round_Scoring_Count_Label"].INDEX,
- label="Round VP: "..counts.round})
- if gameState.OCEANIA_EXP == true then
- playerBoard.editButton({index = userControls.buttons["Nector_Scoring_Count_Label"].INDEX,
- label="Nectar VP: "..counts.nector})
- end
- playerBoard.editButton({index = userControls.buttons["Total_Count_Label"].INDEX,
- label="Final Score: "..(counts.egg + counts.tucked + counts.cached + counts.birdVP + counts.round + counts.bonus + counts.nector)})
- end
- ----#include players/player
- ----#include decks/europeanExp
- europeanExp = {
- BONUS_DECK_GUID = '20e26c',
- BIRD_DECK_GUID = 'f8f276',
- ROUND_TOKENS_GUID = '0afd57',
- BAG_GUID = '315a33'
- }
- --[[Loads the european exp on the table]]
- function europeanExp.load()
- local bag = getObjectFromGUID(europeanExp.BAG_GUID)
- local birdDeck = getObjectFromGUID(components.BIRD_DECK_GUID)
- local bonusDeck = getObjectFromGUID(components.BONUS_DECK_GUID)
- local scoringDeck = getObjectFromGUID(components.ROUND_TOKEN_DECK_GUID)
- --[[Birds]]
- europeanExp.takeEuropeanExpObjectFromBag(bag,birdDeck,europeanExp.BIRD_DECK_GUID,2)
- --[[Bonus]]
- europeanExp.takeEuropeanExpObjectFromBag(bag,bonusDeck,europeanExp.BONUS_DECK_GUID,2)
- --[[Scores]]
- europeanExp.takeEuropeanExpObjectFromBag(bag,scoringDeck,europeanExp.ROUND_TOKENS_GUID,0)
- --[[Removes the button after clicked]]
- getObjectFromGUID(userControls.buttons["EuropeanExp_Button"].BIND_OBJECT_GUID).destruct()
- end
- --[[Take the components from the expantion bag]]
- function europeanExp.takeEuropeanExpObjectFromBag(bagObject, destinationObject, sourceGUID, yOffset)
- if yOffset == nil then
- yOffset = 0
- end
- bagObject.takeObject({
- guid = sourceGUID,
- position = {
- destinationObject.getPosition().x,
- destinationObject.getPosition().y + yOffset,
- destinationObject.getPosition().z
- },
- rotation={180,0,0},
- callback_function = function(obj)
- group({destinationObject, getObjectFromGUID(sourceGUID)})
- destinationObject.shuffle()
- end
- })
- end
- ----#include decks/europeanExp
- ----#include decks/oceaniaExp
- oceaniaExp = {
- BONUS_DECK_GUID = '50817a',
- BIRD_DECK_GUID = 'fb1538',
- ROUND_TOKENS_GUID = 'e75d74',
- NECTAR_BAG_GUID = '02c4c6',
- BAG_GUID = '1e2c52',
- DICE_GUIDS = {'dafb10','7cb6b4','901918','e32a3a','d416c7'},
- PLAYER_BOARD_GUIDS = {'d68d10','2de925','c219a4','f92aa8','5d31e6'},
- REFERENCE_GUID = 'a66391'
- }
- --[[Loads the european exp on the table]]
- function oceaniaExp.load()
- local bag = getObjectFromGUID(oceaniaExp.BAG_GUID)
- --[[Birds]]
- local birdDeck = getObjectFromGUID(components.BIRD_DECK_GUID)
- oceaniaExp.takeOceaniaExpObjectFromBag(bag,birdDeck,oceaniaExp.BIRD_DECK_GUID,2)
- --[[Bonus]]
- local bonusDeck = getObjectFromGUID(components.BONUS_DECK_GUID)
- oceaniaExp.takeOceaniaExpObjectFromBag(bag,bonusDeck,oceaniaExp.BONUS_DECK_GUID,2)
- --[[Scores]]
- local scoringDeck = getObjectFromGUID(components.ROUND_TOKEN_DECK_GUID)
- oceaniaExp.takeOceaniaExpObjectFromBag(bag,scoringDeck,oceaniaExp.ROUND_TOKENS_GUID,0)
- --[[Nectar Bag]]
- local nectarBagLocation = {1.470127,0.943,4.138735}
- oceaniaExp.takeOceaniaExpObjectFromBagByLocation(bag,nectarBagLocation,oceaniaExp.NECTAR_BAG_GUID,0,true)
- --[[Add Bag to food list]]
- components.FOOD_BAG_GUIDS["Nectar"] = oceaniaExp.NECTAR_BAG_GUID
- userControls.createButton("Nectar_Bag_Button_Take")
- userControls.createButton("Nectar_Bag_Button_DealAll")
- --[[Reference Card]]
- local referenceCardLocation = {-10.445329,1,-4.652026}
- oceaniaExp.takeOceaniaExpObjectFromBagByLocation(bag,referenceCardLocation,oceaniaExp.REFERENCE_GUID,0,true,{180,0,0})
- --[[Dice]]
- --[[Remove all dice]]
- for key, dieGuid in pairs(birdFeeder.DICE_GUIDS) do
- components.trash({getObjectFromGUID(dieGuid)})
- end
- --[[Replace dice guids in feeder]]
- birdFeeder.DICE_GUIDS = oceaniaExp.DICE_GUIDS
- --[[Take the Dice from the bag]]
- for k,v in pairs(birdFeeder.DICE_FEEDER_POSITIONS) do
- oceaniaExp.takeOceaniaExpObjectFromBagByLocation(bag,v,oceaniaExp.DICE_GUIDS[k],0,false)
- end
- --[[Player Boards]]
- local playerCount = 1
- for k, p in pairs(players.TURN_ORDER) do
- local boardLocation = getObjectFromGUID(players[p].BOARD_GUID).getPosition();
- components.trash({getObjectFromGUID(players[p].BOARD_GUID)})
- oceaniaExp.takeOceaniaExpObjectFromBagByLocation(bag, boardLocation,oceaniaExp.PLAYER_BOARD_GUIDS[playerCount],0,true,players[p].BOARD_ROTATION, p .. " Board")
- playerCount=playerCount+1
- end
- --[[Sets the expantion]]
- gameState.OCEANIA_EXP = true;
- --[[Removes the button after clicked]]
- getObjectFromGUID(userControls.buttons["OceaniaExp_Button"].BIND_OBJECT_GUID).destruct()
- end
- function oceaniaExp.takeOceaniaExpObjectFromBagByLocation(bagObject, destinationLocation, sourceGUID, yOffset, lock, objectRotation, objectName)
- if yOffset == nil then
- yOffset = 0
- end
- if objectRotation == nil then
- objectRotation = {0,0,0}
- end
- bagObject.takeObject({
- guid = sourceGUID,
- position = {
- destinationLocation[1],
- destinationLocation[2] + yOffset,
- destinationLocation[3]
- },
- rotation=objectRotation,
- callback_function = function(obj)
- getObjectFromGUID(sourceGUID).setLock(lock)
- if objectName != nil then
- getObjectFromGUID(sourceGUID).setName(objectName)
- end
- end
- })
- end
- --[[Take the components from the expantion bag]]
- function oceaniaExp.takeOceaniaExpObjectFromBag(bagObject, destinationObject, sourceGUID, yOffset)
- if yOffset == nil then
- yOffset = 0
- end
- bagObject.takeObject({
- guid = sourceGUID,
- position = {
- destinationObject.getPosition().x,
- destinationObject.getPosition().y + yOffset,
- destinationObject.getPosition().z
- },
- rotation={180,0,0},
- callback_function = function(obj)
- group({destinationObject, getObjectFromGUID(sourceGUID)})
- destinationObject.shuffle()
- end
- })
- end
- ----#include decks/oceaniaExp
- ----#include birdCards
- birdCards = {
- BIRD_DECK_GUID = '6bc66a',
- ---- #include birdCardData
- data = {
- ["Acorn Woodpecker"] = {
- Name = "Acorn Woodpecker",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Caching Food",
- Description = "Gain 1 [wheat] from the birdfeeder (if available). You may cache it on this card.",
- VP = 5,
- Nest = "Cavity",
- Eggs = 4,
- Wingspan = 46,
- Forest = true,
- Grain = 3,
- TotalFood = 3
- },
- ["American Avocet"] = {
- Name = "American Avocet",
- Game = "core",
- Color = "Pink",
- PowerCategory = "Egg-laying",
- Description = "When another player takes the 'lay eggs' action, this bird lays 1 [egg] on another bird with a [ground] nest.",
- VP = 6,
- Nest = "Ground",
- Eggs = 2,
- Wingspan = 79,
- Wetland = true,
- Worm = 2,
- Grain = 1,
- TotalFood = 3
- },
- ["American Bittern"] = {
- Name = "American Bittern",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Card-drawing",
- Description = "Player(s) with the fewest [wetland] birds = draw 1 [card].",
- VP = 7,
- Nest = "Platform",
- Eggs = 2,
- Wingspan = 107,
- Wetland = true,
- Worm = 1,
- Fish = 1,
- Rat = 1,
- TotalFood = 3
- },
- ["American Coot"] = {
- Name = "American Coot",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Flocking",
- Description = "Tuck a [card] from your hand behind this bird. If you do, draw 1 [card].",
- Flocking = true,
- VP = 3,
- Nest = "Platform",
- Eggs = 5,
- Wingspan = 61,
- Wetland = true,
- Grain = 1,
- WildFood = 1,
- TotalFood = 2
- },
- ["American Crow"] = {
- Name = "American Crow",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Food from Supply",
- Description = "Discard 1 [egg] from any of your other birds to gain 1 [wild] from the supply.",
- VP = 4,
- Nest = "Platform",
- Eggs = 2,
- Wingspan = 99,
- Forest = true,
- Grassland = true,
- Wetland = true,
- WildFood = 1,
- TotalFood = 1
- },
- ["American Goldfinch"] = {
- Name = "American Goldfinch",
- Game = "core",
- Color = "White",
- PowerCategory = "Food from Supply",
- Description = "Gain 3 [wheat] from the supply.",
- VP = 3,
- Nest = "Bowl",
- Eggs = 3,
- Wingspan = 23,
- Grassland = true,
- Grain = 2,
- TotalFood = 2
- },
- ["American Kestrel"] = {
- Name = "American Kestrel",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Hunting/Fishing",
- Description = "Roll all dice not in birdfeeder. If any are [rat], gain 1 [rat] and cache it on this card.",
- Predator = true,
- VP = 5,
- Nest = "Cavity",
- Eggs = 3,
- Wingspan = 56,
- Grassland = true,
- Worm = 1,
- Rat = 1,
- TotalFood = 2
- },
- ["American Oystercatcher"] = {
- Name = "American Oystercatcher",
- Game = "core",
- Color = "White",
- PowerCategory = "Card-drawing",
- 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.",
- VP = 5,
- Nest = "Ground",
- Eggs = 2,
- Wingspan = 81,
- Wetland = true,
- Worm = 2,
- TotalFood = 2
- },
- ["American Redstart"] = {
- Name = "American Redstart",
- Game = "swiftstart",
- Color = "Brown",
- Description = "Gain 1 [wild] from the birdfeeder.",
- VP = 4,
- Nest = "Bowl",
- Eggs = 4,
- Wingspan = 20,
- Forest = true,
- Worm = 1,
- Berry = 1,
- TotalFood = 2
- },
- ["American Robin"] = {
- Name = "American Robin",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Flocking",
- Description = "Tuck a [card] from your hand behind this bird. If you do, draw 1 [card].",
- Flocking = true,
- VP = 1,
- Nest = "Bowl",
- Eggs = 4,
- Wingspan = 43,
- Forest = true,
- Grassland = true,
- Worm = 1,
- Berry = 1,
- EitherFood = true,
- TotalFood = 1
- },
- ["American White Pelican"] = {
- Name = "American White Pelican",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Flocking",
- Description = "Discard a [fish] to tuck 2 [card] from the deck behind this bird.",
- Flocking = true,
- VP = 5,
- Nest = "Ground",
- Eggs = 1,
- Wingspan = 274,
- Wetland = true,
- Fish = 2,
- TotalFood = 2
- },
- ["American Woodcock"] = {
- Name = "American Woodcock",
- Game = "core",
- VP = 9,
- Nest = "Ground",
- Eggs = 2,
- Wingspan = 46,
- Forest = true,
- Grassland = true,
- Worm = 2,
- Grain = 1,
- TotalFood = 3
- },
- ["Anhinga"] = {
- Name = "Anhinga",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Hunting/Fishing",
- Description = "Roll all dice not in birdfeeder. If any are [fish], gain 1 [fish] and cache it on this card.",
- Predator = true,
- VP = 6,
- Nest = "Platform",
- Eggs = 2,
- Wingspan = 114,
- Wetland = true,
- Fish = 2,
- TotalFood = 2
- },
- ["Anna's Hummingbird"] = {
- Name = "Anna's Hummingbird",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Food from Birdfeeder",
- Description = "Each player gains 1 [die] from the birdfeeder, starting with the player of your choice.",
- VP = 4,
- Nest = "Bowl",
- Eggs = 2,
- Wingspan = 13,
- Forest = true,
- Grassland = true,
- Wetland = true,
- WildFood = 1,
- TotalFood = 1
- },
- ["Ash-Throated Flycatcher"] = {
- Name = "Ash-Throated Flycatcher",
- Game = "core",
- Color = "White",
- PowerCategory = "Egg-laying",
- Description = "Lay 1 [egg] on each of your birds with a [cavity] nest.",
- VP = 4,
- Nest = "Cavity",
- Eggs = 4,
- Wingspan = 30,
- Grassland = true,
- Worm = 2,
- Berry = 1,
- TotalFood = 3
- },
- ["Atlantic Puffin"] = {
- Name = "Atlantic Puffin",
- Game = "core",
- Color = "White",
- PowerCategory = "Other",
- Description = "Draw 2 new bonus cards and keep 1.",
- BonusCard = true,
- VP = 8,
- Nest = "Wild",
- Eggs = 1,
- Wingspan = 53,
- Wetland = true,
- Fish = 3,
- TotalFood = 3
- },
- ["Audouin's Gull"] = {
- Name = "Audouin's Gull",
- Game = "european",
- Color = "Brown",
- PowerCategory = "Flocking",
- Description = "Draw 2 [card] from the deck. Tuck 1 behind this bird and keep the other.",
- Flocking = true,
- VP = 1,
- Nest = "Ground",
- Eggs = 2,
- Wingspan = 132,
- Wetland = true,
- Fish = 1,
- WildFood = 1,
- TotalFood = 2
- },
- ["Baird's Sparrow"] = {
- Name = "Baird's Sparrow",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Egg-laying",
- Description = "Lay 1 [egg] on any bird.",
- VP = 3,
- Nest = "Ground",
- Eggs = 2,
- Wingspan = 23,
- Grassland = true,
- Worm = 1,
- Grain = 1,
- TotalFood = 2
- },
- ["Bald Eagle"] = {
- Name = "Bald Eagle",
- Game = "core",
- Color = "White",
- PowerCategory = "Food from Birdfeeder",
- Description = "Gain all [fish] that are in the birdfeeder.",
- VP = 9,
- Nest = "Platform",
- Eggs = 1,
- Wingspan = 203,
- Wetland = true,
- Fish = 2,
- Rat = 1,
- TotalFood = 3
- },
- ["Baltimore Oriole"] = {
- Name = "Baltimore Oriole",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Food from Supply",
- Description = "All players gain 1 [berry] from the supply.",
- VP = 9,
- Nest = "Wild",
- Eggs = 2,
- Wingspan = 30,
- Forest = true,
- Worm = 1,
- Berry = 2,
- TotalFood = 3
- },
- ["Barn Owl"] = {
- Name = "Barn Owl",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Hunting/Fishing",
- Description = "Roll all dice not in birdfeeder. If any are [rat], gain 1 [rat] and cache it on this card.",
- Predator = true,
- VP = 5,
- Nest = "Cavity",
- Eggs = 4,
- Wingspan = 107,
- Forest = true,
- Grassland = true,
- Wetland = true,
- Rat = 2,
- TotalFood = 2
- },
- ["Barn Swallow"] = {
- Name = "Barn Swallow",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Flocking",
- Description = "Tuck a [card] from your hand behind this bird. If you do, draw 1 [card].",
- Flocking = true,
- VP = 1,
- Nest = "Wild",
- Eggs = 3,
- Wingspan = 38,
- Grassland = true,
- Wetland = true,
- Worm = 1,
- TotalFood = 1
- },
- ["Barred Owl"] = {
- Name = "Barred Owl",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Hunting/Fishing",
- Description = "Look at a [card] from the deck. If <75cm, tuck it behind this bird. If not, discard it.",
- Predator = true,
- VP = 3,
- Nest = "Cavity",
- Eggs = 2,
- Wingspan = 107,
- Forest = true,
- Rat = 1,
- TotalFood = 1
- },
- ["Barrow's Goldeneye"] = {
- Name = "Barrow's Goldeneye",
- Game = "core",
- Color = "Pink",
- PowerCategory = "Egg-laying",
- Description = "When another player takes the 'lay eggs' action, this bird lays 1 [egg] on another bird with a [cavity] nest.",
- VP = 5,
- Nest = "Cavity",
- Eggs = 4,
- Wingspan = 71,
- Wetland = true,
- Worm = 1,
- Grain = 1,
- Fish = 1,
- TotalFood = 3
- },
- ["Bell's Vireo"] = {
- Name = "Bell's Vireo",
- Game = "core",
- Color = "White",
- PowerCategory = "Other",
- Description = "Draw 2 new bonus cards and keep 1.",
- BonusCard = true,
- VP = 4,
- Nest = "Wild",
- Eggs = 2,
- Wingspan = 18,
- Forest = true,
- Grassland = true,
- Worm = 2,
- TotalFood = 2
- },
- ["Belted Kingfisher"] = {
- Name = "Belted Kingfisher",
- Game = "core",
- Color = "Pink",
- PowerCategory = "Food from Supply",
- Description = "When another player plays a [wetland] bird, gain 1 [fish] from the supply.",
- VP = 4,
- Nest = "Wild",
- Eggs = 4,
- Wingspan = 53,
- Wetland = true,
- Fish = 1,
- WildFood = 1,
- TotalFood = 2
- },
- ["Bewick's Wren"] = {
- Name = "Bewick's Wren",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Other",
- Description = "If this bird is to the right of all other birds in its habitat, move it to another habitat.",
- VP = 4,
- Nest = "Cavity",
- Eggs = 3,
- Wingspan = 18,
- Forest = true,
- Grassland = true,
- Wetland = true,
- Worm = 2,
- Grain = 1,
- TotalFood = 3
- },
- ["Black Redstart"] = {
- Name = "Black Redstart",
- Game = "european",
- Color = "Teal",
- PowerCategory = "Egg-laying",
- Description = "Choose a habitat with no [egg]. Lay 1 [egg] on each bird in that habitat.",
- VP = 0,
- Nest = "Wild",
- Eggs = 4,
- Wingspan = 24,
- Grassland = true,
- Worm = 1,
- Grain = 1,
- Berry = 1,
- TotalFood = 3
- },
- ["Black Skimmer"] = {
- Name = "Black Skimmer",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Hunting/Fishing",
- Description = "Roll all dice not in birdfeeder. If any are [fish], gain 1 [fish] and cache it on this card.",
- Predator = true,
- VP = 6,
- Nest = "Ground",
- Eggs = 2,
- Wingspan = 112,
- Wetland = true,
- Fish = 2,
- TotalFood = 2
- },
- ["Black Tern"] = {
- Name = "Black Tern",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Card-drawing",
- Description = "Draw 1 [card]. If you do, discard 1 [card] from your hand at the end of your turn.",
- VP = 4,
- Nest = "Wild",
- Eggs = 2,
- Wingspan = 61,
- Wetland = true,
- Worm = 1,
- Fish = 1,
- EitherFood = true,
- TotalFood = 1
- },
- ["Black Vulture"] = {
- Name = "Black Vulture",
- Game = "core",
- Color = "Pink",
- PowerCategory = "Food from Birdfeeder",
- Description = "When another player's predator succeeds, gain 1 [die] from the birdfeeder.",
- VP = 2,
- Nest = "Cavity",
- Eggs = 1,
- Wingspan = 150,
- Forest = true,
- TotalFood = 0
- },
- ["Black Woodpecker"] = {
- Name = "Black Woodpecker",
- Game = "european",
- Color = "Brown",
- PowerCategory = "Food-related",
- Description = "Gain all [worm] that are in the birdfeeder.",
- VP = 4,
- Nest = "Cavity",
- Eggs = 2,
- Wingspan = 70,
- Forest = true,
- Worm = 2,
- Berry = 1,
- TotalFood = 3
- },
- ["Black-Bellied Whistling Duck"] = {
- Name = "Black-Bellied Whistling Duck",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Flocking",
- Description = "Discard 1 [wheat] to tuck 2 [card] from the deck behind this bird.",
- Flocking = true,
- VP = 2,
- Nest = "Cavity",
- Eggs = 5,
- Wingspan = 76,
- Wetland = true,
- Grain = 2,
- TotalFood = 2
- },
- ["Black-Billed Magpie"] = {
- Name = "Black-Billed Magpie",
- Game = "core",
- Color = "Pink",
- PowerCategory = "Food from Birdfeeder",
- Description = "When another player's predator succeeds, gain 1 [die] from the birdfeeder.",
- VP = 3,
- Nest = "Wild",
- Eggs = 3,
- Wingspan = 64,
- Grassland = true,
- WildFood = 2,
- TotalFood = 2
- },
- ["Black-Chinned Hummingbird"] = {
- Name = "Black-Chinned Hummingbird",
- Game = "swiftstart",
- Color = "Brown",
- Description = "All players gain a [berry] from the supply.",
- VP = 4,
- Nest = "Bowl",
- Eggs = 2,
- Wingspan = 8,
- Forest = true,
- Grassland = true,
- Wetland = true,
- WildFood = 1,
- TotalFood = 1
- },
- ["Black-Crowned Night-Heron"] = {
- Name = "Black-Crowned Night-Heron",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Food from Supply",
- Description = "Discard 1 [egg] from any of your other birds to gain 1 [wild] from the supply.",
- VP = 9,
- Nest = "Platform",
- Eggs = 2,
- Wingspan = 112,
- Wetland = true,
- Worm = 1,
- Fish = 1,
- Rat = 1,
- TotalFood = 3
- },
- ["Black-Headed Gull"] = {
- Name = "Black-Headed Gull",
- Game = "european",
- Color = "Brown",
- PowerCategory = "Food-related",
- Description = "Steal 1 [wild] from another player's supply and add it to your own supply. They gain 1 [die] from the birdfeeder.",
- VP = 3,
- Nest = "Ground",
- Eggs = 2,
- Wingspan = 102,
- Wetland = true,
- Worm = 1,
- WildFood = 1,
- TotalFood = 2
- },
- ["Black-Necked Stilt"] = {
- Name = "Black-Necked Stilt",
- Game = "core",
- Color = "White",
- PowerCategory = "Card-drawing",
- Description = "Draw 2 [card].",
- VP = 4,
- Nest = "Ground",
- Eggs = 2,
- Wingspan = 74,
- Wetland = true,
- Worm = 2,
- TotalFood = 2
- },
- ["Black-Tailed Godwit"] = {
- Name = "Black-Tailed Godwit",
- Game = "european",
- Color = "White",
- PowerCategory = "Other",
- Description = "Draw 1 new bonus card. Then draw 3 [card] and keep 1 of them.",
- BonusCard = true,
- VP = 6,
- Nest = "Ground",
- Eggs = 2,
- Wingspan = 76,
- Wetland = true,
- Worm = 2,
- Grain = 1,
- TotalFood = 3
- },
- ["Black-Throated Diver"] = {
- Name = "Black-Throated Diver",
- Game = "european",
- Color = "Brown",
- PowerCategory = "Card-drawing",
- Description = "Discard all remaining face-up [card] and refill the tray. If you do, draw 1 of the new face-up [card].",
- VP = 5,
- Nest = "Ground",
- Eggs = 1,
- Wingspan = 120,
- Wetland = true,
- Fish = 2,
- TotalFood = 2
- },
- ["Blue Grosbeak"] = {
- Name = "Blue Grosbeak",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Other",
- Description = "If this bird is to the right of all other birds in its habitat, move it to another habitat.",
- VP = 4,
- Nest = "Bowl",
- Eggs = 3,
- Wingspan = 28,
- Forest = true,
- Grassland = true,
- Wetland = true,
- Worm = 1,
- Grain = 2,
- TotalFood = 3
- },
- ["Blue Jay"] = {
- Name = "Blue Jay",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Caching Food",
- Description = "Gain 1 [wheat] from the birdfeeder (if available). You may cache it on this card.",
- VP = 3,
- Nest = "Bowl",
- Eggs = 2,
- Wingspan = 41,
- Forest = true,
- Grain = 1,
- WildFood = 1,
- TotalFood = 2
- },
- ["Blue-Gray Gnatcatcher"] = {
- Name = "Blue-Gray Gnatcatcher",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Food from Supply",
- Description = "Gain 1 [worm] from the supply.",
- VP = 1,
- Nest = "Bowl",
- Eggs = 3,
- Wingspan = 15,
- Forest = true,
- Worm = 1,
- TotalFood = 1
- },
- ["Blue-Winged Warbler"] = {
- Name = "Blue-Winged Warbler",
- Game = "core",
- Color = "White",
- VP = 8,
- Nest = "Bowl",
- Eggs = 2,
- Wingspan = 20,
- Forest = true,
- Grassland = true,
- Worm = 2,
- TotalFood = 2
- },
- ["Bluethroat"] = {
- Name = "Bluethroat",
- Game = "european",
- Color = "Brown",
- PowerCategory = "Food-related",
- Description = "Choose a food type. All players gain 1 of that food from the supply.",
- VP = 7,
- Nest = "Ground",
- Eggs = 5,
- Wingspan = 22,
- Grassland = true,
- Wetland = true,
- Worm = 1,
- Grain = 1,
- Berry = 1,
- TotalFood = 3
- },
- ["Bobolink"] = {
- Name = "Bobolink",
- Game = "core",
- Color = "White",
- PowerCategory = "Egg-laying",
- Description = "Lay 1 [egg] on each of your birds with a [ground] nest.",
- VP = 4,
- Nest = "Ground",
- Eggs = 3,
- Wingspan = 30,
- Grassland = true,
- Worm = 1,
- Grain = 2,
- TotalFood = 3
- },
- ["Bonelli's Eagle"] = {
- Name = "Bonelli's Eagle",
- Game = "european",
- Color = "White",
- PowerCategory = "Hunting and Fishing",
- 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.",
- Predator = true,
- VP = 8,
- Nest = "Platform",
- Eggs = 1,
- Wingspan = 160,
- Forest = true,
- Grassland = true,
- Wetland = true,
- Rat = 3,
- ["* (food cost)"] = true,
- TotalFood = 3
- },
- ["Brant"] = {
- Name = "Brant",
- Game = "swiftstart",
- Color = "White",
- Description = "Draw the 3 face-up [card] in the bird tray.",
- VP = 3,
- Nest = "Ground",
- Eggs = 2,
- Wingspan = 114,
- Wetland = true,
- Grain = 1,
- WildFood = 1,
- TotalFood = 2
- },
- ["Brewer's Blackbird"] = {
- Name = "Brewer's Blackbird",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Flocking",
- Description = "Tuck a [card] from your hand behind this bird. If you do, also lay 1 [egg] on this bird.",
- Flocking = true,
- VP = 3,
- Nest = "Bowl",
- Eggs = 3,
- Wingspan = 41,
- Grassland = true,
- Grain = 1,
- WildFood = 1,
- TotalFood = 2
- },
- ["Broad-Winged Hawk"] = {
- Name = "Broad-Winged Hawk",
- Game = "swiftstart",
- Color = "Brown",
- Description = "Roll all dice not in birdfeeder. If any are a [rat], gain 1 [rat] and cache it on this card.",
- Predator = true,
- VP = 4,
- Nest = "Platform",
- Eggs = 2,
- Wingspan = 85,
- Forest = true,
- Rat = 1,
- TotalFood = 1
- },
- ["Bronzed Cowbird"] = {
- Name = "Bronzed Cowbird",
- Game = "core",
- Color = "Pink",
- PowerCategory = "Egg-laying",
- Description = "When another player takes the 'lay eggs' action, this bird lays 1 [egg] on another bird with a [bowl] nest.",
- VP = 5,
- Nest = "None",
- Eggs = 0,
- Wingspan = 36,
- Grassland = true,
- Worm = 1,
- Grain = 1,
- TotalFood = 2
- },
- ["Brown Pelican"] = {
- Name = "Brown Pelican",
- Game = "core",
- Color = "White",
- PowerCategory = "Food from Supply",
- Description = "Gain 3 [fish] from the supply.",
- VP = 4,
- Nest = "Platform",
- Eggs = 2,
- Wingspan = 201,
- Wetland = true,
- Fish = 2,
- TotalFood = 2
- },
- ["Brown-Headed Cowbird"] = {
- Name = "Brown-Headed Cowbird",
- Game = "core",
- Color = "Pink",
- PowerCategory = "Egg-laying",
- Description = "When another player takes the 'lay eggs' action, this bird lays 1 [egg] on another bird with a [bowl] nest.",
- VP = 3,
- Nest = "None",
- Eggs = 0,
- Wingspan = 30,
- Grassland = true,
- Grain = 1,
- TotalFood = 1
- },
- ["Bullfinch"] = {
- Name = "Bullfinch",
- Game = "european",
- Color = "Brown",
- PowerCategory = "Food-related",
- Description = "Reset the birdfeeder. If you do, gain 1 [wheat] or [berry] from the birdfeeder after resetting.",
- VP = 3,
- Nest = "Bowl",
- Eggs = 4,
- Wingspan = 24,
- Forest = true,
- Grain = 1,
- Berry = 1,
- TotalFood = 2
- },
- ["Burrowing Owl"] = {
- Name = "Burrowing Owl",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Hunting/Fishing",
- Description = "Roll all dice not in birdfeeder. If any are [rat], gain 1 [rat] and cache it on this card.",
- Predator = true,
- VP = 5,
- Nest = "Wild",
- Eggs = 4,
- Wingspan = 53,
- Grassland = true,
- Worm = 1,
- Rat = 1,
- TotalFood = 2
- },
- ["Bushtit"] = {
- Name = "Bushtit",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Flocking",
- Description = "Tuck a [card] from your hand behind this bird. If you do, also lay 1 [egg] on this bird.",
- Flocking = true,
- VP = 2,
- Nest = "Wild",
- Eggs = 5,
- Wingspan = 15,
- Forest = true,
- Grassland = true,
- Wetland = true,
- Worm = 1,
- Grain = 1,
- TotalFood = 2
- },
- ["California Condor"] = {
- Name = "California Condor",
- Game = "core",
- Color = "White",
- PowerCategory = "Other",
- Description = "Draw 2 new bonus cards and keep 1.",
- BonusCard = true,
- VP = 1,
- Nest = "Ground",
- Eggs = 1,
- Wingspan = 277,
- Forest = true,
- Grassland = true,
- Wetland = true,
- TotalFood = 0
- },
- ["California Quail"] = {
- Name = "California Quail",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Egg-laying",
- Description = "Lay 1 [egg] on this bird.",
- VP = 3,
- Nest = "Ground",
- Eggs = 6,
- Wingspan = 36,
- Forest = true,
- Grassland = true,
- Worm = 1,
- Grain = 2,
- TotalFood = 3
- },
- ["Canada Goose"] = {
- Name = "Canada Goose",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Flocking",
- Description = "Discard 1 [wheat] to tuck 2 [card] from the deck behind this bird.",
- Flocking = true,
- VP = 3,
- Nest = "Ground",
- Eggs = 3,
- Wingspan = 132,
- Grassland = true,
- Wetland = true,
- Grain = 2,
- TotalFood = 2
- },
- ["Canvasback"] = {
- Name = "Canvasback",
- Game = "swiftstart",
- Color = "Brown",
- Description = "All players draw 1 [card] from the deck.",
- VP = 4,
- Nest = "Wild",
- Eggs = 4,
- Wingspan = 82,
- Wetland = true,
- Grain = 1,
- WildFood = 1,
- TotalFood = 2
- },
- ["Carolina Chickadee"] = {
- Name = "Carolina Chickadee",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Caching Food",
- Description = "Gain 1 [wheat] from the supply and cache it on this card.",
- VP = 2,
- Nest = "Cavity",
- Eggs = 3,
- Wingspan = 20,
- Forest = true,
- Worm = 1,
- Grain = 1,
- EitherFood = true,
- TotalFood = 1
- },
- ["Carolina Wren"] = {
- Name = "Carolina Wren",
- Game = "core",
- Color = "White",
- PowerCategory = "Card-drawing",
- Description = "Draw 2 [card].",
- VP = 1,
- Nest = "Cavity",
- Eggs = 5,
- Wingspan = 20,
- Forest = true,
- Worm = 1,
- Berry = 1,
- EitherFood = true,
- TotalFood = 1
- },
- ["Carrion Crow"] = {
- Name = "Carrion Crow",
- Game = "european",
- Color = "Teal",
- PowerCategory = "Food-related",
- Description = "Choose any 1 player (including yourself). Cache 1 [rat] from the supply on this bird for each [predator] that player has.",
- VP = 3,
- Nest = "Platform",
- Eggs = 2,
- Wingspan = 92,
- Grassland = true,
- Wetland = true,
- Worm = 1,
- WildFood = 1,
- TotalFood = 2
- },
- ["Cassin's Finch"] = {
- Name = "Cassin's Finch",
- Game = "core",
- Color = "White",
- PowerCategory = "Other",
- Description = "Draw 2 new bonus cards and keep 1.",
- BonusCard = true,
- VP = 4,
- Nest = "Bowl",
- Eggs = 3,
- Wingspan = 30,
- Forest = true,
- Grain = 1,
- Berry = 1,
- TotalFood = 2
- },
- ["Cassin's Sparrow"] = {
- Name = "Cassin's Sparrow",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Egg-laying",
- Description = "Lay 1 [egg] on any bird.",
- VP = 3,
- Nest = "Ground",
- Eggs = 2,
- Wingspan = 20,
- Grassland = true,
- Worm = 1,
- Grain = 1,
- TotalFood = 2
- },
- ["Cedar Waxwing"] = {
- Name = "Cedar Waxwing",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Flocking",
- Description = "Tuck a [card] from your hand behind this bird. If you do, gain 1 [berry] from the supply.",
- Flocking = true,
- VP = 3,
- Nest = "Bowl",
- Eggs = 3,
- Wingspan = 25,
- Forest = true,
- Grassland = true,
- Berry = 2,
- TotalFood = 2
- },
- ["Cerulean Warbler"] = {
- Name = "Cerulean Warbler",
- Game = "core",
- Color = "White",
- PowerCategory = "Other",
- Description = "Draw 2 new bonus cards and keep 1.",
- BonusCard = true,
- VP = 4,
- Nest = "Bowl",
- Eggs = 2,
- Wingspan = 20,
- Forest = true,
- Worm = 1,
- Grain = 1,
- TotalFood = 2
- },
- ["Cetti's Warbler"] = {
- Name = "Cetti's Warbler",
- Game = "european",
- Color = "Teal",
- PowerCategory = "Other",
- Description = "This bird counts double toward the end-of-round goal, if it qualifies for the goal.",
- VP = 4,
- Nest = "Bowl",
- Eggs = 3,
- Wingspan = 17,
- Wetland = true,
- Worm = 1,
- Grain = 1,
- TotalFood = 2
- },
- ["Chestnut-Collared Longspur"] = {
- Name = "Chestnut-Collared Longspur",
- Game = "core",
- Color = "White",
- PowerCategory = "Other",
- Description = "Draw 2 new bonus cards and keep 1.",
- BonusCard = true,
- VP = 5,
- Nest = "Ground",
- Eggs = 4,
- Wingspan = 25,
- Grassland = true,
- Worm = 1,
- Grain = 2,
- TotalFood = 3
- },
- ["Chihuahuan Raven"] = {
- Name = "Chihuahuan Raven",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Food from Supply",
- Description = "Discard 1 [egg] from any of your other birds to gain 2 [wild] from the supply.",
- VP = 4,
- Nest = "Platform",
- Eggs = 3,
- Wingspan = 112,
- Grassland = true,
- Rat = 1,
- WildFood = 2,
- TotalFood = 3
- },
- ["Chimney Swift"] = {
- Name = "Chimney Swift",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Other",
- Description = "If this bird is to the right of all other birds in its habitat, move it to another habitat.",
- VP = 3,
- Nest = "Wild",
- Eggs = 2,
- Wingspan = 36,
- Forest = true,
- Grassland = true,
- Wetland = true,
- Worm = 2,
- TotalFood = 2
- },
- ["Chipping Sparrow"] = {
- Name = "Chipping Sparrow",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Egg-laying",
- Description = "Lay 1 [egg] on any bird.",
- VP = 1,
- Nest = "Bowl",
- Eggs = 3,
- Wingspan = 23,
- Forest = true,
- Grassland = true,
- Worm = 1,
- Grain = 1,
- EitherFood = true,
- TotalFood = 1
- },
- ["Clark's Grebe"] = {
- Name = "Clark's Grebe",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Card-drawing",
- Description = "Draw 1 [card]. If you do, discard 1 [card] from your hand at the end of your turn.",
- VP = 5,
- Nest = "Wild",
- Eggs = 2,
- Wingspan = 61,
- Wetland = true,
- Fish = 1,
- TotalFood = 1
- },
- ["Clark's Nutcracker"] = {
- Name = "Clark's Nutcracker",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Caching Food",
- Description = "Gain 1 [wheat] from the birdfeeder (if available). You may cache it on this card.",
- VP = 5,
- Nest = "Platform",
- Eggs = 2,
- Wingspan = 61,
- Forest = true,
- Grain = 2,
- WildFood = 1,
- TotalFood = 3
- },
- ["Coal Tit"] = {
- Name = "Coal Tit",
- Game = "european",
- Color = "Brown",
- PowerCategory = "Food-related",
- Description = "Gain 1 [wheat] from the supply and cache it on this card. At any time, you may spend [wheat] cached on this card.",
- VP = 2,
- Nest = "Cavity",
- Eggs = 6,
- Wingspan = 16,
- Forest = true,
- Worm = 1,
- Grain = 1,
- TotalFood = 2
- },
- ["Common Blackbird"] = {
- Name = "Common Blackbird",
- Game = "european",
- Color = "White",
- PowerCategory = "Other",
- Description = "Place this bird sideways, so that it covers 2 [forest] spaces. Pay the lower egg cost.",
- VP = 4,
- Nest = "Bowl",
- Eggs = 5,
- Wingspan = 36,
- Forest = true,
- Worm = 1,
- Berry = 2,
- TotalFood = 3
- },
- ["Common Buzzard"] = {
- Name = "Common Buzzard",
- Game = "european",
- Color = "White",
- PowerCategory = "Hunting and fishing",
- 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.",
- Predator = true,
- VP = 4,
- Nest = "Platform",
- Eggs = 2,
- Wingspan = 123,
- Forest = true,
- Grassland = true,
- Wetland = true,
- Rat = 1,
- ["* (food cost)"] = true,
- TotalFood = 1
- },
- ["Common Chaffinch"] = {
- Name = "Common Chaffinch",
- Game = "european",
- Color = "Brown",
- PowerCategory = "Flocking",
- Description = "Choose 1-5 birds in this habitat. Tuck 1 [card] from your hand behind each.",
- Flocking = true,
- VP = 4,
- Nest = "Bowl",
- Eggs = 2,
- Wingspan = 23,
- Forest = true,
- Grassland = true,
- Worm = 1,
- Grain = 1,
- EitherFood = true,
- TotalFood = 1
- },
- ["Common Chiffchaff"] = {
- Name = "Common Chiffchaff",
- Game = "european",
- Color = "Brown",
- PowerCategory = "Flocking",
- Description = "Choose 1-5 birds in this habitat. Tuck 1 [card] from your hand behind each.",
- Flocking = true,
- VP = 3,
- Nest = "Ground",
- Eggs = 3,
- Wingspan = 20,
- Forest = true,
- Wetland = true,
- Worm = 1,
- Grain = 1,
- Berry = 1,
- EitherFood = true,
- TotalFood = 1
- },
- ["Common Cuckoo"] = {
- Name = "Common Cuckoo",
- Game = "european",
- Color = "Pink",
- PowerCategory = "Egg-laying",
- Description = "When another player takes the 'lay eggs' action, this bird lays 1 [egg] on another bird with a [bowl] or [ground] nest.",
- VP = 4,
- Nest = "None",
- Eggs = 0,
- Wingspan = 57,
- Forest = true,
- Grassland = true,
- Worm = 2,
- TotalFood = 2
- },
- ["Common Goldeneye"] = {
- Name = "Common Goldeneye",
- Game = "european",
- Color = "Teal",
- PowerCategory = "Egg-laying",
- Description = "Lay 1 [egg] on this bird for each other bird with a [cavity] nest that you have.",
- VP = 2,
- Nest = "Cavity",
- Eggs = 4,
- Wingspan = 73,
- Forest = true,
- Wetland = true,
- Worm = 1,
- Fish = 1,
- TotalFood = 2
- },
- ["Common Grackle"] = {
- Name = "Common Grackle",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Flocking",
- Description = "Tuck a [card] from your hand behind this bird. If you do, also lay 1 [egg] on this bird.",
- Flocking = true,
- VP = 3,
- Nest = "Bowl",
- Eggs = 3,
- Wingspan = 43,
- Forest = true,
- Grassland = true,
- Wetland = true,
- Grain = 1,
- WildFood = 1,
- TotalFood = 2
- },
- ["Common Kingfisher"] = {
- Name = "Common Kingfisher",
- Game = "european",
- Color = "Brown",
- PowerCategory = "Food-related",
- Description = "Steal 1 [fish] from another player's supply and cache it on this bird. They gain 1 [die] from the birdfeeder.",
- VP = 4,
- Nest = "Wild",
- Eggs = 5,
- Wingspan = 26,
- Wetland = true,
- Worm = 1,
- Fish = 2,
- TotalFood = 3
- },
- ["Common Little Bittern"] = {
- Name = "Common Little Bittern",
- Game = "european",
- Color = "Brown",
- PowerCategory = "Card-drawing",
- Description = "Gain 1 face-up [card] that can live in [grassland].",
- VP = 2,
- Nest = "Platform",
- Eggs = 3,
- Wingspan = 49,
- Wetland = true,
- Worm = 1,
- Fish = 1,
- TotalFood = 2
- },
- ["Common Loon"] = {
- Name = "Common Loon",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Card-drawing",
- Description = "Player(s) with the fewest [wetland] birds = draw 1 [card].",
- VP = 6,
- Nest = "Ground",
- Eggs = 1,
- Wingspan = 117,
- Wetland = true,
- Fish = 1,
- WildFood = 1,
- TotalFood = 2
- },
- ["Common Merganser"] = {
- Name = "Common Merganser",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Hunting/Fishing",
- Description = "Roll all dice not in birdfeeder. If any are [fish], gain 1 [fish] and cache it on this card.",
- Predator = true,
- VP = 5,
- Nest = "Cavity",
- Eggs = 4,
- Wingspan = 86,
- Wetland = true,
- Fish = 1,
- WildFood = 1,
- TotalFood = 2
- },
- ["Common Moorhen"] = {
- Name = "Common Moorhen",
- Game = "european",
- Color = "Brown",
- PowerCategory = "Other",
- Description = "Discard 1 [wild] from your supply. If you do, play another bird in your [wetland]. Pay its normal food and egg cost.",
- VP = 3,
- Nest = "Wild",
- Eggs = 6,
- Wingspan = 53,
- Wetland = true,
- Worm = 1,
- Grain = 1,
- Fish = 1,
- TotalFood = 3
- },
- ["Common Nighthawk"] = {
- Name = "Common Nighthawk",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Other",
- Description = "If this bird is to the right of all other birds in its habitat, move it to another habitat.",
- VP = 3,
- Nest = "Ground",
- Eggs = 2,
- Wingspan = 56,
- Forest = true,
- Grassland = true,
- Wetland = true,
- Worm = 2,
- TotalFood = 2
- },
- ["Common Nightingale"] = {
- Name = "Common Nightingale",
- Game = "european",
- Color = "Brown",
- PowerCategory = "Food-related",
- Description = "Choose a food type. All players gain 1 of that food from the supply.",
- VP = 3,
- Nest = "Bowl",
- Eggs = 4,
- Wingspan = 23,
- Forest = true,
- Grassland = true,
- Wetland = true,
- Worm = 1,
- Grain = 1,
- Berry = 1,
- EitherFood = true,
- TotalFood = 1
- },
- ["Common Raven"] = {
- Name = "Common Raven",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Food from Supply",
- Description = "Discard 1 [egg] from any of your other birds to gain 2 [wild] from the supply.",
- VP = 5,
- Nest = "Platform",
- Eggs = 2,
- Wingspan = 135,
- Forest = true,
- Grassland = true,
- Wetland = true,
- Rat = 1,
- WildFood = 2,
- TotalFood = 3
- },
- ["Common Starling"] = {
- Name = "Common Starling",
- Game = "european",
- Color = "Teal",
- PowerCategory = "Flocking",
- Description = "Discard up to 5 [wild] from your supply. For each, tuck 1 [card] from the deck behind this bird.",
- Flocking = true,
- VP = 3,
- Nest = "Cavity",
- Eggs = 4,
- Wingspan = 38,
- Grassland = true,
- Wetland = true,
- Worm = 1,
- Grain = 1,
- Berry = 1,
- EitherFood = true,
- TotalFood = 1
- },
- ["Common Swift"] = {
- Name = "Common Swift",
- Game = "european",
- Color = "Teal",
- PowerCategory = "Flocking",
- Description = "Discard up to 5 [worm] from your supply. For each, tuck 1 [card] from the deck behind this bird.",
- Flocking = true,
- VP = 5,
- Nest = "Cavity",
- Eggs = 2,
- Wingspan = 46,
- Grassland = true,
- Worm = 1,
- TotalFood = 1
- },
- ["Common Yellowthroat"] = {
- Name = "Common Yellowthroat",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Card-drawing",
- Description = "Draw 2 [card]. If you do, discard 1 [card] from your hand at the end of your turn.",
- VP = 1,
- Nest = "Bowl",
- Eggs = 4,
- Wingspan = 18,
- Wetland = true,
- Worm = 1,
- TotalFood = 1
- },
- ["Cooper's Hawk"] = {
- Name = "Cooper's Hawk",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Hunting/Fishing",
- Description = "Look at a [card] from the deck. If <75cm, tuck it behind this bird. If not, discard it.",
- Predator = true,
- VP = 3,
- Nest = "Platform",
- Eggs = 2,
- Wingspan = 79,
- Forest = true,
- Rat = 1,
- TotalFood = 1
- },
- ["Corsican Nuthatch"] = {
- Name = "Corsican Nuthatch",
- Game = "european",
- Color = "White",
- PowerCategory = "Other",
- Description = "Draw 1 new bonus card. Then gain 1 [die] from the birdfeeder.",
- BonusCard = true,
- VP = 4,
- Nest = "Cavity",
- Eggs = 2,
- Wingspan = 21,
- Forest = true,
- Grain = 2,
- TotalFood = 2
- },
- ["Dark-Eyed Junco"] = {
- Name = "Dark-Eyed Junco",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Flocking",
- Description = "Tuck a [card] from your hand behind this bird. If you do, gain 1 [wheat] from the supply.",
- Flocking = true,
- VP = 3,
- Nest = "Ground",
- Eggs = 3,
- Wingspan = 23,
- Forest = true,
- Grassland = true,
- Worm = 1,
- Grain = 1,
- TotalFood = 2
- },
- ["Dickcissel"] = {
- Name = "Dickcissel",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Flocking",
- Description = "Tuck a [card] from your hand behind this bird. If you do, also lay 1 [egg] on this bird.",
- Flocking = true,
- VP = 4,
- Nest = "Ground",
- Eggs = 3,
- Wingspan = 25,
- Grassland = true,
- Worm = 1,
- Grain = 2,
- TotalFood = 3
- },
- ["Double-Crested Cormorant"] = {
- Name = "Double-Crested Cormorant",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Flocking",
- Description = "Discard [fish] to tuck 2 [card] from the deck behind this bird.",
- Flocking = true,
- VP = 3,
- Nest = "Platform",
- Eggs = 3,
- Wingspan = 132,
- Wetland = true,
- Fish = 1,
- WildFood = 1,
- TotalFood = 2
- },
- ["Downy Woodpecker"] = {
- Name = "Downy Woodpecker",
- Game = "core",
- Color = "White",
- PowerCategory = "Other",
- Description = "Play a second bird in your [forest]. Pay its normal cost.",
- VP = 3,
- Nest = "Cavity",
- Eggs = 2,
- Wingspan = 30,
- Forest = true,
- Worm = 1,
- Grain = 1,
- Berry = 1,
- EitherFood = true,
- TotalFood = 1
- },
- ["Dunnock"] = {
- Name = "Dunnock",
- Game = "european",
- Color = "Teal",
- PowerCategory = "Egg-laying",
- Description = "Choose 1 other player. For each action cube on their [grassland], lay 1 [egg] on this bird.",
- VP = 1,
- Nest = "Bowl",
- Eggs = 4,
- Wingspan = 20,
- Forest = true,
- Worm = 1,
- Grain = 1,
- TotalFood = 2
- },
- ["Eastern Bluebird"] = {
- Name = "Eastern Bluebird",
- Game = "core",
- Color = "White",
- PowerCategory = "Other",
- Description = "Play a second bird in your [grassland]. Pay its normal cost.",
- VP = 4,
- Nest = "Cavity",
- Eggs = 5,
- Wingspan = 33,
- Grassland = true,
- Worm = 1,
- Berry = 1,
- TotalFood = 2
- },
- ["Eastern Imperial Eagle"] = {
- Name = "Eastern Imperial Eagle",
- Game = "european",
- Color = "White",
- PowerCategory = "Hunting and Fishing",
- 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.",
- Predator = true,
- VP = 7,
- Nest = "Platform",
- Eggs = 2,
- Wingspan = 200,
- Grassland = true,
- Rat = 3,
- ["* (food cost)"] = true,
- TotalFood = 3
- },
- ["Eastern Kingbird"] = {
- Name = "Eastern Kingbird",
- Game = "core",
- Color = "Pink",
- PowerCategory = "Food from Supply",
- Description = "When another player plays a [forest] bird, gain 1 [worm] from the supply.",
- VP = 2,
- Nest = "Bowl",
- Eggs = 2,
- Wingspan = 38,
- Forest = true,
- Grassland = true,
- Wetland = true,
- Worm = 1,
- Berry = 1,
- EitherFood = true,
- TotalFood = 1
- },
- ["Eastern Phoebe"] = {
- Name = "Eastern Phoebe",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Food from Supply",
- Description = "All players gain 1 [worm] from the supply.",
- VP = 3,
- Nest = "Wild",
- Eggs = 4,
- Wingspan = 28,
- Forest = true,
- Grassland = true,
- Wetland = true,
- Worm = 1,
- Berry = 1,
- EitherFood = true,
- TotalFood = 1
- },
- ["Eastern Screech Owl"] = {
- Name = "Eastern Screech Owl",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Hunting/Fishing",
- Description = "Roll all dice not in birdfeeder. If any are [rat], gain 1 [rat] and cache it on this card.",
- Predator = true,
- VP = 4,
- Nest = "Cavity",
- Eggs = 2,
- Wingspan = 51,
- Forest = true,
- Worm = 1,
- Rat = 1,
- EitherFood = true,
- TotalFood = 1
- },
- ["Eleonora's Falcon"] = {
- Name = "Eleonora's Falcon",
- Game = "european",
- Color = "Brown",
- PowerCategory = "Egg-laying",
- Description = "Roll all dice not in the birdfeeder. If any are [rat], place 1 [egg] on this card.",
- VP = 6,
- Nest = "Ground",
- Eggs = 2,
- Wingspan = 95,
- Wetland = true,
- Worm = 1,
- Rat = 1,
- TotalFood = 2
- },
- ["Eurasian Collared-Dove"] = {
- Name = "Eurasian Collared-Dove",
- Game = "european",
- Color = "Teal",
- PowerCategory = "Flocking",
- Description = "Discard up to 5 [wild] from your supply. For each, tuck 1 [card] from the deck behind this bird.",
- Flocking = true,
- VP = 5,
- Nest = "Platform",
- Eggs = 2,
- Wingspan = 52,
- Grassland = true,
- Grain = 1,
- Berry = 1,
- TotalFood = 2
- },
- ["Eurasian Golden Oriole"] = {
- Name = "Eurasian Golden Oriole",
- Game = "european",
- Color = "Pink",
- PowerCategory = "Food-related",
- Description = "When another player takes the 'gain food' action, gain 1 [worm] or [berry] from the birdfeeder at the end of their turn.",
- VP = 4,
- Nest = "Wild",
- Eggs = 2,
- Wingspan = 46,
- Forest = true,
- Grassland = true,
- Worm = 1,
- Berry = 1,
- WildFood = 1,
- TotalFood = 3
- },
- ["Eurasian Green Woodpecker"] = {
- Name = "Eurasian Green Woodpecker",
- Game = "european",
- Color = "Teal",
- PowerCategory = "Other",
- Description = "This bird counts double toward the end-of-round goal, if it qualifies for the goal.",
- VP = 4,
- Nest = "Cavity",
- Eggs = 3,
- Wingspan = 48,
- Forest = true,
- Grassland = true,
- Grain = 1,
- Berry = 1,
- TotalFood = 2
- },
- ["Eurasian Hobby"] = {
- Name = "Eurasian Hobby",
- Game = "european",
- Color = "White",
- PowerCategory = "Hunting and fishing",
- 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.",
- Predator = true,
- VP = 4,
- Nest = "Platform",
- Eggs = 2,
- Wingspan = 75,
- Forest = true,
- Grassland = true,
- Wetland = true,
- Worm = 1,
- Rat = 1,
- EitherFood = true,
- ["* (food cost)"] = true,
- TotalFood = 1
- },
- ["Eurasian Jay"] = {
- Name = "Eurasian Jay",
- Game = "european",
- Color = "Brown",
- PowerCategory = "Food-related",
- Description = "Steal 1 [wheat] from another player's supply and cache it on this bird. They gain 1 [die] from the birdfeeder.",
- VP = 4,
- Nest = "Bowl",
- Eggs = 3,
- Wingspan = 56,
- Forest = true,
- Worm = 1,
- Grain = 1,
- WildFood = 1,
- TotalFood = 3
- },
- ["Eurasian Magpie"] = {
- Name = "Eurasian Magpie",
- Game = "european",
- Color = "Teal",
- PowerCategory = "Food-related",
- Description = "Choose 1 other player. For each action cube in their [grassland], cache 1 [wild] from the supply on any of your birds.",
- VP = 1,
- Nest = "Platform",
- Eggs = 3,
- Wingspan = 56,
- Grassland = true,
- Worm = 1,
- WildFood = 1,
- TotalFood = 2
- },
- ["Eurasian Nutcracker"] = {
- Name = "Eurasian Nutcracker",
- Game = "european",
- Color = "Brown",
- PowerCategory = "Food-related",
- Description = "Choose 1-5 birds in your [forest]. Cache 1 [wheat] from your supply on each.",
- VP = 5,
- Nest = "Bowl",
- Eggs = 2,
- Wingspan = 55,
- Forest = true,
- Grain = 1,
- TotalFood = 1
- },
- ["Eurasian Nuthatch"] = {
- Name = "Eurasian Nuthatch",
- Game = "european",
- Color = "Brown",
- PowerCategory = "Food-related",
- Description = "Gain 1 [wheat] from the supply and cache it on this card. At any time, you may spend [wheat] cached on this card.",
- VP = 3,
- Nest = "Cavity",
- Eggs = 3,
- Wingspan = 25,
- Forest = true,
- Worm = 1,
- Grain = 1,
- TotalFood = 2
- },
- ["Eurasian Sparrowhawk"] = {
- Name = "Eurasian Sparrowhawk",
- Game = "european",
- Color = "White",
- PowerCategory = "Hunting and Fishing",
- 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.",
- Predator = true,
- VP = 4,
- Nest = "Platform",
- Eggs = 2,
- Wingspan = 65,
- Forest = true,
- Rat = 1,
- ["* (food cost)"] = true,
- TotalFood = 1
- },
- ["Eurasian Tree Sparrow"] = {
- Name = "Eurasian Tree Sparrow",
- Game = "european",
- Color = "Pink",
- PowerCategory = "Food-related",
- Description = "When another player takes the 'gain food' action, gain 1 [wheat] from the birdfeeder at the end of their turn.",
- VP = 3,
- Nest = "Cavity",
- Eggs = 4,
- Wingspan = 21,
- Forest = true,
- Grassland = true,
- Worm = 1,
- Grain = 1,
- TotalFood = 2
- },
- ["European Bee-Eater"] = {
- Name = "European Bee-Eater",
- Game = "european",
- Color = "Brown",
- PowerCategory = "Food-related",
- Description = "Reset the birdfeeder. If you do, gain 1 [worm] from the birdfeeder after resetting.",
- VP = 3,
- Nest = "Cavity",
- Eggs = 3,
- Wingspan = 38,
- Grassland = true,
- Worm = 2,
- TotalFood = 2
- },
- ["European Goldfinch"] = {
- Name = "European Goldfinch",
- Game = "european",
- Color = "Pink",
- PowerCategory = "Flocking",
- Description = "When another player tucks a [card] for any reason, tuck 1 [card] from the deck behind this bird.",
- Flocking = true,
- VP = 6,
- Nest = "Bowl",
- Eggs = 4,
- Wingspan = 23,
- Forest = true,
- Grassland = true,
- Grain = 2,
- Berry = 1,
- TotalFood = 3
- },
- ["European Honey Buzzard"] = {
- Name = "European Honey Buzzard",
- Game = "european",
- Color = "Teal",
- PowerCategory = "Food-related",
- Description = "Reset the birdfeeder. If you do, gain all [worm] in the birdfeeder after resetting.",
- VP = 4,
- Nest = "Platform",
- Eggs = 1,
- Wingspan = 134,
- Forest = true,
- Worm = 1,
- WildFood = 1,
- TotalFood = 2
- },
- ["European Robin"] = {
- Name = "European Robin",
- Game = "european",
- Color = "Brown",
- PowerCategory = "Food-related",
- Description = "From the supply, gain 1 food of a type you already gained this turn.",
- VP = 4,
- Nest = "Bowl",
- Eggs = 4,
- Wingspan = 22,
- Forest = true,
- Worm = 1,
- Grain = 1,
- Berry = 1,
- TotalFood = 3
- },
- ["European Roller"] = {
- Name = "European Roller",
- Game = "european",
- Color = "White",
- PowerCategory = "Other",
- Description = "Place this bird sideways, so that it covers 2 [grassland] spaces. Pay the lower egg cost.",
- VP = 3,
- Nest = "Cavity",
- Eggs = 2,
- Wingspan = 70,
- Grassland = true,
- Worm = 1,
- Rat = 1,
- TotalFood = 2
- },
- ["European Turtle Dove"] = {
- Name = "European Turtle Dove",
- Game = "european",
- Color = "White",
- PowerCategory = "Other",
- Description = "Draw 1 new bonus card. Then gain 1 [die] from the birdfeeder, lay 1 [egg] on any bird, or draw 1 [card].",
- BonusCard = true,
- VP = 4,
- Nest = "Platform",
- Eggs = 1,
- Wingspan = 51,
- Forest = true,
- Grassland = true,
- Wetland = true,
- Grain = 2,
- TotalFood = 2
- },
- ["Ferruginous Hawk"] = {
- Name = "Ferruginous Hawk",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Hunting/Fishing",
- Description = "Roll all dice not in birdfeeder. If any are [rat], gain 1 [rat] and cache it on this card.",
- Predator = true,
- VP = 6,
- Nest = "Platform",
- Eggs = 2,
- Wingspan = 142,
- Grassland = true,
- Rat = 2,
- TotalFood = 2
- },
- ["Fish Crow"] = {
- Name = "Fish Crow",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Food from Supply",
- Description = "Discard 1 [egg] from any of your other birds to gain 1 [wild] from the supply.",
- VP = 6,
- Nest = "Platform",
- Eggs = 2,
- Wingspan = 91,
- Forest = true,
- Grassland = true,
- Wetland = true,
- Fish = 1,
- WildFood = 1,
- TotalFood = 2
- },
- ["Forster's Tern"] = {
- Name = "Forster's Tern",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Card-drawing",
- Description = "Draw 1 [card]. If you do, discard 1 [card] from your hand at the end of your turn.",
- VP = 4,
- Nest = "Wild",
- Eggs = 2,
- Wingspan = 79,
- Wetland = true,
- Worm = 1,
- Fish = 1,
- EitherFood = true,
- TotalFood = 1
- },
- ["Franklin's Gull"] = {
- Name = "Franklin's Gull",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Card-drawing",
- Description = "Discard 1 [egg] to draw 2 [card].",
- VP = 3,
- Nest = "Wild",
- Eggs = 2,
- Wingspan = 91,
- Grassland = true,
- Wetland = true,
- Fish = 1,
- WildFood = 1,
- TotalFood = 2
- },
- ["Goldcrest"] = {
- Name = "Goldcrest",
- Game = "european",
- Color = "Brown",
- PowerCategory = "Other",
- Description = "Discard 1 [card] from your hand. If you do, play another bird in your [forest]. Pay its normal food and egg cost.",
- VP = 1,
- Nest = "Bowl",
- Eggs = 6,
- Wingspan = 15,
- Forest = true,
- Worm = 1,
- TotalFood = 1
- },
- ["Golden Eagle"] = {
- Name = "Golden Eagle",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Hunting/Fishing",
- Description = "Look at a [card] from the deck. If <100cm, tuck it behind this bird. If not, discard it.",
- Predator = true,
- VP = 8,
- Nest = "Platform",
- Eggs = 1,
- Wingspan = 201,
- Grassland = true,
- Wetland = true,
- Rat = 3,
- TotalFood = 3
- },
- ["Grasshopper Sparrow"] = {
- Name = "Grasshopper Sparrow",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Egg-laying",
- Description = "Lay 1 [egg] on any bird.",
- VP = 2,
- Nest = "Ground",
- Eggs = 2,
- Wingspan = 20,
- Grassland = true,
- Worm = 1,
- Grain = 1,
- EitherFood = true,
- TotalFood = 1
- },
- ["Gray Catbird"] = {
- Name = "Gray Catbird",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Other",
- Description = "Repeat a brown power on one other bird in this habitat.",
- VP = 5,
- Nest = "Bowl",
- Eggs = 3,
- Wingspan = 28,
- Forest = true,
- Grassland = true,
- Wetland = true,
- Worm = 1,
- Berry = 2,
- TotalFood = 3
- },
- ["Great Blue Heron"] = {
- Name = "Great Blue Heron",
- Game = "core",
- Color = "White",
- PowerCategory = "Other",
- Description = "Play a second bird in your [wetland]. Pay its normal cost.",
- VP = 5,
- Nest = "Platform",
- Eggs = 2,
- Wingspan = 183,
- Wetland = true,
- Worm = 1,
- Fish = 1,
- TotalFood = 2
- },
- ["Great Crested Flycatcher"] = {
- Name = "Great Crested Flycatcher",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Food from Birdfeeder",
- Description = "Gain 1 [worm] from the birdfeeder, if there is one.",
- VP = 5,
- Nest = "Cavity",
- Eggs = 3,
- Wingspan = 33,
- Forest = true,
- Worm = 1,
- Berry = 1,
- TotalFood = 2
- },
- ["Great Crested Grebe"] = {
- Name = "Great Crested Grebe",
- Game = "european",
- Color = "Brown",
- PowerCategory = "Card-drawing",
- Description = "Draw 1 [card] for each empty card slot in this row. At the end of your turn, keep 1 and discard the rest.",
- VP = 3,
- Nest = "Wild",
- Eggs = 2,
- Wingspan = 65,
- Wetland = true,
- Fish = 2,
- TotalFood = 2
- },
- ["Great Egret"] = {
- Name = "Great Egret",
- Game = "core",
- Color = "White",
- PowerCategory = "Other",
- Description = "Play a second bird in your [wetland]. Pay its normal cost.",
- VP = 7,
- Nest = "Platform",
- Eggs = 3,
- Wingspan = 130,
- Wetland = true,
- Fish = 2,
- Rat = 1,
- TotalFood = 3
- },
- ["Great Horned Owl"] = {
- Name = "Great Horned Owl",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Hunting/Fishing",
- Description = "Look at a [card] from the deck. If <100cm, tuck it behind this bird. If not, discard it.",
- Predator = true,
- VP = 8,
- Nest = "Platform",
- Eggs = 2,
- Wingspan = 112,
- Forest = true,
- Rat = 3,
- TotalFood = 3
- },
- ["Great Tit"] = {
- Name = "Great Tit",
- Game = "european",
- Color = "Brown",
- PowerCategory = "Food-related",
- Description = "Reset the birdfeeder. If you do, gain 1 [die] from the birdfeeder after resetting.",
- VP = 4,
- Nest = "Cavity",
- Eggs = 6,
- Wingspan = 24,
- Forest = true,
- Worm = 1,
- Grain = 1,
- Berry = 1,
- TotalFood = 3
- },
- ["Greater Flamingo"] = {
- Name = "Greater Flamingo",
- Game = "european",
- Color = "Brown",
- PowerCategory = "Flocking",
- 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].",
- Flocking = true,
- VP = 3,
- Nest = "Ground",
- Eggs = 1,
- Wingspan = 152,
- Wetland = true,
- Worm = 1,
- Grain = 2,
- TotalFood = 3
- },
- ["Greater Prairie Chicken"] = {
- Name = "Greater Prairie Chicken",
- Game = "core",
- Color = "White",
- PowerCategory = "Other",
- Description = "Draw 2 new bonus cards and keep 1.",
- BonusCard = true,
- VP = 5,
- Nest = "Ground",
- Eggs = 4,
- Wingspan = 71,
- Grassland = true,
- Worm = 1,
- Grain = 2,
- TotalFood = 3
- },
- ["Greater Roadrunner"] = {
- Name = "Greater Roadrunner",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Hunting/Fishing",
- Description = "Look at a [card] from the deck. If <50cm, tuck it behind this bird. If not, discard it.",
- Predator = true,
- VP = 7,
- Nest = "Platform",
- Eggs = 2,
- Wingspan = 56,
- Grassland = true,
- Worm = 1,
- Rat = 1,
- WildFood = 1,
- TotalFood = 3
- },
- ["Green Heron"] = {
- Name = "Green Heron",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Food from Supply",
- Description = "Trade 1 [wild] for any [wild] from the supply.",
- VP = 4,
- Nest = "Platform",
- Eggs = 3,
- Wingspan = 66,
- Wetland = true,
- Worm = 1,
- Fish = 1,
- EitherFood = true,
- TotalFood = 1
- },
- ["Grey Heron"] = {
- Name = "Grey Heron",
- Game = "european",
- Color = "White",
- PowerCategory = "Other",
- Description = "Place this bird sideways, so that it covers 2 [wetland] spaces. Pay the lower egg cost.",
- VP = 3,
- Nest = "Platform",
- Eggs = 2,
- Wingspan = 185,
- Wetland = true,
- Fish = 2,
- TotalFood = 2
- },
- ["Greylag Goose"] = {
- Name = "Greylag Goose",
- Game = "european",
- Color = "Teal",
- PowerCategory = "Other",
- Description = "This bird counts double toward the end-of-round goal, if it qualifies for the goal.",
- VP = 7,
- Nest = "Ground",
- Eggs = 2,
- Wingspan = 164,
- Wetland = true,
- Grain = 3,
- TotalFood = 3
- },
- ["Griffon Vulture"] = {
- Name = "Griffon Vulture",
- Game = "european",
- Color = "Teal",
- PowerCategory = "Food-related",
- Description = "Choose any 1 player (including yourself). Cache 1 [rat] from the supply on this bird for each [predator] that player has.",
- VP = 1,
- Nest = "Platform",
- Eggs = 1,
- Wingspan = 252,
- Grassland = true,
- TotalFood = 0
- },
- ["Hawfinch"] = {
- Name = "Hawfinch",
- Game = "european",
- Color = "Brown",
- PowerCategory = "Food-related",
- Description = "Reset the birdfeeder. If you do, gain 1 [wheat] from the birdfeeder after resetting.",
- VP = 4,
- Nest = "Bowl",
- Eggs = 2,
- Wingspan = 30,
- Forest = true,
- Grain = 2,
- TotalFood = 2
- },
- ["Hermit Thrush"] = {
- Name = "Hermit Thrush",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Food from Birdfeeder",
- Description = "Player(s) with fewest [forest] birds gain 1 [die] from birdfeeder.",
- VP = 7,
- Nest = "Wild",
- Eggs = 2,
- Wingspan = 30,
- Forest = true,
- Worm = 1,
- Berry = 2,
- TotalFood = 3
- },
- ["Hooded Crow"] = {
- Name = "Hooded Crow",
- Game = "european",
- Color = "Teal",
- PowerCategory = "Flocking",
- 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].",
- Flocking = true,
- VP = 3,
- Nest = "Platform",
- Eggs = 2,
- Wingspan = 99,
- Grassland = true,
- Wetland = true,
- Worm = 1,
- WildFood = 2,
- TotalFood = 3
- },
- ["Hooded Merganser"] = {
- Name = "Hooded Merganser",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Other",
- Description = "Repeat 1 [predator] power in this habitat.",
- VP = 5,
- Nest = "Cavity",
- Eggs = 4,
- Wingspan = 61,
- Wetland = true,
- Worm = 1,
- Fish = 1,
- TotalFood = 2
- },
- ["Hooded Warbler"] = {
- Name = "Hooded Warbler",
- Game = "core",
- Color = "White",
- VP = 7,
- Nest = "Bowl",
- Eggs = 3,
- Wingspan = 18,
- Forest = true,
- Worm = 2,
- TotalFood = 2
- },
- ["Horned Lark"] = {
- Name = "Horned Lark",
- Game = "core",
- Color = "Pink",
- PowerCategory = "Flocking",
- Description = "When another player plays a [grassland] bird, tuck 1 [card] from your hand behind this bird.",
- Flocking = true,
- VP = 5,
- Nest = "Ground",
- Eggs = 4,
- Wingspan = 30,
- Grassland = true,
- Worm = 1,
- Grain = 1,
- TotalFood = 2
- },
- ["House Finch"] = {
- Name = "House Finch",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Flocking",
- Description = "Tuck a [card] from your hand behind this bird. If you do, draw 1 [card].",
- Flocking = true,
- VP = 3,
- Nest = "Bowl",
- Eggs = 6,
- Wingspan = 25,
- Forest = true,
- Grassland = true,
- Wetland = true,
- Grain = 1,
- Berry = 1,
- TotalFood = 2
- },
- ["House Sparrow"] = {
- Name = "House Sparrow",
- Game = "european",
- Color = "Teal",
- PowerCategory = "Flocking",
- Description = "Discard up to 5 [wheat] from your supply. For each, tuck 1 [card] from the deck behind this bird.",
- Flocking = true,
- VP = 6,
- Nest = "Cavity",
- Eggs = 5,
- Wingspan = 22,
- Grassland = true,
- Grain = 1,
- Berry = 1,
- TotalFood = 2
- },
- ["House Wren"] = {
- Name = "House Wren",
- Game = "core",
- Color = "White",
- PowerCategory = "Other",
- Description = "Play a second bird in your [grassland] or [forest]. Pay its normal cost.",
- VP = 1,
- Nest = "Cavity",
- Eggs = 5,
- Wingspan = 15,
- Forest = true,
- Grassland = true,
- Worm = 1,
- TotalFood = 1
- },
- ["Inca Dove"] = {
- Name = "Inca Dove",
- Game = "core",
- Color = "White",
- PowerCategory = "Egg-laying",
- Description = "Lay 1 [egg] on each of your birds with a [platform] nest.",
- VP = 2,
- Nest = "Platform",
- Eggs = 4,
- Wingspan = 28,
- Grassland = true,
- Grain = 2,
- TotalFood = 2
- },
- ["Indigo Bunting"] = {
- Name = "Indigo Bunting",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Food from Birdfeeder",
- Description = "Gain 1 [worm] or [berry] from the birdfeeder, if there is one.",
- VP = 5,
- Nest = "Bowl",
- Eggs = 3,
- Wingspan = 20,
- Forest = true,
- Grassland = true,
- Worm = 1,
- Grain = 1,
- Berry = 1,
- TotalFood = 3
- },
- ["Juniper Titmouse"] = {
- Name = "Juniper Titmouse",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Caching Food",
- Description = "Gain 1 [wheat] from the supply and cache it on this card.",
- VP = 4,
- Nest = "Cavity",
- Eggs = 3,
- Wingspan = 23,
- Forest = true,
- Worm = 1,
- Grain = 1,
- TotalFood = 2
- },
- ["Killdeer"] = {
- Name = "Killdeer",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Card-drawing",
- Description = "Discard 1 [egg] to draw 2 [card].",
- VP = 1,
- Nest = "Ground",
- Eggs = 3,
- Wingspan = 46,
- Grassland = true,
- Wetland = true,
- Worm = 1,
- Grain = 1,
- EitherFood = true,
- TotalFood = 1
- },
- ["King Rail"] = {
- Name = "King Rail",
- Game = "core",
- Color = "White",
- PowerCategory = "Other",
- Description = "Draw 2 new bonus cards and keep 1.",
- BonusCard = true,
- VP = 4,
- Nest = "Platform",
- Eggs = 6,
- Wingspan = 51,
- Wetland = true,
- Worm = 1,
- Fish = 1,
- WildFood = 1,
- TotalFood = 3
- },
- ["Lazuli Bunting"] = {
- Name = "Lazuli Bunting",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Egg-laying",
- Description = "All players lay 1 [egg] on any 1 [bowl] bird. You may lay 1 [egg] on 1 additional [bowl] bird.",
- VP = 4,
- Nest = "Bowl",
- Eggs = 4,
- Wingspan = 23,
- Grassland = true,
- Worm = 1,
- Grain = 1,
- Berry = 1,
- TotalFood = 3
- },
- ["Lesser Whitethroat"] = {
- Name = "Lesser Whitethroat",
- Game = "european",
- Color = "Teal",
- PowerCategory = "Egg-laying",
- Description = "Choose a habitat with no [egg]. Lay 1 [egg] on each bird in that habitat.",
- VP = 0,
- Nest = "Bowl",
- Eggs = 2,
- Wingspan = 18,
- Forest = true,
- Grassland = true,
- Worm = 1,
- Berry = 1,
- TotalFood = 2
- },
- ["Lincoln's Sparrow"] = {
- Name = "Lincoln's Sparrow",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Other",
- Description = "If this bird is to the right of all other birds in its habitat, move it to another habitat.",
- VP = 3,
- Nest = "Ground",
- Eggs = 2,
- Wingspan = 20,
- Forest = true,
- Grassland = true,
- Wetland = true,
- Worm = 1,
- Grain = 1,
- TotalFood = 2
- },
- ["Little Bustard"] = {
- Name = "Little Bustard",
- Game = "european",
- Color = "White",
- PowerCategory = "Other",
- Description = "Draw 1 new bonus card. Then gain 1 [card] or lay 1 [egg] on any bird.",
- BonusCard = true,
- VP = 4,
- Nest = "Ground",
- Eggs = 2,
- Wingspan = 110,
- Grassland = true,
- Worm = 1,
- Grain = 1,
- TotalFood = 2
- },
- ["Little Owl"] = {
- Name = "Little Owl",
- Game = "european",
- Color = "Brown",
- PowerCategory = "Food-related",
- Description = "Steal 1 [rat] from another player's supply and cache it on this bird. They gain 1 [die] from the birdfeeder.",
- VP = 4,
- Nest = "Cavity",
- Eggs = 2,
- Wingspan = 56,
- Forest = true,
- Grassland = true,
- Worm = 1,
- Rat = 1,
- TotalFood = 2
- },
- ["Loggerhead Shrike"] = {
- Name = "Loggerhead Shrike",
- Game = "core",
- Color = "Pink",
- PowerCategory = "Caching Food",
- 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.",
- VP = 3,
- Nest = "Bowl",
- Eggs = 4,
- Wingspan = 30,
- Grassland = true,
- Wetland = true,
- Worm = 1,
- Rat = 1,
- TotalFood = 2
- },
- ["Long-Tailed Tit"] = {
- Name = "Long-Tailed Tit",
- Game = "european",
- Color = "White",
- PowerCategory = "Other",
- Description = "Place this bird sideways, so that it covers 2 [forest] spaces. Pay the lower egg cost.",
- VP = 0,
- Nest = "Wild",
- Eggs = 4,
- Wingspan = 18,
- Forest = true,
- Worm = 1,
- Grain = 1,
- TotalFood = 2
- },
- ["Mallard"] = {
- Name = "Mallard",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Card-drawing",
- Description = "Draw 1 [card].",
- VP = 0,
- Nest = "Ground",
- Eggs = 4,
- Wingspan = 89,
- Wetland = true,
- Worm = 1,
- Grain = 1,
- EitherFood = true,
- TotalFood = 1
- },
- ["Mississippi Kite"] = {
- Name = "Mississippi Kite",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Hunting/Fishing",
- Description = "Roll all dice not in birdfeeder. If any are [rat], gain 1 [rat] and cache it on this card.",
- Predator = true,
- VP = 4,
- Nest = "Platform",
- Eggs = 1,
- Wingspan = 79,
- Forest = true,
- Grassland = true,
- Worm = 1,
- Rat = 1,
- EitherFood = true,
- TotalFood = 1
- },
- ["Moltoni's Warbler"] = {
- Name = "Moltoni's Warbler",
- Game = "european",
- Color = "Teal",
- PowerCategory = "Other",
- Description = "If you used all 4 types of actions this round, play another bird. Pay its normal food and egg cost.",
- VP = 3,
- Nest = "Bowl",
- Eggs = 2,
- Wingspan = 17,
- Grassland = true,
- Worm = 1,
- Berry = 1,
- TotalFood = 2
- },
- ["Montagu's Harrier"] = {
- Name = "Montagu's Harrier",
- Game = "european",
- Color = "White",
- PowerCategory = "Hunting and fishing",
- 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.",
- Predator = true,
- VP = 4,
- Nest = "Ground",
- Eggs = 2,
- Wingspan = 113,
- Grassland = true,
- Rat = 2,
- ["* (food cost)"] = true,
- TotalFood = 2
- },
- ["Mountain Bluebird"] = {
- Name = "Mountain Bluebird",
- Game = "core",
- Color = "White",
- PowerCategory = "Other",
- Description = "Play a second bird in your [grassland]. Pay its normal cost.",
- VP = 4,
- Nest = "Cavity",
- Eggs = 5,
- Wingspan = 36,
- Grassland = true,
- Worm = 1,
- Berry = 1,
- TotalFood = 2
- },
- ["Mountain Chickadee"] = {
- Name = "Mountain Chickadee",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Caching Food",
- Description = "Gain 1 [wheat] from the supply and cache it on this card.",
- VP = 2,
- Nest = "Cavity",
- Eggs = 3,
- Wingspan = 23,
- Forest = true,
- Worm = 1,
- Grain = 1,
- EitherFood = true,
- TotalFood = 1
- },
- ["Mourning Dove"] = {
- Name = "Mourning Dove",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Egg-laying",
- Description = "Lay 1 [egg] on this bird.",
- VP = 0,
- Nest = "Platform",
- Eggs = 5,
- Wingspan = 46,
- Forest = true,
- Grassland = true,
- Wetland = true,
- Grain = 1,
- TotalFood = 1
- },
- ["Mute Swan"] = {
- Name = "Mute Swan",
- Game = "european",
- Color = "Brown",
- PowerCategory = "Flocking",
- 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].",
- VP = 4,
- Nest = "Ground",
- Eggs = 3,
- Wingspan = 220,
- Wetland = true,
- Worm = 1,
- Grain = 1,
- WildFood = 1,
- TotalFood = 3
- },
- ["Northern Bobwhite"] = {
- Name = "Northern Bobwhite",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Egg-laying",
- Description = "Lay 1 [egg] on this bird.",
- VP = 5,
- Nest = "Ground",
- Eggs = 6,
- Wingspan = 33,
- Grassland = true,
- Grain = 3,
- TotalFood = 3
- },
- ["Northern Cardinal"] = {
- Name = "Northern Cardinal",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Food from Supply",
- Description = "Gain 1 [berry] from the supply.",
- VP = 3,
- Nest = "Bowl",
- Eggs = 5,
- Wingspan = 30,
- Forest = true,
- Grain = 1,
- Berry = 1,
- TotalFood = 2
- },
- ["Northern Flicker"] = {
- Name = "Northern Flicker",
- Game = "core",
- Color = "White",
- PowerCategory = "Food from Birdfeeder",
- Description = "Gain all [worm] that are in the birdfeeder.",
- VP = 2,
- Nest = "Cavity",
- Eggs = 4,
- Wingspan = 51,
- Forest = true,
- Grassland = true,
- Worm = 1,
- Grain = 1,
- Berry = 1,
- EitherFood = true,
- TotalFood = 1
- },
- ["Northern Gannet"] = {
- Name = "Northern Gannet",
- Game = "european",
- Color = "Brown",
- PowerCategory = "Hunting and fishing",
- 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.",
- Predator = true,
- VP = 5,
- Nest = "Ground",
- Eggs = 1,
- Wingspan = 173,
- Wetland = true,
- Fish = 2,
- TotalFood = 2
- },
- ["Northern Goshawk"] = {
- Name = "Northern Goshawk",
- Game = "european",
- Color = "White",
- PowerCategory = "Hunting and Fishing",
- 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.",
- Predator = true,
- VP = 5,
- Nest = "Platform",
- Eggs = 2,
- Wingspan = 106,
- Forest = true,
- Rat = 2,
- ["* (food cost)"] = true,
- TotalFood = 2
- },
- ["Northern Harrier"] = {
- Name = "Northern Harrier",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Hunting/Fishing",
- Description = "Look at a [card] from the deck. If <75cm, tuck it behind this bird. If not, discard it.",
- Predator = true,
- VP = 3,
- Nest = "Platform",
- Eggs = 2,
- Wingspan = 109,
- Grassland = true,
- Wetland = true,
- Rat = 1,
- TotalFood = 1
- },
- ["Northern Mockingbird"] = {
- Name = "Northern Mockingbird",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Other",
- Description = "Repeat a brown power on one other bird in this habitat.",
- VP = 2,
- Nest = "Bowl",
- Eggs = 4,
- Wingspan = 36,
- Forest = true,
- Grassland = true,
- Wetland = true,
- Worm = 1,
- Berry = 1,
- TotalFood = 2
- },
- ["Northern Shoveler"] = {
- Name = "Northern Shoveler",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Card-drawing",
- Description = "All players draw 1 [card] from the deck.",
- VP = 7,
- Nest = "Ground",
- Eggs = 4,
- Wingspan = 76,
- Wetland = true,
- Worm = 1,
- Grain = 2,
- TotalFood = 3
- },
- ["Osprey"] = {
- Name = "Osprey",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Food from Supply",
- Description = "All players gain 1 [fish] from the supply.",
- VP = 5,
- Nest = "Platform",
- Eggs = 2,
- Wingspan = 160,
- Wetland = true,
- Fish = 1,
- TotalFood = 1
- },
- ["Painted Bunting"] = {
- Name = "Painted Bunting",
- Game = "core",
- Color = "White",
- PowerCategory = "Other",
- Description = "Draw 2 new bonus cards and keep 1.",
- BonusCard = true,
- VP = 5,
- Nest = "Bowl",
- Eggs = 4,
- Wingspan = 23,
- Grassland = true,
- Worm = 1,
- Grain = 2,
- TotalFood = 3
- },
- ["Painted Whitestart"] = {
- Name = "Painted Whitestart",
- Game = "swiftstart",
- Color = "Brown",
- Description = "Gain 1 [worm] from the supply.",
- VP = 1,
- Nest = "Ground",
- Eggs = 3,
- Wingspan = 22,
- Forest = true,
- Worm = 1,
- TotalFood = 1
- },
- ["Parrot Crossbill"] = {
- Name = "Parrot Crossbill",
- Game = "european",
- Color = "Brown",
- PowerCategory = "Food-related",
- Description = "Remove any 1 [die] from the birdfeeder, then gain 1 [wheat] from the supply.",
- VP = 6,
- Nest = "Bowl",
- Eggs = 2,
- Wingspan = 30,
- Forest = true,
- Grain = 3,
- TotalFood = 3
- },
- ["Peregrine Falcon"] = {
- Name = "Peregrine Falcon",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Hunting/Fishing",
- Description = "Look at a [card] from the deck. If <100cm, tuck it behind this bird. If not, discard it.",
- Predator = true,
- VP = 5,
- Nest = "Platform",
- Eggs = 2,
- Wingspan = 104,
- Grassland = true,
- Wetland = true,
- Rat = 2,
- TotalFood = 2
- },
- ["Pied-Billed Grebe"] = {
- Name = "Pied-Billed Grebe",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Card-drawing",
- Description = "Draw 2 [card]. If you do, discard 1 [card] from your hand at the end of your turn.",
- VP = 0,
- Nest = "Platform",
- Eggs = 4,
- Wingspan = 41,
- Wetland = true,
- Worm = 1,
- Fish = 1,
- EitherFood = true,
- TotalFood = 1
- },
- ["Pileated Woodpecker"] = {
- Name = "Pileated Woodpecker",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Egg-laying",
- Description = "All players lay 1 [egg] on any 1 [cavity] bird. You may lay 1 [egg] on 1 additional [cavity] bird.",
- VP = 4,
- Nest = "Cavity",
- Eggs = 2,
- Wingspan = 74,
- Forest = true,
- Worm = 1,
- Berry = 1,
- TotalFood = 2
- },
- ["Pine Siskin"] = {
- Name = "Pine Siskin",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Flocking",
- Description = "Tuck a [card] from your hand behind this bird. If you do, gain 1 [wheat] from the supply.",
- Flocking = true,
- VP = 3,
- Nest = "Bowl",
- Eggs = 2,
- Wingspan = 23,
- Forest = true,
- Grain = 2,
- TotalFood = 2
- },
- ["Prothonotary Warbler"] = {
- Name = "Prothonotary Warbler",
- Game = "core",
- Color = "White",
- VP = 8,
- Nest = "Cavity",
- Eggs = 4,
- Wingspan = 23,
- Forest = true,
- Wetland = true,
- Worm = 2,
- Grain = 1,
- TotalFood = 3
- },
- ["Purple Gallinule"] = {
- Name = "Purple Gallinule",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Card-drawing",
- Description = "All players draw 1 [card] from the deck.",
- VP = 7,
- Nest = "Platform",
- Eggs = 4,
- Wingspan = 56,
- Wetland = true,
- Grain = 1,
- Berry = 1,
- WildFood = 1,
- TotalFood = 3
- },
- ["Purple Martin"] = {
- Name = "Purple Martin",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Flocking",
- Description = "Tuck a [card] from your hand behind this bird. If you do, draw 1 [card].",
- Flocking = true,
- VP = 2,
- Nest = "Cavity",
- Eggs = 3,
- Wingspan = 46,
- Grassland = true,
- Wetland = true,
- Worm = 1,
- TotalFood = 1
- },
- ["Pygmy Nuthatch"] = {
- Name = "Pygmy Nuthatch",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Flocking",
- Description = "Tuck a [card] from your hand behind this bird. If you do, gain 1 [worm] or 1 [wheat] from the supply.",
- Flocking = true,
- VP = 2,
- Nest = "Cavity",
- Eggs = 4,
- Wingspan = 20,
- Forest = true,
- Worm = 1,
- Grain = 1,
- TotalFood = 2
- },
- ["Red Crossbill"] = {
- Name = "Red Crossbill",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Food from Supply",
- Description = "All players gain 1 [wheat] from the supply.",
- VP = 6,
- Nest = "Bowl",
- Eggs = 2,
- Wingspan = 28,
- Forest = true,
- Grain = 2,
- TotalFood = 2
- },
- ["Red Kite"] = {
- Name = "Red Kite",
- Game = "european",
- Color = "White",
- PowerCategory = "Hunting and fishing",
- 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.",
- Predator = true,
- VP = 4,
- Nest = "Platform",
- Eggs = 2,
- Wingspan = 157,
- Forest = true,
- Grassland = true,
- Wetland = true,
- Rat = 1,
- WildFood = 1,
- ["* (food cost)"] = true,
- TotalFood = 2
- },
- ["Red Knot"] = {
- Name = "Red Knot",
- Game = "european",
- Color = "White",
- PowerCategory = "Other",
- Description = "Draw 1 new bonus card. Then draw 3 [card] and keep 1 of them.",
- BonusCard = true,
- VP = 7,
- Nest = "Ground",
- Eggs = 2,
- Wingspan = 50,
- Wetland = true,
- Worm = 3,
- TotalFood = 3
- },
- ["Red-Backed Shrike"] = {
- Name = "Red-Backed Shrike",
- Game = "european",
- Color = "Brown",
- PowerCategory = "Food-related",
- Description = "Steal 1 [worm] from another player's supply and cache it on this bird. They gain 1 [die] from the birdfeeder.",
- VP = 5,
- Nest = "Bowl",
- Eggs = 2,
- Wingspan = 33,
- Grassland = true,
- Worm = 1,
- Rat = 1,
- WildFood = 1,
- TotalFood = 3
- },
- ["Red-Bellied Woodpecker"] = {
- Name = "Red-Bellied Woodpecker",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Caching Food",
- Description = "Gain 1 [wheat] from the birdfeeder (if available). You may cache it on this card.",
- VP = 1,
- Nest = "Cavity",
- Eggs = 3,
- Wingspan = 41,
- Forest = true,
- Worm = 1,
- Grain = 1,
- EitherFood = true,
- TotalFood = 1
- },
- ["Red-Breasted Merganser"] = {
- Name = "Red-Breasted Merganser",
- Game = "swiftstart",
- Color = "Brown",
- Description = "Draw 2 [card]. If you do, discard 1 [card] from your hand at the end of your turn.",
- VP = 3,
- Nest = "Ground",
- Eggs = 4,
- Wingspan = 78,
- Wetland = true,
- Worm = 1,
- Fish = 1,
- TotalFood = 2
- },
- ["Red-Breasted Nuthatch"] = {
- Name = "Red-Breasted Nuthatch",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Caching Food",
- Description = "Gain 1 [wheat] from the supply and cache it on this card.",
- VP = 2,
- Nest = "Cavity",
- Eggs = 3,
- Wingspan = 23,
- Forest = true,
- Worm = 1,
- Grain = 1,
- EitherFood = true,
- TotalFood = 1
- },
- ["Red-Cockaded Woodpecker"] = {
- Name = "Red-Cockaded Woodpecker",
- Game = "core",
- Color = "White",
- PowerCategory = "Other",
- Description = "Draw 2 new bonus cards and keep 1.",
- BonusCard = true,
- VP = 4,
- Nest = "Cavity",
- Eggs = 2,
- Wingspan = 36,
- Forest = true,
- Worm = 1,
- Berry = 1,
- TotalFood = 2
- },
- ["Red-Crowned Crane"] = {
- Name = "Red-Crowned Crane",
- Game = "chinesepromo",
- Color = "White",
- Description = "Draw 3 new bonus cards and keep 1.",
- BonusCard = true,
- VP = 7,
- Nest = "Ground",
- Eggs = 1,
- Wingspan = 235,
- Wetland = true,
- Worm = 1,
- Grain = 1,
- Fish = 1,
- TotalFood = 3
- },
- ["Red-Eyed Vireo"] = {
- Name = "Red-Eyed Vireo",
- Game = "core",
- Color = "White",
- PowerCategory = "Other",
- Description = "Play a second bird in your [forest]. Pay its normal cost.",
- VP = 3,
- Nest = "Wild",
- Eggs = 2,
- Wingspan = 25,
- Forest = true,
- Worm = 1,
- Berry = 1,
- EitherFood = true,
- TotalFood = 1
- },
- ["Red-Headed Woodpecker"] = {
- Name = "Red-Headed Woodpecker",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Caching Food",
- Description = "Gain 1 [wheat] from the birdfeeder (if available). You may cache it on this card.",
- VP = 4,
- Nest = "Cavity",
- Eggs = 3,
- Wingspan = 43,
- Forest = true,
- Grassland = true,
- Wetland = true,
- Worm = 1,
- Grain = 1,
- WildFood = 1,
- TotalFood = 3
- },
- ["Red-Legged Partridge"] = {
- Name = "Red-Legged Partridge",
- Game = "european",
- Color = "Brown",
- PowerCategory = "Egg-laying",
- Description = "Lay 1 [egg] on each bird in this column, including this one.",
- VP = 1,
- Nest = "Ground",
- Eggs = 6,
- Wingspan = 48,
- Grassland = true,
- Grain = 3,
- TotalFood = 3
- },
- ["Red-Shouldered Hawk"] = {
- Name = "Red-Shouldered Hawk",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Hunting/Fishing",
- Description = "Look at a [card] from the deck. If <75cm, tuck it under this bird. If not, discard it.",
- Predator = true,
- VP = 3,
- Nest = "Platform",
- Eggs = 2,
- Wingspan = 102,
- Forest = true,
- Rat = 1,
- TotalFood = 1
- },
- ["Red-Tailed Hawk"] = {
- Name = "Red-Tailed Hawk",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Hunting/Fishing",
- Description = "Look at a [card] from the deck. If <75cm, tuck it behind this bird. If not, discard it.",
- Predator = true,
- VP = 5,
- Nest = "Platform",
- Eggs = 2,
- Wingspan = 124,
- Forest = true,
- Grassland = true,
- Wetland = true,
- Rat = 2,
- TotalFood = 2
- },
- ["Red-Winged Blackbird"] = {
- Name = "Red-Winged Blackbird",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Flocking",
- Description = "Tuck a [card] from your hand behind this bird. If you do, also lay 1 [egg] on this bird.",
- Flocking = true,
- VP = 2,
- Nest = "Bowl",
- Eggs = 3,
- Wingspan = 33,
- Grassland = true,
- Wetland = true,
- Grain = 1,
- TotalFood = 1
- },
- ["Ring-Billed Gull"] = {
- Name = "Ring-Billed Gull",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Flocking",
- Description = "Tuck a [card] from your hand behind this bird. If you do, draw 1 [card].",
- Flocking = true,
- VP = 4,
- Nest = "Ground",
- Eggs = 2,
- Wingspan = 122,
- Wetland = true,
- WildFood = 2,
- TotalFood = 2
- },
- ["Rose-Breasted Grosbeak"] = {
- Name = "Rose-Breasted Grosbeak",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Food from Birdfeeder",
- Description = "Gain 1 [wheat] or [berry] from the birdfeeder, if there is one.",
- VP = 6,
- Nest = "Bowl",
- Eggs = 3,
- Wingspan = 33,
- Forest = true,
- Worm = 1,
- Grain = 1,
- Berry = 1,
- TotalFood = 3
- },
- ["Roseate Spoonbill"] = {
- Name = "Roseate Spoonbill",
- Game = "core",
- Color = "White",
- PowerCategory = "Other",
- Description = "Draw 2 new bonus cards and keep 1.",
- BonusCard = true,
- VP = 6,
- Nest = "Platform",
- Eggs = 2,
- Wingspan = 127,
- Wetland = true,
- Worm = 1,
- Grain = 1,
- Fish = 1,
- TotalFood = 3
- },
- ["Ruby-Crowned Kinglet"] = {
- Name = "Ruby-Crowned Kinglet",
- Game = "core",
- Color = "White",
- PowerCategory = "Other",
- Description = "Play a second bird in your [forest]. Pay its normal cost.",
- VP = 2,
- Nest = "Bowl",
- Eggs = 3,
- Wingspan = 20,
- Forest = true,
- Worm = 1,
- Grain = 1,
- Berry = 1,
- EitherFood = true,
- TotalFood = 1
- },
- ["Ruby-Throated Hummingbird"] = {
- Name = "Ruby-Throated Hummingbird",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Food from Birdfeeder",
- Description = "Each player gains 1 [die] from the birdfeeder, starting with the player of your choice.",
- VP = 4,
- Nest = "Bowl",
- Eggs = 2,
- Wingspan = 10,
- Forest = true,
- Grassland = true,
- Wetland = true,
- WildFood = 1,
- TotalFood = 1
- },
- ["Ruddy Duck"] = {
- Name = "Ruddy Duck",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Card-drawing",
- Description = "Draw 2 [card]. If you do, discard 1 [card] from your hand at the end of your turn.",
- VP = 0,
- Nest = "Platform",
- Eggs = 5,
- Wingspan = 48,
- Wetland = true,
- Worm = 1,
- Grain = 1,
- EitherFood = true,
- TotalFood = 1
- },
- ["Ruff"] = {
- Name = "Ruff",
- Game = "european",
- Color = "Teal",
- PowerCategory = "Flocking",
- Description = "Tuck up to 3 [card] from your hand behind this bird. Draw 1 [card] for each card you tucked.",
- Flocking = true,
- VP = 2,
- Nest = "Ground",
- Eggs = 2,
- Wingspan = 56,
- Grassland = true,
- Wetland = true,
- Worm = 1,
- WildFood = 1,
- TotalFood = 2
- },
- ["Sandhill Crane"] = {
- Name = "Sandhill Crane",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Flocking",
- Description = "Discard 1 [wheat] to tuck 2 [card] from the deck behind this bird.",
- Flocking = true,
- VP = 5,
- Nest = "Ground",
- Eggs = 1,
- Wingspan = 196,
- Grassland = true,
- Wetland = true,
- Grain = 2,
- WildFood = 1,
- TotalFood = 3
- },
- ["Savannah Sparrow"] = {
- Name = "Savannah Sparrow",
- Game = "core",
- Color = "White",
- PowerCategory = "Other",
- Description = "Play a second bird in your [grassland]. Pay its normal cost.",
- VP = 2,
- Nest = "Ground",
- Eggs = 3,
- Wingspan = 18,
- Grassland = true,
- Worm = 1,
- Grain = 1,
- EitherFood = true,
- TotalFood = 1
- },
- ["Savi's Warbler"] = {
- Name = "Savi's Warbler",
- Game = "european",
- Color = "Brown",
- PowerCategory = "Card-drawing",
- Description = "Draw 2 [card]. All other players draw 1 [card] from the deck.",
- VP = 1,
- Nest = "Bowl",
- Eggs = 4,
- Wingspan = 20,
- Wetland = true,
- Worm = 1,
- TotalFood = 1
- },
- ["Say's Phoebe"] = {
- Name = "Say's Phoebe",
- Game = "core",
- Color = "White",
- PowerCategory = "Egg-laying",
- Description = "Lay 1 [egg] on each of your birds with a [bowl] nest.",
- VP = 5,
- Nest = "Bowl",
- Eggs = 3,
- Wingspan = 33,
- Grassland = true,
- Worm = 3,
- TotalFood = 3
- },
- ["Scaled Quail"] = {
- Name = "Scaled Quail",
- Game = "swiftstart",
- Color = "Brown",
- Description = "Lay 1 [egg] on this bird.",
- VP = 0,
- Nest = "Ground",
- Eggs = 6,
- Wingspan = 36,
- Grassland = true,
- Grain = 1,
- TotalFood = 1
- },
- ["Scissor-Tailed Flycatcher"] = {
- Name = "Scissor-Tailed Flycatcher",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Food from Supply",
- Description = "All players gain 1 [worm] from the supply.",
- VP = 8,
- Nest = "Bowl",
- Eggs = 2,
- Wingspan = 38,
- Grassland = true,
- Worm = 2,
- Berry = 1,
- TotalFood = 3
- },
- ["Short-Toed Treecreeper"] = {
- Name = "Short-Toed Treecreeper",
- Game = "european",
- Color = "Brown",
- PowerCategory = "Other",
- Description = "Discard 1 [egg] from any bird. If you do, play another bird in your [forest]. Pay its normal food and egg cost.",
- VP = 2,
- Nest = "Cavity",
- Eggs = 5,
- Wingspan = 20,
- Forest = true,
- Worm = 1,
- Grain = 1,
- TotalFood = 2
- },
- ["Snow Bunting"] = {
- Name = "Snow Bunting",
- Game = "european",
- Color = "Pink",
- PowerCategory = "Tucking",
- 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.",
- Flocking = true,
- VP = 5,
- Nest = "Cavity",
- Eggs = 2,
- Wingspan = 35,
- Grassland = true,
- Wetland = true,
- Worm = 1,
- Grain = 1,
- TotalFood = 2
- },
- ["Snowy Egret"] = {
- Name = "Snowy Egret",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Hunting/Fishing",
- Description = "Roll all dice not in birdfeeder. If any are [fish], gain 1 [fish] and cache it on this card.",
- Predator = true,
- VP = 4,
- Nest = "Platform",
- Eggs = 2,
- Wingspan = 104,
- Wetland = true,
- Worm = 1,
- Fish = 1,
- EitherFood = true,
- TotalFood = 1
- },
- ["Snowy Owl"] = {
- Name = "Snowy Owl",
- Game = "european",
- Color = "White",
- PowerCategory = "Other",
- Description = "Draw 1 new bonus card. Then gain 1 [card] or lay 1 [egg] on any bird.",
- BonusCard = true,
- VP = 4,
- Nest = "Ground",
- Eggs = 3,
- Wingspan = 138,
- Grassland = true,
- Wetland = true,
- Rat = 2,
- TotalFood = 2
- },
- ["Song Sparrow"] = {
- Name = "Song Sparrow",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Other",
- Description = "If this bird is to the right of all other birds in its habitat, move it to another habitat.",
- VP = 0,
- Nest = "Bowl",
- Eggs = 5,
- Wingspan = 20,
- Forest = true,
- Grassland = true,
- Wetland = true,
- Worm = 1,
- Grain = 1,
- Berry = 1,
- EitherFood = true,
- TotalFood = 1
- },
- ["Spotted Owl"] = {
- Name = "Spotted Owl",
- Game = "core",
- Color = "White",
- PowerCategory = "Other",
- Description = "Draw 2 new bonus cards and keep 1.",
- BonusCard = true,
- VP = 5,
- Nest = "Cavity",
- Eggs = 1,
- Wingspan = 102,
- Forest = true,
- Rat = 2,
- TotalFood = 2
- },
- ["Spotted Sandpiper"] = {
- Name = "Spotted Sandpiper",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Card-drawing",
- Description = "All players draw 1 [card] from the deck.",
- VP = 5,
- Nest = "Ground",
- Eggs = 2,
- Wingspan = 38,
- Wetland = true,
- Worm = 1,
- TotalFood = 1
- },
- ["Spotted Towhee"] = {
- Name = "Spotted Towhee",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Food from Supply",
- Description = "Gain 1 [wheat] from the supply.",
- VP = 0,
- Nest = "Ground",
- Eggs = 4,
- Wingspan = 28,
- Forest = true,
- Grassland = true,
- Worm = 1,
- Grain = 1,
- Berry = 1,
- EitherFood = true,
- TotalFood = 1
- },
- ["Sprague's Pipit"] = {
- Name = "Sprague's Pipit",
- Game = "core",
- Color = "White",
- PowerCategory = "Other",
- Description = "Draw 2 new bonus cards and keep 1.",
- BonusCard = true,
- VP = 3,
- Nest = "Ground",
- Eggs = 3,
- Wingspan = 25,
- Grassland = true,
- Worm = 1,
- Grain = 1,
- TotalFood = 2
- },
- ["Squacco Heron"] = {
- Name = "Squacco Heron",
- Game = "european",
- Color = "Brown",
- PowerCategory = "Card-drawing",
- Description = "Gain 1 face-up [card] that can live in [wetland].",
- VP = 3,
- Nest = "Platform",
- Eggs = 2,
- Wingspan = 86,
- Wetland = true,
- Worm = 1,
- Fish = 1,
- TotalFood = 2
- },
- ["Steller's Jay"] = {
- Name = "Steller's Jay",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Caching Food",
- Description = "Gain 1 [wheat] from the birdfeeder (if available). You may cache it on this card.",
- VP = 5,
- Nest = "Bowl",
- Eggs = 2,
- Wingspan = 48,
- Forest = true,
- Grain = 2,
- WildFood = 1,
- TotalFood = 3
- },
- ["Swainson's Hawk"] = {
- Name = "Swainson's Hawk",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Hunting/Fishing",
- Description = "Look at a [card] from the deck. If <75cm, tuck it behind this bird. If not, discard it.",
- Predator = true,
- VP = 5,
- Nest = "Platform",
- Eggs = 2,
- Wingspan = 130,
- Grassland = true,
- Worm = 1,
- Rat = 1,
- TotalFood = 2
- },
- ["Thekla's Lark"] = {
- Name = "Thekla's Lark",
- Game = "european",
- Color = "Brown",
- PowerCategory = "Egg-laying",
- Description = "Discard 1 [wheat] from your supply. If you do, lay 2 [egg] on this bird.",
- VP = 4,
- Nest = "Ground",
- Eggs = 3,
- Wingspan = 34,
- Grassland = true,
- Worm = 2,
- Grain = 1,
- TotalFood = 3
- },
- ["Tree Swallow"] = {
- Name = "Tree Swallow",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Flocking",
- Description = "Tuck a [card] from your hand behind this bird. If you do, draw 1 [card].",
- Flocking = true,
- VP = 3,
- Nest = "Cavity",
- Eggs = 4,
- Wingspan = 38,
- Wetland = true,
- Worm = 1,
- Berry = 1,
- TotalFood = 2
- },
- ["Trumpeter Swan"] = {
- Name = "Trumpeter Swan",
- Game = "core",
- Color = "White",
- VP = 9,
- Nest = "Ground",
- Eggs = 2,
- Wingspan = 203,
- Wetland = true,
- Grain = 2,
- WildFood = 1,
- TotalFood = 3
- },
- ["Tufted Titmouse"] = {
- Name = "Tufted Titmouse",
- Game = "core",
- Color = "White",
- PowerCategory = "Other",
- Description = "Play a second bird in your [forest]. Pay its normal cost.",
- VP = 2,
- Nest = "Cavity",
- Eggs = 3,
- Wingspan = 25,
- Forest = true,
- Worm = 1,
- Grain = 1,
- Berry = 1,
- EitherFood = true,
- TotalFood = 1
- },
- ["Turkey Vulture"] = {
- Name = "Turkey Vulture",
- Game = "core",
- Color = "Pink",
- PowerCategory = "Food from Birdfeeder",
- Description = "When another player's predator succeeds, gain 1 [die] from the birdfeeder.",
- VP = 1,
- Nest = "Cavity",
- Eggs = 1,
- Wingspan = 170,
- Forest = true,
- Grassland = true,
- Wetland = true,
- TotalFood = 0
- },
- ["Vaux's Swift"] = {
- Name = "Vaux's Swift",
- Game = "swiftstart",
- Color = "Brown",
- Description = "Tuck a [card] from your hand behind this bird. If you do, gain 1 [worm] from the supply.",
- Flocking = true,
- VP = 2,
- Nest = "Cavity",
- Eggs = 3,
- Wingspan = 31,
- Forest = true,
- Worm = 1,
- TotalFood = 1
- },
- ["Violet-Green Swallow"] = {
- Name = "Violet-Green Swallow",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Flocking",
- Description = "Tuck a [card] from your hand behind this bird. If you do, draw 1 [card].",
- Flocking = true,
- VP = 3,
- Nest = "Cavity",
- Eggs = 3,
- Wingspan = 36,
- Forest = true,
- Grassland = true,
- Wetland = true,
- Worm = 2,
- TotalFood = 2
- },
- ["Western Meadowlark"] = {
- Name = "Western Meadowlark",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Egg-laying",
- Description = "All players lay 1 [egg] on any 1 [ground] bird. You may lay 1 [egg] on 1 additional [ground] bird.",
- VP = 2,
- Nest = "Ground",
- Eggs = 4,
- Wingspan = 38,
- Grassland = true,
- Worm = 1,
- Grain = 1,
- TotalFood = 2
- },
- ["Western Tanager"] = {
- Name = "Western Tanager",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Food from Birdfeeder",
- Description = "Gain 1 [worm] or [berry] from the birdfeeder, if there is one.",
- VP = 6,
- Nest = "Bowl",
- Eggs = 2,
- Wingspan = 30,
- Forest = true,
- Worm = 2,
- Berry = 1,
- TotalFood = 3
- },
- ["White Stork"] = {
- Name = "White Stork",
- Game = "european",
- Color = "Brown",
- PowerCategory = "Card-drawing",
- Description = "Discard all remaining face-up [card] and refill the tray. If you do, draw 1 of the new face-up [card].",
- VP = 8,
- Nest = "Platform",
- Eggs = 2,
- Wingspan = 160,
- Grassland = true,
- Wetland = true,
- Worm = 1,
- Fish = 1,
- WildFood = 1,
- TotalFood = 3
- },
- ["White Wagtail"] = {
- Name = "White Wagtail",
- Game = "european",
- Color = "Teal",
- PowerCategory = "Other",
- Description = "If you used all 4 types of actions this round, play another bird. Pay its normal food and egg cost.",
- VP = 2,
- Nest = "Bowl",
- Eggs = 5,
- Wingspan = 28,
- Grassland = true,
- Wetland = true,
- Worm = 2,
- TotalFood = 2
- },
- ["White-Backed Woodpecker"] = {
- Name = "White-Backed Woodpecker",
- Game = "european",
- Color = "Brown",
- PowerCategory = "Food-related",
- Description = "Gain 1 [die] from the birdfeeder.",
- VP = 2,
- Nest = "Cavity",
- Eggs = 2,
- Wingspan = 39,
- Forest = true,
- Worm = 1,
- Berry = 1,
- EitherFood = true,
- TotalFood = 1
- },
- ["White-Breasted Nuthatch"] = {
- Name = "White-Breasted Nuthatch",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Caching Food",
- Description = "Gain 1 [wheat] from the supply and cache it on this card.",
- VP = 2,
- Nest = "Cavity",
- Eggs = 3,
- Wingspan = 28,
- Forest = true,
- Worm = 1,
- Grain = 1,
- EitherFood = true,
- TotalFood = 1
- },
- ["White-Crowned Sparrow"] = {
- Name = "White-Crowned Sparrow",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Other",
- Description = "If this bird is to the right of all other birds in its habitat, move it to another habitat.",
- VP = 2,
- Nest = "Ground",
- Eggs = 5,
- Wingspan = 25,
- Forest = true,
- Grassland = true,
- Wetland = true,
- Worm = 1,
- Grain = 1,
- TotalFood = 2
- },
- ["White-Faced Ibis"] = {
- Name = "White-Faced Ibis",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Hunting/Fishing",
- Description = "Roll all dice not in birdfeeder. If any are [fish], gain 1 [fish] and cache it on this card.",
- Predator = true,
- VP = 8,
- Nest = "Platform",
- Eggs = 2,
- Wingspan = 91,
- Wetland = true,
- Worm = 2,
- Fish = 1,
- TotalFood = 3
- },
- ["White-Throated Dipper"] = {
- Name = "White-Throated Dipper",
- Game = "european",
- Color = "Brown",
- PowerCategory = "Card-drawing",
- Description = "Discard all remaining face-up [card] and refill the tray. If you do, draw 1 of the new face-up [card].",
- VP = 3,
- Nest = "Cavity",
- Eggs = 4,
- Wingspan = 28,
- Wetland = true,
- Worm = 1,
- Fish = 1,
- TotalFood = 2
- },
- ["White-Throated Swift"] = {
- Name = "White-Throated Swift",
- Game = "swiftstart",
- Color = "Brown",
- Description = "Tuck a [card] from your hand behind this bird. If you do, lay 1 [egg] on any bird.",
- Flocking = true,
- VP = 2,
- Nest = "Cavity",
- Eggs = 2,
- Wingspan = 38,
- Grassland = true,
- Worm = 1,
- TotalFood = 1
- },
- ["Whooping Crane"] = {
- Name = "Whooping Crane",
- Game = "core",
- Color = "White",
- PowerCategory = "Other",
- Description = "Draw 2 new bonus cards and keep 1.",
- BonusCard = true,
- VP = 6,
- Nest = "Ground",
- Eggs = 1,
- Wingspan = 221,
- Wetland = true,
- WildFood = 3,
- TotalFood = 3
- },
- ["Wild Turkey"] = {
- Name = "Wild Turkey",
- Game = "core",
- VP = 8,
- Nest = "Ground",
- Eggs = 5,
- Wingspan = 135,
- Forest = true,
- Grassland = true,
- Grain = 2,
- Berry = 1,
- TotalFood = 3
- },
- ["Willet"] = {
- Name = "Willet",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Hunting/Fishing",
- Description = "Roll all dice not in birdfeeder. If any are [fish], gain 1 [fish] and cache it on this card.",
- Predator = true,
- VP = 4,
- Nest = "Ground",
- Eggs = 2,
- Wingspan = 66,
- Wetland = true,
- Worm = 1,
- Fish = 1,
- EitherFood = true,
- TotalFood = 1
- },
- ["Wilson's Snipe"] = {
- Name = "Wilson's Snipe",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Card-drawing",
- Description = "All players draw 1 [card] from the deck.",
- VP = 5,
- Nest = "Ground",
- Eggs = 2,
- Wingspan = "41",
- Wetland = true,
- Worm = 1,
- TotalFood = 1
- },
- ["Wilson's Storm Petrel"] = {
- Name = "Wilson's Storm Petrel",
- Game = "european",
- Color = "Brown",
- PowerCategory = "Card-drawing",
- Description = "Draw 1 [card] for each empty card slot in this row. At the end of your turn, keep 1 and discard the rest.",
- VP = 6,
- Nest = "Wild",
- Eggs = 1,
- Wingspan = 38,
- Wetland = true,
- Worm = 1,
- Fish = 2,
- TotalFood = 3
- },
- ["Wood Duck"] = {
- Name = "Wood Duck",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Card-drawing",
- Description = "Draw 2 [card]. If you do, discard 1 [card] from your hand at the end of your turn.",
- VP = 4,
- Nest = "Cavity",
- Eggs = 4,
- Wingspan = 76,
- Forest = true,
- Wetland = true,
- Grain = 2,
- Berry = 1,
- TotalFood = 3
- },
- ["Wood Stork"] = {
- Name = "Wood Stork",
- Game = "core",
- Color = "White",
- PowerCategory = "Other",
- Description = "Draw 2 new bonus cards and keep 1.",
- BonusCard = true,
- VP = 6,
- Nest = "Platform",
- Eggs = 2,
- Wingspan = 155,
- Wetland = true,
- Fish = 1,
- Rat = 1,
- WildFood = 1,
- TotalFood = 3
- },
- ["Yellow-Bellied Sapsucker"] = {
- Name = "Yellow-Bellied Sapsucker",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Food from Supply",
- Description = "Gain 1 [worm] from the supply.",
- VP = 3,
- Nest = "Cavity",
- Eggs = 3,
- Wingspan = 41,
- Forest = true,
- Worm = 1,
- Berry = 1,
- TotalFood = 2
- },
- ["Yellow-Billed Cuckoo"] = {
- Name = "Yellow-Billed Cuckoo",
- Game = "core",
- Color = "Pink",
- PowerCategory = "Egg-laying",
- Description = "When another player takes the 'lay eggs' action, this bird lays 1 [egg] on another bird with a [bowl] nest.",
- VP = 5,
- Nest = "Platform",
- Eggs = 2,
- Wingspan = 46,
- Forest = true,
- Worm = 2,
- WildFood = 1,
- TotalFood = 3
- },
- ["Yellow-Breasted Chat"] = {
- Name = "Yellow-Breasted Chat",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Other",
- Description = "If this bird is to the right of all other birds in its habitat, move it to another habitat.",
- VP = 5,
- Nest = "Bowl",
- Eggs = 3,
- Wingspan = 25,
- Forest = true,
- Grassland = true,
- Wetland = true,
- Worm = 1,
- Berry = 2,
- TotalFood = 3
- },
- ["Yellow-Headed Blackbird"] = {
- Name = "Yellow-Headed Blackbird",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Flocking",
- Description = "Tuck a [card] from your hand behind this bird. If you do, also lay 1 [egg] on this bird.",
- Flocking = true,
- VP = 4,
- Nest = "Bowl",
- Eggs = 3,
- Wingspan = 38,
- Wetland = true,
- Worm = 1,
- Grain = 1,
- TotalFood = 2
- },
- ["Yellow-Rumped Warbler"] = {
- Name = "Yellow-Rumped Warbler",
- Game = "core",
- Color = "Brown",
- PowerCategory = "Flocking",
- Description = "Tuck a [card] from your hand behind this bird. If you do, draw 1 [card].",
- Flocking = true,
- VP = 1,
- Nest = "Bowl",
- Eggs = 4,
- Wingspan = 23,
- Forest = true,
- Worm = 1,
- Grain = 1,
- Berry = 1,
- EitherFood = true,
- TotalFood = 1
- },
- ["Yellowhammer"] = {
- Name = "Yellowhammer",
- Game = "european",
- Color = "Teal",
- PowerCategory = "Other",
- Description = "If you used all 4 types of actions this round, play another bird. Pay its normal food and egg cost.",
- VP = 2,
- Nest = "Ground",
- Eggs = 3,
- Wingspan = 26,
- Forest = true,
- Grassland = true,
- Grain = 2,
- TotalFood = 2
- },
- ["Abbott's Booby"] = {
- Name = "Abbott's Booby",
- Game = "oceania",
- Color = "White",
- Description = "Draw 3 bonus cards, then discard 2. You may discard bonus cards you did not draw this turn.",
- BonusCard = true,
- VP = 5,
- Nest = "Platform",
- Eggs = 1,
- Wingspan = 10,
- Wetland = true,
- Fish = 2,
- TotalFood = 2
- },
- ["Australasian Pipit"] = {
- Name = "Australasian Pipit",
- Game = "oceania",
- Color = "Yellow",
- PowerCategory = "Flocking",
- Description = "Tuck 1 [card] from the deck behind each bird in your [grassland], including this one.",
- Flocking = true,
- VP = 3,
- Nest = "Ground",
- Eggs = 4,
- Wingspan = 31,
- Grassland = true,
- Worm = 1,
- Grain = 1,
- TotalFood = 2
- },
- ["Australasian Shoveler"] = {
- Name = "Australasian Shoveler",
- Game = "oceania",
- Color = "Brown",
- PowerCategory = "Egg-laying",
- Description = "Choose 1 other player. You both draw 1 [card] from the deck.",
- VP = 4,
- Nest = "Ground",
- Eggs = 4,
- Wingspan = 75,
- Wetland = true,
- Worm = 1,
- Grain = 1,
- TotalFood = 2
- },
- ["Australian Ibis"] = {
- Name = "Australian Ibis",
- Game = "oceania",
- Color = "Brown",
- PowerCategory = "Card-drawing",
- 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.",
- Flocking = true,
- VP = 5,
- Nest = "Platform",
- Eggs = 2,
- Wingspan = 118,
- Grassland = true,
- Wetland = true,
- Worm = 1,
- Fish = 1,
- WildFood = 1,
- TotalFood = 3
- },
- ["Australian Magpie"] = {
- Name = "Australian Magpie",
- Game = "oceania",
- Color = "Yellow",
- PowerCategory = "Food-related",
- 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.",
- VP = 4,
- Nest = "Platform",
- Eggs = 2,
- Wingspan = 75,
- Grassland = true,
- Worm = 1,
- Rat = 2,
- TotalFood = 3
- },
- ["Australian Owlet-Nightjar"] = {
- Name = "Australian Owlet-Nightjar",
- Game = "oceania",
- Color = "Pink",
- PowerCategory = "Food-related",
- 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.",
- VP = 2,
- Nest = "Cavity",
- Eggs = 2,
- Wingspan = 28,
- Forest = true,
- Grassland = true,
- Wetland = true,
- Worm = 1,
- Rat = 1,
- EitherFood = true,
- TotalFood = 1
- },
- ["Australian Raven"] = {
- Name = "Australian Raven",
- Game = "oceania",
- Color = "Yellow",
- PowerCategory = "Flocking",
- Description = "Cache up to 5 [wild] from your supply on this bird.",
- VP = 7,
- Nest = "Platform",
- Eggs = 3,
- Wingspan = 100,
- Forest = true,
- Grassland = true,
- Wetland = true,
- Worm = 1,
- Rat = 1,
- WildFood = 1,
- TotalFood = 3
- },
- ["Australian Reed Warbler"] = {
- Name = "Australian Reed Warbler",
- Game = "oceania",
- Color = "White",
- Description = "Play another bird in your wetland. Pay its normal cost with a 1 [egg] discount.",
- VP = 2,
- Nest = "Bowl",
- Eggs = 3,
- Wingspan = 21,
- Wetland = true,
- Worm = 1,
- TotalFood = 1
- },
- ["Australian Shelduck"] = {
- Name = "Australian Shelduck",
- Game = "oceania",
- Color = "Brown",
- PowerCategory = "Other",
- 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.",
- VP = 3,
- Nest = "Cavity",
- Eggs = 4,
- Wingspan = 113,
- Wetland = true,
- Worm = 1,
- Grain = 1,
- TotalFood = 2
- },
- ["Australian Zebra Finch"] = {
- Name = "Australian Zebra Finch",
- Game = "oceania",
- Color = "Brown",
- PowerCategory = "Other",
- Description = "If the player to your right has a [seed] in their personal supply, tuck a [card] from the deck behind this bird.",
- VP = 1,
- Nest = "Wild",
- Eggs = 3,
- Wingspan = 22,
- Grassland = true,
- Grain = 1,
- TotalFood = 1
- },
- ["Black Noddy"] = {
- Name = "Black Noddy",
- Game = "oceania",
- Color = "Brown",
- PowerCategory = "Other",
- 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.",
- Flocking = true,
- VP = 9,
- Nest = "Platform",
- Eggs = 1,
- Wingspan = 69,
- Wetland = true,
- Fish = 3,
- TotalFood = 3
- },
- ["Black Swan"] = {
- Name = "Black Swan",
- Game = "oceania",
- Color = "Yellow",
- PowerCategory = "Other",
- Description = "Lay 1 [egg] on each of your birds with a wingspan over 100cm, including this one.",
- VP = 6,
- Nest = "Ground",
- Eggs = 3,
- Wingspan = 180,
- Wetland = true,
- Grain = 1,
- WildFood = 2,
- TotalFood = 3
- },
- ["Black-Shouldered Kite"] = {
- Name = "Black-Shouldered Kite",
- Game = "oceania",
- Color = "Brown",
- PowerCategory = "Food-related",
- 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.",
- Predator = true,
- VP = 2,
- Nest = "Platform",
- Eggs = 3,
- Wingspan = 87,
- Grassland = true,
- Rat = 2,
- TotalFood = 2
- },
- ["Blyth's Hornbill"] = {
- Name = "Blyth's Hornbill",
- Game = "oceania",
- Color = "White",
- Description = "Discard all [egg] from 1 of your birds with a [cavity] nest. Tuck twice that many [card] from the deck behind this bird.",
- Flocking = true,
- VP = 7,
- Nest = "Cavity",
- Eggs = 2,
- Wingspan = 150,
- Forest = true,
- Berry = 3,
- TotalFood = 3
- },
- ["Brolga"] = {
- Name = "Brolga",
- Game = "oceania",
- Color = "Brown",
- PowerCategory = "Other",
- Description = "Choose 1 other player. They lay 1 [egg]; you draw 2 [card].",
- VP = 6,
- Nest = "Ground",
- Eggs = 2,
- Wingspan = 215,
- Wetland = true,
- Worm = 1,
- Grain = 1,
- WildFood = 1,
- TotalFood = 3
- },
- ["Brown Falcon"] = {
- Name = "Brown Falcon",
- Game = "oceania",
- Color = "Brown",
- PowerCategory = "Hunting/Fishing",
- 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.",
- Predator = true,
- VP = 5,
- Nest = "Platform",
- Eggs = 2,
- Wingspan = 102,
- Forest = true,
- Grassland = true,
- Wetland = true,
- Worm = 1,
- Rat = 1,
- TotalFood = 2
- },
- ["Budgerigar"] = {
- Name = "Budgerigar",
- Game = "oceania",
- Color = "Brown",
- PowerCategory = "Card-drawing",
- Description = "Tuck the smallest bird in the tray behind this bird.",
- Flocking = true,
- VP = 0,
- Nest = "Cavity",
- Eggs = 3,
- Wingspan = 30,
- Forest = true,
- Grassland = true,
- Wetland = true,
- Grain = 1,
- TotalFood = 1
- },
- ["Cockatiel"] = {
- Name = "Cockatiel",
- Game = "oceania",
- Color = "Brown",
- PowerCategory = "Hunting/Fishing",
- Description = "Discard 1 [seed] to choose a [card] from the tray and tuck it behind this bird.",
- Flocking = true,
- VP = 2,
- Nest = "Cavity",
- Eggs = 5,
- Wingspan = 32,
- Forest = true,
- Grassland = true,
- Wetland = true,
- Grain = 1,
- TotalFood = 1
- },
- ["Count Raggi's Bird-of-Paradise"] = {
- Name = "Count Raggi's Bird-of-Paradise",
- Game = "oceania",
- Color = "Brown",
- PowerCategory = "Egg-laying",
- Description = "Choose 1 other player. You both gain 1 [fruit] from the supply.",
- VP = 7,
- Nest = "Bowl",
- Eggs = 2,
- Wingspan = 22,
- Forest = true,
- Worm = 1,
- Berry = 2,
- TotalFood = 3
- },
- ["Crested Pigeon"] = {
- Name = "Crested Pigeon",
- Game = "oceania",
- Color = "Yellow",
- PowerCategory = "Egg-laying",
- Description = "Cache up to 8 [seed] from your supply on this bird.",
- VP = 3,
- Nest = "Platform",
- Eggs = 4,
- Wingspan = 45,
- Grassland = true,
- Grain = 1,
- TotalFood = 1
- },
- ["Crimson Chat"] = {
- Name = "Crimson Chat",
- Game = "oceania",
- Color = "Brown",
- PowerCategory = "Food-related",
- Description = "Discard 1 [wild] to tuck 1 [card] from the deck behind this bird.",
- Flocking = true,
- VP = 4,
- Nest = "Bowl",
- Eggs = 2,
- Wingspan = 19,
- Grassland = true,
- Worm = 1,
- Grain = 1,
- Berry = 1,
- EitherFood = true,
- TotalFood = 1
- },
- ["Eastern Rosella"] = {
- Name = "Eastern Rosella",
- Game = "oceania",
- Color = "Brown",
- PowerCategory = "Flocking",
- Description = "All players gain 1 [nectar] from the supply. You also gain 1 [seed] from the supply.",
- VP = 4,
- Nest = "Cavity",
- Eggs = 3,
- Wingspan = 48,
- Forest = true,
- Grassland = true,
- Grain = 1,
- Nectar = 2,
- TotalFood = 3
- },
- ["Eastern Whipbird"] = {
- Name = "Eastern Whipbird",
- Game = "oceania",
- Color = "Brown",
- PowerCategory = "Food-related",
- Description = "Choose 1 other player. You both gain 1 [seed] from the supply.",
- VP = 5,
- Nest = "Bowl",
- Eggs = 2,
- Wingspan = 30,
- Forest = true,
- Worm = 1,
- Grain = 1,
- TotalFood = 2
- },
- ["Emu"] = {
- Name = "Emu",
- Game = "oceania",
- Color = "Brown",
- PowerCategory = "Food-related",
- 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).",
- VP = 4,
- Nest = "Ground",
- Eggs = 6,
- Wingspan = 0,
- Forest = true,
- Grassland = true,
- Wetland = true,
- Worm = 1,
- Grain = 1,
- Berry = 1,
- TotalFood = 3
- },
- ["Galah"] = {
- Name = "Galah",
- Game = "oceania",
- Color = "Brown",
- PowerCategory = "Hunting/Fishing",
- 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.",
- Flocking = true,
- VP = 5,
- Nest = "Cavity",
- Eggs = 2,
- Wingspan = 75,
- Forest = true,
- Grassland = true,
- Grain = 3,
- TotalFood = 3
- },
- ["Golden-Headed Cisticola"] = {
- Name = "Golden-Headed Cisticola",
- Game = "oceania",
- Color = "White",
- Description = "Play another bird in your [grassland]. Pay its normal cost with a 1 [egg] discount.",
- VP = 1,
- Nest = "Wild",
- Eggs = 3,
- Wingspan = 15,
- Grassland = true,
- Worm = 1,
- TotalFood = 1
- },
- ["Gould's Finch"] = {
- Name = "Gould's Finch",
- Game = "oceania",
- Color = "Yellow",
- PowerCategory = "Flocking",
- 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.",
- VP = 3,
- Nest = "Cavity",
- Eggs = 3,
- Wingspan = 14,
- Forest = true,
- Grassland = true,
- Wetland = true,
- Grain = 1,
- TotalFood = 1
- },
- ["Green Pygmy-Goose"] = {
- Name = "Green Pygmy-Goose",
- Game = "oceania",
- Color = "Brown",
- PowerCategory = "Food-related",
- Description = "Draw 2 [card] from the deck. Keep 1 and give the other to another player.",
- VP = 4,
- Nest = "Cavity",
- Eggs = 4,
- Wingspan = 54,
- Wetland = true,
- Grain = 2,
- TotalFood = 2
- },
- ["Grey Butcherbird"] = {
- Name = "Grey Butcherbird",
- Game = "oceania",
- Color = "Brown",
- PowerCategory = "Hunting/Fishing",
- 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.",
- Predator = true,
- VP = 5,
- Nest = "Bowl",
- Eggs = 2,
- Wingspan = 40,
- Forest = true,
- Grassland = true,
- Wetland = true,
- Worm = 1,
- Rat = 1,
- WildFood = 1,
- TotalFood = 3
- },
- ["Grey Shrikethrush"] = {
- Name = "Grey Shrikethrush",
- Game = "oceania",
- Color = "Brown",
- PowerCategory = "Egg-laying",
- Description = "Reset the birdfeeder and gain all [rodent], if there are any. You may cache any or all of them on this bird.",
- Predator = true,
- VP = 2,
- Nest = "Bowl",
- Eggs = 3,
- Wingspan = 26,
- Forest = true,
- Worm = 1,
- Nectar = 1,
- EitherFood = true,
- TotalFood = 1
- },
- ["Grey Teal"] = {
- Name = "Grey Teal",
- Game = "oceania",
- Color = "Brown",
- PowerCategory = "Other",
- 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.",
- Flocking = true,
- VP = 2,
- Nest = "Ground",
- Eggs = 5,
- Wingspan = 64,
- Wetland = true,
- Worm = 1,
- Grain = 1,
- TotalFood = 2
- },
- ["Grey Warbler"] = {
- Name = "Grey Warbler",
- Game = "oceania",
- Color = "White",
- Description = "Play another bird in your [forest]. Pay its normal cost with a 1 [egg] discount.",
- VP = 1,
- Nest = "Wild",
- Eggs = 3,
- Wingspan = 16,
- Forest = true,
- Worm = 1,
- Grain = 1,
- Berry = 1,
- EitherFood = true,
- TotalFood = 1
- },
- ["Grey-Headed Mannikin"] = {
- Name = "Grey-Headed Mannikin",
- Game = "oceania",
- Color = "Yellow",
- PowerCategory = "Hunting/Fishing",
- 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.",
- VP = 2,
- Nest = "Wild",
- Eggs = 3,
- Wingspan = 15,
- Grassland = true,
- Grain = 1,
- TotalFood = 1
- },
- ["Horsfield's Bronze-Cuckoo"] = {
- Name = "Horsfield's Bronze-Cuckoo",
- Game = "oceania",
- Color = "Pink",
- PowerCategory = "Card-drawing",
- Description = "When another player takes the [lay eggs] action, lay 1 [egg] on a bird with a wingspan less than 30cm.",
- VP = 2,
- Eggs = 0,
- Wingspan = 29,
- Forest = true,
- Grassland = true,
- Wetland = true,
- Worm = 1,
- TotalFood = 1
- },
- ["Horsfield's Bushlark"] = {
- Name = "Horsfield's Bushlark",
- Game = "oceania",
- Color = "Brown",
- PowerCategory = "Food-related",
- Description = "Discard 1 [seed]. If you do, lay up to 2 [egg] on this bird.",
- VP = 2,
- Nest = "Ground",
- Eggs = 2,
- Wingspan = 12,
- Grassland = true,
- Worm = 1,
- Grain = 1,
- TotalFood = 2
- },
- ["Kakapo"] = {
- Name = "Kākāpō",
- Game = "oceania",
- Color = "Yellow",
- PowerCategory = "Other",
- Description = "Draw 4 bonus cards, keep 1, and discard the other 3.",
- BonusCard = true,
- VP = 4,
- Nest = "Ground",
- Eggs = 2,
- Wingspan = 0,
- Forest = true,
- Grain = 1,
- Berry = 1,
- TotalFood = 2
- },
- ["Kea"] = {
- Name = "Kea",
- Game = "oceania",
- Color = "White",
- 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.",
- BonusCard = true,
- VP = 5,
- Nest = "Ground",
- Eggs = 2,
- Wingspan = 90,
- Forest = true,
- Grassland = true,
- Berry = 1,
- Nectar = 1,
- TotalFood = 2
- },
- ["Kelp Gull"] = {
- Name = "Kelp Gull",
- Game = "oceania",
- Color = "Brown",
- PowerCategory = "Food-related",
- Description = "Discard any number of [wild] to draw that many [card].",
- VP = 6,
- Nest = "Ground",
- Eggs = 2,
- Wingspan = 135,
- Wetland = true,
- Fish = 1,
- WildFood = 1,
- TotalFood = 2
- },
- ["Kereru"] = {
- Name = "Kererū",
- Game = "oceania",
- Color = "Brown",
- PowerCategory = "Other",
- Description = "If the player to your left has a [nectar] in their personal supply, gain 1 [nectar] from the general supply.",
- VP = 3,
- Nest = "Platform",
- Eggs = 2,
- Wingspan = 75,
- Forest = true,
- Berry = 1,
- Nectar = 1,
- TotalFood = 2
- },
- ["Korimako"] = {
- Name = "Korimako",
- Game = "oceania",
- Color = "Brown",
- PowerCategory = "Flocking",
- Description = "Discard any number of [rodent] to gain that many [nectar] from the supply.",
- VP = 4,
- Nest = "Bowl",
- Eggs = 3,
- Wingspan = 22,
- Forest = true,
- Worm = 1,
- Berry = 1,
- Nectar = 1,
- TotalFood = 3
- },
- ["Laughing Kookaburra"] = {
- Name = "Laughing Kookaburra",
- Game = "oceania",
- Color = "Brown",
- PowerCategory = "Other",
- Description = "Reset the birdfeeder. If you do, gain 1 [invertebrate], [fish], or [rodent], if there is one.",
- Predator = true,
- VP = 1,
- Nest = "Cavity",
- Eggs = 3,
- Wingspan = 60,
- Forest = true,
- Grassland = true,
- Wetland = true,
- Worm = 1,
- Fish = 1,
- Rat = 1,
- EitherFood = true,
- TotalFood = 1
- },
- ["Lesser Frigatebird"] = {
- Name = "Lesser Frigatebird",
- Game = "oceania",
- Color = "Brown",
- PowerCategory = "Flocking",
- Description = "All players may discard 1 [egg] from a [wetland] bird. Each player that discards an [egg] gains 1 [wild] from the supply.",
- VP = 9,
- Nest = "Platform",
- Eggs = 1,
- Wingspan = 175,
- Wetland = true,
- Worm = 1,
- Fish = 2,
- TotalFood = 3
- },
- ["Lewin's Honeyeater"] = {
- Name = "Lewin's Honeyeater",
- Game = "oceania",
- Color = "Brown",
- PowerCategory = "Flocking",
- Description = "Choose 1 other player. You both gain 1 [nectar] from the supply.",
- VP = 5,
- Nest = "Bowl",
- Eggs = 2,
- Wingspan = 29,
- Forest = true,
- Berry = 1,
- Nectar = 1,
- TotalFood = 2
- },
- ["Little Penguin"] = {
- Name = "Little Penguin",
- Game = "oceania",
- Color = "Brown",
- PowerCategory = "Other",
- 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.",
- Predator = true,
- VP = 7,
- Nest = "Wild",
- Eggs = 2,
- Wingspan = 0,
- Wetland = true,
- Fish = 3,
- TotalFood = 3
- },
- ["Little Pied Cormorant"] = {
- Name = "Little Pied Cormorant",
- Game = "oceania",
- Color = "Yellow",
- PowerCategory = "Food-related",
- Description = "Lay 1 [egg] on each of your birds with a [platform] nest, including this one.",
- VP = 4,
- Nest = "Platform",
- Eggs = 2,
- Wingspan = 88,
- Wetland = true,
- Worm = 1,
- Fish = 1,
- TotalFood = 2
- },
- ["Magpie-Lark"] = {
- Name = "Magpie-Lark",
- Game = "oceania",
- Color = "Yellow",
- PowerCategory = "Food-related",
- 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.",
- VP = 5,
- Nest = "Bowl",
- Eggs = 3,
- Wingspan = 57,
- Grassland = true,
- Worm = 1,
- Grain = 1,
- EitherFood = true,
- TotalFood = 1
- },
- ["Major Mitchell's Cockatoo"] = {
- Name = "Major Mitchell's Cockatoo",
- Game = "oceania",
- Color = "Brown",
- PowerCategory = "Other",
- Description = "Tuck 1 [card] from your hand behind this bird. If you do, all players gain 1 [seed] from the supply.",
- Flocking = true,
- VP = 6,
- Nest = "Cavity",
- Eggs = 2,
- Wingspan = 81,
- Forest = true,
- Grassland = true,
- Grain = 2,
- TotalFood = 2
- },
- ["Malleefowl"] = {
- Name = "Malleefowl",
- Game = "oceania",
- Color = "Yellow",
- PowerCategory = "Food-related",
- Description = "Lay 1 [egg] on each of your birds with a [ground] nest, including this one.",
- VP = 2,
- Nest = "Ground",
- Eggs = 6,
- Wingspan = 33,
- Forest = true,
- Grassland = true,
- Grain = 1,
- WildFood = 1,
- TotalFood = 2
- },
- ["Maned Duck"] = {
- Name = "Maned Duck",
- Game = "oceania",
- Color = "Brown",
- PowerCategory = "Card-drawing",
- 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.",
- Flocking = true,
- VP = 2,
- Nest = "Cavity",
- Eggs = 4,
- Wingspan = 79,
- Wetland = true,
- WildFood = 2,
- TotalFood = 2
- },
- ["Many-Colored Fruit Dove"] = {
- Name = "Many-Colored Fruit Dove",
- Game = "oceania",
- Color = "Brown",
- PowerCategory = "Egg-laying",
- Description = "All players gain 1 [fruit] from the supply. You gain 1 additional [fruit] from the supply.",
- VP = 2,
- Nest = "Platform",
- Eggs = 2,
- Wingspan = 30,
- Forest = true,
- Berry = 1,
- TotalFood = 1
- },
- ["Masked Lapwing"] = {
- Name = "Masked Lapwing",
- Game = "oceania",
- Color = "White",
- Description = "Reset the birdfeeder, then, for each type of food in the birdfeeder, gain 1 of that type.",
- VP = 1,
- Nest = "Ground",
- Eggs = 3,
- Wingspan = 80,
- Grassland = true,
- Wetland = true,
- Worm = 1,
- Grain = 1,
- EitherFood = true,
- TotalFood = 1
- },
- ["Mistletoebird"] = {
- Name = "Mistletoebird",
- Game = "oceania",
- Color = "Brown",
- PowerCategory = "Card-drawing",
- Description = "Gain 1 [fruit] from the supply, or discard 1 [fruit] to gain 1 [nectar] from the supply.",
- VP = 3,
- Nest = "Wild",
- Eggs = 4,
- Wingspan = 18,
- Forest = true,
- Berry = 2,
- Nectar = 1,
- TotalFood = 3
- },
- ["Musk Duck"] = {
- Name = "Musk Duck",
- Game = "oceania",
- Color = "Brown",
- PowerCategory = "Other",
- 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.",
- VP = 2,
- Nest = "Ground",
- Eggs = 2,
- Wingspan = 87,
- Wetland = true,
- Worm = 1,
- Grain = 1,
- Fish = 1,
- EitherFood = true,
- TotalFood = 1
- },
- ["New Holland Honeyeater"] = {
- Name = "New Holland Honeyeater",
- Game = "oceania",
- Color = "Brown",
- PowerCategory = "Food-related",
- Description = "Gain 1 [nectar] from the birdfeeder, if there is one.",
- VP = 0,
- Nest = "Bowl",
- Eggs = 3,
- Wingspan = 20,
- Grassland = true,
- Nectar = 1,
- TotalFood = 1
- },
- ["Noisy Miner"] = {
- Name = "Noisy Miner",
- Game = "oceania",
- Color = "Brown",
- PowerCategory = "Food-related",
- 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].",
- Flocking = true,
- VP = 3,
- Nest = "Bowl",
- Eggs = 6,
- Wingspan = 41,
- Forest = true,
- Grassland = true,
- Worm = 1,
- Nectar = 1,
- WildFood = 1,
- TotalFood = 3
- },
- ["North Island Brown Kiwi"] = {
- Name = "North Island Brown Kiwi",
- Game = "oceania",
- Color = "White",
- Description = "Discard a bonus card. If you do, draw 4 bonus cards, keep 2, and discard the other 2.",
- BonusCard = true,
- VP = 6,
- Nest = "Wild",
- Eggs = 1,
- Wingspan = 0,
- Forest = true,
- Grassland = true,
- Worm = 2,
- Grain = 1,
- TotalFood = 3
- },
- ["Orange-Footed Scrubfowl"] = {
- Name = "Orange-Footed Scrubfowl",
- Game = "oceania",
- Color = "Yellow",
- PowerCategory = "Food-related",
- Description = "Lay 1 [egg] on each of your birds with a [ground] nest, including this one.",
- VP = 1,
- Nest = "Ground",
- Eggs = 5,
- Wingspan = 43,
- Forest = true,
- Grain = 1,
- Berry = 1,
- EitherFood = true,
- TotalFood = 1
- },
- ["Pacific Black Duck"] = {
- Name = "Pacific Black Duck",
- Game = "oceania",
- Color = "Yellow",
- PowerCategory = "Card-drawing",
- Description = "For every 2 [egg] in your [wetland], lay 1 [egg] on this bird.",
- VP = 2,
- Nest = "Cavity",
- Eggs = 6,
- Wingspan = 88,
- Wetland = true,
- Grain = 1,
- WildFood = 1,
- TotalFood = 2
- },
- ["Peaceful Dove"] = {
- Name = "Peaceful Dove",
- Game = "oceania",
- Color = "Brown",
- PowerCategory = "Food-related",
- Description = "Discard any number of [seed]. Lay 1 [egg] on this bird for each discarded [seed].",
- VP = 3,
- Nest = "Platform",
- Eggs = 4,
- Wingspan = 25,
- Forest = true,
- Grassland = true,
- Grain = 1,
- TotalFood = 1
- },
- ["Pesquet's Parrot"] = {
- Name = "Pesquet's Parrot",
- Game = "oceania",
- Color = "Brown",
- PowerCategory = "Hunting/Fishing",
- Description = "If the player to your right has a [nectar] in their personal supply, gain 1 [nectar] from the general supply.",
- VP = 3,
- Nest = "Cavity",
- Eggs = 2,
- Wingspan = 30,
- Forest = true,
- Berry = 1,
- Nectar = 1,
- TotalFood = 2
- },
- ["Pheasant Coucal"] = {
- Name = "Pheasant Coucal",
- Game = "oceania",
- Color = "Pink",
- PowerCategory = "Other",
- Description = "When another player takes the [lay eggs] action, lay 1 [egg] on this bird.",
- VP = 1,
- Nest = "Ground",
- Eggs = 4,
- Wingspan = 50,
- Grassland = true,
- Worm = 1,
- Rat = 1,
- TotalFood = 2
- },
- ["Pink-Eared Duck"] = {
- Name = "Pink-Eared Duck",
- Game = "oceania",
- Color = "Brown",
- PowerCategory = "Other",
- Description = "Draw 2 [card] from the deck. Keep 1 and give the other to another player.",
- VP = 4,
- Nest = "Cavity",
- Eggs = 3,
- Wingspan = 64,
- Wetland = true,
- Grain = 1,
- WildFood = 1,
- TotalFood = 2
- },
- ["Plains-Wanderer"] = {
- Name = "Plains-Wanderer",
- Game = "oceania",
- Color = "White",
- Description = "Draw 1 bonus card for each bird in your [grassland]. Keep 1 and discard the rest.",
- BonusCard = true,
- VP = 4,
- Nest = "Ground",
- Eggs = 3,
- Wingspan = 32,
- Grassland = true,
- Worm = 1,
- Grain = 1,
- TotalFood = 2
- },
- ["Princess Stephanie's Astrapia"] = {
- Name = "Princess Stephanie's Astrapia",
- Game = "oceania",
- Color = "Brown",
- PowerCategory = "Other",
- Description = "Choose 1 other player. You both lay 1 [egg].",
- VP = 6,
- Nest = "Platform",
- Eggs = 1,
- Wingspan = 45,
- Forest = true,
- Worm = 1,
- Berry = 1,
- TotalFood = 2
- },
- ["Pukeko"] = {
- Name = "Pūkeko",
- Game = "oceania",
- Color = "Brown",
- PowerCategory = "Flocking",
- Description = "Lay 1 [egg] on an adjacent bird.",
- VP = 4,
- Nest = "Ground",
- Eggs = 3,
- Wingspan = 78,
- Wetland = true,
- Grain = 2,
- WildFood = 1,
- TotalFood = 3
- },
- ["Rainbow Lorikeet"] = {
- Name = "Rainbow Lorikeet",
- Game = "oceania",
- Color = "Brown",
- PowerCategory = "Egg-laying",
- Description = "Discard 1 [nectar] to the [spent nectar] space for your [forest]. If you do, gain 2 [die] from the birdfeeder.",
- VP = 1,
- Nest = "Cavity",
- Eggs = 2,
- Wingspan = 46,
- Forest = true,
- Berry = 1,
- Nectar = 1,
- TotalFood = 2
- },
- ["Red Wattlebird"] = {
- Name = "Red Wattlebird",
- Game = "oceania",
- Color = "White",
- Description = "Gain 1 [nectar] from the supply for each bird with a wingspan less than 49cm in your [forest].",
- VP = 3,
- Nest = "Bowl",
- Eggs = 2,
- Wingspan = 49,
- Forest = true,
- Nectar = 2,
- TotalFood = 2
- },
- ["Red-Backed Fairywren"] = {
- Name = "Red-Backed Fairywren",
- Game = "oceania",
- Color = "Yellow",
- PowerCategory = "Other",
- Description = "Lay 1 [egg] on each of your birds with a [star] nest, including this one.",
- VP = 4,
- Nest = "Wild",
- Eggs = 3,
- Wingspan = 15,
- Grassland = true,
- Worm = 1,
- Grain = 1,
- TotalFood = 2
- },
- ["Red-Capped Robin"] = {
- Name = "Red-Capped Robin",
- Game = "oceania",
- Color = "Brown",
- PowerCategory = "Flocking",
- Description = "If the player to your left has an [invertebrate] in their personal supply, gain 1 [invertebrate] from the general supply.",
- VP = 2,
- Nest = "Bowl",
- Eggs = 4,
- Wingspan = 17,
- Forest = true,
- Worm = 1,
- TotalFood = 1
- },
- ["Red-Necked Avocet"] = {
- Name = "Red-Necked Avocet",
- Game = "oceania",
- Color = "Brown",
- PowerCategory = "Other",
- Description = "If the player to your left or right has an [invertebrate] in their personal supply, gain 1 [invertebrate] from the general supply.",
- VP = 4,
- Nest = "Ground",
- Eggs = 2,
- Wingspan = 75,
- Wetland = true,
- Worm = 1,
- Grain = 1,
- TotalFood = 2
- },
- ["Red-Winged Parrot"] = {
- Name = "Red-Winged Parrot",
- Game = "oceania",
- Color = "Brown",
- PowerCategory = "Flocking",
- 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.",
- VP = 6,
- Nest = "Cavity",
- Eggs = 2,
- Wingspan = 49,
- Forest = true,
- Grassland = true,
- Wetland = true,
- Grain = 1,
- Berry = 1,
- Nectar = 1,
- TotalFood = 3
- },
- ["Regent Bowerbird"] = {
- Name = "Regent Bowerbird",
- Game = "oceania",
- Color = "Brown",
- PowerCategory = "Hunting/Fishing",
- Description = "Choose 1 other player. You both gain 1 [invertebrate] from the supply.",
- VP = 3,
- Nest = "Bowl",
- Eggs = 2,
- Wingspan = 36,
- Forest = true,
- Grassland = true,
- Worm = 1,
- Grain = 1,
- Berry = 1,
- EitherFood = true,
- TotalFood = 1
- },
- ["Royal Spoonbill"] = {
- Name = "Royal Spoonbill",
- Game = "oceania",
- Color = "Brown",
- PowerCategory = "Food-related",
- 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.",
- VP = 4,
- Nest = "Platform",
- Eggs = 2,
- Wingspan = 120,
- Wetland = true,
- Worm = 1,
- Fish = 1,
- TotalFood = 2
- },
- ["Rufous Night-Heron"] = {
- Name = "Rufous Night-Heron",
- Game = "oceania",
- Color = "Brown",
- PowerCategory = "Hunting/Fishing",
- Description = "Look at a [card] from the deck. If it can live in [wetland], tuck it behind this bird. If not, discard it.",
- Predator = true,
- VP = 5,
- Nest = "Platform",
- Eggs = 2,
- Wingspan = 106,
- Wetland = true,
- Worm = 1,
- Fish = 1,
- TotalFood = 2
- },
- ["Rufous Owl"] = {
- Name = "Rufous Owl",
- Game = "oceania",
- Color = "Brown",
- PowerCategory = "Other",
- Description = "Draw 1 face-up [card] from the tray with a wingspan less than 75cm and tuck it behind this bird.",
- Predator = true,
- VP = 7,
- Nest = "Cavity",
- Eggs = 2,
- Wingspan = 115,
- Forest = true,
- Rat = 3,
- TotalFood = 3
- },
- ["Rufous-Banded Honeyeater"] = {
- Name = "Rufous-Banded Honeyeater",
- Game = "oceania",
- Color = "Brown",
- PowerCategory = "Food-related",
- Description = "Discard 1 [invertebrate]. If you do, gain 1 [nectar] from the supply.",
- VP = 0,
- Nest = "Bowl",
- Eggs = 4,
- Wingspan = 22,
- Forest = true,
- Wetland = true,
- Worm = 1,
- Nectar = 1,
- EitherFood = true,
- TotalFood = 1
- },
- ["Sacred Kingfisher"] = {
- Name = "Sacred Kingfisher",
- Game = "oceania",
- Color = "Pink",
- PowerCategory = "Egg-laying",
- 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.",
- Predator = true,
- VP = 0,
- Nest = "Cavity",
- Eggs = 4,
- Wingspan = 30,
- Forest = true,
- Grassland = true,
- Wetland = true,
- Worm = 1,
- Fish = 1,
- Rat = 1,
- EitherFood = true,
- TotalFood = 1
- },
- ["Silvereye"] = {
- Name = "Silvereye",
- Game = "oceania",
- Color = "Brown",
- PowerCategory = "Food-related",
- Description = "All players gain 1 [nectar] from the supply.",
- VP = 4,
- Nest = "Bowl",
- Eggs = 4,
- Wingspan = 17,
- Forest = true,
- Grassland = true,
- Wetland = true,
- Worm = 1,
- Nectar = 1,
- TotalFood = 2
- },
- ["South Island Robin"] = {
- Name = "South Island Robin",
- Game = "oceania",
- Color = "Brown",
- PowerCategory = "Food-related",
- Description = "If the player to your right has an [invertebrate] in their supply, cache 1 [invertebrate] from the general supply on this bird.",
- VP = 1,
- Nest = "Bowl",
- Eggs = 5,
- Wingspan = 24,
- Forest = true,
- Grassland = true,
- Worm = 1,
- TotalFood = 1
- },
- ["Southern Cassowary"] = {
- Name = "Southern Cassowary",
- Game = "oceania",
- Color = "White",
- PowerCategory = "Other",
- 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.",
- VP = 4,
- Nest = "Ground",
- Eggs = 4,
- Wingspan = 0,
- Forest = true,
- Berry = 2,
- WildFood = 1,
- TotalFood = 3
- },
- ["Spangled Drongo"] = {
- Name = "Spangled Drongo",
- Game = "oceania",
- Color = "Pink",
- PowerCategory = "Egg-laying",
- Description = "When another player gains [nectar], gain 1 [nectar] from the supply.",
- VP = 1,
- Nest = "Bowl",
- Eggs = 2,
- Wingspan = 27,
- Forest = true,
- Worm = 1,
- Nectar = 1,
- WildFood = 1,
- TotalFood = 3
- },
- ["Splendid Fairywren"] = {
- Name = "Splendid Fairywren",
- Game = "oceania",
- Color = "Yellow",
- PowerCategory = "Food-related",
- Description = "Lay 1 [egg] on each of your birds with a wingspan less than 30cm, including this one.",
- VP = 1,
- Nest = "Wild",
- Eggs = 5,
- Wingspan = 15,
- Forest = true,
- Grassland = true,
- Worm = 2,
- TotalFood = 2
- },
- ["Spotless Crake"] = {
- Name = "Spotless Crake",
- Game = "oceania",
- Color = "Yellow",
- PowerCategory = "Hunting/Fishing",
- Description = "Lay 1 [egg] on each bird in your [wetland], including this one.",
- VP = 1,
- Nest = "Ground",
- Eggs = 3,
- Wingspan = 28,
- Wetland = true,
- Worm = 1,
- Grain = 1,
- EitherFood = true,
- TotalFood = 1
- },
- ["Stubble Quail"] = {
- Name = "Stubble Quail",
- Game = "oceania",
- Color = "White",
- Description = "Discard up to 6 [wild]. Lay 1 [egg] on this bird for each discarded food.",
- VP = 4,
- Nest = "Ground",
- Eggs = 6,
- Wingspan = 29,
- Grassland = true,
- Worm = 1,
- Grain = 1,
- EitherFood = true,
- TotalFood = 1
- },
- ["Sulphur-Crested Cockatoo"] = {
- Name = "Sulphur-Crested Cockatoo",
- Game = "oceania",
- Color = "Brown",
- PowerCategory = "Card-drawing",
- Description = "Tuck 1 [card] from your hand behind this bird. If you do, all players gain 1 [nectar] from the supply.",
- Flocking = true,
- VP = 6,
- Nest = "Cavity",
- Eggs = 2,
- Wingspan = 103,
- Forest = true,
- Grain = 1,
- Berry = 1,
- TotalFood = 2
- },
- ["Superb Lyrebird"] = {
- Name = "Superb Lyrebird",
- Game = "oceania",
- Color = "Brown",
- PowerCategory = "Food-related",
- Description = "Copy a brown power on one bird in the [forest] of the player to your right.",
- VP = 5,
- Nest = "Wild",
- Eggs = 1,
- Wingspan = 73,
- Forest = true,
- Worm = 2,
- WildFood = 1,
- TotalFood = 3
- },
- ["Tawny Frogmouth"] = {
- Name = "Tawny Frogmouth",
- Game = "oceania",
- Color = "Brown",
- PowerCategory = "Flocking",
- Description = "Reset the birdfeeder. Cache 1 [invertebrate] or 1 [rodent] from the birdfeeder (if available) on this bird.",
- Predator = true,
- VP = 5,
- Nest = "Platform",
- Eggs = 2,
- Wingspan = 82,
- Forest = true,
- Grassland = true,
- Wetland = true,
- Worm = 2,
- Rat = 1,
- TotalFood = 3
- },
- ["Tui"] = {
- Name = "Tūī",
- Game = "oceania",
- Color = "Brown",
- PowerCategory = "Food-related",
- Description = "Copy a brown power on one bird in the [forest] of the player to your left.",
- VP = 5,
- Nest = "Bowl",
- Eggs = 2,
- Wingspan = 42,
- Forest = true,
- Worm = 1,
- Nectar = 2,
- TotalFood = 3
- },
- ["Wedge-Tailed Eagle"] = {
- Name = "Wedge-Tailed Eagle",
- Game = "oceania",
- Color = "Brown",
- PowerCategory = "Food-related",
- 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.",
- Predator = true,
- VP = 7,
- Nest = "Platform",
- Eggs = 2,
- Wingspan = 207,
- Forest = true,
- Grassland = true,
- Wetland = true,
- Rat = 3,
- TotalFood = 3
- },
- ["Welcome Swallow"] = {
- Name = "Welcome Swallow",
- Game = "oceania",
- Color = "White",
- Description = "Tuck 1 [card] from the deck behind each bird in this habitat, including this bird.",
- Flocking = true,
- VP = 1,
- Nest = "Wild",
- Eggs = 5,
- Wingspan = 28,
- Grassland = true,
- Wetland = true,
- Worm = 2,
- TotalFood = 2
- },
- ["White-Bellied Sea-Eagle"] = {
- Name = "White-Bellied Sea-Eagle",
- Game = "oceania",
- Color = "Brown",
- PowerCategory = "Card-drawing",
- Description = "Reset the birdfeeder. Gain 1 [fish] or 1 [rodent] from the birdfeeder, if there is one, and cache it on this bird.",
- Predator = true,
- VP = 7,
- Nest = "Platform",
- Eggs = 2,
- Wingspan = 200,
- Forest = true,
- Wetland = true,
- Fish = 1,
- Rat = 2,
- TotalFood = 3
- },
- ["White-Breasted Woodswallow"] = {
- Name = "White-Breasted Woodswallow",
- Game = "oceania",
- Color = "White",
- Description = "Lay 1 [egg] on each bird in your [grassland], including this one.",
- VP = 3,
- Nest = "Bowl",
- Eggs = 2,
- Wingspan = 32,
- Grassland = true,
- Worm = 2,
- TotalFood = 2
- },
- ["White-Faced Heron"] = {
- Name = "White-Faced Heron",
- Game = "oceania",
- Color = "Brown",
- PowerCategory = "Tucking",
- Description = "Reset the birdfeeder and gain all [fish], if there are any. You may cache any or all of them on this bird.",
- Predator = true,
- VP = 6,
- Nest = "Platform",
- Eggs = 4,
- Wingspan = 106,
- Wetland = true,
- Worm = 1,
- Fish = 1,
- Rat = 1,
- TotalFood = 3
- },
- ["Willie-Wagtail"] = {
- Name = "Willie-Wagtail",
- Game = "oceania",
- Color = "Brown",
- PowerCategory = "Flocking",
- 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.",
- VP = 2,
- Nest = "Bowl",
- Eggs = 5,
- Wingspan = 30,
- Forest = true,
- Grassland = true,
- Wetland = true,
- Worm = 1,
- WildFood = 1,
- TotalFood = 2
- },
- ["Wrybill"] = {
- Name = "Wrybill",
- Game = "oceania",
- Color = "White",
- Description = "Look through all discarded bonus cards. Keep 1 of them.",
- BonusCard = true,
- VP = 4,
- Nest = "Ground",
- Eggs = 2,
- Wingspan = 49,
- Wetland = true,
- Worm = 1,
- Fish = 1,
- TotalFood = 2
- }
- }
- ---- #include birdCardData
- }
- function birdCards.getData(card)
- if( card == nil) then
- return nil
- end
- return birdCards.data[card.getName()]
- end
- function birdCards.getDataByName(name)
- return birdCards.data[name]
- end
- ----#include birdCards
- ----#include bonusCards
- bonusCards = {
- ---- #include bonusCardData
- data = {
- ["Anatomist"] = {
- description = "Birds with body parts in their names",
- validateType = "BIRD_NAME",
- 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"},
- rejection = {"burrowing", "mistletoe", "honeyeater", "trumpet"},
- points = {0,3,3,7}
- },
- ["Backyard Birder"] = {
- description = "Birds worth less than 4 points",
- validateType = "BIRD_ATTRIBUTE",
- validation = {
- birdAttribute = "VP",
- argument = "<",
- value = 4
- },
- points = {0,0,0,0,3,3,6}
- },
- ["Bird Bander"] = {
- description = "Birds that can live in multiple habitats",
- validateType = "BIRD_ATTRIBUTES",
- validation = {
- birdAttributes = {
- {
- birdAttribute = "Forest",
- argument = "=",
- value = true
- },
- {
- birdAttribute = "Grassland",
- argument = "=",
- value = true
- },
- {
- birdAttribute = "Wetland",
- argument = "=",
- value = true
- },
- },
- argument = ">",
- value = 1
- },
- validationValue = 2,
- points = {0,0,0,4,4,7}
- },
- ["Bird Counter"] = {
- description = "Birds with a [flocking] power",
- validateType = "BIRD_ATTRIBUTE",
- validation = {
- birdAttribute = "Color",
- argument = "=",
- value = "Brown"
- },
- points = {2,4,6,8,10,12,14,16,18,20,22,24,26,28,30}
- },
- ["Bird Feeder"] = {
- description = "Birds that eat [seed]",
- validateType = "BIRD_ATTRIBUTE",
- validation = {
- birdAttribute = "Grain",
- argument = ">",
- value = 0
- },
- points = {0,0,0,0,3,3,3,7}
- },
- ["Cartographer"] = {
- description = "Birds with geography terms in their name",
- validateType = "BIRD_NAME",
- 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"},
- rejection = { "roseate" },
- points = {0,3,3,7}
- },
- ["Diet Specialist"] = {
- description = "Birds with a food cost of 3 food",
- validateType = "BIRD_ATTRIBUTE",
- validation = {
- birdAttribute = "TotalFood",
- argument = ">",
- value = 2
- },
- points = {0,3,3,6}
- },
- ["Enclosure Builder"] = {
- description = "Birds with [ground] nests",
- validateType = "BIRD_ATTRIBUTE",
- validation = {
- birdAttribute = "Nest",
- argument = "or",
- value = {"Ground", "Wild"}
- },
- points = {0,0,0,4,4,7}
- },
- ["Falconer"] = {
- description = "Birds with a [predator] power",
- validateType = "BIRD_ATTRIBUTE",
- validation = {
- birdAttribute = "Predator",
- argument = "=",
- value = true
- },
- points = {2,4,6,8,10,12,14,16,18,20,22,24,26,28,30}
- },
- ["Fishery Manager"] = {
- description = "Birds that eat [fish]",
- validateType = "BIRD_ATTRIBUTE",
- validation = {
- birdAttribute = "Fish",
- argument = ">",
- value = 0
- },
- points = {0,3,3,8}
- },
- ["Food Web Expert"] = {
- description = "Birds that eat only [worms]",
- validateType = "BIRD_ATTRIBUTES",
- validation = {
- {
- birdAttribute = "Worm",
- argument = ">",
- value = 0
- },
- {
- birdAttribute = "Rat",
- argument = "=",
- value = nil
- },
- {
- birdAttribute = "Fish",
- argument = "=",
- value = nil
- },
- {
- birdAttribute = "Berry",
- argument = "=",
- value = nil
- },
- {
- birdAttribute = "Grain",
- argument = "=",
- value = nil
- },
- {
- birdAttribute = "Wild",
- argument = "=",
- value = nil
- },
- {
- birdAttribute = "Nectar",
- argument = "=",
- value = nil
- }
- },
- points = {2,4,6,8,10,12,14,16,18,20,22,24,26,28,30}
- },
- ["Forester"] = {
- description = "Birds that can only live in [forest]",
- validateType = "BIRD_ATTRIBUTES",
- validation = {
- {
- birdAttribute = "Forest",
- argument = "=",
- value = true
- },
- {
- birdAttribute = "Grassland",
- argument = "=",
- value = nil
- },
- {
- birdAttribute = "Wetland",
- argument = "=",
- value = nil
- }
- },
- points = {0,0,4,4,5}
- },
- ["Historian"] = {
- description = "Birds named after a person",
- validateType = "BIRD_NAME",
- validation = {"'s"},
- points = {2,4,6,8,10,12,14,16,18,20,22,24,26,28,30}
- },
- ["Large Bird Specialist"] = {
- description = "Birds with wingspans over 65 cm",
- validateType = "BIRD_ATTRIBUTE",
- validation = {
- birdAttribute = "Wingspan",
- argument = ">",
- value = 65
- },
- points = {0,0,0,3,3,6}
- },
- ["Nest Box Builder"] = {
- description = "Birds with [cavity] nests",
- validateType = "BIRD_ATTRIBUTE",
- validation = {
- birdAttribute = "Nest",
- argument = "or",
- value = {"Cavity", "Wild"}
- },
- points = {0,0,0,4,4,7}
- },
- ["Omnivore Specialist"] = {
- description = "Birds that eat [wild]",
- validateType = "BIRD_ATTRIBUTE",
- validation = {
- birdAttribute = "WildFood",
- argument = ">",
- value = 0
- },
- points = {2,4,6,8,10,12,14,16,18,20,22,24,26,28,30}
- },
- ["Passerine Specialist"] = {
- description = "Birds with wingspans 30 cm or less",
- validateType = "BIRD_ATTRIBUTE",
- validation = {
- birdAttribute = "Wingspan",
- argument = "<",
- value = 31
- },
- points = {0,0,0,3,3,6}
- },
- ["Photographer"] = {
- description = "Birds with colors in their names",
- validateType = "BIRD_NAME",
- 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"},
- rejection = { "barred", "colored", "sacred", "collared-" },
- points = {0,0,0,3,3,6}
- },
- ["Platform Builder"] = {
- description = "Birds with [platform] nests",
- validateType = "BIRD_ATTRIBUTE",
- validation = {
- birdAttribute = "Nest",
- argument = "or",
- value = {"Platform", "Wild"}
- },
- points = {0,0,0,4,4,7}
- },
- ["Prairie Manager"] = {
- description = "Birds that can only live in [Grassland]",
- validateType = "BIRD_ATTRIBUTES",
- validation = {
- {
- birdAttribute = "Forest",
- argument = "=",
- value = nil
- },
- {
- birdAttribute = "Grassland",
- argument = "=",
- value = true
- },
- {
- birdAttribute = "Wetland",
- argument = "=",
- value = nil
- }
- },
- points = {0,3,3,8}
- },
- ["Forester"] = {
- description = "Birds that can only live in [grassland]",
- validateType = "BIRD_ATTRIBUTES",
- validation = {
- {
- birdAttribute = "Forest",
- argument = "=",
- value = nil
- },
- {
- birdAttribute = "Grassland",
- argument = "=",
- value = true
- },
- {
- birdAttribute = "Wetland",
- argument = "=",
- value = nil
- }
- },
- points = {0,3,3,8}
- },
- ["Rodentologist"] = {
- description = "Birds that eat [rat]",
- validateType = "BIRD_ATTRIBUTE",
- validation = {
- birdAttribute = "Rat",
- argument = ">",
- value = 0
- },
- points = {2,4,6,8,10,12,14,16,18,20,22,24,26,28,30}
- },
- ["Viticulturalist"] = {
- description = "Birds that eat [Berry]",
- validateType = "BIRD_ATTRIBUTE",
- validation = {
- birdAttribute = "Berry",
- argument = ">",
- value = 0
- },
- points = {0,3,3,7}
- },
- ["Wetland Scientist"] = {
- description = "Birds that can only live in [Wetland]",
- validateType = "BIRD_ATTRIBUTES",
- validation = {
- {
- birdAttribute = "Forest",
- argument = "=",
- value = nil
- },
- {
- birdAttribute = "Grassland",
- argument = "=",
- value = nil
- },
- {
- birdAttribute = "Wetland",
- argument = "=",
- value = true
- }
- },
- points = {0,0,3,3,7}
- },
- ["Wildlife Gardener"] = {
- description = "Birds with [bowl] nests",
- validateType = "BIRD_ATTRIBUTE",
- validation = {
- birdAttribute = "Nest",
- argument = "or",
- value = {"bowl", "Wild"}
- },
- points = {0,0,0,4,4,7}
- }
- --[[NEED TO COMPLETE]]
- --[[
- ["Behaviorist"] = {
- description = "For each column that contains birds with 3 different power colors",
- validateType = "",
- validation = {},
- points = {}
- },
- ["Breeding Manager"] = {
- description = "Birds that have at least 4 eggs laid on them",
- validateType = "",
- validation = {},
- points = {}
- },
- ["Citizen Scientist"] = {
- description = "Birds with tucked cards",
- validateType = "",
- validation = {},
- points = {}
- },
- ["Ecologist"] = {
- description = "Birds in your habitat with the fewest birds.",
- validateType = "",
- validation = {},
- points = {}
- },
- ["Ethologist"] = {
- description = "In any one habitat",
- validateType = "",
- validation = {},
- points = {}
- },
- ["Oologist"] = {
- description = "Birds that have at least 1 egg laid on them",
- validateType = "",
- validation = {},
- points = {}
- },
- ["Visionary Leader"] = {
- description = "Bird cards in hand at end of game",
- validateType = "",
- validation = {},
- points = {}
- },
- ["Forest Data Analyst"] = {
- description = "Consecutive birds in [forest] with ascending or descending wingspans",
- validateType = "",
- validation = {},
- points = {}
- },
- ["Grassland Data Analyst"] = {
- description = "Consecutive birds in [grassland] with ascending or descending wingspans",
- validateType = "",
- validation = {},
- points = {}
- },
- ["Wetland Data Analyst"] = {
- description = "Consecutive birds in [wetland] with ascending or descending wingspans",
- validateType = "",
- validation = {},
- points = {}
- },
- ["Site Selection Specialist"] = {
- description = "Columns with a matching pair or trio of nests",
- validateType = "",
- validation = {},
- points = {}
- },
- ["Mechanical Engineer"] = {
- description = "Sets of the 4 nest types / 1 set = [bowl] [cavity] [ground] [platform]",
- validateType = "",
- validation = {},
- points = {}
- },
- ]]
- }
- --[[
- [""] = {
- description = "",
- validateType = "",
- validation = {},
- points = {}
- },
- ]]
- ---- #include bonusCardData
- }
- --[[
- function bonusCards.validate(bonusCard, birdCard)
- if(bonusCard == nil or bonusCard.description != "Bonus Card") then
- return nil
- end
- print(eval(bonusCards.data[birdCard.name].validate(birdCard)))
- --[[return bonusCards.data[card.getName()].validate(birdCard)]
- end]]
- --[[Checks if the bird card is valid for the bonus]]
- function bonusCards.validate(bonusCard, birdCard)
- if(bonusCard == nil or bonusCard.getDescription() != "Bonus Card") then
- return nil
- end
- local bonusData = bonusCards.data[bonusCard.getName()]
- local birdData = birdCards.getDataByName(birdCard.Name)
- if(bonusData != nil) then
- if(bonusData.validateType == "BIRD_NAME") then
- return bonusCards.validateByName(bonusData.validation, birdData, bonusData.rejection)
- elseif(bonusData.validateType == "BIRD_ATTRIBUTE") then
- return bonusCards.validateByData(bonusData.validation, birdData)
- elseif(bonusData.validateType == "BIRD_ATTRIBUTES") then
- return bonusCards.validateByMultiData(bonusData.validation, birdData)
- end
- end
- return false
- end
- --[[Validate the if the card name matches the valid names]]
- function bonusCards.validateByName(names, birdCardData, failedNames)
- local valid = false
- if (failedNames != nil) then
- for _, name in pairs(failedNames) do
- if (string.find(string.lower(birdCardData.Name),name) != nil) then
- return false
- end
- end
- end
- for _, name in pairs(names) do
- if (string.find(string.lower(birdCardData.Name),name) != nil) then
- valid = true
- break
- end
- end
- return valid
- end
- --[[Checks if more then one critera needs to be valid]]
- function bonusCards.validateByMultiData(validation, birdCardData)
- local isValid = true
- if (validation.birdAttributes != nil) then
- local count = 0
- isValid = false
- for _, v in pairs(validation.birdAttributes) do
- if(bonusCards.validateByData(v, birdCardData) == true) then
- count = count + 1
- end
- end
- if (validation.argument == ">") then
- if(count > validation.value) then
- isValid = true
- end
- end
- else
- for _, v in pairs(validation) do
- if(bonusCards.validateByData(v, birdCardData) == false) then
- isValid = false
- break
- end
- end
- end
- return isValid
- end
- --[[Validates the bird cards to see if they match the bonus critera]]
- function bonusCards.validateByData(validation, birdCardData)
- local isValid = false
- local data = birdCardData[validation.birdAttribute]
- if (validation.argument == "=") then
- if(data == validation.value) then
- isValid = true
- end
- elseif (validation.argument == ">") then
- if(data != nil and data > validation.value) then
- isValid = true
- end
- elseif (validation.argument == "<") then
- if(data != nil and data < validation.value) then
- isValid = true
- end
- elseif (validation.argument == "or") then
- for _, value in pairs(validation.value) do
- if(data == value) then
- isValid = true
- break
- end
- end
- end
- return isValid
- end
- --[[Calculates the scores based on how many cards are valid]]
- function bonusCards.getScoring(bonusCard, birdQuanity)
- local bonusData = bonusCards.data[bonusCard.getName()]
- if(bonusData == nil) then
- return 0
- end
- local len = length(bonusData.points)
- local score = 0
- if (birdQuanity != 0) then
- if (birdQuanity > length(bonusData.points)) then
- score = bonusData.points[len]
- else
- score = bonusData.points[birdQuanity]
- end
- end
- --[[print(bonusCard.getName()..' - '..birdQuanity..' = '..score)]]
- return score
- end
- --[[Gets all bonus cards from hand]]
- function bonusCards.getFromHand(playerColor)
- local cardsInHand = Player[playerColor].getHandObjects()
- local bonusCards = {}
- for _, card in pairs(cardsInHand) do
- if(card != nil and card.getDescription() != nil and card.getDescription() == "Bonus Card") then
- table.insert(bonusCards, {bonusCard = card, validCount = 0})
- end
- end
- return bonusCards
- end
- ----#include bonusCards
- ----#include controls/user_controls
- userControls = {
- buttons = {
- ---- #include startGame_button
- ["StartGame_Button"] = {
- BIND_OBJECT_GUID = '1d6cf4',
- Parameters = {
- function_owner = Global,
- label = 'Start Game',
- position = {0,0.1,0},
- height = 1000,
- width = 7000,
- alignment = 3,
- font_size = 600
- },
- callback = function() gameState.start() end,
- onLoad = true
- },
- ---- #include startGame_button
- ---- #include europeanExp_button
- ["EuropeanExp_Button"] = {
- BIND_OBJECT_GUID = '8e2071',
- Parameters = {
- function_owner = Global,
- label = 'European Expansion',
- position = {0,0.1,0},
- height = 1000,
- width = 7000,
- alignment = 3,
- font_size = 600
- },
- callback = function() europeanExp.load() end,
- onLoad = true
- },
- ---- #include europeanExp_button
- ---- #include oceaniaExp_button
- ["OceaniaExp_Button"] = {
- BIND_OBJECT_GUID = '16acd1',
- Parameters = {
- function_owner = Global,
- label = 'Oceania Expansion',
- position = {0,0.1,0},
- height = 1000,
- width = 7000,
- alignment = 3,
- font_size = 600
- },
- callback = function() oceaniaExp.load() end,
- onLoad = true
- },
- ---- #include oceaniaExp_button
- ---- #include birdFeeder_button
- ["Bird_Feeder_Button_InFeeder"] = {
- BIND_OBJECT_GUID = '6cbab5',
- Parameters = {
- click_function = 'birdFeeder.roll',
- function_owner = nil,
- label = 'Roll Bird Feeder',
- position = {0,0.2,0},
- rotation = {0,180,0},
- height = 1000,
- width = 6000,
- alignment = 3,
- font_size = 600
- },
- callback = function() birdFeeder.roll() end,
- onLoad = false
- },
- ["Bird_Feeder_Button_NotInFeeder"] = {
- BIND_OBJECT_GUID = '2fd483',
- Parameters = {
- click_function = 'birdFeeder.rollRemoved',
- function_owner = self,
- label = 'Roll Outside Feeder',
- position = {0,0.2,0},
- rotation = {0,180,0},
- height = 1000,
- width = 6000,
- alignment = 3,
- font_size = 600
- },
- callback = function() birdFeeder.rollRemoved() end,
- onLoad = false
- },
- ---- #include birdFeeder_button
- ---- #include roundEnd_button
- ["RoundEnd_Button"] = {
- BIND_OBJECT_GUID = 'e514ba',
- Parameters = {
- function_owner = nil,
- label = 'End Round 1',
- position = {0,0.2,0},
- rotation = {0,180,0},
- height = 1000,
- width = 6000,
- alignment = 3,
- font_size = 600
- },
- callback = function()
- gameState.endRound();
- if(gameState.currentState != "End") then
- getObjectFromGUID(userControls.buttons["RoundEnd_Button"].BIND_OBJECT_GUID).editButton({label = "End " .. gameState.currentState})
- end
- end,
- onLoad = false
- },
- ---- #include roundEnd_button
- ---- #include playerBoard_label
- ["Bird_Count_Label"] = {
- Parameters = {
- click_function = 'none',
- function_owner = nil,
- label = 'Bird VP: 0',
- position = {0.4,-3,0},
- rotation = {180,90,0},
- height = 00,
- width = 0,
- alignment = 3,
- font_size = 50,
- font_color={0,0,0}
- },
- INDEX = 0,
- onLoad = false
- },
- ["Egg_Count_Label"] = {
- Parameters = {
- click_function = 'none',
- function_owner = nil,
- label = 'Eggs: 0',
- position = {0.3,-3,-0.05},
- rotation = {180,90,0},
- height = 00,
- width = 0,
- alignment = 3,
- font_size = 50,
- font_color={0,0,0}
- },
- INDEX = 1,
- onLoad = false
- },
- ["Cashed_Food_Count_Label"] = {
- Parameters = {
- click_function = 'none',
- function_owner = nil,
- label = 'Cached Food: 0',
- position = {0.2,-3,0.1},
- rotation = {180,90,0},
- height = 00,
- width = 0,
- alignment = 3,
- font_size = 50,
- font_color={0,0,0}
- },
- INDEX = 2,
- onLoad = false
- },
- ["Tucked_Cards_Count_Label"] = {
- Parameters = {
- click_function = 'none',
- function_owner = nil,
- label = 'Tucked Cards: 0',
- position = {0.1,-3,0.11},
- rotation = {180,90,0},
- height = 00,
- width = 0,
- alignment = 3,
- font_size = 50,
- font_color={0,0,0}
- },
- INDEX = 3,
- onLoad = false
- },
- ["Bonus_Cards_Count_Label"] = {
- Parameters = {
- click_function = 'none',
- function_owner = nil,
- label = 'Bonus VP: 0',
- position = {0,-3,0.05},
- rotation = {180,90,0},
- height = 00,
- width = 0,
- alignment = 3,
- font_size = 50,
- font_color={0,0,0}
- },
- INDEX = 4,
- onLoad = false
- },
- ["Round_Scoring_Count_Label"] = {
- Parameters = {
- click_function = 'none',
- function_owner = nil,
- label = 'Round VP: 0',
- position = {-0.1,-3,0.05},
- rotation = {180,90,0},
- height = 00,
- width = 0,
- alignment = 3,
- font_size = 50,
- font_color={0,0,0}
- },
- INDEX = 5,
- onLoad = false
- },
- ["Nector_Scoring_Count_Label"] = {
- Parameters = {
- click_function = 'none',
- function_owner = nil,
- label = 'Nectar VP: 0',
- position = {-0.2,-3,0.05},
- rotation = {180,90,0},
- height = 00,
- width = 0,
- alignment = 3,
- font_size = 50,
- font_color={0,0,0}
- },
- INDEX = 6,
- onLoad = false
- },
- ["Total_Count_Label"] = {
- Parameters = {
- click_function = 'none',
- function_owner = nil,
- label = 'Final Score: 0',
- position = {-0.4,-3,0.06},
- rotation = {180,90,0},
- height = 00,
- width = 0,
- alignment = 3,
- font_size = 50,
- font_color={0,0,0}
- },
- INDEX = 7,
- onLoad = false
- },
- ---- #include playerBoard_label
- ---- #include foodBags_button
- ["Rat_Bag_Button_Take"] = {
- BIND_OBJECT_GUID = 'd52985',
- Parameters = {
- function_owner = nil,
- label = 'Take',
- position = {0,0.1,-1.5},
- rotation = {0,180,0},
- height = 100,
- width = 600,
- alignment = 3,
- font_size = 100
- },
- callback = function(objectButtonClicked, playerColorClicked)
- if(playerColorClicked != '') then
- components.giveFood("Rat", playerColorClicked)
- end
- end,
- onLoad = false
- },
- ["Rat_Bag_Button_DealAll"] = {
- BIND_OBJECT_GUID = 'd52985',
- Parameters = {
- function_owner = nil,
- label = 'Deal All',
- position = {0,0.1,1.5},
- rotation = {0,180,0},
- height = 100,
- width = 600,
- alignment = 3,
- font_size = 100
- },
- callback = function()
- for _, seatedPlayerColor in pairs(getSeatedPlayers()) do
- components.giveFood("Rat", seatedPlayerColor)
- end
- end,
- onLoad = false
- },
- ["Worm_Bag_Button_Take"] = {
- BIND_OBJECT_GUID = '41fda6',
- Parameters = {
- function_owner = nil,
- label = 'Take',
- position = {0,0.1,-1.5},
- rotation = {0,180,0},
- height = 100,
- width = 600,
- alignment = 3,
- font_size = 100
- },
- callback = function(objectButtonClicked, playerColorClicked)
- if(playerColorClicked != '') then
- components.giveFood("Worm", playerColorClicked)
- end
- end,
- onLoad = false
- },
- ["Worm_Bag_Button_DealAll"] = {
- BIND_OBJECT_GUID = '41fda6',
- Parameters = {
- function_owner = nil,
- label = 'Deal All',
- position = {0,0.1,1.5},
- rotation = {0,180,0},
- height = 100,
- width = 600,
- alignment = 3,
- font_size = 100
- },
- callback = function()
- for _, seatedPlayerColor in pairs(getSeatedPlayers()) do
- components.giveFood("Worm", seatedPlayerColor)
- end
- end,
- onLoad = false
- },
- ["Berry_Bag_Button_Take"] = {
- BIND_OBJECT_GUID = '66429a',
- Parameters = {
- function_owner = nil,
- label = 'Take',
- position = {0,0.1,-1.5},
- rotation = {0,180,0},
- height = 100,
- width = 600,
- alignment = 3,
- font_size = 100
- },
- callback = function(objectButtonClicked, playerColorClicked)
- if(playerColorClicked != '') then
- components.giveFood("Berry", playerColorClicked)
- end
- end,
- onLoad = false
- },
- ["Berry_Bag_Button_DealAll"] = {
- BIND_OBJECT_GUID = '66429a',
- Parameters = {
- function_owner = nil,
- label = 'Deal All',
- position = {0,0.1,1.5},
- rotation = {0,180,0},
- height = 100,
- width = 600,
- alignment = 3,
- font_size = 100
- },
- callback = function()
- for _, seatedPlayerColor in pairs(getSeatedPlayers()) do
- components.giveFood("Berry", seatedPlayerColor)
- end
- end,
- onLoad = false
- },
- ["Fish_Bag_Button_Take"] = {
- BIND_OBJECT_GUID = '78f55b',
- Parameters = {
- function_owner = nil,
- label = 'Take',
- position = {0,0.1,-1.5},
- rotation = {0,180,0},
- height = 100,
- width = 600,
- alignment = 3,
- font_size = 100
- },
- callback = function(objectButtonClicked, playerColorClicked)
- if(playerColorClicked != '') then
- components.giveFood("Fish", playerColorClicked)
- end
- end,
- onLoad = false
- },
- ["Fish_Bag_Button_DealAll"] = {
- BIND_OBJECT_GUID = '78f55b',
- Parameters = {
- function_owner = nil,
- label = 'Deal All',
- position = {0,0.1,1.5},
- rotation = {0,180,0},
- height = 100,
- width = 600,
- alignment = 3,
- font_size = 100
- },
- callback = function()
- for _, seatedPlayerColor in pairs(getSeatedPlayers()) do
- components.giveFood("Fish", seatedPlayerColor)
- end
- end,
- onLoad = false
- },
- ["Wheat_Bag_Button_Take"] = {
- BIND_OBJECT_GUID = 'b9fadf',
- Parameters = {
- function_owner = nil,
- label = 'Take',
- position = {0,0.1,-1.5},
- rotation = {0,180,0},
- height = 100,
- width = 600,
- alignment = 3,
- font_size = 100
- },
- callback = function(objectButtonClicked, playerColorClicked)
- if(playerColorClicked != '') then
- components.giveFood("Wheat", playerColorClicked)
- end
- end,
- onLoad = false
- },
- ["Wheat_Bag_Button_DealAll"] = {
- BIND_OBJECT_GUID = 'b9fadf',
- Parameters = {
- function_owner = nil,
- label = 'Deal All',
- position = {0,0.1,1.5},
- rotation = {0,180,0},
- height = 100,
- width = 600,
- alignment = 3,
- font_size = 100
- },
- callback = function()
- for _, seatedPlayerColor in pairs(getSeatedPlayers()) do
- components.giveFood("Wheat", seatedPlayerColor)
- end
- end,
- onLoad = false
- },
- ["Nectar_Bag_Button_Take"] = {
- BIND_OBJECT_GUID = '02c4c6',
- Parameters = {
- function_owner = nil,
- label = 'Take',
- position = {0,0.1,-1.5},
- rotation = {0,180,0},
- height = 100,
- width = 600,
- alignment = 3,
- font_size = 100
- },
- callback = function(objectButtonClicked, playerColorClicked)
- if(playerColorClicked != '') then
- components.giveFood("Nectar", playerColorClicked)
- end
- end,
- onLoad = false
- },
- ["Nectar_Bag_Button_DealAll"] = {
- BIND_OBJECT_GUID = '02c4c6',
- Parameters = {
- function_owner = nil,
- label = 'Deal All',
- position = {0,0.1,1.5},
- rotation = {0,180,0},
- height = 100,
- width = 600,
- alignment = 3,
- font_size = 100
- },
- callback = function()
- for _, seatedPlayerColor in pairs(getSeatedPlayers()) do
- components.giveFood("Nectar", seatedPlayerColor)
- end
- end,
- onLoad = false
- },
- ---- #include foodBags_button
- ---- #include birdTray_button
- ["BirdTry_Button_Refresh"] = {
- BIND_OBJECT_GUID = '73d70d',
- Parameters = {
- function_owner = nil,
- label = 'Refresh',
- position = {-1.9,0.1,0.8},
- rotation = {0,0,0},
- height = 3,
- width = 400,
- alignment = 3,
- font_size = 70
- },
- callback = function()
- birdTray.clear()
- Wait.time(function() birdTray.refill() end, 0.5)
- end,
- onLoad = false
- },
- ---- #include birdTray_button
- }
- }
- --[[Creates all user control buttons on the table]]
- function userControls.onLoadButtons()
- for key, button in pairs(userControls.buttons) do
- if (gameState.currentState == 'Not Started') then
- if (button.onLoad) then
- userControls.createButton(key)
- end
- elseif (gameState.currentState != 'Not Started' and gameState.currentState != 'End') then
- if (button.onLoad == false) then
- userControls.createButton(key)
- end
- end
- end
- end
- function userControls.createButton(buttonName)
- userControls.createButton(buttonName, nil)
- end
- function userControls.createButton(buttonName, bindObject)
- local button = userControls.buttons[buttonName]
- if bindObject == nil then
- bindObject = button.BIND_OBJECT_GUID
- end
- local object = getObjectFromGUID(bindObject)
- if(object != nil) then
- if(button.callback != nil) then
- local ref = "referenceFunction_"..buttonName
- _G[ref] = button.callback
- button.Parameters.click_function = ref
- end
- object.createButton(button.Parameters)
- end
- end
- --[[Removes a button from the table]]
- function userControls.removeButton(buttonName)
- if (userControls.buttons[buttonName] != nil) then
- buttonObject = getObjectFromGUID(userControls.buttons[buttonName].BIND_OBJECT_GUID)
- --[[check to see if it is already removed]]
- if (buttonObject != nil) then
- destroyObject(buttonObject)
- end
- end
- end
- ----#include controls/user_controls
- ----#include events
- function onPlayerTurn(playerColor)
- if(gameState.currentState != "Not Started" and gameState.currentState != "Loading" and gameState.currentState != "End") then
- birdTray.refill()
- end
- end
- ----#include events
- ----#include gameState
- gameState = {
- GAME_STATES = {"Not Started", "Round 1", "Round 2", "Round 3", "Round 4", "End"},
- currentState = "Not Started",
- currentRound = 0,
- OCEANIA_EXP = false
- }
- --[[Starts the game by dealing all of the components out to the players and cleans up the table]]
- function gameState.start()
- local birdDeck = getObjectFromGUID(components.BIRD_DECK_GUID)
- local roundScordingDeck = getObjectFromGUID(components.ROUND_TOKEN_DECK_GUID)
- local bonusDeck = getObjectFromGUID(components.BONUS_DECK_GUID)
- --[[shuffle all decks]]
- birdDeck.shuffle()
- roundScordingDeck.shuffle()
- bonusDeck.shuffle()
- --[[Add menu context]]
- --[[components.addDiscardContext()]]
- --[[populate the bird tray]]
- birdTray.load()
- --[[Set round scoring]]
- scoreBoard.load()
- --[[Deal out the starting player hands]]
- birdDeck.deal(5)
- bonusDeck.deal(2)
- --[[Deal out the food to all players]]
- for _, playerColor in pairs(getSeatedPlayers()) do
- for food, foodBag in pairs(components.FOOD_BAG_GUIDS) do
- components.giveFood(food, playerColor)
- end
- end
- --[[Randomize the starting player]]
- players.randomizeStartingPlayer()
- --[[Roll the bird feeder]]
- birdFeeder.roll()
- --[[Destroy the user buttons]]
- userControls.removeButton("OceaniaExp_Button")
- userControls.removeButton("EuropeanExp_Button")
- userControls.removeButton("StartGame_Button")
- --[[remove round unused scoring deck]]
- components.trash({roundScordingDeck})
- --[[remove unseated player components]]
- players.removeUnsedPlayerBoards()
- --[[Reset the cubes on the player board]]
- players.clearAllBoards()
- --[[Loads the UI for the player boards]]
- players.loadBoardUI()
- --[[Setup end round button]]
- --userControls.createButton("RoundEnd_Button")
- --[[Setup bird tray refresh]]
- --userControls.createButton("BirdTry_Button_Refresh")
- --[[Promote all seated players]]
- players.promoteSeated()
- gameState.currentState = "Round 1"
- gameState.currentRound = 1
- --[[Loads all scripted buttons]]
- userControls.onLoadButtons()
- end
- --[[Triggers the end of round]]
- function gameState.endRound()
- gameState.currentState = "Loading"
- gameState.currentRound = gameState.currentRound + 1
- gameState.currentState = gameState.GAME_STATES[gameState.currentRound + 1]
- if(gameState.currentState == "End") then
- getObjectFromGUID(userControls.buttons["RoundEnd_Button"].BIND_OBJECT_GUID).destruct()
- for _,seatedPlayerColor in pairs(getSeatedPlayers()) do
- local zone = getObjectFromGUID(players[seatedPlayerColor].BOARD_CALCULATION_ZONE_GUID)
- if(zone != nil) then
- zone.destruct()
- end
- end
- else
- birdTray.load()
- players.clearAllBoards()
- players.removeRoundEndNector()
- players.nextPlayer()
- --birdFeeder.roll()
- end
- end
- ----#include gameState
- ----#include keyBinding
- keyBinding = {}
- function keyBinding.load()
- addHotkey("SpawnEggs", spawnEgg)
- end
- function spawnEgg(player_color, hovered_object, world_position, key_down_up)
- components.getEgg(world_position)
- end
- ----#include keyBinding
- ----#include debug
- --[[
- function testDeck(deck)
- local birdDeck = getObjectFromGUID(deck)
- local cards = birdDeck.getObjects()
- print(length(birdCardData))
- for _, c in pairs(cards) do
- print(c.name)
- if(birdCardData[c.name] == nil) then
- print(c.name)
- local s = {guid = c.guid, position = birdTray.DISCARD_POSITION}
- birdDeck.takeObject(s)
- end
- end
- end
- function scoreBoard.init()
- for _, round in pairs(scoreBoard.rounds) do
- round.scoringTokenZone.zone = spawnObject(round.scoringTokenZone.zoneParameters)
- for _, placement in pairs(round.placementZones) do
- placement.zone = spawnObject(placement.zoneParameters)
- end
- end
- end
- ]]
- function FindHiddenZone()
- for _,obj in ipairs(getAllObjects()) do
- if obj.tag == 'Fog' then
- print(obj.getGUID())
- end
- end
- end
- function PrintLocation(object)
- print(object.getPosition())
- end
- function CheckBonusValidation(birdCardName,bonusCardName)
- local birdCard = {}
- local deck = getObjectFromGUID(components.BIRD_DECK_GUID).getObjects()
- for _, card in pairs(deck) do
- if(card.name == birdCardName) then
- birdCard = card
- break;
- end
- end
- local bonusCard = {}
- for _, card in pairs(getObjectFromGUID(components.BONUS_DECK_GUID).getObjects()) do
- if(card.name == bonusCardName) then
- bonusCard = card
- break;
- end
- end
- print(birdCard.name)
- print(bonusCard.name)
- print(bonusCards.validate(bonusCard, birdCard))
- end
- function ShrinkPlayerZones()
- for _,seatedPlayerColor in pairs(players.TURN_ORDER) do
- local zone = getObjectFromGUID(players[seatedPlayerColor].BOARD_CALCULATION_ZONE_GUID)
- if(zone != nil) then
- zone.scale({x=1,y=0.1,z=1})
- zone.setPosition({x=zone.getPosition().x,y=1,z=zone.getPosition().z})
- end
- end
- end
- ----#include debug
- --[[ The onLoad event is called after the game save finishes loading. --]]
- function onLoad(script_state)
- if (script_state == nil or script_state == "" ) then
- --[[Makes the game random]]
- math.randomseed(os.time())
- --[[Returns all dice to the feeder]]
- birdFeeder.returnDice()
- --[[Creates the user buttons on the table]]
- userControls.onLoadButtons()
- --[[Loads key bindings]]
- keyBinding.load()
- else
- -- JSON decode our saved state
- local state = JSON.decode(script_state)
- if(state.currentState != nil) then
- gameState.currentState = state.currentState
- end
- if(state.currentRound != nil) then
- gameState.currentRound = state.currentRound
- --[[Re-loads the score board]]
- if(gameState.currentRound > 0) then
- players.loadBoardUI()
- end
- end
- --[[Creates the user buttons on the table]]
- userControls.onLoadButtons()
- --[[Loads key bindings]]
- keyBinding.load()
- end
- --math.randomseed(os.time())
- --[[players.loadBoardUI() --[[testing]]
- --[[Wait.time(function() CheckBonusValidation("Wood Duck", "Photographer") end, 5)]]
- --return JSON.encode(gameState)
- end
- function onSave()
- local state = {
- currentState = gameState.currentState,
- currentRound = gameState.currentRound
- }
- return JSON.encode(state)
- end
- --[[ The onUpdate event is called once per frame. --]]
- function onUpdate()
- --[[ print('onUpdate loop!') --]]
- --[[PrintLocation(getObjectFromGUID(oceaniaExp.REFERENCE_GUID))]]
- end
- ----#include scripts/global
Add Comment
Please, Sign In to add comment