DARKEST DUNGEON: DESIGN SPREADSHEETS

DARKEST DUNGEON DESIGN SPREADSHEETS

Sheets and contents Copyright 2013-2018 Red Hook Studios Inc. Permission granted to use for personal non-commercial use only.

For questions: find me on Twitter @tylersigman or email (tyler at redhookgames dot com) and I’ll do my best to answer if I have time.

The spreadsheets are located here: https://www.dropbox.com/sh/li5wfev4qz6pnov/AADanofYFEEuLQi8lF4TjI1ua?dl=0

DDDW_Monsters.xlsm (Macro-Enabled Excel Workbook)

This is the actual design spreadsheet we use to export monster stats into the data files readable by the game. Editing monsters via this spreadsheet is much faster than editing individual files.

??????ONE CLICK = ALL MONSTERS EXPORTED.??????

YOU HAVE THE POWER IN YOUR HANDS. USE IT WISELY WILDLY.

DISCLAIMERS:

  • Use at your own risk. Back up your game data or create a working directory for playing around before exporting monsters and overwriting your important data.

  • If you screw things up terribly, you should be able to use Steam’s VERIFY CACHE to replace your DD install files.

  • The macros are generally crap and poorly constructed but they should work. We are very content focused at Red Hook, not so much tools focused. The tools generally live in a “just good enough” state.

  • This monster sheet grew and grew and grew over 5 years, so it’s a bit of a frankenstein as we started adding new features, more monster skills, DLC, and so on.

  • SOME monsters are not exported from this sheet, but rather just hand-edited. Most monsters come from this sheet, though. Why are some hand-edited while most are not? Good question. (Sometimes it’s just faster to make a special-case monster by hand if it has lots of weird features or is extraordinarily simple.)

  • While most monster stats and properties are edited ON THE WORKSHEET, some are hard-coded in the export Macro in Visual Basic. I tended to do this when I quickly needed to add something to one monster but couldn’t afford to spend the time modifying the entire sheet for this special case. The sheet became a behemoth that was hard to modify format during time crunches.

  • There might be bugs.

  • The macros have MAGIC NUMBERS and other hand-entered values. If you add a column to the spreadsheet, don’t expect things to export properly until you edit the macro to fix whatever magic number you just broke. Many magic numbers refer to column IDs, so that’s especially fragile.

  • Unfortunately, we aren’t able to offer technical support. These are the actual tools we use, so they should work, but it’s pretty easy to crash the game by putting the wrong entry in for an item. (This is no different than editing the actual files, in this regard.)  Please consult the modding guide and the excellent modding community for help troubleshooting your mods.

  • Good luck! You can reach me at @tylersigman on Twitter or tyler@redhookgames.com and I’ll try to answer questions, but no guarantees and don’t be upset if I’m too busy to get to it. My first priority is internal development.

ANATOMY of the WORKBOOK:

The structure of the sheet is as follows:

  1. Core combat system stat reference inputs. These are linked from another sheet (not provided). But you can change them on this sheet and they’ll work fine.

  2. Power scaling factors for scaling monsters from their novice level selves to their veteran and champion level selves.

  3. Individual monster stats, row by row. (Majority of the sheet.)

Each of those three items work together. Wherever possible, we try to use calculations to power scale rather than entering hard inputs for different monster levels.

An example calculation would be:

  • Unclean Giant CHAMPION level = unclean_giant_C

  • Exported file = unclean_giant_C.info (note that monster files are human readable)

  • Starts with some hand entered stats for novice level giant, while looking at core combat reference stats for a reality check.

  • Use power scaling factors to calculate the Champion level version of this monster.


POWER SCALING INPUTS EXPLAINED:

You’ll find these in cells AG3:AN19 area.

These inputs tell you how many standard combat “levels” for each stat should be calculated and incremented to form the differences between the different levels of monsters.

  • Level 1 = novice

  • Level 3 = veteran

  • Level 5 = champion

  • Level 6 = Darkest Dungeon

