Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-02.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-02.md
new file mode 100644
index 0000000000..e9b5f2df18
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-02.md
@@ -0,0 +1,144 @@
+---
+id: 5d5a8dd907f328a948d398ce
+title: Part 02
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Create a variable called `gold` and set it to the value 50.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(gold === 50);
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-03.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-03.md
new file mode 100644
index 0000000000..1b50a6b076
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-03.md
@@ -0,0 +1,148 @@
+---
+id: 5d5a8f1c07f328a948d398cf
+title: Part 03
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Create a variable called `currentWeapon` and set it to 0. When a name has two words, the convention is to use so-called "lowerCamelCase". The first word is all lowercase, and then the first letter of every preceding word is uppercased.
+
+When a name has two words, the convention is to use so-called "lowerCamelCase". The variable name should look like this: currentWeapon.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(currentWeapon === 0);
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-04.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-04.md
new file mode 100644
index 0000000000..4822ef5bd9
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-04.md
@@ -0,0 +1,149 @@
+---
+id: 5d5a903507f328a948d398d0
+title: Part 04
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+We've been declaring variables with the `var` keyword. However, in modern JavaScript, it's better to use `let` instead of `var` because it fixes a number of unusual behaviors with `var` that make it difficult to reason about.
+
+Change every `var` to `let`.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(/let\s+xp\s*\=\s*0\;?/.test(code) && /let\s+health\s*\=\s*100\;?/.test(code) && /let\s+gold\s*\=\s*50\;?/.test(code) && /let\s+currentWeapon\s*\=\s*0\;?/.test(code));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-05.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-05.md
new file mode 100644
index 0000000000..07c0775bb6
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-05.md
@@ -0,0 +1,150 @@
+---
+id: 5d5aaa5807f328a948d398d1
+title: Part 05
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Now you will declare a variable without initializing it.
+
+Using the `let` keyword, declare a variable called `fighting` but don't set it equal to anything. Just end the line with a semicolon right after the variable name.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(/let\s+fighting\s*;?/.test(code) && fighting === undefined);
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-07.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-07.md
new file mode 100644
index 0000000000..e9b52aea99
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-07.md
@@ -0,0 +1,155 @@
+---
+id: 5d5aac9c07f328a948d398d3
+title: Part 07
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Now set the inventory to equal the string "stick".
+
+Strings must be surrounded with double quotes `"`, single quotes `'`, or backticks `.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(inventory === "stick");
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-08.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-08.md
new file mode 100644
index 0000000000..71971a3c67
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-08.md
@@ -0,0 +1,159 @@
+---
+id: 5d5aad2307f328a948d398d4
+title: Part 08
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Since the inventory can store multiple items, change the value of `inventory` to an array with the items stick, dagger, and sword.
+
+Here is an example of a variable sandwich that equals a three-item array:
+
+```js
+let sandwich = ["peanut butter", "jelly", "bread"];
+```
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(inventory.includes('stick') && inventory.includes('dagger') && inventory.includes('sword'));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-09.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-09.md
new file mode 100644
index 0000000000..4feaa24aa5
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-09.md
@@ -0,0 +1,153 @@
+---
+id: 5d5aae1207f328a948d398d5
+title: Part 09
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+For now, let's start the player with just the stick. Delete the dagger and sword items in the array. More items will be added to the array during game play.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(inventory[0] === 'stick' && inventory.length === 1);
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-10.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-10.md
new file mode 100644
index 0000000000..dabdf01228
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-10.md
@@ -0,0 +1,159 @@
+---
+id: 5d5ab57f07f328a948d398d6
+title: Part 10
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+In order to update HTML elements on the page, you need to get references to them in your JavaScript code. The code `let el = document.querySelector("#el");` gets a reference to an HTML element with an `id` of `el` and assigns it to the variable `el`.
+
+Get a reference to the HTML element with the `id` of `button1` and assign it to a variable with the name `button1`.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ # testString: assert(typeof button1 === "object" && button1.id === 'button1' && button1.innerHTML === 'Go to store'); # More flexible test, but JS needs to be in a separate file
+ testString: assert(/let\s+button1\s*\=\s*document.querySelector\(\s*[\'\"\`]\s*\#button1\s*[\'\"\`]\s*\);?/.test(code));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-101.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-101.md
new file mode 100644
index 0000000000..89372f9668
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-101.md
@@ -0,0 +1,515 @@
+---
+id: 5d7e02c88360d21c6826a9b7
+title: Part 101
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Check if health is less than or equal to zero. If it is, call the `lose()` function.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(attack.toString().match(/^\s*if\s*\(\s*health\s*\<\=\s*0\s*\)\s*\{\s*lose\(\s*\);?\s*\}/m));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-102.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-102.md
new file mode 100644
index 0000000000..b210342fd8
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-102.md
@@ -0,0 +1,532 @@
+---
+id: 5d7e06728360d21c6826a9b8
+title: Part 102
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+An `else` statement can be conditional with an `else if` statement. At the end of the `if` statement, add an `else if` statement to check if `monsterHealth` is less than or equal to zero. Inside the `else if` block, call the `defeatMonster()` function.
+
+Here is an example of an `if` statement with `else if` and `else`:
+
+```js
+if (num > 15) {
+ return "Bigger than 15";
+} else if (num < 5) {
+ return "Smaller than 5";
+} else {
+ return "Between 5 and 15";
+}
+```
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(attack.toString().match(/^\s*if\s*\(\s*health\s*\<\=\s*0\s*\)\s*\{\s*lose\(\s*\);?\s*\}\s*else if\s*\(\s*monsterHealth\s*\<\=\s*0\s*\)\s*\{\s*defeatMonster\(\s*\)\;?\s*\}/m));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-103.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-103.md
new file mode 100644
index 0000000000..d68c01c25c
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-103.md
@@ -0,0 +1,528 @@
+---
+id: 5d7e077e8360d21c6826a9b9
+title: Part 103
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+At the end of the code add two empty functions named `defeatMonster` and `lose`.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(typeof defeatMonster === 'function' && typeof lose === 'function');
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-104.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-104.md
new file mode 100644
index 0000000000..ce79c3c5b1
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-104.md
@@ -0,0 +1,535 @@
+---
+id: 5d7e13798360d21c6826a9bb
+title: Part 104
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Inside the `dodge` function, set `text.innerText` equal to "You dodge the attack from the [monster's name]." Instead of "[monster's name]", get the monster's name with `monsters[fighting].name`.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: fightDragon(), dodge(), assert(text.innerText === 'You dodge the attack from the dragon.');
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-105.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-105.md
new file mode 100644
index 0000000000..1eae1719a3
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-105.md
@@ -0,0 +1,539 @@
+---
+id: 5d7f3b6c7c4263f469c36b17
+title: Part 105
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+In the `defeatMonster` function, set `gold` to equal `gold` plus the monster's level times 6.7. You can get the monster's level with `monsters[fighting].level`.
+
+Here is how you would set `num` to equal `num` plus five times eight: `num += 5 * 8`. Remember that `Math.floor()` rounds any number passed to it down to the nearest whole number.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: gold = 10, fightSlime(), defeatMonster(), assert(gold === 23);
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-107.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-107.md
new file mode 100644
index 0000000000..75a5409fc4
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-107.md
@@ -0,0 +1,542 @@
+---
+id: 5d7f410b7c4263f469c36b19
+title: Part 107
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Now set the `innerText` properties of `goldText` and `xpText` to the updated values.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: xp = 10, gold = 10, fightSlime(), defeatMonster(), assert(goldText.innerText === '23' && xpText.innerText === '12');
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-108.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-108.md
new file mode 100644
index 0000000000..82ede305f7
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-108.md
@@ -0,0 +1,546 @@
+---
+id: 5d7f41fa7c4263f469c36b1a
+title: Part 108
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Finish the `defeatMonster` function by calling the `update()` function and pass in `locations[4]`.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(defeatMonster.toString().match(/^\s*update\(\s*locations\[\s*4\s*\]\s*\)/m));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-109.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-109.md
new file mode 100644
index 0000000000..fa2674c01b
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-109.md
@@ -0,0 +1,553 @@
+---
+id: 5d7f43947c4263f469c36b1b
+title: Part 109
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Add a new object in the `locations` array with all the same properties as the other objects in the array. Set `name` to "kill monster". Set `"button text"` to `["Go to town square", "Go to town square", "Go to town square"]`. Set `"button functions"` to `[goTown, goTown, goTown]`. And set `text` to "The monster screams Arg! as it dies. You gain experience points and find gold.".
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: |
+ assert.deepStrictEqual(locations[4], {name: "kill monster","button text": ["Go to town square", "Go to town square", "Go to town square"],"button functions": [goTown, goTown, goTown],text: "The monster screams Arg! as it dies. You gain experience points and find gold."});
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-11.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-11.md
new file mode 100644
index 0000000000..02699639eb
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-11.md
@@ -0,0 +1,156 @@
+---
+id: 5d5b66ce07f328a948d398d7
+title: Part 11
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+You can also declare variables with the `const` key word. Since `button1` is a constant that will never change, switch the `let` keyword that declares the variable to `const`.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(/const\s+button1\s*/.test(code));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-110.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-110.md
new file mode 100644
index 0000000000..ba488707c3
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-110.md
@@ -0,0 +1,559 @@
+---
+id: 5d7f44ac7c4263f469c36b1c
+title: Part 110
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+The word "Arg!" should have quotes around it. Besides escaping quotes, there is another way you can include quote marks inside a quote. Change the double quotes to single quotes around the sentence, "The monster screams Arg! as it dies. You gain experience points and find gold". Then add double quotes around "Arg!"
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: |
+ assert.deepStrictEqual(locations[4], {name: "kill monster","button text": ["Go to town square", "Go to town square", "Go to town square"],"button functions": [goTown, goTown, goTown],text: 'The monster screams "Arg!" as it dies. You gain experience points and find gold.'});
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-111.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-111.md
new file mode 100644
index 0000000000..a35bfc0e2b
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-111.md
@@ -0,0 +1,568 @@
+---
+id: 5d7f459421b11cdaa3f6b15f
+title: Part 111
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+While you're working in the `locations` array, add another object at the end. Set `name` to "lose". Set `"button text"` to `["REPLAY?", "REPLAY?", "REPLAY?"]`. Set `"button functions"` to `[restart, restart, restart]`. And set `text` to "You die. ☠️".
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: |
+ assert.deepStrictEqual(locations[5], {name: "lose", "button text": ["REPLAY?", "REPLAY?", "REPLAY?"],"button functions": [restart, restart, restart],text: "You die. ☠️"});
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-112.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-112.md
new file mode 100644
index 0000000000..764211becd
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-112.md
@@ -0,0 +1,574 @@
+---
+id: 5d7f4d9421b11cdaa3f6b160
+title: Part 112
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+After a monster is defeated the monster stat box should no longer display. On the first line of the `update` function add: `monsterStats.style.display = "none";`.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: fightSlime(), defeatMonster(), assert(monsterStats.style.display === 'none');
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-114.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-114.md
new file mode 100644
index 0000000000..3cc5f27cc4
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-114.md
@@ -0,0 +1,588 @@
+---
+id: 5d80c3c021b11cdaa3f6b165
+title: Part 114
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+At the end of the code, create a `restart` function. Inside the function, set `xp` to 0, set `health` to 100, set `gold` to 50, set `currentWeapon` to 0, and set `inventory` to `["stick"]`. Also, update the `innerText` properties of `goldText`, `healthText`, and `xpText` to their current values. Finally, call the `goTown()` function.
+
+After this step is a good time to test the game so far.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: currentWeapon = 1, inventory = ['stick', 'dagger'], fightSlime(), attack(), defeatMonster(), restart(), assert(xp === 0 && gold === 50 && currentWeapon === 0 && inventory[0] === 'stick' && inventory.length === 1 && goldText.innerText === '50' && healthText.innerText === '100' && xpText.innerText === '0' && text.innerText === 'You are in the town square. You see a sign that says "Store."');
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-115.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-115.md
new file mode 100644
index 0000000000..3e9fba9bd4
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-115.md
@@ -0,0 +1,602 @@
+---
+id: 5d80d20d21b11cdaa3f6b166
+title: Part 115
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Inside the `attack` function, update the contents of the `else if` statement. Instead of calling the `defeatMonster` function right away, create an `if` statement with an `else` statement. If the player is fighting the dragon (`fighting === 2`), then call the `winGame` function. Else, call the `defeatMonster` function.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(attack.toString().match(/^\s*\}\s*else\s*if\s*\(\s*monsterHealth\s*\<\=\s*0\s*\)\s*\{\s*if\s*\(\s*fighting\s*===\s*2\)\s*\{\s*winGame\(\s*\)\;?\s*\}\s*else\s*\{\s*defeatMonster\(\s*\)\;?\s*\}\s*\}/m));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-116.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-116.md
new file mode 100644
index 0000000000..5d310b3d9d
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-116.md
@@ -0,0 +1,616 @@
+---
+id: 5d80d67021b11cdaa3f6b167
+title: Part 116
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+The conditional operator, also called the ternary operator, can be used as a one line if-else expression. The syntax is: `condition ? statement-if-true : statement-if-false;`.
+
+Change the if-else expression from the last challenge to use the ternary operator instead. Here is an example:
+
+```js
+if (age >= 18) {
+ adultFunction();
+} else {
+ kidFunction();
+}
+
+// The above if-else expression does the same thing as the following line
+
+age >= 18 ? adultFunction() : kidFunction();
+```
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(attack.toString().match(/^\s*\}\s*else\s*if\s*\(\s*monsterHealth\s*\<\=\s*0\s*\)\s*\{\s*fighting\s*\=\=\=\s*2\s*\?\s*winGame\(\s*\)\s*\:\s*defeatMonster\(\s*\)\;?\s*\}/m));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-117.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-117.md
new file mode 100644
index 0000000000..914a1a0ef6
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-117.md
@@ -0,0 +1,602 @@
+---
+id: 5d80da7521b11cdaa3f6b168
+title: Part 117
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+After the `lose` function, create a function called `winGame`. Inside the `winGame` function, call the `update` function and pass in `locations[6]`.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(winGame.toString().replace(/\s/g, '').includes('update(locations[6])'));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-118.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-118.md
new file mode 100644
index 0000000000..c523fd5be5
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-118.md
@@ -0,0 +1,613 @@
+---
+id: 5dbab6d36ef5fe3a704f848c
+title: Part 118
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Add another object in the `locations` array. Everything should be the same as the "lose" element, except the `name` should be "win" and the text should be "You defeat the dragon! YOU WIN THE GAME! 🎉"
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: |
+ assert.deepStrictEqual(locations[6], { name: "win", "button text": ["Fight slime", "Fight fanged beast", "Go to town square"], "button functions": [restart, restart, restart], text: "You defeat the dragon! YOU WIN THE GAME! 🎉" });
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-119.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-119.md
new file mode 100644
index 0000000000..691be04dad
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-119.md
@@ -0,0 +1,620 @@
+---
+id: 5dbabb746ef5fe3a704f848d
+title: Part 119
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+The game could be complete now, but let's make it more interesting.
+
+Inside the `attack` function, change the line `health -= monsters[fighting].level;` to `health -= getMonsterAttackValue(monsters[fighting].level);` This sets `health` to equal `health` minus the return value of the `getMonsterAttackValue` function. Also, pass the level of the monster to `getMonsterAttackValue` as an argument.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(attack.toString().replace(/\s/g, '').includes('health-=getMonsterAttackValue(monsters[fighting].level'));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-12.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-12.md
new file mode 100644
index 0000000000..726724e892
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-12.md
@@ -0,0 +1,167 @@
+---
+id: 5d64cf8f853b56a21cd16319
+title: Part 12
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Here are the ids of the other HTML elements that we want a reference to in the JavaScript code: `button2`, `button3`, `text`, `xpText`, `healthText`, `goldText`, `monsterStats`, `monsterNameText`, `monsterHealthText`.
+
+Just like you did with `storeButton`, create variables and set them equal to the element references.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(/const\s+button2\s*\=\s*document.querySelector\(\s*[\'\"\`]\s*\#button2\s*[\'\"\`]\s*\);?/.test(code) && /const\s+button3\s*\=\s*document.querySelector\(\s*[\'\"\`]\s*\#button3\s*[\'\"\`]\s*\);?/.test(code) && /const\s+text\s*\=\s*document.querySelector\(\s*[\'\"\`]\s*\#text\s*[\'\"\`]\s*\);?/.test(code) && /const\s+xpText\s*\=\s*document.querySelector\(\s*[\'\"\`]\s*\#xpText\s*[\'\"\`]\s*\);?/.test(code) && /const\s+healthText\s*\=\s*document.querySelector\(\s*[\'\"\`]\s*\#healthText\s*[\'\"\`]\s*\);?/.test(code) && /const\s+goldText\s*\=\s*document.querySelector\(\s*[\'\"\`]\s*\#goldText\s*[\'\"\`]\s*\);?/.test(code) && /const\s+monsterStats\s*\=\s*document.querySelector\(\s*[\'\"\`]\s*\#monsterStats\s*[\'\"\`]\s*\);?/.test(code) && /const\s+monsterNameText|monsterName\s*\=\s*document.querySelector\(\s*[\'\"\`]\s*\#monsterName\s*[\'\"\`]\s*\);?/.test(code) && /const\s+monsterHealthText|monsterHealth\s*\=\s*document.querySelector\(\s*[\'\"\`]\s*\#monsterHealth\s*[\'\"\`]\s*\);?/.test(code));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-120.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-120.md
new file mode 100644
index 0000000000..75a9dd8a2c
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-120.md
@@ -0,0 +1,621 @@
+---
+id: 5dbac08e6ef5fe3a704f848f
+title: Part 120
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Under the `attack` function, create a function with name `getMonsterAttackValue` that takes `level` as a parameter.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(getMonsterAttackValue.toString().replace(/\s/g, '') === 'functiongetMonsterAttackValue(level){}');
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-121.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-121.md
new file mode 100644
index 0000000000..ea302c2e16
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-121.md
@@ -0,0 +1,626 @@
+---
+id: 5dbac0c86ef5fe3a704f8490
+title: Part 121
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+The attack of the monster will be based on the monster's level and player's `xp`. In the `getMonsterAttackValue` function, use `const` to create a variable called `hit`. Set it to equal the equation `(level * 5) - (Math.floor(Math.random() * xp))`.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(getMonsterAttackValue.toString().replace(/\s/g, '').includes('varhit=level*5-Math.floor(Math.random()*xp)'));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-122.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-122.md
new file mode 100644
index 0000000000..d26645770a
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-122.md
@@ -0,0 +1,629 @@
+---
+id: 5dbac1f16ef5fe3a704f8491
+title: Part 122
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Log the value of `hit` to the console to use in debugging.
+
+Here is how to log the value of `num` to the console: `console.log(num);`.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(getMonsterAttackValue.toString().replace(/\s/g, '').includes('console.log(hit)'));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-123.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-123.md
new file mode 100644
index 0000000000..1441409d05
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-123.md
@@ -0,0 +1,639 @@
+---
+id: 5dbac2b06ef5fe3a704f8492
+title: Part 123
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Now return `hit` from the `getMonsterAttackValue` function. The return value of this function is used in the `attack` function.
+
+Here is an example of a function that returns a value:
+
+```js
+function plusThree(num) {
+ let numPlusThree = num + 3;
+ return numPlusThree;
+}
+
+const answer = plusThree(5); // 8
+```
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(getMonsterAttackValue.toString().replace(/\s/g, '').includes('returnhit'));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-124.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-124.md
new file mode 100644
index 0000000000..fee956a651
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-124.md
@@ -0,0 +1,639 @@
+---
+id: 5dbbb5076ef5fe3a704f849d
+title: Part 124
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+If you play the game in its current state you might notice a bug. If your `xp` is high enough, the `getMonsterAttackValue` function will sometimes return a negative number, which will actually add to your total health when fighting a monster!
+
+In `getMonsterAttackValue`, change `return hit` to a ternary operator that returns `hit` if `hit` is greater than 0, or returns 0 if it is not.
+
+For example, here's a function that returns 5 if `tickets` is greater than 3, or returns 0 if it is not:
+
+```js
+function applyDiscount(tickets) {
+ return tickets > 2 : 5 : 0;
+}
+```
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(getMonsterAttackValue.toString().replace(/\s/g, '').includes('returnhit>0?hit:0'));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-125.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-125.md
new file mode 100644
index 0000000000..7f8a5f54b0
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-125.md
@@ -0,0 +1,639 @@
+---
+id: 5dbac6176ef5fe3a704f8493
+title: Part 125
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+In the `attack` function after the line `health -= getMonsterAttackValue(monsters[fighting].level);`, create an empty if expression. For the condition, put the function call `isMonsterHit()`.
+
+Here is an example of an empty if expression with a function call as the condition:
+
+```js
+if (isTrue()) {
+
+}
+```
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(attack.toString().replace(/\s/g, '').includes('if(isMonsterHit()){}'));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-126.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-126.md
new file mode 100644
index 0000000000..2ead7695e2
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-126.md
@@ -0,0 +1,643 @@
+---
+id: 5dbaca566ef5fe3a704f8494
+title: Part 126
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+In the `attack` function, move the line `monsterHealth -= weapons[currentWeapon].power + Math.floor(Math.random() * xp) + 1;` into the `if` block.
+
+Here is an example of code in an `if` block that logs a message to the console:
+
+```js
+if (isTrue()) {
+ console.log("It's true!");
+}
+```
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(attack.toString().replace(/\s/g, '').match(/if\(isMonsterHit\(\)\)\{monsterHealth\-\=weapons\[currentWeapon\]\.power\+Math\.floor\(Math\.random\(\)\*xp\)\+1;?\}/));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-127.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-127.md
new file mode 100644
index 0000000000..97a64c54db
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-127.md
@@ -0,0 +1,637 @@
+---
+id: 5dbae0446ef5fe3a704f8495
+title: Part 127
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Add an `else` expression to the `if` expression. Use the `+=` operator to add the text " You miss." onto the end of `text.innerText`.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(attack.toString().replace(/\s/g, '').match(/if\(isMonsterHit\(\)\)\{monsterHealth\-\=weapons\[currentWeapon\]\.power\+Math\.floor\(Math\.random\(\)\*xp\)\+1;?\}else\{text\.innerText\+\=[\'\"\`]Youmiss.[\'\"\`]\;?\}/));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-128.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-128.md
new file mode 100644
index 0000000000..cd6e0f66a8
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-128.md
@@ -0,0 +1,651 @@
+---
+id: 5dbae1f66ef5fe3a704f8496
+title: Part 128
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Now create the `isMonsterHit` function. It will return a boolean to be used in the `if` expression. Return the result of the comparison `Math.random() > .2`.
+
+Here is a function that returns the result of a comparison:
+
+```js
+function flipHeads() {
+ return Math.random() > .5;
+}
+```
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(isMonsterHit.toString().replace(/\s/g, '').includes('returnMath.random()>.2') || isMonsterHit.toString().replace(/\s/g, '').includes('returnMath.random()>0.2'));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-129.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-129.md
new file mode 100644
index 0000000000..165a22f910
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-129.md
@@ -0,0 +1,649 @@
+---
+id: 5dbba5716ef5fe3a704f8497
+title: Part 129
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+The player should hit if either `Math.random() > .2` OR if the player's health is less than 20. At the end of the return statement, add the "logical or" operator (`||`) and then check if `health` is less than 20.
+
+Here is an example that returns true if either a number is less than 10 or more than 20: `num < 10 || num > 20`.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(isMonsterHit.toString().replace(/\s/g, '').includes('returnMath.random()>.2||health<20') || isMonsterHit.toString().replace(/\s/g, '').includes('returnMath.random()>0.2||health<20'));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-13.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-13.md
new file mode 100644
index 0000000000..71a65c0bc6
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-13.md
@@ -0,0 +1,178 @@
+---
+id: 5d651ee1ee291f75bbd738ee
+title: Part 13
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Make a comment to describe what the next few lines of code will do. Comments can be written with either two forward-slashes `//` or with a multi-line sequence `/* */`. For example, here is a single line comment that says "hello world": `// hello world`.
+
+Write a single line comment that says "initialize buttons".
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(/\/\/\s*[iI]nitialize buttons/.test(code));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-130.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-130.md
new file mode 100644
index 0000000000..a214dc1b8a
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-130.md
@@ -0,0 +1,649 @@
+---
+id: 5dbba70e6ef5fe3a704f8498
+title: Part 130
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+On every attack, there should be a small chance that the player's weapon breaks. At the end of the `attack` function, add an empty `if` expression with the condition `Math.random() <= .1`.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(attack.toString().replace(/\s/g, '').includes('if(Math.random()<=.1){}') || isMonsterHit.toString().replace(/\s/g, '').includes('if(Math.random()<=0.1){}'));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-131.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-131.md
new file mode 100644
index 0000000000..5a6afc8cee
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-131.md
@@ -0,0 +1,663 @@
+---
+id: 5dbba89e6ef5fe3a704f8499
+title: Part 131
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Use the `+=` operator to add "Your [last item in inventory array] breaks." to the end of `text.innerText`. Instead of the bracketed text, it should show the actual item name.
+
+Use `inventory.pop()` to both remove the last element from the array AND return that element. For example:
+
+```js
+let shoppingList = ["milk", "apples", "cereal"];
+console.log("I bought " + shoppingList.pop() + "."); // Logs "I bought cereal."
+// shoppingList now equals ["milk", "apples"]
+```
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(attack.toString().replace(/\s/g, '').match(/if\(Math\.random\(\)\<\=0?\.1\)\{text\.innerText\+\=\"Your\"\+inventory\.pop\(\)\+\"breaks\.\"\;?\}/) || attack.toString().replace(/\s/g, '').match(/if\(Math\.random\(\)\<\=0?\.1\)\{text\.innerText\+\=\"Your\"\.concat\(inventory\.pop\(\)\,\"breaks\.\"\)\;?\}/));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-132.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-132.md
new file mode 100644
index 0000000000..668f182486
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-132.md
@@ -0,0 +1,655 @@
+---
+id: 5dbbaeb56ef5fe3a704f849a
+title: Part 132
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Decrement the value of `currentWeapon` using `--`. For example, say `num` equals 5. After running `num--`, `num` now equals 4.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(attack.toString().replace(/\s/g, '').match(/if\(Math\.random\(\)\<\=0?\.1\)\{text\.innerText\+\=\"Your\"\+inventory\.pop\(\)\+\"breaks\.\"\;?currentWeapon--\;?\}/));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-133.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-133.md
new file mode 100644
index 0000000000..f4d1a0b4c4
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-133.md
@@ -0,0 +1,666 @@
+---
+id: 5dbbb00e6ef5fe3a704f849b
+title: Part 133
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+We don't want a player's only weapon to break.
+
+Use the "logical and" operator (`&&`) to add a second condition to the `if` expression you just wrote. A player's weapon should only be able to break if `inventory.length` does not equal (`!==`) one.
+
+Here is an example of an `if` expression with the conditions that `firstName` equals "Quincy" AND `lastName` does NOT equal "Larson". With `&&`, both conditions must be true or else the entire statement evaluates to false.
+
+```js
+if (firstName === "Quincy" && lastName !== "Larson") {
+ console.log("Cool name but not the creator of freeCodeCamp.org.")
+}
+```
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(attack.toString().replace(/\s/g, '').match(/if\(Math\.random\(\)\<\=0?\.1\&\&inventory\.length\!\=\=1\)\{text\.innerText\+\=\"Your\"\+inventory\.pop\(\)\+\"breaks\.\"\;?currentWeapon--\;?\}/));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-134.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-134.md
new file mode 100644
index 0000000000..027db4f5b2
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-134.md
@@ -0,0 +1,662 @@
+---
+id: 5dbbb1466ef5fe3a704f849c
+title: Part 134
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+The only thing left to add is a mini-game easter egg (a hidden feature).
+
+Add a new function called `easterEgg` that calls the `update` function and passes in `locations[7]` as an argument.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(easterEgg.toString().replace(/\s/g, '').match(/functioneasterEgg\(\)\{(return)?update\(locations\[7\]\)\;?}/));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-135.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-135.md
new file mode 100644
index 0000000000..e43942f587
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-135.md
@@ -0,0 +1,676 @@
+---
+id: 5dbbf3796ef5fe3a704f849e
+title: Part 135
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Add a new object to the `locations` array.
+
+Set `name` to "easter egg", `"button text"` to `["2", "8", "Go to town square?"]`, `"button functions"` to `[pickTwo, pickEight, goTown]`, and `text` to "You find a secret game. Pick a number above. Ten numbers will be randomly chosen between 0 and 10. If the number you choose matches one of the random numbers, you win!"
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: |
+ assert.deepStrictEqual(locations[7], {name: "easter egg","button text": ["2", "8", "Go to town square?"],"button functions": [pickTwo, pickEight, goTown],text: "You find a secret game. Pick a number above. Ten numbers will be randomly chosen between 0 and 10. If the number you choose matches one of the random numbers, you win!"});
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-136.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-136.md
new file mode 100644
index 0000000000..02b1f90b7c
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-136.md
@@ -0,0 +1,689 @@
+---
+id: 5dbbf8d86ef5fe3a704f849f
+title: Part 136
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+At the end of the code, add two new functions named `pickTwo` and `pickEight`.
+
+Inside each function call the `pick()` function. Pass either "2" or "8" as arguments to `pick` depending on the function name.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert( pickTwo.toString().replace(/\s/g, '').includes('pick(2)') && pickEight.toString().replace(/\s/g, '').includes('pick(8)') );
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-137.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-137.md
new file mode 100644
index 0000000000..db4520b416
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-137.md
@@ -0,0 +1,694 @@
+---
+id: 5dbc23a66ef5fe3a704f84a0
+title: Part 137
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Add a `pick` function with a parameter named "guess".
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(pick.toString().replace(/\s/g, '').includes('functionpick(guess){}'));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-138.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-138.md
new file mode 100644
index 0000000000..8f14cf42ce
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-138.md
@@ -0,0 +1,700 @@
+---
+id: 5dbc2c506ef5fe3a704f84a1
+title: Part 138
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Inside `pick`, use `let` to initialize a variable named "numbers" and set it to an empty array.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(pick.toString().replace(/\s/g, '').match(/functionpick\(guess\)\{varnumbers\=\[\]\;?\}/));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-139.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-139.md
new file mode 100644
index 0000000000..f9cf083685
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-139.md
@@ -0,0 +1,715 @@
+---
+id: 5dbc2d056ef5fe3a704f84a2
+title: Part 139
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Inside `pick`, create a `while` loop to run the same code multiple times. The code inside the `while` loop should keep repeating while `numbers.length` is less than 10 and stop once that condition is no longer true.
+
+Here is an example of a while loop that repeats code inside the loop while `i` is less than five.
+
+```js
+let ourArray = [];
+let i = 0;
+while(i < 5) {
+ ourArray.push(i);
+ i++;
+}
+// ourArray now equals [0,1,2,3,4]
+```
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(pick.toString().replace(/\s/g, '').includes('var_LP=Date.now();while(numbers.length<10){if(Date.now()-_LP>100)break;}')); # Take loop protect into account
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-14.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-14.md
new file mode 100644
index 0000000000..9ae76b07b6
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-14.md
@@ -0,0 +1,180 @@
+---
+id: 5d652e5a6e6bf7a6a27aa80a
+title: Part 14
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Designate what the first button in the HTML does by setting the `onclick` property of `button1` to the function name `goStore`. You will create the `goStore` function later. For example, in `button.onclick = openProgram;`, the `onclick` property of `button` is set to `openProgram`.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(/button1\.onclick\s*\=\s*goStore\;?/.test(code));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-140.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-140.md
new file mode 100644
index 0000000000..5d3acab75d
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-140.md
@@ -0,0 +1,706 @@
+---
+id: 5dbc2f2d6ef5fe3a704f84a3
+title: Part 140
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Inside the `while` loop, push a random number between 0 and 10 onto the end of the `numbers` array. Get the random number with `Math.floor(Math.random() * 11)`.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(pick.toString().replace(/\s/g, '').includes('while(numbers.length<10){if(Date.now()-_LP>100)break;numbers.push(Math.floor(Math.random()*11));}')); # Take loop protect into account
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-141.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-141.md
new file mode 100644
index 0000000000..f050965281
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-141.md
@@ -0,0 +1,708 @@
+---
+id: 5dbc33956ef5fe3a704f84a4
+title: Part 141
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+After the `while` loop, set `text.innerText` to equal "You picked [guess]. Here are the random numbers:". Replace [guess] with the actual guess.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: pickTwo(), assert(text.innerText === 'You picked 2. Here are the random numbers:');
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-142.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-142.md
new file mode 100644
index 0000000000..91b5c22287
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-142.md
@@ -0,0 +1,710 @@
+---
+id: 5dbc35326ef5fe3a704f84a5
+title: Part 142
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Before the final end quote in the string you just added, insert the new line escape sequence (`\n`). This will cause the next part you add to `text.innerText` to appear on a new line.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(pick.toString().replace(/\s/g, '').includes('text.innerText="Youpicked"+guess+".Herearetherandomnumbers:\\n";') || pick.toString().replace(/\s/g, '').includes('text.innerText="Youpicked".concat(guess,".Herearetherandomnumbers:\\n");'));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-143.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-143.md
new file mode 100644
index 0000000000..5253ab9b3e
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-143.md
@@ -0,0 +1,722 @@
+---
+id: 5dbfced07736e5ee7d235544
+title: Part 143
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+A `for` loop runs "for" a specific number of times.
+
+We will go over how for loops work in the next several steps. In the meantime, just copy the for loop below and paste it at the end of the `pick` function:
+
+```js
+for (let x = 1; x < 5; x++) {
+
+}
+```
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(pick.toString().replace(/\s/g, '').includes('for(varx=1;x<5;x++){if(Date.now()-_LP2>100)break;}')); # Also test for automatic loop protection
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-144.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-144.md
new file mode 100644
index 0000000000..0727a53f54
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-144.md
@@ -0,0 +1,722 @@
+---
+id: 5dbfd4837736e5ee7d235545
+title: Part 144
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+For loops are declared with three optional expressions separated by semicolons: `for ([initialization]; [condition]; [final-expression])`.
+
+The initialization statement is executed only one time before the loop starts and is often used to define and set up the loop variable. Think of it like declaring a variable to use as a counter in your `for` loop.
+
+Many `for` loops use `i` as an initializer and start from 0, so change `let x = 1;` to `let i = 0;`.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(pick.toString().replace(/\s/g, '').includes('for(vari=0;x<5;x++){if(Date.now()-_LP2>100)break;}')); # Also test for automatic loop protection
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-145.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-145.md
new file mode 100644
index 0000000000..a887ce9fa2
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-145.md
@@ -0,0 +1,720 @@
+---
+id: 5dbfdb737736e5ee7d235546
+title: Part 145
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+The second statement in a `for` loop, the condition statement, is evaluated at the beginning of every loop iteration. The loop will continue as long as it evaluates to true.
+
+We want the loop to run 10 times, so change `x < 5` to `i < 10`.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(pick.toString().replace(/\s/g, '').includes('for(vari=0;i<10;x++){if(Date.now()-_LP2>100)break;}')); # Also test for automatic loop protection
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-146.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-146.md
new file mode 100644
index 0000000000..dbf96091a8
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-146.md
@@ -0,0 +1,720 @@
+---
+id: 5dbfdc377736e5ee7d235547
+title: Part 146
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+The last statement in a `for` loop is the final-expression, and is executed at the end of each loop iteration.
+
+Since we changed the initializer from `x` to `i`, change `x++` to `i++`. This will iterate the initializer `i` by 1 after each loop.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(pick.toString().replace(/\s/g, '').includes('for(vari=0;i<10;i++){if(Date.now()-_LP2>100)break;}')); # Also test for automatic loop protection
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-147.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-147.md
new file mode 100644
index 0000000000..005b147d8b
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-147.md
@@ -0,0 +1,718 @@
+---
+id: 5dbfe2f37736e5ee7d235548
+title: Part 147
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Inside the for loop, use the `+=` operator to add to the end of `text.innerText`. Add the the number at index `i` in the `numbers` array with `numbers[i]`. Then add a new line. So the entire line inside the for loop should look like: `text.innerText += numbers[i] + "\n";`
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert( pick.toString().replace(/\s/g, '').includes('for(vari=0;i<10;i++){if(Date.now()-_LP2>100)break;text.innerText+=numbers[i]+"\\n";}') || pick.toString().replace(/\s/g, '').includes('for(vari=0;i<10;i++){if(Date.now()-_LP2>100)break;text.innerText+="".concat(numbers[i],"\\n");}') ); # Also test for automatic loop protection
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-148.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-148.md
new file mode 100644
index 0000000000..1b985c0c01
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-148.md
@@ -0,0 +1,724 @@
+---
+id: 5dbfeffe7736e5ee7d235549
+title: Part 148
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+The `indexOf()` array method returns the first index at which a given element can be found in the array, or -1 if it is not present.
+
+After the for loop, add an `if` expression to check if the guessed number is in the `numbers` array. The condition of the `if` expression should check if `numbers.indexOf(guess) !== -1`.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert( pick.toString().replace(/\s/g, '').includes('if(numbers.indexOf(guess)!==-1){}') );
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-149.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-149.md
new file mode 100644
index 0000000000..620fbe7262
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-149.md
@@ -0,0 +1,728 @@
+---
+id: 5dbff18d7736e5ee7d23554a
+title: Part 149
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Inside the `if` expression, add the following string to the end of `text.innerText`: "Right! You win 20 gold!" Also, add 20 to the value of `gold` and update `goldText.innerText`.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert( pick.toString().replace(/\s/g, '').includes('text.innerText+="Right!Youwin20gold!";') && pick.toString().replace(/\s/g, '').includes('gold+=20;') && pick.toString().replace(/\s/g, '').includes('goldText.innerText=gold;') );
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-15.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-15.md
new file mode 100644
index 0000000000..19d1833b7f
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-15.md
@@ -0,0 +1,182 @@
+---
+id: 5d653b2d6e6bf7a6a27aa80b
+title: Part 15
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Now set the `onclick` property of `button2` and `button3`. The second button should be set to `goCave` and the third button should be set to `fightDragon`.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(/button2\.onclick\s*\=\s*goCave\;?/.test(code) && /button3\.onclick\s*\=\s*fightDragon\;?/.test(code));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-150.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-150.md
new file mode 100644
index 0000000000..e3addaa879
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-150.md
@@ -0,0 +1,734 @@
+---
+id: 5dbff2d07736e5ee7d23554b
+title: Part 150
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Add an `else` expression. Inside add "Wrong! You lose 10 health!" to the end of `text.innerText`. Also, subtract 10 from `health` and update `healthText.innerText`.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert( pick.toString().replace(/\s/g, '').includes('else{') && pick.toString().replace(/\s/g, '').includes('text.innerText+="Wrong!Youlose10health!";') && pick.toString().replace(/\s/g, '').includes('health-=10;') && pick.toString().replace(/\s/g, '').includes('healthText.innerText=health;') );
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-151.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-151.md
new file mode 100644
index 0000000000..966c31092b
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-151.md
@@ -0,0 +1,741 @@
+---
+id: 5dbffd907736e5ee7d23554c
+title: Part 151
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+At the end of the `else` statement, check if `health` is less than or equal to zero. If so, call the `lose()` function.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert( pick.toString().replace(/\s/g, '').includes('else{text.innerText+="Wrong!Youlose10health!";health-=10;healthText.innerText=health;if(health<=0){lose();}}') );
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-152.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-152.md
new file mode 100644
index 0000000000..0d4821b8b6
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-152.md
@@ -0,0 +1,745 @@
+---
+id: 5dbffe887736e5ee7d23554d
+title: Part 152
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Inside the `locations` array, on the `kill monster` object, "button functions" is currently set to `[goTown, goTown, goTown]`. Change the third `goTown` to `easterEgg`. This is how a player will access the hidden feature of the game.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: |
+ assert.deepStrictEqual(locations[4], {name: "kill monster", "button text": ["Go to town square", "Go to town square", "Go to town square"], "button functions": [goTown, goTown, easterEgg], text: 'The monster screams "Arg!" as it dies. You gain experience points and find gold.'});
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-153.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-153.md
new file mode 100644
index 0000000000..92fba2b846
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-153.md
@@ -0,0 +1,744 @@
+---
+id: 5dc01a727736e5ee7d23554f
+title: Part 153
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Congratulations! You are finished! Now try out the game.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: ''
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-16.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-16.md
new file mode 100644
index 0000000000..a834087919
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-16.md
@@ -0,0 +1,194 @@
+---
+id: 5d653c4d6e6bf7a6a27aa80c
+title: Part 16
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Create the `goStore` function to hold the code that runs whenever the player goes to the store. Here is an example of an empty function called `functionName` (Note the opening curly brace at the end of the first line and the closing curly brace on the second line):
+
+```js
+function functionName() {
+}
+```
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(typeof goStore === 'function');
+ # testString: assert(code.match(/function goStore\s*\(\s*\)\s*\{\s*\}/));
+ # testString: assert.deepStrictEqual(typeof goStore, 'function');
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-17.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-17.md
new file mode 100644
index 0000000000..b10cdbefd3
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-17.md
@@ -0,0 +1,198 @@
+---
+id: 5d6542826e6bf7a6a27aa80d
+title: Part 17
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+For now, make the `goStore` function output the message "Going to store." to the web console. For example, here is a function that outputs the message "Hello World" to the web console (Note that code inside a function should be indented):
+
+```js
+function functionName() {
+ console.log("Hello World");
+}
+```
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ # testString: assert(code.match(/function goStore\s*\(\s*\)\s*\{\s*console\.log\(\s*[\"\'\`]Going to store\.?[\"\'\`]\s*\)\;?\s*\}/));
+ testString: assert(goStore.toString().match(/console\.log\(\s*[\"\'\`]Going to store\.?[\"\'\`]\s*\)/));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-18.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-18.md
new file mode 100644
index 0000000000..8ceb6226ee
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-18.md
@@ -0,0 +1,196 @@
+---
+id: 5d65f2c62012114c7d7c57eb
+title: Part 18
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Similar to the `goStore` function, create a `goCave` function that prints "Going to cave." to the console.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(goCave.toString().match(/console\.log\(\s*[\"\'\`]Going to cave\.?[\"\'\`]\s*\)/));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-19.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-19.md
new file mode 100644
index 0000000000..1480613eb1
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-19.md
@@ -0,0 +1,206 @@
+---
+id: 5d65f4cd2012114c7d7c57ec
+title: Part 19
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Also, create a `fightDragon` function that prints "Fighting dragon." to the console.
+
+When you are finished, you can test out your program in the browser.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(fightDragon.toString().match(/console\.log\(\s*[\"\'\`]Fighting dragon\.?[\"\'\`]\s*\)/));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-20.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-20.md
new file mode 100644
index 0000000000..ae8aed6542
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-20.md
@@ -0,0 +1,212 @@
+---
+id: 5d65f6392012114c7d7c57ed
+title: Part 20
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+When a player clicks the 'Go to store' button, the buttons and text in the game should change.
+Remove the code inside the `goStore` function. Add a new line of code inside the function that updates the text of `button1` so that it says "Buy 10 health (10 gold)".
+
+For example, this code updates the text of `button` to say "Click Me": `button.innerText = "Click Me";`.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ # testString: assert(goStore.toString().match(/button1\.innerText\s*\=\s*[\'\"\`]Buy 10 health \(10 gold\)\.?[\'\"\`]/));
+ testString: assert((() => { goStore(); return button1.innerText === "Buy 10 health (10 gold)" })());
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-21.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-21.md
new file mode 100644
index 0000000000..2d418592d5
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-21.md
@@ -0,0 +1,211 @@
+---
+id: 5d6606634bab337fbb433884
+title: Part 21
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+After the line that updates `button1`, update the text of `button2` to say "Buy weapon (30 gold)" and update the text of `button3` to say "Go to town square".
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ # testString: assert(goStore.toString().match(/button1\.innerText\s*\=\s*[\'\"\`]Buy 10 health \(10 gold\)\.?[\'\"\`]/) && goStore.toString().match(/button2\.innerText\s*\=\s*[\'\"\`]Buy weapon \(30 gold\)\.?[\'\"\`]/) && goStore.toString().match(/button3\.innerText\s*\=\s*[\'\"\`]Go to town square\.?[\'\"\`]/));
+ testString: assert((() => { goStore(); return button1.innerText === "Buy 10 health (10 gold)" && button2.innerText === "Buy weapon (30 gold)" && button3.innerText === "Go to town square" })());
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-22.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-22.md
new file mode 100644
index 0000000000..c97c5e3632
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-22.md
@@ -0,0 +1,215 @@
+---
+id: 5d66093c4bab337fbb433885
+title: Part 22
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Now that the text on the buttons have changed, the `onclick` properties on the buttons should change. Inside the goStore function, update the `onclick` property of all three buttons. The new functions should be `buyHealth`, `buyWeapon`, and `goTown`. If you have trouble, look at how the buttons were initialized.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(goStore.toString().match(/button1\.onclick\s*\=\s*buyHealth\;?/) && goStore.toString().match(/button2\.onclick\s*\=\s*buyWeapon\;?/) && goStore.toString().match(/button3\.onclick\s*\=\s*goTown\;?/));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-23.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-23.md
new file mode 100644
index 0000000000..244120e744
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-23.md
@@ -0,0 +1,219 @@
+---
+id: 5d660a32e0696bdec46938d5
+title: Part 23
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Right after the `onclick` properties are updated, change the `innerText` property of `text` to "You enter the store."
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(goStore.toString().match(/text\.innerText\s*\=\s*[\'\"\`]You enter the store\.?[\'\"\`]/)); # Must be a regex test since buyHealth, buyWeapon, and goTown are still undefined
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-24.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-24.md
new file mode 100644
index 0000000000..092b34aaaf
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-24.md
@@ -0,0 +1,229 @@
+---
+id: 5d6616d8e0696bdec46938d6
+title: Part 24
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+At the end of the current code, add three new empty functions called `buyHealth`, `buyWeapon`, and `goTown`. After this step, you can test out the game by clicking the "Go to store" button.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(typeof buyHealth === 'function' && typeof buyWeapon === 'function' && typeof goTown === 'function');
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-25.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-25.md
new file mode 100644
index 0000000000..82e886db28
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-25.md
@@ -0,0 +1,246 @@
+---
+id: 5d661814e0696bdec46938d7
+title: Part 25
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Move the `goTown` function to above the `goStore` function. Then, copy and paste the contents of the `goStore` function into the `goTown` function.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ # testString: assert(goTown.toString().match(/button1\.innerText\s*\=\s*[\'\"\`]Buy 10 health \(10 gold\)\.?[\'\"\`]/) && goTown.toString().match(/button2\.innerText\s*\=\s*[\'\"\`]Buy weapon \(30 gold\)\.?[\'\"\`]/) && goTown.toString().match(/button3\.innerText\s*\=\s*[\'\"\`]Go to town square\.?[\'\"\`]/) && goTown.toString().match(/button1\.onclick\s*\=\s*buyHealth\;?/) && goTown.toString().match(/button2\.onclick\s*\=\s*buyWeapon\;?/) && goTown.toString().match(/button3\.onclick\s*\=\s*goTown\;?/) && goTown.toString().match(/text\.innerText\s*\=\s*[\'\"\`]You enter the store\.?[\'\"\`]/));
+ testString: assert((() => { goTown(); return button1.innerText === "Buy 10 health (10 gold)" && button2.innerText === "Buy weapon (30 gold)" && button3.innerText === "Go to town square" && text.innerText === "You enter the store." && goTown.toString().match(/button1\.onclick\s*\=\s*buyHealth\;?/) && goTown.toString().match(/button2\.onclick\s*\=\s*buyWeapon\;?/) && goTown.toString().match(/button3\.onclick\s*\=\s*goTown\;?/)})());
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-26.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-26.md
new file mode 100644
index 0000000000..7715e8c213
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-26.md
@@ -0,0 +1,252 @@
+---
+id: 5d66198de0696bdec46938d8
+title: Part 26
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Add double quote marks around the word "Store" in the line "You see a sign that says Store." Before each quotation mark add a `\` to signal that the following quote is not the end of the string, but should instead appear inside the string. This is called escaping.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert((() => { goTown(); return text.innerText === "You are in the town square. You see a sign that says \"Store\"."})())
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-27.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-27.md
new file mode 100644
index 0000000000..01b7462561
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-27.md
@@ -0,0 +1,265 @@
+---
+id: 5d661bc6e0696bdec46938d9
+title: Part 27
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+There is repetition in the `goTown` and `goStore` functions. When you have repetition in code, it is a sign that you need a new function.
+
+Above the `goTown` function, create an empty function called `update`. This time the function should take a parameter named `location` so data can be passed into the function when it is called.
+
+Here is an example of a function named `testFun` that accepts a parameter named `param`:
+
+```js
+function testFun(param) {
+ console.log(param);
+}
+```
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(update.toString().match(/function update\(\s*location\)\s*\{\s*\}/));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-28.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-28.md
new file mode 100644
index 0000000000..0925cf27c0
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-28.md
@@ -0,0 +1,260 @@
+---
+id: 5d6653d5e0696bdec46938da
+title: Part 28
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Below the list of `const` variables, create a new `const` variable called `locations`. Set it to equal an empty array. This will be used to store all the data for the locations in the game.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(Array.isArray(locations) && locations.length === 0);
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-29.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-29.md
new file mode 100644
index 0000000000..1ca7a0f589
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-29.md
@@ -0,0 +1,266 @@
+---
+id: 5d665983e0696bdec46938dc
+title: Part 29
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Arrays can store any data type, including objects. Objects are similar to arrays, except that instead of using indexes to access and modify their data, you access the data in objects through what are called properties.
+
+Inside the `locations` array add an empty object using curly braces.
+
+Here is an example of an array named `arr` with an empty object inside: `const arr = [{}];`
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert.deepStrictEqual(JSON.stringify(locations), `[{}]`);
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-30.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-30.md
new file mode 100644
index 0000000000..43a12cab40
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-30.md
@@ -0,0 +1,276 @@
+---
+id: 5d674fd9e0696bdec46938dd
+title: Part 30
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Inside the object you just added, create a property called `name` with the value of "town square".
+
+For example, here is an example of an array with an object inside that has a property called `name` with a value of "Quincy Larson" (new lines are used only for the purpose of making the code more readable):
+
+```js
+const arr = [
+ {
+ name: "Quincy Larson"
+ }
+]
+```
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(locations[0].name === 'town square');
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-31.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-31.md
new file mode 100644
index 0000000000..4f1bc9ce76
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-31.md
@@ -0,0 +1,282 @@
+---
+id: 5d6752e3e0696bdec46938de
+title: Part 31
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+After the `name` property put a comma. On the next line add a property named `"button text"` that has a value of an empty array. Since the property name has more than one word, there must be quotes around it.
+
+Here is an example:
+
+```js
+const arr = [
+ {
+ name: "Quincy Larson",
+ "favorite colors": []
+ }
+]
+```
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert.deepStrictEqual(locations[0]['button text'], []);
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-32.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-32.md
new file mode 100644
index 0000000000..e287dbfb27
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-32.md
@@ -0,0 +1,274 @@
+---
+id: 5d6755fce0696bdec46938df
+title: Part 32
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Inside the `"button text"` array, add three string elements. Use the three stings assigned to the buttons inside the `goTown` function.
+
+Here is an example array with three strings: `const arr = ["one", "two", "three"];`.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert.deepStrictEqual(locations[0]['button text'], ["Go to store","Go to cave","Fight dragon"]);
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-33.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-33.md
new file mode 100644
index 0000000000..2a1c233f2c
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-33.md
@@ -0,0 +1,273 @@
+---
+id: 5d675726e0696bdec46938e0
+title: Part 33
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Add another property in the object with the name `"button functions"`. The value should be an array containing the three `onclick` functions from the `goTown` function. It should look like this: `[goStore, goCave, fightDragon]`
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert.deepStrictEqual(locations[0]['button functions'], [goStore, goCave, fightDragon]);
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-34.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-34.md
new file mode 100644
index 0000000000..13501ba9fa
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-34.md
@@ -0,0 +1,275 @@
+---
+id: 5d678366e0696bdec46938e1
+title: Part 34
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Add one final property to the object named `text`. The value should be the final text from the `goTown` function.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(locations[0].text === "You are in the town square. You see a sign that says \"Store.\"");
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-35.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-35.md
new file mode 100644
index 0000000000..925c8c6685
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-35.md
@@ -0,0 +1,283 @@
+---
+id: 5d67845ee0696bdec46938e2
+title: Part 35
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+The `locations` array currently has one element which is an object. Within the array, and after the object's final curly brace, add a comma. On the next line within the array, add another object with all the same properties as the first object. Keep the property names the same on the second object, but change all the property values to the information from the `goStore` function. Also, set the `name` property to `store`.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: |
+ assert.deepStrictEqual(locations[1], { name: "store", "button text": ["Buy 10 health (10 gold)", "Buy weapon (30 gold)", "Go to town square"], "button functions": [buyHealth, buyWeapon, goTown], text: "You enter the store." });
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-36.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-36.md
new file mode 100644
index 0000000000..695c354caa
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-36.md
@@ -0,0 +1,282 @@
+---
+id: 5d67880ee0696bdec46938e3
+title: Part 36
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Now we are can consolidate the code inside the `goTown` and `goStore` functions. Copy the code inside the `goTown` function and paste it in the `update` function. Then delete all the code inside the `goTown` and `goStore` functions.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ # testString: assert(goTown.toString() === "function goTown() {}" && goStore.toString() === "function goStore() {}" && update.toString().match(/button1\.innerText\s*\=\s*[\'\"\`]Go to store[\'\"\`]/) && update.toString().match(/button2\.innerText\s*\=\s*[\'\"\`]Go to cave[\'\"\`]/) && update.toString().match(/button3\.innerText\s*\=\s*[\'\"\`]Fight dragon\.?[\'\"\`]/) && update.toString().match(/button1\.onclick\s*\=\s*goStore\;?/) && update.toString().match(/button2\.onclick\s*\=\s*goCave\;?/) && update.toString().match(/button3\.onclick\s*\=\s*fightDragon\;?/) && update.toString().match(/text\.innerText\s*\=\s*[\'\"\`]You are in the town square\. You see a sign that says \\\"[sS]tore\\\"\.?[\'\"\`]/));
+ testString: assert((() => { update(); return goTown.toString() === "function goTown() {}" && goStore.toString() === "function goStore() {}" && button1.innerText === "Go to store" && button2.innerText === "Go to cave" && button3.innerText === "Fight dragon" && text.innerText === "You are in the town square. You see a sign that says \"Store\"." && update.toString().match(/button1\.onclick\s*\=\s*goStore\;?/) && update.toString().match(/button2\.onclick\s*\=\s*goCave\;?/) && update.toString().match(/button3\.onclick\s*\=\s*fightDragon\;?/)})());
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-37.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-37.md
new file mode 100644
index 0000000000..ca5531fa97
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-37.md
@@ -0,0 +1,277 @@
+---
+id: 5d67ad3de0696bdec46938e4
+title: Part 37
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Instead of assigning the `innerText` and `onClick` properties to specific strings and functions like it does now, the `update` function will use data from the `location` that is passed into it. First, data needs to be passed into the `update` function. Inside the `goTown` function, call the `update` function.
+
+Here is how you would call a function named `exampleFunction`: `exampleFunction();`
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(goTown.toString().match(/update\(\)/));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-38.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-38.md
new file mode 100644
index 0000000000..bd07607d44
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-38.md
@@ -0,0 +1,278 @@
+---
+id: 5d67ae95e0696bdec46938e5
+title: Part 38
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Now change the code you just wrote to call the `update` function so the `locations` array is passed in as an argument.
+
+Here is how you would call a function named `exampleFunction` with an argument called `arg`: `exampleFunction(arg);`
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(goTown.toString().match(/update\(locations\)/));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-39.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-39.md
new file mode 100644
index 0000000000..bc617e6271
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-39.md
@@ -0,0 +1,276 @@
+---
+id: 5d67b284e0696bdec46938e6
+title: Part 39
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+The `locations` array contains two locations: the town square and store. Currently the entire array with both locations is being passed in to the update function. Pass in only the first element of the locations array by adding `[0]` at the end of the name of the array. For example, `exampleFunction(arg[0]);`
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(goTown.toString().match(/update\(locations\[0\]\)/));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-40.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-40.md
new file mode 100644
index 0000000000..f0a42a957b
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-40.md
@@ -0,0 +1,278 @@
+---
+id: 5d67b945e0696bdec46938e7
+title: Part 40
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Now that the `goTown` function calls the `update` function with the first element of the `locations` array, it is time to use that location information to update the `innerText` and `onclick` properties.
+
+Inside the `update` function, change `button1.innerText` to equal `location["button text"]`. That line gets the `"button text"` property of the `location` that was passed into the `update` function`.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(update.toString().match(/button1\.innerText\s*\=\s*location\[[\'\"\`]button text[\'\"\`]\]/));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-41.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-41.md
new file mode 100644
index 0000000000..61c322d210
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-41.md
@@ -0,0 +1,276 @@
+---
+id: 5d68c3b1e0696bdec46938e8
+title: Part 41
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+`location["button text"]` is an array with three elements. Use only the first element of the array by adding `[0]` at the end.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(update.toString().match(/button1\.innerText\s*\=\s*location\[[\'\"\`]button text[\'\"\`]\]\[0\]/));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-42.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-42.md
new file mode 100644
index 0000000000..45dfb0e625
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-42.md
@@ -0,0 +1,276 @@
+---
+id: 5d68c51ee0696bdec46938e9
+title: Part 42
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Now update the `innerText` of the other two buttons. They should be set to equal the same thing as the first button, except the number inside the brackets should be 1 for the second button and 2 for the third button.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(update.toString().match(/button2\.innerText\s*\=\s*location\[[\'\"\`]button text[\'\"\`]\]\[1\]/) && update.toString().match(/button3\.innerText\s*\=\s*location\[[\'\"\`]button text[\'\"\`]\]\[2\]/));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-43.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-43.md
new file mode 100644
index 0000000000..2013f02577
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-43.md
@@ -0,0 +1,276 @@
+---
+id: 5d68c5efe0696bdec46938ea
+title: Part 43
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Now update the three `onclick` properties. These will look very similar to the `innerText` properties, except instead of using the `"button text"` part of the `location`, use `"button functions"`.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(update.toString().match(/button1\.onclick\s*\=\s*location\[[\'\"\`]button functions[\'\"\`]\]\[0\]/) && update.toString().match(/button2\.onclick\s*\=\s*location\[[\'\"\`]button functions[\'\"\`]\]\[1\]/) && update.toString().match(/button3\.onclick\s*\=\s*location\[[\'\"\`]button functions[\'\"\`]\]\[2\]/));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-44.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-44.md
new file mode 100644
index 0000000000..393a32cb4b
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-44.md
@@ -0,0 +1,278 @@
+---
+id: 5d68c758e0696bdec46938eb
+title: Part 44
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Finally, update `text.innerText` to equal the `text` from the location object.
+
+So far we have been accessing properties of the location object using bracket notation. This time use dot notation. Here is how to access a `name` property of an object called `obj` using dot notation: `obj.name`.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(update.toString().match(/text\.innerText\s*\=\s*location\.text\;?/));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-45.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-45.md
new file mode 100644
index 0000000000..8c4b467910
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-45.md
@@ -0,0 +1,277 @@
+---
+id: 5d68c947e0696bdec46938ec
+title: Part 45
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Now update the `goStore` function. The code should look just like the code inside the `goTown` function, except the number 0 should be changed to 1. After this step would be a good time to try out the game so far. You should be able to move between the store and the town square.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(goStore.toString().match(/update\(locations\[1\]\)/));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-46.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-46.md
new file mode 100644
index 0000000000..4455a29ee6
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-46.md
@@ -0,0 +1,292 @@
+---
+id: 5d68ca40e0696bdec46938ed
+title: Part 46
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Add a third object in the `locations` array with the same properties as the other two objects.
+
+Set `name` to "cave". Set the elements in the `"button text"` array to ["Fight slime", "Fight fanged beast", and "Go to town square". Set te elements in the `"button functions"` array to be "fightSlime", "fightBeast", and "goTown". Set the value of the `text` property to "You enter the cave. You see some monsters.".
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: |
+ assert.deepStrictEqual(locations[2], { name: "cave", "button text": ["Fight slime", "Fight fanged beast", "Go to town square"], "button functions": [fightSlime, fightBeast, goTown], text: "You enter the cave. You see some monsters." });
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-47.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-47.md
new file mode 100644
index 0000000000..9035d30db7
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-47.md
@@ -0,0 +1,295 @@
+---
+id: 5d68d3f7e0696bdec46938ee
+title: Part 47
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Now update the `goCave` function using the pattern from `goTown` and `goCave`.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(goCave.toString().match(/update\(locations\[2\]\)\;?/));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-49.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-49.md
new file mode 100644
index 0000000000..b46279d184
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-49.md
@@ -0,0 +1,306 @@
+---
+id: 5d68d631e0696bdec46938f0
+title: Part 49
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Now that the store and cave locations are complete, we'll code the actions at those locations. Inside the `buyHealth` function, set `gold` to equal `gold` minus 10.
+
+For example here is how you would set set `num` to equal 5 less than `num`: `num = num - 5;`.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ # testString: assert((() => { buyHealth(); return gold === 40; })());
+ testString: buyHealth(), assert(gold === 40);
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-51.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-51.md
new file mode 100644
index 0000000000..5fad33d01a
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-51.md
@@ -0,0 +1,308 @@
+---
+id: 5d6904b6e0696bdec46938f2
+title: Part 51
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+There is a shorthand way to add or subtract from a variable called compound assignment. The long way to add to a variable is `num = num + 5`. The shorthand way is `num += 5`. It works the same way with subtraction.
+
+Update both lines inside the `buyHealth` function to use compound assignment.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(buyHealth.toString().match(/gold\s*\-\=\s*10\;?/) && buyHealth.toString().match(/health\s*\+\=\s*10\;?/));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-52.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-52.md
new file mode 100644
index 0000000000..6251e74048
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-52.md
@@ -0,0 +1,309 @@
+---
+id: 5d6905ace0696bdec46938f3
+title: Part 52
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Now that the gold and health variables have been updated, we need to update the values displayed on the screen. Inside the `buyHealth` function, add the line `goldText.innerText = gold;`. Then use the same pattern to update `healthText`.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(buyHealth.toString().match(/goldText\.innerText\s*\=\s*gold\;?/) && buyHealth.toString().match(/healthText.innerText\s*\=\s*health\;?/));
+ # testString: assert((() => { buyHealth(); return goldText.innerText === '40' && healthText.innerText === '110'; })());
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-53.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-53.md
new file mode 100644
index 0000000000..f690c3e01e
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-53.md
@@ -0,0 +1,323 @@
+---
+id: 5d6f6bfc7c812010bf3327cc
+title: Part 53
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+What if the player doesn't have enough gold to buy health? Put all the code in the `buyHealth` function inside an `if` statement. Here is an example of an `if` statement inside a function:
+
+```js
+function checkMoney() {
+ if (condition) {
+ console.log("You have money!");
+ }
+}
+```
+
+Note: For now you should use the word "condition" inside the `if` statement but we'll be changing that next.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ # testString: assert(buyHealth.toString().match(/if\s*\(\s*condition\s*\)\s*\{\s*gold\s*\-\=\s*10\;?\s*health\s*\+\=\s*10\;?\s*goldText\.innerText\s*\=\s*gold\;?\s*healthText\.innerText\s*\=\s*health\;?\s*\}\s*\}/));
+ testString: assert(buyHealth.toString().match(/if\s*\(\s*condition\s*\)\s*\{\s*(gold|health|goldText|healthText)/) && buyHealth.toString().match(/gold\s*\-\=\s*10\;?/) && buyHealth.toString().match(/health\s*\+\=\s*10\;?/) && buyHealth.toString().match(/goldText\.innerText\s*\=\s*gold\;?/) && buyHealth.toString().match(/healthText\.innerText\s*\=\s*health\;?/));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-54.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-54.md
new file mode 100644
index 0000000000..f66a4ef262
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-54.md
@@ -0,0 +1,322 @@
+---
+id: 5d6f6e3c7c812010bf3327cd
+title: Part 54
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+The word "condition" inside the if statement is just a placeholder. Change the condition to check if the amount of gold the player has is greater than or equal to 10.
+
+Here is an `if` statement that checks if `num` is greater than or equal to 5:
+
+```js
+if (num >= 5) {
+ console.log("Num is greater than or equal to five!");
+}
+```
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(buyHealth.toString().match(/if\s*\(\s*gold\s*\>\=\s*10\s*\)/));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-55.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-55.md
new file mode 100644
index 0000000000..40b626e3bb
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-55.md
@@ -0,0 +1,325 @@
+---
+id: 5d6f6f747c812010bf3327ce
+title: Part 55
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Now when a player tries to buy health it will only work if they have enough money. If the player does not have enough money, nothing will happen. Add an `else` statement where you can put code to run if a player dees not have enough money.
+
+Here is an example of an empty `else` statement:
+
+```js
+if (num >= 5) {
+ console.log("Num is greater than or equal to five!");
+} else {
+}
+```
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(buyHealth.toString().match(/\}\s*else\s*\{\s*\}/));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-56.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-56.md
new file mode 100644
index 0000000000..22f0d63133
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-56.md
@@ -0,0 +1,320 @@
+---
+id: 5d6f70937c812010bf3327cf
+title: Part 56
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Inside the `else` statement, set `text.innerText` to equal "You do not have enough gold to buy health."
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ # testString: assert(buyHealth.toString().match(/\}\s*else\s*\{\s*text\.innerText\s*\=\s*[\'\"\`]You do not have enough gold to buy health\.?[\'\"\`]\;?\s*\}/));
+ # testString: assert((() => { gold = 5; buyHealth(); return text.innerText === "You do not have enough gold to buy health."; })());
+ testString: gold = 5, buyHealth(), assert(text.innerText === "You do not have enough gold to buy health.");
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-57.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-57.md
new file mode 100644
index 0000000000..6a98f2c679
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-57.md
@@ -0,0 +1,320 @@
+---
+id: 5d6f72657c812010bf3327d0
+title: Part 57
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Before we write the code for the `buyWeapon` function, use `const` to create a `weapons` variable right above the `locations` array. Set it to equal an empty array.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert.deepStrictEqual(weapons, []);
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-58.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-58.md
new file mode 100644
index 0000000000..351090734c
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-58.md
@@ -0,0 +1,340 @@
+---
+id: 5d6f736b7c812010bf3327d2
+title: Part 58
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Just like in the `locations` array, all the elements in `weapons` will be objects. Add four objects to the `weapons` array, each with two properties: `name` and `power`. The first should be the `name` "stick" with `power` set to 5. Then, "dagger" with set `power` to 30. Next, "claw hammer" with a `power` of 50. Finally, "sword" with a `power` of 100.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: |
+ assert.deepStrictEqual(weapons, [{name: "stick",power: 5},{name: "dagger",power: 30},{name: "claw hammer",power: 50},{name: "sword",power: 100}]);
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-59.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-59.md
new file mode 100644
index 0000000000..afc47364b3
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-59.md
@@ -0,0 +1,359 @@
+---
+id: 5d6f776c7c812010bf3327d3
+title: Part 59
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Inside the `buyWeapon` function, add an `if` statement to check if gold is greater than or equal to 30.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(buyWeapon.toString().match(/if\s*\(\s*gold\s*\>\=\s*30\)\s*\{\s*\}/));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-60.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-60.md
new file mode 100644
index 0000000000..6035f99917
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-60.md
@@ -0,0 +1,363 @@
+---
+id: 5d6f785f7c812010bf3327d4
+title: Part 60
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Similar to in the `buyHealth` function, set `gold` to equal 30 less than its current value.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ # testString: assert((() => { gold = 50; buyWeapon(); return gold === 20; })());
+ testString: gold = 50, buyWeapon(), assert(gold === 20);
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-61.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-61.md
new file mode 100644
index 0000000000..8ececcfd14
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-61.md
@@ -0,0 +1,364 @@
+---
+id: 5d6f79667c812010bf3327d6
+title: Part 61
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+The value of `currentWeapon` corresponds to an index in the `weapons` array. The player starts with a stick since `currentWeapon` starts at 0 and `weapons[0]` is the "stick" weapon. In the `buyWeapon` function, add one to `currentWeapon` since the user is buying the next weapon in the `weapons` array.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ # testString: assert((() => { currentWeapon = 0; buyWeapon(); return currentWeapon === 1; })());
+ testString: currentWeapon = 0, buyWeapon(), assert(currentWeapon === 1);
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-62.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-62.md
new file mode 100644
index 0000000000..adea6c44f1
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-62.md
@@ -0,0 +1,372 @@
+---
+id: 5d6f7b917c812010bf3327d7
+title: Part 62
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+You can easily increment or add one to a variable with the `++` operator. All three of these statements add one to a number:
+
+```js
+num = num + 1;
+num += 1;
+num++;
+```
+
+Change the line `currentWeapon += 1;` to use the `++` operator.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(buyWeapon.toString().match(/currentWeapon\s*\+\+\;?/));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-63.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-63.md
new file mode 100644
index 0000000000..e140349fe4
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-63.md
@@ -0,0 +1,368 @@
+---
+id: 5d6f82da7c812010bf3327d8
+title: Part 63
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Now update the `innerText` property of `goldText` and `text`. `text` should equal "You now have a new weapon.".
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ # testString: assert(buyWeapon.toString().match(/goldText\.innerText\s*\=\s*gold\;/) && buyWeapon.toString().match(/text\.innerText\s*\=\s*[\'\"\`]You now have a new weapon\.?[\'\"\`]\;?/));
+ # testString: assert((() => { buyWeapon(); return goldText.innerText === '20' && text.innerText === 'You now have a new weapon.' })());
+ testString: buyWeapon(), assert(goldText.innerText === '20' && text.innerText === 'You now have a new weapon.');
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-64.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-64.md
new file mode 100644
index 0000000000..b3c035cf8a
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-64.md
@@ -0,0 +1,369 @@
+---
+id: 5d6f919f7c812010bf3327d9
+title: Part 64
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Let's tell the player what weapon they bought. In between the two lines you just wrote, use `let` to initialize a new variable called `newWeapon`. Set `newWeapon` to equal `weapons`.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(/let\s*newWeapon\s*\=\s*weapons\;?/.test(code));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-65.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-65.md
new file mode 100644
index 0000000000..bef5e7bef5
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-65.md
@@ -0,0 +1,370 @@
+---
+id: 5d6f94347c812010bf3327da
+title: Part 65
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Right after the word `weapons` (with no space between), add brackets `[]`. In between the brackets put `currentWeapon`, which is the index number of the weapon the player just bought.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(/let\s*newWeapon\s*\=\s*weapons\s?\[currentWeapon\]\;?/.test(code));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-66.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-66.md
new file mode 100644
index 0000000000..b26f7b5757
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-66.md
@@ -0,0 +1,370 @@
+---
+id: 5d6f96747c812010bf3327db
+title: Part 66
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Get just the name property of the current weapon by adding `.name` at the end of `weapons[currentWeapon]` (don't use a space).
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(/let\s*newWeapon\s*\=\s*weapons\s?\[currentWeapon\]\.name\;?/.test(code));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-67.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-67.md
new file mode 100644
index 0000000000..1a2a942f04
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-67.md
@@ -0,0 +1,377 @@
+---
+id: 5d6f98247c812010bf3327dc
+title: Part 67
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+You can insert variables into a string with the concatenation (`+`) operator. Update the "You now have a new weapon." string so it says "You now have a " and then lists the name of the new weapon. Make sure to add a period at the end of the sentence.
+
+Here is an example that creates the string "Hello, our name is freeCodeCamp.":
+
+```js
+let ourName = "freeCodeCamp";
+let ourStr = "Hello, our name is " + ourName + ".";
+```
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(buyWeapon.toString().match(/[\'\"\`]You now have a [\'\"\`]\s*\+\s*newWeapon\;?/));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-68.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-68.md
new file mode 100644
index 0000000000..2a19cf6c81
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-68.md
@@ -0,0 +1,379 @@
+---
+id: 5d6f9a4c7c812010bf3327dd
+title: Part 68
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Way back at the beginning you created the `inventory` array. Push the `newWeapon` onto the end of the `inventory` array. Here is an example of pushing onto an array:
+
+```js
+let arr = ["first"];
+let next = "second";
+arr.push(next);
+// arr now equals ["first", "second"]
+```
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ # testString: assert(buyWeapon.toString().match(/inventory\.push\(\s*newWeapon\s*\)\;?/));
+ testString: buyWeapon(), assert.deepStrictEqual(inventory, ['stick', 'dagger']);
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-69.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-69.md
new file mode 100644
index 0000000000..a96cfb7e91
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-69.md
@@ -0,0 +1,374 @@
+---
+id: 5d70850e066dac7142a6d797
+title: Part 69
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Up to this point, anytime `text.innerText` was updated, the old text was erased. This time, use the `+=` operator instead of the `=` operator to add text to the end of `text.innerText`. Add the string " In your inventory you have: " (include the spaces at the beginning and end).
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: |
+ assert(buyWeapon.toString().match(/text\.innerText\s*\+\=\s*[\'\"\`] In your inventory you have\: [\'\"\`]\;?/));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-70.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-70.md
new file mode 100644
index 0000000000..705a4efba0
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-70.md
@@ -0,0 +1,375 @@
+---
+id: 5d70862e066dac7142a6d798
+title: Part 70
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+At the end of the string you just added after the ending quote mark, add `+ inventory` to add the contents of the inventory to the end of the string.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: |
+ assert(buyWeapon.toString().match(/text\.innerText\s*\+\=\s*[\'\"\`] In your inventory you have\: [\'\"\`]\s*\+\s*inventory\;?/));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-71.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-71.md
new file mode 100644
index 0000000000..c3a4609b0e
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-71.md
@@ -0,0 +1,376 @@
+---
+id: 5d7086d4066dac7142a6d799
+title: Part 71
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+At the end of the `if` statement inside the `buyWeapon` function, add an `else` statement. Inside the `else` statement, set `text.innerText` to equal "You do not have enough gold to buy a weapon.".
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(buyWeapon.toString().match(/\}\s*else\s*\{\s*text\.innerText\s*\=\s*[\'\"\`]You do not have enough gold to buy a weapon\.?[\'\"\`]\;?\s*\}/));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-72.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-72.md
new file mode 100644
index 0000000000..d0c993d664
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-72.md
@@ -0,0 +1,380 @@
+---
+id: 5d7088d2066dac7142a6d79a
+title: Part 72
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Once a player has the best weapon, they can't buy another one. Wrap all the code in the `buyWeapon` function inside another `if` statement. The condition should check if `currentWeapon` is less than 3 (the index of the last weapon).
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(buyWeapon.toString().match(/if\s*\(\s*currentWeapon\s*\<\s*3\s*\)\s*\{\s*if\s*\(\s*gold\s*\>\=\s*30\s*\)\s*\{/) && buyWeapon.toString().match(/\}\s*else\s*\{\s*text\.innerText\s*\=\s*[\'\"\`]You do not have enough gold to buy a weapon\.?[\'\"\`]\;?\s*\}\s*\}/));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-73.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-73.md
new file mode 100644
index 0000000000..dce05ab272
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-73.md
@@ -0,0 +1,382 @@
+---
+id: 5d708ab5066dac7142a6d79b
+title: Part 73
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+At some point in the future, you may want to add more weapons. Instead of checking if `currentWeapon` is less than three, check if `currentWeapon` is less than the length of the `weapons` array. For example, here is how you would get the length of an array called `arr`: `arr.length`.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(buyWeapon.toString().match(/if\s*\(\s*currentWeapon\s*\<\s*weapons\.length\s*\)\s*\{\s*if\s*\(\s*gold\s*\>\=\s*30\s*\)\s*\{/));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-74.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-74.md
new file mode 100644
index 0000000000..aea2eb9464
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-74.md
@@ -0,0 +1,382 @@
+---
+id: 5d708be9066dac7142a6d79c
+title: Part 74
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+We have to fix an error. The `currentWeapon` variable is the array index. Array indexing starts at zero. The index of the last element in an array is one less than the length of the array. In the `if` condition you are working on, change `weapons.length` to `weapons.length - 1`.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(buyWeapon.toString().match(/if\s*\(\s*currentWeapon\s*\<\s*weapons\.length\s*\-\s*1\s*\)\s*\{\s*if\s*\(\s*gold\s*\>\=\s*30\s*\)\s*\{/));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-75.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-75.md
new file mode 100644
index 0000000000..8135e268f9
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-75.md
@@ -0,0 +1,384 @@
+---
+id: 5d708c9a066dac7142a6d79d
+title: Part 75
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Add an `else` statement on the end of the outer `if` statement. Inside the `else` statement, set `text.innerText` to "You already have the most powerful weapon!".
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(buyWeapon.toString().match(/\}\s*else\s*\{\s*text\.innerText\s*\=\s*[\'\"\`]You do not have enough gold to buy a weapon\.?[\'\"\`]\;?\s*\}\s*\}\s*else\s*\{\s*text\.innerText\s*\=\s*[\'\"\`]You already have the most powerful weapon\![\'\"\`]\;?\s*\}/));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-76.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-76.md
new file mode 100644
index 0000000000..aa3c5fa0d7
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-76.md
@@ -0,0 +1,388 @@
+---
+id: 5d708dd7066dac7142a6d79e
+title: Part 76
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Once a player has the most powerful weapon, we'll give them the ability to sell their older weapons back. In the else statement, set `button2.innerText` to equal "Sell weapon for 15 gold". Also, set `button2.onclick` to the function name `sellWeapon`.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(buyWeapon.toString().match(/else\s*\{\s*text\.innerText\s*\=\s*[\'\"\`]You already have the most powerful weapon\![\'\"\`]\;?\s*button2\.innerText\s*\=\s*[\'\"\`]Sell weapon for 15 gold\.?[\'\"\`]\;?\s*button2\.onclick\s*\=\s*sellWeapon\;?\s*\}/));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-78.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-78.md
new file mode 100644
index 0000000000..6b8d6605d6
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-78.md
@@ -0,0 +1,399 @@
+---
+id: 5d709664066dac7142a6d7a0
+title: Part 78
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Players should not be able to sell their only weapon. Inside the `sellWeapon` function, add an `if` statement with a condition that checks if the length of the `inventory` array is greater than one.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(sellWeapon.toString().match(/if\s*\(\s*inventory\.length\s*\>\s*1\s*\)\s*\{\s*\}/));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-79.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-79.md
new file mode 100644
index 0000000000..b632246a91
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-79.md
@@ -0,0 +1,403 @@
+---
+id: 5d709bbc066dac7142a6d7a2
+title: Part 79
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Inside the `if` statement, set `gold` equal to 15 more than its current value. Also, update `goldText.innerText` to the new value.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert((() => { gold = 50; inventory = ['stick']; sellWeapon(); return gold === 50 && goldText.innerText === '50' })() && (() => { gold = 50; inventory = ['stick', 'dagger']; sellWeapon(); return gold === 65 && goldText.innerText === '65' })());
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-80.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-80.md
new file mode 100644
index 0000000000..7325ed0511
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-80.md
@@ -0,0 +1,405 @@
+---
+id: 5d71b58b848f6914ab89897d
+title: Part 80
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Use the `let` keyword to create a variable named `currentWeapon`. Don't set it equal to anything yet. Notice that we already have a `currentWeapon` variable from earlier. Since the `let` keyword is used instead of `var`, this new version of `currentWeapon` is scoped only to this `if` statement. At the close of the `if` statement, the old version of `currentWeapon` will be used again.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(code.match(/if\s*\(\s*inventory\.length\s*\>\s*1\s*\)\s*\{\s*(.\s*)*let\s*currentWeapon\;?/)); # match code as toString() changes let and const to var
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-81.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-81.md
new file mode 100644
index 0000000000..d14b470ed0
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-81.md
@@ -0,0 +1,414 @@
+---
+id: 5d71bdca848f6914ab89897e
+title: Part 81
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Use the `shift()` method on the `inventory` array to remove the first element and return that removed element. Set `currentWeapon` to equal returned element.
+
+Here is an example:
+
+```js
+let arr = ["one", "two", "three"];
+let firstElement = arr.shift();
+// arr now equals ["two", "three"] and firstElement now equals "one"
+```
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(code.match(/if\s*\(\s*inventory\.length\s*\>\s*1\s*\)\s*\{\s*(.\s*)*let\s*currentWeapon\s*\=\s*inventory\.shift\(\s*\)\;?/));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-82.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-82.md
new file mode 100644
index 0000000000..691b0e50e2
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-82.md
@@ -0,0 +1,408 @@
+---
+id: 5d71bfdf848f6914ab89897f
+title: Part 82
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+After the line that creates the `currentWeapon` variable, set `text.innerText` to equal `"You sold a " + currentWeapon + "."`
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: inventory = ['potato', 'carrot'], sellWeapon(), assert(text.innerText === 'You sold a potato.' && inventory[0] === 'carrot');
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-83.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-83.md
new file mode 100644
index 0000000000..0918a50a39
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-83.md
@@ -0,0 +1,411 @@
+---
+id: 5d71c20f848f6914ab898980
+title: Part 83
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Now use the `+=` operator to add to `text.innerText`. Add the string " In your inventory you have: " (with spaces at the beginning and end). Then add the `inventory` variable to the end of the string.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: |
+ inventory = ['potato', 'carrot'], sellWeapon(), assert(text.innerText === 'You sold a potato. In your inventory you have: carrot');
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-84.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-84.md
new file mode 100644
index 0000000000..9211a334b5
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-84.md
@@ -0,0 +1,412 @@
+---
+id: 5d71c80e848f6914ab898981
+title: Part 84
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Add code so that if the length of the inventory is NOT more than one, then a text message appears that says "Don't sell your only weapon!".
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: inventory = ['potato'], sellWeapon(), assert(inventory[0] === 'potato' && text.innerText === "Don't sell your only weapon!");
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-85.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-85.md
new file mode 100644
index 0000000000..a9ba478509
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-85.md
@@ -0,0 +1,435 @@
+---
+id: 5d71cab4f27e5122af9f1178
+title: Part 85
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Now we'll start working on fighting monsters. Organize your code by moving the `fightDragon` function to the bottom of the code near the other fight functions.
+
+Below where the `weapons` array is defined, define a `monsters` array. Set the contents of the `monsters` array to: `{ name: "slime", level: 2, health: 15 }, {name: "fanged beast", level: 8, health: 60 }, { name: "dragon", level: 20, health: 300 }`. Space out the code similar to the `weapons` array so that it is easier to read.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: |
+ assert.deepStrictEqual(monsters, [{ name: "slime", level: 2, health: 15 }, {name: "fanged beast", level: 8, health: 60 }, { name: "dragon", level: 20, health: 300 }]);
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-86.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-86.md
new file mode 100644
index 0000000000..f201fd43da
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-86.md
@@ -0,0 +1,453 @@
+---
+id: 5d71ea30f27e5122af9f1179
+title: Part 86
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Fighting each type of monster will be very similar so all three fighting functions will call a function named `goFight`. At the end of the code, add an empty function named `goFight`.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(typeof goFight === 'function');
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-87.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-87.md
new file mode 100644
index 0000000000..ae482e5cbe
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-87.md
@@ -0,0 +1,460 @@
+---
+id: 5d71eb0bf27e5122af9f117a
+title: Part 87
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Inside the `fightSlime` function, set `fighting` to equal 0 (which is the index of the slime in the `monsters` array). On the next line, call the `goFight` function.
+
+As a reminder, here is how you would call a function named `myFunc`: `myFunc();`.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(fightSlime.toString().match(/fighting\s*\=\s*0\;?\s*goFight\(\s*\)\;?/));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-88.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-88.md
new file mode 100644
index 0000000000..6ff286df4f
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-88.md
@@ -0,0 +1,463 @@
+---
+id: 5d71f787e39bedcf8f0998ff
+title: Part 88
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Write the code for the `fightBeast` and `fightDragon` functions, using the `fightSlime` function as an example. Make sure to delete the line that is already in the `fightDragon` function.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(fightBeast.toString().match(/fighting\s*\=\s*1\;?\s*goFight\(\s*\)\;?/) && fightDragon.toString().match(/fighting\s*\=\s*2\;?\s*goFight\(\s*\)\;?/));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-89.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-89.md
new file mode 100644
index 0000000000..97d4bbf09a
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-89.md
@@ -0,0 +1,478 @@
+---
+id: 5d71ed88f27e5122af9f117b
+title: Part 89
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Add a new object in the `locations` array with all the same properties as the other objects in the array. Set `name` to "fight". Set `"button text"` to `["Attack", "Dodge", "Run"]`. Set `"button functions"` to `[attack, dodge, goTown]`. And set `text` to "You are fighting a monster.".
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: |
+ assert.deepStrictEqual(locations[3], {name: "fight","button text": ["Attack", "Dodge", "Run"],"button functions": [attack, dodge, goTown],text: "You are fighting a monster."});
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-90.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-90.md
new file mode 100644
index 0000000000..190a5a6bdf
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-90.md
@@ -0,0 +1,484 @@
+---
+id: 5d71f217e39bedcf8f0998fd
+title: Part 90
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+At the end of the code create empty functions named `attack` and `dodge`.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(typeof attack === 'function' && typeof dodge === 'function');
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-91.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-91.md
new file mode 100644
index 0000000000..ac6f48b72e
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-91.md
@@ -0,0 +1,491 @@
+---
+id: 5d71f669e39bedcf8f0998fe
+title: Part 91
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+In the `goFight` function, call the `update` function and pass it `locations[3]`.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(goFight.toString().match(/update\(\s*locations\[\s*3\s*\]\s*\)\;?/));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-92.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-92.md
new file mode 100644
index 0000000000..f1e8cb1de6
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-92.md
@@ -0,0 +1,493 @@
+---
+id: 5d72027ce39bedcf8f099900
+title: Part 92
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Next in the `goFight` function, set `monsterHealth` to equal the health of the current monster. You can get the health of the current monster with `monsters[fighting].health`. Try to understand that line before continuing.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert((() => { fightSlime(); return monsterHealth === 15 })() && (() => { fightBeast(); return monsterHealth === 60 })() && (() => { fightDragon(); return monsterHealth === 300 })());
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-93.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-93.md
new file mode 100644
index 0000000000..b2b3c34526
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-93.md
@@ -0,0 +1,497 @@
+---
+id: 5d721925e39bedcf8f099901
+title: Part 93
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+The HTML that shows the monster stats that has been hidden using CSS. Display the `monsterStats` HTML element by updating its CSS `display` property to equal `block`.
+
+Here is an example of updating the `display` property of an element named `myElement`: `myElement.style.display = "block";`
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert(goFight.toString().match(/^\s*monsterStats\.style\.display\s*\=\s*[\'\"\`]block[\'\"\`]\;?/m));
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-94.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-94.md
new file mode 100644
index 0000000000..1f56fe65d2
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-94.md
@@ -0,0 +1,498 @@
+---
+id: 5d7dea508360d21c6826a9af
+title: Part 94
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Now set the `innerText` property of `monsterNameText` to equal `monsters[fighting].name`. Also, set the `innerText` property of `monsterHealthText` to equal `monsterHealth`.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: assert((() => { fightBeast(); return monsterNameText.innerText === 'fanged beast' && monsterHealthText.innerText === '60'})() && (() => { fightDragon(); return monsterNameText.innerText === 'dragon' && monsterHealthText.innerText === '300'})());
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-95.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-95.md
new file mode 100644
index 0000000000..84880076ac
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-95.md
@@ -0,0 +1,501 @@
+---
+id: 5d7deecc8360d21c6826a9b0
+title: Part 95
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+We'll build out the `attack` function now. For the first line in the function, update the text message to say "The [monster name] attacks." but replace "[monster name]" with the actual name of the monster. Remember, you can get the monster name with `monsters[fighting].name`.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: fightDragon(), attack(), assert(text.innerText === 'The dragon attacks.');
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-96.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-96.md
new file mode 100644
index 0000000000..2a75969b0e
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-96.md
@@ -0,0 +1,503 @@
+---
+id: 5d7df0458360d21c6826a9b1
+title: Part 96
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Now use the `+=` operator to append more text to `text.innerText`. Add the text " You attack it with your [weapon name]." but replace "[weapon name]" with the actual weapon name. Remember, you can get the weapon name with `weapons[currentWeapon].name`.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: currentWeapon = 3, fightDragon(), attack(), assert(text.innerText === 'The dragon attacks. You attack it with your sword.');
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-97.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-97.md
new file mode 100644
index 0000000000..594b1096b5
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-97.md
@@ -0,0 +1,505 @@
+---
+id: 5d7df2a68360d21c6826a9b2
+title: Part 97
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Next, set `health` to equal `health` minus the monster's level. You can get the monster's level with `monsters[fighting].level`.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: health = 50, fightDragon(), attack(), assert(health === 30);
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-98.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-98.md
new file mode 100644
index 0000000000..e379de2cef
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-98.md
@@ -0,0 +1,507 @@
+---
+id: 5d7df41a8360d21c6826a9b3
+title: Part 98
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+Set `monsterHealth` to `monsterHealth` minus the power of the current weapon (`weapons[currentWeapon].power`).
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: fightDragon(), monsterHealth = 20, attack(), assert(monsterHealth === 15);
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.
+
+```
+
+
+
+
+### After Test
+
+
+```html
+
+
+```
+
+
+
+
+
+
+## Solution
+
+
+
+```html
+
+```
+
+
diff --git a/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-99.md b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-99.md
new file mode 100644
index 0000000000..417cd536ee
--- /dev/null
+++ b/curriculum/challenges/english/02-javascript-algorithms-and-data-structures/javascript-rpg-game/part-99.md
@@ -0,0 +1,510 @@
+---
+id: 5d7df75a8360d21c6826a9b4
+title: Part 99
+challengeType: 0
+isBeta: true
+---
+
+## Description
+
+
+At the end of that line, add a random number between one and the value of `xp`. Here is the formula to get a random number between 1 and 5: `Math.floor(Math.random() * 5) + 1`.
+
+`Math.random()` returns a decimal or floating point number between 0 and 1, and `Math.floor()` rounds a given number down to the nearest integer.
+
+
+
+## Instructions
+
+
+
+
+## Tests
+
+
+```yml
+tests:
+ - text: See description above for instructions.
+ testString: xp = 1, fightDragon(), monsterHealth = 20, attack(), assert(monsterHealth === 14);
+
+```
+
+
+
+## Challenge Seed
+
+
+
Welcome to Dragon Repeller. You must defeat the dragon that is preventing people from leaving the town. You are in the town square. Where do you want to go? Use the buttons above.