public static void SetVersion(ClientVersionBuild version) { if (Build == version) { return; } Build = version; _expansion = GetExpansion(version); Opcodes.InitializeOpcodeDictionary(); Handler.ResetHandlers(); UpdateFields.ResetUFDictionaries(); ClientVersionBuild tmpFallback = FallbackVersionDefiningBuild(VersionDefiningBuild); while (tmpFallback != ClientVersionBuild.Zero) { try { var asm = Assembly.Load($"WowPacketParserModule.{tmpFallback}"); Trace.WriteLine($"Loading module WowPacketParserModule.{tmpFallback}.dll (fallback)"); Handler.LoadHandlers(asm, tmpFallback); } catch (FileNotFoundException) { } tmpFallback = FallbackVersionDefiningBuild(tmpFallback); } try { var asm = Assembly.Load($"WowPacketParserModule.{VersionDefiningBuild}"); Trace.WriteLine($"Loading module WowPacketParserModule.{VersionDefiningBuild}.dll"); HotfixStoreMgr.LoadStores(asm); Handler.LoadHandlers(asm, VersionDefiningBuild); BattlenetHandler.LoadBattlenetHandlers(asm); // This is a huge hack to handle the abnormal situation that appeared with builds 6.0 and 6.1 having mostly the same packet structures if (!UpdateFields.LoadUFDictionaries(asm, version)) { UpdateFields.LoadUFDictionaries(asm, VersionDefiningBuild); } } catch (FileNotFoundException) { // No dll found, try to load the data in the executable itself UpdateFields.LoadUFDictionaries(Assembly.GetExecutingAssembly(), Build); } }