diff --git a/.gitignore b/.gitignore
index d273e27..24cee78 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
-server/database/dragon.db
\ No newline at end of file
+server/database/dragon.db
+server/.installed
\ No newline at end of file
diff --git a/CHANGELOG.md b/CHANGELOG.md
index f9dbcc1..435c2d5 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -11,6 +11,7 @@ The Update has not been merged into `master` yet, but it will be. In the meantim
- New database wrapper! Allows easy access to the database, which itself has been changed (see changed notes). Can CRUD with a simple interface.
- New render method! Uses an output buffer and `extract()` to safely render templates and allows us to use pure PHP for templating... which we *were* doing before, but now it's even better!
- New background image; this one is small, but the old garrish yellow background has been replaced with a smooth white/gray background. The plan is to add a theme toggle later to use the retro look on demand.
+- Status points; to give the player more build agency, status points will be given per level-up. The number of points can be changed in the overall game settings.
### Changed
@@ -18,3 +19,9 @@ The Update has not been merged into `master` yet, but it will be. In the meantim
- We're no longer using MySQL as the database! This was done for ease of install and operation; SQLite is plenty performant for Dragon Knight and makes it trivial to spin up new instances. The database is contained in `server/database/` as the file `dragon.db`. WAL mode is enabled, so you may see a couple extra files but this is expected.
- `lib.php` renamed to `server/library.php`
- The installer has been totally rewritten using the new database wrapper and a handful of new library functions.
+- Classes have been totally reworked! Prior, they were hard-coded into the game's overall settings. This made them highly inflexible and allowed only three classes which all needed their own level rows to define. This sucked! Now, classes are their own rows in the `classes` table, with starting stats and stat growth per-level. They also now have a special syntax in the `spells` field to detail at what level what spells the player gets.
+- The help pages have been moved to the new structure and have been renamed to "Guide".
+
+### Removed
+
+- Difficulty levels; as this is an always-online game with other players, differences in difficulty at a base game level didn't make sense. While a cool feature, I don't think it's truly necessary and would be better used in an instance-by-instance basis.
\ No newline at end of file
diff --git a/public/css/dragon.css b/public/css/dragon.css
index 892c043..fe19365 100644
--- a/public/css/dragon.css
+++ b/public/css/dragon.css
@@ -36,4 +36,9 @@ body {
.mb-2 {
margin-bottom: 2rem;
+}
+
+.my-2 {
+ margin-top: 2rem;
+ margin-bottom: 2rem;
}
\ No newline at end of file
diff --git a/public/guide/index.php b/public/guide/index.php
new file mode 100644
index 0000000..9ef6082
--- /dev/null
+++ b/public/guide/index.php
@@ -0,0 +1,22 @@
+table('control')->select();
+
+const GUIDES = ['main', 'items', 'monsters', 'spells', 'classes'];
+$guide = isset($_GET['guide']) ? $_GET['guide'] : 'main';
+
+const TITLES = [
+ 'main' => 'Main',
+ 'items' => 'Items & Drops',
+ 'monsters' => 'Monsters',
+ 'spells' => 'Spells',
+ 'classes' => 'Classes'
+];
+
+echo render('/guide/layout', ['guide' => $guide, 'db' => $db, 'control' => $control, 'title' => TITLES[$guide]]);
\ No newline at end of file
diff --git a/server/database/dragon.db-shm b/server/database/dragon.db-shm
deleted file mode 100644
index a9352cb..0000000
Binary files a/server/database/dragon.db-shm and /dev/null differ
diff --git a/server/database/dragon.db-wal b/server/database/dragon.db-wal
deleted file mode 100644
index 5680f1a..0000000
Binary files a/server/database/dragon.db-wal and /dev/null differ
diff --git a/help_levels.php b/server/templates/guide/classes.php
similarity index 100%
rename from help_levels.php
rename to server/templates/guide/classes.php
diff --git a/help_items.php b/server/templates/guide/items.php
similarity index 77%
rename from help_items.php
rename to server/templates/guide/items.php
index 1dac7eb..029a777 100644
--- a/help_items.php
+++ b/server/templates/guide/items.php
@@ -1,79 +1,10 @@
-
-
-
-
-
+
+
\ No newline at end of file
diff --git a/server/templates/guide/main.php b/server/templates/guide/main.php
new file mode 100644
index 0000000..ee3fae3
--- /dev/null
+++ b/server/templates/guide/main.php
@@ -0,0 +1,194 @@
+
+ Firstly, I'd like to say thank you for playing my game. The Dragon Knight game engine is the result of several months of
+ planning, coding and testing. The original idea was to create a web-based tribute to the NES game, Dragon
+ Warrior. In its current iteration, only the underlying fighting system really resembles that game, as almost
+ everything else in DK has been made bigger and better. But you should still recognize bits and pieces as stemming
+ from Dragon Warrior and other RPGs of old.
+
+
+
+ This is the first game I've ever written, and it has definitely been a positive experience. It got difficult at
+ times, admittedly, but it was still a lot of fun to write, and even more fun to play. And I hope to use this
+ experience so that if I ever want to create another game it will be even better than this one.
+
+
+
+ If you are a site administrator, and would like to install a copy of DK on your own server, you may visit the
+ development site for Dragon Knight. This page
+ includes the downloadable game souce code, as well as some other resources that developers and administrators may
+ find valuable.
+
+When you begin a new game, the first thing you see is the Town screen. Towns serve four primary functions: healing, buying items,
+buying maps, and displaying game information.
+To heal yourself, click the "Rest at the Inn" link at the top of the town screen. Each town's Inn has a different price - some towns
+are cheap, others are expensive. No matter what town you're in, the Inns always serve the same function: they restore your current
+hit points, magic points, and travel points to their maximum amounts. Out in the field, you are free to use healing spells to restore
+your hit points, but when you run low on magic points, the only way to restore them is at an Inn.
+Buying weapons and armor is accomplished through the appropriately-named "Buy Weapons/Armor" link. Not every item is available in
+every town, so in order to get the most powerful items, you'll need to explore some of the outer towns. Once you've clicked the link,
+you are presented with a list of items available in this town's store. To the left of each item is an icon that represents its type:
+weapon, armor or shield. The amount of attack/defense power, as well as the item's price, are displayed to the right of the item name.
+You'll notice that some items have a red asterisk (*) next to their names. These are items that come
+with special attributes that modify other parts of your character profile. See the Items & Drops table at the bottom of this page for
+more information about special items.
+Maps are the third function in towns. Buying a map to a town places the town in your Travel To box in the left status panel. Once
+you've purchased a town's map, you can click its name from your Travel To box and you will jump to that town. Travelling this way
+costs travel points, though, and you'll only be able to visit towns if you have enough travel points.
+The final function in towns is displaying game information and statistics. This includes the latest news post made by the game
+administrator, a list of players who have been online recently, and the Babble Box.
+Once you're done in town, you are free to start exploring the world. Use the compass buttons on the left status panel to move around.
+The game world is basically a big square, divided into four quadrants. Each quadrant is = $control['game_size']; ?> spaces
+square. The first town is usually located at (0N,0E). Click the North button from the first town, and now you'll be at (1N,0E).
+Likewise, if you now click the West button, you'll be at (1N,1W). Monster levels increase with every 5 spaces you move outward
+from (0N,0E).
+While you're exploring, you will occasionally run into monsters. As in pretty much any other RPG game, you and the monster take turns
+hitting each other in an attempt to reduce each other's hit points to zero. Once you run into a monster, the Exploring screen changes
+to the Fighting screen.
+When a fight begins, you'll see the monster's name and hit points, and the game will ask you for your first command. You then get to
+pick whether you want to fight, use a spell, or run away. Note, though, that sometimes the monster has the chance to hit you
+first.
+The Fight button is pretty straightforward: you attack the monster, and the amount of damage dealt is based on your attack power and
+the monster's armor. On top of that, there are two other things that can happen: an Excellent Hit, which doubles your total attack
+damage; and a monster dodge, which results in you doing no damage to the monster.
+The Spell button allows you to pick an available spell and cast it. See the Spells list at the bottom of this page for more information
+about spells.
+Finally, there is the Run button, which lets you run away from a fight if the monster is too powerful. Be warned, though: it is
+possible for the monster to block you from running and attack you. So if your hit points are low, you may fare better by staying
+around monsters that you know can't do much damage to you.
+Once you've had your turn, the monster also gets his turn. It is also possible for you to dodge the monster's attack and take no
+damage.
+The end result of a fight is either you or the monster being knocked down to zero hit points. If you win, the monster dies and will
+give you a certain amount of experience and gold. There is also a chance that the monster will drop an item, which you can put into
+one of the three inventory slots to give you extra points in your character profile. If you lose and die, half of your gold is taken
+away - however, you are given back a few hit points to help you make it back to town (for example, if you don't have enough gold to
+pay for an Inn, and need to kill a couple low-level monsters to get the money).
+When the fight is over, you can continue exploring until you find another monster to beat into submission.
+There are two status panels on the game screen: left and right.
+The left panel inclues your current location and play status (In Town, Exploring, Fighting), compass buttons for movement, and the
+Travel To list for jumping between towns. At the bottom of the left panel is also a list of game functions.
+The right panel displays some character statistics, your inventory, and quick spells.
+The Character section shows the most important character statistics. It also displays the status bars for your current hit points,
+magic points and travel points. These status bars are colored either green, yellow or red depending on your current amount of each
+stat. There is also a link to pop up your list of extended statistics, which shows more detailed character information.
+The Fast Spells section lists any Heal spells you've learned. You may use these links any time you are in town or exploring to cast
+the heal spell. These may not be used during fights, however - you have to use the Spells box on the fight screen for that.
+[ Top ]
+
+
+
+
+
+
\ No newline at end of file
diff --git a/help_monsters.php b/server/templates/guide/monsters.php
similarity index 100%
rename from help_monsters.php
rename to server/templates/guide/monsters.php
diff --git a/help_spells.php b/server/templates/guide/spells.php
similarity index 100%
rename from help_spells.php
rename to server/templates/guide/spells.php