What is a level, and why are there gaps? Level 1, 3, 5, etc.  Heroes scale from resolve level 0 to level 6, and their combat skills scale from rank 1 to rank 5. But we wanted a smaller number of monster levels, so heroes can sometimes feel a little underpowered or a little overpowered compared to the current quest they are on.

The scaling factors set those stat gaps. You’ll see that scaling factors for a given monster level might vary some…they aren’t constant across the board. (E.g. scaling factor for Crit might be different than HP.) These values were refined over the course of the years and there are reasons for each. But feel free to play around with them to suit your goal. You want Champion level monsters to have tons of Hit Points but not necessarily hit for more damage? Easy to do.

E.g.: Level 3 monsters (i.e. Veteran level) have their HP scaled up by 2.0 levels compared to a Level 1 monster but DODGE/Defense is only scaled up by 1.75 levels

E.g.: Level 6 (Darkest Dungeon) monsters have their Accuracy scaled up by 4.75 levels compared to a Level 1 monster but Damage is scaled up by 5.50 levels.

Where are the numerical definitions of these “levels”, you ask? Go back to the top left of the sheet: (or follow the formulas, of course)

Originally, Veteran meant powerscaling factors of 2.0 across the board, and Champion meant factors of 4.0 across the board. Playtesting and feedback iterations led to the values you see now. Feel free to experiment!


HOW TO USE THIS WORKSHEET:

WHEN IN DOUBT: STUDY THE CELL FORMULAS

EXPORT ALL THE THINGS!

  • This is very easy—all it takes is one button click. First, check your export directories though.

Master export directory: set this in Range Q2

Directories per monster: set these per monster in Column A

Once these are set, click the big button at the top of the sheet and the magic will happen! Note: no confirmation message will pop up upon successful export. You’ll click and it will seem like nothing happened. If something DOES pop up when you click, that’s probably an export error and the macro bombed out.


Making a New Monster:

Each monster is entered on a single row of the spreadsheet. However, usually the monster has a group of 4 rows representing:

  • Row 1 = base values of the monster, used to help in formula calcs for…

  • Row 2 = _A = novice level of the monster

  • Row 3 = _B = veteran level of the monster

  • Row 4 = _C = champion level of the monster.

Sometimes a monster might have another row

  • Row 5 = _D = “Darkest” level of the monster

Usually we enter the monster base values in the first row and then rely on formulas to calcualte the rest.

However, it’s important to note that this is all just a matter of convenience. In theory you could hand enter all values for every monster variant.

Each monster = 1 row = 1 output data file

Typical Monsters

In this case, maggots have only 3 variants, but cultist_brawlers have a special version (cultist_warlord_D) used in the Darkest Dungeon.

Making a New Boss:

Bosses should be grouped in the bosses part of the spreadsheet, to ensure that when they are exported they get the “boss” tag. I’m not entirely sure if the “boss” tag is even used any more, tbh, but better safe than sorry! Legacy habits die hard.


