To make things simpler and add a more data driven way to modify Items, I have implemented a solution for items which lets you add/remove/modify items only by modify info in Data tables.
I made three different data tables :
Each table lets you modify only the important informations for the given item type.
These tables are referenced in the ItemGlobals object which it itself stored inside the TopDownRPGTemplateGameInstance object. To access infos about these items, you need to use the functions from the ItemUtilities Function Library (Check the DataTable section for more infos).
Since the V2, you can proceduraly create new items ! The procedural generation randomly pick the type of item to spawn and fill its stats, taking into account the player level. This gives you a way to add inifite variations of items for things like weapons, armors.
The main table which setup rules for the procedural generation is the [Weapon/Armor]ProceduralSettings. Here is the diagram of all the tables which are used to provide settings for the procedural generation.
As you can see, the normal "[Weapon]ItemDatas" table is also used in the procedural generation. This means that you can fill this table with all the items you want to use and then create a [weapon]ProceduralSettings to setup rules to procedurally create items from several rows of the [Weapon]ItemDatas table.
Here is a diagram showing you all the classes which participate to the item system :
The ItemKey allows you to access item static datas. All these datas are gathered from the data tables by the functions of the ItemUtilities function lib. The Data Tables are stored in the ItemGlobalDatas Object which is itself stored inside the GameInstance of the game.