diff --git a/.eslintrc.json b/.eslintrc.json index 545ec52910..8fe9aedcb8 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -189,7 +189,7 @@ "max-len": [ "warn", { - "code": 120 + "code": 140 } ], "max-params": "warn", diff --git a/public/stylesheets/styles.css b/public/stylesheets/styles.css index 65880c8e5c..ecc9ded2b1 100644 --- a/public/stylesheets/styles.css +++ b/public/stylesheets/styles.css @@ -6545,7 +6545,7 @@ kbd { .c-enslaved-run-button__icon__sigil { position: absolute; top: -3.7rem; - right: -0.2rem; + right: -0.45rem; font-size: 14.8rem; transform: rotate(45deg); } diff --git a/src/components/DescriptionDisplay.vue b/src/components/DescriptionDisplay.vue index 3c8da71ffe..78d7adb630 100644 --- a/src/components/DescriptionDisplay.vue +++ b/src/components/DescriptionDisplay.vue @@ -26,6 +26,11 @@ export default { type: String, required: false, default: "" + }, + numberPrefixed: { + type: Boolean, + required: false, + default: false } }, data() { @@ -56,7 +61,7 @@ export default { const description = config?.description; // Descriptions in config entries are occasionally used both as standalone statements and mid-sentence, // so we explicitly capitalize them here because this only shows up in standalone places - const capitalize = str => str.charAt(0).toUpperCase() + str.slice(1); + const capitalize = str => (this.numberPrefixed ? str : str.charAt(0).toUpperCase() + str.slice(1)); this.isVisible = description !== undefined; if (!this.isVisible) return; diff --git a/src/components/EffectDisplay.vue b/src/components/EffectDisplay.vue index 2b9ccae876..e6eadf1403 100644 --- a/src/components/EffectDisplay.vue +++ b/src/components/EffectDisplay.vue @@ -32,7 +32,8 @@ export default { // Number.MAX_VALUE doesn't really matter here, but we need it because // undefined values are not allowed for data properties cap: Number.MAX_VALUE, - hasCap: false + hasCap: false, + effect: "" }; }, computed: { @@ -46,7 +47,10 @@ export default { return `${this.reachedCap && !this.ignoreCapped ? "Capped" : this.label}: `; }, effectDisplay() { - return this.formatEffect(this.reachedCap ? this.cap : this.effectValue); + if (this.effectValue || this.reachedCap) + // eslint-disable-next-line vue/no-side-effects-in-computed-properties + this.effect = this.formatEffect(this.reachedCap ? this.cap : this.effectValue); + return this.effect; } }, watch: { @@ -60,6 +64,7 @@ export default { this.isVisible = effect !== undefined && formatEffect !== undefined; if (!this.isVisible) return; this.formatEffect = formatEffect; + this.effectValue = undefined; if (isNumber(effect)) { this.effectValue = effect; diff --git a/src/components/modals/GlyphShowcasePanelEntry.vue b/src/components/modals/GlyphShowcasePanelEntry.vue index 0a9489084a..6d857583ed 100644 --- a/src/components/modals/GlyphShowcasePanelEntry.vue +++ b/src/components/modals/GlyphShowcasePanelEntry.vue @@ -80,10 +80,10 @@ export default { }; }, rarityStyle() { - // Rarity is handled differently here than usual because this is in contrast with the theme BG, not the glyph BG + // Glyph colors were dealt to contrast the background, but that should never be an issue const color = CosmeticGlyphTypes[this.glyph.type].ignoreRarityColor ? GlyphAppearanceHandler.getBorderColor(this.type) - : getRarity(this.glyph.strength)[Theme.current().isDark() ? "darkColor" : "lightColor"]; + : GlyphAppearanceHandler.getRarityColor(this.glyph.strength, this.type); return { color, "font-weight": "bold" diff --git a/src/components/modals/challenges/EternityChallengeStartModal.vue b/src/components/modals/challenges/EternityChallengeStartModal.vue index 7ccafe89bf..8f2986c9c3 100644 --- a/src/components/modals/challenges/EternityChallengeStartModal.vue +++ b/src/components/modals/challenges/EternityChallengeStartModal.vue @@ -42,6 +42,11 @@ export default { if (typeof conditionOfChallenge === "function") { conditionOfChallenge = conditionOfChallenge(); } + if (this.challenge._config.scrambleText) { + conditionOfChallenge = conditionOfChallenge + .replace("*", this.challenge._config.scrambleText[1]); + // eslint-disable-next-line vue/no-side-effects-in-computed-properties + } return `Inside this Eternity Challenge, ${conditionOfChallenge}`; } }, diff --git a/src/components/modals/prestige/BigCrunchModal.vue b/src/components/modals/prestige/BigCrunchModal.vue index cf20ef3138..f2126f23f5 100644 --- a/src/components/modals/prestige/BigCrunchModal.vue +++ b/src/components/modals/prestige/BigCrunchModal.vue @@ -17,7 +17,7 @@ export default { }, computed: { isFirstInfinity() { - return !PlayerProgress.infinityUnlocked(); + return !PlayerProgress.infinityUnlocked() && player.records.fullGameCompletions === 0; }, message() { const info = this.isFirstInfinity ? this.firstInfinityInfo : ``; diff --git a/src/components/modals/time-study-modal-preview/PseudoTimeStudyButton.vue b/src/components/modals/time-study-modal-preview/PseudoTimeStudyButton.vue index 44b2f1f9b5..14d94b611c 100644 --- a/src/components/modals/time-study-modal-preview/PseudoTimeStudyButton.vue +++ b/src/components/modals/time-study-modal-preview/PseudoTimeStudyButton.vue @@ -86,7 +86,8 @@ export default { methods: { update() { const study = this.study; - this.isUseless = Pelle.uselessTimeStudies.includes(this.study.id) && Pelle.isDoomed; + const isCurrentlyUseless = this.study.id === 192 && Pelle.isDoomed && PelleRifts.vacuum.milestones[1]; + this.isUseless = Pelle.isDoomed && (isCurrentlyUseless || Pelle.uselessTimeStudies.includes(this.study.id)); this.isBought = ForceBoughtState.getState(this.forceIsBought, study.isBought); this.doomedRealityStudy = study.type === TIME_STUDY_TYPE.DILATION && study.id === 6 && Pelle.isDoomed; }, @@ -133,7 +134,7 @@ export default { position: absolute; top: 0; left: 0; - background: rgba(255, 214, 11, 0.8); + background: rgb(255, 214, 11, 0.8); border-radius: var(--var-border-radius, inherit); animation: a-new-import 3s infinite; } diff --git a/src/components/tabs/antimatter-dimensions/AntimatterDimensionProgressBar.vue b/src/components/tabs/antimatter-dimensions/AntimatterDimensionProgressBar.vue index 5993219f88..50754cd32b 100644 --- a/src/components/tabs/antimatter-dimensions/AntimatterDimensionProgressBar.vue +++ b/src/components/tabs/antimatter-dimensions/AntimatterDimensionProgressBar.vue @@ -34,8 +34,8 @@ export default { // than normal and therefore default filling won't be meaningful. Since challenges get completed or abandoned from // the inside outwards, we show the goals in that priority as well. It only makes sense to check cel6 and not the // others because pre-cel3 completion it'll default to e4000 and cel4/5 don't have meaningful single goals - const inSpecialRun = Player.isInAntimatterChallenge || EternityChallenge.isRunning || player.dilation.active || - Laitela.isRunning; + const inSpecialRun = Player.isInAntimatterChallenge || EternityChallenge.isRunning || + (player.dilation.active && !Pelle.isDoomed) || Laitela.isRunning; if (inSpecialRun) { if (Player.isInAntimatterChallenge) { setProgress(Currency.antimatter.value, Player.antimatterChallenge.goal, "Percentage to Challenge goal"); diff --git a/src/components/tabs/antimatter-dimensions/ClassicAntimatterGalaxyRow.vue b/src/components/tabs/antimatter-dimensions/ClassicAntimatterGalaxyRow.vue index e0d72c6bad..e12ce70e0f 100644 --- a/src/components/tabs/antimatter-dimensions/ClassicAntimatterGalaxyRow.vue +++ b/src/components/tabs/antimatter-dimensions/ClassicAntimatterGalaxyRow.vue @@ -39,8 +39,10 @@ export default { buttonText() { if (this.lockText !== null) return this.lockText; const reset = []; - if (!Achievement(111).isUnlocked) reset.push("Dimensions"); - if (!Achievement(143).isUnlocked) reset.push("Dimension Boosts"); + // eslint-disable-next-line max-len + if (!Achievement(111).isEffectActive && !PelleUpgrade.dimBoostResetsNothing.canBeApplied) reset.push("Dimensions"); + // eslint-disable-next-line max-len + if (!Achievement(143).isEffectActive && !PelleUpgrade.galaxyNoResetDimboost.canBeApplied) reset.push("Dimension Boosts"); return reset.length === 0 ? `Increase the power of Tickspeed upgrades` : `Reset your ${makeEnumeration(reset)} to increase the power of Tickspeed upgrades`; diff --git a/src/components/tabs/antimatter-dimensions/ModernAntimatterDimensionsTab.vue b/src/components/tabs/antimatter-dimensions/ModernAntimatterDimensionsTab.vue index a39f8d89ee..4452d7dd61 100644 --- a/src/components/tabs/antimatter-dimensions/ModernAntimatterDimensionsTab.vue +++ b/src/components/tabs/antimatter-dimensions/ModernAntimatterDimensionsTab.vue @@ -86,11 +86,13 @@ export default { this.multiplierText = `Buy 10 Dimension purchase multiplier: ${formatX(this.buy10Mult, 2, 2)}`; if (!isSacrificeUnlocked) return; - this.isFullyAutomated = Autobuyer.sacrifice.isActive && Achievement(118).isUnlocked; - this.isSacrificeAffordable = Sacrifice.canSacrifice && !this.isFullyAutomated; + this.isFullyAutomated = Autobuyer.sacrifice.isActive && Achievement(118).isEffectActive && + Sacrifice.meetsNonBoostConditions; + this.isSacrificeAffordable = this.isFullyAutomated || Sacrifice.canSacrifice; this.currentSacrifice.copyFrom(Sacrifice.totalBoost); this.sacrificeBoost.copyFrom(Sacrifice.nextBoost); - this.disabledCondition = Sacrifice.disabledCondition; + this.disabledCondition = this.isFullyAutomated ? Sacrifice.nonBoostDisabledCondition + : Sacrifice.disabledCondition; const sacText = this.isSacrificeUnlocked ? ` | Dimensional Sacrifice multiplier: ${formatX(this.currentSacrifice, 2, 2)}` : ""; @@ -116,10 +118,10 @@ export default { class="o-primary-btn--sacrifice" @click="sacrifice" > - Dimensional Sacrifice ({{ formatX(sacrificeBoost, 2, 2) }}) - + Dimensional Sacrifice is Automated (Achievement 118) + Dimensional Sacrifice ({{ formatX(sacrificeBoost, 2, 2) }}) Dimensional Sacrifice Disabled ({{ disabledCondition }})