Sunless Sea

Sunless Sea

Not enough ratings
Beginners Guide to Modding
By Ash
This guide assumes zero knowledge, starting with the initial set up and good modding practices. The second half will step you through how to create a simple mod that should give you the basic skills to create your own.
   
Award
Favorite
Favorited
Unfavorite
Introduction
This guide was created as I started to document the process I went through to create a mod for Sunless Sea, and that I thought someone else might benefit from. It is a work in progress, as I continue to experiment with different things and find out what they do. I decided to publish this guide even though it isn't complete, because I feel like even just the basic information will be enough to get some people started.

Currently this guide includes:
  • Tools
  • Background information
  • Adding a new quality
  • Adding a new shop
  • Adding new events

In the future I plan to look at:
  • Adding an officer with an attached story
  • Adding a new enemy that drops a unique item required for the officers story
  • Add new ship equipment as a reward for the officer's story
Feel free to drop a request if there is anything in particular you would like me to cover.

Current progress on this guide is currently on pause due to my current uni workload. I do hope to continue work on this at a later date.

Last updated: 18/10/16
-More Github links fixed
All images used in this guide are the property of Failbetter.
Setting Up
First things first, you should look at the pinned post about modding guidelines here. It's a good overview, however don't get caught up on memorizing all the little details, as this guide will reiterate the important parts when they are required.

Tools

There is really only one tool you'll need to make a mod, some type of editor for .json files. I am personally using Notepad++[notepad-plus-plus.org] and this addon[sourceforge.net] to make the json more readable. To install the addon for Notepad++, all you need to do is extract the NPPJSONViewer.dll into the plugins directory for Notepad++. For windows users, this will probablly look something like this: C:\Program Files (x86)\Notepad++\plugins
And that all you need to be ready to edit json files. This next tool is not required, but recommended for the easy navigation of the files. It was developed by jtq and the instructions and download link can be found here[github.com].

Folder Management

This guide just get more and more exciting doesn't it? Sarcasm aside, these practices are crucial for keeping your game in working order. Some things listed are just good practices, while others will literally stop your game files from sinking to the bottom of the zee, so pay attention. First you will want to set up a new folder in your documents, called 'Sunless Sea Modding'. Inside that folder create two more, one named 'Backup Saves' and another named 'Mods'. This folder would also be a sensible place to keep jtq's modtool if you downloaded it. Inside your Mods folder, create a new one named 'My First Mod'. Inside this folder create four more, and name them 'constants', 'encylopaedia', 'entities' and 'geography'. Then once this is set up we can find our game files in the following directory (copied and pasted straight from Modding Guidelines):

PC Directory - C:\Users\**NAME**\AppData\LocalLow\Failbetter Games\Sunless Sea

Mac Directory - /Users/<username>/Library/Caches/unity.Failbetter Games.Sunless Sea (replacing '<username>' with your actual username).

For convenience, I went up a directory to Failbetter Games, and created a shortcut to the Sunless Sea folder. I then cut and paste the shortcut into the Sunless Sea Modding folder in my documents. After all this, your Sunless Sea Modding folder should look like this:



Now there is only one last thing to do before we move onto deciphering the game files. Go back the Sunless Sea folder, and go into the saves folder. There you should see a JSON file. There is currently no safe way to uninstall a mod, so unless you want to start a brand new game each time something breaks, you're definitely going to want to a clean save backed up. (Side note: @Failbetter please give us multiple save slots). Copy this file and paste it in the Backup Saves folder inside the Sunless Sea Modding folder. If you're experimenting with many different mods you may want to keep multiple back up saves, so rename this one to something sensible like 'No Mods Save' for identifying later.
Behind the Scenes
Now that we're all set up, its time to figure out what the devil we're looking at.

No not that one. I'm talking about what's inside the Sunless Sea folder.

This is a bit of a look behind the scenes, a good read if you want to know where to find certain information, how the data is organised and why certain things work but others don't. If you're already itching to start modding I would recommend reading the next paragraph about folders, and then you can safely skip to the next section. Again all the important information will be repeated when it is needed.

The Folders

