Question: My mods keep registering as a virus on other people’s computers. What do I do?
Answer: You have two options:
- Windows sees .js files in a zip as a virus for some reason. You can rename .js files to .ks files to prevent this.
- You can use 7zip to make the zip file instead of the native windows compression tool
Question: How can I upload mods so other people can download?
Answer: You can use MEGA or another external file host, or you can create a project in Itch.io and upload it there.
Question: Why can’t I see the mods forum on the discord?
Answer: Check the rules post
Question: How do I format the files in a mod?
Answer: A mod should be a .zip file, and if autoloading (offline version only) you should place it in the Mods/
folder
Make sure that the mod files are in the root of the zip file. For example, if your mod is called MyMod.zip
, make sure there is NOT a MyMod
folder that contains all the files. If you do this you will not be able to load custom assets.
Question: How do I add a new perk in its own category?
Answer: In a .ks file, your code should look like this:
KDCategoriesStart.push(
{name: "MyPerks", buffs: [], debuffs: [],}
);
addTextKey("KDCategoryMyPerks","My Perks");
addTextKey("KinkyDungeonStatMyFirstPerk","My First Perk");
addTextKey("KinkyDungeonStatDescMyFirstPerk","Spend perk points to asset dominance.");
KinkyDungeonStatsPresets.MyFirstPerk= {startPriority: 100, category: "MyFirstPerk", id: "MyFirstPerk", cost: 2, tags: ["start"]};
KDPerkStart.MyFirstPerk= () =>
{
// Insert code to run at the beginning of the game
};
KDLoadPerks(); // needed to reload the perk list
Question: How do I run code at the start of the game without a perk? Answer: Simplest way is to add an event that occurs during quest handling, checks if a flag is set, and if it isn’t, run your code and set the flag. In earlier versions this is the way to add an event:
// Initialize postQuest if it isn't already present
if (!KDEventMapGeneric.postQuest) KDEventMapGeneric.postQuest = {};
KDEventMapGeneric.postQuest.myEvent = (e, data) => {
if (!KinkyDungeonFlags.get("myEventFlag")) {
// Run my code
KinkyDungeonSetFlag("myEventFlag", -1);
}
}
in versions 5.3 and after you can use KDAddEvent()
instead:
KDAddEvent(KDEventMapGeneric, "postQuest", "myEvent", (e, data) => {
if (!KinkyDungeonFlags.get("myEventFlag")) {
// Run my code
KinkyDungeonSetFlag("myEventFlag", -1);
}
});
Question: How do I check if the player has a perk?
Answer: You can use KinkyDungeonStatsChoice.get("MyPerk")
, or in 5.3 and beyond: HasPerk("MyPerk")