def init_stats(self): if self.unit_mgr.get_type() == ObjectTypes.TYPE_PLAYER: base_stats = WorldDatabaseManager.player_get_class_level_stats( self.unit_mgr.player.class_, self.unit_mgr.level) base_attrs = WorldDatabaseManager.player_get_level_stats( self.unit_mgr.player.class_, self.unit_mgr.level, self.unit_mgr.player.race) if not base_stats or not base_attrs: Logger.error( f'Unsupported level ({self.unit_mgr.level}) from {self.unit_mgr.player.name}.' ) return self.base_stats[UnitStats.HEALTH] = base_stats.basehp self.base_stats[UnitStats.MANA] = base_stats.basemana self.base_stats[UnitStats.STRENGTH] = base_attrs.str self.base_stats[UnitStats.AGILITY] = base_attrs.agi self.base_stats[UnitStats.STAMINA] = base_attrs.sta self.base_stats[UnitStats.INTELLECT] = base_attrs.inte self.base_stats[UnitStats.SPIRIT] = base_attrs.spi self.unit_mgr.base_hp = base_stats.basehp self.unit_mgr.base_mana = base_stats.basemana else: # Creature self.base_stats[UnitStats.HEALTH] = self.unit_mgr.max_health self.base_stats[UnitStats.MANA] = self.unit_mgr.max_power_1 self.base_stats[ UnitStats. DODGE_CHANCE] = BASE_DODGE_CHANCE_CREATURE / 100 # Players don't have a flat dodge/block chance. self.base_stats[ UnitStats. BLOCK_CHANCE] = BASE_BLOCK_PARRY_CHANCE / 100 # Players have block scaling, assign flat 5% to creatures. # Don't overwrite base speed if it has been modified. self.base_stats[UnitStats.SPEED_RUNNING] = self.base_stats.get( UnitStats.SPEED_RUNNING, config.Unit.Defaults.run_speed) # Players and creatures have an unchanging base 5% chance to block and parry (before defense skill differences). # As block chance also scales with strength, the value is calculated in update_base_block_chance. self.base_stats[UnitStats.PARRY_CHANCE] = BASE_BLOCK_PARRY_CHANCE / 100 self.send_attributes() self.update_base_health_regen() self.update_base_mana_regen() self.update_base_proc_chance() self.update_defense_bonuses()
def init_stats(self): base_stats = WorldDatabaseManager.player_get_class_level_stats( self.player_mgr.player.class_, self.player_mgr.level) base_attrs = WorldDatabaseManager.player_get_level_stats( self.player_mgr.player.class_, self.player_mgr.level, self.player_mgr.player.race) if not base_stats or not base_attrs: Logger.error("Unsupported level (%d) from %s." % (self.player_mgr.level, self.player_mgr.player.name)) return self.player_mgr.base_hp = base_stats.basehp self.player_mgr.base_mana = base_stats.basemana self.player_mgr.set_base_str(base_attrs.str) self.player_mgr.set_base_agi(base_attrs.agi) self.player_mgr.set_base_sta(base_attrs.sta) self.player_mgr.set_base_int(base_attrs.inte) self.player_mgr.set_base_spi(base_attrs.spi)
def init_stats(self): base_stats = WorldDatabaseManager.player_get_class_level_stats(self.unit_mgr.class_, self.unit_mgr.level) if not base_stats: if self.unit_mgr.level > 60: # Default to max available base stats, level 60. base_stats = WorldDatabaseManager.player_get_class_level_stats(self.unit_mgr.class_, 60) Logger.warning(f'Unsupported base stats for level ({self.unit_mgr.level})' f' Unit class ({Classes(self.unit_mgr.class_).name})' f' Unit type ({ObjectTypeIds(self.unit_mgr.get_type_id()).name})' f' Using level 60 base stats.') else: Logger.error( f'Unsupported base stats for level ({self.unit_mgr.level})' f' Unit class ({Classes(self.unit_mgr.class_).name})' f' Unit type ({ObjectTypeIds(self.unit_mgr.get_type_id()).name}).') return # Player specific. if self.unit_mgr.get_type_id() == ObjectTypeIds.ID_PLAYER: base_attrs = WorldDatabaseManager.player_get_level_stats(self.unit_mgr.class_, self.unit_mgr.level, self.unit_mgr.race) if not base_attrs: if self.unit_mgr.level > 60: # Default to max available attributes, level 60. base_attrs = WorldDatabaseManager.player_get_level_stats(self.unit_mgr.class_, 60, self.unit_mgr.race) Logger.warning(f'Unsupported base attributes for level ({self.unit_mgr.level})' f' Unit type ({ObjectTypeIds(self.unit_mgr.get_type_id()).name})' f' Unit class ({Classes(self.unit_mgr.class_).name})' f' Unit race ({Races(self.unit_mgr.race).name})' f' Using level 60 attributes.') else: Logger.error(f'Unsupported base attributes for level ({self.unit_mgr.level})' f' Unit type ({ObjectTypeIds(self.unit_mgr.get_type_id()).name})' f' Unit class ({Classes(self.unit_mgr.class_).name})' f' Unit race ({Races(self.unit_mgr.race).name})') return self.base_stats[UnitStats.HEALTH] = base_stats.basehp self.base_stats[UnitStats.MANA] = base_stats.basemana self.base_stats[UnitStats.STRENGTH] = base_attrs.str self.base_stats[UnitStats.AGILITY] = base_attrs.agi self.base_stats[UnitStats.STAMINA] = base_attrs.sta self.base_stats[UnitStats.INTELLECT] = base_attrs.inte self.base_stats[UnitStats.SPIRIT] = base_attrs.spi self.unit_mgr.base_hp = base_stats.basehp self.unit_mgr.base_mana = base_stats.basemana # Creatures. else: self.base_stats[UnitStats.HEALTH] = self.unit_mgr.max_health self.base_stats[UnitStats.MANA] = self.unit_mgr.max_power_1 self.base_stats[UnitStats.SPIRIT] = 1 # Players don't have a flat dodge/block chance. self.base_stats[UnitStats.DODGE_CHANCE] = BASE_DODGE_CHANCE_CREATURE / 100 # Players have block scaling, assign flat 5% to creatures. self.base_stats[UnitStats.BLOCK_CHANCE] = BASE_BLOCK_PARRY_CHANCE / 100 self.base_stats[UnitStats.CRITICAL] = BASE_MELEE_CRITICAL_CHANCE / 100 self.unit_mgr.base_hp = self.unit_mgr.max_health self.unit_mgr.base_mana = self.unit_mgr.max_power_1 # Don't overwrite base speed if it has been modified. self.base_stats[UnitStats.SPEED_RUNNING] = self.base_stats.get(UnitStats.SPEED_RUNNING, config.Unit.Defaults.run_speed) # Players and creatures have an unchanging base 5% chance to block and parry (before defense skill differences). # As block chance also scales with strength, the value is calculated in update_base_block_chance. self.base_stats[UnitStats.PARRY_CHANCE] = BASE_BLOCK_PARRY_CHANCE / 100 self.send_attributes() self.update_base_health_regen() self.update_base_mana_regen() self.update_base_proc_chance() self.update_base_melee_critical_chance() self.update_defense_bonuses()