def finish_loading(self): if self.creature_template and self.creature_instance: if not self.fully_loaded: creature_model_info = WorldDatabaseManager.creature_get_model_info(self.current_display_id) if creature_model_info: self.bounding_radius = creature_model_info.bounding_radius self.combat_reach = creature_model_info.combat_reach self.gender = creature_model_info.gender if self.creature_template.scale == 0: display_scale = DbcDatabaseManager.creature_display_info_get_by_id(self.current_display_id) if display_scale and display_scale.CreatureModelScale > 0: self.native_scale = display_scale.CreatureModelScale else: self.native_scale = 1 else: self.native_scale = self.creature_template.scale self.current_scale = self.native_scale if self.creature_template.equipment_id > 0: creature_equip_template = WorldDatabaseManager.creature_get_equipment_by_id( self.creature_template.equipment_id ) if creature_equip_template: self.set_virtual_item(0, creature_equip_template.equipentry1) self.set_virtual_item(1, creature_equip_template.equipentry2) self.set_virtual_item(2, creature_equip_template.equipentry3) self.fully_loaded = True
def set_display_id(self, display_id): super().set_display_id(display_id) if display_id <= 0 or not \ DbcDatabaseManager.creature_display_info_get_by_id(display_id): return self.set_uint32(UnitFields.UNIT_FIELD_DISPLAYID, self.current_display_id)
def mount(self, mount_display_id): if mount_display_id > 0 and DbcDatabaseManager.creature_display_info_get_by_id( mount_display_id): self.mount_display_id = mount_display_id self.unit_flags |= UnitFlags.UNIT_MASK_MOUNTED self.set_uint32(UnitFields.UNIT_FIELD_MOUNTDISPLAYID, self.mount_display_id) self.set_uint32(UnitFields.UNIT_FIELD_FLAGS, self.unit_flags)
def preload_model_info(self): if self.creature_template and self.creature_instance: if not self.model_info_loaded: creature_model_info = WorldDatabaseManager.creature_get_model_info( self.display_id) if creature_model_info: self.bounding_radius = creature_model_info.bounding_radius self.combat_reach = creature_model_info.combat_reach if self.creature_template.scale == 0: display_scale = DbcDatabaseManager.creature_display_info_get_by_id( self.display_id) if display_scale and display_scale.CreatureModelScale > 0: self.scale = display_scale.CreatureModelScale else: self.scale = 1 else: self.scale = self.creature_template.scale self.model_info_loaded = True
def set_display_id(self, display_id): if display_id > 0 and \ DbcDatabaseManager.creature_display_info_get_by_id(display_id): self.display_id = display_id self.set_uint32(UnitFields.UNIT_FIELD_DISPLAYID, self.display_id) self.set_dirty()