diff --git a/pyfpdb/DerivedStats.py b/pyfpdb/DerivedStats.py index 166034a5..32c7c874 100644 --- a/pyfpdb/DerivedStats.py +++ b/pyfpdb/DerivedStats.py @@ -162,7 +162,7 @@ class DerivedStats(): self.handsplayers[player]['wonAtSD'] = 1.0 for player in hand.pot.committed: - self.handsplayers[player]['totalProfit'] = int(self.handsplayers[player]['winnings'] - (100*hand.pot.committed[player])) + self.handsplayers[player]['totalProfit'] = int(self.handsplayers[player]['winnings'] - (100*hand.pot.committed[player])- (100*hand.pot.common[player])) self.calcCBets(hand) diff --git a/pyfpdb/Hand.py b/pyfpdb/Hand.py index 73dd7600..c5e2dea7 100644 --- a/pyfpdb/Hand.py +++ b/pyfpdb/Hand.py @@ -321,8 +321,10 @@ For sites (currently only Carbon Poker) which record "all in" as a special actio self.stacks[player] -= Decimal(ante) act = (player, 'posts', "ante", ante, self.stacks[player]==0) self.actions['BLINDSANTES'].append(act) - self.pot.addMoney(player, Decimal(ante)) - +# self.pot.addMoney(player, Decimal(ante)) + self.pot.addCommonMoney(player, Decimal(ante)) +#I think the antes should be common money, don't have enough hand history to check + def addBlind(self, player, blindtype, amount): # if player is None, it's a missing small blind. # The situation we need to cover are: @@ -340,9 +342,12 @@ For sites (currently only Carbon Poker) which record "all in" as a special actio self.actions['BLINDSANTES'].append(act) if blindtype == 'both': - amount = self.bb - self.bets['BLINDSANTES'][player].append(Decimal(self.sb)) - self.pot.addCommonMoney(Decimal(self.sb)) + # work with the real ammount. limit games are listed as $1, $2, where + # the SB 0.50 and the BB is $1, after the turn the minimum bet amount is $2.... + amount = Decimal(amount)/3 + self.bets['BLINDSANTES'][player].append(amount) + self.pot.addCommonMoney(player, amount) + amount += amount self.bets['PREFLOP'][player].append(Decimal(amount)) self.pot.addMoney(player, Decimal(amount)) @@ -504,10 +509,7 @@ Card ranks will be uppercased self.totalcollected = 0; #self.collected looks like [[p1,amount][px,amount]] for entry in self.collected: - self.totalcollected += Decimal(entry[1]) - - - + self.totalcollected += Decimal(entry[1]) def getGameTypeAsString(self): """\ @@ -986,11 +988,12 @@ class DrawHand(Hand): self.lastBet['DEAL'] = Decimal(amount) elif blindtype == 'both': # extra small blind is 'dead' - self.lastBet['DEAL'] = Decimal(self.bb) + amount = Decimal(amount)/3 + amount += amount + self.lastBet['DEAL'] = Decimal(amount) self.posted = self.posted + [[player,blindtype]] #print "DEBUG: self.posted: %s" %(self.posted) - def addShownCards(self, cards, player, shown=True, mucked=False, dealt=False): if player == self.hero: # we have hero's cards just update shown/mucked if shown: self.shown.add(player) @@ -1405,7 +1408,7 @@ class Pot(object): self.contenders = set() self.committed = {} self.streettotals = {} - self.common = Decimal(0) + self.common = {} self.total = None self.returned = {} self.sym = u'$' # this is the default currency symbol @@ -1415,13 +1418,14 @@ class Pot(object): def addPlayer(self,player): self.committed[player] = Decimal(0) + self.common[player] = Decimal(0) def addFold(self, player): # addFold must be called when a player folds self.contenders.discard(player) - def addCommonMoney(self, amount): - self.common += amount + def addCommonMoney(self, player, amount): + self.common[player] += amount def addMoney(self, player, amount): # addMoney must be called for any actions that put money in the pot, in the order they occur @@ -1429,7 +1433,7 @@ class Pot(object): self.committed[player] += amount def markTotal(self, street): - self.streettotals[street] = sum(self.committed.values()) + self.common + self.streettotals[street] = sum(self.committed.values()) + sum(self.common.values()) def getTotalAtStreet(self, street): if street in self.streettotals: @@ -1437,7 +1441,7 @@ class Pot(object): return 0 def end(self): - self.total = sum(self.committed.values()) + self.common + self.total = sum(self.committed.values()) + sum(self.common.values()) # Return any uncalled bet. committed = sorted([ (v,k) for (k,v) in self.committed.items()]) diff --git a/pyfpdb/PokerStarsToFpdb.py b/pyfpdb/PokerStarsToFpdb.py index 39066b8e..6874c708 100644 --- a/pyfpdb/PokerStarsToFpdb.py +++ b/pyfpdb/PokerStarsToFpdb.py @@ -287,16 +287,14 @@ class PokerStars(HandHistoryConverter): hand.addBringIn(m.group('PNAME'), m.group('BRINGIN')) def readBlinds(self, hand): - try: - count = 0 - for a in self.re_PostSB.finditer(hand.handText): - if count == 0: - hand.addBlind(a.group('PNAME'), 'small blind', a.group('SB')) - count = 1 - else: - hand.addAnte(a.group('PNAME'), a.group('SB')) - except: # no small blind - hand.addBlind(None, None, None) + liveBlind = True + for a in self.re_PostSB.finditer(hand.handText): + if liveBlind: + hand.addBlind(a.group('PNAME'), 'small blind', a.group('SB')) + liveBlind = False + else: + # Post dead blinds as ante + hand.addAnte(a.group('PNAME'), a.group('SB')) for a in self.re_PostBB.finditer(hand.handText): hand.addBlind(a.group('PNAME'), 'big blind', a.group('BB')) for a in self.re_PostBoth.finditer(hand.handText):