rewards: ignore duplicate fixed rewards
This commit is contained in:
@@ -210,18 +210,30 @@ class QuestItemExpectedValue(object):
|
|||||||
# preprocessing step - figure out how many fixed rewards there
|
# preprocessing step - figure out how many fixed rewards there
|
||||||
# are, which we need to know in order to figure out how many
|
# are, which we need to know in order to figure out how many
|
||||||
# chances there are to get other rewards.
|
# 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"]
|
slot = reward["reward_slot"]
|
||||||
if reward["percentage"] == 100:
|
if reward["percentage"] == 100:
|
||||||
|
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
|
self.fixed_rewards[slot] += 1
|
||||||
|
fixed_seen[slot].add(reward["item_id"])
|
||||||
else:
|
else:
|
||||||
self.total_reward_p[slot] += reward["percentage"]
|
self.total_reward_p[slot] += reward["percentage"]
|
||||||
|
|
||||||
self._check_totals()
|
self._check_totals()
|
||||||
|
|
||||||
for reward in rewards:
|
for i, reward in enumerate(rewards):
|
||||||
if reward["item_id"] != self.item_id:
|
if reward["item_id"] != self.item_id:
|
||||||
continue
|
continue
|
||||||
|
if i in dups:
|
||||||
|
continue
|
||||||
self._add_reward(reward)
|
self._add_reward(reward)
|
||||||
|
|
||||||
def _add_reward(self, r):
|
def _add_reward(self, r):
|
||||||
@@ -803,6 +815,9 @@ class ItemRewards(object):
|
|||||||
out.write(" %20s %5.2f / 100\n" % ("Shiny", shiny_ev))
|
out.write(" %20s %5.2f / 100\n" % ("Shiny", shiny_ev))
|
||||||
out.write("\n")
|
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):
|
def print_recommended_hunts(self, out):
|
||||||
out.write("*** Poogie Recommends ***\n")
|
out.write("*** Poogie Recommends ***\n")
|
||||||
for rank, skill_sets in self.rank_skill_sets.iteritems():
|
for rank, skill_sets in self.rank_skill_sets.iteritems():
|
||||||
|
|||||||
Reference in New Issue
Block a user