Another thing to remember is to try and drive as much of the content of your game from data, not from code.
ScriptableObjects are an excellent way to author complex structured data for just about any game.
Here’s more on SOs:
ScriptableObject usage in RPGs:
Usage as a shared common data container: