As above, comps will work well for this.
- make a base component class
– shared stats go here
– leveling it up
– dispatchers
– auto firing
– saving
– and so om - make a child of the base that is a projectile
- make a child of the base that is an AOE effect
- make a child of the base that is an OT effect
- any other child class whose effects bring something new / unique enough to warrant a subclass
Spawn comps dynamically on the player with:

Before you spawn it, look up whether the player already has one and level it up instead.