Skip to content

Creating Mods

Cromha edited this page Apr 28, 2024 · 46 revisions

As you may know, the engine of Bane Of Wargs is a variant of the original Dungeons Of Kathallion engine. Even if they share multiple similarities, they are not compatible. Bane Of Wargs mods and Dungeons Of Kathallions plugins are not compatible and are very different, as the Dungeons Of Kathallion engine is deprecated by now.

Your mod should be placed in the plugins/ directory, which is located in your game config folder. To get your game config folder, while in the game menu, select the Preferences button and it will open your preferences which are located in your system game config folder; just search for 'Bane-Of-Wargs' in your root user directory.

How mods work is that their data gets merged with the vanilla game data. So note that you can use already existing vanilla enemies, items and everything, in your own mod data (for example you can re-use vanilla enemies for your custom enemy spawning pool).


You can simply find your game directory by opening the python environment in your terminal, and running the import appdirs, then the appdirs.user_config_dir(appname='Bane-Of-Wargs') command. This will output your game directory.

lolo@fedora $ python
Python 3.12.2 (main, Feb  7 2024, 00:00:00) [GCC 13.2.1 20231205 (Red Hat 13.2.1-6)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import appdirs
>>> appdirs.user_config_dir(appname='Bane-Of-Wargs')
'/home/lolo/.config/Bane-Of-Wargs'
>>> 

You can find examples of mod data in the data/ directory. It's the vanilla content of the game.

Hint: you can run integration tests of your plugin data with the following python script: https://github.com/Dungeons-of-Kathallion/Bane-Of-Wargs/blob/master/.github/code_checks/run_yaml_data_tests.py. Make a copy of your .yaml files and store them into a new directory called 'data', and then download the schemas. You can then run the script and it'll tell you if anything's wrong.

Each mod requires the following file to work:

plugins/
|-- Expample Plugin/
|   |-- imgs/ # where you find all '.txt' files, for in-game ascii thumbnails
|   |   |-- [...]
|   |-- scripts/ # where you find all python scripts for utilities items, dialog custom events or dungeons enigma rooms
|   |   |-- [...]
|   |-- dialog.yaml # where you find all dialogs definitions
|   |-- drinks.yaml # where you find all drinks definitions
|   |-- enemies.yaml # where you find all enemies definitions
|   |-- events.yaml # where you find all events definitions
|   |-- items.yaml # where you find all items definitions
|   |-- lists.yaml # where you find all enemy categories definitions
|   |-- map.yaml # where you find all map points definitions
|   |-- mission.yaml # where you find all missions definitions
|   |-- mounts.yaml # where you find all mounts definitions
|   |-- npcs.yaml # where you find all npcs definitions
|   |-- start.yaml # where you find the default save definition
|   |-- zone.yaml # where you find all the map zones definitions
|   |-- requirements.txt # where you put all the required modules for your scripts, this is optional
|   |-- copyright # a copyright file using Debian format, for every ASCII-art artwork made/edited in the plugin

You will find information about every of these files in the following wiki pages:

Data Types Knowledge

Additional Knowledge

Clone this wiki locally