def calculate(self): if not self.initializing: gear_stats = self.gear_page.get_stats() my_stats = stats.Stats(**gear_stats) my_talents = rogue_talents.RogueTalents(*self.talents_page.get_talents()) my_glyphs = rogue_glyphs.RogueGlyphs(*self.talents_page.get_glyphs()) my_buffs = buffs.Buffs(*self.buffs_page.current_buffs) my_race = race.Race(self.settings_page.get_race()) test_settings = settings.Settings(self.settings_page.get_cycle(), response_time = self.settings_page.get_response_time()) self.error_area.SetLabel("") try: calculator = AldrianasRogueDamageCalculator(my_stats, my_talents, my_glyphs, my_buffs, my_race, test_settings) dps = calculator.get_dps() ep_values = calculator.get_ep() dps_breakdown = calculator.get_dps_breakdown() except exceptions.InvalidInputException as e: self.error_area.SetLabel(str(e)) self.dps.SetValue(str(dps)) self.ep_box.SetValue(self.pretty_print(ep_values)) self.dps_breakdown.SetValue(self.pretty_print(dps_breakdown)) for stat in GearPage.stats: tc = getattr(self, stat) tc.SetValue(str(gear_stats[stat]))
def test_get_ep(self): test_buffs = buffs.Buffs() test_mh = stats.Weapon(939.5, 1.8, 'dagger', 'landslide') test_oh = stats.Weapon(730.5, 1.4, 'dagger', 'landslide') test_ranged = stats.Weapon(1371.5, 2.2, 'thrown') test_procs = procs.ProcsList('heroic_prestors_talisman_of_machination', 'fluid_death', 'rogue_t11_4pc') test_gear_buffs = stats.GearBuffs('rogue_t11_2pc', 'leather_specialization', 'potion_of_the_tolvir', 'chaotic_metagem') test_stats = stats.Stats(20, 4756, 190, 1022, 1329, 597, 1189, 1377, test_mh, test_oh, test_ranged, test_procs, test_gear_buffs) test_talents = rogue_talents.RogueTalents('0333230113022110321', '0020000000000000000', '2030030000000000000') glyph_list = ['backstab', 'mutilate', 'rupture'] test_glyphs = rogue_glyphs.RogueGlyphs(*glyph_list) test_race = race.Race('night_elf') test_cycle = settings.AssassinationCycle() test_settings = settings.Settings(test_cycle, response_time=1) test_level = 85 calculator = AldrianasRogueDamageCalculator(test_stats, test_talents, test_glyphs, test_buffs, test_race, test_settings, test_level) ep_values = calculator.get_ep() self.assertTrue(ep_values['agi'] < 4.0) self.assertTrue(ep_values['agi'] > 2.0) self.assertTrue(ep_values['yellow_hit'] < 4.0) self.assertTrue(ep_values['yellow_hit'] > 1.0) self.assertTrue(ep_values['crit'] < 2.0) self.assertTrue(ep_values['crit'] > 0.0)
test_race = race.Race('night_elf') # Set up settings. test_cycle = settings.CombatCycle() test_settings = settings.Settings(test_cycle, response_time=1) # Set up level test_level = 85 # Build a DPS object. calculator = AldrianasRogueDamageCalculator(test_stats, test_talents, test_glyphs, test_buffs, test_race, test_settings, test_level) print 'WARNING: This module contains bugs. Probably a lot of them. Don\'t even *think* about trying to draw meaningful decisions from the results at this stage.' # Compute EP values. ep_values = calculator.get_ep().items() ep_values.sort(key=lambda entry: entry[1], reverse=True) max_len = max(len(entry[0]) for entry in ep_values) for value in ep_values: print value[0] + ':' + ' ' * (max_len - len(value[0])), value[1] print '---------' # Compute DPS Breakdown. dps_breakdown = calculator.combat_dps_breakdown().items() dps_breakdown.sort(key=lambda entry: entry[1], reverse=True) max_len = max(len(entry[0]) for entry in dps_breakdown) total_dps = sum(entry[1] for entry in dps_breakdown) for entry in dps_breakdown: print entry[0] + ':' + ' ' * (max_len - len(entry[0])), entry[1]
# Set up race. test_race = race.Race('night_elf') # Set up settings. test_cycle = settings.SubtletyCycle(5) test_settings = settings.Settings(test_cycle, response_time=1) # Set up level test_level = 85 # Build a DPS object. calculator = AldrianasRogueDamageCalculator(test_stats, test_talents, test_glyphs, test_buffs, test_race, test_settings, test_level) # Compute EP values. ep_values = calculator.get_ep() # Compute talents ranking main_tree_talents_ranking, off_tree_talents_ranking = calculator.get_talents_ranking() # Compute DPS Breakdown. dps_breakdown = calculator.get_dps_breakdown() total_dps = sum(entry[1] for entry in dps_breakdown.items()) def pretty_print(dict_list): max_len = 0 for i in dict_list: dict_values = i.items() if max_len < max(len(entry[0]) for entry in dict_values): max_len = max(len(entry[0]) for entry in dict_values)