Bots can place an entity in a way that ignores the entity collision settings if it is done as part of an 'upgrade'.
Simplified example situation: Floating wooden belt
Alternate version of transport belt (floating wooden belt) can be placed on land and water (based on the collision mask).
It is part of the same fast-replace group as normal transport belt.
A line of floating belt is placed going from land to water, extending into the water.
In the upgrade planner you can upgrade from transport-belt to floating-transport-belt.
You upgrade from floating belt to normal belt, all belts are marked with upgrade icons.
If you try to upgrade manually you can replace the belt on land but not on water because normal belt cannot be placed on water.
When bots do the upgrades they can put normal belt on water.
The expected behaviour is that:
A) The bots would not be able to place the normal belt on water even if it is marked for upgrade.
b) When the upgrade markers were placed on the floating belts, if the upgrade is invalid then the upgrade is cancelled.
The real example was with the Space Exploration mod. The belts with alternate collision are belts that can be placed in space where as normal belts can only go on the ground. I've had switch space belts to a different fast replace group so people can't abuse the exploit. The same issue affects pipes, rail, assembling machines etc. The biggest effect of the problem is when people try to swap entities for space versions inside a blueprint so it can be used in space.
[0.17.52] Bots placing upgrades can ignore entity collision settings.
Re: [0.17.52] Bots placing upgrades can ignore entity collision settings.
Thanks for the report. The upgrade system wasn't meant to allow those kinds of upgrades but at some point during working on it I forgot to disallow it.
It's now fixed for the next version of 0.17.
It's now fixed for the next version of 0.17.
If you want to get ahold of me I'm almost always on Discord.
Re: [0.17.52] Bots placing upgrades can ignore entity collision settings.
That's great thanks.
Re: [0.17.52] Bots placing upgrades can ignore entity collision settings.
It seems that the change has made it so that you can't link entities in the upgrade planer at all if they have different collision masks. This greatly reduces the usefulness of the upgrade planner. There are situations where both types of entity could be valid on tiles even if their collision masks are different. There are also situations where you'd want to change from one type to another in a blueprint so the same layout can be used in a different setting. For example, if you have a reactor blueprint that you want to use in space you'd need to change the pipes from normal pipes to space pipes. If you can't use the upgrade planner on the blueprint then you'd need to do it all manually.
Is it possible to just check the placement of the upgrade marker when you use the planner, the same way you'd check the placement of a ghost, and not order the upgrade if it is not a valid position?
Is it possible to just check the placement of the upgrade marker when you use the planner, the same way you'd check the placement of a ghost, and not order the upgrade if it is not a valid position?