mirror of
https://github.com/Acamaeda/The-Modding-Tree.git
synced 2024-11-21 16:13:55 +00:00
More features and customization for Challenges
This commit is contained in:
parent
906ece54ab
commit
029f5546c0
3 changed files with 60 additions and 7 deletions
|
@ -150,13 +150,13 @@
|
||||||
<div v-if="layers[layer].challs" class="upgTable">
|
<div v-if="layers[layer].challs" class="upgTable">
|
||||||
<div v-for="row in layers[layer].challs.rows" class="upgRow">
|
<div v-for="row in layers[layer].challs.rows" class="upgRow">
|
||||||
<div v-for="col in layers[layer].challs.cols">
|
<div v-for="col in layers[layer].challs.cols">
|
||||||
<div v-if="layers[layer].challs[row*10+col].unl()" v-bind:class="{hChall: true, done: player[layer].challs.includes(row*10+col), canComplete: (player.points.gte(layers[layer].challs[row*10+col].goal)&&tmp.challActive[layer][row*10+col]&&!player[layer].challs.includes(row*10+col))}">
|
<div v-if="layers[layer].challs[row*10+col].unl()" v-bind:class="{hChall: true, done: player[layer].challs.includes(row*10+col), canComplete: tmp.challActive[layer][row*10+col]&&!player[layer].challs.includes(row*10+col)&&canCompleteChall(layer, row*10+col)}">
|
||||||
<br><h3>{{layers[layer].challs[row*10+col].name}}</h3><br><br>
|
<br><h3>{{layers[layer].challs[row*10+col].name}}</h3><br><br>
|
||||||
<button v-bind:class="{ longUpg: true, can: true, [layer]: true }" v-on:click="startChall(layer, row*10+col)">{{player[layer].active==(row*10+col)?(player.points.gte(layers[layer].challs[row*10+col].goal)?"Finish":"Exit Early"):(player[layer].challs.includes(row*10+col)?"Completed":"Start")}}</button><br><br>
|
<button v-bind:class="{ longUpg: true, can: true, [layer]: true }" v-bind:style="{'background-color': layers[layer].color}" v-on:click="startChall(layer, row*10+col)">{{player[layer].active==(row*10+col)?(canCompleteChall(layer, row*10+col)?"Finish":"Exit Early"):(player[layer].challs.includes(row*10+col)?"Completed":"Start")}}</button><br><br>
|
||||||
{{layers[layer].challs[row*10+col].desc}}<br>
|
{{layers[layer].challs[row*10+col].desc}}<br>
|
||||||
Goal: {{format(layers[layer].challs[row*10+col].goal)}} Points<br>
|
Goal: {{format(layers[layer].challs[row*10+col].goal)}} {{layers[layer].challs[row*10+col].currencyDisplayName ? layers[layer].challs[row*10+col].currencyDisplayName : "points"}}<br>
|
||||||
Reward: {{layers[layer].challs[row*10+col].reward}}<br>
|
Reward: {{layers[layer].challs[row*10+col].reward}}<br>
|
||||||
<span v-if="layers[layer].challs[row*10+col].effDisp!==undefined">Currently: {{layers[layer].challs[row*10+col].effDisp(layers[layer].challs[row*10+col].effect())}}</span>
|
<span v-if="layers[layer].challs[row*10+col].effDisp!==undefined">Currently: {{(layers[layer].challs[row*10+col].effDisp) ? (layers[layer].challs[row*10+col].effDisp(layers[layer].challs[row*10+col].effect())) : format(layers[layer].challs[row*10+col].effect())}}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
36
js/game.js
36
js/game.js
|
@ -36,6 +36,14 @@ function getPointGen() {
|
||||||
return gain
|
return gain
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Function to determine if the player is in a challenge
|
||||||
|
function inChallenge(layer, id){
|
||||||
|
if (player.c.active==x) return true
|
||||||
|
|
||||||
|
if (layers[layer].challs[id].countsAs)
|
||||||
|
return layers[layer].challs[id].countsAs.includes(id)
|
||||||
|
}
|
||||||
|
|
||||||
function save() {
|
function save() {
|
||||||
localStorage.setItem("prestige-tree", btoa(JSON.stringify(player)))
|
localStorage.setItem("prestige-tree", btoa(JSON.stringify(player)))
|
||||||
}
|
}
|
||||||
|
@ -263,7 +271,6 @@ function layerUnl(layer) {
|
||||||
|
|
||||||
function rowReset(row, layer) {
|
function rowReset(row, layer) {
|
||||||
for (lr in ROW_LAYERS[row]){
|
for (lr in ROW_LAYERS[row]){
|
||||||
console.log(lr)
|
|
||||||
if(layers[lr].doReset)
|
if(layers[lr].doReset)
|
||||||
layers[lr].doReset(layer)
|
layers[lr].doReset(layer)
|
||||||
else
|
else
|
||||||
|
@ -412,13 +419,36 @@ function startChall(layer, x) {
|
||||||
updateChallTemp(layer)
|
updateChallTemp(layer)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function canCompleteChall(layer, x)
|
||||||
|
{
|
||||||
|
if (x != player[layer].active) return
|
||||||
|
|
||||||
|
let chall = layers[layer].challs[x]
|
||||||
|
|
||||||
|
if (chall.currencyInternalName){
|
||||||
|
let name = chall.currencyInternalName
|
||||||
|
if (chall.currencyLayer){
|
||||||
|
let lr = chall.currencyLayer
|
||||||
|
return !(player[lr][name].lt(chall.goal))
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return !(player[name].lt(chall.cost))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return !(player[layer].points.lt(chall.cost))
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
function completeChall(layer, x) {
|
function completeChall(layer, x) {
|
||||||
var x = player[layer].active
|
var x = player[layer].active
|
||||||
if (!x) return
|
if (!x) return
|
||||||
if (!player.points.gte(layers[layer].challs[x].goal)) return
|
if (! canCompleteChall(layer, x)) return
|
||||||
if (!player[layer].challs.includes(x)) {
|
if (!player[layer].challs.includes(x)) {
|
||||||
//if (layer == "h" && x == 62) needCanvasUpdate = true
|
needCanvasUpdate = true
|
||||||
player[layer].challs.push(x);
|
player[layer].challs.push(x);
|
||||||
|
if (layers[layer].challs[x].onComplete) layers[layer].challs[x].onComplete()
|
||||||
}
|
}
|
||||||
delete player[layer].active
|
delete player[layer].active
|
||||||
updateChallTemp(layer)
|
updateChallTemp(layer)
|
||||||
|
|
23
js/layers.js
23
js/layers.js
|
@ -7,6 +7,7 @@ var layers = {
|
||||||
total: new Decimal(0),
|
total: new Decimal(0),
|
||||||
upgrades: [],
|
upgrades: [],
|
||||||
milestones: [],
|
milestones: [],
|
||||||
|
challs: [],
|
||||||
beep: false,
|
beep: false,
|
||||||
}},
|
}},
|
||||||
color: "#4BEC13",
|
color: "#4BEC13",
|
||||||
|
@ -81,6 +82,28 @@ var layers = {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
challs: {
|
||||||
|
rows: 1,
|
||||||
|
cols: 1,
|
||||||
|
11: {
|
||||||
|
name: "Fun",
|
||||||
|
desc: "Makes the game 0% harder",
|
||||||
|
unl() { return player.c.best.gt(0) },
|
||||||
|
goal: new Decimal("20"),
|
||||||
|
currencyDisplayName: "lollipops", // Use if using a nonstandard currency
|
||||||
|
currencyInternalName: "points", // Use if using a nonstandard currency
|
||||||
|
currencyLayer: "c", // Leave empty if not in a layer
|
||||||
|
effect() {
|
||||||
|
let ret = player.c.points.add(1).tetrate(0.02)
|
||||||
|
return ret;
|
||||||
|
},
|
||||||
|
effDisp(x) { return format(x)+"x" },
|
||||||
|
countsAs: [12, 21], // Use this for if a challenge includes the effects of other challenges. Being in this challenge "counts as" being in these.
|
||||||
|
reward: "Says hi",
|
||||||
|
onComplete() {console.log("hiii")} // Called when you complete the challenge
|
||||||
|
},
|
||||||
|
},
|
||||||
doReset(layer){
|
doReset(layer){
|
||||||
if(layers[layer].row > layers["c"].row) fullLayerReset('c') // This is actually the default behavior
|
if(layers[layer].row > layers["c"].row) fullLayerReset('c') // This is actually the default behavior
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in a new issue