mirror of
https://github.com/Acamaeda/The-Modding-Tree.git
synced 2024-11-22 00:21:32 +00:00
2.2.6
This commit is contained in:
parent
2096c3db7f
commit
a9d55645b5
10 changed files with 32 additions and 23 deletions
|
@ -1,7 +1,10 @@
|
||||||
# The Modding Tree changelog:
|
# The Modding Tree changelog:
|
||||||
|
|
||||||
###
|
### v2.2.6 11/30/20
|
||||||
|
- Added goalDescription for challenges and made the new "canComplete" system the standard.
|
||||||
- Another attempt to fix challenges not visually updating.
|
- Another attempt to fix challenges not visually updating.
|
||||||
|
- Fixed side layers not appearing.
|
||||||
|
- Fixed getStartClickables again.
|
||||||
|
|
||||||
### v2.2.5 11/29/20
|
### v2.2.5 11/29/20
|
||||||
- Added features for overriding the displays and costs/goals of upgrades and challenges to make them fully custom.
|
- Added features for overriding the displays and costs/goals of upgrades and challenges to make them fully custom.
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Challenges
|
# Challenges
|
||||||
|
|
||||||
Useful functions for dealing with Challenges and implementing their effects:
|
Challenges can have fully customizable win conditions. Useful functions for dealing with Challenges and implementing their effects:
|
||||||
|
|
||||||
- inChallenge(layer, id): determine if the player is in a given challenge (or another challenge on the same layer that counts as this one).
|
- inChallenge(layer, id): determine if the player is in a given challenge (or another challenge on the same layer that counts as this one).
|
||||||
- hasChallenge(layer, id): determine if the player has completed the challenge.
|
- hasChallenge(layer, id): determine if the player has completed the challenge.
|
||||||
|
@ -31,6 +31,11 @@ Individual Challenges can have these features:
|
||||||
|
|
||||||
- challengeDescription: A description of what makes the challenge a challenge. *You will need to implement these elsewhere.* It can also be a function that returns updating text. Can use basic HTML.
|
- challengeDescription: A description of what makes the challenge a challenge. *You will need to implement these elsewhere.* It can also be a function that returns updating text. Can use basic HTML.
|
||||||
|
|
||||||
|
- goalDescription: A description of the win condition for the challenge. It can also be a function that returns updating text.
|
||||||
|
Can use basic HTML. (Optional if using the old goal system)
|
||||||
|
|
||||||
|
- canComplete(): A function that returns true if you meet the win condition for the challenge. (Optional if using the old goal system)
|
||||||
|
|
||||||
- rewardDescription: A description of the reward's effect. *You will also have to implement the effect where it is applied.* It can also be a function that returns updating text. Can use basic HTML.
|
- rewardDescription: A description of the reward's effect. *You will also have to implement the effect where it is applied.* It can also be a function that returns updating text. Can use basic HTML.
|
||||||
|
|
||||||
- rewardEffect(): **optional**. A function that calculates and returns the current values of any bonuses from the reward. Can return a value or an object containing multiple values. Can use basic HTML.
|
- rewardEffect(): **optional**. A function that calculates and returns the current values of any bonuses from the reward. Can return a value or an object containing multiple values. Can use basic HTML.
|
||||||
|
@ -39,8 +44,6 @@ Individual Challenges can have these features:
|
||||||
|
|
||||||
- fullDisplay(): **OVERRIDE**. Overrides the other displays and descriptions, and lets you set the full text for the challenge. Can use basic HTML.
|
- fullDisplay(): **OVERRIDE**. Overrides the other displays and descriptions, and lets you set the full text for the challenge. Can use basic HTML.
|
||||||
|
|
||||||
- goal: A Decimal for the amount of currency required to beat the challenge. By default, the goal is in basic Points. The goal can also be a function if its value changes.
|
|
||||||
|
|
||||||
- unlocked(): **optional**. A function returning a bool to determine if the challenge is visible or not. Default is unlocked.
|
- unlocked(): **optional**. A function returning a bool to determine if the challenge is visible or not. Default is unlocked.
|
||||||
|
|
||||||
- onComplete() - **optional**. this function will be called when the challenge is completed when previously incomplete.
|
- onComplete() - **optional**. this function will be called when the challenge is completed when previously incomplete.
|
||||||
|
@ -55,16 +58,17 @@ Individual Challenges can have these features:
|
||||||
|
|
||||||
- id: **assigned automagically**. It's the "key" which the challenge was stored under, for convenient access. The challenge in the example's id is 11.
|
- id: **assigned automagically**. It's the "key" which the challenge was stored under, for convenient access. The challenge in the example's id is 11.
|
||||||
|
|
||||||
By default, challenges use basic Points for the goal. You can change that using these features:
|
|
||||||
|
|
||||||
- currencyDisplayName: **optional**. the name to display for the currency for the goal
|
|
||||||
|
|
||||||
- currencyInternalName: **optional**. the internal name for that currency
|
The old goal system uses these features:
|
||||||
|
|
||||||
- currencyLayer: **optional**. the internal name of the layer that currency is stored in. If it's not in a layer, omit. If it's not stored directly in a layer, instead use the next feature.
|
- goal: **deprecated**, A Decimal for the amount of currency required to beat the challenge. By default, the goal is in basic Points. The goal can also be a function if its value changes.
|
||||||
|
|
||||||
- currencyLocation: **optional**. if your currency is stored in something inside a layer (e.g. a buyable's amount), you can access it this way. This is a function returning the object in "player" that contains the value (like `player[this.layer].buyables`)
|
- currencyDisplayName: **deprecated**. the name to display for the currency for the goal
|
||||||
|
|
||||||
You can also set a fully custom win condition that overrides other goal-related features (use fullDisplay along with this)
|
- currencyInternalName: **deprecated**. the internal name for that currency
|
||||||
|
|
||||||
|
- currencyLayer: **deprecated**. the internal name of the layer that currency is stored in. If it's not in a layer, omit. If it's not stored directly in a layer, instead use the next feature.
|
||||||
|
|
||||||
|
- currencyLocation(): **deprecated**. if your currency is stored in something inside a layer (e.g. a buyable's amount), you can access it this way. This is a function returning the object in "player" that contains the value (like `player[this.layer].buyables`)
|
||||||
|
|
||||||
- canComplete(): **OVERRIDE**, returns true if you can complete the challenge
|
|
|
@ -61,6 +61,6 @@ By default, upgrades use the main prestige currency for the layer. You can inclu
|
||||||
|
|
||||||
If you want to do something more complicated like upgrades that cost two currencies, you can override the purchase system with these (and you need to use fullDisplay as well)
|
If you want to do something more complicated like upgrades that cost two currencies, you can override the purchase system with these (and you need to use fullDisplay as well)
|
||||||
|
|
||||||
-canAfford(): **OVERRIDE**, a function determining if you are able to buy the upgrade
|
- canAfford(): **OVERRIDE**, a function determining if you are able to buy the upgrade
|
||||||
|
|
||||||
-pay(): **OVERRIDE**, a function that reduces your currencies when you buy the upgrade
|
- pay(): **OVERRIDE**, a function that reduces your currencies when you buy the upgrade
|
|
@ -60,7 +60,7 @@
|
||||||
</div>
|
</div>
|
||||||
<overlay-head v-if="!(gameEnded && !player.keepGoing)"></overlay-head>
|
<overlay-head v-if="!(gameEnded && !player.keepGoing)"></overlay-head>
|
||||||
<div class="sideLayers" >
|
<div class="sideLayers" >
|
||||||
<div v-for="node in OTHER_LAYERS['side']"><tree--node :layer='node' :abb='tmp[node].symbol' :size="'small'"></tree-node></div>
|
<div v-for="node in OTHER_LAYERS['side']"><tree-node :layer='node' :abb='tmp[node].symbol' :size="'small'"></tree-node></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -83,7 +83,8 @@ addLayer("c", {
|
||||||
name: "Fun",
|
name: "Fun",
|
||||||
completionLimit: 3,
|
completionLimit: 3,
|
||||||
challengeDescription() {return "Makes the game 0% harder<br>"+challengeCompletions(this.layer, this.id) + "/" + this.completionLimit + " completions"},
|
challengeDescription() {return "Makes the game 0% harder<br>"+challengeCompletions(this.layer, this.id) + "/" + this.completionLimit + " completions"},
|
||||||
unlocked() { return player[this.layer].best.gt(0) },
|
unlocked() { return player[this.layer].best.gt(0) },
|
||||||
|
goalDescription: 'Have 20 lollipops I guess',
|
||||||
goal: new Decimal("20"),
|
goal: new Decimal("20"),
|
||||||
currencyDisplayName: "lollipops", // Use if using a nonstandard currency
|
currencyDisplayName: "lollipops", // Use if using a nonstandard currency
|
||||||
currencyInternalName: "points", // Use if using a nonstandard currency
|
currencyInternalName: "points", // Use if using a nonstandard currency
|
||||||
|
|
|
@ -12,7 +12,7 @@ let modInfo = {
|
||||||
|
|
||||||
// Set your version in num and name
|
// Set your version in num and name
|
||||||
let VERSION = {
|
let VERSION = {
|
||||||
num: "2.2.5",
|
num: "2.2.6",
|
||||||
name: "Uprooted",
|
name: "Uprooted",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -125,7 +125,7 @@ function loadVue() {
|
||||||
<span v-if="tmp[layer].challenges[data].fullDisplay" v-html="tmp[layer].challenges[data].fullDisplay"></span>
|
<span v-if="tmp[layer].challenges[data].fullDisplay" v-html="tmp[layer].challenges[data].fullDisplay"></span>
|
||||||
<span v-else>
|
<span v-else>
|
||||||
<span v-html="tmp[layer].challenges[data].challengeDescription"></span><br>
|
<span v-html="tmp[layer].challenges[data].challengeDescription"></span><br>
|
||||||
Goal: {{format(tmp[layer].challenges[data].goal)}} {{tmp[layer].challenges[data].currencyDisplayName ? tmp[layer].challenges[data].currencyDisplayName : "points"}}<br>
|
Goal: <span v-if="tmp[layer].challenges[data].goalDescription" v-html="tmp[layer].challenges[data].goalDescription"></span><span v-else>{{format(tmp[layer].challenges[data].goal)}} {{tmp[layer].challenges[data].currencyDisplayName ? tmp[layer].challenges[data].currencyDisplayName : "points"}}</span><br>
|
||||||
Reward: <span v-html="tmp[layer].challenges[data].rewardDescription"></span><br>
|
Reward: <span v-html="tmp[layer].challenges[data].rewardDescription"></span><br>
|
||||||
<span v-if="tmp[layer].challenges[data].rewardEffect!==undefined">Currently: <span v-html="(tmp[layer].challenges[data].rewardDisplay) ? (tmp[layer].challenges[data].rewardDisplay) : format(tmp[layer].challenges[data].rewardEffect)"></span></span>
|
<span v-if="tmp[layer].challenges[data].rewardEffect!==undefined">Currently: <span v-html="(tmp[layer].challenges[data].rewardDisplay) ? (tmp[layer].challenges[data].rewardDisplay) : format(tmp[layer].challenges[data].rewardEffect)"></span></span>
|
||||||
</span>
|
</span>
|
||||||
|
|
|
@ -4,7 +4,7 @@ var gameEnded = false;
|
||||||
|
|
||||||
// Don't change this
|
// Don't change this
|
||||||
const TMT_VERSION = {
|
const TMT_VERSION = {
|
||||||
tmtNum: "2.2.5",
|
tmtNum: "2.2.6",
|
||||||
tmtName: "Uprooted"
|
tmtName: "Uprooted"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -181,7 +181,7 @@ function addLayer(layerName, layerData){ // Call this to add layers from a diffe
|
||||||
layers[layerName].isLayer = true
|
layers[layerName].isLayer = true
|
||||||
}
|
}
|
||||||
|
|
||||||
function addNode(layerName, layerData){ // Does the same thing
|
function addNode(layerName, layerData){ // Does the same thing, but for non-layer nodes
|
||||||
layers[layerName] = layerData
|
layers[layerName] = layerData
|
||||||
layers[layerName].isLayer = false
|
layers[layerName].isLayer = false
|
||||||
}
|
}
|
||||||
|
|
|
@ -169,8 +169,9 @@ function getStartBuyables(layer){
|
||||||
function getStartClickables(layer){
|
function getStartClickables(layer){
|
||||||
let data = {}
|
let data = {}
|
||||||
if (layers[layer].clickables) {
|
if (layers[layer].clickables) {
|
||||||
if (isPlainObject(layers[layer].clickables[id]))
|
for (id in layers[layer].buyables)
|
||||||
data[id] = ""
|
if (isPlainObject(layers[layer].clickables[id]))
|
||||||
|
data[id] = ""
|
||||||
}
|
}
|
||||||
return data
|
return data
|
||||||
}
|
}
|
||||||
|
@ -179,8 +180,8 @@ function getStartChallenges(layer){
|
||||||
let data = {}
|
let data = {}
|
||||||
if (layers[layer].challenges) {
|
if (layers[layer].challenges) {
|
||||||
for (id in layers[layer].challenges)
|
for (id in layers[layer].challenges)
|
||||||
if (isPlainObject(layers[layer].challenges[id]))
|
if (isPlainObject(layers[layer].challenges[id]))
|
||||||
data[id] = 0
|
data[id] = 0
|
||||||
}
|
}
|
||||||
return data
|
return data
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue