Are these iterations necessary for each Actors::update() or can the logic be changed so that iterations are not needed?  It seems that the code iterates through all the actors and guards and engages them in combat every call to Actors::update(), which means a lot of unnecessary processing.  Have I misunderstood how this works?

Also, shouldn't the second party engage in combat only after some kind of rule?  e.g. it seems to me that if a slaughterfish attacks the player 2 cells away from a guard they still engage in combat.  Vanilla doesn't work that way AFAIK.