mirror of
https://github.com/Acamaeda/The-Modding-Tree.git
synced 2024-11-21 16:13:55 +00:00
2.3.5
This commit is contained in:
parent
6ed4f91cd4
commit
4414580408
6 changed files with 43 additions and 12 deletions
|
@ -1,7 +1,14 @@
|
||||||
# The Modding Tree changelog:
|
# The Modding Tree changelog:
|
||||||
|
|
||||||
|
## v2.3.5 - 12/21/20
|
||||||
|
- Added resetTime, which tracks the time since a layer prestiged or was reset.
|
||||||
|
- A layer node will be highlighted red if one of its subtabs is highlighted red.
|
||||||
|
- Fixed issues with keeping challenges, buyables, and clickables on reset.
|
||||||
|
- Improved the unlocking of custom layers.
|
||||||
|
- Other minor fixes.
|
||||||
|
|
||||||
## v2.3.4 - 12/16/20
|
## v2.3.4 - 12/16/20
|
||||||
- Added an image feature, which puts an image on a node.
|
- Added an node image feature.
|
||||||
- Resource display now always shows the amount of the currency the layer's gain is based on.
|
- Resource display now always shows the amount of the currency the layer's gain is based on.
|
||||||
- Added spacing between tree nodes.
|
- Added spacing between tree nodes.
|
||||||
- Another attempt to fix tooltip flickering.
|
- Another attempt to fix tooltip flickering.
|
||||||
|
|
|
@ -20,6 +20,7 @@ You can make almost any value dynamic by using a function in its place, includin
|
||||||
- total: A Decimal, tracks total amount of main prestige currency. Always tracked, but only shown if you add it here.
|
- total: A Decimal, tracks total amount of main prestige currency. Always tracked, but only shown if you add it here.
|
||||||
- best: A Decimal, tracks highest amount of main prestige currency. Always tracked, but only shown if you add it here.
|
- best: A Decimal, tracks highest amount of main prestige currency. Always tracked, but only shown if you add it here.
|
||||||
- unlockOrder: used to keep track of relevant layers unlocked before this one.
|
- unlockOrder: used to keep track of relevant layers unlocked before this one.
|
||||||
|
- resetTime: A number, time since this layer was last prestiged (or reset by another layer)
|
||||||
|
|
||||||
- color: A color associated with this layer, used in many places. (A string in hex format with a #)
|
- color: A color associated with this layer, used in many places. (A string in hex format with a #)
|
||||||
|
|
||||||
|
@ -44,7 +45,7 @@ You can make almost any value dynamic by using a function in its place, includin
|
||||||
hotkeys: [
|
hotkeys: [
|
||||||
{
|
{
|
||||||
key: "p", // What the hotkey button is. Use uppercase if it's combined with shift, or "ctrl+x" for holding down ctrl.
|
key: "p", // What the hotkey button is. Use uppercase if it's combined with shift, or "ctrl+x" for holding down ctrl.
|
||||||
desc: "p: reset your points for prestige points", // The description of the hotkey that is displayed in the game's How To Play tab
|
description: "p: reset your points for prestige points", // The description of the hotkey that is displayed in the game's How To Play tab
|
||||||
onPress() { if (player.p.unlocked) doReset("p") }
|
onPress() { if (player.p.unlocked) doReset("p") }
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
@ -110,7 +111,7 @@ You can make almost any value dynamic by using a function in its place, includin
|
||||||
|
|
||||||
- onPrestige(gain): **optional**. A function that triggers when this layer prestiges, just before you gain the currency. Can be used to have secondary resource gain on prestige, or to recalculate things or whatnot.
|
- onPrestige(gain): **optional**. A function that triggers when this layer prestiges, just before you gain the currency. Can be used to have secondary resource gain on prestige, or to recalculate things or whatnot.
|
||||||
|
|
||||||
- resetDesc: **optional**. Use this to replace "Reset for " on the Prestige button with something else.
|
- resetDescription: **optional**. Use this to replace "Reset for " on the Prestige button with something else.
|
||||||
|
|
||||||
- prestigeButtonText(): **sometimes required**. Use this to make the entirety of the text a Prestige button contains. Only required for custom layers, but usable by all types.
|
- prestigeButtonText(): **sometimes required**. Use this to make the entirety of the text a Prestige button contains. Only required for custom layers, but usable by all types.
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ let modInfo = {
|
||||||
|
|
||||||
// Set your version in num and name
|
// Set your version in num and name
|
||||||
let VERSION = {
|
let VERSION = {
|
||||||
num: "2.3.4",
|
num: "2.3.5",
|
||||||
name: "Cooler and Newer Edition",
|
name: "Cooler and Newer Edition",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
26
js/game.js
26
js/game.js
|
@ -4,7 +4,7 @@ var gameEnded = false;
|
||||||
|
|
||||||
// Don't change this
|
// Don't change this
|
||||||
const TMT_VERSION = {
|
const TMT_VERSION = {
|
||||||
tmtNum: "2.3.4",
|
tmtNum: "2.3.5",
|
||||||
tmtName: "Cooler and Newer Edition"
|
tmtName: "Cooler and Newer Edition"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -87,6 +87,20 @@ function shouldNotify(layer){
|
||||||
if (player[layer].activeChallenge && canCompleteChallenge(layer, player[layer].activeChallenge)) {
|
if (player[layer].activeChallenge && canCompleteChallenge(layer, player[layer].activeChallenge)) {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (isPlainObject(tmp[layer].tabFormat)) {
|
||||||
|
for (subtab in tmp[layer].tabFormat){
|
||||||
|
if (subtabShouldNotify(layer, 'mainTabs', subtab))
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (family in tmp[layer].microtabs) {
|
||||||
|
for (subtab in tmp[layer].microtabs[family]){
|
||||||
|
if (subtabShouldNotify(layer, family, subtab))
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
if (tmp[layer].shouldNotify){
|
if (tmp[layer].shouldNotify){
|
||||||
return tmp[layer].shouldNotify
|
return tmp[layer].shouldNotify
|
||||||
}
|
}
|
||||||
|
@ -125,15 +139,19 @@ function layerDataReset(layer, keep = []) {
|
||||||
if (player[layer][keep[thing]] !== undefined)
|
if (player[layer][keep[thing]] !== undefined)
|
||||||
storedData[keep[thing]] = player[layer][keep[thing]]
|
storedData[keep[thing]] = player[layer][keep[thing]]
|
||||||
}
|
}
|
||||||
|
Vue.set(player[layer], "buyables", getStartBuyables(layer))
|
||||||
|
Vue.set(player[layer], "clickables", getStartClickables(layer))
|
||||||
|
Vue.set(player[layer], "challenges", getStartChallenges(layer))
|
||||||
|
|
||||||
layOver(player[layer], getStartLayerData(layer))
|
layOver(player[layer], getStartLayerData(layer))
|
||||||
player[layer].upgrades = []
|
player[layer].upgrades = []
|
||||||
player[layer].milestones = []
|
player[layer].milestones = []
|
||||||
|
player[layer].achievements = []
|
||||||
player[layer].challenges = getStartChallenges(layer)
|
player[layer].challenges = getStartChallenges(layer)
|
||||||
resetBuyables(layer)
|
resetBuyables(layer)
|
||||||
|
|
||||||
if (layers[layer].clickables && !player[layer].clickables)
|
if (layers[layer].clickables && !player[layer].clickables)
|
||||||
player[layer].clickables = getStartClickables(layer)
|
player[layer].clickables = getStartClickables(layer)
|
||||||
|
|
||||||
for (thing in storedData) {
|
for (thing in storedData) {
|
||||||
player[layer][thing] =storedData[thing]
|
player[layer][thing] =storedData[thing]
|
||||||
}
|
}
|
||||||
|
@ -207,6 +225,8 @@ function doReset(layer, force=false) {
|
||||||
rowReset("side", layer)
|
rowReset("side", layer)
|
||||||
prevOnReset = undefined
|
prevOnReset = undefined
|
||||||
|
|
||||||
|
player[layer].resetTime = 0
|
||||||
|
|
||||||
updateTemp()
|
updateTemp()
|
||||||
updateTemp()
|
updateTemp()
|
||||||
}
|
}
|
||||||
|
@ -315,6 +335,7 @@ function gameLoop(diff) {
|
||||||
for (x = 0; x <= maxRow; x++){
|
for (x = 0; x <= maxRow; x++){
|
||||||
for (item in TREE_LAYERS[x]) {
|
for (item in TREE_LAYERS[x]) {
|
||||||
let layer = TREE_LAYERS[x][item]
|
let layer = TREE_LAYERS[x][item]
|
||||||
|
player[layer].resetTime += diff
|
||||||
if (tmp[layer].passiveGeneration) generatePoints(layer, diff*tmp[layer].passiveGeneration);
|
if (tmp[layer].passiveGeneration) generatePoints(layer, diff*tmp[layer].passiveGeneration);
|
||||||
if (layers[layer].update) layers[layer].update(diff);
|
if (layers[layer].update) layers[layer].update(diff);
|
||||||
}
|
}
|
||||||
|
@ -323,6 +344,7 @@ function gameLoop(diff) {
|
||||||
for (row in OTHER_LAYERS){
|
for (row in OTHER_LAYERS){
|
||||||
for (item in OTHER_LAYERS[row]) {
|
for (item in OTHER_LAYERS[row]) {
|
||||||
let layer = OTHER_LAYERS[row][item]
|
let layer = OTHER_LAYERS[row][item]
|
||||||
|
player[layer].resetTime += diff
|
||||||
if (tmp[layer].passiveGeneration) generatePoints(layer, diff*tmp[layer].passiveGeneration);
|
if (tmp[layer].passiveGeneration) generatePoints(layer, diff*tmp[layer].passiveGeneration);
|
||||||
if (layers[layer].update) layers[layer].update(diff);
|
if (layers[layer].update) layers[layer].update(diff);
|
||||||
}
|
}
|
||||||
|
|
11
js/utils.js
11
js/utils.js
|
@ -148,6 +148,7 @@ function getStartLayerData(layer){
|
||||||
if (layerdata.unlocked === undefined) layerdata.unlocked = true
|
if (layerdata.unlocked === undefined) layerdata.unlocked = true
|
||||||
if (layerdata.total === undefined) layerdata.total = new Decimal(0)
|
if (layerdata.total === undefined) layerdata.total = new Decimal(0)
|
||||||
if (layerdata.best === undefined) layerdata.best = new Decimal(0)
|
if (layerdata.best === undefined) layerdata.best = new Decimal(0)
|
||||||
|
if (layerdata.resetTime === undefined) layerdata.resetTime = 0
|
||||||
|
|
||||||
layerdata.buyables = getStartBuyables(layer)
|
layerdata.buyables = getStartBuyables(layer)
|
||||||
if(layerdata.clickables == undefined) layerdata.clickables = getStartClickables(layer)
|
if(layerdata.clickables == undefined) layerdata.clickables = getStartClickables(layer)
|
||||||
|
@ -684,8 +685,8 @@ function subtabShouldNotify(layer, family, id){
|
||||||
let subtab = {}
|
let subtab = {}
|
||||||
if (family == "mainTabs") subtab = tmp[layer].tabFormat[id]
|
if (family == "mainTabs") subtab = tmp[layer].tabFormat[id]
|
||||||
else subtab = tmp[layer].microtabs[family][id]
|
else subtab = tmp[layer].microtabs[family][id]
|
||||||
if (player.subtabs[layer][family] === id) return false
|
|
||||||
else if (subtab.embedLayer) return tmp[subtab.embedLayer].notify
|
if (subtab.embedLayer) return tmp[subtab.embedLayer].notify
|
||||||
else return subtab.shouldNotify
|
else return subtab.shouldNotify
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -709,7 +710,7 @@ function nodeShown(layer) {
|
||||||
|
|
||||||
function layerunlocked(layer) {
|
function layerunlocked(layer) {
|
||||||
if (tmp[layer] && tmp[layer].type == "none") return (player[layer].unlocked)
|
if (tmp[layer] && tmp[layer].type == "none") return (player[layer].unlocked)
|
||||||
return LAYERS.includes(layer) && (player[layer].unlocked || (tmp[layer].baseAmount.gte(tmp[layer].requires) && tmp[layer].layerShown))
|
return LAYERS.includes(layer) && (player[layer].unlocked || (tmp[layer].canReset && tmp[layer].layerShown))
|
||||||
}
|
}
|
||||||
|
|
||||||
function keepGoing() {
|
function keepGoing() {
|
||||||
|
@ -725,7 +726,7 @@ function toNumber(x) {
|
||||||
|
|
||||||
function updateMilestones(layer){
|
function updateMilestones(layer){
|
||||||
for (id in layers[layer].milestones){
|
for (id in layers[layer].milestones){
|
||||||
if (!(player[layer].milestones.includes(id)) && layers[layer].milestones[id].done()){
|
if (!(hasMilestone(layer, id)) && layers[layer].milestones[id].done()){
|
||||||
player[layer].milestones.push(id)
|
player[layer].milestones.push(id)
|
||||||
if (tmp[layer].milestonePopups || tmp[layer].milestonePopups === undefined) doPopup("milestone", tmp[layer].milestones[id].requirementDescription, "Milestone Gotten!", 3, tmp[layer].color);
|
if (tmp[layer].milestonePopups || tmp[layer].milestonePopups === undefined) doPopup("milestone", tmp[layer].milestones[id].requirementDescription, "Milestone Gotten!", 3, tmp[layer].color);
|
||||||
}
|
}
|
||||||
|
@ -734,7 +735,7 @@ function updateMilestones(layer){
|
||||||
|
|
||||||
function updateAchievements(layer){
|
function updateAchievements(layer){
|
||||||
for (id in layers[layer].achievements){
|
for (id in layers[layer].achievements){
|
||||||
if (isPlainObject(layers[layer].achievements[id]) && !(player[layer].achievements.includes(id)) && layers[layer].achievements[id].done()) {
|
if (isPlainObject(layers[layer].achievements[id]) && !(hasAchievement(layer, id)) && layers[layer].achievements[id].done()) {
|
||||||
player[layer].achievements.push(id)
|
player[layer].achievements.push(id)
|
||||||
if (layers[layer].achievements[id].onComplete) layers[layer].achievements[id].onComplete()
|
if (layers[layer].achievements[id].onComplete) layers[layer].achievements[id].onComplete()
|
||||||
if (tmp[layer].achievementPopups || tmp[layer].achievementPopups === undefined) doPopup("achievement", tmp[layer].achievements[id].name, "Achievement Gotten!", 3, tmp[layer].color);
|
if (tmp[layer].achievementPopups || tmp[layer].achievementPopups === undefined) doPopup("achievement", tmp[layer].achievements[id].name, "Achievement Gotten!", 3, tmp[layer].color);
|
||||||
|
|
|
@ -214,7 +214,7 @@ h1, h2, h3, b, input {
|
||||||
margin: 5px;
|
margin: 5px;
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
border: 2px solid;
|
border: 2px solid;
|
||||||
border-color: rgba(0, 0, 0, 0.125);
|
color: var(--color);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue