#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: ```js 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.