Monday, August 30, 2010

Dominion Module

In Dominion, each player starts with an identical, very small deck of cards. In the center of the table is a selection of other cards the players can "buy" as they can afford them. Through their selection of cards to buy, and how they play their hands as they draw them, the players construct their deck on the fly, striving for the most efficient path to the precious victory points by game end.

From the back of the box: "You are a monarch, like your parents before you, a ruler of a small pleasant kingdom of rivers and evergreens. Unlike your parents, however, you have hopes and dreams! You want a bigger and more pleasant kingdom, with more rivers and a wider variety of trees. You want a Dominion! In all directions lie fiefs, freeholds, and fiefdoms. All are small bits of land, controlled by petty lords and verging on anarchy. You will bring civilization to these people, uniting them under your banner."
Show More...
"But wait! It must be something in the air; several other monarchs have had the exact same idea. You must race to get as much of the unclaimed land as possible, fending them off along the way. To do this you will hire minions, construct buildings, spruce up your castle, and fill the coffers of your treasury. Your parents wouldn't be proud, but your grandparents would be delighted."

Dominion is not a CCG, but the play of the game is similar to the construction and play of a CCG deck. The game comes with 1,717 cards. You select 10 of the 127 Kingdom card types to include in any given play -- leading to immense variety.


Dominion at BGG: BoardGameGeek.com
VASSAL: vassalengine.org

Downloads - VASSAL
Module comes with all cards from the base game and expansions, allows play up to 4 players, includes a range of recommended and other scenarios, a randomizer for random custom games, semi-automated actions to speed up gameplay.

v1.8 of the module adds mouseover zoom, integrates a consolidated manual, adds Dark Ages and Guilds.
v1.7 of the module fixes the bane bug, adds Hinterland, and some other minor changes.
v1.5 of the module brings bug fixes and small changes. Scenario files have been replaced by a recommended sets of 10 listing which is easier to maintain. Added Cornucopia.

Base Game: Dominion.vmod (v1.8 - 2013-11-13)
Prosperity expansion: DominionProsperity.vmod (v1.2 - 2013-11-13)
Dark Ages expansion: DominionDarkAges.vmod (v1.0 - 2013-11-13)
Guilds expansion: DominionGuilds (v1.0 - 2013-11-13)
Promo Cards: DominionPromo.vmod (v1.1 - 2012-01-24)
Cornucopia: DominionCornucopia.vmod (v1.1 - 2012-01-24)
Hinterlands expansion: DominionHinterland.vmod (v1.0 - 2012-01-24)
Scenarios: DominionScenarios.vmod (v1.1 - 2011-07-16)
Intrigue expansion: DominionIntrigue.vmod (v1.3 - 2011-07-16)
Seaside expansion: DominionSeaside.vmod (v1.4 - 2011-07-16)
Alchemy expansion: DominionAlchemy.vmod (v1.1 - 2011-07-16)

Downloads - Rules
Base Game Rules: Dominion - gameRules.pdf
Intrigue Expansion Rules: Dominion Intrigue - gameRules.pdf
Seaside Expansion Rules: Dominion Seaside - gameRules.pdf
Alchemy Expansion Rules: Dominion Alchemy - gameRules.pdf
Prosperity Expansion Rules: Dominion Prosperity - gameRules.pdf
Cornucopia Expansion Rules: Dominion Cornucopia - gameRules.pdf
Hinterlands Expansion Rules: Dominion Hinterland - gameRules.pdf
Dark Ages Expansion Rules: Dominion Dark Ages - gameRules.pdf
Guilds Expansion Rules: Dominion Guilds - gameRules.pdf


Please comment if you find any problems/issues.

Screenshots:




