Merge branch 'master' into doomed-achievs-and-reality-study

This commit is contained in:
L4R5W 2022-02-09 17:13:44 +01:00 committed by GitHub
commit e43e98bfa1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
17 changed files with 91 additions and 51 deletions

View File

@ -47,7 +47,7 @@ Vue.component("ra-tab", {
scalingUpgradeVisible: () => Math.clampMax(Math.floor(Ra.pets.v.level / 5), 4) > 0,
scalingUpgradeText: level => {
const triadCount = Math.clampMax(Math.floor(level / 5), 4);
return `You have unlocked ${quantifyInt("Triad Study", triadCount)}.`;
return `You have unlocked ${formatInt(triadCount)}/${formatInt(4)} Triad Studies.`;
},
}
],

View File

@ -86,6 +86,9 @@ Vue.component("header-challenge-display", {
return this.activeChallengeNames.some(str => str.match(/Eternity Challenge (4|12)/gu));
},
challengeDisplay() {
if (this.inPelle && this.activeChallengeNames.length > 0) {
return `a Doomed Reality + ${this.activeChallengeNames.join(" + ")}. Good luck.`;
}
if (this.inPelle) return "a Doomed Reality. Good luck.";
if (this.activeChallengeNames.length === 0) {
return "the Antimatter Universe (no active challenges)";

View File

@ -155,7 +155,6 @@ Vue.component("equipped-glyphs", {
<!-- the drop zone is a bit larger than the glyph itself. -->
<div
class="l-equipped-glyphs__dropzone"
v-on="dragEvents(idx)"
/>
<GlyphComponent
v-if="glyph"

View File

@ -124,7 +124,7 @@ export const V_UNLOCKS = {
},
ND_POW: {
id: 2,
reward: "Antimatter Dimension power based on Space Theorems.",
reward: "Antimatter Dimension power based on total Space Theorems.",
get description() { return `Have ${formatInt(5)} V-Achievements`; },
effect: () => 1 + Math.sqrt(V.spaceTheorems) / 100,
format: x => formatPow(x, 3, 3),

View File

@ -783,7 +783,7 @@ export const RA_UNLOCKS = {
id: 23,
description: "Get V to level 5",
reward: () => `All Memory Chunks produce more Memories based on total Celestial levels,
and unlock a Triad Study every ${formatInt(5)} levels.
and unlock a Triad Study every ${formatInt(5)} levels (to a maximum of ${formatInt(4)} Triad Studies).
Triad Studies are located at the bottom of the Time Studies page`,
pet: Ra.pets.v,
level: 5,

View File

@ -225,7 +225,10 @@ export const Glyphs = {
sameSpecialTypeIndex = this.active.findIndex(x => x && x.type === glyph.type);
}
if (this.active[targetSlot] === null) {
if (sameSpecialTypeIndex >= 0) return;
if (sameSpecialTypeIndex >= 0) {
Modal.message.show(`You may only have one ${glyph.type.capitalize()} Glyph equipped`);
return;
}
this.removeFromInventory(glyph);
this.saveUndo(targetSlot);
player.reality.glyphs.active.push(glyph);
@ -239,7 +242,7 @@ export const Glyphs = {
} else {
// We can only replace effarig/reality glyph
if (sameSpecialTypeIndex >= 0 && sameSpecialTypeIndex !== targetSlot) {
Modal.message.show(`You may only have one ${glyph.type} glyph equipped`);
Modal.message.show(`You may only have one ${glyph.type.capitalize()} Glyph equipped`);
return;
}
if (!player.options.confirmations.glyphReplace) {
@ -260,7 +263,7 @@ export const Glyphs = {
this.addToInventory(glyph, freeIndex);
}
if (player.reality.glyphs.active.length) {
Modal.message.show("Some of your glyphs could not be unequipped due to lack of inventory space.");
Modal.message.show("Some of your Glyphs could not be unequipped due to lack of inventory space.");
}
this.updateRealityGlyphEffects();
this.updateMaxGlyphCount();

View File

@ -148,6 +148,26 @@ export const GlyphGenerator = {
};
},
// These Glyphs are given on entering Doomed to prevent the player
// from having none of each basic glyphs which are requied to beat pelle
doomedGlyph(type) {
const effectList = Object.values(GameDatabase.reality.glyphEffects).filter(e => e.id.startsWith(type));
effectList.push(GameDatabase.reality.glyphEffects.timespeed);
let bitmask = 0;
// eslint-disable-next-line no-bitwise
for (const effect of effectList) bitmask |= 1 << effect.bitmaskIndex;
const glyphLevel = Math.max(player.records.bestReality.glyphLevel, 5000);
return {
id: undefined,
idx: null,
type,
strength: 3.5,
level: glyphLevel,
rawLevel: glyphLevel,
effects: bitmask,
};
},
companionGlyph(eternityPoints) {
// Store the pre-Reality EP value in the glyph's rarity
const str = rarityToStrength(eternityPoints.log10() / 1e6);

View File

@ -31,7 +31,7 @@ export const GlyphSacrificeHandler = {
else Modal.glyphDelete.show({ idx: glyph.idx });
},
glyphSacrificeGain(glyph) {
if (!this.canSacrifice) return 0;
if (!this.canSacrifice || Pelle.isDoomed) return 0;
if (glyph.type === "reality") return 0.01 * glyph.level * Achievement(171).effectOrDefault(1);
const pre10kFactor = Math.pow(Math.clampMax(glyph.level, 10000) + 10, 2.5);
const post10kFactor = 1 + Math.clampMin(glyph.level - 10000, 0) / 100;
@ -40,6 +40,7 @@ export const GlyphSacrificeHandler = {
Teresa.runRewardMultiplier * Achievement(171).effectOrDefault(1), power);
},
sacrificeGlyph(glyph, force = false) {
if (Pelle.isDoomed) return;
// This also needs to be here because this method is called directly from drag-and-drop sacrificing
if (this.handleSpecialGlyphTypes(glyph)) return;
const toGain = this.glyphSacrificeGain(glyph);
@ -117,6 +118,7 @@ export const GlyphSacrificeHandler = {
},
refineGlyph(glyph) {
if (Pelle.isDoomed) return;
const resource = this.glyphAlchemyResource(glyph);
// This technically completely trashes the glyph for no rewards if not unlocked, but this will only happen ever
// if the player specificially tries to do so (in which case they're made aware that it's useless) or if the

View File

@ -32,7 +32,7 @@ GameDatabase.celestials.pelle = (function() {
}),
glyphLevels: rebuyable({
id: "glyphLevels",
description: `Increase the glyph level allowed in Pelle`,
description: `Increase the Glyph level allowed in Pelle`,
_cost: x => Decimal.pow(30, x).times(Decimal.pow(1e3, x - 25).max(1)).times(1e15),
_effect: x => Math.floor(((3 * (x + 1)) - 2) ** 1.6),
_formatEffect: x => `${format(Math.floor(((3 * (x + 1)) - 2) ** 1.6), 2)}` +
@ -41,7 +41,7 @@ GameDatabase.celestials.pelle = (function() {
}),
infConversion: rebuyable({
id: "infConversion",
description: `Increase infinity power conversion rate`,
description: `Increase Infinity Power conversion rate`,
_cost: x => Decimal.pow(40, x).times(Decimal.pow(1e3, x - 20).max(1)).times(1e18),
_effect: x => (x * 3.5) ** 0.37,
_formatEffect: x => `+${format((x * 3.5) ** 0.37, 2, 2)}` +
@ -50,7 +50,7 @@ GameDatabase.celestials.pelle = (function() {
}),
galaxyPower: rebuyable({
id: "galaxyPower",
description: `Multiply galaxy power`,
description: `Multiply Galaxy power`,
_cost: x => Decimal.pow(1000, x).times(Decimal.pow(1e3, x - 10).max(1)).times(1e30),
_effect: x => 1 + x / 50,
_formatEffect: x => `${formatX(1 + x / 50, 2, 2)}` +
@ -139,7 +139,7 @@ GameDatabase.celestials.pelle = (function() {
},
timeStudiesNoReset: {
id: 14,
description: "Time studies and Theorems do not reset on Armageddon",
description: "Time Studies and Theorems do not reset on Armageddon",
cost: 1e21,
formatCost: c => format(c, 2),
},
@ -169,7 +169,7 @@ GameDatabase.celestials.pelle = (function() {
},
dimBoostResetsNothing: {
id: 19,
description: "Dimension boosts no longer reset anything",
description: "Dimension Boosts no longer reset anything",
cost: 1e50,
formatCost: c => format(c, 2),
},
@ -235,11 +235,11 @@ GameDatabase.celestials.pelle = (function() {
milestones: [
{
requirement: 0.04,
description: "You can equip a single basic glyph with decreased level and rarity"
description: "You can equip a single basic Glyph with decreased level and rarity"
},
{
requirement: 0.06,
description: "Make replicanti unlock and its upgrades 1e130x cheaper, and it's uncapped"
description: "Make Replicanti unlock and its upgrades 1e130x cheaper, and it's uncapped"
},
{
requirement: 0.4,
@ -254,8 +254,8 @@ GameDatabase.celestials.pelle = (function() {
key: "pestilence",
name: "Pestilence",
spendable: true,
description: "When active, spends 3% of your replicanti per second to increase Pestilence.",
effectDescription: x => `You gain replicanti ${formatX(x, 2, 2)} faster`,
description: "When active, spends 3% of your Replicanti per second to increase Pestilence.",
effectDescription: x => `You gain Replicanti ${formatX(x, 2, 2)} faster`,
strike: () => PelleStrikes.powerGalaxies,
// 0 - 1
percentage: totalFill => totalFill.plus(1).log10() * 0.05 / 100,
@ -276,7 +276,7 @@ GameDatabase.celestials.pelle = (function() {
},
{
requirement: 0.6,
description: "When replicanti amount exceeds 1e1300, your galaxies are 10% more effective"
description: "When Replicanti amount exceeds 1e1300, your Galaxies are 10% more effective"
},
{
requirement: 1,
@ -315,7 +315,7 @@ GameDatabase.celestials.pelle = (function() {
}
}),
milestones: [
// It's just a tad under 20% because 20% takes a crapton of time
// It's just a tad under 10% because 10% takes a crapton of time
{
requirement: 0.0999,
description: "Pestilence effect is always maxed and milestones always active"
@ -323,7 +323,7 @@ GameDatabase.celestials.pelle = (function() {
{
requirement: 0.15,
description: () => {
const base = "Gain a bonus based on glyph equipped:";
const base = "Gain a bonus based on Glyph equipped:";
switch (Pelle.activeGlyphType) {
case "infinity": return `${base} IP multiplier based on IP`;
@ -333,7 +333,7 @@ GameDatabase.celestials.pelle = (function() {
case "power": return `${base} Galaxies are 2% stronger`;
case "companion": return `${base} You feel 34% better`;
default: return `${base} no glyph equipped!`;
default: return `${base} no Glyph equipped!`;
}
},
effect: () => {
@ -393,7 +393,7 @@ GameDatabase.celestials.pelle = (function() {
key: "death",
name: "Death",
description: "When active, spends 3% of your Dilated Time per second to increase Death.",
effectDescription: x => `All dimensions are raised to ${formatPow(x, 2, 3)}`,
effectDescription: x => `All Dimensions are raised to ${formatPow(x, 2, 3)}`,
strike: () => PelleStrikes.dilation,
percentage: totalFill => totalFill.plus(1).log10() / 100,
percentageToFill: percentage => Decimal.pow10(percentage * 100).minus(1),
@ -402,11 +402,11 @@ GameDatabase.celestials.pelle = (function() {
milestones: [
{
requirement: 0.15,
description: "Time Dimensions 5-8 are much cheaper, unlock more dilation upgrades"
description: "Time Dimensions 5-8 are much cheaper, unlock more Dilation upgrades"
},
{
requirement: 0.25,
description: "Raise tachyon particle effect to Dilated Time gain to ^1.4",
description: "Raise Tachyon Particle effect to Dilated Time gain to ^1.4",
},
{
requirement: 0.5,
@ -423,7 +423,7 @@ GameDatabase.celestials.pelle = (function() {
galaxyGeneratorUpgrades: {
additive: rebuyable({
id: "galaxyGeneratorAdditive",
description: `Increase base galaxy generation by 2`,
description: `Increase base Galaxy generation by 2`,
_cost: x => Decimal.pow(3, x),
_effect: x => x * 2,
_formatEffect: x => `${format(x * 2, 2, 2)}/s`,
@ -440,7 +440,7 @@ GameDatabase.celestials.pelle = (function() {
}),
multiplicative: rebuyable({
id: "galaxyGeneratorMultiplicative",
description: `Multiply galaxy generation`,
description: `Multiply Galaxy generation`,
_cost: x => Decimal.pow(10, x),
_effect: x => Decimal.pow(2.5, x),
_formatEffect: x => `${formatX(Decimal.pow(2.5, x), 2, 1)}${formatX(Decimal.pow(2.5, x + 1), 2, 1)}`,
@ -457,7 +457,7 @@ GameDatabase.celestials.pelle = (function() {
}),
antimatterMult: rebuyable({
id: "galaxyGeneratorAntimatterMult",
description: `Multiply galaxy generation`,
description: `Multiply Galaxy generation`,
_cost: x => Decimal.pow("1e100000000", 10 ** x),
_effect: x => Decimal.pow(2, x),
_formatEffect: x => `${formatX(Decimal.pow(2, x), 2)}${formatX(Decimal.pow(2, x + 1), 2)}`,
@ -466,7 +466,7 @@ GameDatabase.celestials.pelle = (function() {
}),
IPMult: rebuyable({
id: "galaxyGeneratorIPMult",
description: `Multiply galaxy generation`,
description: `Multiply Galaxy generation`,
_cost: x => Decimal.pow("1e2000000", 100 ** x),
_effect: x => Decimal.pow(2, x),
_formatEffect: x => `${formatX(Decimal.pow(2, x), 2)}${formatX(Decimal.pow(2, x + 1), 2)}`,
@ -475,7 +475,7 @@ GameDatabase.celestials.pelle = (function() {
}),
EPMult: rebuyable({
id: "galaxyGeneratorEPMult",
description: `Multiply galaxy generation`,
description: `Multiply Galaxy generation`,
_cost: x => Decimal.pow("1e10000", 1000 ** x),
_effect: x => Decimal.pow(2, x),
_formatEffect: x => `${formatX(Decimal.pow(2, x), 2)}${formatX(Decimal.pow(2, x + 1), 2)}`,

View File

@ -126,7 +126,7 @@ GameDatabase.reality.upgrades = (function() {
name: "Existentially Prolong",
id: 10,
cost: 15,
requirement: () => `Complete your first Eternity with at least ${format(DC.E450)} Infinity Points`,
requirement: () => `Complete your first Eternity with at least ${formatPostBreak(DC.E450)} Infinity Points`,
hasFailed: () => !player.requirementChecks.reality.noEternities,
checkRequirement: () => Currency.infinityPoints.exponent >= 450 &&
player.requirementChecks.reality.noEternities,

View File

@ -52,7 +52,7 @@ GameDatabase.speedrunMilestones = [
{
id: 7,
key: "upgrade5e11IP",
name: "5e11 IP Upgrade",
get name() { return `${format(5e11)} IP Upgrade`; },
description: () => `Purchase the ${formatPercents(0.5)} stronger Galaxies upgrade`,
checkRequirement: () => true,
// This is checked within BreakInfinityUpgrade.onPurchased

View File

@ -8997,7 +8997,14 @@ input.o-automator-block-input {
border-radius: 0;
}
.s-base--metro .c-hide-modal-tab-button {
border-radius: 0;
}
.c-hide-modal-tab-button {
color: var(--color-text);
background-color: var(--color-base);
font: Typewriter, serif;
display: flex;
justify-content: center;
align-items: center;
@ -9005,10 +9012,19 @@ input.o-automator-block-input {
height: 4rem;
width: 12rem;
margin: 0.2rem;
border-color: black !important;
box-shadow: none !important;
border: 0.1rem solid black;
border-radius: 0.4rem;
box-shadow: none;
white-space: normal;
font-weight: bold;
cursor: pointer;
transition-duration: 0.2s;
padding: 0.3rem 1rem;
}
.c-hide-modal-tab-button:hover {
color: var(--color-text-inverted);
background-color: var(--color-good);
}
.c-hide-modal-button--active {
@ -9020,7 +9036,7 @@ input.o-automator-block-input {
}
.c-hide-modal-button--always-visible {
background-color: var(--color-disabled) !important;
background-color: var(--color-disabled);
pointer-events: none;
}
@ -9030,46 +9046,46 @@ input.o-automator-block-input {
.c-hide-modal-tab-button--infinity {
color: var(--color-infinity);
background: var(--color-prestige--accent) !important;
border-color: var(--color-infinity) !important;
background: var(--color-prestige--accent);
border-color: var(--color-infinity);
}
.c-hide-modal-tab-button--infinity:hover {
color: var(--color-prestige--accent);
background: var(--color-infinity) !important;
background: var(--color-infinity);
}
.c-hide-modal-tab-button--eternity {
color: var(--color-eternity);
background: var(--color-prestige--accent) !important;
border-color: var(--color-eternity) !important;
background: var(--color-prestige--accent);
border-color: var(--color-eternity)
}
.c-hide-modal-tab-button--eternity:hover {
color: var(--color-prestige--accent);
background: var(--color-eternity) !important;
background: var(--color-eternity);
}
.c-hide-modal-tab-button--reality {
color: var(--color-reality);
background: var(--color-prestige--accent) !important;
border-color: var(--color-reality) !important;
background: var(--color-prestige--accent);
border-color: var(--color-reality);
}
.c-hide-modal-tab-button--reality:hover {
color: var(--color-prestige--accent);
background: var(--color-reality) !important;
background: var(--color-reality);
}
.c-hide-modal-tab-button--celestials {
color: var(--color-celestials);
background: var(--color-prestige--accent) !important;
border-color: var(--color-celestials) !important;
background: var(--color-prestige--accent);
border-color: var(--color-celestials);
}
.c-hide-modal-tab-button--celestials:hover {
color: var(--color-prestige--accent);
background: var(--color-celestials) !important;
background: var(--color-celestials);
}
/* Prevent any themes overriding font awesome */

View File

@ -38,4 +38,4 @@
.o-celestial-nav__legend-text {
fill: transparent !important;
}
}

View File

@ -23,7 +23,6 @@ export default {
},
classObject() {
return {
"o-primary-btn": true,
"c-hide-modal-tab-button": true,
"c-hide-modal-button--active": !this.hidden,
"c-hide-modal-button--inactive": this.hidden,

View File

@ -30,7 +30,6 @@ export default {
},
classObjectButton() {
return {
"o-primary-btn": true,
"c-hide-modal-tab-button": true,
"c-hide-modal-button--active": !this.hidden,
"c-hide-modal-button--inactive": this.hidden,

View File

@ -85,7 +85,7 @@ export default {
property="glyph"
/>
<div v-if="isOverCap">
Autobuyer will trigger at the glyph level cap of {{ formatInt(levelCap) }}.
Autobuyer will trigger at the Glyph level cap of {{ formatInt(levelCap) }}.
</div>
</template>
</AutobuyerBox>

View File

@ -66,7 +66,6 @@ export default {
Glyphs.refreshActive();
player.celestials.pelle.doomed = true;
Pelle.armageddon(false);
Glyphs.unequipAll();
respecTimeStudies(true);
Currency.infinityPoints.reset();
player.infMult = 0;