public Mob ExecuteAbility(IAbility ability, Mob mob) { switch (ability.GetAbilityType()) { case AbilityType.OffensiveRageMelee: return(ExecuteOffensiveMeleeRageAbility((IOffensiveMeleeRageAbility)ability, mob)); case AbilityType.OffensiveEnergyMelee: return(ExecuteOffensiveMeleeEnergyAbility((IOffensiveMeleeEnergyAbility)ability, mob)); case AbilityType.OffensiveManaMelee: return(ExecuteOffensiveMeleeManaAbility((IOffensiveMeleeManaAbility)ability, mob)); case AbilityType.OffensiveSpell: return(ExecuteOffensiveSpellAbility((IOffensiveSpellAbility)ability, mob)); case AbilityType.DefensiveMelee: return(ExecuteDefensiveMeleeAbility((IDefensiveMeleeAbility)ability)); case AbilityType.DefensiveSpell: return(ExecuteDefensiveSpellAbility((IDefensiveSpellAbility)ability)); case AbilityType.CCMelee: return(ExecuteCCMeleeAbility((ICCMeleeAbility)ability, mob)); case AbilityType.CCSpell: return(ExecuteCCSpellAbility((ICCSpellAbility)ability, mob)); default: Console.WriteLine("Ability not known"); return(mob); } }