hmm… If it were me, I’d create a lookup of some kind that could act as an intermediary between passing animation input to the enemies and actually playing animation. That way you could dynamically override animations depending on various contexts. (In this case, being a particular enemy.)
It’d look something like this:
def __init__(self):
#...
self._anim_override_dict = {}
def play_animation(self, animation):
if animation in self._anim_override_dict.keys():
self.actor.loop(self._anim_override_dict[animation])
else:
self.actor.loop(animation)
#Then later on, in the class for this one particular enemy:
def freeze(self):
#...
self._anim_override_dict["standing"] = "other anim"
super().freeze()#plays "standing"
def unfreeze(self):
self._anim_override_dict.pop("standing")
(Well, actually what I’d do would be to make a somewhat overengineered scriptable animation system as a replacement for actor, but that’s definitely not the solution you’re looking for here.