19 comments:

  1. When are you getting this done for ZunTzu?

    ReplyDelete
  2. Since ZunTzu doesn't have extensions, it has to be all done at once. So I first want to finish all the VASSAL extensions, then I can see how I can do the whole thing for ZunTzu. Prosperity extension is almost finished, then there is only the promo cards left to do. Shouldn't be too long, provided I have enough free time in coming days, and nobody finds an issue with the VASSAL stuff.

    ReplyDelete
  3. Hi, any chance you'd be doing a Thunderstone module?

    ReplyDelete
  4. Hello, I just downloaded all of this and all except the main game came as .vmdx but the system only recognizes the .vmod what should I do?

    ReplyDelete
  5. Brett:
    In the VASSAL Module Manager, right-click on the Dominion module, and choose Add Extension. Then select each of the vmdx files. They will be placed next to the "Dominion.vmod" in a "Dominion_ext" folder. You can also do this manually. When you then reopen Dominion in VASSAL it will load all the extras from the vmdx.

    ReplyDelete
  6. I downloaded Vassal and the above modules for the game 'Dominion', but when I try to add them to the Vassal Manager, an error message pops up saying that they are NOT a valid Vassal module. Any idea on what I'm doing wrong?

    ReplyDelete
  7. never mind...my brother and I speculated that the files somehow were currupted when I downloaded them onto my computer. He helped me out, and it's working fine.

    ReplyDelete
  8. jcddmdad:
    Glad you got it to work in the end. Sadly these downloads do sometimes become corrupted, I've seen it happen before. Best to try to redownload when that happens. Or you can ask me to post an md5 checksum, which can be used to verify the downloaded file is valid.

    ReplyDelete
  9. or you could just go play for free w/ no downloads at dominion.isotropic.org

    ReplyDelete
  10. Hey thanks Brant cool site as is this one!!

    ReplyDelete
  11. Any chance you can help me out? I've downloaded you module as a guide for making a module for Marvel Legendary. I've got most of what I want, but I was really interested in creating a Victory Point calculator like yours. I just don't quite understand how you did it.

    ReplyDelete
  12. Cards that count for VP have a VictoryType marker to identify it. The actual calculation is done in custom java code as it wasn't doable with standard VASSAL components. The VictoryCalculator Deck in the Victory window is actually a custom class masquerading as a normal deck. It counts the VP and places it into the VPCount placeholder expression.

    What does all the work is the updateCountsAll() of this custom deck:
    private void updateCountsAll() {
    if (getMap() == null) {
    return;
    }

    //Increase all of the pieces with expressions specified in this deck
    int c = 0;
    int duchy = 0;
    int gardens = 0;
    int duke = 0;
    int vineyard = 0;
    int fairgrounds = 0;
    int action = 0;
    int vp = 0;
    int victory = 0;
    int silkroad = 0;
    Vector names = new Vector();

    for (Iterator i = getPiecesIterator(); i.hasNext();) {

    final GamePiece p = i.next();
    if (p != null) {
    String vt = "";
    if (p.getProperty("VictoryType") != null) {
    vt = (String)p.getProperty("VictoryType");
    victory++;
    }
    String name = "";
    if (p.getName() != null)
    name = (String)p.getName();
    boolean ac = false;
    if (p.getProperty("ActionCard") != null)
    ac = ((String)p.getProperty("ActionCard")).equals("True");

    // VP 1 cards
    if (vt.equals("Victory1"))
    vp++;
    else if (vt.equals("Victory3"))
    vp+=3;
    else if (vt.equals("Victory6"))
    vp+=6;
    else if (vt.equals("Curse"))
    vp--;
    else if (vt.equals("Colony"))
    vp+=10;
    else if (vt.equals("Gardens"))
    gardens++;
    else if (vt.equals("Duke"))
    duke++;
    else if (vt.equals("GreatHall"))
    vp++;
    else if (vt.equals("Harem"))
    vp+=2;
    else if (vt.equals("Nobles"))
    vp+=2;
    else if (vt.equals("Island"))
    vp+=2;
    else if (vt.equals("Vineyard"))
    vineyard++;
    else if (vt.equals("Fairgrounds"))
    fairgrounds++;
    else if (vt.equals("Farmland"))
    vp+=2;
    else if (vt.equals("Tunnel"))
    vp+=2;
    else if (vt.equals("Silkroad"))
    silkroad++;

    if (name.equals("Victory - Duchy"))
    duchy++;

    if (ac)
    action++;

    c++;

    if (!names.contains(p.getName()))
    names.add(p.getName());
    }
    }

    // Gardens
    vp += (gardens * ((int)(c/10)));
    vp += (duke * duchy);
    vp += (vineyard * ((int)(action/3)));
    vp += (fairgrounds * 2 * ((int)(names.size()/5)));

    // silkroad
    vp += (silkroad * (int)(victory/4));

    for (int index = 0;index < countExpressions.length;index++) {
    MutableProperty.Impl prop = expressionProperties.get(index);
    String mapProperty = prop.getPropertyValue();
    if (mapProperty != null)
    prop.setPropertyValue(String.valueOf(vp));
    }
    }

    ReplyDelete
  13. I DL'ed the main module and a few extensions, but am confused over what the 'Cards' tab is supposed to do and how to use the 'Stash Card Extract' tab?

    ReplyDelete
  14. The Cards tab shows how many cards each player is holding in their hand window. Otherwise you don't know how many they have.

    The Stash Card Extract looks through the draw pile for that player (on the main board), and filters out all the Stash cards. These are placed in the player play area. This way you can shuffle all other cards, then manually place the Stash cards back into your deck: drag them onto the draw pile, and use the arrow keys (up = top of deck, down = bottom of deck, left = one card down, right = one card up).

    ReplyDelete
  15. Alternatively you can:
    1. extract stach cards
    2. shuffle draw pile
    3. draw multiple cards
    4. place the drawn cards somewhere, like discards
    5. drag stach onto remaining draw pile
    6. draw drawn cards back onto the draw pile

    Just using the arrow keys is easier.

    ReplyDelete
  16. Will we be seeing the Dark Ages expansion at any time?

    ReplyDelete
  17. Good morning, do you have any plans to upgrade the base game to Version 2 by adding the seven cards from the Update Pack?

    ReplyDelete