Engorged centipede: Compress late game biter swarms into one entity
Posted: Wed Oct 04, 2023 10:19 am
TL;DR
New entity that acts like a moving siege tower + nest with a number of 'passenger biters' in terms of what it can spawn when under threat or attacking.What ?
Essentially the idea is a moving nest that has biters stored up for spawning.The way it would work in game:
- Engorged centipede is unlocked by biter phase (say specific evolution level).
- An engorged centipede spawns (very small chance from nest, or where a large swarm is forming for attack and entity count needs to be reduced)
- Centipede 'absorbs' nearby biter entities (keeping track internally of biter types and amount for each absorbed). It can only absorb undamaged targets.
- Once centipede / swarm decides to attack, absorption stops. Centipede 'attacks' towards the swarm target same as biters AI would.
- While inside pollution, centipede will absorb pollution at up to its MaxPollutionAbsorptionPerTick rate. (Weak centipedes can barely absorb any, powerful centipedes can absorb pollution like entire hives and basically grow rapidly in power.)
- Pollution is converted into stored biters instantly.
- Centipede itself has a ranged spit attack comparable to a spitter.
- When centipede attacks an enemy, it will very slowly disgorge stored biters. Basically, no resistance = lazily destroy things with the help of a few minions.
- Centipede will, when attacked, hunker down and rapidly disgorge biters for 10 seconds (timer restarted each time it takes damage). Basically resistance = panic throw biter wave at enemies.
- When centipede takes damage, and it still has absorbed biters, then damage is 'transferred' to a stored biter. That biter is then immediately disgorged as well. Regardless of any disgorge cooldowns, this is a separate 'reaction'. (Basically centipedes are effectively invulnerable while they still have stored biters. You have to 'drain' them first before being able to kill them. And also rapid fire but low damage weapons will drain a biter rapidly, but risk getting swarmed by biters.)
- When passing damage to a stored biter, if the damage exceeds what that biter can soak, then the biter is spawned as dead (0 health) and the remaining damage is passed to the new stored biter. This continues until remaining damage is 0. Or stored biters run out, at which point the damage is finally applied to the centipede.
- MaxPollutionAbsorptionPerTick = The maximum amount of pollution a centipede can absorb per tick.
- InternalGrowthRatePerTick = The amount of 'pollution' the centipede gets per tick 'for free' regardless of if it is in pollution or not.
- TransportableEntitiesList = What biter types this centipede is allowed to absorb or generate internally.
- TransportModes => Info on its disgorge behaviour
- TransportModes['Attack'] => Info on how fast it disgorges stored biters when firing at enemies
- TransportModes['Attack'].UnloadCount (.min and .max) => Controls the amount of biters disgorged in one go.
- TransportModes['Attack'].UnloadDelay => Delay in ticks between disgorges
- TransportModes['Attack'].Duration = How many ticks the centipede stays in this mode.
- TransportModes['Attack'].SpeedMultiplier = Multiplier to speed when in this mode.
- TransportModes['Attack'].NextMode = Next transport mode to go into once this mode ends.
- TransportModes['Hunker'] => Info on hunker mode (just got damaged). Same info as Attack.
- TransportModes['Idle'] => Info on idle mode (not absorbing or unloading biters). Same info as Attack.
- TransportModes['Absorb'] => Info on absorb mode (absorbing nearby biters). Same info as Attack.
- StoredList => List of entity types stored and the count for each.
- StoredList['SmallBiter'].Count => Count of that entity type stored
- StoredGrowth => Amount of stored growth (pollution). Converted into biters each tick as fast as possible.
- TransportMode => Current mode variables.
- TransportMode.Mode => Absorb, Idle, Attack or Hunker
- TransportMode.TicksRemaining => Ticks remaining before the mode switches to NextMode
- TransportMode.NextMode => The next mode it will assume when the time in the current mode expires.
Why ?
Reduces late game entity count and introduces a new type of combat mechanic that can scale well with less entity count and pathing calculations.I believe the mechanic of an 'on your door rapidly spawning nest' would make a good challenge for late game that is different from the current biter swarms.
This design also counters (to some degree) 'just mindlessly slap down more turrets', since the first entity that will come into range is the centipede. Which will draw all the fire, each hit which will spawn a new angry biter from the cargo.
At the very least it should encourage people to put a bit of thought into defence in depth, where you have some defences 'out front' meant to slow down and drain the centipedes (a use for mines?), while defences further back handle the resulting disgorged hordes.
If added, game difficulty settings / mods for this can also allow for a means to play a more combat focussed game without simply making more dense and nests, or stronger biters.