def _reset()

in rtfm/tasks/groups.py [0:0]


    def _reset(self):
        super()._reset()
        self._cache.clear()
        self.group_assignment.clear()
        self.modifier_assignment.clear()

        # sample dynamics
        sample_group, sample_mod = random.choice(self.configs)
        for group, monsters in sorted(list(sample_group)):
            self.group_assignment.append((group, monsters))
        for element, modifiers in sorted(list(sample_mod)):
            self.modifier_assignment.append((ALL_TYPES[element], modifiers))

        self.agent = self.place_object(self.Agent())

        self.target_group, target_monsters = random.choice(self.group_assignment)

        # choose a target element
        target_element, target_modifiers = random.choice(self.modifier_assignment)

        # choose a target monster
        self.target_monster = self.place_object(self.Monster(target_element, name=random.choice(target_monsters)))

        # create a target item
        good = self.place_object(I.Unarmed(hit=100, damage='1'))
        good.add_elemental_damage(target_element, dmg=50)
        good.name = '{} {}'.format(random.choice(target_modifiers), random.choice(self.items))
        good.char = 'y'

        # create a distractor item
        self.distractor_item = bad = self.place_object(I.Unarmed(hit=100, damage='1'))
        bad_element, bad_modifiers = random.choice([m for m in self.modifier_assignment if m[0] != target_element])
        bad.add_elemental_damage(bad_element, dmg=50)
        bad.name = '{} {}'.format(random.choice(bad_modifiers), random.choice(self.items))
        bad.char = 'n'

        # create a distractor monster
        bad_group, bad_monsters = random.choice([g for g in self.group_assignment if g[0] != self.target_group])
        self.distractor_monster = self.place_object(self.Monster(bad_element, name=random.choice(bad_monsters)))
        self.distractor_monster.char = '?'