mirror of
https://github.com/Acamaeda/The-Modding-Tree.git
synced 2024-11-21 16:13:55 +00:00
Added better support for more files.
This commit is contained in:
parent
9fe8717a66
commit
e3fc9756ba
11 changed files with 244 additions and 227 deletions
|
@ -1,5 +1,9 @@
|
||||||
# The Modding Tree changelog:
|
# The Modding Tree changelog:
|
||||||
|
|
||||||
|
# v2.6.3 - 6/11/21
|
||||||
|
- Added better support for using multiple layer files and similar. See modFiles in modInfo.
|
||||||
|
- The demo now has each layer in its own file as well.
|
||||||
|
|
||||||
# v2.6.2.2 - 6/10/21
|
# v2.6.2.2 - 6/10/21
|
||||||
- Fixed an error message regarding popup.css.
|
- Fixed an error message regarding popup.css.
|
||||||
|
|
||||||
|
|
|
@ -16,10 +16,12 @@
|
||||||
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.12"></script>
|
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.12"></script>
|
||||||
<script src="js/technical/break_eternity.js"></script>
|
<script src="js/technical/break_eternity.js"></script>
|
||||||
<script src="js/technical/layerSupport.js"></script>
|
<script src="js/technical/layerSupport.js"></script>
|
||||||
<script src="js/Demo/demoTree.js"></script>
|
|
||||||
<script src="js/Demo/demoLayers.js"></script>
|
|
||||||
<script src="js/Demo/demoMod.js"></script>
|
<script src="js/Demo/demoMod.js"></script>
|
||||||
<script src="js/technical/temp.js"></script>
|
|
||||||
|
<script src="js/technical/loader.js"></script>
|
||||||
|
|
||||||
|
<script src="js/technical/temp.js" id = "temp"></script>
|
||||||
<script src="js/technical/displays.js"></script>
|
<script src="js/technical/displays.js"></script>
|
||||||
|
|
||||||
<script src="js/game.js"></script>
|
<script src="js/game.js"></script>
|
||||||
|
|
|
@ -10,6 +10,8 @@ Here's a breakdown of what's in it:
|
||||||
- id: The id for your mod, a unique string that is used to determine savefile location. Be sure to set it when you start making a mod, and don't change it later because it will erase all saves.
|
- id: The id for your mod, a unique string that is used to determine savefile location. Be sure to set it when you start making a mod, and don't change it later because it will erase all saves.
|
||||||
- author: The name of the author, displayed in the info tab.
|
- author: The name of the author, displayed in the info tab.
|
||||||
- pointsName: This changes what is displayed instead of "points" for the main currency. (It does not affect it in the code.)
|
- pointsName: This changes what is displayed instead of "points" for the main currency. (It does not affect it in the code.)
|
||||||
|
- modFiles: An array of file addresses which will be loaded for this mod. Using smaller files makes it easier to find what you're looking for.
|
||||||
|
|
||||||
- discordName, discordLink: If you have a Discord server or other discussion place, you can add a link to it.
|
- discordName, discordLink: If you have a Discord server or other discussion place, you can add a link to it.
|
||||||
|
|
||||||
"discordName" is the text on the link, and "discordLink" is the url of an invite. If you're using a Discord invite, please make sure it's set to never expire.
|
"discordName" is the text on the link, and "discordLink" is the url of an invite. If you're using a Discord invite, please make sure it's set to never expire.
|
||||||
|
|
|
@ -16,9 +16,10 @@
|
||||||
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.12"></script>
|
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.12"></script>
|
||||||
<script src="js/technical/break_eternity.js"></script>
|
<script src="js/technical/break_eternity.js"></script>
|
||||||
<script src="js/technical/layerSupport.js"></script>
|
<script src="js/technical/layerSupport.js"></script>
|
||||||
<script src="js/tree.js"></script>
|
|
||||||
<script src="js/layers.js"></script>
|
|
||||||
<script src="js/mod.js"></script>
|
<script src="js/mod.js"></script>
|
||||||
|
<script src="js/technical/loader.js"></script>
|
||||||
|
|
||||||
<script src="js/technical/temp.js"></script>
|
<script src="js/technical/temp.js"></script>
|
||||||
<script src="js/technical/displays.js"></script>
|
<script src="js/technical/displays.js"></script>
|
||||||
|
|
||||||
|
|
|
@ -2,16 +2,18 @@ let modInfo = {
|
||||||
name: "The Modding Tree",
|
name: "The Modding Tree",
|
||||||
id: "modbase",
|
id: "modbase",
|
||||||
pointsName: "points",
|
pointsName: "points",
|
||||||
|
modFiles: ["Demo/layers/c.js", "Demo/layers/f.js", "Demo/layers/a.js", "Demo/demoTree.js"],
|
||||||
|
|
||||||
|
|
||||||
discordName: "",
|
discordName: "",
|
||||||
discordLink: "",
|
discordLink: "",
|
||||||
initialStartPoints: new Decimal (10), // Used for hard resets and new players
|
initialStartPoints: new Decimal (10), // Used for hard resets and new players
|
||||||
|
|
||||||
offlineLimit: 1, // In hours
|
offlineLimit: 1, // In hours
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set your version in num and name
|
// Set your version in num and name
|
||||||
let VERSION = {
|
let VERSION = {
|
||||||
num: "2.6.2.2",
|
num: "2.6.3",
|
||||||
name: "Fixed Reality",
|
name: "Fixed Reality",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
65
js/Demo/layers/a.js
Normal file
65
js/Demo/layers/a.js
Normal file
|
@ -0,0 +1,65 @@
|
||||||
|
|
||||||
|
// A side layer with achievements, with no prestige
|
||||||
|
addLayer("a", {
|
||||||
|
startData() { return {
|
||||||
|
unlocked: true,
|
||||||
|
points: new Decimal(0),
|
||||||
|
}},
|
||||||
|
color: "yellow",
|
||||||
|
resource: "achievement power",
|
||||||
|
row: "side",
|
||||||
|
tooltip() { // Optional, tooltip displays when the layer is locked
|
||||||
|
return ("Achievements")
|
||||||
|
},
|
||||||
|
achievementPopups: true,
|
||||||
|
achievements: {
|
||||||
|
11: {
|
||||||
|
image: "discord.png",
|
||||||
|
name: "Get me!",
|
||||||
|
done() {return true}, // This one is a freebie
|
||||||
|
goalTooltip: "How did this happen?", // Shows when achievement is not completed
|
||||||
|
doneTooltip: "You did it!", // Showed when the achievement is completed
|
||||||
|
},
|
||||||
|
12: {
|
||||||
|
name: "Impossible!",
|
||||||
|
done() {return false},
|
||||||
|
goalTooltip: "Mwahahaha!", // Shows when achievement is not completed
|
||||||
|
doneTooltip: "HOW????", // Showed when the achievement is completed
|
||||||
|
textStyle: {'color': '#04e050'},
|
||||||
|
},
|
||||||
|
13: {
|
||||||
|
name: "EIEIO",
|
||||||
|
done() {return player.f.points.gte(1)},
|
||||||
|
tooltip: "Get a farm point.\n\nReward: The dinosaur is now your friend (you can max Farm Points).", // Showed when the achievement is completed
|
||||||
|
onComplete() {console.log("Bork bork bork!")}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
midsection: ["grid", "blank"],
|
||||||
|
grid: {
|
||||||
|
maxRows: 3,
|
||||||
|
rows: 2,
|
||||||
|
cols: 2,
|
||||||
|
getStartData(id) {
|
||||||
|
return id
|
||||||
|
},
|
||||||
|
getUnlocked(id) { // Default
|
||||||
|
return true
|
||||||
|
},
|
||||||
|
getCanClick(data, id) {
|
||||||
|
return player.points.eq(10)
|
||||||
|
},
|
||||||
|
getStyle(data, id) {
|
||||||
|
return {'background-color': '#'+ (data*1234%999999)}
|
||||||
|
},
|
||||||
|
onClick(data, id) { // Don't forget onHold
|
||||||
|
player[this.layer].grid[id]++
|
||||||
|
},
|
||||||
|
getTitle(data, id) {
|
||||||
|
return "Gridable #" + id
|
||||||
|
},
|
||||||
|
getDisplay(data, id) {
|
||||||
|
return data
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
)
|
|
@ -75,7 +75,6 @@ addLayer("c", {
|
||||||
if(hasMilestone(this.layer, this.id)) return {
|
if(hasMilestone(this.layer, this.id)) return {
|
||||||
'background-color': '#1111DD'
|
'background-color': '#1111DD'
|
||||||
}},
|
}},
|
||||||
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
challenges: {
|
challenges: {
|
||||||
|
@ -385,221 +384,6 @@ addLayer("c", {
|
||||||
resetDescription: "Melt your points into ",
|
resetDescription: "Melt your points into ",
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// This layer is mostly minimal but it uses a custom prestige type and a clickable
|
|
||||||
addLayer("f", {
|
|
||||||
infoboxes:{
|
|
||||||
coolInfo: {
|
|
||||||
title: "Lore",
|
|
||||||
titleStyle: {'color': '#FE0000'},
|
|
||||||
body: "DEEP LORE!",
|
|
||||||
bodyStyle: {'background-color': "#0000EE"}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
startData() { return {
|
|
||||||
unlocked: false,
|
|
||||||
points: new Decimal(0),
|
|
||||||
boop: false,
|
|
||||||
clickables: {[11]: "Start"}, // Optional default Clickable state
|
|
||||||
}},
|
|
||||||
color: "#FE0102",
|
|
||||||
requires() {return new Decimal(10)},
|
|
||||||
resource: "farm points",
|
|
||||||
baseResource: "points",
|
|
||||||
baseAmount() {return player.points},
|
|
||||||
type: "static",
|
|
||||||
exponent: 0.5,
|
|
||||||
base: 3,
|
|
||||||
roundUpCost: true,
|
|
||||||
canBuyMax() {return false},
|
|
||||||
//directMult() {return new Decimal(player.c.otherThingy)},
|
|
||||||
|
|
||||||
row: 1,
|
|
||||||
layerShown() {return true},
|
|
||||||
branches: ["c"], // When this layer appears, a branch will appear from this layer to any layers here. Each entry can be a pair consisting of a layer id and a color.
|
|
||||||
|
|
||||||
tooltipLocked() { // Optional, tooltip displays when the layer is locked
|
|
||||||
return ("This weird farmer dinosaur will only see you if you have at least " + this.requires() + " points. You only have " + formatWhole(player.points))
|
|
||||||
},
|
|
||||||
midsection: [
|
|
||||||
"blank", ['display-image', 'https://images.beano.com/store/24ab3094eb95e5373bca1ccd6f330d4406db8d1f517fc4170b32e146f80d?auto=compress%2Cformat&dpr=1&w=390'],
|
|
||||||
["display-text", "Bork bork!"]
|
|
||||||
],
|
|
||||||
// The following are only currently used for "custom" Prestige type:
|
|
||||||
prestigeButtonText() { //Is secretly HTML
|
|
||||||
if (!this.canBuyMax()) return "Hi! I'm a <u>weird dinosaur</u> and I'll give you a Farm Point in exchange for all of your points and lollipops! (At least " + formatWhole(tmp[this.layer].nextAt) + " points)"
|
|
||||||
if (this.canBuyMax()) return "Hi! I'm a <u>weird dinosaur</u> and I'll give you <b>" + formatWhole(tmp[this.layer].resetGain) + "</b> Farm Points in exchange for all of your points and lollipops! (You'll get another one at " + formatWhole(tmp[this.layer].nextAtDisp) + " points)"
|
|
||||||
},
|
|
||||||
getResetGain() {
|
|
||||||
return getResetGain(this.layer, useType = "static")
|
|
||||||
},
|
|
||||||
getNextAt(canMax=false) { //
|
|
||||||
return getNextAt(this.layer, canMax, useType = "static")
|
|
||||||
},
|
|
||||||
canReset() {
|
|
||||||
return tmp[this.layer].baseAmount.gte(tmp[this.layer].nextAt)
|
|
||||||
},
|
|
||||||
// This is also non minimal, a Clickable!
|
|
||||||
clickables: {
|
|
||||||
|
|
||||||
masterButtonPress() {
|
|
||||||
if (getClickableState(this.layer, 11) == "Borkened...")
|
|
||||||
player[this.layer].clickables[11] = "Start"
|
|
||||||
},
|
|
||||||
masterButtonText() {return (getClickableState(this.layer, 11) == "Borkened...") ? "Fix the clickable!" : "Does nothing"}, // Text on Respec button, optional
|
|
||||||
11: {
|
|
||||||
title: "Clicky clicky!", // Optional, displayed at the top in a larger font
|
|
||||||
display() { // Everything else displayed in the buyable button after the title
|
|
||||||
let data = getClickableState(this.layer, this.id)
|
|
||||||
return "Current state:<br>" + data
|
|
||||||
},
|
|
||||||
unlocked() { return player[this.layer].unlocked },
|
|
||||||
canClick() {
|
|
||||||
return getClickableState(this.layer, this.id) !== "Borkened..."},
|
|
||||||
onClick() {
|
|
||||||
switch(getClickableState(this.layer, this.id)){
|
|
||||||
case "Start":
|
|
||||||
player[this.layer].clickables[this.id] = "A new state!"
|
|
||||||
break;
|
|
||||||
case "A new state!":
|
|
||||||
player[this.layer].clickables[this.id] = "Keep going!"
|
|
||||||
break;
|
|
||||||
case "Keep going!":
|
|
||||||
player[this.layer].clickables[this.id] = "Maybe that's a bit too far..."
|
|
||||||
break;
|
|
||||||
case "Maybe that's a bit too far...":
|
|
||||||
makeParticles(coolParticle, 4)
|
|
||||||
player[this.layer].clickables[this.id] = "Borkened..."
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
player[this.layer].clickables[this.id] = "Start"
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
onHold(){
|
|
||||||
console.log("Clickkkkk...")
|
|
||||||
},
|
|
||||||
style() {
|
|
||||||
switch(getClickableState(this.layer, this.id)){
|
|
||||||
case "Start":
|
|
||||||
return {'background-color': 'green'}
|
|
||||||
break;
|
|
||||||
case "A new state!":
|
|
||||||
return {'background-color': 'yellow'}
|
|
||||||
break;
|
|
||||||
case "Keep going!":
|
|
||||||
return {'background-color': 'orange'}
|
|
||||||
break;
|
|
||||||
case "Maybe that's a bit too far...":
|
|
||||||
return {'background-color': 'red'}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
return {}
|
|
||||||
break;
|
|
||||||
}},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
},
|
|
||||||
)
|
|
||||||
|
|
||||||
// A side layer with achievements, with no prestige
|
|
||||||
addLayer("a", {
|
|
||||||
startData() { return {
|
|
||||||
unlocked: true,
|
|
||||||
points: new Decimal(0),
|
|
||||||
}},
|
|
||||||
color: "yellow",
|
|
||||||
resource: "achievement power",
|
|
||||||
row: "side",
|
|
||||||
tooltip() { // Optional, tooltip displays when the layer is locked
|
|
||||||
return ("Achievements")
|
|
||||||
},
|
|
||||||
achievementPopups: true,
|
|
||||||
achievements: {
|
|
||||||
11: {
|
|
||||||
image: "discord.png",
|
|
||||||
name: "Get me!",
|
|
||||||
done() {return true}, // This one is a freebie
|
|
||||||
goalTooltip: "How did this happen?", // Shows when achievement is not completed
|
|
||||||
doneTooltip: "You did it!", // Showed when the achievement is completed
|
|
||||||
},
|
|
||||||
12: {
|
|
||||||
name: "Impossible!",
|
|
||||||
done() {return false},
|
|
||||||
goalTooltip: "Mwahahaha!", // Shows when achievement is not completed
|
|
||||||
doneTooltip: "HOW????", // Showed when the achievement is completed
|
|
||||||
textStyle: {'color': '#04e050'},
|
|
||||||
},
|
|
||||||
13: {
|
|
||||||
name: "EIEIO",
|
|
||||||
done() {return player.f.points.gte(1)},
|
|
||||||
tooltip: "Get a farm point.\n\nReward: The dinosaur is now your friend (you can max Farm Points).", // Showed when the achievement is completed
|
|
||||||
onComplete() {console.log("Bork bork bork!")}
|
|
||||||
},
|
|
||||||
},
|
|
||||||
midsection: ["grid", "blank"],
|
|
||||||
grid: {
|
|
||||||
maxRows: 3,
|
|
||||||
rows: 2,
|
|
||||||
cols: 2,
|
|
||||||
getStartData(id) {
|
|
||||||
return id
|
|
||||||
},
|
|
||||||
getUnlocked(id) { // Default
|
|
||||||
return true
|
|
||||||
},
|
|
||||||
getCanClick(data, id) {
|
|
||||||
return player.points.eq(10)
|
|
||||||
},
|
|
||||||
getStyle(data, id) {
|
|
||||||
return {'background-color': '#'+ (data*1234%999999)}
|
|
||||||
},
|
|
||||||
onClick(data, id) { // Don't forget onHold
|
|
||||||
player[this.layer].grid[id]++
|
|
||||||
},
|
|
||||||
getTitle(data, id) {
|
|
||||||
return "Gridable #" + id
|
|
||||||
},
|
|
||||||
getDisplay(data, id) {
|
|
||||||
return data
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
)
|
|
||||||
|
|
||||||
const coolParticle = {
|
|
||||||
image:"options_wheel.png",
|
|
||||||
spread: 20,
|
|
||||||
gravity: 2,
|
|
||||||
time: 3,
|
|
||||||
rotation (id) {
|
|
||||||
return 20 * (id - 1.5) + (Math.random() - 0.5) * 10
|
|
||||||
},
|
|
||||||
dir() {
|
|
||||||
return (Math.random() - 0.5) * 10
|
|
||||||
},
|
|
||||||
speed() {
|
|
||||||
return (Math.random() + 1.2) * 8
|
|
||||||
},
|
|
||||||
onClick() {
|
|
||||||
console.log("yay")
|
|
||||||
},
|
|
||||||
onMouseOver() {
|
|
||||||
console.log("hi")
|
|
||||||
},
|
|
||||||
onMouseLeave() {
|
|
||||||
console.log("bye")
|
|
||||||
},
|
|
||||||
update() {
|
|
||||||
//this.width += 1
|
|
||||||
//setDir(this, 135)
|
|
||||||
},
|
|
||||||
layer: 'f',
|
|
||||||
}
|
|
||||||
|
|
||||||
const textParticle = {
|
const textParticle = {
|
||||||
spread: 20,
|
spread: 20,
|
||||||
gravity: 0,
|
gravity: 0,
|
147
js/Demo/layers/f.js
Normal file
147
js/Demo/layers/f.js
Normal file
|
@ -0,0 +1,147 @@
|
||||||
|
// This layer is mostly minimal but it uses a custom prestige type and a clickable
|
||||||
|
addLayer("f", {
|
||||||
|
infoboxes:{
|
||||||
|
coolInfo: {
|
||||||
|
title: "Lore",
|
||||||
|
titleStyle: {'color': '#FE0000'},
|
||||||
|
body: "DEEP LORE!",
|
||||||
|
bodyStyle: {'background-color': "#0000EE"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
startData() { return {
|
||||||
|
unlocked: false,
|
||||||
|
points: new Decimal(0),
|
||||||
|
boop: false,
|
||||||
|
clickables: {[11]: "Start"}, // Optional default Clickable state
|
||||||
|
}},
|
||||||
|
color: "#FE0102",
|
||||||
|
requires() {return new Decimal(10)},
|
||||||
|
resource: "farm points",
|
||||||
|
baseResource: "points",
|
||||||
|
baseAmount() {return player.points},
|
||||||
|
type: "static",
|
||||||
|
exponent: 0.5,
|
||||||
|
base: 3,
|
||||||
|
roundUpCost: true,
|
||||||
|
canBuyMax() {return false},
|
||||||
|
//directMult() {return new Decimal(player.c.otherThingy)},
|
||||||
|
|
||||||
|
row: 1,
|
||||||
|
layerShown() {return true},
|
||||||
|
branches: ["c"], // When this layer appears, a branch will appear from this layer to any layers here. Each entry can be a pair consisting of a layer id and a color.
|
||||||
|
|
||||||
|
tooltipLocked() { // Optional, tooltip displays when the layer is locked
|
||||||
|
return ("This weird farmer dinosaur will only see you if you have at least " + this.requires() + " points. You only have " + formatWhole(player.points))
|
||||||
|
},
|
||||||
|
midsection: [
|
||||||
|
"blank", ['display-image', 'https://images.beano.com/store/24ab3094eb95e5373bca1ccd6f330d4406db8d1f517fc4170b32e146f80d?auto=compress%2Cformat&dpr=1&w=390'],
|
||||||
|
["display-text", "Bork bork!"]
|
||||||
|
],
|
||||||
|
// The following are only currently used for "custom" Prestige type:
|
||||||
|
prestigeButtonText() { //Is secretly HTML
|
||||||
|
if (!this.canBuyMax()) return "Hi! I'm a <u>weird dinosaur</u> and I'll give you a Farm Point in exchange for all of your points and lollipops! (At least " + formatWhole(tmp[this.layer].nextAt) + " points)"
|
||||||
|
if (this.canBuyMax()) return "Hi! I'm a <u>weird dinosaur</u> and I'll give you <b>" + formatWhole(tmp[this.layer].resetGain) + "</b> Farm Points in exchange for all of your points and lollipops! (You'll get another one at " + formatWhole(tmp[this.layer].nextAtDisp) + " points)"
|
||||||
|
},
|
||||||
|
getResetGain() {
|
||||||
|
return getResetGain(this.layer, useType = "static")
|
||||||
|
},
|
||||||
|
getNextAt(canMax=false) { //
|
||||||
|
return getNextAt(this.layer, canMax, useType = "static")
|
||||||
|
},
|
||||||
|
canReset() {
|
||||||
|
return tmp[this.layer].baseAmount.gte(tmp[this.layer].nextAt)
|
||||||
|
},
|
||||||
|
// This is also non minimal, a Clickable!
|
||||||
|
clickables: {
|
||||||
|
|
||||||
|
masterButtonPress() {
|
||||||
|
if (getClickableState(this.layer, 11) == "Borkened...")
|
||||||
|
player[this.layer].clickables[11] = "Start"
|
||||||
|
},
|
||||||
|
masterButtonText() {return (getClickableState(this.layer, 11) == "Borkened...") ? "Fix the clickable!" : "Does nothing"}, // Text on Respec button, optional
|
||||||
|
11: {
|
||||||
|
title: "Clicky clicky!", // Optional, displayed at the top in a larger font
|
||||||
|
display() { // Everything else displayed in the buyable button after the title
|
||||||
|
let data = getClickableState(this.layer, this.id)
|
||||||
|
return "Current state:<br>" + data
|
||||||
|
},
|
||||||
|
unlocked() { return player[this.layer].unlocked },
|
||||||
|
canClick() {
|
||||||
|
return getClickableState(this.layer, this.id) !== "Borkened..."},
|
||||||
|
onClick() {
|
||||||
|
switch(getClickableState(this.layer, this.id)){
|
||||||
|
case "Start":
|
||||||
|
player[this.layer].clickables[this.id] = "A new state!"
|
||||||
|
break;
|
||||||
|
case "A new state!":
|
||||||
|
player[this.layer].clickables[this.id] = "Keep going!"
|
||||||
|
break;
|
||||||
|
case "Keep going!":
|
||||||
|
player[this.layer].clickables[this.id] = "Maybe that's a bit too far..."
|
||||||
|
break;
|
||||||
|
case "Maybe that's a bit too far...":
|
||||||
|
makeParticles(coolParticle, 4)
|
||||||
|
player[this.layer].clickables[this.id] = "Borkened..."
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
player[this.layer].clickables[this.id] = "Start"
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onHold(){
|
||||||
|
console.log("Clickkkkk...")
|
||||||
|
},
|
||||||
|
style() {
|
||||||
|
switch(getClickableState(this.layer, this.id)){
|
||||||
|
case "Start":
|
||||||
|
return {'background-color': 'green'}
|
||||||
|
break;
|
||||||
|
case "A new state!":
|
||||||
|
return {'background-color': 'yellow'}
|
||||||
|
break;
|
||||||
|
case "Keep going!":
|
||||||
|
return {'background-color': 'orange'}
|
||||||
|
break;
|
||||||
|
case "Maybe that's a bit too far...":
|
||||||
|
return {'background-color': 'red'}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return {}
|
||||||
|
break;
|
||||||
|
}},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
|
const coolParticle = {
|
||||||
|
image:"options_wheel.png",
|
||||||
|
spread: 20,
|
||||||
|
gravity: 2,
|
||||||
|
time: 3,
|
||||||
|
rotation (id) {
|
||||||
|
return 20 * (id - 1.5) + (Math.random() - 0.5) * 10
|
||||||
|
},
|
||||||
|
dir() {
|
||||||
|
return (Math.random() - 0.5) * 10
|
||||||
|
},
|
||||||
|
speed() {
|
||||||
|
return (Math.random() + 1.2) * 8
|
||||||
|
},
|
||||||
|
onClick() {
|
||||||
|
console.log("yay")
|
||||||
|
},
|
||||||
|
onMouseOver() {
|
||||||
|
console.log("hi")
|
||||||
|
},
|
||||||
|
onMouseLeave() {
|
||||||
|
console.log("bye")
|
||||||
|
},
|
||||||
|
update() {
|
||||||
|
//this.width += 1
|
||||||
|
//setDir(this, 135)
|
||||||
|
},
|
||||||
|
layer: 'f',
|
||||||
|
}
|
|
@ -4,7 +4,7 @@ var gameEnded = false;
|
||||||
|
|
||||||
// Don't change this
|
// Don't change this
|
||||||
const TMT_VERSION = {
|
const TMT_VERSION = {
|
||||||
tmtNum: "2.6.2.2",
|
tmtNum: "2.6.3",
|
||||||
tmtName: "Fixed Reality"
|
tmtName: "Fixed Reality"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -130,11 +130,11 @@ function rowReset(row, layer) {
|
||||||
for (lr in ROW_LAYERS[row]){
|
for (lr in ROW_LAYERS[row]){
|
||||||
if(layers[lr].doReset) {
|
if(layers[lr].doReset) {
|
||||||
|
|
||||||
Vue.set(player[lr], "activeChallenge", null) // Exit challenges on any row reset on an equal or higher row
|
if (!isNaN(row)) Vue.set(player[lr], "activeChallenge", null) // Exit challenges on any row reset on an equal or higher row
|
||||||
run(layers[lr].doReset, layers[lr], layer)
|
run(layers[lr].doReset, layers[lr], layer)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if(tmp[layer].row > tmp[lr].row && row !== "side" && !isNaN(row)) layerDataReset(lr)
|
if(tmp[layer].row > tmp[lr].row && !isNaN(row)) layerDataReset(lr)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,10 +3,11 @@ let modInfo = {
|
||||||
id: "mymod",
|
id: "mymod",
|
||||||
author: "nobody",
|
author: "nobody",
|
||||||
pointsName: "points",
|
pointsName: "points",
|
||||||
|
modFiles: ["layers.js", "tree.js"],
|
||||||
|
|
||||||
discordName: "",
|
discordName: "",
|
||||||
discordLink: "",
|
discordLink: "",
|
||||||
initialStartPoints: new Decimal (10), // Used for hard resets and new players
|
initialStartPoints: new Decimal (10), // Used for hard resets and new players
|
||||||
|
|
||||||
offlineLimit: 1, // In hours
|
offlineLimit: 1, // In hours
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
9
js/technical/loader.js
Normal file
9
js/technical/loader.js
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
// Load files
|
||||||
|
|
||||||
|
for (file in modInfo.modFiles) {
|
||||||
|
let script = document.createElement("script");
|
||||||
|
script.setAttribute("src", "js/" + modInfo.modFiles[file]);
|
||||||
|
script.setAttribute("async", "false");
|
||||||
|
document.head.insertBefore(script, document.getElementById("temp"));
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue