Bundles

Bundles are the way you modify Ranvier's functionality without having to touch the core code. They let you modify
basically everything about the game: how commands are interpreted, commands themselves, channels, items, rooms, NPCs,
quests, login flow, and spell effects.

Ranvier comes with a set of bundles that provide a base level amount of functionality expected in most Diku-style MUDs.
These bundles are example implementations. They are absolutely stable enough to act as a base for your game but if you
wish to write your game from scratch using only the core engine it's entirely possible to disable all of these bundles
with no harm whatsoever.

debug-commands - Commands useful while debugging (givexp for example), commands only usable by ADMIN role players

Note: If you want to modify one of the Ranvier bundles it's recommended that you disable the bundle you wish to
modify, copy it to your own bundle, rename it, and modify that. This way you can safely pull in updates without
worrying about conflicts.

Each individual bundle is a standalone modification to the game, think of them like a Skyrim mod. A mod could add a
single item or it could completely transform the game. Unlike Skyrim mods load order does not matter.

To create a new bundle simply create a new directory underneath bundles/. Inside your bundle directory you may have
any or all of the folders/files below.

A bundle can contain any or all of the following children though it's suggested that you keep your bundles as modular as
possible. Click on any of the items below to see an in-depth tutorial.

areas/
Areas contain items, rooms, NPCs, and quests.
behaviors/
Behaviors are scripts that are shared between entities of the same type (rooms, items, NPCs)
classes/
Player classes
commands/
What it says on the tin, commands to add to the game
effects/
Effects that can be applied to characters (NPCs/Players)
help/
Helpfiles
input-events/
Input events are events that happen on the socket, this involves login and command interpreting.
Warning: Because of input events' important role it is generally not advised to load more than one
bundle with input events
skills/
Player skills (Spells are just skills with the SPELL type)
channels.js
Communication channels
player-events.js
Basically everything the player does triggers an event on them that can be attached to and perform
functionality such as experience, leveling, combat, and time based calculations

Bundles are meant to be self-contained, shareable folders. With that in mind if your bundle relies on a node module
not present the package.json that comes with Ranvier the suggested approach is the following: