def METHOD_NAME(self, autoctx):
    super().METHOD_NAME(autoctx)
    dice_ast = copy.copy(d20.parse(autoctx.parse_annostr(self.dice)))
    dice_ast = utils.upcast_scaled_dice(self, autoctx, dice_ast)
    if not (self.fixedValue or self.hidden):
        d = autoctx.args.join("d", "+", ephem=True)
        # add on combatant damage effects (#224)
        effect_d = autoctx.caster_active_effects(
            mapper=lambda effect: effect.effects.damage_bonus, reducer="+".join
        )
        if effect_d:
            if d:
                d = f"{d}+{effect_d}"
            else:
                d = effect_d
        if d:
            d_ast = d20.parse(d)
            dice_ast.roll = d20.ast.BinOp(dice_ast.roll, "+", d_ast.roll)
    if not self.hidden:
        maxdmg = autoctx.args.last("max", None, bool, ephem=True)
        mi = autoctx.args.last("mi", None, int)
        # -mi # (#527)
        if mi:
            dice_ast = d20.utils.tree_map(utils.mi_mapper(mi), dice_ast)
        if maxdmg:
            dice_ast = d20.utils.tree_map(utils.max_mapper, dice_ast)
    rolled = d20.roll(dice_ast)
    if not self.hidden:
        name_out = self.displayName
        if not name_out:
            name_out = self.name.title()
        autoctx.meta_queue(f"**{name_out}**: {rolled.result}")
    simplified_expr = copy.deepcopy(rolled.expr)
    d20.utils.simplify_expr(simplified_expr)
    simplified_metavar = RollEffectMetaVar(simplified_expr)
    autoctx.metavars[self.name] = simplified_metavar
    autoctx.metavars["lastRoll"] = rolled.total  # #1335
    return RollResult(result=rolled.total, roll=rolled, simplified_metavar=simplified_metavar, hidden=self.hidden)