1
0
Fork 0
mirror of https://github.com/Acamaeda/The-Modding-Tree.git synced 2024-11-21 16:13:55 +00:00

Added more documentation

Only the "Big Features" need to be properly documented
This commit is contained in:
Acamaeda 2020-10-01 00:08:01 -04:00
parent dcd175a6d4
commit ae3c6542a4
7 changed files with 232 additions and 248 deletions

View file

@ -6,7 +6,7 @@ This is a very minimal layer with minimal features. Most things will require add
p: {
startData() { return { // startData is a function that returns default data for a layer.
unl: false, // You can add more variables here to add them to your layer.
points: new Decimal(0), // "points" is the internal name for the main resource you get on prestige
points: new Decimal(0), // "points" is the internal name for the main resource of the layer.
}},
color: "#FE0102", // The color for this layer, which affects many elements
@ -16,8 +16,9 @@ p: {
baseResource: "points", // The name of the resource your prestige gain is based on
baseAmount() {return player.points}, // A function to return the current value of that resource
requires() {return new Decimal(200)}, // A function returning the amount of the base needed to gain 1 of the prestige currency.
// Also the amount required to unlock the layer.
requires() {return new Decimal(200)}, // A function returning the amount of the base needed to
// gain 1 of the prestige currency. Also the amount required
// to unlock the layer.
type: "normal", // Determines the formula used for calculating prestige currency.
exponent: 0.5, // "normal" prestige gain is (currency^exponent)

36
docs/challenges.md Normal file
View file

@ -0,0 +1,36 @@
#Challenges
Challenges are stored in the following format:
challs: {
rows: # of rows
cols: # of columns
11: {
[insert challenge info here]
}
etc
}
Each challenge should have an id where the first digit is the row and the second digit is the column. Individual upgrades can have these features:
name: Name of the challenge
desc: A description of what makes the challenge a challenge
reward: A description of the reward's effect
effect() - Optional, calculate and return the values of this upgrade's effects or effects.
effectDisp(x) - Optional, returns a display of the current effects of the upgrade with formatting. Default behavior is to just display the number appropriately formatted.
goal: A Decimal for the goal of the challenge's value.
currencyDisplayName: Optional, if using a goal currency other than basic Points, the name to display for that currency
currencyInternalName: The internal name for that currency
currencyLayer: The internal name of the layer for that currency. If it's not in a layer, omit.
unl() - Return a bool to determine if the challenge is unlocked or not.
onComplete() - Optional, this function will be called when the challenge is newly completed.
countsAs: An array of ids of other challenges in this layer that being in this challenge "counts as" being in.

View file

@ -8,174 +8,18 @@ The main way to add content is through creating layers. You can either add a lay
Most of the time, you won't need to dive deep into the code to create things, but you still can if you really want to.
The Modding Tree uses break_eternity.js to store large values. This means that many numbers are Decimal objects,
and must be treated differently.
###Table of Contents:
- [Basic layer breakdown](docs/basic-layer-breakdown.md): Breaking down the components of a layer with minimal features.
- [Layer features](docs/layer-features.md): Explanations of all of the different properties a layer can be given in layer config.
- [Upgrades](docs/upgrades.md): How to create upgrades for a layer.
- [Milestones](docs/milestones.md): How to create milestones for a layer.
- [Challenges](docs/challenges.md): How to create challenges for a layer.
- [Buyables](docs/buyables.md): Create rebuyable upgrades for your layer (with the option to make them respec-able). Can be used to make Enhancers or Space Buildings.
- [Customized Tab Layouts](docs/custom-tab-layouts.md): An optional way to give your tabs a different layout. You can even create entirely new components to use.
##Table of Contents:
Layer features! In no particular order
-----Layer-defining features-----
startData() - Returns an object containing the default values for any saved data in this layer, including resources, toggles, upgrades, and more.
Required:
unl: a bool determining if it is unlocked or not
points: a Decimal, the main currency for the layer
Useful:
total: A decimal, tracks total amount of main currency
best: A decimal, tracks highest amount of main currency
order: used to keep track of relevant layers unlocked before this one.
upgrades, milestones, challs: Empty arrays. Needed if you are using the corresponding feature in this layer
color: A color associated with this layer, used in many places. (A string in hex format with a #)
row: The row of the layer
resource: Name of the main currency you gain by resetting on this layer.
effect() - Optional, returns the current strength of any effects derived from the layer's main currency
effectDescription() - Optional, returns a description of the effect this layer has
tabFormat: Optional. If you use this, you can make a custom layout for your tab, using any components defined in vue.js.
-----Prestige formula features-----
baseResource: The resource that determines how much of the main currency you gain on reset.
baseAmount() - How you get the current value of baseResource (e.g. baseAmount() {player.points})
requires() - A function that determines how much base resource you need to reset as a Decimal value. It can return a constant value, or change based on your order.
type: can be "normal" or "static". "normal" means the amount of currency you gain is independent of its current amount (like Prestige). "static" means that the cost grows depending on how much you already have (like Boosters). They both use different formulas. normal = x^exponent, static is base^(x^exponent)
exponent: Prestige currency exponent
base: Prestige currency base, only needed for "static" layers
resCeil: Bool, true if the resource needs to be rounded up
canBuyMax() - Only needed for static layers, used to determine if buying max is permitted.
gainMult(), gainExp() - Used to determine the multiplier and exponent on resource gain from upgrades and boosts and such. Plug all of them in here.
onPrestige(gain) - Optional, 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.
-----Other features-----
doReset(resettingLayer) - Optional, is triggered when a layer on a row greater than or equal to this one. If you use it, you can choose what to keep via milestones and such. Without it, the default is to reset everything on the row, but only if it was triggered by a higher layer.
convertToDecimal() - Only needed if you have non-standard Decimal values in startData, to these values from strings to Decimals after loading.
layerShown() - Returns a bool determining if this layer's node should be visible on the tree.
update(diff) - Optional, part of the main loop, use it for any passive resource production or time-based things. diff is the time since the last update. Suggestion: use addPoints(layer, gain) when generating points to automatically update the best and total amounts.
automate() - Optional, use it to activate any autobuyers or auto-resets or similar on this layer, if appropriate.
updateTemp() - Optional, use it to update anything in the "temp" object.
resetsNothing() - Optional, returns true if this layer shouldn't trigger any resets.
incr_order: Optional, an array of layer names, their order will increase by 1 when this one is first unlocked. Can be empty.
branches: Optional, an array of pairs consisting of a layer name and a number from 1 to 3. When this layer is visible, for each pair, there will be a branch from this layer to the other layer with a color determined by the number.
-----Upgrades-----
Upgrades are stored in the following format:
upgrades: {
rows: # of rows
cols: # of columns
11: {
[insert upgrade info here]
}
etc
}
Each upgrade should have an id where the first digit is the row and the second digit is the column. Individual upgrades can have these features:
desc: A description of the upgrade's effect
effect() - Optional, calculate and return the values of this upgrade's effects or effects.
effectDisp() - Optional, returns a display of the current effects of the upgrade with formatting. Default behavior is to just display the number appropriately formatted.
cost: A Decimal for the cost of the upgrade.
currencyDisplayName: Optional, if using a currency other than the main one for this layer, the name to display for that currency
currencyInternalName: The internal name for that currency
currencyLayer: The internal name of the layer for that currency. If it's not in a layer (like Points), omit.
unl() - Return a bool to determine if the upgrade is unlocked or not.
onPurchase() - Optional, this function will be called when the upgrade is purchased. Good for upgrades like "makes this layer act like it was unlocked first".
-----Milestones-----
Milestones should be formatted like this:
milestones: {
0: {
[insert milestone info here]
}
etc
}
Milestone features:
requirementDesc: A string describing the requirement
effectDesc: A string describing the reward for having the milestone
done() - A function to determine if the milestone has been fulfilled.
toggles: Creates toggle buttons on the milestone when it is unlocked. An array of paired items, one pair per toggle. The first is the internal name of the layer the value being toggled is stored in, and the second is the internal name of the variable to toggle. (e.g. [["b", "auto"], ["g", "auto"])
-----Challenges-----
Challenges are stored in the following format:
challs: {
rows: # of rows
cols: # of columns
11: {
[insert challenge info here]
}
etc
}
Each challenge should have an id where the first digit is the row and the second digit is the column. Individual upgrades can have these features:
name: Name of the challenge
desc: A description of what makes the challenge a challenge
reward: A description of the reward's effect
effect() - Optional, calculate and return the values of this upgrade's effects or effects.
effectDisp(x) - Optional, returns a display of the current effects of the upgrade with formatting. Default behavior is to just display the number appropriately formatted.
goal: A Decimal for the goal of the challenge's value.
currencyDisplayName: Optional, if using a goal currency other than basic Points, the name to display for that currency
currencyInternalName: The internal name for that currency
currencyLayer: The internal name of the layer for that currency. If it's not in a layer, omit.
unl() - Return a bool to determine if the challenge is unlocked or not.
onComplete() - Optional, this function will be called when the challenge is newly completed.
countsAs: An array of ids of other challenges in this layer that being in this challenge "counts as" being in.
- [Basic layer breakdown](basic-layer-breakdown.md): Breaking down the components of a layer with minimal features.
- [Layer features](layer-features.md): Explanations of all of the different properties that you can give a layer.
- [Upgrades](upgrades.md): How to create upgrades for a layer.
- [Milestones](milestones.md): How to create milestones for a layer.
- [Challenges](challenges.md): How to create challenges for a layer.
- [Buyables](buyables.md): Create rebuyable upgrades for your layer (with the option to make them respec-able).
Can be used to make Enhancers or Space Buildings.
- [Customized Tab Layouts](custom-tab-layouts.md): An optional way to give your tabs a different layout.
You can even create entirely new components to use.

View file

@ -1,77 +0,0 @@
#Layer Features
This is a more comprehensive list of established features to add to layers.
You can add more freely, if you want to have other functions or values associated with your layer. These have special functionality, though.
#Layer-defining features
- startData: A function to return the default save data for this layer. Add any variables you have to it.
Any nonstandard Decimal variables need to be added to convertToDecimal as well.
Required values:
unl: a bool determining if it is unlocked or not
points: a Decimal, the main currency for the layer
Useful:
total: A decimal, tracks total amount of main prestige currency
best: A decimal, tracks highest amount of main prestige currency
order: used to keep track of relevant layers unlocked before this one.
- color: A color associated with this layer, used in many places. (A string in hex format with a #)
- row: The row of the layer, starting at 0.
- resource: Name of the main currency you gain by resetting on this layer.
- effect: **optional**, A function that calculates and returns the current values of any bonuses inherent to the main currency.
Returns a value or an object containing multiple values.
- effectDescription: **optional**, A function that returns a description of this effect
- style: A CSS object containing any CSS that should affect this layer's whole tab.
- [tabFormat: Use this if you want to add extra things to your tab or change the layout. Explanations are in a separate file.](docs/custom-tab-layouts.md)
-----Prestige formula features-----
baseResource: The resource that determines how much of the main currency you gain on reset.
baseAmount() - How you get the current value of baseResource (e.g. baseAmount() {player.points})
requires() - A function that determines how much base resource you need to reset as a Decimal value. It can return a constant value, or change based on your order.
type: can be "normal" or "static". "normal" means the amount of currency you gain is independent of its current amount (like Prestige). "static" means that the cost grows depending on how much you already have (like Boosters). They both use different formulas. normal = x^exponent, static is base^(x^exponent)
exponent: Prestige currency exponent
base: Prestige currency base, only needed for "static" layers
resCeil: Bool, true if the resource needs to be rounded up
canBuyMax() - Only needed for static layers, used to determine if buying max is permitted.
gainMult(), gainExp() - Used to determine the multiplier and exponent on resource gain from upgrades and boosts and such. Plug all of them in here.
onPrestige(gain) - Optional, 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.
-----Other features-----
doReset(resettingLayer) - Optional, is triggered when a layer on a row greater than or equal to this one. If you use it, you can choose what to keep via milestones and such. Without it, the default is to reset everything on the row, but only if it was triggered by a higher layer.
convertToDecimal() - Only needed if you have non-standard Decimal values in startData, to these values from strings to Decimals after loading.
layerShown() - Returns a bool determining if this layer's node should be visible on the tree.
update(diff) - Optional, part of the main loop, use it for any passive resource production or time-based things. diff is the time since the last update. Suggestion: use addPoints(layer, gain) when generating points to automatically update the best and total amounts.
automate() - Optional, use it to activate any autobuyers or auto-resets or similar on this layer, if appropriate.
updateTemp() - Optional, use it to update anything in the "temp" object.
resetsNothing() - Optional, returns true if this layer shouldn't trigger any resets.
incr_order: Optional, an array of layer names, their order will increase by 1 when this one is first unlocked. Can be empty.
branches: Optional, an array of pairs consisting of a layer name and a number from 1 to 3. When this layer is visible, for each pair, there will be a branch from this layer to the other layer with a color determined by the number.

129
docs/layer-features.md Normal file
View file

@ -0,0 +1,129 @@
#Layer Features
This is a more comprehensive list of established features to add to layers.
You can add more freely, if you want to have other functions or values associated with your layer. These have special functionality, though.
Key:
- No label: This is required and the game will crash if it isn't included.
- **sometimes required**: This is may be required, depending on other things in the layer.
- **optional**: You can leave this out if you don't intend to use that feature for the layer.
#Layer Definition features
- startData(): A function to return the default save data for this layer. Add any variables you have to it.
Any nonstandard Decimal variables need to be added to convertToDecimal as well.
Standard values:
Required:
unl: a bool determining if this layer is unlocked or not
points: a Decimal, the main currency for the layer
Optional:
total: A Decimal, tracks total amount of main prestige currency
best: A Decimal, tracks highest amount of main prestige currency
order: used to keep track of relevant layers unlocked before this one.
- color: A color associated with this layer, used in many places. (A string in hex format with a #)
- row: The row of the layer, starting at 0.
- resource: Name of the main currency you gain by resetting on this layer.
- effect(): **optional**, A function that calculates and returns the current values of any bonuses
inherent to the main currency.
Returns a value or an object containing multiple values.
- effectDescription(): **optional**, A function that returns a description of this effect
- layerShown(): A function returning a bool which determines if this layer's node should be visible on the tree.
- hotkeys: An array containing information on any hotkeys associated with this layer:
```hotkeys: [
{key: "p", // What the hotkey button is. Use uppercase if it's combined with shift, or "ctrl+x" if ctrl is.
desc: "p: reset your points for prestige points", // The description of the hotkey used in the How To Play
onPress(){if (player.p.unl) doReset("p")}}, // This function is called when the hotkey is pressed.
],```
- style: A CSS object containing any CSS that should affect this layer's whole tab.
- tabFormat: Use this if you want to add extra things to your tab or change the layout.
#Big features
- upgrades: A grid of one-time purchases which can have unique upgrade conditions, currency costs, and bonuses.
[Explanations are in a separate file.](upgrades.md)
- milestones: A list of bonuses gained upon reaching certain thresholds of a resource. Often used for automation/QOL.
[Explanations are in a separate file.](milestones.md)
- challenges: The player can enter challenges, which make the game harder. If they reach a goal and beat the challenge,
they recieve a bonus.
[Explanations are in a separate file.](challenges.md)
- buyables: Effectively upgrades that can be bought multiple times, and are optionally respeccable.
[Explanations are in a separate file.](buyables.md)
#Prestige formula features
- baseResource: The name of the resource that determines how much of the main currency you gain on reset.
- baseAmount(): A function that gets the current value of the base resource.
- requires(): A function returning the amount of the base needed to gain 1 of the prestige currency.
Also the amount required to unlock the layer.
You might make the value increase if another layer was unlocked first (based on "order").
- type: Determines which prestige formula you use.
"normal": The amount of currency you gain is independent of its current amount (like Prestige).
formula before bonuses is based on `baseResource^exponent`
"static: The cost is dependent on your total after reset.
formula before bonuses is based on `base^(x^exponent)`
- exponent: Used as described above.
- base: **sometimes required**, required for "static" layers, used as described above.
- resCeil: **optional**, a bool, which is true if the resource cost needs to be rounded up.
(use if the base resource is a "static" currency.)
- canBuyMax(): **sometimes required**, required for static layers, function used to determine if buying max is permitted.
- gainMult(), gainExp(): Functions that calculate the multiplier and exponent on resource gain from upgrades
and boosts and such. Plug in any bonuses here.
- 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.
#Other features
- doReset(resettingLayer): **optional**, is triggered when a layer on a row greater than or equal to this one does a reset.
If you use it, you can choose what to keep via milestones and such.
Without it, the default is to reset everything on the row, but only
if it was triggered by a layer in a higher row.
- convertToDecimal(): **sometimes required**, required if you add non-standard Decimals to startData.
This function converts those values from a string to a Decimal (used when loading).
- update(diff): **optional**, this function is called every game tick. Use it for any passive resource production or
time-based things. diff is the time since the last tick.
Suggestion: use addPoints(layer, gain) when generating points to automatically
update the best and total amounts.
- automate(): **optional**, this function is called every game tick, after production. Use it to activate any
autobuyers or auto-resets or similar on this layer, if appropriate.
- updateTemp(): **optional**, this function is called every game tick. use it to update anything in the "tmp" object.
You don't really need it. tmp is used as a way to store calculated values so it doesn't repeat
calculations.
- resetsNothing(): **optional**, returns true if this layer shouldn't trigger any resets when you prestige.
- incr_order: **optional**, an array of layer ids. When this layer is unlocked for the first time, the "order" value
for any not-yet-unlocked layers in this list increases. This can be used to make them harder to unlock.
- branches: **optional**, determines what lines should appear on the tree when this layer is visible.
An array of pairs consisting of a layer name and a number from 1 to 3.
A branch will appear connecting this layer to the correspodnding layer, with the color based on the number.
You should add the branch value to the layer that is unlocked second.

21
docs/milestones.md Normal file
View file

@ -0,0 +1,21 @@
#Milestones
Milestones should be formatted like this:
milestones: {
0: {
[insert milestone info here]
}
etc
}
Milestone features:
requirementDesc: A string describing the requirement
effectDesc: A string describing the reward for having the milestone
done() - A function to determine if the milestone has been fulfilled.
toggles: Creates toggle buttons on the milestone when it is unlocked. An array of paired items, one pair per toggle. The first is the internal name of the layer the value being toggled is stored in, and the second is the internal name of the variable to toggle. (e.g. [["b", "auto"], ["g", "auto"])

30
docs/upgrades.md Normal file
View file

@ -0,0 +1,30 @@
#Upgrades
Upgrades are stored in the following format:
upgrades: {
rows: # of rows
cols: # of columns
11: {
[insert upgrade info here]
}
etc
}
Each upgrade should have an id where the first digit is the row and the second digit is the column. Individual upgrades can have these features:
desc: A description of the upgrade's effect
effect() - Optional, calculate and return the values of this upgrade's effects or effects.
effectDisp() - Optional, returns a display of the current effects of the upgrade with formatting. Default behavior is to just display the number appropriately formatted.
cost: A Decimal for the cost of the upgrade.
currencyDisplayName: Optional, if using a currency other than the main one for this layer, the name to display for that currency
currencyInternalName: The internal name for that currency
currencyLayer: The internal name of the layer for that currency. If it's not in a layer (like Points), omit.
unl() - Return a bool to determine if the upgrade is unlocked or not.
onPurchase() - Optional, this function will be called when the upgrade is purchased. Good for upgrades like "makes this layer act like it was unlocked first".