Shared stats for player and npc?

What you’ve described is the very core of OOP.

Start with a base class that has all the shareable functionality, you can extend from that class to create children with unique variables and functions.

Also, look into components, these are modular pieces that add functionality when you need it. Here’s a neat video showing it in action.