MONSTERS Stats Column by Column:

  • (COL A) Export subpath: what subpath under directory defined in range Q2 that this individual monster should go in. (Used for DLC separation.)

  • (COL B) ID: monster id. This is what all game code references this monster as. Note: to change the monster display name, you’d change the text string that uses this monster ID.

  • (COL C, D) default mode, other mode: used when a monster can switch “modes”. E.g. see “plowhorse” from Color of Madness or various Crimson Court mobs.

  • (COL E) size: how many ranks big the monster is

  • (COL F) HP: hit points

  • (COL G) DOD: monster dodge / defense rating. This gets subtracted from attack accuracy to determine chance to hit.

  • (COL H) PROT: monster protection (%). What % of incoming attack damage gets mitigated.

  • (COL I) Speed: monster speed rating

  • (COL J thru N) Resistances: remember that resistance calculations are hero skill effect chance – monster resistance. So if you put a monster at 100% resist, that doesn’t actually mean it resists 100% of the time. A high level hero will often have an effect chance (e.g. bleed) of 140%. So in that case, a resist of 100% means the effect will still proc 40% of the time.

  • (COL O) keywords: used for when skills or trinkets have special effects for monsters of type “XXXX” (e.g. “unholy”). WARNING: if you have more than one keyword for the monster, make sure to leave no space between the comma. E.g. “human,unholy” NOT “human, unholy”. (Exporter fragility.)

  • (COL P thru U) Loot codes: up to three loot codes and corresponding #draws for each loot table.

  • (COL V) Preferred skill: this is only used if the monster brain has an entry for adding chances for the “preferred skill”.  This entry was used more before we had the monster brain system we do now. Brains override this. “-1” is for no preference–the monster would just pick a skill randomly. If a monster has a brain that adds chances for a preferred skill, you could define that preferred skill here.

  • (COL W) # of initiatives per round

  • (COL X) monster brain ID. Monster brains are contained in the __brains.json files

  • (COL Y) death class: ID of what the monster becomes on death (e.g. corpse)

  • (COL Z) life link: if the life_link monster dies, this monster will die

  • (COL AA) .does_spawn_loot: TRUE or FALSE default TRUE

  • (COL AB) Battle Modifiers: these are used for any special monster features. Have a look at examples to see some. NOTE: some battle modifiers are still added hard-coded in the Macro, so don’t assume all battle modifiers are represented on the sheet.

  • (COL AC) Can Be Damaged (TRUE/FALSE) default TRUE

  • (COL AD) Can Be Missed (TRUE/FALSE) default TRUE

  • (COL AE) Can Be Guarded (TRUE/FALSE) default TRUE

  • (COL AF) Can Be Suprised (yes/no) default yes. Why not TRUE/FALSE? GOOD QUESTION

  • (COL AG) Can Suprise party, default yes. Same as above.

  • (COL AH) Disable Stall Penalty (yes/no) default no. If ANY monster in the encounter has a “yes”, then stalls aren’t calculated for this fight.

  • (COL AI) Accelerate Stall (yes/no) default no. If ALL monsters in the encounter have a “yes”, then stalls are accelerated.

  • (COL AJ) Prevent Act Out Retreats (yes/no): heroes can’t run away due to an affliction

  • (COL AK) Spawn Effects: any game effects that instantly take effect upon that monster’s spawn. See effects.darkest and similar files.

  • (COL AL) Prefers Front?: for wavemash spawning only (Endless Harvest quest in Color of Madness DLC). Does this monster prefer to be spawned in front (True) or back (False)?

  • (COL AM) Challenge Rating: early on, we calculated a rough challenge rating for the monster and then used that to help make sure we were balancing monster encounters across all regions. Over time, the calculations weren’t maintained and final tuning was done more by hand. Don’t put a lot of stock in this number because a monster’s true challenge depends on a lot of factors and these calculations would need to be updated in most cases to be accurate. Left in for legacy purposes.

  • (COLs AN+) MONSTER SKILLS (see next section)


MONSTERS SKILLS Column by Column:

