Class categorizing help for valorant-like skills

My current code structure is very inefficient.

Organizing Skills is a horrid developer experience

i am currently making a valorant-like game, with skills.
I am having trouble categorizing classes among other things.
I also need to create a custom tool class.

My current Tree idea is






Members of Skills is essentially primitives that other Skills could extend on, example on my system, FireballWallSkill extends from Projectile, and FlashSkill extends from Projectile.

I’ve had people who say to ditch extending, but i suppose a mix of Extending and Compositing is better suited for this.
FlashProjectileSkill is a composition of Blind and Projectile

FireballWall is a composition of Wall and Projectile

someone also pointed out that my current code system is horribly coupled, so i guess that helps?

By skills I assume you mean abilities?

You should probably organize these skills based on what purpose they serve, how often they are used, or how important they can be in terms of swaying the fight.

My personal recommendation is to avoid creating a separate class for each individual effect, and instead lean towards creating a single class for which you can create instances with that describe the intended behaviour of each skill, as well as their name and availability etc.

I have yet to read the code in the GitHub repository, but these are my initial thoughts based on what’s written in your post.

thats what i were doing, i and will still do, but i can’t make a single ability class because there’d be too much repetitive code.

i’m separating behaviors such as Blinds, PartialBlinds, Walls, Projectiles onto their own specific classes that other Abilities can just make a composition of.

I think these are better deserving of functions rather than individual classes. You don’t need to encapsulate state within these behaviours, right?

I’m not sure. some things deserve a class of their own.