From 99a2dc1ea66148f5d34071b50d845842719ed3d8 Mon Sep 17 00:00:00 2001 From: Bryce Allen Date: Wed, 5 Aug 2015 22:28:17 -0500 Subject: [PATCH] rewards: ignore duplicate fixed rewards --- mhapi/rewards.py | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/mhapi/rewards.py b/mhapi/rewards.py index 6d48a48..0f700eb 100644 --- a/mhapi/rewards.py +++ b/mhapi/rewards.py @@ -210,18 +210,30 @@ class QuestItemExpectedValue(object): # preprocessing step - figure out how many fixed rewards there # are, which we need to know in order to figure out how many # chances there are to get other rewards. - for reward in rewards: + fixed_seen = dict(A=set(), B=set(), Sub=set()) + dups = dict() + for i in xrange(len(rewards)): + reward = rewards[i] slot = reward["reward_slot"] if reward["percentage"] == 100: - self.fixed_rewards[slot] += 1 + if reward["item_id"] in fixed_seen[slot]: + # db has some errors where fixed items appear twice + # TODO: this could be mislabeled fixed subquest reward, + # anecdotally S.Dalamadur Steel+ looks like that. + dups[i] = True + else: + self.fixed_rewards[slot] += 1 + fixed_seen[slot].add(reward["item_id"]) else: self.total_reward_p[slot] += reward["percentage"] self._check_totals() - for reward in rewards: + for i, reward in enumerate(rewards): if reward["item_id"] != self.item_id: continue + if i in dups: + continue self._add_reward(reward) def _add_reward(self, r): @@ -803,6 +815,9 @@ class ItemRewards(object): out.write(" %20s %5.2f / 100\n" % ("Shiny", shiny_ev)) out.write("\n") + def get_best_strat(self, rank="G", skill="No skills"): + return self.rank_skill_sets[rank][skill].best + def print_recommended_hunts(self, out): out.write("*** Poogie Recommends ***\n") for rank, skill_sets in self.rank_skill_sets.iteritems():