You need to use containers.
I created a new sprite (sprite6) with the word DOG painted in it. Replaced the EnemyDogs with it. Left one Enemy dog by the side of the screen and deleted it on layout start.
Also added a sub-event to layout start: For each object sprite6 system create EnemyDog.
I put the EnemyDog in the same container as its LOS sprite, so each EnemyDog will have its own LOS sprite, which was the issue. They'll behave correctly with this, as containers will help Construct guess which dog and which LOS your script is talking about.
Keep in mind that there's a LOS behavior that would probably have saved you doing some of this.
http://www.udec.cl/~jfuente_alba/PartialExistence.cap
Saved in Construct 995. Has exactly what I described before.