@@ -115,7 +115,8 @@ API_Meta.MagicMaster={offset:Number.MAX_SAFE_INTEGER,lineCount:-1};
115115 * v5.0.1 24/09/2025 Added the --noWaitMsg command to silence the immediate "Please Wait, gathering data..."
116116 * messages.
117117 * v5.0.2 05/10/2025 Add (temporary?) fix to API button cmd / macro pair action.
118- * v5.0.3 17/10/2025 Fixed crash on calling !magic without any command
118+ * v5.0.3 17/10/2025 Fixed crash on calling !magic without any command. Fixed sloppy checking of spell
119+ * schools and spheres.
119120 */
120121
121122var MagicMaster = (function() { // eslint-disable-line no-unused-vars
@@ -1987,9 +1988,9 @@ var MagicMaster = (function() { // eslint-disable-line no-unused-vars
19871988 spell = args[5],
19881989 charCS = getCharacter(tokenID),
19891990 casterDef = caster(charCS, (isMU ? 'MU' : 'PR')),
1990- reAllowedSpells = { sps : reClassSpecs.majorsphere,
1991- spm : reClassSpecs.minorsphere,
1992- spb : reClassSpecs.bannedsphere,
1991+ reAllowedSpells = { majorsphere : reClassSpecs.majorsphere,
1992+ minorsphere : reClassSpecs.minorsphere,
1993+ bannedsphere : reClassSpecs.bannedsphere,
19931994 },
19941995 allowAll = state.MagicMaster.spellRules.allowAll,
19951996
@@ -2018,12 +2019,12 @@ var MagicMaster = (function() { // eslint-disable-line no-unused-vars
20182019 casterData = casterSpec.obj[1].body;
20192020 casterData = (casterData.match(reClassData) || ['',''])[1];
20202021 casterData = parseData( casterData, reAllowedSpells );
2021- majorSpells = casterData.sps.dbName();
2022- minorSpells = casterData.spm.dbName();
2023- bannedSpells = casterData.spb.dbName();
2022+ majorSpells = casterData.sps.dbName().split('|') ;
2023+ minorSpells = casterData.spm.dbName().split('|') ;
2024+ bannedSpells = casterData.spb.dbName().split('|') ;
20242025
20252026 return _.reduce( (isMU ? school : sphere), (r,s) => {
2026- banned = !(s === 'any' || ((isMU || majorSpells.includes('any') || majorSpells.includes(s) || (minorSpells.includes(s) && spellData. level < 4)) && (isPR || !bannedSpells.includes(s))));
2027+ banned = !(s === 'any' || ((isMU || majorSpells.includes('any') || majorSpells.some(sph => s.startsWith(sph)) || (minorSpells.some(sph => s.startsWith(sph)) && level < 4)) && (isPR || !bannedSpells.includes(s))));
20272028 specialist = isMU && majorSpells.includes(s);
20282029 specStd = isMU && !majorSpells.includes('any');
20292030 return ((!allowAll && (!r || banned)) ? 0 : (specialist ? 3 : (specStd ? 2 : r)));
0 commit comments