If this is not possible for some reason, the push does not happen. The pushing creep always moves to where the wagon was to stay adjacent to it.The pushing creep calls push(wagon), which causes it to move to the wagon's current position, and transfers the fatigue like pull().
![screeps trailer screeps trailer](http://www.dvdbeaver.com/film6/blu-ray_reviews_77/the_creeps_blu-ray_/title_the_creeps_blu-ray_.jpg)
As the one in front, the "wagon" calls move(pos) to decide where to move.With push() you've got many more options to resolve the situation. As it stands, if a tug/trailer pair enters a heavy traffic area it can be a real nightmare. With this setup it might be possible to move a train across a room boundary without doing any swapping.Īnother potential use of push() would be for dealing with tricky traffic situations. A really interesting feature of push() would be the ability to have a creep pulling at the front of the train and another creep pushing at the back. I haven't worked out what would happen for longer trains, but I'm sure it would make life MUCH easier and faster. If you were already pushing up to the exit then it's literally just 2 ticks, although you'll be pulling on the other side, but it only takes 2 ticks to go from pulling to pushing and you can do it at your leisure anywhere in the room without having to dance around the exit portals.
![screeps trailer screeps trailer](https://pbs.twimg.com/media/El1sraEWkAU6Zk6.png)
With push(), this could be reduced to 4 ticks: pull up to the exit then (1) pull/swap, (2) push trailer onto exit, (3) move onto exit, (4) move off exit, ready to continue pulling again on tick 5. Whilst it's an interesting challenge to implement at first, it just ends up feeling messy and unsatisfying, with creeps having to do this elaborate dance and taking 5 ticks to move across instead of 2. One of the more fiddly things about using pull() is crossing room boundaries. I have been thinking about this a bit more and I think a corresponding creep.push() would be a big help.
![screeps trailer screeps trailer](https://i.ytimg.com/vi/KQyIPg9FyU8/maxresdefault.jpg)
When this was introduced somebody suggested the idea of a corresponding creep.push() (IIRC their desire was to push creeps forward into battle, which is a cool idea). For me this was one of the most radical changes to screeps and filled a big gap where it felt like something was missing.