This document is a work in progress that I'll be adding to over the next few years. I'm going to assume a basic understanding of programming (javascript is pretty easy to parse even if your not familier with it). I'll also assume that anyone can google how to use the Tiled program as its pretty simple.
Get the Tiled program which can be freely downloaded here: download.
Rogue Fable uses an older map format that is now supported in Tiled through an optional plugin (included with the download. With Tiled open go to edit => preferences => Plugins (tab) and select the json1.dll plugin. You also need to unselect the json.dll plugin.
Create a new course in your local CustomCourses folder which can be accessed in the Danger School menu in game and clicking the "Custom Courses" button.
You need to copy both the ExampleCourse.js and ExampleCourse.json files and give them a new (identical) name. This will be the name of your course.
Open the .js file in the IDE of your choice and at the top change 'ExampleCourse' in SchoolLessons.loadCustomCourse('ExampleCourse', to be identical to your two file names.
Launch Rogue Fable IV and you should see your new course listed in the menu with a single lesson names ExampleLesson.
There is a single lesson in the ExampleCourse.js that you have copied called 'ExampleLesson'. Rename this to create your first lesson.
Open the .json map file using Tiled and locate the pink property object in the upper left hand corner of the one and only map. This property object has a single property called name that is currently set to 'ExampleLesson' you need to rename this to be the same as in the .js file.
Open Rogue Fable IV and you should see your new course listed in the menu with a single lesson with whatever name you have chosen.
You can add testMe: true, to the lesson in the .js file to immediately launch the lesson when starting the game. This is useful when testing and iterating.
Tiles Layer: This is where you place tiles for Walls, Floors, Platform-Walls, Pits and Liquids. These are all located in a line at the top of MapTileset. We use these generic tiles so that the generator can automatically pick all the correct edges and connections.
Simple Object Layer: Just about everything else is placed in either this or the Object Layer. Enemies, items, traps, and all other objects (chairs, tables, rocks etc.) are placed on these layers. I tend to use this layer by default for objects.
Object Layer: If an object needs some sort of property set on it you can use this layer.
Tags Layer: I'll need to expand on this layer at a later date. A lot of the tags are used for level generators and so are not needed when making custom levels. This is however where the tags that control drop walls will need to be placed.
Grid Layer: You should generally keep the Grid layer locked. This layer is not loaded by the game is just used to line things up.
Object Base Tiles: if you look at objects like fences, tracks, bridges etc. you will see that they have a special first tile. This first tile can be quickly placed and the game will select all the correct frame connections automatically.
updateStats(): This function runs at the end of the standard updateStats function and so can be used to force the player to have specific max stats.
isComplete(): When this function returns true the lesson is won.
hasFailed(): When this function returns true the lesson is lost.
Adding Equipment: debug.addEquipment('itemName'); // This will both add and equip the item
Adding Items: debug.addEquipment(itemName');
Adding Talent: debug.learnTalent('talentName', 'upgradeName'); // Excluding upgradeName defaults to the base talent
Adjust Enemy Max HP: SchoolLessons.setEnemyHp(charID, amount); // charID starts at 1 (PC is 0) and is based on the order they are loaded (just test it)
Remove Enemy Ability: SchoolLessons.removeEnemyAbility(charID, abilitySlot); // ability slot starts at 0
Start Enemies Agroed: debug.agroAllNPCs();
Default Courses: The best way to get an idea of what you can do here would be to check out the default Tutorial and AdvancedTactics lessons.