diff --git a/extensions/-SIPC-/recording.js b/extensions/-SIPC-/recording.js index c42863f4a2..c8a62369b5 100644 --- a/extensions/-SIPC-/recording.js +++ b/extensions/-SIPC-/recording.js @@ -91,6 +91,7 @@ recordedChunks = []; } stopRecordingAndDownload({ name }) { + name = Scratch.Cast.toString(name); if (!mediaRecorder) { console.error("Recording not started"); return; diff --git a/extensions/0832/rxFS.js b/extensions/0832/rxFS.js index a9b73e43c0..5720819487 100644 --- a/extensions/0832/rxFS.js +++ b/extensions/0832/rxFS.js @@ -170,6 +170,8 @@ } sync({ STR, STR2 }) { + STR = Scratch.Cast.toString(STR); + STR2 = Scratch.Cast.toString(STR2); str = btoa(unescape(encodeURIComponent(STR))); str2 = btoa(unescape(encodeURIComponent(STR2))); if (rxFSsy.indexOf(str) + 1 == 0) { @@ -178,6 +180,7 @@ } start({ STR }) { + STR = Scratch.Cast.toString(STR); str = btoa(unescape(encodeURIComponent(STR))); if ( !(str.charAt(str.length - 1) == "/") && @@ -189,6 +192,7 @@ } open({ STR }) { + STR = Scratch.Cast.toString(STR); return decodeURIComponent( escape( atob( @@ -201,6 +205,7 @@ } del({ STR }) { + STR = Scratch.Cast.toString(STR); str = btoa(unescape(encodeURIComponent(STR))); const index = rxFSsy.indexOf(str); if (index !== -1) { @@ -210,11 +215,14 @@ } file({ STR, STR2 }) { + STR = Scratch.Cast.toString(STR); + STR2 = Scratch.Cast.toString(STR2); rxFSfi[rxFSsy.indexOf(btoa(unescape(encodeURIComponent(STR)))) + 1 - 1] = btoa(unescape(encodeURIComponent(STR2))); } search({ STR }) { + STR = Scratch.Cast.toString(STR); Search = ""; i = 0; str = btoa(unescape(encodeURIComponent(STR))); @@ -239,6 +247,7 @@ } webin({ STR }) { + STR = Scratch.Cast.toString(STR); return Scratch.fetch(STR) .then((response) => { return response.text(); @@ -250,6 +259,7 @@ } in({ STR }) { + STR = Scratch.Cast.toString(STR); rxFSfi = STR.slice(0, STR.indexOf("|")).split(","); rxFSsy = STR.slice(STR.indexOf("|") + 1, STR.length).split(","); } diff --git a/extensions/0832/rxFS2.js b/extensions/0832/rxFS2.js index bacd6883d9..e6d41e5be8 100644 --- a/extensions/0832/rxFS2.js +++ b/extensions/0832/rxFS2.js @@ -201,6 +201,8 @@ } sync({ STR, STR2 }) { + STR = Scratch.Cast.toString(STR); + STR2 = Scratch.Cast.toString(STR2); str = encodeURIComponent(STR); str2 = encodeURIComponent(STR2); if (rxFSsy.indexOf(str) + 1 == 0) { @@ -209,6 +211,7 @@ } start({ STR }) { + STR = Scratch.Cast.toString(STR); str = encodeURIComponent(STR); if ( !(str.charAt(str.length - 1) == "/") && @@ -220,12 +223,15 @@ } open({ STR }) { + STR = Scratch.Cast.toString(STR); return decodeURIComponent( rxFSfi[rxFSsy.indexOf(encodeURIComponent(STR)) + 1 - 1] ); } del({ STR }) { + STR = Scratch.Cast.toString(STR); + STR2 = Scratch.Cast.toString(STR2); str = encodeURIComponent(STR); const index = rxFSsy.indexOf(str); if (index !== -1) { @@ -235,11 +241,14 @@ } folder({ STR, STR2 }) { + STR = Scratch.Cast.toString(STR); + STR2 = Scratch.Cast.toString(STR2); rxFSfi[rxFSsy.indexOf(encodeURIComponent(STR)) + 1 - 1] = encodeURIComponent(STR2); } search({ STR }) { + STR = Scratch.Cast.toString(STR); Search = ""; i = 0; str = encodeURIComponent(STR); @@ -252,6 +261,7 @@ } list({ STR }) { + STR = Scratch.Cast.toString(STR); Search = ""; i = 0; str = encodeURIComponent(STR); @@ -264,6 +274,7 @@ } webin({ STR }) { + STR = Scratch.Cast.toString(STR); return Scratch.fetch(STR) .then((response) => { return response.text(); @@ -275,6 +286,7 @@ } in({ STR }) { + STR = Scratch.Cast.toString(STR); rxFSfi = STR.slice(0, STR.indexOf("|")).split(","); rxFSsy = STR.slice(STR.indexOf("|") + 1, STR.length).split(","); } diff --git a/extensions/CST1229/images.js b/extensions/CST1229/images.js index 346517eeb9..c6fbdc4586 100644 --- a/extensions/CST1229/images.js +++ b/extensions/CST1229/images.js @@ -273,8 +273,8 @@ img.updateVisible(false); img.skin = this.render._allSkins[IMG]; - img.updatePosition([Number(X) || 0, Number(Y) || 0]); - img.updateScale([Number(XSCALE) || 0, Number(YSCALE) || 0]); + img.updatePosition([Scratch.Cast.toNumber(X) || 0, Scratch.Cast.toNumber(Y) || 0]); + img.updateScale([Scratch.Cast.toNumber(XSCALE) || 0, Scratch.Cast.toNumber(YSCALE) || 0]); this.render.penStamp(this.render._penSkinId, drawableID); } catch (e) { console.error("Error drawing image:", e); diff --git a/extensions/CST1229/zip.js b/extensions/CST1229/zip.js index e97e309423..77f643fe1f 100644 --- a/extensions/CST1229/zip.js +++ b/extensions/CST1229/zip.js @@ -625,8 +625,8 @@ /// Utilities normalize(origin, path) { - path = path.toString().replaceAll(/\\/g, "/"); - origin = origin.toString().replaceAll(/\\/g, "/"); + path = Scratch.Cast.toString(path).replaceAll(/\\/g, "/"); + origin = Scratch.Cast.toString(origin).replaceAll(/\\/g, "/"); if (path.startsWith("/")) origin = ""; else if (!origin.endsWith("/")) origin += "/"; diff --git a/extensions/CubesterYT/WindowControls.js b/extensions/CubesterYT/WindowControls.js index ff1ea7d3c9..d535d7aa19 100644 --- a/extensions/CubesterYT/WindowControls.js +++ b/extensions/CubesterYT/WindowControls.js @@ -5,7 +5,7 @@ // Original: BlueDome77 // License: MIT -// Version V.1.0.0 +// Version V.1.0.1 (function (Scratch) { "use strict"; @@ -370,10 +370,13 @@ } moveTo(args) { + args.X = Scratch.Cast.toNumber(args.X); + args.Y = Scratch.Cast.toNumber(args.Y); window.moveTo(args.X, args.Y); Scratch.vm.runtime.requestRedraw(); } moveToPresets(args) { + args.PRESETS = Scratch.Cast.toString(args.PRESETS); if (args.PRESETS == "center") { const left = (screen.width - window.outerWidth) / 2; const top = (screen.height - window.outerHeight) / 2; @@ -412,19 +415,23 @@ Scratch.vm.runtime.requestRedraw(); } changeX(args) { + args.X = Scratch.Cast.toNumber(args.X); window.moveBy(args.X, 0); Scratch.vm.runtime.requestRedraw(); } setX(args) { + args.X = Scratch.Cast.toNumber(args.X); const currentY = window.screenY; window.moveTo(args.X, currentY); Scratch.vm.runtime.requestRedraw(); } changeY(args) { + args.X = Scratch.Cast.toNumber(args.Y); window.moveBy(0, args.Y); Scratch.vm.runtime.requestRedraw(); } setY(args) { + args.Y = Scratch.Cast.toNumber(args.Y); const currentX = window.screenX; window.moveTo(currentX, args.Y); Scratch.vm.runtime.requestRedraw(); @@ -436,10 +443,13 @@ return window.screenTop; } resizeTo(args) { + args.W = Scratch.Cast.toNumber(args.W); + args.H = Scratch.Cast.toNumber(args.H); window.resizeTo(args.W, args.H); Scratch.vm.runtime.requestRedraw(); } resizeToPresets(args) { + args.PRESETS = Scratch.Cast.toString(args.PRESETS); if (args.PRESETS == "480x360") { window.resizeTo( 480 + (window.outerWidth - window.innerWidth), @@ -484,19 +494,23 @@ Scratch.vm.runtime.requestRedraw(); } changeW(args) { + args.W = Scratch.Cast.toNumber(args.W); window.resizeBy(args.W, 0); Scratch.vm.runtime.requestRedraw(); } setW(args) { + args.W = Scratch.Cast.toNumber(args.W); const currentH = window.outerHeight; window.resizeTo(args.W, currentH); Scratch.vm.runtime.requestRedraw(); } changeH(args) { + args.H = Scratch.Cast.toNumber(args.H); window.resizeBy(0, args.H); Scratch.vm.runtime.requestRedraw(); } setH(args) { + args.H = Scratch.Cast.toNumber(args.H); const currentW = window.outerWidth; window.resizeTo(currentW, args.H); Scratch.vm.runtime.requestRedraw(); @@ -535,7 +549,7 @@ return document.hasFocus(); } changeTitleTo(args) { - document.title = args.TITLE; + document.title = Scratch.Cast.toString(args.TITLE); } windowTitle() { return document.title; diff --git a/extensions/DT/cameracontrols.js b/extensions/DT/cameracontrols.js index 672c468cdf..39d4ab6b1c 100644 --- a/extensions/DT/cameracontrols.js +++ b/extensions/DT/cameracontrols.js @@ -505,53 +505,53 @@ } setBoth(args, util) { - cameraX = +args.x; - cameraY = +args.y; + cameraX = Scratch.Cast.toNumber(args.x) || 0; + cameraY = Scratch.Cast.toNumber(args.y) || 0; updateCamera(); vm.runtime.requestRedraw(); } changeZoom(args, util) { - cameraZoom += +args.val; + cameraZoom += Scratch.Cast.toNumber(args.val) || 0; updateCamera(); vm.runtime.requestRedraw(); } setZoom(args, util) { - cameraZoom = +args.val; + cameraZoom = Scratch.Cast.toNumber(args.val) || 0; updateCamera(); vm.runtime.requestRedraw(); } changeX(args, util) { - cameraX += +args.val; + cameraX += Scratch.Cast.toNumber(args.val) || 0; updateCamera(); vm.runtime.requestRedraw(); } setX(args, util) { - cameraX = +args.val; + cameraX = Scratch.Cast.toNumber(args.val) || 0; updateCamera(); vm.runtime.requestRedraw(); } changeY(args, util) { - cameraY += +args.val; + cameraY += Scratch.Cast.toNumber(args.val) || 0; updateCamera(); vm.runtime.requestRedraw(); } setY(args, util) { - cameraY = +args.val; + cameraY = Scratch.Cast.toNumber(args.val) || 0; updateCamera(); vm.runtime.requestRedraw(); } setDirection(args, util) { - cameraDirection = +args.val; + cameraDirection = Scratch.Cast.toNumber(args.val) || 0; updateCamera(); vm.runtime.requestRedraw(); } rotateCW(args, util) { - cameraDirection = cameraDirection + +args.val; + cameraDirection = cameraDirection + (Scratch.Cast.toNumber(args.val) || 0); updateCamera(); vm.runtime.requestRedraw(); } rotateCCW(args, util) { - cameraDirection = cameraDirection - +args.val; + cameraDirection = cameraDirection - (Scratch.Cast.toNumber(args.val) || 0); updateCamera(); vm.runtime.requestRedraw(); } diff --git a/extensions/JeremyGamer13/tween.js b/extensions/JeremyGamer13/tween.js index 7662cd8c40..e743390bc8 100644 --- a/extensions/JeremyGamer13/tween.js +++ b/extensions/JeremyGamer13/tween.js @@ -576,6 +576,7 @@ } tweenProperty(args, util) { + args.PROPERTY = Cast.toString(args.PROPERTY); let currentValue = 0; if (args.PROPERTY === "x position") { currentValue = util.target.x; diff --git a/extensions/Lily/LooksPlus.js b/extensions/Lily/LooksPlus.js index 2a7bc3bfe5..69a10b4955 100644 --- a/extensions/Lily/LooksPlus.js +++ b/extensions/Lily/LooksPlus.js @@ -381,7 +381,7 @@ } const drawableID = target.drawableID; const layerOrder = target.getLayerOrder(); - const newLayer = args.LAYER - layerOrder; + const newLayer = Scratch.Cast.toNumber(args.LAYER) - layerOrder; renderer.setDrawableOrder(drawableID, newLayer, "sprite", true); } @@ -466,7 +466,7 @@ return; } - const contentType = args.TYPE; + const contentType = Scratch.Cast.toString(args.TYPE); const content = args.CONTENT; if (contentType === "SVG") { try { @@ -532,13 +532,13 @@ return ""; } - const costume = target.sprite.costumes[args.COSTUME - 1]; + const costume = target.sprite.costumes[Scratch.Cast.toNumber(args.COSTUME) - 1]; if (!costume) { console.error("Target costume does not exist"); return ""; } - const format = args.CONTENT; + const format = Scratch.Cast.toString(args.CONTENT); if (format === "content") { return costume.asset.decodeText(); } else { diff --git a/extensions/Lily/MoreTimers.js b/extensions/Lily/MoreTimers.js index 6c90e2ef28..a65b8e902a 100644 --- a/extensions/Lily/MoreTimers.js +++ b/extensions/Lily/MoreTimers.js @@ -207,6 +207,8 @@ } whenTimerOp(args) { + args.TIMER = Scratch.Cast.toString(args.TIMER); + args.NUM = Scratch.Cast.toNumber(args.NUM); if (!timers[args.TIMER]) return false; const value = timerValue(timers[args.TIMER]); if (args.OP === ">") return value > args.NUM; @@ -215,6 +217,7 @@ } startResetTimer(args) { + args.TIMER = Scratch.Cast.toString(args.TIMER); timers[args.TIMER] = { startTime: Math.floor(performance.now()), pauseTime: 0, @@ -223,6 +226,7 @@ } pauseTimer(args) { + args.TIMER = Scratch.Cast.toString(args.TIMER); const timer = timers[args.TIMER]; if (!timer) return; timer.pauseTime = timerValue(timer) * 1000; @@ -230,6 +234,7 @@ } resumeTimer(args) { + args.TIMER = Scratch.Cast.toString(args.TIMER); const timer = timers[args.TIMER]; if (!timer) return; if (timer.paused === false) return; @@ -238,11 +243,13 @@ } valueOfTimer(args) { + args.TIMER = Scratch.Cast.toString(args.TIMER); if (!timers[args.TIMER]) return ""; return timerValue(timers[args.TIMER]); } setTimer(args) { + args.TIMER = Scratch.Cast.toString(args.TIMER); timers[args.TIMER] = { paused: false, startTime: Math.floor(performance.now()), @@ -251,6 +258,7 @@ } changeTimer(args) { + args.TIMER = Scratch.Cast.toString(args.TIMER); if (!timers[args.TIMER]) this.startResetTimer(args); timers[args.TIMER].pauseTime += Scratch.Cast.toNumber(args.NUM) * 1000; } @@ -264,6 +272,7 @@ } timerExists(args) { + args.TIMER = Scratch.Cast.toString(args.TIMER); return !!timers[args.TIMER]; } diff --git a/extensions/Lily/SoundExpanded.js b/extensions/Lily/SoundExpanded.js index 00e8c32548..2322abb3e8 100644 --- a/extensions/Lily/SoundExpanded.js +++ b/extensions/Lily/SoundExpanded.js @@ -595,7 +595,7 @@ if (len === 0) { return -1; } - const index = this._getSoundIndexByName(soundName, util); + const index = this._getSoundIndexByName(Scratch.Cast.oString(soundName), util); if (index !== -1) { return index; }