Using ScriptableObjects for a Pokemon-like RPG
So I'm basically making an RPG that acts like the GBA pokemon games (Ruby, Emerald etc). I'm deserializing a list of monsters and their respective stats, moves etc from a JSON file. This data is essentially the monster templates, analogous to all the Pokemon in the Pokedex, and is loaded into a class called BaseMonster. I then I have a class that inherits from BaseMonster called OwnedMonster which describes monsters that are caught by a player and store additional information like currentLevel, currentHp and other information that changes in-game. My question is: when should I be using a ScriptableObject as opposed to just a regular, non-MonoBehavior class for storing BaseMonster data. If I used a ScriptableObject for BaseMonster, would I have to create 100 such assets If I'm loading 100 monsters from a JSON? I'm unsure of how this can be structured.