famousgnu6 All true. Except.
Needed, when you use it as a loop without prior picked conditions to run trough instances.
And that is what is happening here (i suppose, i see no CapX)
For each "turretBase" --> system create object "turretGun" at layer enemy1 and at ImagePoint turret.ImagePointX("Gun")... and the same for X.
So, what you coded is a loop. (if u used system > create/no containers) It repeats turretbase.count times. Each time it creates an object 'turrentgun' on the position turret.ImagePointX, turret.ImagePointX.
There are 3 objects in there. One and only one 'turretbase' in the picklist. The object that gets created by a system > create does not need to be in the picklist. Obvous, it is new. So 'turrentgun' is fine. The object 'turret' on the other hand is not picked. The system does not know that you need the 'turrent' that goes with the 'turretbase'. In fact, it works, (it makes turretbase.count times an 'turrengun' on the same place), but not as you intended. Ofcours, that is differend if you mean turretBase.ImagePointX/Y.
Easy way is just:
Condition > for each > turret / action > spawn object > turrentgun at imagepoint (name or number), layer as you wish. The imagepoint is now the imagepoint (by name or nr) from that one picked 'turret'.