PTR Changelog 2018-11-01: Creep.pull()
-
This post describes changes on the Public Test Realm.
Introduced new mechanic
Creep.pull
. It allows one creep to pull another creep helping it to follow:creep1.pull(creep2); // first creep requests pulling creep2.move(creep1); // second creep accepts it creep1.move(RIGHT); // actual move
Here
creep1
will gain fatigue for both creeps.creep2
may not even have anyMOVE
body parts. Creeps may belong to different players.Creep.pull
can be called recursively by multiple creeps in series. Thus, a fully XZHO2-boosted50xMOVE
"train" can pull several50xCARRY
creeps just on its own.Commit engine#4d37717
Other unrelated changes
- Containers now can be built next to exit tiles (engine#a44e238).
- Hostile creeps don't block building in safe moded rooms (engine#3d21e7c).
- Various fixes.
-
Interesting, but isn't this only viable for harvesters that just want to sit at the source all day? There's no practical reason to have a 50 move and a 50 carry creep over just having 2 creeps with 25 move and 25 carry, since this is not only harder to code, but also requires 3 const calls to pull the cargo creep. Even for harvesters it might be a bit impractical due to both difficulties in coding and the fact that it triples the CPU cost to move the harvester in exchange for a minor savings of having less WORK on your harvester.
IMO, this feature should result in only the lead creep being charged for a single const CPU call, allowing it to be useful to save CPU for long cargo trains with boosts (as a 50 boosted move engine could haul 200 boosted carry parts with 200 capacity each, for 40000 total carry capacity).
-
I believe players will find many applications (both economical and combat) to the new mechanics.
3 const calls
.pull()
is free.
-
Ah, that makes this better. Although it's still 2 CPU calls to pull a creep compared to 1 for just having the creep move itself, it's now a tradeoff of CPU vs saving energy on harvesters.
-
There are many less obvious applications. For example, low-level rooms could add couple more WORK on their upgraders.
-
This post is deleted!
-
Can I ask why this is not
creep.pull(target); creep.move(destination)
orcreep.pull(target,direction)
?Those seem much more useful and interesting.
-
@nihilrex said in PTR Changelog 2018-11-01: Creep.pull():
Can I ask why this is not
creep.pull(target); creep.move(destination)
orcreep.pull(target,direction)
?Those seem much more useful and interesting.
Did you miss the part about it being usable on other players creeps, and them having to accept it? Or am I missing where you included that in your post?
-
@maxion Why should they have to accept it? If playercreep pulls enemycreep left, and enemycreep moves right, both should just stay still. Adding in logic so that if player creep pulls downleft and enemycreep moves downright, they both move straight down would just be a bonus.
-
Question: Is this equivalent to an engine? If one engine (move) is more powerful do you overwhelm the other creeps move? That could make for a super interesting aspect to combat.
- You have more move than them. If you try force (unwilling) them with pull, you move them but get fatigue equal to your net move advantage (your move - their move). AKA if you had 20 move they had 10, you get to move them, but get fatigue as if you only had 10 move parts.
- You have less move than them. Can't pull unwillingly, could maybe slow them down at cost of your fatigue?
- You have more or less move than them, and they accept it willingly. You move them.
-
Honestly I don't think this should be usable on other player creeps, but has a lot of interesting prospects for use on your own.
-
Can we also get
Creep.push()
? I wanna have boosted healers pushing50xATTACK
creeps into battle while being safe behind them
-
Will pull mechanics guarantee that pulled creep will take position of pulling creep when multiple creeps try to move into the same spot? (Think attacker - healer pair being separated by enemy creep)
-
Would this make it impossible to get between the creeps? If both creeps are synced intent wise, then an enemy creep couldn't jump the first one and prevent the second from following. This would give an advantage to block move attacks.
-
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.