Although you are working with Unity, your explanation of ailments reminded me of the Unreal Engine 4 Damage system. In essence, every entity in UE4 can take damage, yet by default, nothing happens.
So, if you want a character to take damage, you define, in the character, how it takes damage. Then, in the damage giver, you just have to call object.TakeDamage().
The main advantage of this system is that you let the receiving entity deal with how it takes damage. For you specifically, one advantage is that you can create different types of damage. So, here is an example:
*You create a fire imp, when it deals damage to other entities, it calls TakeDamage() and passes as an argument a damage type of Fire.
Now let’s say you have a wood crate and a steel crate. You now define that when the steel crate takes (any) damage, its health is reduced. If it is 0 it gets destroyed.
For the wood crate you define something similar, but also add that if the type of damage is Fire, then the crate becomes alight and deals damage to itself and others over time.*
Hope this helps you implement your damage system.