I'm making a prototype of a top down combat system heavily inspired by that of MOBAs and ARPGs and have managed to make a few different basic attacks and some simple enemies.
The thing is when looking at most games in those genres there's usually a ton of different buffs/debuffs and modifiers that the characters can have with their own timed durations (sometimes permanent) and even custom effects. Are all of the possible modifiers built into the characters themselves and enabled/disabled in certain situations or is it a system in which the characters are blank slates where modifiers can be stapled into and the modifier itself decides how the character will be affected? Do I do that using yields or turn the modifiers into nodes that modify their parent they are attached to and delete themselves when the time runs out?
Right now my guess is that modifiers that limit the player controls like stuns, silences and roots should be built into the character itself and enabled/disabled when necessary while stat modifiers can be done dynamically attaching modules and externally changing the stat numbers of the character, but I'm not sure if this is the best way because if I want to make a special control limiting modifier like, for example "fear" which makes the character run away from another character for a set duration or "disarm" which only disables certain attacks but not all then I would have to mend all of those onto the character itself, would it be better if all of it were external nodes including the control limiting ones?
Sorry for the rambling, I'm mostly looking for opinions about what would be the best way to go about this without ending with a monolithic spaghetti code nightmare!