Alternative to data tables? Static variables, etc?

you don’t have to spawn an object to get its default variables, you can use a class variable, instead of a reference variable. then you can use GetClassDefaults to get its default properties.

but in some games, you may want to separate prices from the items anyway, in case you want to design some variety in the regional economy. you could have a store in a desert town that sells expensive water, but the oil is cheap, while a store in the mountains has cheap water, but expensive oil.

or maybe a store sells some items that they don’t understand at all, selling them for cheap with a funny description. in Oracle of Ages, there is a city of underground people who don’t know what a heart piece is, so they describe them as a “Rare Peach Stone.” The Legend of Zelda: Oracle of Seasons - Heart Piece Locations - YouTube

each store could have its own prices and item descriptions, even if they reference the same item class, so you might want to make price variables owned by the store object, and maybe multiply them by regional price modifiers, so a traveling salesman changes his prices when he enters a new region.

In an RTS, each faction could have different prices depending on what they are good at producing, and where they are located, and how much of each resource they have. or you could skip all this economy simulation, and give each item a standard price, removing any economic strategy from the game.