Skip to content

Commit 30c38f7

Browse files
committed
Fix sloppy spell school & sphere assessme
1 parent f192719 commit 30c38f7

File tree

3 files changed

+27
-24
lines changed

3 files changed

+27
-24
lines changed

MagicMaster/5.0.3/MagicMaster.js

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -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

121122
var 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)));

MagicMaster/MagicMaster.js

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -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

121122
var 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)));

MagicMaster/magicMaster.js

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -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

121122
var 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

Comments
 (0)