From b915d6885379c03af166789782d21f9c4942845b Mon Sep 17 00:00:00 2001 From: David Lu Date: Mon, 6 Feb 2012 23:54:00 -0600 Subject: [PATCH 1/3] Initial Expansion Specific Code --- card_info/__init__.py | 3 + card_info/card_list.csv | 348 ++++++++++++++++++++-------------------- frontend.py | 43 +++++ game.py | 16 ++ static/card_list.js | 2 +- 5 files changed, 237 insertions(+), 175 deletions(-) diff --git a/card_info/__init__.py b/card_info/__init__.py index 3697148..6f7bb17 100644 --- a/card_info/__init__.py +++ b/card_info/__init__.py @@ -69,6 +69,9 @@ def is_action(singular_card_name): def is_attack(singular_card_name): return _card_info_rows[singular_card_name]['Attack'] == '1' +def expansion(singular_card_name): + return _card_info_rows[singular_card_name]['Expansion'] + def num_plus_actions(singular_card_name): r = _card_info_rows[singular_card_name]['Actions'] try: diff --git a/card_info/card_list.csv b/card_info/card_list.csv index ba091fc..521a625 100644 --- a/card_info/card_list.csv +++ b/card_info/card_list.csv @@ -1,174 +1,174 @@ -"Singular","Plural","Cost","Actions","Cards","Action","Treasure","Victory","Attack","Reaction","Duration","VP","Trash","Coins","Buys","Index" -"Adventurer","Adventurers",6,0,2,1,0,0,0,0,0,0,0,0,0,0 -"Alchemist","Alchemists","P3",1,2,1,0,0,0,0,0,0,0,0,0,1 -"Ambassador","Ambassadors",3,0,0,1,0,0,1,0,0,0,0,0,0,2 -"Apothecary","Apothecaries","P2",1,1,1,0,0,0,0,0,0,0,0,0,3 -"Apprentice","Apprentices",5,1,0,1,0,0,0,0,0,0,1,0,0,4 -"Archivist","Archivists",5,1,"?",1,0,0,0,0,0,0,0,"?",0,5 -"Bag of Gold","Bags of Gold","*0",1,0,1,0,0,0,0,0,0,0,0,0,6 -"Bank","Banks",7,0,0,0,1,0,0,0,0,0,0,"?",0,7 -"Baron","Barons",4,0,0,1,0,0,0,0,0,0,0,4,1,8 -"Bazaar","Bazaars",5,2,1,1,0,0,0,0,0,0,0,1,0,9 -"Bishop","Bishops",4,0,0,1,0,0,0,0,0,0,1,1,0,10 -"Black Market","Black Markets",3,0,0,1,0,0,0,0,0,0,0,2,1,11 -"Border Village","Border Villages",6,2,1,1,0,0,0,0,0,0,0,0,0,12 -"Bridge","Bridges",4,0,0,1,0,0,0,0,0,0,0,1,1,13 -"Bureaucrat","Bureaucrats",4,0,0,1,0,0,1,0,0,0,0,0,0,14 -"Cache","Caches",5,0,0,0,1,0,0,0,0,0,0,3,0,15 -"Caravan","Caravans",4,1,1,1,0,0,0,0,1,0,0,0,0,16 -"Cartographer","Cartographers",5,1,1,1,0,0,0,0,0,0,0,0,0,17 -"Cellar","Cellars",2,1,0,1,0,0,0,0,0,0,0,0,0,18 -"Chancellor","Chancellors",3,0,0,1,0,0,0,0,0,0,0,2,0,19 -"Chapel","Chapels",2,0,0,1,0,0,0,0,0,0,4,0,0,20 -"City","Cities",5,2,1,1,0,0,0,0,0,0,0,1,1,21 -"Colony","Colonies",11,0,0,0,0,1,0,0,0,10,0,0,0,22 -"Conspirator","Conspirators",4,0,0,1,0,0,0,0,0,0,0,2,0,23 -"Contraband","Contrabands",5,0,0,0,1,0,0,0,0,0,0,3,1,24 -"Copper","Coppers",0,0,0,0,1,0,0,0,0,0,0,1,0,25 -"Coppersmith","Coppersmiths",4,0,0,1,0,0,0,0,0,0,0,0,0,26 -"Council Room","Council Rooms",5,0,4,1,0,0,0,0,0,0,0,0,1,27 -"Counting House","Counting Houses",5,0,0,1,0,0,0,0,0,0,0,0,0,28 -"Courtyard","Courtyards",2,0,2,1,0,0,0,0,0,0,0,0,0,29 -"Crossroads","Crossroads",2,"?","?",1,0,0,0,0,0,0,0,0,0,30 -"Curse","Curses",0,0,0,0,0,0,0,0,0,-1,0,0,0,31 -"Cutpurse","Cutpurses",4,0,0,1,0,0,1,0,0,0,0,2,0,32 -"Develop","Develops",3,0,0,1,0,0,0,0,0,0,0,0,0,33 -"Diadem","Diadems","*0",0,0,0,1,0,0,0,0,0,0,"?",0,34 -"Duchy","Duchies",5,0,0,0,0,1,0,0,0,3,0,0,0,35 -"Duke","Dukes",5,0,0,0,0,1,0,0,0,"?",0,0,0,36 -"Duchess","Duchesses",2,0,0,1,0,0,0,0,0,0,0,2,0,37 -"Embargo","Embargoes",2,0,0,1,0,0,0,0,0,0,1,2,0,38 -"Embassy","Embassies",5,0,5,1,0,0,0,0,0,0,0,0,0,39 -"Envoy","Envoys",4,0,4,1,0,0,0,0,0,0,0,0,0,40 -"Estate","Estates",2,0,0,0,0,1,0,0,0,1,0,0,0,41 -"Expand","Expands",7,0,0,1,0,0,0,0,0,0,1,0,0,42 -"Explorer","Explorers",5,0,0,1,0,0,0,0,0,0,0,0,0,43 -"Fairgrounds","Fairgrounds",6,0,0,0,0,0,0,0,0,"?",0,0,0,44 -"Familiar","Familiars","P3",1,1,1,0,0,1,0,0,0,0,0,0,45 -"Farming Village","Farming Villages",4,2,1,1,0,0,0,0,0,0,0,0,0,46 -"Farmland","Farmlands",6,0,0,0,0,1,0,0,0,2,0,0,0,47 -"Feast","Feasts",4,0,0,1,0,0,0,0,0,0,1,0,0,48 -"Festival","Festivals",5,2,0,1,0,0,0,0,0,0,0,2,1,49 -"Fishing Village","Fishing Villages",3,2,0,1,0,0,0,0,1,0,0,1,0,50 -"Followers","Followers","*0",0,2,1,0,0,0,0,0,0,0,0,0,51 -"Fool's Gold","Fool's Golds",2,0,0,0,1,0,0,1,0,0,0,"?",0,52 -"Forge","Forges",7,0,0,1,0,0,0,0,0,0,99,0,0,53 -"Fortune Teller","Fortune Tellers",3,0,0,1,0,0,0,0,0,0,0,2,0,54 -"Gardens","Gardens",4,0,0,0,0,1,0,0,0,"?",0,0,0,55 -"Ghost Ship","Ghost Ships",5,0,2,1,0,0,1,0,0,0,0,0,0,56 -"Gold","Golds",6,0,0,0,1,0,0,0,0,0,0,3,0,57 -"Golem","Golems","P4",0,0,1,0,0,0,0,0,0,0,0,0,58 -"Goons","Goons",6,0,0,1,0,0,1,0,0,0,0,2,1,59 -"Governor","Governors",5,1,"?",1,0,0,0,0,0,0,"?",0,0,60 -"Grand Market","Grand Markets",6,1,1,1,0,0,0,0,0,0,0,2,1,61 -"Great Hall","Great Halls",3,1,1,1,0,1,0,0,0,1,0,0,0,62 -"Haggler","Hagglers",5,0,0,1,0,0,0,0,0,0,0,2,0,63 -"Hamlet","Hamlets",2,2,1,1,0,0,0,0,0,0,0,0,1,64 -"Harem","Harems",6,0,0,0,1,1,0,0,0,2,0,2,0,65 -"Harvest","Harvests",5,0,0,1,0,0,0,0,0,0,0,"?",0,66 -"Haven","Havens",2,1,1,1,0,0,0,0,1,0,0,0,0,67 -"Herbalist","Herbalists",2,0,0,1,0,0,0,0,0,0,0,1,1,68 -"Highway","Highways",5,1,1,1,0,0,0,0,0,0,0,0,0,69 -"Hoard","Hoards",6,0,0,0,1,0,0,0,0,0,0,2,0,70 -"Horn of Plenty","Horns of Plenty",5,0,0,0,1,0,0,0,0,0,0,0,0,71 -"Horse Traders","Horse Traders",4,0,-2,1,0,0,0,1,0,0,0,3,1,72 -"Hunting Party","Hunting Parties",5,1,2,1,0,0,0,0,0,0,0,0,0,73 -"Ill-Gotten Gains","Ill-Gotten Gains",5,0,0,0,1,0,0,0,0,0,0,0,0,74 -"Inn","Inns",5,2,2,1,0,0,0,0,0,0,0,0,0,75 -"Ironworks","Ironworks",4,0,0,1,0,0,0,0,0,0,0,1,0,76 -"Island","Islands",4,0,0,1,0,1,0,0,0,2,0,0,0,77 -"Jack of All Trades","Jacks of All Trades",4,0,0,1,0,0,0,0,0,0,0,0,0,78 -"Jester","Jesters",5,0,0,1,0,0,1,0,0,0,0,2,0,79 -"King's Court","King's Courts",7,0,0,1,0,0,0,0,0,0,0,0,0,80 -"Laboratory","Laboratories",5,1,2,1,0,0,0,0,0,0,0,0,0,81 -"Library","Libraries",5,0,3,1,0,0,0,0,0,0,0,0,0,82 -"Lighthouse","Lighthouses",2,1,0,1,0,0,0,1,1,0,0,1,0,83 -"Loan","Loans",3,0,0,0,1,0,0,0,0,0,1,1,0,84 -"Lookout","Lookouts",3,1,0,1,0,0,0,0,0,0,1,0,0,85 -"Mandarin","Mandarins",5,0,0,1,3,0,0,0,0,0,0,3,0,86 -"Market","Markets",5,1,1,1,0,0,0,0,0,0,0,1,1,87 -"Margrave","Margraves",5,0,3,1,0,0,1,0,0,0,0,0,1,88 -"Masquerade","Masquerades",3,0,2,1,0,0,0,0,0,0,1,0,0,89 -"Menagerie","Menageries",3,1,3,1,0,0,0,0,0,0,0,0,,90 -"Merchant Ship","Merchant Ships",5,0,0,1,0,0,0,0,1,0,0,2,0,91 -"Militia","Militias",4,0,0,1,0,0,1,0,0,0,0,2,0,92 -"Mine","Mines",5,0,0,1,0,0,0,0,0,0,1,0,0,93 -"Mining Village","Mining Villages",4,2,1,1,0,0,0,0,0,0,1,2,0,94 -"Minion","Minions",5,1,0,1,0,0,1,0,0,0,0,2,0,95 -"Mint","Mints",5,0,0,1,0,0,0,0,0,0,"?",0,0,96 -"Moat","Moats",2,0,2,1,0,0,0,1,0,0,0,0,0,97 -"Moneylender","Moneylenders",4,0,0,1,0,0,0,0,0,0,1,3,0,98 -"Monument","Monuments",4,0,0,1,0,0,0,0,0,0,0,2,0,99 -"Mountebank","Mountebanks",5,0,0,1,0,0,1,0,0,0,0,2,0,100 -"Native Village","Native Villages",2,2,0,1,0,0,0,0,0,0,0,0,0,101 -"Navigator","Navigators",4,0,0,1,0,0,0,0,0,0,0,2,0,102 -"Nobles","Nobles",6,2,3,1,0,1,0,0,0,2,0,0,0,103 -"Noble Brigand","Noble Brigands",4,0,0,1,0,0,1,0,0,0,0,1,0,104 -"Nomad Camp","Nomad Camps",4,0,0,1,0,0,0,0,0,0,0,2,1,105 -"Oasis","Oases",3,1,1,1,0,0,0,0,0,0,0,1,0,106 -"Oracle","Oracles",3,0,2,1,0,0,1,0,0,0,0,0,0,107 -"Outpost","Outposts",5,0,0,1,0,0,0,0,1,0,0,0,0,108 -"Pawn","Pawns",2,1,1,1,0,0,0,0,0,0,0,1,1,109 -"Pearl Diver","Pearl Divers",2,1,1,1,0,0,0,0,0,0,0,0,0,110 -"Peddler","Peddlers",8,1,1,1,0,0,0,0,0,0,0,1,0,111 -"Philosopher's Stone","Philosopher's Stones","P3",0,0,0,1,0,0,0,0,0,0,"?",0,112 -"Pirate Ship","Pirate Ships",4,0,0,1,0,0,1,0,0,0,0,"?",0,113 -"Platinum","Platinums",9,0,0,0,1,0,0,0,0,0,0,5,0,114 -"Possession","Possessions","P6",0,0,1,0,0,0,0,0,0,0,0,0,115 -"Potion","Potions",4,0,0,0,1,0,0,0,0,0,0,"P",0,116 -"Princess","Princesses","*0",0,0,1,0,0,0,0,0,0,0,0,1,117 -"Province","Provinces",8,0,0,0,0,1,0,0,0,6,0,0,0,118 -"Quarry","Quarries",4,0,0,0,1,0,0,0,0,0,0,1,0,119 -"Rabble","Rabbles",5,0,3,1,0,0,1,0,0,0,0,0,0,120 -"Remake","Remakes",4,0,0,1,0,0,0,0,0,0,0,0,0,121 -"Remodel","Remodels",4,0,0,1,0,0,0,0,0,0,1,0,0,122 -"Royal Seal","Royal Seals",5,0,0,0,1,0,0,0,0,0,0,2,0,123 -"Saboteur","Saboteurs",5,0,0,1,0,0,1,0,0,0,0,0,0,124 -"Salvager","Salvagers",4,0,0,1,0,0,0,0,0,0,1,"?",1,125 -"Scheme","Schemes",3,1,1,1,0,0,0,0,0,0,0,0,0,126 -"Scout","Scouts",4,1,0,1,0,0,0,0,0,0,0,0,0,127 -"Scrying Pool","Scrying Pools","P2",1,1,1,0,0,1,0,0,0,0,0,0,128 -"Sea Hag","Sea Hags",4,0,0,1,0,0,1,0,0,0,0,0,0,129 -"Secret Chamber","Secret Chambers",2,0,0,1,0,0,0,1,0,0,0,"?",0,130 -"Shanty Town","Shanty Towns",3,2,2,1,0,0,0,0,0,0,0,0,0,131 -"Silk Road","Silk Roads",4,0,0,0,0,1,0,0,0,"?",0,0,0,132 -"Silver","Silvers",3,0,0,0,1,0,0,0,0,0,0,2,0,133 -"Smithy","Smithies",4,0,3,1,0,0,0,0,0,0,0,0,0,134 -"Smugglers","Smugglers",3,0,0,1,0,0,0,0,0,0,0,0,0,135 -"Spice Merchant","Spice Merchants",4,"?","?",1,0,0,0,0,0,0,0,"?","?",136 -"Spy","Spies",4,1,1,1,0,0,1,0,0,0,0,0,0,137 -"Stables","Stables",5,0,0,1,0,0,0,0,0,0,0,0,0,138 -"Stash","Stashes",5,0,0,0,1,0,0,0,0,0,0,2,0,139 -"Steward","Stewards",3,0,2,1,0,0,0,0,0,0,2,2,0,140 -"Swindler","Swindlers",3,0,0,1,0,0,1,0,0,0,0,2,0,141 -"Tactician","Tacticians",5,0,0,1,0,0,0,0,1,0,0,0,0,142 -"Talisman","Talismans",4,0,0,0,1,0,0,0,0,0,0,1,0,143 -"Thief","Thieves",4,0,0,1,0,0,1,0,0,0,0,0,0,144 -"Throne Room","Throne Rooms",4,0,0,1,0,0,0,0,0,0,0,0,0,145 -"Torturer","Torturers",5,0,3,1,0,0,1,0,0,0,0,0,0,146 -"Tournament","Tournaments",4,1,1,1,0,0,0,0,0,0,0,1,0,147 -"Trade Route","Trade Routes",3,0,0,1,0,0,0,0,0,0,1,"?",1,148 -"Trader","Traders",4,0,0,1,0,0,0,1,0,0,1,0,0,149 -"Trading Post","Trading Posts",5,0,0,1,0,0,0,0,0,0,2,0,0,150 -"Transmute","Transmutes","P",0,0,1,0,0,0,0,0,0,1,0,0,151 -"Treasure Map","Treasure Maps",4,0,0,1,0,0,0,0,0,0,2,0,0,152 -"Treasury","Treasuries",5,1,1,1,0,0,0,0,0,0,0,1,0,153 -"Tribute","Tributes",5,"?","?",1,0,0,0,0,0,0,0,"?",0,154 -"Trusty Steed","Trusty Steeds","*0","?","?",1,0,0,0,0,0,0,0,"?",0,155 -"Tunnel","Tunnels",3,0,0,0,0,1,0,1,0,2,0,0,0,156 -"University","Universities","P2",2,0,1,0,0,0,0,0,0,0,0,0,157 -"Upgrade","Upgrades",5,1,1,1,0,0,0,0,0,0,1,0,0,158 -"Vault","Vaults",5,0,2,1,0,0,0,0,0,0,0,"?",0,159 -"Venture","Ventures",5,0,0,0,1,0,0,0,0,0,0,1,0,160 -"Village","Villages",3,2,1,1,0,0,0,0,0,0,0,0,0,161 -"Vineyard","Vineyards","P",0,0,0,0,1,0,0,0,"?",0,0,0,162 -"Walled Village","Walled Villages",4,2,1,1,0,0,0,0,0,0,0,0,0,163 -"Warehouse","Warehouses",3,1,0,1,0,0,0,0,0,0,0,0,0,164 -"Watchtower","Watchtowers",3,0,2,1,0,0,0,1,0,0,0,0,0,165 -"Wharf","Wharves",5,0,2,1,0,0,0,0,1,0,0,0,1,166 -"Wishing Well","Wishing Wells",3,1,1,1,0,0,0,0,0,0,0,0,0,167 -"Witch","Witches",5,0,2,1,0,0,1,0,0,0,0,0,0,168 -"Woodcutter","Woodcutters",3,0,0,1,0,0,0,0,0,0,0,2,1,169 -"Worker's Village","Worker's Villages",4,2,1,1,0,0,0,0,0,0,0,0,1,170 -"Workshop","Workshops",3,0,0,1,0,0,0,0,0,0,0,0,0,171 -"Young Witch","Young Witches",4,0,2,1,0,0,0,0,0,0,0,0,0,172 +"Singular","Plural","Cost","Actions","Cards","Action","Treasure","Victory","Attack","Reaction","Duration","VP","Trash","Coins","Buys","Index","Expansion" +"Adventurer","Adventurers",6,0,2,1,0,0,0,0,0,0,0,0,0,0,"Dominion" +"Alchemist","Alchemists","P3",1,2,1,0,0,0,0,0,0,0,0,0,1,"Alchemy" +"Ambassador","Ambassadors",3,0,0,1,0,0,1,0,0,0,0,0,0,2,"Seaside" +"Apothecary","Apothecaries","P2",1,1,1,0,0,0,0,0,0,0,0,0,3,"Alchemy" +"Apprentice","Apprentices",5,1,0,1,0,0,0,0,0,0,1,0,0,4,"Alchemy" +"Archivist","Archivists",5,1,"?",1,0,0,0,0,0,0,0,"?",0,5,"Fan" +"Bag of Gold","Bags of Gold","*0",1,0,1,0,0,0,0,0,0,0,0,0,6,"Cornucopia" +"Bank","Banks",7,0,0,0,1,0,0,0,0,0,0,"?",0,7,"Prosperity" +"Baron","Barons",4,0,0,1,0,0,0,0,0,0,0,4,1,8,"Intrigue" +"Bazaar","Bazaars",5,2,1,1,0,0,0,0,0,0,0,1,0,9,"Seaside" +"Bishop","Bishops",4,0,0,1,0,0,0,0,0,0,1,1,0,10,"Prosperity" +"Black Market","Black Markets",3,0,0,1,0,0,0,0,0,0,0,2,1,11,"Promotional" +"Border Village","Border Villages",6,2,1,1,0,0,0,0,0,0,0,0,0,12,"Hinterlands" +"Bridge","Bridges",4,0,0,1,0,0,0,0,0,0,0,1,1,13,"Intrigue" +"Bureaucrat","Bureaucrats",4,0,0,1,0,0,1,0,0,0,0,0,0,14,"Dominion" +"Cache","Caches",5,0,0,0,1,0,0,0,0,0,0,3,0,15,"Hinterlands" +"Caravan","Caravans",4,1,1,1,0,0,0,0,1,0,0,0,0,16,"Seaside" +"Cartographer","Cartographers",5,1,1,1,0,0,0,0,0,0,0,0,0,17,"Hinterlands" +"Cellar","Cellars",2,1,0,1,0,0,0,0,0,0,0,0,0,18,"Dominion" +"Chancellor","Chancellors",3,0,0,1,0,0,0,0,0,0,0,2,0,19,"Dominion" +"Chapel","Chapels",2,0,0,1,0,0,0,0,0,0,4,0,0,20,"Dominion" +"City","Cities",5,2,1,1,0,0,0,0,0,0,0,1,1,21,"Prosperity" +"Colony","Colonies",11,0,0,0,0,1,0,0,0,10,0,0,0,22,"Prosperity" +"Conspirator","Conspirators",4,0,0,1,0,0,0,0,0,0,0,2,0,23,"Intrigue" +"Contraband","Contrabands",5,0,0,0,1,0,0,0,0,0,0,3,1,24,"Prosperity" +"Copper","Coppers",0,0,0,0,1,0,0,0,0,0,0,1,0,25,"Common" +"Coppersmith","Coppersmiths",4,0,0,1,0,0,0,0,0,0,0,0,0,26,"Intrigue" +"Council Room","Council Rooms",5,0,4,1,0,0,0,0,0,0,0,0,1,27,"Dominion" +"Counting House","Counting Houses",5,0,0,1,0,0,0,0,0,0,0,0,0,28,"Prosperity" +"Courtyard","Courtyards",2,0,2,1,0,0,0,0,0,0,0,0,0,29,"Intrigue" +"Crossroads","Crossroads",2,"?","?",1,0,0,0,0,0,0,0,0,0,30,"Hinterlands" +"Curse","Curses",0,0,0,0,0,0,0,0,0,-1,0,0,0,31,"Common" +"Cutpurse","Cutpurses",4,0,0,1,0,0,1,0,0,0,0,2,0,32,"Seaside" +"Develop","Develops",3,0,0,1,0,0,0,0,0,0,0,0,0,33,"Hinterlands" +"Diadem","Diadems","*0",0,0,0,1,0,0,0,0,0,0,"?",0,34,"Cornucopia" +"Duchy","Duchies",5,0,0,0,0,1,0,0,0,3,0,0,0,35,"Common" +"Duke","Dukes",5,0,0,0,0,1,0,0,0,"?",0,0,0,36,"Intrigue" +"Duchess","Duchesses",2,0,0,1,0,0,0,0,0,0,0,2,0,37,"Hinterlands" +"Embargo","Embargoes",2,0,0,1,0,0,0,0,0,0,1,2,0,38,"Seaside" +"Embassy","Embassies",5,0,5,1,0,0,0,0,0,0,0,0,0,39,"Hinterlands" +"Envoy","Envoys",4,0,4,1,0,0,0,0,0,0,0,0,0,40,"Promotional" +"Estate","Estates",2,0,0,0,0,1,0,0,0,1,0,0,0,41,"Common" +"Expand","Expands",7,0,0,1,0,0,0,0,0,0,1,0,0,42,"Prosperity" +"Explorer","Explorers",5,0,0,1,0,0,0,0,0,0,0,0,0,43,"Seaside" +"Fairgrounds","Fairgrounds",6,0,0,0,0,0,0,0,0,"?",0,0,0,44,"Cornucopia" +"Familiar","Familiars","P3",1,1,1,0,0,1,0,0,0,0,0,0,45,"Alchemy" +"Farming Village","Farming Villages",4,2,1,1,0,0,0,0,0,0,0,0,0,46,"Cornucopia" +"Farmland","Farmlands",6,0,0,0,0,1,0,0,0,2,0,0,0,47,"Hinterlands" +"Feast","Feasts",4,0,0,1,0,0,0,0,0,0,1,0,0,48,"Dominion" +"Festival","Festivals",5,2,0,1,0,0,0,0,0,0,0,2,1,49,"Dominion" +"Fishing Village","Fishing Villages",3,2,0,1,0,0,0,0,1,0,0,1,0,50,"Seaside" +"Followers","Followers","*0",0,2,1,0,0,0,0,0,0,0,0,0,51,"Cornucopia" +"Fool's Gold","Fool's Golds",2,0,0,0,1,0,0,1,0,0,0,"?",0,52,"Hinterlands" +"Forge","Forges",7,0,0,1,0,0,0,0,0,0,99,0,0,53,"Prosperity" +"Fortune Teller","Fortune Tellers",3,0,0,1,0,0,0,0,0,0,0,2,0,54,"Cornucopia" +"Gardens","Gardens",4,0,0,0,0,1,0,0,0,"?",0,0,0,55,"Dominion" +"Ghost Ship","Ghost Ships",5,0,2,1,0,0,1,0,0,0,0,0,0,56,"Seaside" +"Gold","Golds",6,0,0,0,1,0,0,0,0,0,0,3,0,57,"Common" +"Golem","Golems","P4",0,0,1,0,0,0,0,0,0,0,0,0,58,"Alchemy" +"Goons","Goons",6,0,0,1,0,0,1,0,0,0,0,2,1,59,"Prosperity" +"Governor","Governors",5,1,"?",1,0,0,0,0,0,0,"?",0,0,60,"Promotional" +"Grand Market","Grand Markets",6,1,1,1,0,0,0,0,0,0,0,2,1,61,"Prosperity" +"Great Hall","Great Halls",3,1,1,1,0,1,0,0,0,1,0,0,0,62,"Intrigue" +"Haggler","Hagglers",5,0,0,1,0,0,0,0,0,0,0,2,0,63,"Hinterlands" +"Hamlet","Hamlets",2,2,1,1,0,0,0,0,0,0,0,0,1,64,"Cornucopia" +"Harem","Harems",6,0,0,0,1,1,0,0,0,2,0,2,0,65,"Intrigue" +"Harvest","Harvests",5,0,0,1,0,0,0,0,0,0,0,"?",0,66,"Cornucopia" +"Haven","Havens",2,1,1,1,0,0,0,0,1,0,0,0,0,67,"Seaside" +"Herbalist","Herbalists",2,0,0,1,0,0,0,0,0,0,0,1,1,68,"Alchemy" +"Highway","Highways",5,1,1,1,0,0,0,0,0,0,0,0,0,69,"Hinterlands" +"Hoard","Hoards",6,0,0,0,1,0,0,0,0,0,0,2,0,70,"Prosperity" +"Horn of Plenty","Horns of Plenty",5,0,0,0,1,0,0,0,0,0,0,0,0,71,"Cornucopia" +"Horse Traders","Horse Traders",4,0,-2,1,0,0,0,1,0,0,0,3,1,72,"Cornucopia" +"Hunting Party","Hunting Parties",5,1,2,1,0,0,0,0,0,0,0,0,0,73,"Cornucopia" +"Ill-Gotten Gains","Ill-Gotten Gains",5,0,0,0,1,0,0,0,0,0,0,0,0,74,"Hinterlands" +"Inn","Inns",5,2,2,1,0,0,0,0,0,0,0,0,0,75,"Hinterlands" +"Ironworks","Ironworks",4,0,0,1,0,0,0,0,0,0,0,1,0,76,"Intrigue" +"Island","Islands",4,0,0,1,0,1,0,0,0,2,0,0,0,77,"Seaside" +"Jack of All Trades","Jacks of All Trades",4,0,0,1,0,0,0,0,0,0,0,0,0,78,"Hinterlands" +"Jester","Jesters",5,0,0,1,0,0,1,0,0,0,0,2,0,79,"Cornucopia" +"King's Court","King's Courts",7,0,0,1,0,0,0,0,0,0,0,0,0,80,"Prosperity" +"Laboratory","Laboratories",5,1,2,1,0,0,0,0,0,0,0,0,0,81,"Dominion" +"Library","Libraries",5,0,3,1,0,0,0,0,0,0,0,0,0,82,"Dominion" +"Lighthouse","Lighthouses",2,1,0,1,0,0,0,1,1,0,0,1,0,83,"Seaside" +"Loan","Loans",3,0,0,0,1,0,0,0,0,0,1,1,0,84,"Prosperity" +"Lookout","Lookouts",3,1,0,1,0,0,0,0,0,0,1,0,0,85,"Seaside" +"Mandarin","Mandarins",5,0,0,1,3,0,0,0,0,0,0,3,0,86,"Hinterlands" +"Market","Markets",5,1,1,1,0,0,0,0,0,0,0,1,1,87,"Dominion" +"Margrave","Margraves",5,0,3,1,0,0,1,0,0,0,0,0,1,88,"Hinterlands" +"Masquerade","Masquerades",3,0,2,1,0,0,0,0,0,0,1,0,0,89,"Intrigue" +"Menagerie","Menageries",3,1,3,1,0,0,0,0,0,0,0,0,,90,"Cornucopia" +"Merchant Ship","Merchant Ships",5,0,0,1,0,0,0,0,1,0,0,2,0,91,"Seaside" +"Militia","Militias",4,0,0,1,0,0,1,0,0,0,0,2,0,92,"Dominion" +"Mine","Mines",5,0,0,1,0,0,0,0,0,0,1,0,0,93,"Dominion" +"Mining Village","Mining Villages",4,2,1,1,0,0,0,0,0,0,1,2,0,94,"Intrigue" +"Minion","Minions",5,1,0,1,0,0,1,0,0,0,0,2,0,95,"Intrigue" +"Mint","Mints",5,0,0,1,0,0,0,0,0,0,"?",0,0,96,"Prosperity" +"Moat","Moats",2,0,2,1,0,0,0,1,0,0,0,0,0,97,"Dominion" +"Moneylender","Moneylenders",4,0,0,1,0,0,0,0,0,0,1,3,0,98,"Dominion" +"Monument","Monuments",4,0,0,1,0,0,0,0,0,0,0,2,0,99,"Prosperity" +"Mountebank","Mountebanks",5,0,0,1,0,0,1,0,0,0,0,2,0,100,"Prosperity" +"Native Village","Native Villages",2,2,0,1,0,0,0,0,0,0,0,0,0,101,"Seaside" +"Navigator","Navigators",4,0,0,1,0,0,0,0,0,0,0,2,0,102,"Seaside" +"Nobles","Nobles",6,2,3,1,0,1,0,0,0,2,0,0,0,103,"Intrigue" +"Noble Brigand","Noble Brigands",4,0,0,1,0,0,1,0,0,0,0,1,0,104,"Hinterlands" +"Nomad Camp","Nomad Camps",4,0,0,1,0,0,0,0,0,0,0,2,1,105,"Hinterlands" +"Oasis","Oases",3,1,1,1,0,0,0,0,0,0,0,1,0,106,"Hinterlands" +"Oracle","Oracles",3,0,2,1,0,0,1,0,0,0,0,0,0,107,"Hinterlands" +"Outpost","Outposts",5,0,0,1,0,0,0,0,1,0,0,0,0,108,"Seaside" +"Pawn","Pawns",2,1,1,1,0,0,0,0,0,0,0,1,1,109,"Intrigue" +"Pearl Diver","Pearl Divers",2,1,1,1,0,0,0,0,0,0,0,0,0,110,"Seaside" +"Peddler","Peddlers",8,1,1,1,0,0,0,0,0,0,0,1,0,111,"Prosperity" +"Philosopher's Stone","Philosopher's Stones","P3",0,0,0,1,0,0,0,0,0,0,"?",0,112,"Alchemy" +"Pirate Ship","Pirate Ships",4,0,0,1,0,0,1,0,0,0,0,"?",0,113,"Seaside" +"Platinum","Platinums",9,0,0,0,1,0,0,0,0,0,0,5,0,114,"Prosperity" +"Possession","Possessions","P6",0,0,1,0,0,0,0,0,0,0,0,0,115,"Alchemy" +"Potion","Potions",4,0,0,0,1,0,0,0,0,0,0,"P",0,116,"Alchemy" +"Princess","Princesses","*0",0,0,1,0,0,0,0,0,0,0,0,1,117,"Cornucopia" +"Province","Provinces",8,0,0,0,0,1,0,0,0,6,0,0,0,118,"Common" +"Quarry","Quarries",4,0,0,0,1,0,0,0,0,0,0,1,0,119,"Prosperity" +"Rabble","Rabbles",5,0,3,1,0,0,1,0,0,0,0,0,0,120,"Prosperity" +"Remake","Remakes",4,0,0,1,0,0,0,0,0,0,0,0,0,121,"Cornucopia" +"Remodel","Remodels",4,0,0,1,0,0,0,0,0,0,1,0,0,122,"Dominion" +"Royal Seal","Royal Seals",5,0,0,0,1,0,0,0,0,0,0,2,0,123,"Prosperity" +"Saboteur","Saboteurs",5,0,0,1,0,0,1,0,0,0,0,0,0,124,"Intrigue" +"Salvager","Salvagers",4,0,0,1,0,0,0,0,0,0,1,"?",1,125,"Seaside" +"Scheme","Schemes",3,1,1,1,0,0,0,0,0,0,0,0,0,126,"Hinterlands" +"Scout","Scouts",4,1,0,1,0,0,0,0,0,0,0,0,0,127,"Intrigue" +"Scrying Pool","Scrying Pools","P2",1,1,1,0,0,1,0,0,0,0,0,0,128,"Alchemy" +"Sea Hag","Sea Hags",4,0,0,1,0,0,1,0,0,0,0,0,0,129,"Seaside" +"Secret Chamber","Secret Chambers",2,0,0,1,0,0,0,1,0,0,0,"?",0,130,"Intrigue" +"Shanty Town","Shanty Towns",3,2,2,1,0,0,0,0,0,0,0,0,0,131,"Intrigue" +"Silk Road","Silk Roads",4,0,0,0,0,1,0,0,0,"?",0,0,0,132,"Hinterlands" +"Silver","Silvers",3,0,0,0,1,0,0,0,0,0,0,2,0,133,"Common" +"Smithy","Smithies",4,0,3,1,0,0,0,0,0,0,0,0,0,134,"Dominion" +"Smugglers","Smugglers",3,0,0,1,0,0,0,0,0,0,0,0,0,135,"Seaside" +"Spice Merchant","Spice Merchants",4,"?","?",1,0,0,0,0,0,0,0,"?","?",136,"Hinterlands" +"Spy","Spies",4,1,1,1,0,0,1,0,0,0,0,0,0,137,"Dominion" +"Stables","Stables",5,0,0,1,0,0,0,0,0,0,0,0,0,138,"Hinterlands" +"Stash","Stashes",5,0,0,0,1,0,0,0,0,0,0,2,0,139,"Promotional" +"Steward","Stewards",3,0,2,1,0,0,0,0,0,0,2,2,0,140,"Intrigue" +"Swindler","Swindlers",3,0,0,1,0,0,1,0,0,0,0,2,0,141,"Intrigue" +"Tactician","Tacticians",5,0,0,1,0,0,0,0,1,0,0,0,0,142,"Seaside" +"Talisman","Talismans",4,0,0,0,1,0,0,0,0,0,0,1,0,143,"Prosperity" +"Thief","Thieves",4,0,0,1,0,0,1,0,0,0,0,0,0,144,"Dominion" +"Throne Room","Throne Rooms",4,0,0,1,0,0,0,0,0,0,0,0,0,145,"Dominion" +"Torturer","Torturers",5,0,3,1,0,0,1,0,0,0,0,0,0,146,"Intrigue" +"Tournament","Tournaments",4,1,1,1,0,0,0,0,0,0,0,1,0,147,"Cornucopia" +"Trade Route","Trade Routes",3,0,0,1,0,0,0,0,0,0,1,"?",1,148,"Prosperity" +"Trader","Traders",4,0,0,1,0,0,0,1,0,0,1,0,0,149,"Hinterlands" +"Trading Post","Trading Posts",5,0,0,1,0,0,0,0,0,0,2,0,0,150,"Intrigue" +"Transmute","Transmutes","P",0,0,1,0,0,0,0,0,0,1,0,0,151,"Alchemy" +"Treasure Map","Treasure Maps",4,0,0,1,0,0,0,0,0,0,2,0,0,152,"Seaside" +"Treasury","Treasuries",5,1,1,1,0,0,0,0,0,0,0,1,0,153,"Seaside" +"Tribute","Tributes",5,"?","?",1,0,0,0,0,0,0,0,"?",0,154,"Intrigue" +"Trusty Steed","Trusty Steeds","*0","?","?",1,0,0,0,0,0,0,0,"?",0,155,"Cornucopia" +"Tunnel","Tunnels",3,0,0,0,0,1,0,1,0,2,0,0,0,156,"Hinterlands" +"University","Universities","P2",2,0,1,0,0,0,0,0,0,0,0,0,157,"Alchemy" +"Upgrade","Upgrades",5,1,1,1,0,0,0,0,0,0,1,0,0,158,"Intrigue" +"Vault","Vaults",5,0,2,1,0,0,0,0,0,0,0,"?",0,159,"Prosperity" +"Venture","Ventures",5,0,0,0,1,0,0,0,0,0,0,1,0,160,"Prosperity" +"Village","Villages",3,2,1,1,0,0,0,0,0,0,0,0,0,161,"Dominion" +"Vineyard","Vineyards","P",0,0,0,0,1,0,0,0,"?",0,0,0,162,"Alchemy" +"Walled Village","Walled Villages",4,2,1,1,0,0,0,0,0,0,0,0,0,163,"Promotional" +"Warehouse","Warehouses",3,1,0,1,0,0,0,0,0,0,0,0,0,164,"Seaside" +"Watchtower","Watchtowers",3,0,2,1,0,0,0,1,0,0,0,0,0,165,"Prosperity" +"Wharf","Wharves",5,0,2,1,0,0,0,0,1,0,0,0,1,166,"Seaside" +"Wishing Well","Wishing Wells",3,1,1,1,0,0,0,0,0,0,0,0,0,167,"Intrigue" +"Witch","Witches",5,0,2,1,0,0,1,0,0,0,0,0,0,168,"Dominion" +"Woodcutter","Woodcutters",3,0,0,1,0,0,0,0,0,0,0,2,1,169,"Dominion" +"Worker's Village","Worker's Villages",4,2,1,1,0,0,0,0,0,0,0,0,1,170,"Prosperity" +"Workshop","Workshops",3,0,0,1,0,0,0,0,0,0,0,0,0,171,"Dominion" +"Young Witch","Young Witches",4,0,2,1,0,0,0,0,0,0,0,0,0,172,"Cornucopia" diff --git a/frontend.py b/frontend.py index 3d91742..767eefc 100644 --- a/frontend.py +++ b/frontend.py @@ -40,6 +40,7 @@ '/supply_win_api', 'SupplyWinApi', '/supply_win', 'SupplyWinPage', '/optimal_card_ratios', 'OptimalCardRatios', + '/expansions', 'ExpansionsPage', '/(.*)', 'StaticPage' ) @@ -597,6 +598,48 @@ def getBackgroundColor(min_mean, max_mean, value): color += '{0:02x}'.format(component) return color +class ExpansionsPage(object): + def GET(self): + web.header("Content-Type", "text/html; charset=utf-8") + + query_dict = dict(urlparse.parse_qsl(web.ctx.env['QUERY_STRING'])) + target_player = query_dict['player'].decode('utf-8') + + db = utils.get_mongo_database() + games = db.games + norm_target_player = norm_name(target_player) + games_coll = games.find({'players': norm_target_player}) + ret = '' + + game_dist = collections.defaultdict(float) + win_dist = collections.defaultdict(float) + wp_total = 0 + games = 0 + + for g in [game.Game(g) for g in games_coll]: + pd = g.get_player_deck(norm_target_player) + wp = pd.WinPoints() + + for (ex, wt) in g.get_expansion_weight().items(): + game_dist[ex] += wt + win_dist[ex] += wt * wp + games += 1 + wp_total += wp + + average = wp_total/games + + for ex in game_dist: + wp = win_dist[ex]/game_dist[ex] + + ret += '