The remainder of the columns in the sheet are monster skill inputs. Monsters can now support up to 11 skills entered on the sheet, although rarely would you need that many unless you are INTENSE and want to do crazy stuff with some of your monster mods. (Yes I’m looking at some of you.)

  • Skill Column 1: Skill Name. The skill id. Note: this is not the actual text that will appear for the skill. To change that, you change the text string with the same ID as this skill ID.

  • Column 2, 3: Modes

  • Column 4: Riposte. Is this skill a riposte?

  • Column 5: accuracy for the skill. Note that generally you should only have to enter the base level 1 accuracy (darker blue cell) and then powerscaling formulas will calculate the appropriate accuracy for the _B (level 3) and _C (level 5) monster variants.

  • Column 6: average damage. I usually just enter the average damage and the “spread” (Column 7) and then let the formula calculate Min and Max damage range (Columns 8, 9)

  • Column 11: Crit. Typically just enter “reference crit” value and then the actual crits are calculated based upon powerscaling inputs. (See formulas.) Warning: if you truly want no crit possibility, put 0% and make sure to put 0% on each variant of the monster. Default crit calculation will scale the crits so if you put 0% on monster _A, monster variant _B and _C will still have + crit if you don’t manually put 0%.

  • Column 12: Type. “melee” or “ranged”. This is used to set what art timescript is used for zooming the camera.

  • Columns 13 thru 19: Effects. You can set up to 7 effects to proc when the skill is used. See effects.darkest and similar.

  • Column 20: launch ranks (e.g. 4321)

  • Column 21: target ranks. “~” is AOE and “@” is friendly. E.g. ~123 means hits ranks 1 + 2 + 3. ~@123 means hits FRIENDLY ranks 1 + 2 + 3. Make sure to enter a ‘ so Excel will treat the ~ or @ as text item instead of trying to calculate it.

  • Columns 22-24 diminishing/increasing damage: used for causing different damage to each target the skill hits. Usually used for reducing damage the more targets you hit. See monsters with this on them for how to use it.

  • Columns 25-26: possible # of extra targets and chance (%) those extra targets being hit

  • Column 27: Heal value of the skill.

  • Column 28: MOVE on the skill. Format is [MOVE BACK] [MOVE FWD] e.g. 0 1 means move forward 1. 0 2 = move forward 2. 2 0 means move back 2.

  • Column 29: self target valid? (TRUE/FALSE)

  • Column 30: Can Be Riposted? (TRUE/FALSE) default TRUE. Sometimes you want a skill to be not ripostable so hero ripost strats can’t break certain boss activities.

  • Column 31: Ignore Stealth? (TRUE/FALSE) default FALSE. Does this skill penetrate stealth condition?

  • Column 32: DEV = Damage Effective Value. Basically Effective Value (EV) of the attack when you consider accuracy and crit potential. Used for quick comparisons between monsters but DOES NOT account for DOTs, damage buffs, and other effects that might increase combat potential and resulting damage.

Rinse Repeat for up to 10 skills per monster.

COMMON ERRORS and QUESTIONS:

Q: Why are some cells shaded blue?

A: Blue is what I use to signal to myself that the cell is an input (as opposed to calculated by referencing another cell).

Q: Why are some cells shaded light blue?

A: Light blue is a calculated value but reminds me that I might want to override it if necessary. A white cell generally means a calculated value and I never need to override it.

Q: Why are some cells shaded purple?

A: I generally use purple for extremely important inputs or extremely important references.

Q: Why are some cells shaded other colors? (red, grey, yellow, green, etc.)

A: I use other colors to mark things that I’m in the middle of or might want to remember or are otherwise noteworthy. The problem is, over time sometimes those colors stay around and then I don’t remember entirely why they are there. Don’t worry too much about it! ˉ\_(ツ)_/ˉ

Q: I clicked the export macro and a Visual Basic (VB) error popped up!

A: Most likely you got an export directory wrong either for your main export directory or an individual monster export path. Other common problems are that you entered the wrong data type in a stat area. E.g. you put a text string in a number area.


DD_Trinket_Exporter.xlsm (Macro-Enabled Excel Workbook)

This is the actual design spreadsheet we use to export trinkets into the data files readable by the game. Editing trinkets via this spreadsheet is generally much easier than editing the actual data files.

YOU HAVE THE POWER IN YOUR HANDS. USE IT WISELY WILDLY.

DISCLAIMERS:

  • Use at your own risk. Back up your game data and such or create a working directory for playing around before exporting trinkets and overwriting your data.

  • The macros are generally crap but they should work. We are very content focused at Red Hook, not so much tools focused. The tools generally live in a “just good enough” state.

  • Unfortunately, we aren’t able to offer technical support. These are the actual tools we use, so they should work, but it’s pretty easy to crash the game by putting the wrong entry in for an item. (No different than editing the actual files, in this regard.)  Please consult the modding guide and the excellent modding community for help troubleshooting your mods.

ANATOMY of the WORKBOOK:

Individual worksheets: each worksheet in the workbook is used to export to a different trinket data file. The worksheet titles should be self-explanatory.

