Another enemy I selected because it exercises different parts of the engine. In this case, there's spawning (obviously) and animation (the hatch on the top revolves when a new buzz bomb is spawned.) As usual, I had to fix random glitches and add missing features, like the ability to spawn at a specific location and apply an impulse to throw the new enemy out in the world. There were also the usual more subtle things: the goal of the Spawner is that whenever the number of buzz bombs on the map goes below a certain level, it'll produce new ones. But in order to do that, it has to be able to actually count the number of objects it detects, not just arbitrarily target the nearest one it sees. This didn't come up in the past, when the only thing enemies ever searched for was the player.
Scanning through my list of enemy types, the only major feature that's missing, combat-wise, is the ability for certain types of enemies to detect the player and then summon other enemies. I'm figuring the way that would get implemented is to add an optional flag to the detection condition which effectively means "this detection is also true if we're receiving locational data from another source." That would allow me to control under what circumstances AIs respond to the information, and not have silly things happen like turrets trying to target the player who is across the map in some other room.
That being said, it's also getting harder to ignore the fact that my navigation systems are deeply flawed in a lot of ways that lead to enemies stupidly flying around in circles if they're rapidly switching between behaviors, and the physics system has an excellent chance of throwing you out of the world if you're so foolish as to run into a corner. I'm not looking forward to fixing these unsexy problems, but that's not a choice I have.