Virtual added a new file:
QuoteDisplay MoreThis mod alone does NOT have any content. This is a tool that imports quests, images, language files and zones into the game with some additional functionality. Mod authors can use this as a dependency to easily add more Custom Quests into the game. Simply link to this page in your own install instructions.
VCQL allows Quest Creators to add multiple quest files, custom images for quests, quest zones and houses support for every available language in SPT-AKI with the included placeholder feature for not yet translated quests. The purpose of this loader is to allow aspiring modders to create a mod, without having to deal with the code associated with loading quests, locales, images or more advanced functionality like side specific quests or zone creation / loading. Although creating quests is a big task, I hope that this loader will give some confidence to those who purely want to add more content to the game, and don't know where to start. This mod is not limited to newer players however, a lot of the mod authors that use VCQL are quite experienced in programming and the SPT server structure, but simply enjoy the easy to use structure of the mod.
Features -
Current Release -
- Quest Importing
- Locale Importing
- Quest Image Importing
- Side Specific Quests Support
- Trader Image Importing
- Trader Assort Importing
- Trader Quest Assort Importing
- Date Range Quests (thank you to Shibdib for the PR)
- Custom Quest Zones + Places Support (thank you to CJ and Groovey for the code)
- Tool For Zone Creation
> Download and extract Virtual's Custom Quest Loader into your mods folder. Inside is a 'user' and 'BepInEx' folder which will automatically be placed in the correct location.
> Follow the install instructions for the Custom Quest / Mod requiring VCQL as a dependency.
Virtuals Custom Quests- Outdated
Goblin King- Removed From SiteA.E.S. (ULTIMATE QUESTING TRADERS)
Please send me a DM to add any mods I may miss.
General Overview
For a working quest, you will need a file for quests and a file for locales. Each quest has various conditions to start, such as level, loyalty level, previous quest etc. Conditions to finish such as kill, find, place etc. And rewards for completing the conditions. Learning how quests function and getting efficient at creating quests is a very steep curve. This has, and can be achieved by aspiring modders with no experience in modifying games, or creating mods. This loader is designed to remove all code aspects of importing quests and associated files into the game, and leaves the task of creating quests to be solely within JSON files. I advise all new and interested people to look at my VCQ mod, and how it is setup, to better understand quests and how this loader works.
For assistance with creating quests reference this tool: Resources: Quest Values Reference Tool
To make this process easier, there is a quest creation GUI tool developed by CathieNova: Haven VCQL Helper
Quests
- Quest files can have any name but must follow the format in AKI_DATA/server/database/templates/quests.json as the mod imports them INTO the server stored copy of this file. You can generally use this file to help learn how to include various types of quests or tasks into your pack, and it is a good reference tool. There is no limit to how many quests can be in a single JSON file.
- Side specific quests are supported. The "sideExclusive" value of a quest can either be "Pmc" (for both sides), "Bear" or "Usec".
Locales
- Locales are the language files with the text for every single item, event, bot, object in SPT. Each quest, and all of it's conditions require locales that will be displayed to the user. Locales are objects, where the key is the quest or condition ID, and the value is the string of text to be displayed to the user (e.g. "VCQ_1": "Welcome To Tarkov". All files in the locales folder will be imported to AKI_DATA/server/database/locales/global/#LANGUAGE#.
- VCQL supports all languages currently available in SPT, and ensures that quests without translated locales will be consistent in other languages, by adding whatever locales have been given to every other language. For instance, most quests will only have 'en' or English locales, these will be added to every other language in SPT, so the default key is not shown, and more users can enjoy your quests.
Images
- All images need to be 314 x 177 and MUST be either a .png or .jpg.
- To use custom images, place the image into the 'res/quests' directory and reference the name of the image in your quest file, in the same format that the default quests do, just with the name of your image.
- All Tarkov quest images are in AKI_DATA/server/images/quests for reference but please use the provided loader directory and do not direct images straight into this location.
Assorts
- Base game assorts are in AKI_DATA/server/database/traders/#traderID#/assort and questassort.json
- Assorts are trades that are offered by a trader, which can either be a purchase with cash or a barter.
- Base Values
- In any assort file for VCQL, a "traderID", "items", "barter_scheme" and "loyal_level_items" property are required. 'traderID' specifies the trader that will be used for every assort in that file. 'items' lists all the barters and how many are available. 'barter_scheme' lists the items required for a trader. 'loyal_level'items' uses the id values from a barter item as the key and specifies the loyalty level required.
- All assort items have a 'parentId' and a 'slotId', which for any single item will have the value 'hideout'. In the case of nested items, like a weapon preset, these values then change to reference eachother in a tree-like structure. (Weapon builds can be saved in the profile and copied to assorts (with a few changes) to save time, instead of manually building each preset)
- VCQL Specific Values
- Barter items can have a 'unlockedOn' and 'questID' property to specify that they will be unlocked upon the satisfaction of that quest condition. (Assorts without these values will just be treated as normal barters, so you can use this system to add assorts to traders)
- 'questID' is simply the ID of the quest and 'unlockedOn' is the condition type that unlocks the assort, which can be either 'started', 'success' or 'fail'
Side Specific and Date Ranges
- Side specific quests are supported. This acts as a whitelist for which side can access the quest. To enable this, add a property to a quest called "sideExclusive" with either "Bear" or "Usec" as the value.
- To enable a date range, 4 properties are required within the base of a quest. 'startMonth', 'endMonth', 'startDay', 'endDay'. By configuring these properties, a quest will only be available to the user during the specified date.
Zones
- Zones and Places are used to specify locations on the map used (in our case) for quest conditions. Conditions such as eliminating bots in a zone, finding a zone, placing an item / marker and launching a flare all require the location to be specified.
- Zone files are output by the GUI tool and can be placed in the 'zones' directory. By referencing the 'ZoneId', they can be loaded in and used by quests.
Zone Creation GUI
Included with VCQL is a GUI tool within the BepInEx menu which can be used to create and modify custom zones. With regards to quests, zones are used to specify a region or place for quest conditions like 'kill bots in x area', 'place item at x area', 'launch flare at x area' etc. The tool allows modders to create and visualize the zones before they are output to a file, ready to be loaded back in and used for custom quests.
See the Repository for images and a detailed rundown of the tool.
What do I need to create a quest?
The bare minimum is Notepad, or any basic text editor. However I do recommend VSCode because it allows you to see basic syntactical errors and prettify files. VSCode paired with Refringe's extension significantly helps to create quests since you can see the names of values.
How can I learn to create quests?
The easiest way is to start simple. Look at the existing quest files, and some modded quests to see how quests work, and start changing some values. Then when you get more confident, try to create your own. You do not need to create every single quest from scratch. If there is a base game quest that is similar to what you want, copy it and change the values. If you find that you are spending alot of time and still receiving errors, come ask in the discord for help. You also have tools like this Reference Sheet to help you.
How do I upload my quest / mod requiring VCQL?
All you need to do, is include a path to "user/mods/Virtual's Custom Quest Loader" with the same folder structure you used to develop your quests. When a user downloads VCQL, and then your mod, they will be able to place it straight into the loader, and the files will go to where they need to be. Please see VCQ as an example on this structure. Do not include the mod directly in your download.