There are seven folders that are important for us. The first being saves, which we have already navigated to back up our saves. (Assuming you didn't skip the first section for being too dreary.) The next one is addons, which is currently empty. This is where you will put your mods. The other five are the ones containing the game data that we are interested in modding, constants, encyclopaedia, entities, geography and images. Except for images, you want to leave these folders as is, because any game updates will overwrite these files. Instead of making changes directly in the game files, you will create new files in the correct format, and add these to the addons folder. This allows your changes to be merged with the core game data while remaining separate, which is an extremely useful feature, trust me. Any new or altered images however go straight into the images folder, not addons. Make sure to use a unique name otherwise any game updates that change the vanilla image will overwrite yours. The following is just a quick overview of where different bits of information are contained, we'll be looking at altering actual values later on.

Constants
This contains the core data that effects all of the game. The combatconstants.json has the data for battles, such as the speed boost a zee-creature gets when ramming you, the bonus your iron quality provides to damage dealt, how long the AI will search for you and more. The naviagtionconstants.json contains the data for how traveling affects you. If you're looking to increase or decrease the difficulty, this is where you can change how fast terror and hunger increase, the baseline for how much fuel you consume (powerful engines will still increase fuel consumption, and certain items can still decrease it.), and more. The promodata.json is of no interest to us.

Encyclopaedia

Encyclopaedia contains associations, combat attacks and items, spawned entities and tutorials. The associations.json contains Ambiance, JettisonEvents, LegacyUnlockQualities, TradeRoutes and UnlegacyableOfficers. We're going to leave Ambiance alone for the moment, as I don't currently know what it does. JettisonEvents are the tooltips that show when you try to throw cargo overboard, by default there are only messages for throwing some passengers overboard. LegacyUnlockQualities is what qualities pass on effects to your next captain when you die or retire, for example some legacy items give you a bonus to qualities at the start of the game, while the scion lets you pick one additional legacy. TradeRoutes designate the routes for the neutral AI tradeboats to take, and UnlegacyableOfficers is a list of officers that can't be inherited by a new captain picking the shipmate legacy. The combatattacks.json contains all the different attacks, including attacks you have access to, as well as enemy ships and zee-creatures. The combatitems.json contains all the items that can be used in battle. The spawnentities.json contains the information about all enemy and trade ships that can spawn, as well as the zee-creatures. tutorials.json contains simple events that are part of the tutorial. This doesn't contain any information about triggering the events, just what is displayed.

Entities
The entities folder contains most of the interesting stuff you'll want in order to create a mod. This includes, areas, events, exchanges, and qualities. We're ignoring acts and personas for the moment. (Has nothing to do with the fact that I don't know what they do. Nope, not at all). areas.json contains information about the different areas, events contains all of the storylets, exchanges contains the ships and qualities contain everything from cargo to nightmares.

Geography

Geography contains information about the map. It is highly unadvisable to try edit the locations and layout map this way, as it is an extremely unintuitive way of creating new islands etc. However there are some reasons to be modding the geography, namely if you had created a new enemy, you would need to add it as a possible spawn for at least one tile for it to show up in game.
The Anatomy of JSON
This guide is designed for someone with zero programming knowledge to be able to follow, however there are a few basics that you are required to know. I'll be using small snippets to explain the basic grammar you need to follow, anyone with any experience with json or programming can safely skip this section. Otherwise keep on reading.

[ "Fuel", 9, false, null ]

This is a list, or in programming jargon, an array. Notice how the entire thing is surrounded by square brackets, and each element is separated by a comma. In this there are three different types of data. The first, "Fuel", is a string of letters. Anything involving words like names and sentences will be a string. Strings have to be surrounded by quotes. The 9 has no quotes around it so it will be treated as a number. Numbers are different from strings because they can be compared mathematically, which is important for quantities. If you have 9 fuel and subtract 1, you'll have 8 fuel. If the 9 was treated as a string like this "9", trying to subtract 1 from it would create errors since a string can't be treated as numbers. The next item, false, is a Boolean. Don't worry about the fancy name, Boolean just means the value will be true or false. Booleans don't use quotes, otherwise they will be treated as a string. The next item is actually empty, that's what null means. Again this only works with no quotes, otherwise it will be treated as the word 'null', rather than an empty value.

{ "Name": "Fuel", "Quantity": 9, "Illegal": false, "Attached Story": null }

This is an object. An object is like an array, except that instead of square brackets, we use curly braces { }. The other difference is that all the items in an object get a label. In this example we have and object with the name Fuel. We have nine Fuel, it is not illegal and has no attached story. This is much simpler than what the game files will look like, but we won't need to change most of the fields, and all the labels we'll be using will already be defined. Before we move onto the exciting stuff, take a look at this array that represent a ships cargo. It contains two objects, fuel and souls. Each object is separated by a comma, just as required by an array.
[ { "Name": "Fuel", "Quantity": 9, "Illegal": false, "Attached Story": null }, { "Name": "Unstamped Souls", "Quantity": 1, "Illegal": true, "Attached Story": "Blind Bruiser" } ]
Creating a Mod

Woo, now with all that background information out the way, we can move onto my favourite thing, making stuff! This guide largely focuses on creating new stuff and placing them in the world. Editing existing stuff will generally follow the same format, and I will try to also mention how to make changes to existing values. Now onto the modding!
Adding a Quality
Qualities covers a whole load of different things, cargo, ship reports, officers, status effects etc. For this tutorial we are going to add a new piece of cargo, the Modder's Medallion. First inside the 'My First Mod' folder, go into the entities folder. Then in notepad++ create a new file and save it as 'qualities.json'. To avoid saving it as a txt file you will need to change Save Type as to 'All Types'.

Click here[gist.github.com] to get the code snippet for a new quality. Go ahead and paste that into your new qualities file. Most of the fields we don't need to worry about, the ones that you can edit are in capitals. Here's a quick rundown of the important fields to edit:

  • Id: This must be unique, unless you want to edit an existing quality, in which case you would use that Id.
  • Name: The name of the quality.
  • Description: The description of the quality
  • Image: The image name without the extension (eg. medal rather than medal.png)
  • Owner Name: Creators name
  • Tag: Used to identify the type of the quality.
  • Nature: Whether or not this quality is to be treated as an object like fuel, or an abstract concept like nightmares.
  • Category: Similar to tag, but as a larger impact on how the object behaves.

Some rules to keep in mind about what values can go into these fields. ID needs to be treated as a number, so no quotes around it. Name, Description and Owner Name can be whatever you want, but have to be surrounded by quotes. Image is also treated as a string, but the name must match one in images/sn/icons. There are a variety of tags available, the only ones you will probably need are "Passenger", "Knowledge", "Ship Conditions", "Legacy", "Contraband", "Plot", "Romance", "Rewards", "Usable","Character", "Officer", "Resources". There are also tags for the ships equipment: "Equipment - Forward", "Equipment - Aft", etc. etc. Nature only has two possible values "Things" and "Status". A general rule of thumb is if it's something you could touch, it's a thing. Otherwise if its a more abstract concept, it's a status. Categories change where qualities show up in the Gazette. Some categories are "Goods", "Curiosity", "Ship", "Circumstance", "Story", "Companion", and "Menace". The category of a quality controls some of its behaviour. Goods and curiosities are similar, but goods take up space in you hold, while curiosities don't. Story qualities show up in the journal, and are used to denote the progress in certain plots. Circumstance is similar to story qualities. Companion is used for officers and a menace is something negative that affects the character, like nightmares.

Now we know what these fields do, we're going to change them as follows:
  1. First we need to give our new quality a unique id. To avoid accidentally overriding an existing quality we're going to follow the modding guidelines and start with a large number like 500000.
  2. Keeping the quotes, change the value from "NAME" to "Modder's Medallion".
  3. Change "DESCRIPTION" to "It gleams in the Neath light."
  4. Change "IMAGE NAME" "medalcandleiron"
  5. "OWNER NAME" can be replaced with your name, consider it like the author credits.
  6. Change "TAG" to "Goods".
  7. Change "NATURE" to "Thing".
  8. The last thing we need to change is the category, which will be "Goods".

When you've made all the above changes to your entities files, can can copy your entire "My First Mod" folder into the addons folder. With your save backed up, you can go ahead and start a new game. If the new game loads without any problems, it worked! However if you get an error about a corrupt file, it means the format of your mod file isn't correct. Take another look at the example and check you aren't missing any grammar. A few possible problems are:
  • Missing brackets, or brackets in the wrong place
  • Starting a string but not ending it with a quote "like this
  • Missing a colon between a label and a value
  • Missing a comma between items
  • Missing items from the original list (Yes all are required, even the ones we don't change)

If it's working, you won't be able to tell you have this mod installed, because there is currently no way to obtain this quality. We'll look at that in the next section.
Creating a Shop
Now we have a new quality, we need a way to obtain it in-game, so we're going to add a new shop to London. First, in your Sunless Sea Mods folder, create a new file called 'myshops.json' You might notice this isn't a file used by the game, this is because adding a new shop requires a lot of code, so we're going to break it up it smaller pieces. This file will just be used to store you're shop information, we'll transfer it to our real file later. Click here[gist.github.com] for the code snippet and again I'll talk you through what you need to edit. First is our shops name. Replace "SHOP NAME" with "Modder's Merchant". Then we can pick an image for this shop to use. I'm going to use "corridor", but you can use any image in the icons folder. Next you're going to change "DESCRIPTION" to "Exclusive Shop", or however you want the shop to be described. Next take a look at availabilites. This is an array of objects.

The important fields to look at are:
  • The ID of Quality being sold
  • The Cost
  • The Sell Price
  • Purchase quality is what quality is the 'currency' for the cost and sell price. Typically this in echoes. (Yes even money is a quality)

To add our new quality "Modder's Medallion" to this shop, all we need to is add the Id we made in the last section, which was 500000 where it says QUALITY ID. Notice how we don't need to recreate our entire quality, the nature and category fields are left as "Undefined", and it has no image or description. All you need to add is the Id and the rest of the information is gathered from our qualities file. Set PRICE to 10 and COST to 5. You can leave purchase quality as is. The current Id is the one for echoes. However if you wanted to make a special shop for trading some cargo for another, you would need to change this to the appropriate Id. If you wanted to add another quality to this shops stock, you would need to copy everything between the square braces inside the field "Availablities". This represents one item. You would then add a comma after the last curly brace before the end square bracket, and paste after the comma. You can then make the changes to the quality id, prices and cost as you need.

And that all you need to do to create a new shop. Next we'll add our shop to London, and we'll be able to purchase our Modder's Medallion in game and rub it in the face of all the Neath dwellers. For it is proof that we can alter their reality! WE ARE GODS TO THEM! GODS I TELL YOU!
Ahem.

*Please note that face rubbing is not available until later in this guide.

Ok so now we are going to create a new file inside our entities folder, called 'exchanges.json'. Then go copy the code from here[gist.github.com] and put that in the new file. There is a lot of code here, as it is all the shop information for London. If we didn't include all the vanilla shops in this files, and tried to just add our new shop in the shops array, we wouldn't have access to any of the shops in game, only Modder's Merchant. Needless to say you would find the game unnecessarily hard without access to fuel and supplies in London. This also means that we are overwriting all of the shop data in London, so if a game update changed or added a shop, we wouldn't see it in our game since we are overwriting it with an older version. This is why we made a separate file for our shop data, for easy updating later without having to start from scratch. If you wanted to add a shop to a different port, you would have to find the port in the game's exchanges file, copy it into a new exchanges.json inside your mod, and make the same changes I'm about to tell you to make to London's shops.

So now, this is how you will add a new shop to London. Near the top of the code, you should see a field called "Shops". This is a very long array of objects like your shop. After the square bracket, but before the curly brace, paste your shop. You'll need to add a comma after the last curly brace of your shop, so the game knows there are more shops in the list. Take a look at the example at the bottom of this section if you're confused. If you just want to add you item to an existing shop, you can follow the same method detailed above for adding a second item to your shop, but you would be adding it the the "Availabilities" array for the shop you want to sell or buy it. If you just want to change the prices in an existing shop, you would just need to find the quality by it's Id, and then alter the price or cost of it. You can find quality Ids in the quality.json file. If you know the name of it ctrl + f to find it by name, and then find the Id associated with it.

Now you can save the file, and copy the entirety of your My First Mod folder into the addons folder and run the game. If all goes well, you should be able to go to the shops tab in London, and purchase a Modder's Medallion from the shop Modder's Merchant.

"Name": "London", "Image": "fallenlondon_port", "Description": "Cargoes, treasures, weapons, secrets. Mischief.", "Shops": [ <Paste your shop here without the triangle braces, but with the comma> , { <vanilla shop data>
Adding a Story
Alright, now onto the events code. Events are the narrative of Sunless Sea, every interactable thing that happens in the gazette, whether you’re in port or at sea, is an event, often a string of events. Fair warning this JSON is a zee-beast and half so again we will be adding it in stages. First create a new JSON file in your entities folder and name it events. Add two square brackets [] and then add the code from here[gist.github.com] in between them. I've already filled out some of the fields that are the in-game text, but feel free to change it to whatever you want. Things you can change but don't have to:
  • Id- same as before, must be unique otherwise it will overwrite other events and probably make some plot line unfinishable.
  • Name - Self explanatory
  • Teaser - Appears underneath name, and can be slightly longer be it cuts of. Used to give the player a bit more information about the event.
  • Image- same as before, I'm using greeneye
  • Description - this is where you tell your story and describe what happens.

However I have still left some things for you to change, pure copying and pasting is a poor learning method after all ;)

In the field called "LimitedToArea" you'll see instead of a single value, it contains another object. You can ignore most of if except for the last one ID. You'll need to replace this with the location ID where you want this event to appear. In this case it is London, and the Id is 100321. Since we don't want this story to be available unless the player has our medallion, we're going to hide it until they have the quality at at least 1. To do this, copy the code from here[gist.github.com] and paste it in between the square brackets in "QualitiesRequired". Things to change in the quality requirements are:

  • DifficultyLevel - If a number is in this field, it becomes a challenge that has a certain chance to succeed or fail based on the level of the quality. We'll use this in a later event, but for now replace DIFFICULTY with null.
  • VisibleWhenRequirementFailed - This determines whether or not a player can see the event if they don't have the requirements to do it. Change VISIBLE to false so this storylet won't show up until the player has purchased the medallion.
  • MinLevel - The lowest level a player can have, and still be able to do this event. We want to make sure the player has at least one medallion, so change MIN to 1.
  • MaxLevel - The highest number a player can have and still be able to get this event. We don't care what the maximum number of medallions a player has so change MAX to null.
  • AssociatedQualityId - This the Id of the quality that we are setting the requirements for. The Id for our medallion should be 500000

In summary, these changes mean that to see this storylet, the player must have at least one Modder's Medallion. There is no upper limit on how many medallions the player can have, and there is no challenge associated with this quality for this event.

If you add this into the game, you should see a new event popup in London once you’ve bought the medallion. However if you try to click on it, nothing happens. This is because there are no child branches for this event, and the player has no way of interacting with it. So to fix this, we’re going to add two different branches to the event, one that requires a skill challenge and one that doesn’t. Click here[gist.github.com] to get the code for an event branch. You’ll need to paste this inside the square brackets after ‘ChildBranches”.

Here’s what you need to change:
  • ID- Again must be unique, change this to 500011
  • Name - Typically describes the action the player will take. Change this to “Attempt to approach without alerting them to your intentions” or something along those lines
  • Description - You can leave this as an empty string by just replacing it with quotes like this: “” otherwise you could add some extra information for the player.

You’ll notice there’s still the SUCCESSEVENT. DEFAULTEVENT and an array with a QUALITY in it that need replacing. These need to be replaced by two event objects, and a quality object respectively. Lets add a quality challenge first. Go back here[gist.github.com] and paste it inside the brackets where QUALITY is. Instead of hiding this option if the player doesn’t have enough of a certain quality, we’re going to make this a veils challenge. Change DIFFICULTY to 30. I haven’t played around with this enough to know what the link is between skill level, difficulty level and chance of success. But with the starting skill level of 25, a difficulty level of 30 gives you a 49% chance of success. Since we don’t care what level the player has, MIN and MAX can both be set to null. As it is a veils challenge, we need the quality ID for veils, which is 102896. Any quality can be used for a challenge, but the most common challenges are on the player’s skills, hearts, mirrors, veils and iron. The other qualities the game uses is luck, and the various network qualities you can upgrade. The ID can be replaced with any unique number not already use. That is all we need for quality. Since quality is an array, you can give it multiple conditions, or even give it multiple challenges. (So the player would have to succeed in both to trigger the success event).
Adding a Story Cont.
Now we need to add the events for a success or fail. Grab the event branch code here[gist.github.com] and paste it in SUCCESSEVENT. Change the ID field to a new unique number, and update the name and description to something that informs the player that they successfully snuck up on the person watching. Down the bottom there is a field LinkToEvent, with an object that requires an idea. To avoid nesting long stories inside one giant object, instead of having more child branches inside this event, we link to a separate one. Once we’ve made the event we want this one to lead to, we will put the ID of it here. First we need to finish this one, so paste this same code into DefaultEvent. Change the id to something unique, and again change the name and description to let the player know they failed the event. Now we have an event with one choice for the player, which is a veils challenge that they can succeed or fail at. If you wanted to give the player more than one choice, you would add more events inside the original ChildBranches array, separating the events with a comma.

Now there is one more event to add for the previous ones to link to. After the last curly brace add a comma, then go back to the event code here[gist.github.com] and add it after the comma, just before the last square bracket. Again, change the ID to something unique, otherwise you’ll be overwriting the last event. Since you have the ID for your new event, you can back and replace the NEXTEVENT in the previous two events to the Id of this one. You can change the name and description to whatever you want. I changed the name to "\"I ain't never seen nothing like that before\"". The backwards slashes escape the double quote that comes after it. Whenever you want to use a quote inside a string, you’ll need a backslash to tell the game to read the quote as part of the string, rather than the end of it. For the description I put this:

"\"That medallion of your ain't from down here is it? Or the surface, not even sunlight glimmers like that.\"<br/>Judging by a certain look in their eye you don't think they’re lying about seeing sunlight. <br /> \"See I got a proposition for you. That's a lovely ship you've got docked in the harbour. If you were to let me zail with you, I have certain skills I'm sure you'd find beneficial.\""

Now because we don’t want the player to access this event from London, we’re going to replace LOCATION_ID with a special location. This location is treated as a sort of limbo, and the player can’t directly access it. This means the only way to get to events in this location, is to be directly linked to them. The ID for it is 101956.

Next we need one more branch, so go back here[gist.github.com] and add it inside the square brackets of ChildBranches. Again, a unique ID is required. Change the name and description to describes the player accepting the offer. Since this is the end of our little story events, set SUCCESSEVENT to null. Since there is no challenge for this event we will only be using the DEFAULTEVENT. We also don’t require a quality for this choice, so remove QUALITY but keep the square brackets around it.

All we need now is one last event. Grab the code here[gist.github.com] and add it as where it says DEFAULTEVENT. Again you need a unique ID. Change the name and description to indicate that the person thanks the player and join the ship. Change the LinkToEvent to null, so instead of taking the player to another event, they’ll go back to London.

Give this a try in the game. You’ll probably notice some flaws in it. First, as long as you have the medallion, you can repeat the conversation as many times as you want. The second problem is that even though you accept the strangers offer, you don’t get them as an officer. The next section will look at adding a plot quality to keep track of our progress in this story, and adding an officer.
19 Comments
Inspector_Balloonicorn Oct 15, 2023 @ 8:16am 
It's only unintuitive to add ports using Geographies.json if you are bad at counting pixels.
Curious Fox Apr 15, 2020 @ 2:14am 
An old guide, wave of information. Though at the least, it's helpful overall. You would want to participate in the Sunless Sea Discord (also community) if you want to mod and get some things done seriously... though this guide will teach you many basic things if you need it.

...I wish it would get an update though...
Kerrschtein Aug 24, 2019 @ 6:28am 
An old guide, but a good one! Helped me not launch my laptop into the ocean while attempting to add a custom background for my character. Thanks!
Doug Dimmadon't Jan 19, 2019 @ 11:35pm 
Is this going to be continued or is it dead? There seems to be a two year gap in the comments, and the guide hasn't been updated in over 2 years.
MayliSong Aug 11, 2018 @ 1:10pm 
At some point, could you add a little section on creating a ship? That's the sort of mod I've been craving since day one but there doesn't seem to be many of them.
faultpunk Jul 1, 2018 @ 8:17am 
Thanks for a nice guide! One thing was confusing - a need to copy all vanilla shops.

I was curious about how shop is bound to the city, found that attribute "SettingIds" is responcible for that. In events.json you can see these settings entries under "SwitchToSetting" event's attribute.

I tried to make a new settings entry under "SwitchToSetting" of some of my new events, and specified its Id in my new shop. As a result, activation of this event in the game replaces all city shops with list from my addon file (and also resets shipyard). After docking this port again, all the vanilla shops was there again. It's not very ergonomic for player to switch shops in such way, (however, on some shopless port like a Mutton Island, it looks fine) but this approach preserves compatibility with other mods, and also aware of game updates,
jpinard Oct 30, 2016 @ 4:59pm 
If I copy the savegame file, then die, and I replace the file from before death - will my captain be restored?
Ash  [author] Oct 30, 2016 @ 12:45pm 
I'm glad the guide is proving useful. Sorry for the delay in replying sniggy, but I see you've already found an answer on the forums :)

I haven't had any problems recently with the notepad ++ extension, but if you've found another one that works I'd be happy to add it to the guide as an alternative
Cauliflumps Oct 19, 2016 @ 8:45am 
This guide is top-notch-- thank you SO much for this! I've been itching to create some stories in Sunless Sea, and the "guide" that the devs gave...well, it is a bit lacking. :) Thanks for the hard work you put into this!
sniggyfigbat Oct 18, 2016 @ 11:11am 
Ash, if you're answering questions, have you worked out how to create unlockable shops like those in the New Khanate and the Iron Republic? It seems to have something to do with location IDs, but I can't quite work it out.

Also, The Notepad++ extension seems to be broken, although I've found a workaround using a different extension.