def _get_base_mana(player: Player): char_class = CharacterClass(player.char_class) base_stats = BASE_STATS[char_class] if 'base_mana' in base_stats: base_stat = base_stats['base_mana'] return base_stat[player.level] else: return 0
def _parse_packet(self): # omit first 6 bytes, cause 01-02 = packet size, 03-04 = opcode (0x1ED), 05-06 - unknown null-bytes tmp_buf = BytesIO(self.packet[6:]) result = dict() result['name'] = CharacterCreate._parse_account_name(tmp_buf) char_data = unpack('<9B', tmp_buf.read(9)) result['race'] = CharacterRace(char_data[0]).value result['char_class'] = CharacterClass(char_data[1]).value result['gender'] = CharacterGender(char_data[2]).value features = char_data[3:8] result['skin'] = features[0] result['face'] = features[1] result['hair_style'] = features[2] result['hair_color'] = features[3] result['facial_hair'] = features[4] return result
def _set_player_power(self): char_class = CharacterClass(self.player.char_class) mana_classes = [ CharacterClass.HUNTER, CharacterClass.WARLOCK, CharacterClass.SHAMAN, CharacterClass.MAGE, CharacterClass.PRIEST, CharacterClass.DRUID, CharacterClass.PALADIN ] rage_classes = [CharacterClass.WARRIOR] energy_classes = [CharacterClass.ROGUE] if char_class in mana_classes: self.SPAWN_FIELDS.append(UnitField.POWER1) self.SPAWN_FIELDS.append(UnitField.MAXPOWER1) elif char_class in rage_classes: self.SPAWN_FIELDS.append(UnitField.POWER2) self.SPAWN_FIELDS.append(UnitField.MAXPOWER2) elif char_class in energy_classes: self.SPAWN_FIELDS.append(UnitField.POWER4) self.SPAWN_FIELDS.append(UnitField.MAXPOWER4)
def _set_power_type(player: Player): mana_classes = [ CharacterClass.HUNTER, CharacterClass.WARLOCK, CharacterClass.SHAMAN, CharacterClass.MAGE, CharacterClass.PRIEST, CharacterClass.DRUID, CharacterClass.PALADIN ] rage_classes = [CharacterClass.WARRIOR] energy_classes = [CharacterClass.ROGUE] char_class = CharacterClass(player.char_class) if char_class in mana_classes: return UnitPower.MANA.value elif char_class in rage_classes: return UnitPower.RAGE.value elif char_class in energy_classes: return UnitPower.ENERGY.value else: return UnitPower.MANA.value
def _get_base_attribute(attribute, player: Player): race = CharacterRace(player.race) char_class = CharacterClass(player.char_class) mod = BASE_STATS_MOD[race][attribute] base_stat = BASE_STATS[char_class][attribute] return base_stat[player.level] - abs(mod * player.level)