Making a move pool in Unity c#

My game I’m making (A small turn based game) has a bunch of moves that can be used among many monsters. as you may guess, its an aspect similar to Pokemon. So I’m asking for advice on how to give them specific attacks based on what moves they have been saved to know.

My “Theory Method” (Might work)

Have 1 script named Move. all the blank stats are there. Each Monster will call a number of those to determine its move pool.

The Move script will look something like this:

public string Type;
	public int Damage;
	public int Accuracy;
	public string Effect;
	public int useAMT;

Then if this script is picked, they will grab Whatever moves that monster can learn. Like “Club Toss” or “Laser Vision” (Not actually in game, but examples) And will take their stats based on what the move is. So, like earlier. Club toss is a Normal attack, and has low accuracy, the effect is that it stuns the enemy, and has a use amount of 1 to show an example.

Now with that out of the way, if this method is deemed harder to do, what should my plan of attack be on this conundrum?

Your method is a valid approach. All of the move classes should inherit from the same parent, that way you can hold all of the moves in a collection of the parent type. You should also implement a few of the key methods on the parent type. That way you can call things like DoMove and CancelMove without caring what the actual move is.

An alternative to consider is using static Moves. This only makes sense if every creature that uses a move uses it in the same way. Even so inheritance should be used.