Finding a suitable question title and -tags for this question struck me rather hard.
Basically I've built a game wherein several units/mobs will be present. Now I'm interested in building a system, so each unit can have effects/buffs/debuffs applied to them that will modify the properties of the unit. Examples of such effects could be a frost effect that'd slow the movement speed of the unit, a health boost and so forth. The plan was to have these effects implemented via scripting so it would be possible to create custom user effects.
I'm looking for advice on how I could implement this. For now I've thought about creating a effect class. Then each applied effect would be an instance of the class, and would have a reference to the unit it was applied to. The effect would have at least two methods, an apply and unapply method for respectively applying- and unapplying.
The problem with this, is that it doesn't allow for different ways of cumulative percentages. Like, should two times 10% increase on a value 100 equal 120 or 121.
Not that it really matters, but it's being coded in C#