diff --git a/data/images/cards/bottoms/french/bottom02-n.png b/data/images/cards/bottoms/french/bottom02-n.png index 7c1e5f25..9511020c 100644 Binary files a/data/images/cards/bottoms/french/bottom02-n.png and b/data/images/cards/bottoms/french/bottom02-n.png differ diff --git a/data/images/cards/bottoms/french/bottom02.png b/data/images/cards/bottoms/french/bottom02.png index 7c1e5f25..52c8b3ef 100644 Binary files a/data/images/cards/bottoms/french/bottom02.png and b/data/images/cards/bottoms/french/bottom02.png differ diff --git a/pysollib/games/golf.py b/pysollib/games/golf.py index 4786dd8e..5952f591 100644 --- a/pysollib/games/golf.py +++ b/pysollib/games/golf.py @@ -914,6 +914,7 @@ class FirTree_GameMethods: class ThreeFirTrees(Golf, FirTree_GameMethods): Hint_Class = CautiousDefaultHint + Waste_Class = Golf_Waste def createGame(self): @@ -929,7 +930,7 @@ class ThreeFirTrees(Golf, FirTree_GameMethods): s.talon = Golf_Talon(x, y, self, max_rounds=1) l.createText(s.talon, 'n') x += l.XS - s.waste = Golf_Waste(x, y, self) + s.waste = self.Waste_Class(x, y, self) s.waste.CARD_XOFFSET = l.XOFFSET/4 l.createText(s.waste, 'n') # the Waste is also our only Foundation in this game @@ -946,6 +947,10 @@ class ThreeFirTrees(Golf, FirTree_GameMethods): self.s.talon.dealCards() +class RelaxedThreeFirTrees(ThreeFirTrees): + Waste_Class = StackWrapper(Golf_Waste, mod=13) + + # ************************************************************************ # * Napoleon Takes Moscow # * Napoleon Leaves Moscow @@ -1169,4 +1174,6 @@ registerGame(GameInfo(763, Wasatch, "Wasatch", GI.GT_1DECK_TYPE, 1, UNLIMITED_REDEALS, GI.SL_MOSTLY_LUCK)) registerGame(GameInfo(764, Beacon, "Beacon", GI.GT_1DECK_TYPE | GI.GT_ORIGINAL, 1, 0, GI.SL_MOSTLY_SKILL)) +registerGame(GameInfo(768, RelaxedThreeFirTrees, "Relaxed Three Fir-trees", + GI.GT_GOLF, 2, 0, GI.SL_BALANCED)) diff --git a/pysollib/games/pyramid.py b/pysollib/games/pyramid.py index 7a589200..5292468f 100644 --- a/pysollib/games/pyramid.py +++ b/pysollib/games/pyramid.py @@ -727,22 +727,10 @@ class TripleAlliance(Game): # * Pharaohs # ************************************************************************ -class Pharaohs_RowStack(Pyramid_RowStack): - def acceptsCards(self, from_stack, cards): - if not self.basicAcceptsCards(from_stack, cards): - return False - if not self.cards: - return False - r0, r1 = cards[0].rank, self.cards[-1].rank - if r0+r1 == 11: - return True - return r0 == r1 - - class Pharaohs(Pyramid): Talon_Class = InitialDealTalonStack - RowStack_Class = Pharaohs_RowStack + RowStack_Class = Pyramid_RowStack PYRAMID_Y_FACTOR = 3 @@ -769,6 +757,7 @@ class Pharaohs(Pyramid): s.foundations.append(Pyramid_Foundation(x, y, self, suit=ANY_SUIT, dir=0, base_rank=ANY_RANK, max_move=0, max_cards=52)) + l.createText(s.foundations[0], 's') # define stack-groups l.defaultStackGroups() @@ -867,7 +856,7 @@ class Apophis_Hint(Pyramid_Hint): self.addHint(50000+len(r1.cards)+len(r2.cards), 1, r1, r2) -class Apophis_RowStack(Pharaohs_RowStack): +class Apophis_RowStack(Pyramid_RowStack): def acceptsCards(self, from_stack, cards): if not self.basicAcceptsCards(from_stack, cards): return False diff --git a/pysollib/games/windmill.py b/pysollib/games/windmill.py index 9cb06305..434c28be 100644 --- a/pysollib/games/windmill.py +++ b/pysollib/games/windmill.py @@ -194,9 +194,7 @@ class DutchSolitaire(Windmill): # * Napoleon's Tomb # ************************************************************************ -class NapoleonsTomb(Windmill): - - FILL_STACK = False +class NapoleonsTomb(Game): # # game layout @@ -223,12 +221,11 @@ class NapoleonsTomb(Windmill): s.rows.append(Windmill_RowStack(x, y, self)) x, y = x0 + l.XS, y0 + l.YS s.foundations.append(Windmill_Foundation(x, y, self, base_rank=5, - mod=6, min_cards=1, max_cards=24, - max_move=0, dir=-1)) + mod=13, max_cards=24, dir=-1)) for d in ((0.1, 0.1), (1.9, 0.1), (0.1, 1.9), (1.9, 1.9)): x, y = x0 + d[0] * l.XS, y0 + d[1] * l.YS s.foundations.append(Windmill_Foundation(x, y, self, - max_cards=7, base_rank=6, max_move=0)) + max_cards=7, base_rank=6, mod=13)) # define stack-groups l.defaultStackGroups() @@ -238,9 +235,6 @@ class NapoleonsTomb(Windmill): # game overrides # - def _shuffleHook(self, cards): - return cards - def startGame(self): self.startDealSample() self.s.talon.dealRow()