Abstraction and Interfaces

also, you could make each attack a DataAsset, so a designer can edit its values and keep track of it in the Asset Browser of the level editor.

these might help: