Every EnemyMobLevel should have resistances and modifiers that can be assigned to them. However, these may need to be modified on a per-troop basis.
EnemyMobLevel has a List
A Resistance consists of the target tower and conditions such as X level and X modifier
A Resistance has an apply(Tower source, float damage) method to modify damage
A Resistance has an isApplicable(Tower tower) method to check if it can be applied to damage from X tower
An EnemyMob will have a List that is modifiable within the class - if a resistance is updated and the list is the original list, it will clone the list and then proceed to modify it.
Every EnemyMobLevel should have resistances and modifiers that can be assigned to them. However, these may need to be modified on a per-troop basis.