def impact_rating(self):
        '''
        Returns the impact rating for this node. Impact rating is a measure
        of how powerful this moment in the story is by evaluting how many simultaneous
        arc elements are associated with it. There is also a generational bleed element,
        where the impact score creates shockwaves throughout their direct ancestor and
        descendant nodes. This echo fades fast, but the bigger the impact, the farther
        it goes.

        Currently, the impact bleed does not extend to sibling nodes.

        WARNING: Here be dragons.
        '''
        if self.depth == 1:
            logger.debug('Root node. Skipping.')
            return 0  # pragma: no cover
        impact_bleed = {
            'mile': 0.5,  # A milestone extends it's influence by 50% per generation
            'tf_beat': 0.25,
        }
        inherited_impact = 0
        base_impact, add_impact, mile_impact = self._local_impact_rating()
        local_impact = base_impact + add_impact + mile_impact
        logger.debug("Local impact is %f" % local_impact)
        parents = self.get_ancestors().filter(depth__gt=1)
        children = self.get_descendants()
        logger.debug('Found %d parents and %d children' % (parents.count(), children.count()))
        for node in parents | children:
            if node.depth == 1:
                logger.debug("Skipping root node...")
            else:
                logger.debug('Checking a related node...')
                b, a, m = node._local_impact_rating()
                logger.debug('Related node has %f of additional impact and %f of milestone impact.' % (a, m))
                if (a + m) > 0:
                    if node.depth > self.depth:
                        depth_diff = node.depth - self.depth
                    else:
                        depth_diff = self.depth - node.depth
                    logger.debug('There is a generational difference of %f. Adjusting impact bleed.' % depth_diff)
                    for x in range(depth_diff):
                        a = a * impact_bleed['tf_beat']
                        m = m * impact_bleed['mile']
                    logger.debug('Additional impact bleed of %f. Milestone impact bleed of %f' % (a, m))
                    inherited_impact += a + m
                    logger.debug('Final impact bleed of %f. Adding to inherited impact.' % inherited_impact)
                else:
                    logger.debug('Node had 0 bleedworthy impact. Skipping...')
        logger.debug('Inherited impact of %f. Adding to local impact of %f' % (inherited_impact, local_impact))
        return local_impact + inherited_impact
Returns the impact rating for this node. Impact rating is a measure
        of how powerful this moment in the story is by evaluting how many simultaneous
        arc elements are associated with it. There is also a generational bleed element,
        where the impact score creates shockwaves throughout their direct ancestor and
        descendant nodes. This echo fades fast, but the bigger the impact, the farther
        it goes.

        Currently, the impact bleed does not extend to sibling nodes.

        WARNING: Here be dragons.