Index: binaries/data/mods/mod/gui/modmod/modmod.js =================================================================== --- binaries/data/mods/mod/gui/modmod/modmod.js +++ binaries/data/mods/mod/gui/modmod/modmod.js @@ -31,7 +31,7 @@ /** * Version checks in mod dependencies can use these operators. */ -var g_CompareVersion = /(<=|>=|<|>|=)/; +const g_CompareVersion = /(<=|>=|<|>|=)/; /** * Folder names of all mods that are or can be launched. @@ -57,7 +57,7 @@ if (g_RequiredProperties.every(prop => mods[folder][prop] !== undefined)) g_Mods[folder] = mods[folder]; else - warn("Skipping mod '" + mod + "' which does not define '" + property + "'."); + warn("Skipping mod '" + folder + "' which does not define all required properties."); deepfreeze(g_Mods); @@ -166,10 +166,7 @@ for (let i = 0; i < g_ModsEnabled.length; ++i) if (!areDependenciesMet(g_ModsEnabled[i])) - { - g_ModsDisabled.push(g_ModsEnabled.splice(i, 1)[0]); - --i; - } + g_ModsDisabled.push(g_ModsEnabled.splice(i--, 1)[0]); modsEnabledList.selected = Math.min(pos, g_ModsEnabled.length - 1); @@ -289,7 +286,7 @@ } /** - * @param dependency is a mod name or a mod version comparison. + * @param dependency is a mod name or a mod version comparison, such as "0ad<=0.0.23". */ function isDependencyMet(dependency) { @@ -298,7 +295,7 @@ return g_ModsEnabled.some(folder => g_Mods[folder].name == name && - (!operator || versionSatisfied(g_Mods[folder].version, operator, version))); + (!operator || versionSatisfied(g_Mods[folder].version, operator[0], version))); } /** @@ -319,7 +316,7 @@ { let diff = +versionList1[i] - +versionList2[i]; if (isNaN(diff)) - continue; + return false; if (gt && diff > 0 || lt && diff < 0) return true; @@ -344,7 +341,7 @@ { let dependencies = {}; for (let folder of g_ModsEnabled) - dependencies[folder] = g_Mods[folder].dependencies.map(d => d.split()[0]); + dependencies[folder] = g_Mods[folder].dependencies.map(d => d.split(g_CompareVersion)[0]); g_ModsEnabled.sort((folder1, folder2) => dependencies[folder1].indexOf(g_Mods[folder2].name) != -1 ? 1 :