def _count_owned_bad_substats(self):
        """
        Count how many bad substats that already owned by a rune
        """

        available_sub = self._get_owned_substats_type()
        bad_substat = DataMappingCollection.get_bad_substats()
        owned_bad = len([x for x in available_sub if x in bad_substat])
        return owned_bad
    def _count_available_bad_substats(self):
        """
        Count how many bad substats that can be acuired as new stat
        """

        owned_substats = self._get_owned_substats_include_innate(
        )  # Take innate stat into consideration when predicting NEW stats

        bad_substat = DataMappingCollection.get_bad_substats()
        available_bad = len(
            [x for x in bad_substat if x not in owned_substats])
        available_bad += self._additional_bad_point_reduction()
        return available_bad