Unsure if this is an efficient way to organize skills / abilities

I currently have my skill system set up like this:
image

The local script sorts through the skills the player binded, skillsHandler essentially require and set up the skills in the folders (effects stats and what not). If you’re wondering why I should just combine the effects module with the skills itself, its because I would need to replicate those effects to other players by calling FireAllClient aswell, although I’m unsure if this is efficient.
However, the tricky part is the server, in the client I had to fire to the server with the skill name and call their functions like this

local skillsTbl = {
	["Takedown"] = function(plr, target, args)
		-- do stuff
	end,
	["Ground Takedown"] = function(plr, targetTbl, args)
		-- do stuff again
	end,
}

There will be lots of skills so this will be very unorganized, I could replicate the folders and modules method I used in the client though. I’m unsure if this approach is effective and I’m willing to change my system as there will be more complicated stuff like UIs so lots of arguments have to be passed through the modules
Any suggestions is welcome!

There’s nothing wrong with that “replicate the folders and modules” method. I’ve used it before.
And for organization, you can just add more folders with “categories”

tip: you can use table.unpack(…) instead of the “args” argument

1 Like