Currently what I'm considering doing is defining a bunch of "events" (probably signals, maybe callbacks) at the entity level.
So things like on_take_damage or on_idle or on_death. Whatever.
Then I can create some scripts that listen to these events (e.g., death_effect.gd). I guess the idea is these scripts could be attached to different graphical elements, placed into each enemy? So you reuse the logic, but define fresh visuals?