RCQuests

This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

  • RCQuests is an inhouse Raid-Craft plugin that provides the ability to configure different quests with conversations, npcs, and many more options of supporting plugins.
    The Quests plugin uses the Action API to parse the configs for trigger, requirements and actions. To learn how to program new actions, requirements and trigger and how to configure them, please see the Action API article.

    The plugin also depends on YAML Configurations and a database to save the progress of quests. The database can also be queried for all configured quest templates, but any changes made to the database template entries will be overwritten on plugin reboot.

    Installation

    RCQuestsmakes use of the RaidCraft-API and all API classes are inside the de.raidcraft.api.quests package. The RaidCraft-API is therefor a mandatory requirement before installing RCQuests.

    To install the plugin simply drop it into the plugin folder, restart the server, adjust the database.yml configuration and restart the server again. There are also several optional plugins that add to the functionality of RCQuests:
    • RCConversations - Adds the option to define conversations that can be used to talk to the environment and NPCs for example.
    • RCMobs - Makes it possible to spawn in Custom Mobs as a part of quests.
    • RCItems - Allows the use of Custom Items inside quests as rewards and requirements.
    • RCTrade - Adds the option to add quest based trade windows.

    Folder Structure

    RCQuests has a similiar folder structure to RCAchievements and loads all configured quests recursivly from the quests/ folder. However you can configure the folder location inside the config.yml.

    languages/ - Contains language files for all requested languages.
    quests/ - Contains all configured quests and can contain an infinite amount of subfolders.
    config.yml - Holds several configuration values for basic quest tasks. Like the max. amount of quests a player can have.
    database.yml - Contains username, password, etc. for the database access.

    Configuration

    All quests are located in the quests/ folder and subfolders. As best practice it is recommended to create subfolders based on your quest categories, starting with the world name. If you have quests for different areas of your world you should create folders for these areas and create the quests inside.

    An example would be: quests/world/guilds/neweden/catacombs/

    Inside this "quest base folder" you can now start creating the different parts that are needed for your quest to work. This could be conversations, mobs, items, hosts and so on. The folder structure you choose also defines the unique name of your quest. Lets take the neweden catacombs quest as an example. Inside this folder you have the different quest parts as YAML Configurations. All quests inside start with the unique name prefix: world.guilds.neweden.catacombs.* where the * is replace by the file name without the suffix.

    Suffixes can be registered by any plugin that implemented RCQuests support:
    • *.quest.yml - The base suffix of the quests plugin. All files that have this suffix will be loaded as quests and are a mandatory part of a working quest.
    • *.host.yml - Defines a quest host that can be interacted with to start conversations or trigger quests. Hosts can be: items, signs, npcs, etc.
    • *.conv.yml - Marks a file as conversation and instructs the RCConversations plugin to load the file as conversation.
    • *.mob.yml - Passes the config to the RCMobs plugin and loads it as a custom mob.
    • *.mobgroup.yml - Passes the config to the RCMobs plugin and loads it as a mob group.
    • *.trade.yml - Loads a new trade window that can be opened by the quest via a conversation or action.

    Action API Order and Quest Flow

    Each quest has multiple stages that activate different Trigger and Actions. Every quest has a start section that can contain multiple trigger for handling the entry point into the quest. These triggers are defined inside the trigger section and registered for all players that have not started or completed the quest.

    After the quest start the triggers of all active objectives are active and can be triggered. When a objective trigger is triggered the following order applies:

    Event the Trigger is listening on is fired -> Arguments (args) of the Trigger are checked against the Event -> Trigger is fired -> Requirements of the trigger (directly under the trigger) are checked - Can contain dummy count requirements -> If all trigger requirements match -> Requirements of the objective are checked -> If all objective requirements match -> Actions of the trigger are executed

    Creating a new Quest

    Planning the Quest

    Before you start going crazy with the creation of quest text and files your should plan the layout of your quest. You need to ask yourself a couple of questions and define what is part of your quest.
    • What NPCs (Quest Hosts) do you have in your quest? How are they named? What is their background story in the greater picture? How are they involved in the quest? What is their character like (evil, friendly, crazy, charming, old, etc.)?
    • Where does the Quest take place (Quest Location)? Does the quest story fit into the setting (location) of the quest?
    • Whats the general objective (Quest Objective) of the quest? What needs to be done for the quest to be completed? Whats the order of the objectives? Can the quest be splitteted into separate sub quests?
    • Whats the story of the quest (Quest Conversations)? What do the NPCs say? Are there dialogs/monologs that trigger on special locations or actions? Is there enough player interaction? Do the dialogs and answers make sense?
    • Are there Custom Mobs involved (Quest Mobs)? How strong are they? Whats the resulting level of the quest? Is it a group quest or can it be done solo?
    • Does the quest have a pre quest or story (Quest Requirements) that needs to be done beforehand?
    • When and where (Quest Trigger) does the quest start?
    • What is the reward (Quest Reward) for completing the quest?

    Creating the Folder Structure

    Now that we have a plan for the quest and all it components we can start creating the folder structure. Like described above the base folder structure should be something that defines the location of the quest, e.g.: world.regions.bravaria.<quest_name>.

    Inside this quest main folder your should create subfolders for all of your subquests. Lets say our main quest is a conspiracy against the major of Bravaria and we need to gather hints from the nearby bandits in front of the city gates. After that we can bring the major to justice by talking to the city judge and guard master or we can help the major cover up his crimes.

    This would be a simple 2 step quest and the second step has 2 sub steps where you can decide for one. The folder structure would look like this:

    world/regions/bravaria/the-corrupt-major/
    world/regions/bravaria/the-corrupt-major/1-gathering-hints/
    world/regions/bravaria/the-corrupt-major/1-gathering-hints/1.quest.yml
    world/regions/bravaria/the-corrupt-major/1-gathering-hints/corrupt-bandit.mob.yml
    world/regions/bravaria/the-corrupt-major/1-gathering-hints/corrupt-angry-bandit.mob.yml
    world/regions/bravaria/the-corrupt-major/1-gathering-hints/corrupt-bandits.mobgroup.yml
    world/regions/bravaria/the-corrupt-major/1-gathering-hints/hint.item.yml
    world/regions/bravaria/the-corrupt-major/2-taking-action/
    world/regions/bravaria/the-corrupt-major/2-taking-action/serving-justice/
    world/regions/bravaria/the-corrupt-major/2-taking-action/serving-justice/end.quest.yml
    world/regions/bravaria/the-corrupt-major/2-taking-action/serving-justice/judge.host.yml
    world/regions/bravaria/the-corrupt-major/2-taking-action/serving-justice/judge.default.conv.yml
    world/regions/bravaria/the-corrupt-major/2-taking-action/serving-justice/judge.corrupt-major.conv.yml
    world/regions/bravaria/the-corrupt-major/2-taking-action/serving-justice/corrupt-guards.mob.yml
    world/regions/bravaria/the-corrupt-major/2-taking-action/corruption-pays-good/end.quest.yml
    world/regions/bravaria/the-corrupt-major/2-taking-action/corruption-pays-good/major.host.yml
    world/regions/bravaria/the-corrupt-major/2-taking-action/corruption-pays-good/major.default.conv.yml
    world/regions/bravaria/the-corrupt-major/2-taking-action/corruption-pays-good/major.payoff.conv.yml
    world/regions/bravaria/the-corrupt-major/2-taking-action/2.quest.yml
    world/regions/bravaria/the-corrupt-major/2-taking-action/guard.choosing-the-path.conv.yml
    world/regions/bravaria/the-corrupt-major/start.quest.yml
    world/regions/bravaria/the-corrupt-major/guard.host.yml
    world/regions/bravaria/the-corrupt-major/guard.default.conv.yml
    world/regions/bravaria/the-corrupt-major/guard.start.conv.yml

    6,600 times viewed