mirror of
https://github.com/Acamaeda/The-Modding-Tree.git
synced 2024-11-24 01:11:46 +00:00
Auto-supply amounts to buyable cost/effect
This commit is contained in:
parent
349a94c19f
commit
4af32d5c71
7 changed files with 31 additions and 5 deletions
|
@ -1,5 +1,7 @@
|
|||
# The Modding Tree changelog:
|
||||
|
||||
- Amount is automatically supplied to buyable cost and effect functions.
|
||||
|
||||
# v2.4.1 - 4/29/21
|
||||
- A number of minor fixes, many thanks to thepaperpilot.
|
||||
- The respec confirmation checkbox is now part of the respec-button component.
|
||||
|
|
|
@ -14,6 +14,8 @@
|
|||
<script src="js/demo/demoLayers.js"></script>
|
||||
<script src="js/demo/demoMod.js"></script>
|
||||
<script src="js/technical/temp.js"></script>
|
||||
<script src="js/technical/displays.js"></script>
|
||||
|
||||
<script src="js/game.js"></script>
|
||||
<script src="js/utils.js"></script>
|
||||
<script src="js/technical/systemComponents.js"></script>
|
||||
|
|
|
@ -32,9 +32,11 @@ Features:
|
|||
|
||||
- title: **optional**. displayed at the top in a larger font. It can also be a function that returns updating text.
|
||||
|
||||
- cost(): cost for buying the next buyable. Can have an optional argument "x" to calculate the cost of the x+1th object, but needs to use "current amount" as a default value for x. (x is a `Decimal`). Can return an object if there are multiple currencies.
|
||||
- cost(): cost for buying the next buyable. Can have an optional argument "x" to calculate the cost of the x+1th purchase. (x is a `Decimal`).
|
||||
Can return an object if there are multiple currencies.
|
||||
|
||||
- effect(): **optional**. A function that calculates and returns the current values of bonuses of this buyable. Can return a value or an object containing multiple values.
|
||||
- effect(): **optional**. A function that calculates and returns the current values of bonuses of this buyable. Can have an optional argument "x", similar to cost.
|
||||
Can return a value or an object containing multiple values.
|
||||
|
||||
- display(): A function returning everything that should be displayed on the buyable after the title, likely including the description, amount bought, cost, and current effect. Can use basic HTML.
|
||||
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
<script src="js/layers.js"></script>
|
||||
<script src="js/mod.js"></script>
|
||||
<script src="js/technical/temp.js"></script>
|
||||
<script src="js/technical/displays.js"></script>
|
||||
<script src="js/game.js"></script>
|
||||
<script src="js/utils.js"></script>
|
||||
<script src="js/technical/systemComponents.js"></script>
|
||||
|
|
|
@ -158,12 +158,12 @@ addLayer("c", {
|
|||
respecMessage: "Are you sure? Respeccing these doesn't accomplish much.",
|
||||
11: {
|
||||
title: "Exhancers", // Optional, displayed at the top in a larger font
|
||||
cost(x=player[this.layer].buyables[this.id]) { // cost for buying xth buyable, can be an object if there are multiple currencies
|
||||
cost(x) { // cost for buying xth buyable, can be an object if there are multiple currencies
|
||||
if (x.gte(25)) x = x.pow(2).div(25)
|
||||
let cost = Decimal.pow(2, x.pow(1.5))
|
||||
return cost.floor()
|
||||
},
|
||||
effect(x=player[this.layer].buyables[this.id]) { // Effects of owning x of the items, x is a decimal
|
||||
effect(x) { // Effects of owning x of the items, x is a decimal
|
||||
let eff = {}
|
||||
if (x.gte(0)) eff.first = Decimal.pow(25, x.pow(1.1))
|
||||
else eff.first = Decimal.pow(1/25, x.times(-1).pow(1.1))
|
||||
|
|
0
js/technical/displays.js
Normal file
0
js/technical/displays.js
Normal file
|
@ -7,7 +7,7 @@ var NaNalert = false;
|
|||
var activeFunctions = [
|
||||
"startData", "onPrestige", "doReset", "update", "automate",
|
||||
"buy", "buyMax", "respec", "onComplete", "onPurchase", "onPress", "onClick", "masterButtonPress",
|
||||
"sellOne", "sellAll", "pay",
|
||||
"sellOne", "sellAll", "pay", "actualCostFunction", "actualEffectFunction",
|
||||
]
|
||||
|
||||
var noCall = doNotCallTheseFunctionsEveryTick
|
||||
|
@ -36,6 +36,7 @@ function setupTemp() {
|
|||
tmp[layer].prestigeButtonText = {}
|
||||
tmp[layer].computedNodeStyle = []
|
||||
setupBarStyles(layer)
|
||||
setupBuyables(layer)
|
||||
}
|
||||
temp = tmp
|
||||
}
|
||||
|
@ -230,3 +231,21 @@ function setupBarStyles(layer){
|
|||
bar.fillDims = {}
|
||||
}
|
||||
}
|
||||
|
||||
function setupBuyables(layer) {
|
||||
for (id in layers[layer].buyables) {
|
||||
if (!isNaN(id)) {
|
||||
let b = layers[layer].buyables[id]
|
||||
b.actualCostFunction = b.cost
|
||||
b.cost = function(x) {
|
||||
x = x ?? player[this.layer].buyables[this.id]
|
||||
return layers[this.layer].buyables[this.id].actualCostFunction(x)
|
||||
}
|
||||
b.actualEffectFunction = b.effect
|
||||
b.effect = function(x) {
|
||||
x = x ?? player[this.layer].buyables[this.id]
|
||||
return layers[this.layer].buyables[this.id].actualEffectFunction(x)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue