mirror of
https://github.com/IvarK/AntimatterDimensionsSourceCode.git
synced 2024-11-28 23:21:48 +00:00
Merge with master
This commit is contained in:
commit
1bf796eac5
@ -449,7 +449,7 @@
|
||||
<script type="text/javascript" src="javascripts/components/new-ui/time-dimensions-tab/new-time-dimension-row.js"></script>
|
||||
<script type="text/javascript" src="javascripts/components/new-ui/time-dimensions-tab/new-time-dimensions-tab.js"></script>
|
||||
<script type="text/javascript" src="javascripts/components/new-ui/dimensions-tab/new-galaxy-row.js"></script>
|
||||
<script type="text/javascript" src="javascripts/components/new-ui/sidebar-resources/sidebar-rm.js"></script>
|
||||
<script type="text/javascript" src="javascripts/components/new-ui/sidebar-resources/sidebar-currency.js"></script>
|
||||
<script type="text/javascript" src="javascripts/components/new-ui/new-ui.js"></script>
|
||||
|
||||
<script type="text/javascript" src="javascripts/components/common/news-ticker.js"></script>
|
||||
|
@ -33,5 +33,6 @@ Vue.component("game-ui", {
|
||||
</div>
|
||||
<div id="notification-container" class="l-notification-container" />
|
||||
<tt-shop v-if="view.subtab === 'studies'" class="l-time-studies-tab__tt-shop" />
|
||||
<sidebar v-if="view.newUI" />
|
||||
</div>`
|
||||
});
|
||||
|
@ -4,35 +4,16 @@ Vue.component("modal-away-progress", {
|
||||
components: {
|
||||
"away-progress-helper": {
|
||||
props: {
|
||||
config: Object,
|
||||
item: Object,
|
||||
playerBefore: Object,
|
||||
playerAfter: Object,
|
||||
},
|
||||
computed: {
|
||||
after() {
|
||||
return this.config.after;
|
||||
},
|
||||
before() {
|
||||
return this.config.before;
|
||||
return this.item.navigateTo(this.playerBefore);
|
||||
},
|
||||
classObject() {
|
||||
return this.config.classObject;
|
||||
},
|
||||
name() {
|
||||
return this.config.name;
|
||||
},
|
||||
showOption() {
|
||||
return this.config.awayProgress;
|
||||
},
|
||||
increased() {
|
||||
// Both Decimals and numbers may be passed in. This code handles both.
|
||||
const after = this.after;
|
||||
const before = this.before;
|
||||
|
||||
return after instanceof Decimal
|
||||
? after.gt(before)
|
||||
: after > before;
|
||||
},
|
||||
show() {
|
||||
return this.showOption && this.increased;
|
||||
after() {
|
||||
return this.item.navigateTo(this.playerAfter);
|
||||
},
|
||||
formatBefore() {
|
||||
return this.formatPseudo(this.before);
|
||||
@ -40,8 +21,41 @@ Vue.component("modal-away-progress", {
|
||||
formatAfter() {
|
||||
return this.formatPseudo(this.after);
|
||||
},
|
||||
classObject() {
|
||||
return this.item.classObject;
|
||||
},
|
||||
name() {
|
||||
return this.item.formatName;
|
||||
},
|
||||
increased() {
|
||||
// If they would visually display as the same number, they shouldn't be treated as if they increased
|
||||
if (this.formatAfter === this.formatBefore) return false;
|
||||
// Both Decimals and numbers may be passed in. This code handles both.
|
||||
const before = this.before;
|
||||
const after = this.after;
|
||||
|
||||
return after instanceof Decimal
|
||||
? after.gt(before)
|
||||
: after > before;
|
||||
},
|
||||
show() {
|
||||
if (!this.item.appearsInAwayModal) return false;
|
||||
const show = this.increased && this.item.option && this.item.isUnlocked();
|
||||
// For the achievement and display, we need to emit if something happened to the parent
|
||||
if (show) this.$emit("something-happened");
|
||||
return show;
|
||||
},
|
||||
isBlackHole() {
|
||||
// If its a Black Hole we need different formatting, so find that
|
||||
return this.item.name.includes("BlackHole");
|
||||
},
|
||||
formatBlackHoleActivations() {
|
||||
const activations = this.after - this.before;
|
||||
return `${formatInt(activations)} ${pluralize("time", activations)}`;
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// We want different formatting above and below 1e9 to improve readability
|
||||
formatPseudo(number) {
|
||||
if (Decimal.lt(number, 1e9)) return formatInt(number);
|
||||
return format(number, 2, 2);
|
||||
@ -49,59 +63,21 @@ Vue.component("modal-away-progress", {
|
||||
},
|
||||
template: `
|
||||
<div v-if="show" :class="classObject" class="c-modal-away-progress__resources">
|
||||
<b>{{ name }}</b> increased from {{ formatBefore }} to {{ formatAfter }}
|
||||
<span v-if="isBlackHole">Your <b>{{ name }}</b> activated {{ formatBlackHoleActivations }}</span>
|
||||
<span v-else><b>{{ name }}</b> increased from {{ formatBefore }} to {{ formatAfter }}</span>
|
||||
</div>`
|
||||
},
|
||||
"away-progress-black-hole": {
|
||||
props: {
|
||||
blackHole: Number,
|
||||
playerBefore: Object,
|
||||
playerAfter: Object,
|
||||
},
|
||||
computed: {
|
||||
before() {
|
||||
return this.playerBefore.blackHole[this.blackHole];
|
||||
},
|
||||
after() {
|
||||
return this.playerAfter.blackHole[this.blackHole];
|
||||
},
|
||||
increased() {
|
||||
return this.after.activations > this.before.activations;
|
||||
},
|
||||
show() {
|
||||
return player.options.awayProgress.blackHole && this.increased;
|
||||
},
|
||||
activationTimes() {
|
||||
return this.after.activations - this.before.activations;
|
||||
},
|
||||
name() {
|
||||
// If its 0 its the first black hole, if its 1 its the second. if its not one of those two, something has gone
|
||||
// wrong, and an error should be thrown.
|
||||
// TODO: Standardize Black Hole handling and naming, this shouldnt be done locally
|
||||
if (this.blackHole === 0) return "First";
|
||||
if (this.blackHole === 1) return "Second";
|
||||
throw new Error("Unknown Black Hole ID in modal-away-progress.js");
|
||||
},
|
||||
displayName() {
|
||||
// If we have the second black hole unlocked, specify which black hole activated.
|
||||
return this.playerBefore.blackHole[1].unlocked;
|
||||
}
|
||||
},
|
||||
template: `
|
||||
<div v-if="show">
|
||||
Your
|
||||
<b class="c-modal-away-progress__black-hole">
|
||||
<span v-if="displayName">{{ name }} </span>Black Hole
|
||||
</b>
|
||||
activated {{ formatInt(activationTimes) }} {{ "time" | pluralize(activationTimes) }}
|
||||
</div>`
|
||||
}
|
||||
},
|
||||
props: {
|
||||
modalConfig: Object
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
somethingHappened: false,
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
nothingAway() {
|
||||
nothingHappened() {
|
||||
return Theme.current().name === "S9";
|
||||
},
|
||||
before() {
|
||||
@ -111,58 +87,34 @@ Vue.component("modal-away-progress", {
|
||||
return this.modalConfig.playerAfter;
|
||||
},
|
||||
offlineStats() {
|
||||
const statObject = { };
|
||||
|
||||
for (const awayProgress of AwayProgressTypes.all) {
|
||||
Object.assign(statObject, this.getObjectForAway(awayProgress));
|
||||
}
|
||||
|
||||
return statObject;
|
||||
return AwayProgressTypes.all;
|
||||
},
|
||||
headerText() {
|
||||
const timeDisplay = TimeSpan.fromSeconds(this.modalConfig.seconds).toString();
|
||||
if (this.nothingAway) {
|
||||
SecretAchievement(36).unlock();
|
||||
if (this.nothingHappened || !this.somethingHappened) {
|
||||
return `While you were away for ${timeDisplay}... Nothing happened.`;
|
||||
}
|
||||
return `While you were away for ${timeDisplay}: `;
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
getObjectForAway(item) {
|
||||
const objectName = item.name;
|
||||
const name = item.formatName;
|
||||
const before = item.navigateTo(this.before);
|
||||
const after = item.navigateTo(this.after);
|
||||
const awayProgress = item.option;
|
||||
const classObject = item.classObject;
|
||||
return {
|
||||
[`${objectName}`]: {
|
||||
name,
|
||||
before,
|
||||
after,
|
||||
awayProgress,
|
||||
classObject,
|
||||
}
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.$nextTick(() => {
|
||||
// After all the children have been loaded, check if somethingHappened - if not, give them the achievement!
|
||||
if (this.nothingHappened || !this.somethingHappened) SecretAchievement(36).unlock();
|
||||
});
|
||||
},
|
||||
template: `
|
||||
<div class="c-modal-away-progress">
|
||||
<modal-close-button @click="emitClose" />
|
||||
<div class="c-modal-away-progress__header">{{ headerText }}</div>
|
||||
<div v-if="!nothingAway" class="c-modal-away-progress__resources">
|
||||
<div v-if="!nothingHappened" class="c-modal-away-progress__resources">
|
||||
<away-progress-helper
|
||||
v-for="(stat, name) in offlineStats"
|
||||
:key="name"
|
||||
:config="stat"
|
||||
/>
|
||||
<away-progress-black-hole
|
||||
v-for="blackHole in [0, 1]"
|
||||
:key="blackHole"
|
||||
:blackHole="blackHole"
|
||||
v-for="(stat, index) of offlineStats"
|
||||
:key="index"
|
||||
:item="stat"
|
||||
:playerBefore="before"
|
||||
:playerAfter="after"
|
||||
v-on:something-happened="somethingHappened = true"
|
||||
/>
|
||||
</div>
|
||||
</div>`
|
||||
|
@ -1,7 +1,6 @@
|
||||
"use strict";
|
||||
|
||||
Vue.component("modal-away-progress-options", {
|
||||
mixins: [modalOptionsMixin],
|
||||
components: {
|
||||
"away-progress-options-helper": {
|
||||
mixins: [modalOptionsMixin],
|
||||
@ -38,28 +37,11 @@ Vue.component("modal-away-progress-options", {
|
||||
data() {
|
||||
return {
|
||||
all: Array,
|
||||
celestialMemories: false,
|
||||
blackHole: false
|
||||
};
|
||||
},
|
||||
watch: {
|
||||
celestialMemories(newValue) {
|
||||
player.options.awayProgress.celestialMemories = newValue;
|
||||
},
|
||||
blackHole(newValue) {
|
||||
player.options.awayProgress.blackHole = newValue;
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
update() {
|
||||
this.all = AwayProgressTypes.all.filter(type => type.showOption && type.isUnlocked());
|
||||
|
||||
this.raUnlocked = V.has(V_UNLOCKS.RA_UNLOCK);
|
||||
this.blackHoleUnlocked = BlackHoles.list[0].isUnlocked;
|
||||
|
||||
const options = player.options.awayProgress;
|
||||
this.celestialMemories = options.celestialMemories;
|
||||
this.blackHole = options.blackHole;
|
||||
}
|
||||
},
|
||||
template: `
|
||||
@ -70,8 +52,6 @@ Vue.component("modal-away-progress-options", {
|
||||
:key="id"
|
||||
:option="entry.name"
|
||||
/>
|
||||
<wide-on-off-button v-if="raUnlocked" v-model="celestialMemories" text="Celestial Memories:" />
|
||||
<wide-on-off-button v-if="blackHoleUnlocked" v-model="blackHole" text="Black Hole:" />
|
||||
</div>
|
||||
Note: Selected resources will only show if they've increased.
|
||||
</modal-options>`
|
||||
|
@ -96,7 +96,6 @@ Vue.component("new-ui", {
|
||||
template: `
|
||||
<div id="page">
|
||||
<link rel="stylesheet" type="text/css" href="stylesheets/new-ui-styles.css">
|
||||
<sidebar />
|
||||
<div class="game-container" :style="topMargin">
|
||||
<news-ticker v-if="news" />
|
||||
<div v-if="bigCrunch" class="l-new-ui-big-crunch__container">
|
||||
|
@ -0,0 +1,71 @@
|
||||
"use strict";
|
||||
|
||||
Vue.component("sidebar-currency", {
|
||||
data() {
|
||||
return {
|
||||
AM: new Decimal(0),
|
||||
IP: new Decimal(0),
|
||||
EP: new Decimal(0),
|
||||
RM: new Decimal(0),
|
||||
IM: 0,
|
||||
showIP: false,
|
||||
showEP: false,
|
||||
showRM: false,
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
update() {
|
||||
this.AM.copyFrom(Currency.antimatter.value);
|
||||
this.IP.copyFrom(Currency.infinityPoints.value);
|
||||
this.EP.copyFrom(Currency.eternityPoints.value);
|
||||
this.RM.copyFrom(Currency.realityMachines);
|
||||
this.IM = Currency.imaginaryMachines.value;
|
||||
this.showIP = PlayerProgress.infinityUnlocked();
|
||||
this.showEP = PlayerProgress.eternityUnlocked();
|
||||
this.showRM = PlayerProgress.realityUnlocked();
|
||||
}
|
||||
},
|
||||
template: `
|
||||
<div class="resource">
|
||||
<template v-if="showRM">
|
||||
<template v-if="IM === 0">
|
||||
<h2 class="o-sidebar-currency--reality">{{ format(RM, 2) }}</h2>
|
||||
<div class="resource-information">
|
||||
<span class="resource-name">Reality {{ "Machine" | pluralize(RM) }}</span>
|
||||
</div>
|
||||
</template>
|
||||
<template v-else>
|
||||
<h3 class="o-sidebar-currency--reality">
|
||||
{{ format(RM, 2) }}<br> + {{ format(IM, 2) }}i
|
||||
</h3>
|
||||
<div class="resource-information">
|
||||
<span class="resource-name">Machines</span>
|
||||
</div>
|
||||
</template>
|
||||
</template>
|
||||
<template v-else-if="showEP">
|
||||
<h2 class="o-sidebar-currency--eternity">
|
||||
{{ format(EP, 2) }}
|
||||
</h2>
|
||||
<div class="resource-information">
|
||||
<span class="resource-name">Eternity {{ "Point" | pluralize(EP) }}</span>
|
||||
</div>
|
||||
</template>
|
||||
<template v-else-if="showIP">
|
||||
<h2 class="o-sidebar-currency--infinity">
|
||||
{{ format(IP, 2) }}
|
||||
</h2>
|
||||
<div class="resource-information">
|
||||
<span class="resource-name">Infinity {{ "Point" | pluralize(IP) }}</span>
|
||||
</div>
|
||||
</template>
|
||||
<template v-else>
|
||||
<h2 class="o-sidebar-currency--antimatter">
|
||||
{{ format(AM, 2, 1) }}
|
||||
</h2>
|
||||
<div class="resource-information">
|
||||
<span class="resource-name">Antimatter</span>
|
||||
</div>
|
||||
</template>
|
||||
</div>`
|
||||
});
|
@ -1,33 +0,0 @@
|
||||
"use strict";
|
||||
|
||||
Vue.component("sidebar-rm", {
|
||||
data() {
|
||||
return {
|
||||
rm: new Decimal(0),
|
||||
im: 0,
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
update() {
|
||||
this.rm.copyFrom(Currency.realityMachines);
|
||||
this.im = Currency.imaginaryMachines.value;
|
||||
}
|
||||
},
|
||||
template: `
|
||||
<div class="resource">
|
||||
<div v-if="im === 0">
|
||||
<h2 class="o-sidebar-reality-button">{{ format(rm, 2) }}</h2>
|
||||
<div class="resource-information">
|
||||
<span class="resource-name">Reality {{ "Machine" | pluralize(rm) }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else>
|
||||
<h3 class="o-sidebar-reality-button">
|
||||
{{ format(rm, 2) }}<br> + {{ format(im, 2) }}i
|
||||
</h3>
|
||||
<div class="resource-information">
|
||||
<span class="resource-name">Machines</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>`
|
||||
});
|
@ -3,13 +3,11 @@
|
||||
Vue.component("sidebar", {
|
||||
data() {
|
||||
return {
|
||||
RMVisible: false,
|
||||
newsEnabled: false
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
update() {
|
||||
this.RMVisible = PlayerProgress.realityUnlocked();
|
||||
this.newsEnabled = player.options.news.enabled;
|
||||
}
|
||||
},
|
||||
@ -29,7 +27,7 @@ Vue.component("sidebar", {
|
||||
},
|
||||
template: `
|
||||
<div class="sidebar">
|
||||
<sidebar-rm v-if="RMVisible" />
|
||||
<sidebar-currency />
|
||||
<tab-button
|
||||
v-for="tab in tabs"
|
||||
:key="tab.name"
|
||||
|
@ -31,15 +31,13 @@ Vue.component("tab-button", {
|
||||
}
|
||||
},
|
||||
template: `
|
||||
<div v-if="!isHidden" :class="[classObject, tab.config.UIClass]">
|
||||
<div v-if="!isHidden && isAvailable" :class="[classObject, tab.config.UIClass]">
|
||||
<div
|
||||
v-if="isAvailable"
|
||||
class="l-tab-btn-inner"
|
||||
@click="tab.show(true)"
|
||||
>
|
||||
{{ tab.name }} <i v-if="hasNotification" class="fas fa-exclamation"></i>
|
||||
</div>
|
||||
<div v-else class="l-tab-btn-inner">???</div>
|
||||
<div class="subtabs" v-if="showSubtabs">
|
||||
<div
|
||||
v-for="(subtab, index) in tab.subtabs"
|
||||
|
@ -4,24 +4,27 @@ class AwayProgress {
|
||||
constructor(config) {
|
||||
this.name = config.name;
|
||||
this.isUnlocked = config.isUnlocked;
|
||||
this.awayOption = config.awayOption === undefined ? this.name : config.awayOption;
|
||||
this.showOption = config.showOption === undefined ? true : config.showOption;
|
||||
// This is an array of strings, each one the name of the next entry in the player object to navigate to
|
||||
// If there is no reference, it is accessed directly by the name through the player object.
|
||||
this.reference = config.reference === undefined ? [this.name] : config.reference;
|
||||
this.classObjectReference = config.classObjectReference === undefined ? this.name : config.classObjectReference;
|
||||
this.appearsInAwayModal = config.appearsInAwayModal === undefined ? true : config.appearsInAwayModal;
|
||||
}
|
||||
|
||||
get option() {
|
||||
return player.options.awayProgress[this.name];
|
||||
return player.options.awayProgress[this.awayOption];
|
||||
}
|
||||
|
||||
set option(value) {
|
||||
player.options.awayProgress[this.name] = value;
|
||||
player.options.awayProgress[this.awayOption] = value;
|
||||
}
|
||||
|
||||
get classObject() {
|
||||
// Format the camelCase name to kebab-case
|
||||
return `c-modal-away-progress__${
|
||||
this.name.replace(/[A-Z]/gu, match => `-${match.toLowerCase()}`)
|
||||
this.classObjectReference.replace(/[A-Z]/gu, match => `-${match.toLowerCase()}`)
|
||||
}`;
|
||||
}
|
||||
|
||||
@ -116,28 +119,38 @@ const AwayProgressTypes = {
|
||||
reference: ["celestials", "effarig", "relicShards"],
|
||||
isUnlocked: () => Teresa.has(TERESA_UNLOCKS.EFFARIG),
|
||||
}),
|
||||
celestialMemories: new AwayProgress({
|
||||
name: "celestialMemories",
|
||||
isUnlocked: () => V.has(V_UNLOCKS.RA_UNLOCK),
|
||||
// Functions as the visible option for all Memories, never appears due to having no reference.
|
||||
appearsInAwayModal: false,
|
||||
}),
|
||||
teresaMemories: new AwayProgress({
|
||||
name: "teresaMemories",
|
||||
awayOption: "celestialMemories",
|
||||
reference: ["celestials", "ra", "pets", "teresa", "memories"],
|
||||
isUnlocked: () => V.has(V_UNLOCKS.RA_UNLOCK),
|
||||
isUnlocked: () => Ra.pets.teresa.isUnlocked && !Ra.pets.teresa.isCapped,
|
||||
showOption: false,
|
||||
}),
|
||||
effarigMemories: new AwayProgress({
|
||||
name: "effarigMemories",
|
||||
awayOption: "celestialMemories",
|
||||
reference: ["celestials", "ra", "pets", "effarig", "memories"],
|
||||
isUnlocked: () => V.has(V_UNLOCKS.RA_UNLOCK),
|
||||
isUnlocked: () => Ra.pets.effarig.isUnlocked && !Ra.pets.effarig.isCapped,
|
||||
showOption: false,
|
||||
}),
|
||||
enslavedMemories: new AwayProgress({
|
||||
name: "enslavedMemories",
|
||||
awayOption: "celestialMemories",
|
||||
reference: ["celestials", "ra", "pets", "enslaved", "memories"],
|
||||
isUnlocked: () => V.has(V_UNLOCKS.RA_UNLOCK),
|
||||
isUnlocked: () => Ra.pets.enslaved.isUnlocked && !Ra.pets.enslaved.isCapped,
|
||||
showOption: false,
|
||||
}),
|
||||
vMemories: new AwayProgress({
|
||||
name: "vMemories",
|
||||
awayOption: "celestialMemories",
|
||||
reference: ["celestials", "ra", "pets", "v", "memories"],
|
||||
isUnlocked: () => V.has(V_UNLOCKS.RA_UNLOCK),
|
||||
isUnlocked: () => Ra.pets.v.isUnlocked && !Ra.pets.v.isCapped,
|
||||
showOption: false,
|
||||
}),
|
||||
darkMatter: new AwayProgress({
|
||||
@ -155,6 +168,28 @@ const AwayProgressTypes = {
|
||||
reference: ["celestials", "laitela", "singularities"],
|
||||
isUnlocked: () => Laitela.isUnlocked,
|
||||
}),
|
||||
blackHole: new AwayProgress({
|
||||
name: "blackHole",
|
||||
isUnlocked: () => BlackHole(1).isUnlocked,
|
||||
// Functions as the visible option for both first & second BHs, never appears due to having no reference.
|
||||
appearsInAwayModal: false,
|
||||
}),
|
||||
firstBlackHole: new AwayProgress({
|
||||
name: "firstBlackHole",
|
||||
awayOption: "blackHole",
|
||||
reference: ["blackHole", "0", "activations"],
|
||||
isUnlocked: () => BlackHole(1).isUnlocked,
|
||||
classObjectReference: "black-hole",
|
||||
showOption: false,
|
||||
}),
|
||||
secondBlackHole: new AwayProgress({
|
||||
name: "secondBlackHole",
|
||||
awayOption: "blackHole",
|
||||
reference: ["blackHole", "1", "activations"],
|
||||
isUnlocked: () => BlackHole(2).isUnlocked,
|
||||
classObjectReference: "black-hole",
|
||||
showOption: false,
|
||||
}),
|
||||
};
|
||||
|
||||
AwayProgressTypes.all = Object.values(AwayProgressTypes);
|
||||
|
@ -30,6 +30,10 @@ class RaPetState {
|
||||
return this.requiredUnlock === undefined || Ra.has(this.requiredUnlock);
|
||||
}
|
||||
|
||||
get isCapped() {
|
||||
return this.level >= Ra.levelCap;
|
||||
}
|
||||
|
||||
get level() {
|
||||
return this.data.level;
|
||||
}
|
||||
|
@ -79,40 +79,31 @@ function buyTickSpeed() {
|
||||
|
||||
function buyMaxTickSpeed() {
|
||||
if (!Tickspeed.isAvailableForPurchase || !Tickspeed.isAffordable) return;
|
||||
const costBumps = player.chall9TickspeedCostBumps;
|
||||
const inCostScalingChallenge = NormalChallenge(9).isRunning;
|
||||
const tickspeedMultDecreaseMaxed = BreakInfinityUpgrade.tickspeedCostMult.isCapped;
|
||||
const costScale = Tickspeed.costScale;
|
||||
let boughtTickspeed = false;
|
||||
|
||||
if (
|
||||
costScale.calculateCost(player.totalTickBought + costBumps).lt(Decimal.NUMBER_MAX_VALUE) ||
|
||||
inCostScalingChallenge ||
|
||||
!tickspeedMultDecreaseMaxed
|
||||
) {
|
||||
|
||||
let shouldContinue = true;
|
||||
while (Currency.antimatter.gt(costScale.calculateCost(player.totalTickBought + costBumps)) && shouldContinue) {
|
||||
if (inCostScalingChallenge) {
|
||||
if (NormalChallenge(9).isRunning) {
|
||||
const goal = Player.infinityGoal;
|
||||
let cost = Tickspeed.cost;
|
||||
while (Currency.antimatter.gt(cost) && cost.lt(goal)) {
|
||||
Tickspeed.multiplySameCosts();
|
||||
}
|
||||
Currency.antimatter.subtract(costScale.calculateCost(player.totalTickBought + costBumps));
|
||||
Currency.antimatter.subtract(cost);
|
||||
player.totalTickBought++;
|
||||
player.records.thisInfinity.lastBuyTime = player.records.thisInfinity.time;
|
||||
if (NormalChallenge(2).isRunning) player.chall2Pow = 0;
|
||||
if (costScale.calculateCost(player.totalTickBought + costBumps).gte(Decimal.NUMBER_MAX_VALUE) &&
|
||||
!inCostScalingChallenge &&
|
||||
tickspeedMultDecreaseMaxed) {
|
||||
shouldContinue = false;
|
||||
boughtTickspeed = true;
|
||||
cost = Tickspeed.cost;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (costScale.calculateCost(player.totalTickBought + costBumps).gte(Decimal.NUMBER_MAX_VALUE)) {
|
||||
const purchases = costScale.getMaxBought(player.totalTickBought + costBumps, Currency.antimatter.value);
|
||||
} else {
|
||||
const purchases = Tickspeed.costScale.getMaxBought(player.totalTickBought, Currency.antimatter.value);
|
||||
if (purchases === null) {
|
||||
return;
|
||||
}
|
||||
player.totalTickBought += purchases.quantity;
|
||||
Currency.antimatter.subtract(Decimal.pow10(purchases.logPrice));
|
||||
player.totalTickBought += purchases.quantity;
|
||||
boughtTickspeed = true;
|
||||
}
|
||||
|
||||
if (boughtTickspeed) {
|
||||
player.records.thisInfinity.lastBuyTime = player.records.thisInfinity.time;
|
||||
if (NormalChallenge(2).isRunning) player.chall2Pow = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -46,8 +46,8 @@ body.t-s9 {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
width: 12rem;
|
||||
margin-top: 3.9rem;
|
||||
position: fixed;
|
||||
left: 0;
|
||||
z-index: 5;
|
||||
}
|
||||
|
||||
@ -63,6 +63,8 @@ body.t-s9 {
|
||||
width: 12rem;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
background-color: var(--color-base);
|
||||
border-right: 0.1rem solid var(--color-accent);
|
||||
border-bottom: 0.1rem solid var(--color-accent);
|
||||
@ -71,10 +73,8 @@ body.t-s9 {
|
||||
|
||||
.resource h2 {
|
||||
margin: 0;
|
||||
color: var(--color-accent);
|
||||
font-size: 1.7em;
|
||||
z-index: 1;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.t-dark .resource h2,
|
||||
@ -100,10 +100,34 @@ body.t-s9 {
|
||||
font-size: 0.8em;
|
||||
}
|
||||
|
||||
.t-dark #antimatter {animation: a-game-header__antimatter--glow 25s infinite;}
|
||||
.o-sidebar-infinity-button { color: var(--color-infinity) }
|
||||
.o-sidebar-eternity-button { color: var(--color-eternity) }
|
||||
.resource .o-sidebar-reality-button { color: var(--color-reality) }
|
||||
.o-sidebar-currency--antimatter {
|
||||
color: black;
|
||||
}
|
||||
|
||||
.t-normal .o-sidebar-currency--antimatter {
|
||||
color: var(--color-accent);
|
||||
}
|
||||
|
||||
.t-dark .o-sidebar-currency--antimatter,
|
||||
.t-s6 .o-sidebar-currency--antimatter {
|
||||
animation: a-game-header__antimatter--glow 25s infinite;
|
||||
}
|
||||
|
||||
.t-dark-metro .o-sidebar-currency--antimatter {
|
||||
color: #e0e0e0;
|
||||
}
|
||||
|
||||
.o-sidebar-currency--infinity {
|
||||
color: var(--color-infinity)
|
||||
}
|
||||
|
||||
.o-sidebar-currency--eternity {
|
||||
color: var(--color-eternity)
|
||||
}
|
||||
|
||||
.o-sidebar-currency--reality {
|
||||
color: var(--color-reality)
|
||||
}
|
||||
|
||||
.resource-infinity-canreset,
|
||||
.resource-eternity-canreset {
|
||||
@ -133,6 +157,10 @@ body.t-s9 {
|
||||
transition-delay: 0.2s;
|
||||
}
|
||||
|
||||
.o-tab-btn:hover {
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.sidebar > .o-tab-btn {
|
||||
border-left: none;
|
||||
}
|
||||
@ -156,8 +184,8 @@ body.t-s9 {
|
||||
.o-tab-btn::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
left: 100%;
|
||||
top: -2%;
|
||||
left: calc(100% + 0.1rem);
|
||||
top: calc(0% + -0.1rem);
|
||||
width: 0;
|
||||
height: 0;
|
||||
border-bottom: 2.3rem solid transparent;
|
||||
@ -169,7 +197,7 @@ body.t-s9 {
|
||||
}
|
||||
|
||||
.o-tab-btn--subtabs:hover::after {
|
||||
border-left-width: 2.3rem;
|
||||
border-left-width: 2.2rem;
|
||||
}
|
||||
|
||||
.o-tab-btn--infinity::after {
|
||||
@ -232,11 +260,10 @@ body.t-s9 {
|
||||
}
|
||||
|
||||
.c-news-ticker {
|
||||
width: calc(100% + 12rem);
|
||||
width: 100%;
|
||||
border-bottom: 0.1rem solid var(--color-accent);
|
||||
padding: 0.8rem 0;
|
||||
height: 3.9rem;
|
||||
margin-left: -12rem;
|
||||
}
|
||||
|
||||
.c-news-line {
|
||||
@ -251,8 +278,7 @@ body.t-s9 {
|
||||
top: -0.6rem;
|
||||
left: 12rem;
|
||||
z-index: 4;
|
||||
transition-duration: 0.15s;
|
||||
transition-delay: 0.2s;
|
||||
transition: pointer-events 0s linear 0s, all 0.15s linear 0.2s;
|
||||
padding: 0.5rem;
|
||||
padding-left: 0;
|
||||
}
|
||||
@ -829,7 +855,7 @@ body.t-s9 {
|
||||
color: var(--color-eternity);
|
||||
}
|
||||
|
||||
.c-game-header__antimatter {
|
||||
.t-normal .c-game-header__antimatter {
|
||||
color: var(--color-accent);
|
||||
}
|
||||
|
||||
|
@ -5278,36 +5278,34 @@ screen and (max-width: 480px) {
|
||||
0 0 0.2rem var(--color-laitela--accent);
|
||||
}
|
||||
|
||||
b.c-modal-away-progress__black-hole {
|
||||
text-shadow:
|
||||
0 0 0.2rem #e67919,
|
||||
0 0 0.3rem #e67919;
|
||||
}
|
||||
|
||||
.c-modal-away-progress__replicanti-galaxies,
|
||||
.c-modal-away-progress__replicanti {
|
||||
color: #03a9f4;
|
||||
}
|
||||
|
||||
.c-modal-away-progress__teresa {
|
||||
.c-modal-away-progress__teresa-memories {
|
||||
color: var(--color-ra-pet-teresa);
|
||||
}
|
||||
|
||||
.c-modal-away-progress__relic-shards,
|
||||
.c-modal-away-progress__effarig {
|
||||
.c-modal-away-progress__effarig-memories {
|
||||
color: var(--color-ra-pet-effarig);
|
||||
}
|
||||
|
||||
.c-modal-away-progress__enslaved {
|
||||
.c-modal-away-progress__enslaved-memories {
|
||||
color: var(--color-ra-pet-enslaved);
|
||||
}
|
||||
|
||||
.c-modal-away-progress__v {
|
||||
.c-modal-away-progress__v-memories {
|
||||
color: var(--color-ra-pet-v);
|
||||
}
|
||||
|
||||
.c-modal-away-progress__black-hole b,
|
||||
.c-modal-away-progress__black-hole {
|
||||
color: black;
|
||||
text-shadow:
|
||||
0 0 0.2rem #e67919,
|
||||
0 0 0.3rem #e67919;
|
||||
}
|
||||
|
||||
/*#endregion c-modal-away-progress*/
|
||||
|
@ -7,6 +7,7 @@ body.t-inverted-metro {
|
||||
.t-inverted-metro .l-notification-container,
|
||||
.t-inverted-metro .c-modal,
|
||||
.t-inverted-metro #TTbuttons,
|
||||
.t-inverted-metro .sidebar,
|
||||
.t-inverted-metro .c-glyph-tooltip {
|
||||
filter: invert(100%);
|
||||
}
|
||||
|
@ -7,6 +7,7 @@ body.t-inverted {
|
||||
.t-inverted .l-notification-container,
|
||||
.t-inverted .c-modal,
|
||||
.t-inverted #TTbuttons,
|
||||
.t-inverted .sidebar,
|
||||
.t-inverted .c-glyph-tooltip {
|
||||
filter: invert(100%);
|
||||
}
|
||||
|
@ -18,6 +18,7 @@ body {
|
||||
.t-s2 .l-notification-container,
|
||||
.t-s2 .c-modal,
|
||||
.t-s2 #TTbuttons,
|
||||
.t-s2 .sidebar,
|
||||
.t-s2 .c-glyph-tooltip {
|
||||
filter: sepia(100%) hue-rotate(180deg) saturate(250%);
|
||||
}
|
@ -7,6 +7,7 @@ body {
|
||||
.t-s3 .l-notification-container,
|
||||
.t-s3 .c-modal,
|
||||
.t-s3 #TTbuttons,
|
||||
.t-s3 .sidebar,
|
||||
.t-s3 .c-glyph-tooltip {
|
||||
animation: glasses 7s infinite;
|
||||
}
|
||||
|
@ -15,6 +15,7 @@ body.t-s5 {
|
||||
.t-s5 #page,
|
||||
.t-s5 .l-notification-container,
|
||||
.t-s5 .c-modal,
|
||||
.t-s5 #TTbuttons {
|
||||
.t-s5 #TTbuttons,
|
||||
.t-s5 .sidebar {
|
||||
filter: sepia(100%) hue-rotate(0deg) saturate(100%);
|
||||
}
|
Loading…
Reference in New Issue
Block a user