%s

'%ex + ret += 'Games %.2f%%
'% (game_dist[ex] / games) + ret += 'Win points %.2f
' % wp + ret += 'Favor %.2f%%
'% ( (wp - average)/average ) + + + return ret + + class StaticPage(object): def GET(self, arg): import os.path diff --git a/game.py b/game.py index f97d603..ae5a2dc 100644 --- a/game.py +++ b/game.py @@ -329,6 +329,22 @@ def short_render_cell_with_perspective(self, target_player, def game_state_iterator(self): return GameState(self) + def get_expansion_weight(self): + weights = collections.defaultdict(int) + total = 0 + + for c in self.supply: + expansion = card_info.expansion(c) + if expansion == 'Common': + continue + weights[expansion] += 1 + total += 1 + + for expansion in weights: + weights[expansion] /= float(total) + + return weights + def score_deck(deck_comp): """ Given a dict of card, frequency, return the score. """ ret = 0 diff --git a/static/card_list.js b/static/card_list.js index f9e1cc6..d08f076 100644 --- a/static/card_list.js +++ b/static/card_list.js @@ -1 +1 @@ -[{"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Adventurer", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "6", "Victory": "0", "Buys": "0", "Cards": "2", "Trash": "0", "Plural": "Adventurers"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Alchemist", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "0", "Cost": "P3", "Victory": "0", "Buys": "0", "Cards": "2", "Trash": "0", "Plural": "Alchemists"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Ambassador", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "1", "Cost": "3", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Ambassadors"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Apothecary", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "0", "Cost": "P2", "Victory": "0", "Buys": "0", "Cards": "1", "Trash": "0", "Plural": "Apothecaries"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Apprentice", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "1", "Plural": "Apprentices"}, {"Reaction": "0", "Coins": "?", "Duration": "0", "Singular": "Archivist", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "?", "Trash": "0", "Plural": "Archivists"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Bag of Gold", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "0", "Cost": "*0", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Bags of Gold"}, {"Reaction": "0", "Coins": "?", "Duration": "0", "Singular": "Bank", "Treasure": "1", "Actions": "0", "VP": "0", "Action": "0", "Attack": "0", "Cost": "7", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Banks"}, {"Reaction": "0", "Coins": "4", "Duration": "0", "Singular": "Baron", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "1", "Cards": "0", "Trash": "0", "Plural": "Barons"}, {"Reaction": "0", "Coins": "1", "Duration": "0", "Singular": "Bazaar", "Treasure": "0", "Actions": "2", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "1", "Trash": "0", "Plural": "Bazaars"}, {"Reaction": "0", "Coins": "1", "Duration": "0", "Singular": "Bishop", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "1", "Plural": "Bishops"}, {"Reaction": "0", "Coins": "2", "Duration": "0", "Singular": "Black Market", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "3", "Victory": "0", "Buys": "1", "Cards": "0", "Trash": "0", "Plural": "Black Markets"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Border Village", "Treasure": "0", "Actions": "2", "VP": "0", "Action": "1", "Attack": "0", "Cost": "6", "Victory": "0", "Buys": "0", "Cards": "1", "Trash": "0", "Plural": "Border Villages"}, {"Reaction": "0", "Coins": "1", "Duration": "0", "Singular": "Bridge", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "1", "Cards": "0", "Trash": "0", "Plural": "Bridges"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Bureaucrat", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "1", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Bureaucrats"}, {"Reaction": "0", "Coins": "3", "Duration": "0", "Singular": "Cache", "Treasure": "1", "Actions": "0", "VP": "0", "Action": "0", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Caches"}, {"Reaction": "0", "Coins": "0", "Duration": "1", "Singular": "Caravan", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "1", "Trash": "0", "Plural": "Caravans"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Cartographer", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "1", "Trash": "0", "Plural": "Cartographers"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Cellar", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "0", "Cost": "2", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Cellars"}, {"Reaction": "0", "Coins": "2", "Duration": "0", "Singular": "Chancellor", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "3", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Chancellors"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Chapel", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "2", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "4", "Plural": "Chapels"}, {"Reaction": "0", "Coins": "1", "Duration": "0", "Singular": "City", "Treasure": "0", "Actions": "2", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "1", "Cards": "1", "Trash": "0", "Plural": "Cities"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Colony", "Treasure": "0", "Actions": "0", "VP": "10", "Action": "0", "Attack": "0", "Cost": "11", "Victory": "1", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Colonies"}, {"Reaction": "0", "Coins": "2", "Duration": "0", "Singular": "Conspirator", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Conspirators"}, {"Reaction": "0", "Coins": "3", "Duration": "0", "Singular": "Contraband", "Treasure": "1", "Actions": "0", "VP": "0", "Action": "0", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "1", "Cards": "0", "Trash": "0", "Plural": "Contrabands"}, {"Reaction": "0", "Coins": "1", "Duration": "0", "Singular": "Copper", "Treasure": "1", "Actions": "0", "VP": "0", "Action": "0", "Attack": "0", "Cost": "0", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Coppers"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Coppersmith", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Coppersmiths"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Council Room", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "1", "Cards": "4", "Trash": "0", "Plural": "Council Rooms"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Counting House", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Counting Houses"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Courtyard", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "2", "Victory": "0", "Buys": "0", "Cards": "2", "Trash": "0", "Plural": "Courtyards"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Crossroads", "Treasure": "0", "Actions": "?", "VP": "0", "Action": "1", "Attack": "0", "Cost": "2", "Victory": "0", "Buys": "0", "Cards": "?", "Trash": "0", "Plural": "Crossroads"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Curse", "Treasure": "0", "Actions": "0", "VP": "-1", "Action": "0", "Attack": "0", "Cost": "0", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Curses"}, {"Reaction": "0", "Coins": "2", "Duration": "0", "Singular": "Cutpurse", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "1", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Cutpurses"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Develop", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "3", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Develops"}, {"Reaction": "0", "Coins": "?", "Duration": "0", "Singular": "Diadem", "Treasure": "1", "Actions": "0", "VP": "0", "Action": "0", "Attack": "0", "Cost": "*0", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Diadems"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Duchy", "Treasure": "0", "Actions": "0", "VP": "3", "Action": "0", "Attack": "0", "Cost": "5", "Victory": "1", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Duchies"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Duke", "Treasure": "0", "Actions": "0", "VP": "?", "Action": "0", "Attack": "0", "Cost": "5", "Victory": "1", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Dukes"}, {"Reaction": "0", "Coins": "2", "Duration": "0", "Singular": "Duchess", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "2", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Duchesses"}, {"Reaction": "0", "Coins": "2", "Duration": "0", "Singular": "Embargo", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "2", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "1", "Plural": "Embargoes"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Embassy", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "5", "Trash": "0", "Plural": "Embassies"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Envoy", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "4", "Trash": "0", "Plural": "Envoys"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Estate", "Treasure": "0", "Actions": "0", "VP": "1", "Action": "0", "Attack": "0", "Cost": "2", "Victory": "1", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Estates"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Expand", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "7", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "1", "Plural": "Expands"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Explorer", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Explorers"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Fairgrounds", "Treasure": "0", "Actions": "0", "VP": "?", "Action": "0", "Attack": "0", "Cost": "6", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Fairgrounds"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Familiar", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "1", "Cost": "P3", "Victory": "0", "Buys": "0", "Cards": "1", "Trash": "0", "Plural": "Familiars"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Farming Village", "Treasure": "0", "Actions": "2", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "1", "Trash": "0", "Plural": "Farming Villages"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Farmland", "Treasure": "0", "Actions": "0", "VP": "2", "Action": "0", "Attack": "0", "Cost": "6", "Victory": "1", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Farmlands"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Feast", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "1", "Plural": "Feasts"}, {"Reaction": "0", "Coins": "2", "Duration": "0", "Singular": "Festival", "Treasure": "0", "Actions": "2", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "1", "Cards": "0", "Trash": "0", "Plural": "Festivals"}, {"Reaction": "0", "Coins": "1", "Duration": "1", "Singular": "Fishing Village", "Treasure": "0", "Actions": "2", "VP": "0", "Action": "1", "Attack": "0", "Cost": "3", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Fishing Villages"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Followers", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "*0", "Victory": "0", "Buys": "0", "Cards": "2", "Trash": "0", "Plural": "Followers"}, {"Reaction": "1", "Coins": "?", "Duration": "0", "Singular": "Fool's Gold", "Treasure": "1", "Actions": "0", "VP": "0", "Action": "0", "Attack": "0", "Cost": "2", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Fool's Golds"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Forge", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "7", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "99", "Plural": "Forges"}, {"Reaction": "0", "Coins": "2", "Duration": "0", "Singular": "Fortune Teller", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "3", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Fortune Tellers"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Gardens", "Treasure": "0", "Actions": "0", "VP": "?", "Action": "0", "Attack": "0", "Cost": "4", "Victory": "1", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Gardens"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Ghost Ship", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "1", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "2", "Trash": "0", "Plural": "Ghost Ships"}, {"Reaction": "0", "Coins": "3", "Duration": "0", "Singular": "Gold", "Treasure": "1", "Actions": "0", "VP": "0", "Action": "0", "Attack": "0", "Cost": "6", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Golds"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Golem", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "P4", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Golems"}, {"Reaction": "0", "Coins": "2", "Duration": "0", "Singular": "Goons", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "1", "Cost": "6", "Victory": "0", "Buys": "1", "Cards": "0", "Trash": "0", "Plural": "Goons"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Governor", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "?", "Trash": "?", "Plural": "Governors"}, {"Reaction": "0", "Coins": "2", "Duration": "0", "Singular": "Grand Market", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "0", "Cost": "6", "Victory": "0", "Buys": "1", "Cards": "1", "Trash": "0", "Plural": "Grand Markets"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Great Hall", "Treasure": "0", "Actions": "1", "VP": "1", "Action": "1", "Attack": "0", "Cost": "3", "Victory": "1", "Buys": "0", "Cards": "1", "Trash": "0", "Plural": "Great Halls"}, {"Reaction": "0", "Coins": "2", "Duration": "0", "Singular": "Haggler", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Hagglers"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Hamlet", "Treasure": "0", "Actions": "2", "VP": "0", "Action": "1", "Attack": "0", "Cost": "2", "Victory": "0", "Buys": "1", "Cards": "1", "Trash": "0", "Plural": "Hamlets"}, {"Reaction": "0", "Coins": "2", "Duration": "0", "Singular": "Harem", "Treasure": "1", "Actions": "0", "VP": "2", "Action": "0", "Attack": "0", "Cost": "6", "Victory": "1", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Harems"}, {"Reaction": "0", "Coins": "?", "Duration": "0", "Singular": "Harvest", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Harvests"}, {"Reaction": "0", "Coins": "0", "Duration": "1", "Singular": "Haven", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "0", "Cost": "2", "Victory": "0", "Buys": "0", "Cards": "1", "Trash": "0", "Plural": "Havens"}, {"Reaction": "0", "Coins": "1", "Duration": "0", "Singular": "Herbalist", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "2", "Victory": "0", "Buys": "1", "Cards": "0", "Trash": "0", "Plural": "Herbalists"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Highway", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "1", "Trash": "0", "Plural": "Highways"}, {"Reaction": "0", "Coins": "2", "Duration": "0", "Singular": "Hoard", "Treasure": "1", "Actions": "0", "VP": "0", "Action": "0", "Attack": "0", "Cost": "6", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Hoards"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Horn of Plenty", "Treasure": "1", "Actions": "0", "VP": "0", "Action": "0", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Horns of Plenty"}, {"Reaction": "1", "Coins": "3", "Duration": "0", "Singular": "Horse Traders", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "1", "Cards": "-2", "Trash": "0", "Plural": "Horse Traders"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Hunting Party", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "2", "Trash": "0", "Plural": "Hunting Parties"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Ill-Gotten Gains", "Treasure": "1", "Actions": "0", "VP": "0", "Action": "0", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Ill-Gotten Gains"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Inn", "Treasure": "0", "Actions": "2", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "2", "Trash": "0", "Plural": "Inns"}, {"Reaction": "0", "Coins": "1", "Duration": "0", "Singular": "Ironworks", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Ironworks"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Island", "Treasure": "0", "Actions": "0", "VP": "2", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "1", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Islands"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Jack of All Trades", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Jacks of All Trades"}, {"Reaction": "0", "Coins": "2", "Duration": "0", "Singular": "Jester", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "1", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Jesters"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "King's Court", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "7", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "King's Courts"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Laboratory", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "2", "Trash": "0", "Plural": "Laboratories"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Library", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "3", "Trash": "0", "Plural": "Libraries"}, {"Reaction": "1", "Coins": "1", "Duration": "1", "Singular": "Lighthouse", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "0", "Cost": "2", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Lighthouses"}, {"Reaction": "0", "Coins": "1", "Duration": "0", "Singular": "Loan", "Treasure": "1", "Actions": "0", "VP": "0", "Action": "0", "Attack": "0", "Cost": "3", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "1", "Plural": "Loans"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Lookout", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "0", "Cost": "3", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "1", "Plural": "Lookouts"}, {"Reaction": "0", "Coins": "3", "Duration": "0", "Singular": "Mandarin", "Treasure": "3", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Mandarins"}, {"Reaction": "0", "Coins": "1", "Duration": "0", "Singular": "Market", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "1", "Cards": "1", "Trash": "0", "Plural": "Markets"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Margrave", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "1", "Cost": "5", "Victory": "0", "Buys": "1", "Cards": "3", "Trash": "0", "Plural": "Margraves"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Masquerade", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "3", "Victory": "0", "Buys": "0", "Cards": "2", "Trash": "1", "Plural": "Masquerades"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Menagerie", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "0", "Cost": "3", "Victory": "0", "Buys": "", "Cards": "3", "Trash": "0", "Plural": "Menageries"}, {"Reaction": "0", "Coins": "2", "Duration": "1", "Singular": "Merchant Ship", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Merchant Ships"}, {"Reaction": "0", "Coins": "2", "Duration": "0", "Singular": "Militia", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "1", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Militias"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Mine", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "1", "Plural": "Mines"}, {"Reaction": "0", "Coins": "2", "Duration": "0", "Singular": "Mining Village", "Treasure": "0", "Actions": "2", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "1", "Trash": "1", "Plural": "Mining Villages"}, {"Reaction": "0", "Coins": "2", "Duration": "0", "Singular": "Minion", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "1", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Minions"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Mint", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "?", "Plural": "Mints"}, {"Reaction": "1", "Coins": "0", "Duration": "0", "Singular": "Moat", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "2", "Victory": "0", "Buys": "0", "Cards": "2", "Trash": "0", "Plural": "Moats"}, {"Reaction": "0", "Coins": "3", "Duration": "0", "Singular": "Moneylender", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "1", "Plural": "Moneylenders"}, {"Reaction": "0", "Coins": "2", "Duration": "0", "Singular": "Monument", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Monuments"}, {"Reaction": "0", "Coins": "2", "Duration": "0", "Singular": "Mountebank", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "1", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Mountebanks"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Native Village", "Treasure": "0", "Actions": "2", "VP": "0", "Action": "1", "Attack": "0", "Cost": "2", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Native Villages"}, {"Reaction": "0", "Coins": "2", "Duration": "0", "Singular": "Navigator", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Navigators"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Nobles", "Treasure": "0", "Actions": "2", "VP": "2", "Action": "1", "Attack": "0", "Cost": "6", "Victory": "1", "Buys": "0", "Cards": "3", "Trash": "0", "Plural": "Nobles"}, {"Reaction": "0", "Coins": "1", "Duration": "0", "Singular": "Noble Brigand", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "1", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Noble Brigands"}, {"Reaction": "0", "Coins": "2", "Duration": "0", "Singular": "Nomad Camp", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "1", "Cards": "0", "Trash": "0", "Plural": "Nomad Camps"}, {"Reaction": "0", "Coins": "1", "Duration": "0", "Singular": "Oasis", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "0", "Cost": "3", "Victory": "0", "Buys": "0", "Cards": "1", "Trash": "0", "Plural": "Oases"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Oracle", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "1", "Cost": "3", "Victory": "0", "Buys": "0", "Cards": "2", "Trash": "0", "Plural": "Oracles"}, {"Reaction": "0", "Coins": "0", "Duration": "1", "Singular": "Outpost", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Outposts"}, {"Reaction": "0", "Coins": "1", "Duration": "0", "Singular": "Pawn", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "0", "Cost": "2", "Victory": "0", "Buys": "1", "Cards": "1", "Trash": "0", "Plural": "Pawns"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Pearl Diver", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "0", "Cost": "2", "Victory": "0", "Buys": "0", "Cards": "1", "Trash": "0", "Plural": "Pearl Divers"}, {"Reaction": "0", "Coins": "1", "Duration": "0", "Singular": "Peddler", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "0", "Cost": "8", "Victory": "0", "Buys": "0", "Cards": "1", "Trash": "0", "Plural": "Peddlers"}, {"Reaction": "0", "Coins": "?", "Duration": "0", "Singular": "Philosopher's Stone", "Treasure": "1", "Actions": "0", "VP": "0", "Action": "0", "Attack": "0", "Cost": "P3", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Philosopher's Stones"}, {"Reaction": "0", "Coins": "?", "Duration": "0", "Singular": "Pirate Ship", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "1", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Pirate Ships"}, {"Reaction": "0", "Coins": "5", "Duration": "0", "Singular": "Platinum", "Treasure": "1", "Actions": "0", "VP": "0", "Action": "0", "Attack": "0", "Cost": "9", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Platinums"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Possession", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "P6", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Possessions"}, {"Reaction": "0", "Coins": "P", "Duration": "0", "Singular": "Potion", "Treasure": "1", "Actions": "0", "VP": "0", "Action": "0", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Potions"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Princess", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "*0", "Victory": "0", "Buys": "1", "Cards": "0", "Trash": "0", "Plural": "Princesses"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Province", "Treasure": "0", "Actions": "0", "VP": "6", "Action": "0", "Attack": "0", "Cost": "8", "Victory": "1", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Provinces"}, {"Reaction": "0", "Coins": "1", "Duration": "0", "Singular": "Quarry", "Treasure": "1", "Actions": "0", "VP": "0", "Action": "0", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Quarries"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Rabble", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "1", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "3", "Trash": "0", "Plural": "Rabbles"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Remake", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Remakes"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Remodel", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "1", "Plural": "Remodels"}, {"Reaction": "0", "Coins": "2", "Duration": "0", "Singular": "Royal Seal", "Treasure": "1", "Actions": "0", "VP": "0", "Action": "0", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Royal Seals"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Saboteur", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "1", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Saboteurs"}, {"Reaction": "0", "Coins": "?", "Duration": "0", "Singular": "Salvager", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "1", "Cards": "0", "Trash": "1", "Plural": "Salvagers"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Scheme", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "0", "Cost": "3", "Victory": "0", "Buys": "0", "Cards": "1", "Trash": "0", "Plural": "Schemes"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Scout", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Scouts"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Scrying Pool", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "1", "Cost": "P2", "Victory": "0", "Buys": "0", "Cards": "1", "Trash": "0", "Plural": "Scrying Pools"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Sea Hag", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "1", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Sea Hags"}, {"Reaction": "1", "Coins": "?", "Duration": "0", "Singular": "Secret Chamber", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "2", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Secret Chambers"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Shanty Town", "Treasure": "0", "Actions": "2", "VP": "0", "Action": "1", "Attack": "0", "Cost": "3", "Victory": "0", "Buys": "0", "Cards": "2", "Trash": "0", "Plural": "Shanty Towns"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Silk Road", "Treasure": "0", "Actions": "0", "VP": "?", "Action": "0", "Attack": "0", "Cost": "4", "Victory": "1", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Silk Roads"}, {"Reaction": "0", "Coins": "2", "Duration": "0", "Singular": "Silver", "Treasure": "1", "Actions": "0", "VP": "0", "Action": "0", "Attack": "0", "Cost": "3", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Silvers"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Smithy", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "3", "Trash": "0", "Plural": "Smithies"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Smugglers", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "3", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Smugglers"}, {"Reaction": "0", "Coins": "?", "Duration": "0", "Singular": "Spice Merchant", "Treasure": "0", "Actions": "?", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "?", "Cards": "?", "Trash": "0", "Plural": "Spice Merchants"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Spy", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "1", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "1", "Trash": "0", "Plural": "Spies"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Stables", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Stables"}, {"Reaction": "0", "Coins": "2", "Duration": "0", "Singular": "Stash", "Treasure": "1", "Actions": "0", "VP": "0", "Action": "0", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Stashes"}, {"Reaction": "0", "Coins": "2", "Duration": "0", "Singular": "Steward", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "3", "Victory": "0", "Buys": "0", "Cards": "2", "Trash": "2", "Plural": "Stewards"}, {"Reaction": "0", "Coins": "2", "Duration": "0", "Singular": "Swindler", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "1", "Cost": "3", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Swindlers"}, {"Reaction": "0", "Coins": "0", "Duration": "1", "Singular": "Tactician", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Tacticians"}, {"Reaction": "0", "Coins": "1", "Duration": "0", "Singular": "Talisman", "Treasure": "1", "Actions": "0", "VP": "0", "Action": "0", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Talismans"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Thief", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "1", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Thieves"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Throne Room", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Throne Rooms"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Torturer", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "1", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "3", "Trash": "0", "Plural": "Torturers"}, {"Reaction": "0", "Coins": "1", "Duration": "0", "Singular": "Tournament", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "1", "Trash": "0", "Plural": "Tournaments"}, {"Reaction": "0", "Coins": "?", "Duration": "0", "Singular": "Trade Route", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "3", "Victory": "0", "Buys": "1", "Cards": "0", "Trash": "1", "Plural": "Trade Routes"}, {"Reaction": "1", "Coins": "0", "Duration": "0", "Singular": "Trader", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "1", "Plural": "Traders"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Trading Post", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "2", "Plural": "Trading Posts"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Transmute", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "P", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "1", "Plural": "Transmutes"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Treasure Map", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "2", "Plural": "Treasure Maps"}, {"Reaction": "0", "Coins": "1", "Duration": "0", "Singular": "Treasury", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "1", "Trash": "0", "Plural": "Treasuries"}, {"Reaction": "0", "Coins": "?", "Duration": "0", "Singular": "Tribute", "Treasure": "0", "Actions": "?", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "?", "Trash": "0", "Plural": "Tributes"}, {"Reaction": "0", "Coins": "?", "Duration": "0", "Singular": "Trusty Steed", "Treasure": "0", "Actions": "?", "VP": "0", "Action": "1", "Attack": "0", "Cost": "*0", "Victory": "0", "Buys": "0", "Cards": "?", "Trash": "0", "Plural": "Trusty Steeds"}, {"Reaction": "1", "Coins": "0", "Duration": "0", "Singular": "Tunnel", "Treasure": "0", "Actions": "0", "VP": "2", "Action": "0", "Attack": "0", "Cost": "3", "Victory": "1", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Tunnels"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "University", "Treasure": "0", "Actions": "2", "VP": "0", "Action": "1", "Attack": "0", "Cost": "P2", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Universities"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Upgrade", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "1", "Trash": "1", "Plural": "Upgrades"}, {"Reaction": "0", "Coins": "?", "Duration": "0", "Singular": "Vault", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "2", "Trash": "0", "Plural": "Vaults"}, {"Reaction": "0", "Coins": "1", "Duration": "0", "Singular": "Venture", "Treasure": "1", "Actions": "0", "VP": "0", "Action": "0", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Ventures"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Village", "Treasure": "0", "Actions": "2", "VP": "0", "Action": "1", "Attack": "0", "Cost": "3", "Victory": "0", "Buys": "0", "Cards": "1", "Trash": "0", "Plural": "Villages"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Vineyard", "Treasure": "0", "Actions": "0", "VP": "?", "Action": "0", "Attack": "0", "Cost": "P", "Victory": "1", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Vineyards"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Walled Village", "Treasure": "0", "Actions": "2", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "1", "Trash": "0", "Plural": "Walled Villages"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Warehouse", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "0", "Cost": "3", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Warehouses"}, {"Reaction": "1", "Coins": "0", "Duration": "0", "Singular": "Watchtower", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "3", "Victory": "0", "Buys": "0", "Cards": "2", "Trash": "0", "Plural": "Watchtowers"}, {"Reaction": "0", "Coins": "0", "Duration": "1", "Singular": "Wharf", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "1", "Cards": "2", "Trash": "0", "Plural": "Wharves"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Wishing Well", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "0", "Cost": "3", "Victory": "0", "Buys": "0", "Cards": "1", "Trash": "0", "Plural": "Wishing Wells"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Witch", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "1", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "2", "Trash": "0", "Plural": "Witches"}, {"Reaction": "0", "Coins": "2", "Duration": "0", "Singular": "Woodcutter", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "3", "Victory": "0", "Buys": "1", "Cards": "0", "Trash": "0", "Plural": "Woodcutters"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Worker's Village", "Treasure": "0", "Actions": "2", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "1", "Cards": "1", "Trash": "0", "Plural": "Worker's Villages"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Workshop", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "3", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Workshops"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Young Witch", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "2", "Trash": "0", "Plural": "Young Witches"}] \ No newline at end of file +[{"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Adventurer", "Index": "0", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "6", "Victory": "0", "Buys": "0", "Cards": "2", "Trash": "0", "Plural": "Adventurers", "Expansion": "Dominion"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Alchemist", "Index": "1", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "0", "Cost": "P3", "Victory": "0", "Buys": "0", "Cards": "2", "Trash": "0", "Plural": "Alchemists", "Expansion": "Alchemy"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Ambassador", "Index": "2", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "1", "Cost": "3", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Ambassadors", "Expansion": "Seaside"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Apothecary", "Index": "3", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "0", "Cost": "P2", "Victory": "0", "Buys": "0", "Cards": "1", "Trash": "0", "Plural": "Apothecaries", "Expansion": "Alchemy"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Apprentice", "Index": "4", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "1", "Plural": "Apprentices", "Expansion": "Alchemy"}, {"Reaction": "0", "Coins": "?", "Duration": "0", "Singular": "Archivist", "Index": "5", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "?", "Trash": "0", "Plural": "Archivists", "Expansion": "Fan"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Bag of Gold", "Index": "6", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "0", "Cost": "*0", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Bags of Gold", "Expansion": "Cornucopia"}, {"Reaction": "0", "Coins": "?", "Duration": "0", "Singular": "Bank", "Index": "7", "Treasure": "1", "Actions": "0", "VP": "0", "Action": "0", "Attack": "0", "Cost": "7", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Banks", "Expansion": "Prosperity"}, {"Reaction": "0", "Coins": "4", "Duration": "0", "Singular": "Baron", "Index": "8", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "1", "Cards": "0", "Trash": "0", "Plural": "Barons", "Expansion": "Intrigue"}, {"Reaction": "0", "Coins": "1", "Duration": "0", "Singular": "Bazaar", "Index": "9", "Treasure": "0", "Actions": "2", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "1", "Trash": "0", "Plural": "Bazaars", "Expansion": "Seaside"}, {"Reaction": "0", "Coins": "1", "Duration": "0", "Singular": "Bishop", "Index": "10", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "1", "Plural": "Bishops", "Expansion": "Prosperity"}, {"Reaction": "0", "Coins": "2", "Duration": "0", "Singular": "Black Market", "Index": "11", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "3", "Victory": "0", "Buys": "1", "Cards": "0", "Trash": "0", "Plural": "Black Markets", "Expansion": "Promotional"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Border Village", "Index": "12", "Treasure": "0", "Actions": "2", "VP": "0", "Action": "1", "Attack": "0", "Cost": "6", "Victory": "0", "Buys": "0", "Cards": "1", "Trash": "0", "Plural": "Border Villages", "Expansion": "Hinterlands"}, {"Reaction": "0", "Coins": "1", "Duration": "0", "Singular": "Bridge", "Index": "13", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "1", "Cards": "0", "Trash": "0", "Plural": "Bridges", "Expansion": "Intrigue"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Bureaucrat", "Index": "14", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "1", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Bureaucrats", "Expansion": "Dominion"}, {"Reaction": "0", "Coins": "3", "Duration": "0", "Singular": "Cache", "Index": "15", "Treasure": "1", "Actions": "0", "VP": "0", "Action": "0", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Caches", "Expansion": "Hinterlands"}, {"Reaction": "0", "Coins": "0", "Duration": "1", "Singular": "Caravan", "Index": "16", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "1", "Trash": "0", "Plural": "Caravans", "Expansion": "Seaside"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Cartographer", "Index": "17", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "1", "Trash": "0", "Plural": "Cartographers", "Expansion": "Hinterlands"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Cellar", "Index": "18", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "0", "Cost": "2", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Cellars", "Expansion": "Dominion"}, {"Reaction": "0", "Coins": "2", "Duration": "0", "Singular": "Chancellor", "Index": "19", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "3", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Chancellors", "Expansion": "Dominion"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Chapel", "Index": "20", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "2", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "4", "Plural": "Chapels", "Expansion": "Dominion"}, {"Reaction": "0", "Coins": "1", "Duration": "0", "Singular": "City", "Index": "21", "Treasure": "0", "Actions": "2", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "1", "Cards": "1", "Trash": "0", "Plural": "Cities", "Expansion": "Prosperity"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Colony", "Index": "22", "Treasure": "0", "Actions": "0", "VP": "10", "Action": "0", "Attack": "0", "Cost": "11", "Victory": "1", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Colonies", "Expansion": "Prosperity"}, {"Reaction": "0", "Coins": "2", "Duration": "0", "Singular": "Conspirator", "Index": "23", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Conspirators", "Expansion": "Intrigue"}, {"Reaction": "0", "Coins": "3", "Duration": "0", "Singular": "Contraband", "Index": "24", "Treasure": "1", "Actions": "0", "VP": "0", "Action": "0", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "1", "Cards": "0", "Trash": "0", "Plural": "Contrabands", "Expansion": "Prosperity"}, {"Reaction": "0", "Coins": "1", "Duration": "0", "Singular": "Copper", "Index": "25", "Treasure": "1", "Actions": "0", "VP": "0", "Action": "0", "Attack": "0", "Cost": "0", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Coppers", "Expansion": "Common"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Coppersmith", "Index": "26", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Coppersmiths", "Expansion": "Intrigue"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Council Room", "Index": "27", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "1", "Cards": "4", "Trash": "0", "Plural": "Council Rooms", "Expansion": "Dominion"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Counting House", "Index": "28", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Counting Houses", "Expansion": "Prosperity"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Courtyard", "Index": "29", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "2", "Victory": "0", "Buys": "0", "Cards": "2", "Trash": "0", "Plural": "Courtyards", "Expansion": "Intrigue"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Crossroads", "Index": "30", "Treasure": "0", "Actions": "?", "VP": "0", "Action": "1", "Attack": "0", "Cost": "2", "Victory": "0", "Buys": "0", "Cards": "?", "Trash": "0", "Plural": "Crossroads", "Expansion": "Hinterlands"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Curse", "Index": "31", "Treasure": "0", "Actions": "0", "VP": "-1", "Action": "0", "Attack": "0", "Cost": "0", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Curses", "Expansion": "Common"}, {"Reaction": "0", "Coins": "2", "Duration": "0", "Singular": "Cutpurse", "Index": "32", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "1", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Cutpurses", "Expansion": "Seaside"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Develop", "Index": "33", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "3", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Develops", "Expansion": "Hinterlands"}, {"Reaction": "0", "Coins": "?", "Duration": "0", "Singular": "Diadem", "Index": "34", "Treasure": "1", "Actions": "0", "VP": "0", "Action": "0", "Attack": "0", "Cost": "*0", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Diadems", "Expansion": "Cornucopia"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Duchy", "Index": "35", "Treasure": "0", "Actions": "0", "VP": "3", "Action": "0", "Attack": "0", "Cost": "5", "Victory": "1", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Duchies", "Expansion": "Common"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Duke", "Index": "36", "Treasure": "0", "Actions": "0", "VP": "?", "Action": "0", "Attack": "0", "Cost": "5", "Victory": "1", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Dukes", "Expansion": "Intrigue"}, {"Reaction": "0", "Coins": "2", "Duration": "0", "Singular": "Duchess", "Index": "37", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "2", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Duchesses", "Expansion": "Hinterlands"}, {"Reaction": "0", "Coins": "2", "Duration": "0", "Singular": "Embargo", "Index": "38", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "2", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "1", "Plural": "Embargoes", "Expansion": "Seaside"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Embassy", "Index": "39", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "5", "Trash": "0", "Plural": "Embassies", "Expansion": "Hinterlands"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Envoy", "Index": "40", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "4", "Trash": "0", "Plural": "Envoys", "Expansion": "Promotional"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Estate", "Index": "41", "Treasure": "0", "Actions": "0", "VP": "1", "Action": "0", "Attack": "0", "Cost": "2", "Victory": "1", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Estates", "Expansion": "Common"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Expand", "Index": "42", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "7", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "1", "Plural": "Expands", "Expansion": "Prosperity"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Explorer", "Index": "43", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Explorers", "Expansion": "Seaside"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Fairgrounds", "Index": "44", "Treasure": "0", "Actions": "0", "VP": "?", "Action": "0", "Attack": "0", "Cost": "6", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Fairgrounds", "Expansion": "Cornucopia"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Familiar", "Index": "45", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "1", "Cost": "P3", "Victory": "0", "Buys": "0", "Cards": "1", "Trash": "0", "Plural": "Familiars", "Expansion": "Alchemy"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Farming Village", "Index": "46", "Treasure": "0", "Actions": "2", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "1", "Trash": "0", "Plural": "Farming Villages", "Expansion": "Cornucopia"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Farmland", "Index": "47", "Treasure": "0", "Actions": "0", "VP": "2", "Action": "0", "Attack": "0", "Cost": "6", "Victory": "1", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Farmlands", "Expansion": "Hinterlands"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Feast", "Index": "48", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "1", "Plural": "Feasts", "Expansion": "Dominion"}, {"Reaction": "0", "Coins": "2", "Duration": "0", "Singular": "Festival", "Index": "49", "Treasure": "0", "Actions": "2", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "1", "Cards": "0", "Trash": "0", "Plural": "Festivals", "Expansion": "Dominion"}, {"Reaction": "0", "Coins": "1", "Duration": "1", "Singular": "Fishing Village", "Index": "50", "Treasure": "0", "Actions": "2", "VP": "0", "Action": "1", "Attack": "0", "Cost": "3", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Fishing Villages", "Expansion": "Seaside"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Followers", "Index": "51", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "*0", "Victory": "0", "Buys": "0", "Cards": "2", "Trash": "0", "Plural": "Followers", "Expansion": "Cornucopia"}, {"Reaction": "1", "Coins": "?", "Duration": "0", "Singular": "Fool's Gold", "Index": "52", "Treasure": "1", "Actions": "0", "VP": "0", "Action": "0", "Attack": "0", "Cost": "2", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Fool's Golds", "Expansion": "Hinterlands"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Forge", "Index": "53", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "7", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "99", "Plural": "Forges", "Expansion": "Prosperity"}, {"Reaction": "0", "Coins": "2", "Duration": "0", "Singular": "Fortune Teller", "Index": "54", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "3", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Fortune Tellers", "Expansion": "Cornucopia"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Gardens", "Index": "55", "Treasure": "0", "Actions": "0", "VP": "?", "Action": "0", "Attack": "0", "Cost": "4", "Victory": "1", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Gardens", "Expansion": "Dominion"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Ghost Ship", "Index": "56", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "1", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "2", "Trash": "0", "Plural": "Ghost Ships", "Expansion": "Seaside"}, {"Reaction": "0", "Coins": "3", "Duration": "0", "Singular": "Gold", "Index": "57", "Treasure": "1", "Actions": "0", "VP": "0", "Action": "0", "Attack": "0", "Cost": "6", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Golds", "Expansion": "Common"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Golem", "Index": "58", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "P4", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Golems", "Expansion": "Alchemy"}, {"Reaction": "0", "Coins": "2", "Duration": "0", "Singular": "Goons", "Index": "59", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "1", "Cost": "6", "Victory": "0", "Buys": "1", "Cards": "0", "Trash": "0", "Plural": "Goons", "Expansion": "Prosperity"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Governor", "Index": "60", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "?", "Trash": "?", "Plural": "Governors", "Expansion": "Promotional"}, {"Reaction": "0", "Coins": "2", "Duration": "0", "Singular": "Grand Market", "Index": "61", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "0", "Cost": "6", "Victory": "0", "Buys": "1", "Cards": "1", "Trash": "0", "Plural": "Grand Markets", "Expansion": "Prosperity"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Great Hall", "Index": "62", "Treasure": "0", "Actions": "1", "VP": "1", "Action": "1", "Attack": "0", "Cost": "3", "Victory": "1", "Buys": "0", "Cards": "1", "Trash": "0", "Plural": "Great Halls", "Expansion": "Intrigue"}, {"Reaction": "0", "Coins": "2", "Duration": "0", "Singular": "Haggler", "Index": "63", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Hagglers", "Expansion": "Hinterlands"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Hamlet", "Index": "64", "Treasure": "0", "Actions": "2", "VP": "0", "Action": "1", "Attack": "0", "Cost": "2", "Victory": "0", "Buys": "1", "Cards": "1", "Trash": "0", "Plural": "Hamlets", "Expansion": "Cornucopia"}, {"Reaction": "0", "Coins": "2", "Duration": "0", "Singular": "Harem", "Index": "65", "Treasure": "1", "Actions": "0", "VP": "2", "Action": "0", "Attack": "0", "Cost": "6", "Victory": "1", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Harems", "Expansion": "Intrigue"}, {"Reaction": "0", "Coins": "?", "Duration": "0", "Singular": "Harvest", "Index": "66", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Harvests", "Expansion": "Cornucopia"}, {"Reaction": "0", "Coins": "0", "Duration": "1", "Singular": "Haven", "Index": "67", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "0", "Cost": "2", "Victory": "0", "Buys": "0", "Cards": "1", "Trash": "0", "Plural": "Havens", "Expansion": "Seaside"}, {"Reaction": "0", "Coins": "1", "Duration": "0", "Singular": "Herbalist", "Index": "68", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "2", "Victory": "0", "Buys": "1", "Cards": "0", "Trash": "0", "Plural": "Herbalists", "Expansion": "Alchemy"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Highway", "Index": "69", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "1", "Trash": "0", "Plural": "Highways", "Expansion": "Hinterlands"}, {"Reaction": "0", "Coins": "2", "Duration": "0", "Singular": "Hoard", "Index": "70", "Treasure": "1", "Actions": "0", "VP": "0", "Action": "0", "Attack": "0", "Cost": "6", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Hoards", "Expansion": "Prosperity"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Horn of Plenty", "Index": "71", "Treasure": "1", "Actions": "0", "VP": "0", "Action": "0", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Horns of Plenty", "Expansion": "Cornucopia"}, {"Reaction": "1", "Coins": "3", "Duration": "0", "Singular": "Horse Traders", "Index": "72", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "1", "Cards": "-2", "Trash": "0", "Plural": "Horse Traders", "Expansion": "Cornucopia"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Hunting Party", "Index": "73", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "2", "Trash": "0", "Plural": "Hunting Parties", "Expansion": "Cornucopia"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Ill-Gotten Gains", "Index": "74", "Treasure": "1", "Actions": "0", "VP": "0", "Action": "0", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Ill-Gotten Gains", "Expansion": "Hinterlands"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Inn", "Index": "75", "Treasure": "0", "Actions": "2", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "2", "Trash": "0", "Plural": "Inns", "Expansion": "Hinterlands"}, {"Reaction": "0", "Coins": "1", "Duration": "0", "Singular": "Ironworks", "Index": "76", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Ironworks", "Expansion": "Intrigue"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Island", "Index": "77", "Treasure": "0", "Actions": "0", "VP": "2", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "1", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Islands", "Expansion": "Seaside"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Jack of All Trades", "Index": "78", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Jacks of All Trades", "Expansion": "Hinterlands"}, {"Reaction": "0", "Coins": "2", "Duration": "0", "Singular": "Jester", "Index": "79", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "1", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Jesters", "Expansion": "Cornucopia"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "King's Court", "Index": "80", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "7", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "King's Courts", "Expansion": "Prosperity"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Laboratory", "Index": "81", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "2", "Trash": "0", "Plural": "Laboratories", "Expansion": "Dominion"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Library", "Index": "82", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "3", "Trash": "0", "Plural": "Libraries", "Expansion": "Dominion"}, {"Reaction": "1", "Coins": "1", "Duration": "1", "Singular": "Lighthouse", "Index": "83", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "0", "Cost": "2", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Lighthouses", "Expansion": "Seaside"}, {"Reaction": "0", "Coins": "1", "Duration": "0", "Singular": "Loan", "Index": "84", "Treasure": "1", "Actions": "0", "VP": "0", "Action": "0", "Attack": "0", "Cost": "3", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "1", "Plural": "Loans", "Expansion": "Prosperity"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Lookout", "Index": "85", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "0", "Cost": "3", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "1", "Plural": "Lookouts", "Expansion": "Seaside"}, {"Reaction": "0", "Coins": "3", "Duration": "0", "Singular": "Mandarin", "Index": "86", "Treasure": "3", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Mandarins", "Expansion": "Hinterlands"}, {"Reaction": "0", "Coins": "1", "Duration": "0", "Singular": "Market", "Index": "87", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "1", "Cards": "1", "Trash": "0", "Plural": "Markets", "Expansion": "Dominion"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Margrave", "Index": "88", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "1", "Cost": "5", "Victory": "0", "Buys": "1", "Cards": "3", "Trash": "0", "Plural": "Margraves", "Expansion": "Hinterlands"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Masquerade", "Index": "89", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "3", "Victory": "0", "Buys": "0", "Cards": "2", "Trash": "1", "Plural": "Masquerades", "Expansion": "Intrigue"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Menagerie", "Index": "90", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "0", "Cost": "3", "Victory": "0", "Buys": "", "Cards": "3", "Trash": "0", "Plural": "Menageries", "Expansion": "Cornucopia"}, {"Reaction": "0", "Coins": "2", "Duration": "1", "Singular": "Merchant Ship", "Index": "91", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Merchant Ships", "Expansion": "Seaside"}, {"Reaction": "0", "Coins": "2", "Duration": "0", "Singular": "Militia", "Index": "92", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "1", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Militias", "Expansion": "Dominion"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Mine", "Index": "93", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "1", "Plural": "Mines", "Expansion": "Dominion"}, {"Reaction": "0", "Coins": "2", "Duration": "0", "Singular": "Mining Village", "Index": "94", "Treasure": "0", "Actions": "2", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "1", "Trash": "1", "Plural": "Mining Villages", "Expansion": "Intrigue"}, {"Reaction": "0", "Coins": "2", "Duration": "0", "Singular": "Minion", "Index": "95", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "1", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Minions", "Expansion": "Intrigue"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Mint", "Index": "96", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "?", "Plural": "Mints", "Expansion": "Prosperity"}, {"Reaction": "1", "Coins": "0", "Duration": "0", "Singular": "Moat", "Index": "97", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "2", "Victory": "0", "Buys": "0", "Cards": "2", "Trash": "0", "Plural": "Moats", "Expansion": "Dominion"}, {"Reaction": "0", "Coins": "3", "Duration": "0", "Singular": "Moneylender", "Index": "98", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "1", "Plural": "Moneylenders", "Expansion": "Dominion"}, {"Reaction": "0", "Coins": "2", "Duration": "0", "Singular": "Monument", "Index": "99", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Monuments", "Expansion": "Prosperity"}, {"Reaction": "0", "Coins": "2", "Duration": "0", "Singular": "Mountebank", "Index": "100", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "1", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Mountebanks", "Expansion": "Prosperity"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Native Village", "Index": "101", "Treasure": "0", "Actions": "2", "VP": "0", "Action": "1", "Attack": "0", "Cost": "2", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Native Villages", "Expansion": "Seaside"}, {"Reaction": "0", "Coins": "2", "Duration": "0", "Singular": "Navigator", "Index": "102", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Navigators", "Expansion": "Seaside"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Nobles", "Index": "103", "Treasure": "0", "Actions": "2", "VP": "2", "Action": "1", "Attack": "0", "Cost": "6", "Victory": "1", "Buys": "0", "Cards": "3", "Trash": "0", "Plural": "Nobles", "Expansion": "Intrigue"}, {"Reaction": "0", "Coins": "1", "Duration": "0", "Singular": "Noble Brigand", "Index": "104", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "1", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Noble Brigands", "Expansion": "Hinterlands"}, {"Reaction": "0", "Coins": "2", "Duration": "0", "Singular": "Nomad Camp", "Index": "105", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "1", "Cards": "0", "Trash": "0", "Plural": "Nomad Camps", "Expansion": "Hinterlands"}, {"Reaction": "0", "Coins": "1", "Duration": "0", "Singular": "Oasis", "Index": "106", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "0", "Cost": "3", "Victory": "0", "Buys": "0", "Cards": "1", "Trash": "0", "Plural": "Oases", "Expansion": "Hinterlands"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Oracle", "Index": "107", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "1", "Cost": "3", "Victory": "0", "Buys": "0", "Cards": "2", "Trash": "0", "Plural": "Oracles", "Expansion": "Hinterlands"}, {"Reaction": "0", "Coins": "0", "Duration": "1", "Singular": "Outpost", "Index": "108", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Outposts", "Expansion": "Seaside"}, {"Reaction": "0", "Coins": "1", "Duration": "0", "Singular": "Pawn", "Index": "109", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "0", "Cost": "2", "Victory": "0", "Buys": "1", "Cards": "1", "Trash": "0", "Plural": "Pawns", "Expansion": "Intrigue"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Pearl Diver", "Index": "110", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "0", "Cost": "2", "Victory": "0", "Buys": "0", "Cards": "1", "Trash": "0", "Plural": "Pearl Divers", "Expansion": "Seaside"}, {"Reaction": "0", "Coins": "1", "Duration": "0", "Singular": "Peddler", "Index": "111", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "0", "Cost": "8", "Victory": "0", "Buys": "0", "Cards": "1", "Trash": "0", "Plural": "Peddlers", "Expansion": "Prosperity"}, {"Reaction": "0", "Coins": "?", "Duration": "0", "Singular": "Philosopher's Stone", "Index": "112", "Treasure": "1", "Actions": "0", "VP": "0", "Action": "0", "Attack": "0", "Cost": "P3", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Philosopher's Stones", "Expansion": "Alchemy"}, {"Reaction": "0", "Coins": "?", "Duration": "0", "Singular": "Pirate Ship", "Index": "113", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "1", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Pirate Ships", "Expansion": "Seaside"}, {"Reaction": "0", "Coins": "5", "Duration": "0", "Singular": "Platinum", "Index": "114", "Treasure": "1", "Actions": "0", "VP": "0", "Action": "0", "Attack": "0", "Cost": "9", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Platinums", "Expansion": "Prosperity"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Possession", "Index": "115", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "P6", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Possessions", "Expansion": "Alchemy"}, {"Reaction": "0", "Coins": "P", "Duration": "0", "Singular": "Potion", "Index": "116", "Treasure": "1", "Actions": "0", "VP": "0", "Action": "0", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Potions", "Expansion": "Alchemy"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Princess", "Index": "117", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "*0", "Victory": "0", "Buys": "1", "Cards": "0", "Trash": "0", "Plural": "Princesses", "Expansion": "Cornucopia"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Province", "Index": "118", "Treasure": "0", "Actions": "0", "VP": "6", "Action": "0", "Attack": "0", "Cost": "8", "Victory": "1", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Provinces", "Expansion": "Common"}, {"Reaction": "0", "Coins": "1", "Duration": "0", "Singular": "Quarry", "Index": "119", "Treasure": "1", "Actions": "0", "VP": "0", "Action": "0", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Quarries", "Expansion": "Prosperity"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Rabble", "Index": "120", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "1", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "3", "Trash": "0", "Plural": "Rabbles", "Expansion": "Prosperity"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Remake", "Index": "121", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Remakes", "Expansion": "Cornucopia"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Remodel", "Index": "122", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "1", "Plural": "Remodels", "Expansion": "Dominion"}, {"Reaction": "0", "Coins": "2", "Duration": "0", "Singular": "Royal Seal", "Index": "123", "Treasure": "1", "Actions": "0", "VP": "0", "Action": "0", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Royal Seals", "Expansion": "Prosperity"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Saboteur", "Index": "124", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "1", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Saboteurs", "Expansion": "Intrigue"}, {"Reaction": "0", "Coins": "?", "Duration": "0", "Singular": "Salvager", "Index": "125", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "1", "Cards": "0", "Trash": "1", "Plural": "Salvagers", "Expansion": "Seaside"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Scheme", "Index": "126", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "0", "Cost": "3", "Victory": "0", "Buys": "0", "Cards": "1", "Trash": "0", "Plural": "Schemes", "Expansion": "Hinterlands"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Scout", "Index": "127", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Scouts", "Expansion": "Intrigue"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Scrying Pool", "Index": "128", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "1", "Cost": "P2", "Victory": "0", "Buys": "0", "Cards": "1", "Trash": "0", "Plural": "Scrying Pools", "Expansion": "Alchemy"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Sea Hag", "Index": "129", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "1", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Sea Hags", "Expansion": "Seaside"}, {"Reaction": "1", "Coins": "?", "Duration": "0", "Singular": "Secret Chamber", "Index": "130", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "2", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Secret Chambers", "Expansion": "Intrigue"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Shanty Town", "Index": "131", "Treasure": "0", "Actions": "2", "VP": "0", "Action": "1", "Attack": "0", "Cost": "3", "Victory": "0", "Buys": "0", "Cards": "2", "Trash": "0", "Plural": "Shanty Towns", "Expansion": "Intrigue"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Silk Road", "Index": "132", "Treasure": "0", "Actions": "0", "VP": "?", "Action": "0", "Attack": "0", "Cost": "4", "Victory": "1", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Silk Roads", "Expansion": "Hinterlands"}, {"Reaction": "0", "Coins": "2", "Duration": "0", "Singular": "Silver", "Index": "133", "Treasure": "1", "Actions": "0", "VP": "0", "Action": "0", "Attack": "0", "Cost": "3", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Silvers", "Expansion": "Common"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Smithy", "Index": "134", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "3", "Trash": "0", "Plural": "Smithies", "Expansion": "Dominion"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Smugglers", "Index": "135", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "3", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Smugglers", "Expansion": "Seaside"}, {"Reaction": "0", "Coins": "?", "Duration": "0", "Singular": "Spice Merchant", "Index": "136", "Treasure": "0", "Actions": "?", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "?", "Cards": "?", "Trash": "0", "Plural": "Spice Merchants", "Expansion": "Hinterlands"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Spy", "Index": "137", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "1", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "1", "Trash": "0", "Plural": "Spies", "Expansion": "Dominion"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Stables", "Index": "138", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Stables", "Expansion": "Hinterlands"}, {"Reaction": "0", "Coins": "2", "Duration": "0", "Singular": "Stash", "Index": "139", "Treasure": "1", "Actions": "0", "VP": "0", "Action": "0", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Stashes", "Expansion": "Promotional"}, {"Reaction": "0", "Coins": "2", "Duration": "0", "Singular": "Steward", "Index": "140", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "3", "Victory": "0", "Buys": "0", "Cards": "2", "Trash": "2", "Plural": "Stewards", "Expansion": "Intrigue"}, {"Reaction": "0", "Coins": "2", "Duration": "0", "Singular": "Swindler", "Index": "141", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "1", "Cost": "3", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Swindlers", "Expansion": "Intrigue"}, {"Reaction": "0", "Coins": "0", "Duration": "1", "Singular": "Tactician", "Index": "142", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Tacticians", "Expansion": "Seaside"}, {"Reaction": "0", "Coins": "1", "Duration": "0", "Singular": "Talisman", "Index": "143", "Treasure": "1", "Actions": "0", "VP": "0", "Action": "0", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Talismans", "Expansion": "Prosperity"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Thief", "Index": "144", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "1", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Thieves", "Expansion": "Dominion"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Throne Room", "Index": "145", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Throne Rooms", "Expansion": "Dominion"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Torturer", "Index": "146", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "1", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "3", "Trash": "0", "Plural": "Torturers", "Expansion": "Intrigue"}, {"Reaction": "0", "Coins": "1", "Duration": "0", "Singular": "Tournament", "Index": "147", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "1", "Trash": "0", "Plural": "Tournaments", "Expansion": "Cornucopia"}, {"Reaction": "0", "Coins": "?", "Duration": "0", "Singular": "Trade Route", "Index": "148", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "3", "Victory": "0", "Buys": "1", "Cards": "0", "Trash": "1", "Plural": "Trade Routes", "Expansion": "Prosperity"}, {"Reaction": "1", "Coins": "0", "Duration": "0", "Singular": "Trader", "Index": "149", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "1", "Plural": "Traders", "Expansion": "Hinterlands"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Trading Post", "Index": "150", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "2", "Plural": "Trading Posts", "Expansion": "Intrigue"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Transmute", "Index": "151", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "P", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "1", "Plural": "Transmutes", "Expansion": "Alchemy"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Treasure Map", "Index": "152", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "2", "Plural": "Treasure Maps", "Expansion": "Seaside"}, {"Reaction": "0", "Coins": "1", "Duration": "0", "Singular": "Treasury", "Index": "153", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "1", "Trash": "0", "Plural": "Treasuries", "Expansion": "Seaside"}, {"Reaction": "0", "Coins": "?", "Duration": "0", "Singular": "Tribute", "Index": "154", "Treasure": "0", "Actions": "?", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "?", "Trash": "0", "Plural": "Tributes", "Expansion": "Intrigue"}, {"Reaction": "0", "Coins": "?", "Duration": "0", "Singular": "Trusty Steed", "Index": "155", "Treasure": "0", "Actions": "?", "VP": "0", "Action": "1", "Attack": "0", "Cost": "*0", "Victory": "0", "Buys": "0", "Cards": "?", "Trash": "0", "Plural": "Trusty Steeds", "Expansion": "Cornucopia"}, {"Reaction": "1", "Coins": "0", "Duration": "0", "Singular": "Tunnel", "Index": "156", "Treasure": "0", "Actions": "0", "VP": "2", "Action": "0", "Attack": "0", "Cost": "3", "Victory": "1", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Tunnels", "Expansion": "Hinterlands"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "University", "Index": "157", "Treasure": "0", "Actions": "2", "VP": "0", "Action": "1", "Attack": "0", "Cost": "P2", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Universities", "Expansion": "Alchemy"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Upgrade", "Index": "158", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "1", "Trash": "1", "Plural": "Upgrades", "Expansion": "Intrigue"}, {"Reaction": "0", "Coins": "?", "Duration": "0", "Singular": "Vault", "Index": "159", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "2", "Trash": "0", "Plural": "Vaults", "Expansion": "Prosperity"}, {"Reaction": "0", "Coins": "1", "Duration": "0", "Singular": "Venture", "Index": "160", "Treasure": "1", "Actions": "0", "VP": "0", "Action": "0", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Ventures", "Expansion": "Prosperity"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Village", "Index": "161", "Treasure": "0", "Actions": "2", "VP": "0", "Action": "1", "Attack": "0", "Cost": "3", "Victory": "0", "Buys": "0", "Cards": "1", "Trash": "0", "Plural": "Villages", "Expansion": "Dominion"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Vineyard", "Index": "162", "Treasure": "0", "Actions": "0", "VP": "?", "Action": "0", "Attack": "0", "Cost": "P", "Victory": "1", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Vineyards", "Expansion": "Alchemy"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Walled Village", "Index": "163", "Treasure": "0", "Actions": "2", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "1", "Trash": "0", "Plural": "Walled Villages", "Expansion": "Promotional"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Warehouse", "Index": "164", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "0", "Cost": "3", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Warehouses", "Expansion": "Seaside"}, {"Reaction": "1", "Coins": "0", "Duration": "0", "Singular": "Watchtower", "Index": "165", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "3", "Victory": "0", "Buys": "0", "Cards": "2", "Trash": "0", "Plural": "Watchtowers", "Expansion": "Prosperity"}, {"Reaction": "0", "Coins": "0", "Duration": "1", "Singular": "Wharf", "Index": "166", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "5", "Victory": "0", "Buys": "1", "Cards": "2", "Trash": "0", "Plural": "Wharves", "Expansion": "Seaside"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Wishing Well", "Index": "167", "Treasure": "0", "Actions": "1", "VP": "0", "Action": "1", "Attack": "0", "Cost": "3", "Victory": "0", "Buys": "0", "Cards": "1", "Trash": "0", "Plural": "Wishing Wells", "Expansion": "Intrigue"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Witch", "Index": "168", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "1", "Cost": "5", "Victory": "0", "Buys": "0", "Cards": "2", "Trash": "0", "Plural": "Witches", "Expansion": "Dominion"}, {"Reaction": "0", "Coins": "2", "Duration": "0", "Singular": "Woodcutter", "Index": "169", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "3", "Victory": "0", "Buys": "1", "Cards": "0", "Trash": "0", "Plural": "Woodcutters", "Expansion": "Dominion"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Worker's Village", "Index": "170", "Treasure": "0", "Actions": "2", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "1", "Cards": "1", "Trash": "0", "Plural": "Worker's Villages", "Expansion": "Prosperity"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Workshop", "Index": "171", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "3", "Victory": "0", "Buys": "0", "Cards": "0", "Trash": "0", "Plural": "Workshops", "Expansion": "Dominion"}, {"Reaction": "0", "Coins": "0", "Duration": "0", "Singular": "Young Witch", "Index": "172", "Treasure": "0", "Actions": "0", "VP": "0", "Action": "1", "Attack": "0", "Cost": "4", "Victory": "0", "Buys": "0", "Cards": "2", "Trash": "0", "Plural": "Young Witches", "Expansion": "Cornucopia"}] \ No newline at end of file From 6374e9558463c658c161967d6322930d81e7d372 Mon Sep 17 00:00:00 2001 From: David Lu Date: Thu, 16 Feb 2012 00:26:38 -0600 Subject: [PATCH 2/3] Split off record by opponent page, integrate expansion stuff into player page --- frontend.py | 172 ++++++++++++++++++++++++++++++---------------------- 1 file changed, 99 insertions(+), 73 deletions(-) diff --git a/frontend.py b/frontend.py index 62c2ca4..8de3460 100644 --- a/frontend.py +++ b/frontend.py @@ -21,6 +21,7 @@ from small_gain_stat import SmallGainStat import datetime from optimal_card_ratios import DBCardRatioTracker +import operator import utils import card_info @@ -40,7 +41,7 @@ '/supply_win_api', 'SupplyWinApi', '/supply_win', 'SupplyWinPage', '/optimal_card_ratios', 'OptimalCardRatios', - '/expansions', 'ExpansionsPage', + '/games_by_opponent', 'GamesByOpponentPage', '/(.*)', 'StaticPage' ) @@ -205,10 +206,6 @@ def GET(self): leaderboard_history = db.leaderboard_history.find_one({'_id': norm_target_player}) leaderboard_history = leaderboard_history['history'] if leaderboard_history else None - keyed_by_opp = collections.defaultdict(list) - real_name_usage = collections.defaultdict( - lambda: collections.defaultdict(int)) - game_list = [] aliases = set() @@ -217,6 +214,9 @@ def GET(self): rec_by_date = collections.defaultdict(RecordSummary) rec_by_turn_order = collections.defaultdict(RecordSummary) + expansion_dist = collections.defaultdict(float) + expansion_win_points = collections.defaultdict(float) + date_buckets = [1, 3, 5, 10] for g in games_coll: game_val = game.Game(g) @@ -234,31 +234,30 @@ def GET(self): game_list.append(game_val) target_player_cur_name = target_player_cur_name_cand[0] aliases.add(target_player_cur_name) - for p in game_val.get_player_decks(): - if p.name() != target_player_cur_name: - other_norm_name = norm_name(p.name()) - keyed_by_opp[other_norm_name].append( - (p.name(), target_player_cur_name, game_val)) - real_name_usage[other_norm_name][p.name()] += 1 - else: - res = game_val.win_loss_tie(p.name()) - overall_record.record_result(res, p.WinPoints()) - game_len = len(game_val.get_player_decks()) - rec_by_game_size[game_len].record_result(res, - p.WinPoints()) - _ord = p.TurnOrder() - rec_by_turn_order[_ord].record_result(res, p.WinPoints()) - for delta in date_buckets: - _padded = (game_val.date() + - datetime.timedelta(days = delta)) - delta_padded_date = _padded.date() - today = datetime.datetime.now().date() - if delta_padded_date >= today: - rec_by_date[delta].record_result(res, - p.WinPoints()) - keyed_by_opp_list = keyed_by_opp.items() - keyed_by_opp_list.sort(key = lambda x: (-len(x[1]), x[0])) + pd = game_val.get_player_deck(norm_target_player) + wp = pd.WinPoints() + + res = game_val.win_loss_tie(norm_target_player) + overall_record.record_result(res, wp) + game_len = len(game_val.get_player_decks()) + rec_by_game_size[game_len].record_result(res, wp) + + _ord = pd.TurnOrder() + rec_by_turn_order[_ord].record_result(res, wp) + for delta in date_buckets: + _padded = (game_val.date() + + datetime.timedelta(days = delta)) + delta_padded_date = _padded.date() + today = datetime.datetime.now().date() + if delta_padded_date >= today: + rec_by_date[delta].record_result(res, wp) + + for (ex, wt) in game_val.get_expansion_weight().items(): + expansion_dist[ex] += wt + expansion_win_points[ex] += wt * wp + + #TODO: a good choice for a template like jinja2 ret = standard_heading("CouncilRoom.com: Dominion Stats: %s" % target_player) @@ -293,11 +292,31 @@ def GET(self): rec_by_turn_order, lambda pos: 'Table position %d' % pos) + ret += '
 
' + ret += '

Expansion Data

' + ret += ''%ex + ret += '
Card SetAvg. Cards
Per Kingdom
Weighted
Win Points
Favor' + + for (ex, weight) in sorted(expansion_dist.iteritems(), + key=operator.itemgetter(1), reverse=True): + + if ex == 'Fan': + continue + + wp = expansion_win_points[ex]/weight + average = overall_record.average_win_points() + + ret += '
%s%.2f'% (weight * 10. / len(game_list)) + ret += '%.2f' % wp + ret += '%.2f%%'% ( (wp - average) * 100. / average ) + ret += '
' + ret += '
 
' ret += goals.MaybeRenderGoals(db, norm_target_player) - ret += '

Stats by card


\n' % target_player + ret += '

Stats by card

\n' % target_player + ret += '

Record by opponent

\n' % target_player if leaderboard_history: render = web.template.render('') @@ -312,10 +331,59 @@ def GET(self): ret += ('(See more)' % target_player) + ret += '' + + return ret + +class GamesByOpponentPage(object): + def GET(self): + web.header("Content-Type", "text/html; charset=utf-8") + query_dict = dict(urlparse.parse_qsl(web.ctx.env['QUERY_STRING'])) + target_player = query_dict['player'].decode('utf-8') + ret = standard_heading("CouncilRoom.com: Dominion Stats: %s" % target_player) - ret += '

Record by opponent

' + ret += '
' + ret += 'Record By Opponent for %s' % target_player + ret += '

\n\n' ret += '' ret += '' + + db = utils.get_mongo_database() + games = db.games + norm_target_player = norm_name(target_player) + games_coll = games.find({'players': norm_target_player}) + + keyed_by_opp = collections.defaultdict(list) + game_list = [] + real_name_usage = collections.defaultdict( + lambda: collections.defaultdict(int)) + + for g in games_coll: + game_val = game.Game(g) + if game_val.dubious_quality(): + continue + all_player_names = game_val.all_player_names() + norm_names = map(norm_name, all_player_names) + if len(set(norm_names)) != len(all_player_names): + continue + target_player_cur_name_cand = [ + n for n in all_player_names + if norm_name(n) == norm_target_player] + if len(target_player_cur_name_cand) != 1: + continue + game_list.append(game_val) + target_player_cur_name = target_player_cur_name_cand[0] + + for p in game_val.get_player_decks(): + if p.name() != target_player_cur_name: + other_norm_name = norm_name(p.name()) + keyed_by_opp[other_norm_name].append( + (p.name(), target_player_cur_name, game_val)) + real_name_usage[other_norm_name][p.name()] += 1 + + keyed_by_opp_list = keyed_by_opp.items() + keyed_by_opp_list.sort(key = lambda x: (-len(x[1]), x[0])) + for opp_norm_name, game_list in keyed_by_opp_list: record = [0, 0, 0] for opp_name, tgt_player_curname, g in game_list: @@ -612,48 +680,6 @@ def getBackgroundColor(min_mean, max_mean, value): color += '{0:02x}'.format(component) return color -class ExpansionsPage(object): - def GET(self): - web.header("Content-Type", "text/html; charset=utf-8") - - query_dict = dict(urlparse.parse_qsl(web.ctx.env['QUERY_STRING'])) - target_player = query_dict['player'].decode('utf-8') - - db = utils.get_mongo_database() - games = db.games - norm_target_player = norm_name(target_player) - games_coll = games.find({'players': norm_target_player}) - ret = '' - - game_dist = collections.defaultdict(float) - win_dist = collections.defaultdict(float) - wp_total = 0 - games = 0 - - for g in [game.Game(g) for g in games_coll]: - pd = g.get_player_deck(norm_target_player) - wp = pd.WinPoints() - - for (ex, wt) in g.get_expansion_weight().items(): - game_dist[ex] += wt - win_dist[ex] += wt * wp - games += 1 - wp_total += wp - - average = wp_total/games - - for ex in game_dist: - wp = win_dist[ex]/game_dist[ex] - - ret += '

%s

'%ex - ret += 'Games %.2f%%
'% (game_dist[ex] / games) - ret += 'Win points %.2f
' % wp - ret += 'Favor %.2f%%
'% ( (wp - average)/average ) - - - return ret - - class StaticPage(object): def GET(self, arg): import os.path From 8555dca7a8734999e7ded0f46d7c8530a7dddb81 Mon Sep 17 00:00:00 2001 From: David Lu Date: Sun, 19 Feb 2012 22:21:32 -0600 Subject: [PATCH 3/3] Code review fixes --- frontend.py | 2 +- game.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/frontend.py b/frontend.py index 8de3460..83df43f 100644 --- a/frontend.py +++ b/frontend.py @@ -302,7 +302,7 @@ def GET(self): if ex == 'Fan': continue - wp = expansion_win_points[ex]/weight + wp = expansion_win_points[ex] / weight average = overall_record.average_win_points() ret += ''%ex diff --git a/game.py b/game.py index ae5a2dc..55e8297 100644 --- a/game.py +++ b/game.py @@ -330,14 +330,14 @@ def game_state_iterator(self): return GameState(self) def get_expansion_weight(self): - weights = collections.defaultdict(int) + weights = collections.defaultdict(float) total = 0 for c in self.supply: expansion = card_info.expansion(c) if expansion == 'Common': continue - weights[expansion] += 1 + weights[expansion] += 1.0 total += 1 for expansion in weights:
OpponentRecord
%s