2.5 KiB
#Achievements
Achievements are awarded to the player when they meet a certain goal, and give some benefit. Currently, they are pretty basic, but additional features will be added later to help.
You can make global achievements by putting them in a side layer (make its row "side" instead of a number)
Useful functions for dealing with achievements and implementing their effects:
- hasAchievement(layer, id): determine if the player has the Achievement
- achievementEffect(layer, id): Returns the current effects of the achievement, if any
Achievements should be formatted like this:
achievements: {
rows: # of rows
cols: # of columns
11: {
name: "Blah",
more features
}
etc
}
Each achievement should have an id where the first digit is the row and the second digit is the column. Individual achievement can have these features:
-
name: optional, displayed at the top of the achievement. The only visible text. It can also be a function that returns updating text. Can use basic HTML.
-
done(): A function returning a boolean to determine if the achievement should be awarded.
-
goalTooltip: Appears when the achievement is hovered over and locked. This is to display the goal (or a hint). It can also be a function that returns updating text. Can use basic HTML.
-
doneTooltip: Appears when the achievement is hovered over and completed. This can display what the player achieved (the goal), and the rewards, if any. It can also be a function that returns updating text. Can use basic HTML.
-
effect(): optional, A function that calculates and returns the current values of any bonuses from the achievement. Can return a value or an object containing multiple values.
-
unlocked(): optional, A function returning a bool to determine if the achievement is visible or not. Default is unlocked.
-
onComplete() - optional, this function will be called when the achievement is completed.
-
style: Optional, Applies CSS to this achievement, in the form of an object where the keys are CSS attributes, and the values are the values for those attributes (both as strings)
-
layer: Assigned automagically. It's the same value as the name of this layer, so you can do player[this.layer].points or similar
-
id: Assigned automagically. It's the "key" which the achievement was stored under, for convenient access. The achievement in the example's id is 11.