PTR Changelog 2018-11-01: Creep.pull()
-
I cant wait to implement a 50 heal part creep station being carried around by my attackers or just drop a 50 work part creep at someones walls. Ultimate siege strats
What happens to the fatigue gain of the pulling creep when the pulled creep has move parts? Do they contribute to reducing fatigue gain?
-
@zyzyzyryxy not guaranteed, just most likely.
When several creeps trying to move onto the same tile, the priorities are: creep having follower, creep that being pulled, creep that pulls someone, creep with best moves/weight ratio
@davaned That may be interesting, but the current implementation is not supposed to be used unwillingly.
@smokeman When several creeps trying to move onto the same tile creep that being pulled takes priority.
@obamallama No, creep pulling another creep receives another creep's fatigue. Pulled creeps, however, can use his
MOVE
parts to reduce the fatigue he already has.
-
This post is deleted!
-
This post is deleted!
-
@o4kapuk Can you pull someone that has fatigue remaining?
-
@obamallama Yes, because if you call move on a creep nearby, the ERR_TIRED and the ERR_NO_BODYPART checks will be bypassed. Also, the fatigue of the pulled creep will be decreased as usual according to the pulled creep's
MOVE
parts.
-
That's really cool.
How does it handle switching rooms? I can imagine the train creep being knocked into the next room while the pulled creep is still 1 tile in front of the exit
-
@keenathar this is for players to handle. I have a couple of implementations (so I know it's possible), but I'd not spoil it because players should have their own wonderful discoveries.
-
@o4kapuk said in PTR Changelog 2018-11-01: Creep.pull():
When several creeps trying to move onto the same tile, the priorities are: creep having follower, creep that being pulled, creep that pulls someone, creep with best moves/weight ratio
Does this mean we can use
Creep.pull()
to prevent other creeps from squeezing in-between attacker-healer pair creeps? Assuming attackerpull()
s the healer along?
-
@orlet not guaranteed, just most likely.
-
@orlet You would still be able to move past them diagonally if they were next to each other diagonally but you could probably make them create a solid line but it would slow down how fast you can get to places
-
I see. Well, that's still useful and something to consider. Might actually implement a trio train squads, melee-healer-ranger mini choo choo train
-
One thing that seems quite counter-intuative about this design is that pulled creeps' movement parts only decrease fatigue on that pulled creep. It seems like it'd be more intuative for the fatigue transfer to be reduced by any fatigue reduction past zero on the pulled creep.
-
I agree with Tigga. I was reading the conversation in Slack about this and was really surprised this isn't how it works.
In general terms I'd expect all move parts in a "train" to contribute to reducing fatigue, but just the remaining fatigue ending up with the front "locomotive" instead of regular behavior.
-
@tigga That makes sense. We scheduled rework of pull.
-
PTR updated with new version of
pull()
: now excess thrust of MOVE parts participate in the movement. So creep being pulled will use his MOVE parts to decrease his own fatigue, if he has it; otherwise, his MOVEs will be used together with MOVEs of the puller.
-
Every time I read the documentation page that mentions "creeps resembling towers or fortresses", or look at my harvesters with their wasted MOVE parts I've felt that something is missing. I always thought there should be some way to build a creep at a location, but this idea opens up even more possibilities.
Good job! Looking forward to making use of this
-
How does pull work across room boundaries and portals?
-
@systemparadox Let's call them "train" and "wagon" for sake of convenience. "Puller" and "pulled" looks too similar.
- Train moves on exit tile, wagon is adjacent to exit.
- Train changes rooms, wagon stays adjacent to exit in original room
- Train changes rooms back to the original room, swaps positions with wagon (position swap is possible with
.pull
).
Wagon is now on exit tile in original room, train is adjacent to exit in original room. - Wagon changes to new room, train moves to exit tile in original room.
- Wagon changes to original room, train changes to new room.
- Train moves off exit tile in new room, wagon changes back to new room
- Train pulls wagon off exit tile.
-
@systemparadox this is a bit tricky. I had a couple of solutions when testing this feature so it's definitely possible, but I won't disclose the solution, just to let you guys have the same fun.
@keenathar point 3 is not quite correct. When something walks to an exit tile, it's being teleported to the new room instantly, on the tick it calls
.move()
. So if 'train' is at the exit tile of an original swaps position with wagon next to it, next tick the wagon will be at the edge of the new room, the train is near the edge of the original room.UPD: you know that they're at PTR waiting for someone to write code for, right?