Index: ps/trunk/binaries/data/mods/public/simulation/components/AuraManager.js =================================================================== --- ps/trunk/binaries/data/mods/public/simulation/components/AuraManager.js +++ ps/trunk/binaries/data/mods/public/simulation/components/AuraManager.js @@ -105,16 +105,25 @@ data.count = 1; let cache = this.templateModificationsCache.get(value).get(player); - if (!cache.get(classes)) - cache.set(classes, new Map()); - if (!cache.get(classes).get(key)) - cache.get(classes).set(key, { "add": 0, "multiply": 1 }); + // Do not use the classes array from the JSON file directly, since that is not synchronized + // See MatchesClassList for supported classes formats + for (let className of classes) + { + if (Array.isArray(className)) + className = className.join("+"); + + if (!cache.get(className)) + cache.set(className, new Map()); + + if (!cache.get(className).get(key)) + cache.get(className).set(key, { "add": 0, "multiply": 1 }); - if (data.add) - cache.get(classes).get(key).add += data.add; - if (data.multiply) - cache.get(classes).get(key).multiply *= data.multiply; + if (data.add) + cache.get(className).get(key).add += data.add; + if (data.multiply) + cache.get(className).get(key).multiply *= data.multiply; + } Engine.PostMessage(SYSTEM_ENTITY, MT_TemplateModification, { "player": player, @@ -181,9 +190,16 @@ if (data.count > 0) return; - this.templateModificationsCache.get(value).get(player).get(classes).delete(key); - if (this.templateModificationsCache.get(value).get(player).get(classes).size == 0) - this.templateModificationsCache.get(value).get(player).delete(classes); + for (let className of classes) + { + if (Array.isArray(className)) + className = className.join("+"); + + this.templateModificationsCache.get(value).get(player).get(className).delete(key); + + if (this.templateModificationsCache.get(value).get(player).get(className).size == 0) + this.templateModificationsCache.get(value).get(player).delete(className); + } // clean up the object p.delete(key); @@ -227,9 +243,10 @@ var usedKeys = new Set(); var add = 0; var multiply = 1; + for (let [className, mods] of cache) { - if (!MatchesClassList(classes, className)) + if (!MatchesClassList(classes, [className])) continue; for (let [key, mod] of mods)