On each worksheet:

  • Export Path: the base location of your Darkest Dungeon data.

  • FILENAME: the subdirectories and actual filename that this worksheet will export to.

  • Id: the actual game id of the trinket

  • Class restriction: is this trinket only usable for one class? Omit if is usable by all.

  • buff/debuffs: the id of the Buff or Debuff assigned to this slot. (See separate Buff spreadsheet.)

  • Set_id: is this trinket part of a set? (Sets were introduced in Crimson Court, and if you equip both trinkets in a set, you can give additional buffs or debffs.)

  • Rarity: must be selected from a list of existing rarities. See “data” sheet.

  • Price: sales price at Nomad Wagon

  • Limit: 0 = no limit. 1 = max 1 per estate.

  • Origin_dungeon: restricts the trinket to only appear in loot tables of this dungeon. Omit for no restrictions.

  • # Buffs: reference only. Useful for counting how many buffs you have assigned.

HOW TO USE:

  1. Enter trinket data.

  2. Put the word “END” in the cell directly below the id of the last trinket on that sheet.

  3. Fill in path and filename

  4. Click EXPORT button.

  5. All trinkets from that sheet will now be exported.

COMMON ERRORS:

  • The sheet has macros. When you open the workbook, click to Enable the macros.

  • Put the word “END” in the cell directly below the id of the last trinket on that sheet. A blank row can sometimes cause the macro to barf.

  • If you create a new worksheet, define the “path” and “startCell” names (see Formulas–>Define Names) for that worksheet and make sure the scope is local to that sheet. The export macro looks for those cell names.

If any of you improve the Macro or the sheet, let us know!→ tyler@redhookgames.com


DD_BuffLibrary.xlsm (Macro-Enabled Excel Workbook)

This is the actual design spreadsheet we use to export buffs and debuffs into the data files readable by the game. Editing buffs via this spreadsheet is generally much easier than editing the actual data files.

YOU HAVE THE POWER IN YOUR HANDS. USE IT WISELY WILDLY.

DISCLAIMERS:

Use at your own risk. Back up your game data and such or create a working directory for playing around before exporting stuff and overwriting your data.

The macros are generally crap but they should work. We are very content focused at Red Hook, not so much tools focused. The tools generally live in a “just good enough” state.

ANATOMY of the WORKBOOK:

Individual worksheets: each worksheet in the workbook is used to export to a different buff library data file. The worksheet titles should be self-explanatory.

