new method Creep.salvage()
-
After playing the open world with a lot of time, I think, it might be a nice idea, to have the following method:
Creep.salvage()
Basic behaviour:
This deconstructs a structure you built (also roads and c.walls), and gives you a refund of 50%(?) of the original building costs. Dismantling the structure will not be instant, but take some time, e.g. 1 tick per 100 hitpoints(?). The energy released will be picked up, excess energy is dropped to the ground.
This lets you relocate Spawns and Extensions easily (without having to attack them) and get rid of roads, that where build in wrong places.Advanved behaviour (arguable):
Being able to salvage roads (or even walls!!) you actually did not build on your own would particularly be interesting when invading somebody else and bringing workers with you to weaken enemie's defense structures. If the enemy manages to kill the workers before the salvage cycle is completed, they have to start all over again. So, the question is even more complicated, which enemy creep to focus first;)
-
I like your idea. Building on it,
- Total returned amount should be
- For owned creeps: OriginalCost x TimeLeft / 30mins x modifier
- For any structure: OriginalCost x modifier
- IMO modifier should be something like 0.9 for creeps, maybe less for structures.
- The point of salvaging creeps is to have a integrated way to allow bulk energy transportation cheaply.
- Reason: Alliances changing, whole colonies worth 100k migrating to better places, the hordes uniting, and intrigue everywhere and thus big empires rising and falling. THIS is fun stuff in my opinion, but all of that needs both coordination (not big deal, we know how to talk. But can we make screeps talk to others, huh?) and effective logistics, but right now they are expensive as hell and this change alone would solve that.
- Math: Lets say that I control 2 rooms that are 5 rooms apart. So distance between spawns is around 300sq. Transport creep [MOVE MOVE CARRY CARRY] costs 200 and moves 100 energy, goes 0.5sq/t, lives 30x60 ticks, thus can go there and back 3 times within lifetime moving 300 energy/1500ticks or 0.2e/t with efficiency 60%. But if he could be salvageable, then moving there and being salvaged by ~150 energy gives us 250energy/300ticks or 0.83e/t with 89% efficiency, BUT with and overhead of having a worker (not a big deal) and spending time on producing it (could be a big deal). Doing this with [MOVE MOVE HEAL HEAL], would transport 1.25e/t with 83% efficiency. And it wont affect supply chains "source->spawn", because it has to be built and sources cannot build them.
- The point of being able to salvage owned/neutral structures is covered by chris - to move unnecessary or mistaken structures.
- The point of being able to salvage hostile structures is to widen attacking strategy.
- Think of [MOVE MOVE WORK WORK] as sappers - useless against enemy but cheap and effective against structure. I don't like "salvage all or nothing", its too volatile. IMO better give it warm-up time, for example 1 tick for every WORK part, and after that time spent not moving it can start salvaging the structure. For generality the same principle can be applied to owned/neutral structures as well.
- Imagine [MOVEx2 WORKx8 TOUGHx20] as "heavy rams" - they are useless for anything else, they move slow, they need to be guarded, they warmup long and need good healers behind during action but when start to attack all three ramparts in front will go down fast.
- Imagine [MOVE WORK] as "peasant with torch" from Stronghold Crusaders - cheap, moves in hordes and allow "hit & run" tactics to wear barely guarded structures down.
- Math: WORK part is a lot cheaper than ATTACK part, thus sappers will be used whenever feasible.
- Also this would make more financial sense to attack the enemy. Right now war is very expensive and defensive-oriented, thus when conquering a well defended room (assuming it was worth defending) one should be rewarded. Or in other words - raiding rooms in vicinity should be an feasible strategy and should make economical sense if done properly.
- Total returned amount should be
-
Thank you guys for implementing this!