Dev | Creating a Quest - JasXSL/GoThongs GitHub Wiki
First things first. A quest in GoThongs is a series of cells (basically maps) that need to be completed in succession. Once the final cell is completed, the quest is marked as finished and the player(s) can hand it in.
Each cell is a single linkset of max 64x64x64m. This also means you can use max 254 prims (2 prims are reserved for the level). Prim equivs don't matter as much so you can make complex meshes if you want to create long cells.
These are the recommended first steps:
- Write down the story you want to tell.
- Decide if you want to split it into multiple quests, and possibly decide roughly how to split your quest into cells.
- Build a cell. I suggest making the root prim a 64x64x0.5m platform so you can see that you aren't going out of bounds with your cell. The root prim also has to be at least 2 meters below the lowest point of the cell to prevent clipping through the ground. Also make sure to leave a prim for the DB2 prim (more on this in the scripting guide).
- I suggest you keep scripts to a minimum (most if not all official levels have no scripts other than in the root prim. All scripted assets can be spawned when the level begins for ease of restarting).
- Keep building cells until you are happy with the actual level design.
You can use prim descriptions to make things interactable. Prims in GoThongs use the syntax TASKNAME$ARG1$ARG2$$TASK2$TASK2_ARG... etc
Basically tasks are lists separated by $ and tasks themselves are separated by $$. Here is a list of description tasks you can use:
| Task | Args | Description |
|---|---|---|
| D | (str)text | Sets the description that shows up on your HUD. Required for E-button interaction. |
| P | (vec)offset | Teleports the user to prim_pos+offset on interaction |
| T | (key)uuid, (float)vol=1 | Triggers a sound on interaction |
| S | (key)uuid, (float)vol=1 | Plays a sound on interaction |
| SO | void | Sits the player on the prim on interaction |
| CL | (rot)rotation_offset, (str)anim_passive, (str)anim_active, (str)anim_active_down, (str)anim_dismount_top, (str)anim_dismount_bottom, (CSV)nodes, (float)climbspeed | Marks the object as climbable on interact. I strongly suggest you take a look at some of the built in levels climbable props to get an idea. |
| WT | (vec)stream, (float)cyclone, (float)swimspeed_modifier, (str)windlight_preset | Only usable on a WATER object. Read more about these on the using the dev HUD page. |
| SS | (str)name, (float)vol | Sets the HUD soundspace when a player walks over the object. See jas Soundspace in xobj_core/classes/jas Soundspace.lsl for a full list of sounds you can use. |
| WL | (str)preset | Sets the user's windlight setting to this preset when the user walks over the prim. |
| tFS | (str)sound | Sets the footstep sound when walking over this prim. See xobj_toonie/classes/ton Footsteps.lsl for a full list of supported footsteps. |
| book | (int)id | Loads a book from the database. |
| STDIN | mixed | Sends LocalConfMethod$stdInteract to the prim on interaction. Can be followed by any vars to identify the object. |
| LVIN | mixed | Makes got Level raise the LevelMethod$interact event. See got Level for more info. Can be followed by any vars to identify the object. |
| ROOT | void | Set the full description to ROOT to redirect the interaction to the root prim the interacted prim is linked to. |