how to access lists dynamically?

You may wish to consider reaching for ScriptableObjects for this.

For runtime modified data you can always Instantiate() a fresh transient copy of the weapon SO from the base original stats.

ScriptableObject usage in RPGs:

Usage as a shared common data container:

2 Likes