On each worksheet:

  • Export Path: the base location of your Darkest Dungeon data.

  • FILENAME: the subdirectories and actual filename that this worksheet will export to.

  • Id: the actual game id of the buff

  • Shorthand stat: not actually used. Just reference only.

  • Stat_type: what stat family are we buffing?

  • Stat_sub_type: what substat are we buffing?

  • Amount: value of the buff

  • Duration_type: what type of duration unit (rounds? # battles? etc)

  • Duration: how many duration units

  • Remove_on_battle_complete: if true, gets wiped after combat. Otherwise just continues per defined duration.

  • Rule_type: is this buff only active if a certain rule is met?

  • Is_false_rule: do we want the inverse of the rule? 

  • Remove_if_not_active: remove the buff entirely if the conditions are not active.

  • ruleDataAsNumber: value related to the buff rule. E.g. if Max health is less than .50

  • ruleDataAsString: string related to the buff rule. E.g. +dmg if enemy is ELDRITCH

  • Fx: special fx that can be tied to the buff. (Used rarely, but see CC sheet for an example.)

For a list of which values are allowed for 

  • Stat_type

  • Stat_sub_type

  • Duration_type

  • Rule_type

see the “lists” worksheet. This is not formatted well–haven’t had time.

In practice, the best method is generally to search through the existing buffs for a buff similar to what you are trying to do and then copy that as a starting point.

HOW TO USE:

  1. Enter buff data.

  2. Put the word “END” in the cell directly below the id of the last trinket on that sheet.

  3. Fill in path and filename

  4. Click EXPORT button.

  5. All buffs from that sheet will now be exported.

COMMON ERRORS:

  • The sheet has macros. When you open the workbook, click to Enable the macros.

  • Put the word “END” in the cell directly below the id of the last buff on that sheet. A blank row can sometimes cause the macro to barf.

  • If you create a new worksheet, define the “path” and “startCell” names (see Formulas–>Define Names) for that worksheet and make sure the scope is local to that sheet. The export macro looks for those cell names.

  • Unfortunately, we aren’t able to offer technical support. These are the actual tools we use, so they should work, but it’s pretty easy to crash the game by putting the wrong entry in for an item. (No different than editing the actual files, in this regard.)  Please consult the modding guide and the excellent modding community for help troubleshooting your mods.

If any of you improve the Macro or the sheet, let us know!→ tyler@redhookgames.com

DD_LootExporter.xlsm (Macro-Enabled Excel Workbook)

This is the actual design spreadsheet we use to export loot tables into the game.

YOU HAVE THE POWER IN YOUR HANDS. USE IT WISELY WILDLY.

DISCLAIMERS:

Use at your own risk. Back up your game data and such or create a working directory for playing around before exporting stuff and overwriting your data.

The macros are generally crap but they should work. We are very content focused at Red Hook, not so much tools focused. The tools generally live in a “just good enough” state.

ANATOMY of the WORKBOOK:

Individual worksheets:

  • main: the main loot tables in the game

  • Darkness: the tables that increase loot based upon darkness level

  • common_overrides: loot tables that are separated into their own file to allow for easier overriding with Crimson Court data.

  • blueprint_override: loot table split into its own table in preparation for overriding once a specific district building is built

  • crimson_court: CC loot tables

  • cc_common_overrides: when CC is installed and activated, these override the tables in “common_overrides”. (Generally this just adds THE BLOOD drops to standard loot tables.)

  • shieldbreaker: SB-related loot tables

On each worksheet:

  • Export Path: the base location of your Darkest Dungeon data.

  • Id: the actual game id of the loot table

  • difficulty: if 0, then this loot table applies to all difficulty quests. If non-zero, then this loot table is restricted to only quests of a certain difficulty. Note:

    • 1 = novice

    • 3 = veteran

    • 5 = champion

    • 6 = darkest dungeon

  • week_min: week restriction on the loot table

  • dungeon: which dungeon this loot table applies to. Blank = all dungeons

  • Entries:

    • type: whether the line item is another table itself (nested table) or an item or nothing

    • chances: all chances in a loot table are added up and then the result is randomly rolled.

  • Data:

    • Type: what sub-type the line item is. Eg. gold, gem, provision, heirloom. Can also be used to declare for trinket rarity specification. (See examples.)

    • Id: what sub-sub-type. E.g. heirloom, trinket rarity, gem type, etc.

    • Amount: how many of this item are awarded with this roll

    • min_page_index, max_page_index: used for controlling journal page awards

  • Lots of misc calculations: you will see some %s and things that I was calculating for reference and to help balance the tables. These are not exported…just notepad type stuff.

HOW TO USE:

  1. Enter your export path

  2. Fill data in the tables

  3. Click the EXPORT button on that sheet

COMMON ERRORS:

  • The sheet has macros. When you open the workbook, click to Enable the macros.

  • PUT A BLANK ROW BETWEEN EACH LOOT TABLE. Otherwise line items will continue to be appended to the previous loot tables.

  • Put the word “END” in the cell directly below the id of the last buff on that sheet. Too many blank rows can sometimes cause the macro to barf.

  • Unfortunately, we aren’t able to offer technical support. These are the actual tools we use, so they should work, but it’s pretty easy to crash the game by putting the wrong entry in for an item. (No different than editing the actual files, in this regard.)  Please consult the modding guide and the excellent modding community for help troubleshooting your mods.

If you improve the Macros or the sheet, let us know!→ tyler@redhookgames.com

Leave a Comment

Your email address will not be published. Required fields are marked *