Dominion Strategy Forum

Please login or register.

Login with username, password and session length
Pages: 1 [2]  All

Author Topic: Best strategy for a certain kingdom  (Read 12996 times)

0 Members and 1 Guest are viewing this topic.

norkbes

  • Swindler
  • ***
  • Offline Offline
  • Posts: 15
  • Respect: +3
    • View Profile
Re: Best strategy for a certain kingdom
« Reply #25 on: June 04, 2014, 10:37:43 am »
0

@DStu: thank you very much. playPriority works like a charm.

One additional question: how can I make Masquerade to pass a chosen card to the opponent. I've got impression that trashPriority is not relevant in that case, i.e. it works for trashing not passing a card.
Logged

DStu

  • Margrave
  • *****
  • Offline Offline
  • Posts: 2627
  • Respect: +1490
    • View Profile
Re: Best strategy for a certain kingdom
« Reply #26 on: June 04, 2014, 12:04:56 pm »
0

@DStu: thank you very much. playPriority works like a charm.

One additional question: how can I make Masquerade to pass a chosen card to the opponent. I've got impression that trashPriority is not relevant in that case, i.e. it works for trashing not passing a card.


Code: [Select]
makeCard "Masquerade", action, {
...
for player in state.players
      cardToPass = player.ai.choose('trash', state, player.hand)
Looks like it is trashPriority
Logged

norkbes

  • Swindler
  • ***
  • Offline Offline
  • Posts: 15
  • Respect: +3
    • View Profile
Re: Best strategy for a certain kingdom
« Reply #27 on: June 05, 2014, 04:31:54 pm »
0

The Kalkin's strategy looks roughly like this:

Code: [Select]
{
  name: 'VictoryDance-SHIGH' # by Samuel Kalkin
  author: 'norkbes'
  requires: ['Scout','Ironworks','Masquerade','Great Hall','Harem',"Pawn","Upgrade","Nobles","Bridge","Duke"]

  gainPriority: (state, my) -> [
    "Masquerade" if my.getAvailableMoney() < 4 and my.countInDeck("Masquerade") < 1
    "Ironworks" if my.countInDeck("Ironworks") < 1
    "Great Hall" if my.countInHand("Ironworks") > 0 and my.countInDeck("Silver") < 2 and my.countInDeck("Harem") < 1 and my.countInDeck("Scout") > 0
    "Scout" if my.countInDeck("Scout") < 2
    "Silver" if my.countInDeck("Silver") < 2
    "Province"
    "Harem"
    "Great Hall"
    "Duchy"
    "Estate" if state.countInSupply("Great Hall") == 0
    null
  ]

 trashPriority: (state, my) -> [
    "Curse"
    "Pawn" if my.countInHand("Pawn") > 1
    "Ironworks" if state.countInSupply("Great Hall") == 0
    "Estate" if state.gainsToEndGame() > 5
    "Copper" if my.getAvailableMoney() > 6 or state.countInSupply("Harem") == 0
    null
  ]

 playPriority: (state, my) -> [
    "Scout"
    "Great Hall"
    "Ironworks"
    "Masquerade"
  ]
 
  putOnDeckPriority: (state, my) -> [
    "Gold"
    "Silver"
    "Copper"
    "Scout"
    "Ironworks"
    "Masquerade"
  ]
}

One difficulty with implementing it properly in Dominiate is that there are many things you need to take about, e.g. trash or not trash with Masquerade, if trash: choose Estate or Copper, etc. Another tricky thing is how to optimally choose non-victory cards put on deck by Scout.. Anyway, it looks that the strategy above basically corresponds what Samuel had in mind.

One sad thing is that while VictoryDance-SHIGH strategy wins with BigMoney, it fails to do so with VictoryDance-GH or VictoryDance-PUB. Anyway it was good/beneficial to me to see how naugty might be a naughty interplay between both Scouts and Harems.

To sum up, so far at least four strategies seems to work for this kingdom: big money, Ironworks-Duke-Duches, Duke-Duches-Pawn-Upgrade-Bridge, and so far the weakest but nonetheless promising (I guess you always can tweak it somehow) Kalkin's Scout-Harem-Great Hall-Ironworks.


 



« Last Edit: June 07, 2014, 03:13:05 am by norkbes »
Logged

ephesos

  • Explorer
  • *****
  • Offline Offline
  • Posts: 347
  • Shuffle iT Username: Ephesos
  • Respect: +290
    • View Profile
Re: Best strategy for a certain kingdom
« Reply #28 on: June 06, 2014, 12:20:07 am »
0

Have you tried using OBM Nobles as your Big Money variant, as opposed to straight BM? It ties SHIGH, but loses to GH and PUB by quite a lot(probably since the game ends on Nobles, Dukes, Duchies).
Logged

norkbes

  • Swindler
  • ***
  • Offline Offline
  • Posts: 15
  • Respect: +3
    • View Profile
Re: Best strategy for a certain kingdom
« Reply #29 on: June 07, 2014, 03:19:45 am »
0

@ephesos: for comparisons I used the generic BigMoney strategy. As far as OBM Nobles is considered, you are right, SHIGH ties OBM Nobles.
Logged

DG

  • Governor
  • *****
  • Offline Offline
  • Posts: 4074
  • Respect: +2624
    • View Profile
Re: Best strategy for a certain kingdom
« Reply #30 on: June 07, 2014, 09:53:02 pm »
0

You might want to try waiting until a specific turn to buy duchies, using the turn number as an approximation for when you shuffle. That turn number is probably 5 for the ironworks/duchy rush.

You might want to always gain a silver with the ironworks when you have 4 coins in hand and dukes/duchies in the supply.

Province buying scripts can easily go wrong when competing for duchies. Too few duchies is ineffective and too many just becomes another duchy rush.

I'm guessing that the scout based deck would essentially be scout-nobles rather than great halls or harems. A simulator wouldn't be able to make the upgrade decisions needed for a complex engine to work.
« Last Edit: June 07, 2014, 09:56:37 pm by DG »
Logged

ephesos

  • Explorer
  • *****
  • Offline Offline
  • Posts: 347
  • Shuffle iT Username: Ephesos
  • Respect: +290
    • View Profile
Re: Best strategy for a certain kingdom
« Reply #31 on: June 10, 2014, 01:31:55 pm »
0

You'd be surprised, actually. Apparently, getting the first Duchy is at least just as important as not clogging your deck with it. This one just about ties the unmodified version that buys Duchy first no matter what.

Code: [Select]
{
  name: 'VictoryDance-GH'
  requires: ['Masquerade','Pawn','Nobles','Duke','Bridge','Harem','Great Hall','Scout','Ironworks','Upgrade']
  author: 'Ephesos'
  gainPriority: (state, my) ->
    [
      "Ironworks" if my.countInDeck("Ironworks") < 3
      [hypState,hypMy]=state.hypothetical(my.ai)
      "Duchy" if hypMy.draw.length > 4 or state.countInSupply("Duchy") < 8
      "Duke" if state.countInSupply("Duchy") < 8
      "Province"
      "Gold"
      "Great Hall" if my.countInHand("Ironworks") > 0
      "Great Hall" if my.countInDeck("Great Hall") <=4 and state.supply[c["Great Hall"]] == 1
      "Silver"
      "Pawn"
    ]
}

Made code that can tell when I'm about to shuffle. I'm assuming that if the other person has a Duchy already, I want to match them no matter what. Otherwise, if I'm about to shuffle, I'll buy something else like Ironworks or Silver before my Duchy. However, if I have at least a full turn left, I'll buy the first Duchy.
Logged
Pages: 1 [2]  All
 

Page created in 0.05 seconds with 21 queries.