diff --git a/assets/scripts/core/game-scene.js b/assets/scripts/core/game-scene.js
index 9fdead19..ca854cd0 100644
--- a/assets/scripts/core/game-scene.js
+++ b/assets/scripts/core/game-scene.js
@@ -4231,7 +4231,7 @@ this._menuUpdateLogBtn = this.add.image(screenWidth - 30 - 50, 33, "GJ_WebSheet"
onDragStart(ptr);
if (isComingSoonPage()) return;
const levelId = window.currentlevel?.[2];
- if (getLevelCoinRequirement(levelId) > (Number(window._totalsecretcoins) || 0)) return;
+ if (!window.unlockAllLevels && getLevelCoinRequirement(levelId) > (Number(window._totalsecretcoins) || 0)) return;
this.tweens.killTweensOf(cardBounceContainer, "scale");
this.tweens.add({ targets: cardBounceContainer, scale: 1.26, duration: 300, ease: "Bounce.Out" });
});
@@ -4295,7 +4295,7 @@ this._menuUpdateLogBtn = this.add.image(screenWidth - 30 - 50, 33, "GJ_WebSheet"
const requiredCoins = getLevelCoinRequirement(window.currentlevel?.[2]);
const collectedCoins = Number(window._totalsecretcoins) || 0;
- if (requiredCoins > collectedCoins) {
+ if (!window.unlockAllLevels && requiredCoins > collectedCoins) {
return;
}
@@ -4358,7 +4358,7 @@ this._menuUpdateLogBtn = this.add.image(screenWidth - 30 - 50, 33, "GJ_WebSheet"
const levelId = lvl[2] || "level_1";
const requiredCoins = getLevelCoinRequirement(levelId);
const collectedCoins = Number(window._totalsecretcoins) || 0;
- const levellocked = requiredCoins > collectedCoins;
+ const levellocked = !window.unlockAllLevels && requiredCoins > collectedCoins;
const levelDifficultyMap = {
"level_1": "diffIcon_01_btn_001",
"level_2": "diffIcon_01_btn_001",
@@ -5097,6 +5097,9 @@ _buildSettingsPopup() {
}
var infotextstrings = {
+ "Unlock All Levels": "Lets you play every main level without collecting the secret coins first.",
+ "No Wave Trail": "Hides the trail behind the wave. Was previously tied to Low Detail Mode.",
+ "Static Colors": "Skips recoloring objects on frames where their color has not changed. Speeds up busy levels, but colors may lag behind on levels that use pulse triggers.",
"Enable Portal Guide": "Enables extra indicators on portals.",
"Enable Orb Guide": "Enables extra indicators on orbs.",
"Practice Music Bypass": "Plays normal mode music in practice mode.",
@@ -5343,6 +5346,14 @@ _buildSettingsPopup() {
false
);
+ createToggle(container, column2X, startY, "Unlock All Levels",
+ () => window.unlockAllLevels,
+ (v) => window.unlockAllLevels = v,
+ null,
+ 25,
+ true,
+ "Unlock All Levels"
+ );
createToggle(container, column2X, startY + spacingY, "Practice Music Sync",
() => window.practiceMusicSync,
(v) => {
@@ -5487,6 +5498,30 @@ _buildSettingsPopup() {
};
const buildPerformancePage = (container) => {
+ createToggle(container, column1X, startY + spacingY, "Low Detail Mode",
+ () => window.enableLDM,
+ (v) => window.enableLDM = v,
+ null,
+ 25,
+ true,
+ "Low Detail Mode"
+ );
+ createToggle(container, column1X, startY + (spacingY * 2), "Static Colors",
+ () => window.optimizeColors,
+ (v) => window.optimizeColors = v,
+ null,
+ 25,
+ true,
+ "Static Colors"
+ );
+ createToggle(container, column1X, startY + (spacingY * 3), "No Wave Trail",
+ () => window.noWaveTrail,
+ (v) => window.noWaveTrail = v,
+ null,
+ 25,
+ true,
+ "No Wave Trail"
+ );
createNumberInput(container, column1X, startY, "Cull Distance",
() => (typeof window.cullDistance !== 'undefined' ? window.cullDistance : 3),
(v) => window.cullDistance = v,
@@ -5556,6 +5591,9 @@ _buildSettingsPopup() {
cullDistance: window.cullDistance,
settingInfoText: window.settingInfoText || {},
enableLDM: window.enableLDM,
+ optimizeColors: !!window.optimizeColors,
+ noWaveTrail: !!window.noWaveTrail,
+ unlockAllLevels: !!window.unlockAllLevels,
};
localStorage.setItem("gd_settings", JSON.stringify(settings));
localStorage.setItem("gd_useDirectInternet", String(!!window.useDirectInternet));
@@ -5586,6 +5624,9 @@ _buildSettingsPopup() {
enableOrbGuide: false,
enableMiniIcon: false,
enableLDM: false,
+ optimizeColors: false,
+ noWaveTrail: false,
+ unlockAllLevels: false,
cullDistance: 3
};
@@ -5617,6 +5658,9 @@ _buildSettingsPopup() {
window.useDirectInternet = !!data.useDirectInternet;
localStorage.setItem("gd_useDirectInternet", String(!!window.useDirectInternet));
window.enableLDM = !!data.enableLDM;
+ window.optimizeColors = !!data.optimizeColors;
+ window.noWaveTrail = !!data.noWaveTrail;
+ window.unlockAllLevels = !!data.unlockAllLevels;
}
_buildMacroPopup() {
if (this._macroPopup) return;
@@ -9599,26 +9643,6 @@ _applyMirrorEffect() {
this._showwippopup();
});
- const ldmX = _0x2a115c + 160;
- const ldmY = 495;
- const ldmCheckOffset = -120;
- const ldmTextOffset = -80;
-
- var ldmIsOn = window.enableLDM;
- var ldmCheckTexture = ldmIsOn ? "GJ_checkOn_001.png" : "GJ_checkOff_001.png";
- var ldmCheck = this.add.image(ldmX + ldmCheckOffset, ldmY, "GJ_GameSheet03", ldmCheckTexture).setScale(0.8).setInteractive();
- var ldmTxt = this.add.bitmapText(ldmX + ldmTextOffset, ldmY, "bigFont", "Low Detail Mode", 25).setOrigin(0, 0.5);
- this._helplayer.add([ldmCheck, ldmTxt]);
-
- this._makeBouncyButton(ldmCheck, 0.8, () => {
- var current = window.enableLDM;
- window.enableLDM = !current;
- var newTexture = window.enableLDM ? "GJ_checkOn_001.png" : "GJ_checkOff_001.png";
- ldmCheck.setTexture("GJ_GameSheet03", newTexture);
- if (this._saveSettings) {
- this._saveSettings();
- }
- });
const reqbtnX = _0x2a115c + 655;
const reqbtnY = 495;
diff --git a/assets/scripts/core/level.js b/assets/scripts/core/level.js
index 087b3249..203e1a6a 100644
--- a/assets/scripts/core/level.js
+++ b/assets/scripts/core/level.js
@@ -3335,6 +3335,7 @@ window.LevelObject = class LevelObject {
return triggered;
}
resetColorTriggers() {
+ this._lastChanHex = {};
this._colorTriggerIdx = 0;
this._touchColorTriggerActivated = new Set();
}
@@ -3541,6 +3542,9 @@ window.LevelObject = class LevelObject {
}
}
updateObjectDebugIds() {
+ const _want = !!(window.showObjectIds && !window.enableLDM);
+ if (this._debugIdsShown === _want) return;
+ this._debugIdsShown = _want;
if (window.showObjectIds && !window.enableLDM) {
if (this._debugIdTextsList && this._debugIdTextsList.length > 0) {
for (const idText of this._debugIdTextsList) {
@@ -4263,10 +4267,14 @@ window.LevelObject = class LevelObject {
}
applyColorChannels(colorManager) {
+ const _skipStatic = !!window.optimizeColors;
+ if (!this._lastChanHex) this._lastChanHex = {};
for (const chId in this._colorChannelSprites) {
const sprites = this._colorChannelSprites[chId];
if (!sprites || !sprites.length) continue;
const hex = colorManager.getHex(parseInt(chId, 10));
+ if (_skipStatic && this._lastChanHex[chId] === hex) continue;
+ this._lastChanHex[chId] = hex;
for (const spr of sprites) {
if (!spr || !spr.active) continue;
if (spr._cantColor) continue;
diff --git a/assets/scripts/core/player.js b/assets/scripts/core/player.js
index 0ee23f03..7f3059fb 100644
--- a/assets/scripts/core/player.js
+++ b/assets/scripts/core/player.js
@@ -1605,8 +1605,14 @@ class PlayerObject {
this._shipDragActive = false;
this._streak.stop();
this._streak.reset();
- this._waveTrail.stop();
- this._waveTrail.reset();
+ if (window.noWaveTrail || this.p.isDead) {
+ this._waveTrail.stop();
+ this._waveTrail.reset();
+ } else {
+ this._waveTrail.setPosition(this._scene._playerWorldX, b(this.p.y));
+ this._waveTrail.setMiniScale(this.p.isMini);
+ this._waveTrail.update(_0x5af874);
+ }
return;
}
@@ -1641,8 +1647,13 @@ class PlayerObject {
this._waveTrail.setPosition(_0x119eb7, _0x519d38);
}
this._streak.update(_0x5af874);
- this._waveTrail.setMiniScale(this.p.isMini);
- this._waveTrail.update(_0x5af874);
+ if (window.noWaveTrail) {
+ this._waveTrail.stop();
+ this._waveTrail.reset();
+ } else {
+ this._waveTrail.setMiniScale(this.p.isMini);
+ this._waveTrail.update(_0x5af874);
+ }
const _0x3d69d2 = this.p.isFlying || this.p.isUfo;
if (_0x3d69d2 && !this._flyParticleActive) {
this._flyParticleEmitter.start();
@@ -3809,8 +3820,8 @@ if (this.p.isFlying || this.p.isUfo) {
_updateUfoJump(_dt) {
const _ufoJump = this.p.isMini ? 13.296 : 13.742;
const _ufoMini = window.ufoMiniDiv !== undefined ? window.ufoMiniDiv : 0.85;
- const _ufoFastBase = window.ufoFastGrav !== undefined ? window.ufoFastGrav : 0.525;
- const _ufoSlowBase = window.ufoSlowGrav !== undefined ? window.ufoSlowGrav : 0.425;
+ const _ufoFastBase = window.ufoFastGrav !== undefined ? window.ufoFastGrav : 0.540121;
+ const _ufoSlowBase = window.ufoSlowGrav !== undefined ? window.ufoSlowGrav : 0.450101;
const _ufoThreshold = 3.832796;
const _ufoFastGrav = this.p.isMini ? _ufoFastBase / _ufoMini : _ufoFastBase;
const _ufoSlowGrav = this.p.isMini ? _ufoSlowBase / _ufoMini : _ufoSlowBase;
diff --git a/index.html b/index.html
index 8d033615..7c54307b 100644
--- a/index.html
+++ b/index.html
@@ -40,12 +40,12 @@
-
-
+
+
-
+