def score(self): score = 0 score += score_mapping(self.pastures, [1, 2, 3, 4], [-1, 1, 2, 3, 4]) score += score_mapping(self.fields, [1, 3, 4, 5], [-1, 1, 2, 3, 4]) score += score_mapping(self.grain, [1, 4, 6, 8], [-1, 1, 2, 3, 4]) score += score_mapping(self.veg, [1, 2, 3, 4], [-1, 1, 2, 3, 4]) score += score_mapping(self.sheep, [1, 4, 6, 8], [-1, 1, 2, 3, 4]) score += score_mapping(self.boar, [1, 3, 5, 7], [-1, 1, 2, 3, 4]) score += score_mapping(self.cattle, [1, 2, 4, 6], [-1, 1, 2, 3, 4]) score += max(self.fenced_stables, 4) score -= len(self.empty_spaces) score += 3 * self.people multiplier = {'wood': 0, 'clay': 1, 'stone': 2}[self.house_type] score += multiplier * self.rooms score += sum([occ.victory_points(self) for occ in self.occupations]) score += sum([imp.victory_points(self) for imp in self.minor_improvements]) score += sum([imp.victory_points(self) for imp in self.major_improvements]) return score
def victory_points(self, player): n_pasture_spaces = len(set(self.pasture_spaces)) return score_mapping(n_pasture_spaces, [6, 7, 8, 10], [0, 1, 2, 3, 4])
def check_and_apply(self, player): wood = score_mapping(player.game.rounds_remaining, [1, 3, 6, 9], [0, 1, 2, 3, 4]) player.add_resources(wood=wood)
def victory_points(self, player): imps = len(player.major_improvements) + len(player.minor_improvements) return score_mapping(imps, [5, 6, 7, 8, 9, 10], [0, 2, 3, 4, 5, 7, 9])
def victory_points(self, player): return score_mapping(player.reed, [1, 3, 5], [2, 3, 4, 5])
def victory_points(self, player): return score_mapping(player.clay, [3, 5, 7], [2, 3, 4, 5])
def trigger(self, player, **kwargs): food = score_mapping(player.sheep, [1, 4, 7], [0, 1, 2, 3]) player.add_resources(food=food)