1
0
mirror of https://github.com/veden/Rampant.git synced 2024-12-28 21:08:22 +02:00

added energy thiefs

This commit is contained in:
Aaron Veden 2019-02-12 21:50:25 -08:00
parent 791f4c3c23
commit b2e7412f02
20 changed files with 1607 additions and 139 deletions

View File

@ -2,6 +2,8 @@
Version: 0.16.37
Date: 2. 10. 2019
Improvements:
- Added the energy thief faction that will convert powered player structure into electric draining crystals
- Removed unnecessary grouping mechanism when spawner eggs produce units
- Added individual base faction ai to manage base development
- During onslaught ai state player building destroyed by biters credits x10 to the biters
- Increased dispersion projection of pheromone by 20% allowing for further pathing

View File

@ -1,5 +1,6 @@
-- imports
local unitUtils = require("libs/UnitUtils")
local baseUtils = require("libs/BaseUtils")
local chunkPropertyUtils = require("ChunkPropertyUtils")
local mapUtils = require("libs/MapUtils")
@ -27,7 +28,7 @@ local INTERVAL_PROCESS = constants.INTERVAL_PROCESS
local INTERVAL_CHUNK = constants.INTERVAL_CHUNK
local INTERVAL_SCAN = constants.INTERVAL_SCAN
local INTERVAL_SQUAD = constants.INTERVAL_SQUAD
local INTERVAL_SPAWNER = constants.INTERVAL_SPAWNER
-- local INTERVAL_SPAWNER = constants.INTERVAL_SPAWNER
local PROCESS_QUEUE_SIZE = constants.PROCESS_QUEUE_SIZE
@ -52,8 +53,16 @@ local CHUNK_SIZE = constants.CHUNK_SIZE
local DEFINES_DISTRACTION_NONE = defines.distraction.none
local DEFINES_DISTRACTION_BY_ENEMY = defines.distraction.by_enemy
local DEFINES_WIRE_TYPE_RED = defines.wire_type.red
local DEFINES_WIRE_TYPE_GREEN = defines.wire_type.green
local ENERGY_THIEF_CONVERSION_TABLE = constants.ENERGY_THIEF_CONVERSION_TABLE
local ENERGY_THIEF_LOOKUP = constants.ENERGY_THIEF_LOOKUP
-- imported functions
local convertTypeToDrainCrystal = unitUtils.convertTypeToDrainCrystal
local squadsDispatch = squadAttack.squadsDispatch
local positionToChunkXY = mapUtils.positionToChunkXY
@ -66,7 +75,7 @@ local entityForPassScan = chunkUtils.entityForPassScan
local processPendingChunks = chunkProcessor.processPendingChunks
local processScanChunks = chunkProcessor.processScanChunks
local processSpawnerChunks = chunkProcessor.processSpawnerChunks
-- local processSpawnerChunks = chunkProcessor.processSpawnerChunks
local processMap = mapProcessor.processMap
local processPlayers = mapProcessor.processPlayers
@ -93,7 +102,7 @@ local retreatUnits = squadDefense.retreatUnits
local getChunkBase = chunkPropertyUtils.getChunkBase
local isSpawner = stringUtils.isSpawner
local isSpawnerEgg = stringUtils.isSpawnerEgg
local addRemovePlayerEntity = chunkUtils.addRemovePlayerEntity
local unregisterEnemyBaseStructure = chunkUtils.unregisterEnemyBaseStructure
@ -106,7 +115,7 @@ local setChunkSpawnerEggTick = chunkPropertyUtils.setChunkSpawnerEggTick
local upgradeEntity = baseUtils.upgradeEntity
local rebuildNativeTables = baseUtils.rebuildNativeTables
local sSub = string.sub
local sFind = string.find
local mRandom = math.random
-- local references to global
@ -197,7 +206,7 @@ local function rebuildMap()
map.chunkToPathRating = {}
map.chunkToDeathGenerator = {}
map.queueSpawners = {}
-- map.queueSpawners = {}
-- preallocating memory to be used in code, making it fast by reducing garbage generated.
map.neighbors = { SENTINEL_IMPASSABLE_CHUNK,
@ -382,7 +391,7 @@ script.on_nth_tick(INTERVAL_SCAN,
scanMap(map, surface, natives, tick)
map.queueSpawners = processSpawnerChunks(map, surface, natives, tick)
-- map.queueSpawners = processSpawnerChunks(map, surface, natives, tick)
map.chunkToPassScan = processScanChunks(map, surface)
@ -497,6 +506,35 @@ local function onDeath(event)
if (chunk ~= SENTINEL_IMPASSABLE_CHUNK) then
victoryScent(map, chunk, entity.type)
end
if (cause ~= nil) then
if (ENERGY_THIEF_LOOKUP[cause.name]) then
local conversion = ENERGY_THIEF_CONVERSION_TABLE[entity.type]
if conversion then
local newEntity = surface.create_entity({position=entity.position,
name=convertTypeToDrainCrystal(entity.force.evolution_factor, conversion),
direction=entity.direction,
force="enemy"})
if (conversion == "pole") then
local wires = entity.neighbours
if wires then
for _,v in pairs(wires.copper) do
newEntity.connect_neighbour(v);
end
for _,v in pairs(wires.red) do
newEntity.connect_neighbour({wire = DEFINES_WIRE_TYPE_RED, target_entity = v});
end
for _,v in pairs(wires.green) do
newEntity.connect_neighbour({wire = DEFINES_WIRE_TYPE_GREEN, target_entity = v});
end
end
elseif newEntity.backer_name then
newEntity.backer_name = ""
end
end
end
end
end
if creditNatives and natives.safeBuildings and (natives.safeEntities[entity.type] or natives.safeEntityName[entity.name]) then
makeImmortalEntity(surface, entity)
@ -570,24 +608,25 @@ local function onResourceDepleted(event)
end
end
local function onTriggerEntityCreated(event)
local entity = event.entity
if entity and entity.valid and (entity.surface.index == natives.activeSurface) then
local name = event.entity.name
if isSpawner(name) then
local tick = event.tick
local chunk = getChunkByPosition(map, entity.position)
if chunk and ((tick - getChunkSpawnerEggTick(map, chunk)) > INTERVAL_SPAWNER) then
setChunkSpawnerEggTick(map, chunk, tick)
map.queueSpawners[#map.queueSpawners+1] = {
tick,
chunk,
entity.position
}
end
end
end
end
-- local function onTriggerEntityCreated(event)
-- local entity = event.entity
-- if entity and entity.valid and (entity.surface.index == natives.activeSurface) then
-- local name = event.entity.name
-- print(name)
-- if isSpawnerEgg(name) then
-- local tick = event.tick
-- local chunk = getChunkByPosition(map, entity.position)
-- if chunk and ((tick - getChunkSpawnerEggTick(map, chunk)) > INTERVAL_SPAWNER) then
-- setChunkSpawnerEggTick(map, chunk, tick)
-- map.queueSpawners[#map.queueSpawners+1] = {
-- tick,
-- chunk,
-- entity.position
-- }
-- end
-- end
-- end
-- end
local function onUsedCapsule(event)
local surface = game.players[event.player_index].surface
@ -643,7 +682,7 @@ script.on_event({defines.events.on_player_mined_entity,
script.on_event({defines.events.on_built_entity,
defines.events.on_robot_built_entity}, onBuild)
script.on_event(defines.events.on_trigger_created_entity, onTriggerEntityCreated)
-- script.on_event(defines.events.on_trigger_created_entity, onTriggerEntityCreated)
script.on_event(defines.events.on_rocket_launched, onRocketLaunch)

View File

@ -16,7 +16,7 @@ local troll = require("prototypes/Troll")
local spawner = require("prototypes/Spawner")
local wasp = require("prototypes/Wasp")
local laser = require("prototypes/Laser")
-- local energyThief = require("prototypes/EnergyThief")
local energyThief = require("prototypes/EnergyThief")
if settings.startup["rampant-newEnemies"].value then
@ -57,10 +57,15 @@ if settings.startup["rampant-newEnemies"].value then
if settings.startup["rampant-laserEnemy"].value then
laser.addFaction()
end
-- if settings.startup["rampant-energyEnemy"].value then
-- laser.addFaction()
-- end
-- require("prototypes/Decaying")
-- require("prototypes/Poison")
-- require("prototypes/Undying")
-- energyThief.addFaction()
if settings.startup["rampant-energyThiefEnemy"].value then
energyThief.addFaction()
end
for _, unitSpawner in pairs(data.raw["unit-spawner"]) do
if (unitSpawner.name ~= "biter-spawner") then

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 181 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@ -90,6 +90,11 @@ local SPAWNER_WORM_VARIATIONS = constants.SPAWNER_WORM_VARIATIONS
local SPAWNER_NEST_TIERS = constants.SPAWNER_NEST_TIERS
local SPAWNER_NEST_VARIATIONS = constants.SPAWNER_NEST_VARIATIONS
local ENERGY_THIEF_WORM_TIERS = constants.ENERGY_THIEF_WORM_TIERS
local ENERGY_THIEF_WORM_VARIATIONS = constants.ENERGY_THIEF_WORM_VARIATIONS
local ENERGY_THIEF_NEST_TIERS = constants.ENERGY_THIEF_NEST_TIERS
local ENERGY_THIEF_NEST_VARIATIONS = constants.ENERGY_THIEF_NEST_VARIATIONS
local BASE_ALIGNMENT_SPAWNER = constants.BASE_ALIGNMENT_SPAWNER
local BASE_ALIGNMENT_WASP = constants.BASE_ALIGNMENT_WASP
local BASE_ALIGNMENT_NEUTRAL = constants.BASE_ALIGNMENT_NEUTRAL
@ -103,6 +108,7 @@ local BASE_ALIGNMENT_FIRE = constants.BASE_ALIGNMENT_FIRE
local BASE_ALIGNMENT_FAST = constants.BASE_ALIGNMENT_FAST
local BASE_ALIGNMENT_LASER = constants.BASE_ALIGNMENT_LASER
local BASE_ALIGNMENT_TROLL = constants.BASE_ALIGNMENT_TROLL
local BASE_ALIGNMENT_ENERGY_THIEF = constants.BASE_ALIGNMENT_ENERGY_THIEF
local BASE_ALIGNMENT_DEADZONE = constants.BASE_ALIGNMENT_DEADZONE
local BASE_AI_MIN_STATE_DURATION = constants.BASE_AI_MIN_STATE_DURATION
@ -801,18 +807,18 @@ function baseUtils.rebuildNativeTables(natives, surface, rg)
"spawner")
end
-- if settings.startup["rampant-energyEnemy"].value then
-- processUnitClass(0,
-- 0,
-- SPAWNER_NEST_VARIATIONS,
-- SPAWNER_NEST_TIERS,
-- SPAWNER_WORM_VARIATIONS,
-- SPAWNER_WORM_TIERS,
-- surface,
-- natives,
-- BASE_ALIGNMENT_SPAWNER,
-- "spawner")
-- end
if settings.startup["rampant-energyThiefEnemy"].value then
processUnitClass(0,
0,
ENERGY_THIEF_NEST_VARIATIONS,
ENERGY_THIEF_NEST_TIERS,
ENERGY_THIEF_WORM_VARIATIONS,
ENERGY_THIEF_WORM_TIERS,
surface,
natives,
BASE_ALIGNMENT_ENERGY_THIEF,
"spawner")
end
natives.evolutionTableUnitSpawner = normalizeProbabilities(natives.evolutionTableUnitSpawner)
natives.evolutionTableWorm = normalizeProbabilities(natives.evolutionTableWorm)

View File

@ -129,34 +129,34 @@ function chunkProcessor.processScanChunks(map, surface)
return {}
end
function chunkProcessor.processSpawnerChunks(map, surface, natives, tick)
local queue = map.queueSpawners
-- function chunkProcessor.processSpawnerChunks(map, surface, natives, tick)
-- local queue = map.queueSpawners
local result = {}
-- local result = {}
for i=1, #queue do
local o = queue[i]
if ((tick - o[1]) > SPAWNER_EGG_TIMEOUT) then
local chunk = o[2]
local position = o[3]
-- for i=1, #queue do
-- local o = queue[i]
-- if ((tick - o[1]) > SPAWNER_EGG_TIMEOUT) then
-- local chunk = o[2]
-- local position = o[3]
retreatUnits(chunk,
position,
nil,
map,
surface,
natives,
tick,
RETREAT_GRAB_RADIUS,
false,
true)
else
result[#result+1] = o
end
end
-- retreatUnits(chunk,
-- position,
-- nil,
-- map,
-- surface,
-- natives,
-- tick,
-- RETREAT_GRAB_RADIUS,
-- false,
-- true)
-- else
-- result[#result+1] = o
-- end
-- end
return result
end
-- return result
-- end
return chunkProcessor

View File

@ -70,6 +70,8 @@ local getChunkByPosition = mapUtils.getChunkByPosition
local mFloor = math.floor
local mRandom = math.random
-- module code
local function fullScan(chunk, can_place_entity, canPlaceQuery)
@ -170,10 +172,10 @@ local function getEntityOverlapChunks(map, entity)
-- bottomXOffset = boundingBox.right_bottom.y
-- bottomYOffset = boundingBox.right_bottom.x
-- else
topXOffset = boundingBox.left_top.x
topYOffset = boundingBox.left_top.y
bottomXOffset = boundingBox.right_bottom.x
bottomYOffset = boundingBox.right_bottom.y
topXOffset = boundingBox.left_top.x
topYOffset = boundingBox.left_top.y
bottomXOffset = boundingBox.right_bottom.x
bottomYOffset = boundingBox.right_bottom.y
-- end
local leftTopChunkX = mFloor((center.x + topXOffset) * CHUNK_SIZE_DIVIDER) * CHUNK_SIZE
@ -273,7 +275,7 @@ function chunkUtils.initialScan(chunk, natives, surface, map, tick, evolutionFac
local wormCount = 0
local base = findNearbyBase(map, chunk, natives)
if base then
if (base.alignment ~= BASE_ALIGNMENT_DEADZONE) then
if (base.alignment[1] ~= BASE_ALIGNMENT_DEADZONE) then
setChunkBase(map, chunk, base)
end
else
@ -284,14 +286,14 @@ function chunkUtils.initialScan(chunk, natives, surface, map, tick, evolutionFac
for i = 1, #nests do
if rebuilding then
if not isRampant(nests[i].name) then
if upgradeEntity(nests[i], surface, alignment, natives, evolutionFactor) then
if upgradeEntity(nests[i], surface, alignment[mRandom(#alignment)], natives, evolutionFactor) then
nestCount = nestCount + 1
end
else
nestCount = nestCount + 1
end
else
if upgradeEntity(nests[i], surface, alignment, natives, evolutionFactor) then
if upgradeEntity(nests[i], surface, alignment[mRandom(#alignment)], natives, evolutionFactor) then
nestCount = nestCount + 1
end
end
@ -301,14 +303,14 @@ function chunkUtils.initialScan(chunk, natives, surface, map, tick, evolutionFac
for i = 1, #worms do
if rebuilding then
if not isRampant(worms[i].name) then
if upgradeEntity(worms[i], surface, alignment, natives, evolutionFactor) then
if upgradeEntity(worms[i], surface, alignment[mRandom(#alignment)], natives, evolutionFactor) then
wormCount = wormCount + 1
end
else
wormCount = wormCount + 1
end
else
if upgradeEntity(worms[i], surface, alignment, natives, evolutionFactor) then
if upgradeEntity(worms[i], surface, alignment[mRandom(#alignment)], natives, evolutionFactor) then
wormCount = wormCount + 1
end
end
@ -531,21 +533,15 @@ function chunkUtils.makeImmortalEntity(surface, entity)
direction=repairDirection,
force=repairForce})
if wires then
for connectType,neighbourGroup in pairs(wires) do
if connectType == "copper" then
for _,v in pairs(neighbourGroup) do
newEntity.connect_neighbour(v);
end
elseif connectType == "red" then
for _,v in pairs(neighbourGroup) do
newEntity.connect_neighbour({wire = DEFINES_WIRE_TYPE_RED, target_entity = v});
end
elseif connectType == "green" then
for _,v in pairs(neighbourGroup) do
newEntity.connect_neighbour({wire = DEFINES_WIRE_TYPE_GREEN, target_entity = v});
end
end
end
for _,v in pairs(wires.copper) do
newEntity.connect_neighbour(v);
end
for _,v in pairs(wires.red) do
newEntity.connect_neighbour({wire = DEFINES_WIRE_TYPE_RED, target_entity = v});
end
for _,v in pairs(wires.green) do
newEntity.connect_neighbour({wire = DEFINES_WIRE_TYPE_GREEN, target_entity = v});
end
end
newEntity.destructible = false

View File

@ -461,6 +461,40 @@ constants.SENTINEL_IMPASSABLE_CHUNK[constants.CHUNK_TICK] = 0
constants.SENTINEL_IMPASSABLE_CHUNK.x = -1
constants.SENTINEL_IMPASSABLE_CHUNK.y = -1
constants.ENERGY_THIEF_CONVERSION_TABLE = {
["generator"] = "unit",
["pump"] = "smallUnit",
["inserter"] = "smallUnit",
["reactor"] = "bigUnit",
["accumulator"] = "unit",
["solar-panel"] = "unit",
["assembling-machine"] = "unit",
["roboport"] = "bigUnit",
["beacon"] = "bigUnit",
["programmable-speaker"] = "unit",
["mining-drill"] = "unit",
["rocket-silo"] = "bigUnit",
["lamp"] = "smallUnit",
["radar"] = "bigUnit",
["lab"] = "unit",
["electric-turret"] = "unit",
["electric-pole"] = "pole"
}
constants.ENERGY_THIEF_DRAIN_CRYSTALS = {
"crystal-v1-drain-rampant",
"crystal-v2-drain-rampant",
"crystal-v3-drain-rampant",
"crystal-v4-drain-rampant",
"crystal-v5-drain-rampant",
"crystal-v6-drain-rampant",
"crystal-v7-drain-rampant",
"crystal-v8-drain-rampant",
"crystal-v9-drain-rampant",
"crystal-v10-drain-rampant"
}
-- unit spawners
local function roundToNearest(number, multiple)
@ -499,6 +533,22 @@ local wormTiers = settings.startup["rampant-newEnemyWormTiers"].value
local unitVariations = settings.startup["rampant-newEnemyUnitVariations"].value
local unitTiers = settings.startup["rampant-newEnemyUnitTiers"].value
constants.ENERGY_THIEF_LOOKUP = {}
for tier=1, wormTiers do
local t = ((wormTiers == 5) and constants.TIER_NAMING_SET_5[tier]) or constants.TIER_NAMING_SET_10[tier]
for i=1,wormVariations do
constants.ENERGY_THIEF_LOOKUP["energy-thief-worm" .. "-v" .. i .. "-t" .. t .. "-rampant"] = true
end
end
for tier=1, wormTiers do
local t = ((unitTiers == 5) and constants.TIER_NAMING_SET_5[tier]) or constants.TIER_NAMING_SET_10[tier]
for i=1,wormVariations do
constants.ENERGY_THIEF_LOOKUP["energy-thief-biter" .. "-v" .. i .. "-t" .. t .. "-rampant"] = true
end
end
constants.SPAWNER_EGG_TIMEOUT = constants.TICKS_A_SECOND * 5
constants.NEUTRAL_NEST_TIERS = nestTiers
@ -620,4 +670,11 @@ constants.NUCLEAR_WORM_VARIATIONS = wormVariations
constants.NUCLEAR_UNIT_TIERS = unitTiers
constants.NUCLEAR_UNIT_VARIATIONS = unitVariations
constants.ENERGY_THIEF_NEST_TIERS = nestTiers
constants.ENERGY_THIEF_NEST_VARIATIONS = nestVariations
constants.ENERGY_THIEF_WORM_TIERS = wormTiers
constants.ENERGY_THIEF_WORM_VARIATIONS = wormVariations
constants.ENERGY_THIEF_UNIT_TIERS = unitTiers
constants.ENERGY_THIEF_UNIT_VARIATIONS = unitVariations
return constants

View File

@ -1,19 +1,13 @@
local stringUtils = {}
local sFind = string.find
function stringUtils.isRampant(str)
return stringUtils.ends(str, "rampant")
return sFind(str, "rampant", -#"rampant")
end
function stringUtils.isSpawner(str)
return stringUtils.starts(str, "spawner")
end
function stringUtils.starts(str, start)
return (string.sub(str,1,string.len(start)) == start)
end
function stringUtils.ends(str, tail)
return (tail == '') or (string.sub(str, -string.len(tail)) == tail)
function stringUtils.isSpawnerEgg(str)
return sFind(str, "spawner", -#"spawner")
end
return stringUtils

53
libs/UnitUtils.lua Executable file
View File

@ -0,0 +1,53 @@
local unitUtils = {}
-- imports
local constants = require("Constants")
-- constants
local ENERGY_THIEF_DRAIN_CRYSTALS = constants.ENERGY_THIEF_DRAIN_CRYSTALS
-- imported functions
-- module code
function unitUtils.convertTypeToDrainCrystal(evolutionFactor, entity)
if (entity == "pole") then
return "crystal-drain-pole-rampant"
else
if (entity == "smallUnit") then
if (evolutionFactor < 0.25) then
return ENERGY_THIEF_DRAIN_CRYSTALS[1]
elseif (evolutionFactor < 0.50) then
return ENERGY_THIEF_DRAIN_CRYSTALS[2]
elseif (evolutionFactor < 0.75) then
return ENERGY_THIEF_DRAIN_CRYSTALS[3]
else
return ENERGY_THIEF_DRAIN_CRYSTALS[4]
end
elseif (entity == "unit") then
if (evolutionFactor < 0.25) then
return ENERGY_THIEF_DRAIN_CRYSTALS[4]
elseif (evolutionFactor < 0.50) then
return ENERGY_THIEF_DRAIN_CRYSTALS[5]
elseif (evolutionFactor < 0.75) then
return ENERGY_THIEF_DRAIN_CRYSTALS[6]
else
return ENERGY_THIEF_DRAIN_CRYSTALS[7]
end
else
if (evolutionFactor < 0.25) then
return ENERGY_THIEF_DRAIN_CRYSTALS[7]
elseif (evolutionFactor < 0.50) then
return ENERGY_THIEF_DRAIN_CRYSTALS[8]
elseif (evolutionFactor < 0.75) then
return ENERGY_THIEF_DRAIN_CRYSTALS[9]
else
return ENERGY_THIEF_DRAIN_CRYSTALS[10]
end
end
end
end
return unitUtils

View File

@ -1,4 +1,16 @@
[entity-name]
crystal-v1-drain-rampant=Power Draining Crystal
crystal-v2-drain-rampant=Power Draining Crystal
crystal-v3-drain-rampant=Power Draining Crystal
crystal-v4-drain-rampant=Power Draining Crystal
crystal-v5-drain-rampant=Power Draining Crystal
crystal-v6-drain-rampant=Power Draining Crystal
crystal-v7-drain-rampant=Power Draining Crystal
crystal-v8-drain-rampant=Power Draining Crystal
crystal-v9-drain-rampant=Power Draining Crystal
crystal-v10-drain-rampant=Power Draining Crystal
crystal-drain-pole-rampant=Crystal Pylon
neutral-biter-v1-t1-rampant=Neutral biter: Larva class
neutral-spitter-v1-t1-rampant=Neutral spitter: Larva class
neutral-biter-nest-v1-t1-rampant=Neutral biter nest: Larva class
@ -11199,6 +11211,606 @@ spawner-worm-drone-v20-t10-drone-rampant=Spawner eggs: Juggernaut class
spawner-biter-v20-t10-rampant=Spawner biter: Juggernaut class
spawner-spitter-nest-v20-t10-rampant=Spawner spitter nest: Juggernaut class
spawner-worm-v20-t10-rampant=Spawner worm: Juggernaut class
energy-thief-biter-v1-t1-rampant=Energy Thief biter: Larva class
energy-thief-biter-nest-v1-t1-rampant=Energy Thief biter nest: Larva class
energy-thief-worm-v1-t1-rampant=Energy Thief worm: Larva class
energy-thief-biter-v2-t1-rampant=Energy Thief biter: Larva class
energy-thief-biter-nest-v2-t1-rampant=Energy Thief biter nest: Larva class
energy-thief-worm-v2-t1-rampant=Energy Thief worm: Larva class
energy-thief-biter-v3-t1-rampant=Energy Thief biter: Larva class
energy-thief-biter-nest-v3-t1-rampant=Energy Thief biter nest: Larva class
energy-thief-worm-v3-t1-rampant=Energy Thief worm: Larva class
energy-thief-biter-v4-t1-rampant=Energy Thief biter: Larva class
energy-thief-biter-nest-v4-t1-rampant=Energy Thief biter nest: Larva class
energy-thief-worm-v4-t1-rampant=Energy Thief worm: Larva class
energy-thief-biter-v5-t1-rampant=Energy Thief biter: Larva class
energy-thief-biter-nest-v5-t1-rampant=Energy Thief biter nest: Larva class
energy-thief-worm-v5-t1-rampant=Energy Thief worm: Larva class
energy-thief-biter-v6-t1-rampant=Energy Thief biter: Larva class
energy-thief-biter-nest-v6-t1-rampant=Energy Thief biter nest: Larva class
energy-thief-worm-v6-t1-rampant=Energy Thief worm: Larva class
energy-thief-biter-v7-t1-rampant=Energy Thief biter: Larva class
energy-thief-biter-nest-v7-t1-rampant=Energy Thief biter nest: Larva class
energy-thief-worm-v7-t1-rampant=Energy Thief worm: Larva class
energy-thief-biter-v8-t1-rampant=Energy Thief biter: Larva class
energy-thief-biter-nest-v8-t1-rampant=Energy Thief biter nest: Larva class
energy-thief-worm-v8-t1-rampant=Energy Thief worm: Larva class
energy-thief-biter-v9-t1-rampant=Energy Thief biter: Larva class
energy-thief-biter-nest-v9-t1-rampant=Energy Thief biter nest: Larva class
energy-thief-worm-v9-t1-rampant=Energy Thief worm: Larva class
energy-thief-biter-v10-t1-rampant=Energy Thief biter: Larva class
energy-thief-biter-nest-v10-t1-rampant=Energy Thief biter nest: Larva class
energy-thief-worm-v10-t1-rampant=Energy Thief worm: Larva class
energy-thief-biter-v11-t1-rampant=Energy Thief biter: Larva class
energy-thief-biter-nest-v11-t1-rampant=Energy Thief biter nest: Larva class
energy-thief-worm-v11-t1-rampant=Energy Thief worm: Larva class
energy-thief-biter-v12-t1-rampant=Energy Thief biter: Larva class
energy-thief-biter-nest-v12-t1-rampant=Energy Thief biter nest: Larva class
energy-thief-worm-v12-t1-rampant=Energy Thief worm: Larva class
energy-thief-biter-v13-t1-rampant=Energy Thief biter: Larva class
energy-thief-biter-nest-v13-t1-rampant=Energy Thief biter nest: Larva class
energy-thief-worm-v13-t1-rampant=Energy Thief worm: Larva class
energy-thief-biter-v14-t1-rampant=Energy Thief biter: Larva class
energy-thief-biter-nest-v14-t1-rampant=Energy Thief biter nest: Larva class
energy-thief-worm-v14-t1-rampant=Energy Thief worm: Larva class
energy-thief-biter-v15-t1-rampant=Energy Thief biter: Larva class
energy-thief-biter-nest-v15-t1-rampant=Energy Thief biter nest: Larva class
energy-thief-worm-v15-t1-rampant=Energy Thief worm: Larva class
energy-thief-biter-v16-t1-rampant=Energy Thief biter: Larva class
energy-thief-biter-nest-v16-t1-rampant=Energy Thief biter nest: Larva class
energy-thief-worm-v16-t1-rampant=Energy Thief worm: Larva class
energy-thief-biter-v17-t1-rampant=Energy Thief biter: Larva class
energy-thief-biter-nest-v17-t1-rampant=Energy Thief biter nest: Larva class
energy-thief-worm-v17-t1-rampant=Energy Thief worm: Larva class
energy-thief-biter-v18-t1-rampant=Energy Thief biter: Larva class
energy-thief-biter-nest-v18-t1-rampant=Energy Thief biter nest: Larva class
energy-thief-worm-v18-t1-rampant=Energy Thief worm: Larva class
energy-thief-biter-v19-t1-rampant=Energy Thief biter: Larva class
energy-thief-biter-nest-v19-t1-rampant=Energy Thief biter nest: Larva class
energy-thief-worm-v19-t1-rampant=Energy Thief worm: Larva class
energy-thief-biter-v20-t1-rampant=Energy Thief biter: Larva class
energy-thief-biter-nest-v20-t1-rampant=Energy Thief biter nest: Larva class
energy-thief-worm-v20-t1-rampant=Energy Thief worm: Larva class
energy-thief-biter-v1-t2-rampant=Energy Thief biter: Pupae class
energy-thief-biter-nest-v1-t2-rampant=Energy Thief biter nest: Pupae class
energy-thief-worm-v1-t2-rampant=Energy Thief worm: Pupae class
energy-thief-biter-v2-t2-rampant=Energy Thief biter: Pupae class
energy-thief-biter-nest-v2-t2-rampant=Energy Thief biter nest: Pupae class
energy-thief-worm-v2-t2-rampant=Energy Thief worm: Pupae class
energy-thief-biter-v3-t2-rampant=Energy Thief biter: Pupae class
energy-thief-biter-nest-v3-t2-rampant=Energy Thief biter nest: Pupae class
energy-thief-worm-v3-t2-rampant=Energy Thief worm: Pupae class
energy-thief-biter-v4-t2-rampant=Energy Thief biter: Pupae class
energy-thief-biter-nest-v4-t2-rampant=Energy Thief biter nest: Pupae class
energy-thief-worm-v4-t2-rampant=Energy Thief worm: Pupae class
energy-thief-biter-v5-t2-rampant=Energy Thief biter: Pupae class
energy-thief-biter-nest-v5-t2-rampant=Energy Thief biter nest: Pupae class
energy-thief-worm-v5-t2-rampant=Energy Thief worm: Pupae class
energy-thief-biter-v6-t2-rampant=Energy Thief biter: Pupae class
energy-thief-biter-nest-v6-t2-rampant=Energy Thief biter nest: Pupae class
energy-thief-worm-v6-t2-rampant=Energy Thief worm: Pupae class
energy-thief-biter-v7-t2-rampant=Energy Thief biter: Pupae class
energy-thief-biter-nest-v7-t2-rampant=Energy Thief biter nest: Pupae class
energy-thief-worm-v7-t2-rampant=Energy Thief worm: Pupae class
energy-thief-biter-v8-t2-rampant=Energy Thief biter: Pupae class
energy-thief-biter-nest-v8-t2-rampant=Energy Thief biter nest: Pupae class
energy-thief-worm-v8-t2-rampant=Energy Thief worm: Pupae class
energy-thief-biter-v9-t2-rampant=Energy Thief biter: Pupae class
energy-thief-biter-nest-v9-t2-rampant=Energy Thief biter nest: Pupae class
energy-thief-worm-v9-t2-rampant=Energy Thief worm: Pupae class
energy-thief-biter-v10-t2-rampant=Energy Thief biter: Pupae class
energy-thief-biter-nest-v10-t2-rampant=Energy Thief biter nest: Pupae class
energy-thief-worm-v10-t2-rampant=Energy Thief worm: Pupae class
energy-thief-biter-v11-t2-rampant=Energy Thief biter: Pupae class
energy-thief-biter-nest-v11-t2-rampant=Energy Thief biter nest: Pupae class
energy-thief-worm-v11-t2-rampant=Energy Thief worm: Pupae class
energy-thief-biter-v12-t2-rampant=Energy Thief biter: Pupae class
energy-thief-biter-nest-v12-t2-rampant=Energy Thief biter nest: Pupae class
energy-thief-worm-v12-t2-rampant=Energy Thief worm: Pupae class
energy-thief-biter-v13-t2-rampant=Energy Thief biter: Pupae class
energy-thief-biter-nest-v13-t2-rampant=Energy Thief biter nest: Pupae class
energy-thief-worm-v13-t2-rampant=Energy Thief worm: Pupae class
energy-thief-biter-v14-t2-rampant=Energy Thief biter: Pupae class
energy-thief-biter-nest-v14-t2-rampant=Energy Thief biter nest: Pupae class
energy-thief-worm-v14-t2-rampant=Energy Thief worm: Pupae class
energy-thief-biter-v15-t2-rampant=Energy Thief biter: Pupae class
energy-thief-biter-nest-v15-t2-rampant=Energy Thief biter nest: Pupae class
energy-thief-worm-v15-t2-rampant=Energy Thief worm: Pupae class
energy-thief-biter-v16-t2-rampant=Energy Thief biter: Pupae class
energy-thief-biter-nest-v16-t2-rampant=Energy Thief biter nest: Pupae class
energy-thief-worm-v16-t2-rampant=Energy Thief worm: Pupae class
energy-thief-biter-v17-t2-rampant=Energy Thief biter: Pupae class
energy-thief-biter-nest-v17-t2-rampant=Energy Thief biter nest: Pupae class
energy-thief-worm-v17-t2-rampant=Energy Thief worm: Pupae class
energy-thief-biter-v18-t2-rampant=Energy Thief biter: Pupae class
energy-thief-biter-nest-v18-t2-rampant=Energy Thief biter nest: Pupae class
energy-thief-worm-v18-t2-rampant=Energy Thief worm: Pupae class
energy-thief-biter-v19-t2-rampant=Energy Thief biter: Pupae class
energy-thief-biter-nest-v19-t2-rampant=Energy Thief biter nest: Pupae class
energy-thief-worm-v19-t2-rampant=Energy Thief worm: Pupae class
energy-thief-biter-v20-t2-rampant=Energy Thief biter: Pupae class
energy-thief-biter-nest-v20-t2-rampant=Energy Thief biter nest: Pupae class
energy-thief-worm-v20-t2-rampant=Energy Thief worm: Pupae class
energy-thief-biter-v1-t3-rampant=Energy Thief biter: Worker class
energy-thief-biter-nest-v1-t3-rampant=Energy Thief biter nest: Worker class
energy-thief-worm-v1-t3-rampant=Energy Thief worm: Worker class
energy-thief-biter-v2-t3-rampant=Energy Thief biter: Worker class
energy-thief-biter-nest-v2-t3-rampant=Energy Thief biter nest: Worker class
energy-thief-worm-v2-t3-rampant=Energy Thief worm: Worker class
energy-thief-biter-v3-t3-rampant=Energy Thief biter: Worker class
energy-thief-biter-nest-v3-t3-rampant=Energy Thief biter nest: Worker class
energy-thief-worm-v3-t3-rampant=Energy Thief worm: Worker class
energy-thief-biter-v4-t3-rampant=Energy Thief biter: Worker class
energy-thief-biter-nest-v4-t3-rampant=Energy Thief biter nest: Worker class
energy-thief-worm-v4-t3-rampant=Energy Thief worm: Worker class
energy-thief-biter-v5-t3-rampant=Energy Thief biter: Worker class
energy-thief-biter-nest-v5-t3-rampant=Energy Thief biter nest: Worker class
energy-thief-worm-v5-t3-rampant=Energy Thief worm: Worker class
energy-thief-biter-v6-t3-rampant=Energy Thief biter: Worker class
energy-thief-biter-nest-v6-t3-rampant=Energy Thief biter nest: Worker class
energy-thief-worm-v6-t3-rampant=Energy Thief worm: Worker class
energy-thief-biter-v7-t3-rampant=Energy Thief biter: Worker class
energy-thief-biter-nest-v7-t3-rampant=Energy Thief biter nest: Worker class
energy-thief-worm-v7-t3-rampant=Energy Thief worm: Worker class
energy-thief-biter-v8-t3-rampant=Energy Thief biter: Worker class
energy-thief-biter-nest-v8-t3-rampant=Energy Thief biter nest: Worker class
energy-thief-worm-v8-t3-rampant=Energy Thief worm: Worker class
energy-thief-biter-v9-t3-rampant=Energy Thief biter: Worker class
energy-thief-biter-nest-v9-t3-rampant=Energy Thief biter nest: Worker class
energy-thief-worm-v9-t3-rampant=Energy Thief worm: Worker class
energy-thief-biter-v10-t3-rampant=Energy Thief biter: Worker class
energy-thief-biter-nest-v10-t3-rampant=Energy Thief biter nest: Worker class
energy-thief-worm-v10-t3-rampant=Energy Thief worm: Worker class
energy-thief-biter-v11-t3-rampant=Energy Thief biter: Worker class
energy-thief-biter-nest-v11-t3-rampant=Energy Thief biter nest: Worker class
energy-thief-worm-v11-t3-rampant=Energy Thief worm: Worker class
energy-thief-biter-v12-t3-rampant=Energy Thief biter: Worker class
energy-thief-biter-nest-v12-t3-rampant=Energy Thief biter nest: Worker class
energy-thief-worm-v12-t3-rampant=Energy Thief worm: Worker class
energy-thief-biter-v13-t3-rampant=Energy Thief biter: Worker class
energy-thief-biter-nest-v13-t3-rampant=Energy Thief biter nest: Worker class
energy-thief-worm-v13-t3-rampant=Energy Thief worm: Worker class
energy-thief-biter-v14-t3-rampant=Energy Thief biter: Worker class
energy-thief-biter-nest-v14-t3-rampant=Energy Thief biter nest: Worker class
energy-thief-worm-v14-t3-rampant=Energy Thief worm: Worker class
energy-thief-biter-v15-t3-rampant=Energy Thief biter: Worker class
energy-thief-biter-nest-v15-t3-rampant=Energy Thief biter nest: Worker class
energy-thief-worm-v15-t3-rampant=Energy Thief worm: Worker class
energy-thief-biter-v16-t3-rampant=Energy Thief biter: Worker class
energy-thief-biter-nest-v16-t3-rampant=Energy Thief biter nest: Worker class
energy-thief-worm-v16-t3-rampant=Energy Thief worm: Worker class
energy-thief-biter-v17-t3-rampant=Energy Thief biter: Worker class
energy-thief-biter-nest-v17-t3-rampant=Energy Thief biter nest: Worker class
energy-thief-worm-v17-t3-rampant=Energy Thief worm: Worker class
energy-thief-biter-v18-t3-rampant=Energy Thief biter: Worker class
energy-thief-biter-nest-v18-t3-rampant=Energy Thief biter nest: Worker class
energy-thief-worm-v18-t3-rampant=Energy Thief worm: Worker class
energy-thief-biter-v19-t3-rampant=Energy Thief biter: Worker class
energy-thief-biter-nest-v19-t3-rampant=Energy Thief biter nest: Worker class
energy-thief-worm-v19-t3-rampant=Energy Thief worm: Worker class
energy-thief-biter-v20-t3-rampant=Energy Thief biter: Worker class
energy-thief-biter-nest-v20-t3-rampant=Energy Thief biter nest: Worker class
energy-thief-worm-v20-t3-rampant=Energy Thief worm: Worker class
energy-thief-biter-v1-t4-rampant=Energy Thief biter: Grunt class
energy-thief-biter-nest-v1-t4-rampant=Energy Thief biter nest: Grunt class
energy-thief-worm-v1-t4-rampant=Energy Thief worm: Grunt class
energy-thief-biter-v2-t4-rampant=Energy Thief biter: Grunt class
energy-thief-biter-nest-v2-t4-rampant=Energy Thief biter nest: Grunt class
energy-thief-worm-v2-t4-rampant=Energy Thief worm: Grunt class
energy-thief-biter-v3-t4-rampant=Energy Thief biter: Grunt class
energy-thief-biter-nest-v3-t4-rampant=Energy Thief biter nest: Grunt class
energy-thief-worm-v3-t4-rampant=Energy Thief worm: Grunt class
energy-thief-biter-v4-t4-rampant=Energy Thief biter: Grunt class
energy-thief-biter-nest-v4-t4-rampant=Energy Thief biter nest: Grunt class
energy-thief-worm-v4-t4-rampant=Energy Thief worm: Grunt class
energy-thief-biter-v5-t4-rampant=Energy Thief biter: Grunt class
energy-thief-biter-nest-v5-t4-rampant=Energy Thief biter nest: Grunt class
energy-thief-worm-v5-t4-rampant=Energy Thief worm: Grunt class
energy-thief-biter-v6-t4-rampant=Energy Thief biter: Grunt class
energy-thief-biter-nest-v6-t4-rampant=Energy Thief biter nest: Grunt class
energy-thief-worm-v6-t4-rampant=Energy Thief worm: Grunt class
energy-thief-biter-v7-t4-rampant=Energy Thief biter: Grunt class
energy-thief-biter-nest-v7-t4-rampant=Energy Thief biter nest: Grunt class
energy-thief-worm-v7-t4-rampant=Energy Thief worm: Grunt class
energy-thief-biter-v8-t4-rampant=Energy Thief biter: Grunt class
energy-thief-biter-nest-v8-t4-rampant=Energy Thief biter nest: Grunt class
energy-thief-worm-v8-t4-rampant=Energy Thief worm: Grunt class
energy-thief-biter-v9-t4-rampant=Energy Thief biter: Grunt class
energy-thief-biter-nest-v9-t4-rampant=Energy Thief biter nest: Grunt class
energy-thief-worm-v9-t4-rampant=Energy Thief worm: Grunt class
energy-thief-biter-v10-t4-rampant=Energy Thief biter: Grunt class
energy-thief-biter-nest-v10-t4-rampant=Energy Thief biter nest: Grunt class
energy-thief-worm-v10-t4-rampant=Energy Thief worm: Grunt class
energy-thief-biter-v11-t4-rampant=Energy Thief biter: Grunt class
energy-thief-biter-nest-v11-t4-rampant=Energy Thief biter nest: Grunt class
energy-thief-worm-v11-t4-rampant=Energy Thief worm: Grunt class
energy-thief-biter-v12-t4-rampant=Energy Thief biter: Grunt class
energy-thief-biter-nest-v12-t4-rampant=Energy Thief biter nest: Grunt class
energy-thief-worm-v12-t4-rampant=Energy Thief worm: Grunt class
energy-thief-biter-v13-t4-rampant=Energy Thief biter: Grunt class
energy-thief-biter-nest-v13-t4-rampant=Energy Thief biter nest: Grunt class
energy-thief-worm-v13-t4-rampant=Energy Thief worm: Grunt class
energy-thief-biter-v14-t4-rampant=Energy Thief biter: Grunt class
energy-thief-biter-nest-v14-t4-rampant=Energy Thief biter nest: Grunt class
energy-thief-worm-v14-t4-rampant=Energy Thief worm: Grunt class
energy-thief-biter-v15-t4-rampant=Energy Thief biter: Grunt class
energy-thief-biter-nest-v15-t4-rampant=Energy Thief biter nest: Grunt class
energy-thief-worm-v15-t4-rampant=Energy Thief worm: Grunt class
energy-thief-biter-v16-t4-rampant=Energy Thief biter: Grunt class
energy-thief-biter-nest-v16-t4-rampant=Energy Thief biter nest: Grunt class
energy-thief-worm-v16-t4-rampant=Energy Thief worm: Grunt class
energy-thief-biter-v17-t4-rampant=Energy Thief biter: Grunt class
energy-thief-biter-nest-v17-t4-rampant=Energy Thief biter nest: Grunt class
energy-thief-worm-v17-t4-rampant=Energy Thief worm: Grunt class
energy-thief-biter-v18-t4-rampant=Energy Thief biter: Grunt class
energy-thief-biter-nest-v18-t4-rampant=Energy Thief biter nest: Grunt class
energy-thief-worm-v18-t4-rampant=Energy Thief worm: Grunt class
energy-thief-biter-v19-t4-rampant=Energy Thief biter: Grunt class
energy-thief-biter-nest-v19-t4-rampant=Energy Thief biter nest: Grunt class
energy-thief-worm-v19-t4-rampant=Energy Thief worm: Grunt class
energy-thief-biter-v20-t4-rampant=Energy Thief biter: Grunt class
energy-thief-biter-nest-v20-t4-rampant=Energy Thief biter nest: Grunt class
energy-thief-worm-v20-t4-rampant=Energy Thief worm: Grunt class
energy-thief-biter-v1-t5-rampant=Energy Thief biter: Soldier class
energy-thief-biter-nest-v1-t5-rampant=Energy Thief biter nest: Soldier class
energy-thief-worm-v1-t5-rampant=Energy Thief worm: Soldier class
energy-thief-biter-v2-t5-rampant=Energy Thief biter: Soldier class
energy-thief-biter-nest-v2-t5-rampant=Energy Thief biter nest: Soldier class
energy-thief-worm-v2-t5-rampant=Energy Thief worm: Soldier class
energy-thief-biter-v3-t5-rampant=Energy Thief biter: Soldier class
energy-thief-biter-nest-v3-t5-rampant=Energy Thief biter nest: Soldier class
energy-thief-worm-v3-t5-rampant=Energy Thief worm: Soldier class
energy-thief-biter-v4-t5-rampant=Energy Thief biter: Soldier class
energy-thief-biter-nest-v4-t5-rampant=Energy Thief biter nest: Soldier class
energy-thief-worm-v4-t5-rampant=Energy Thief worm: Soldier class
energy-thief-biter-v5-t5-rampant=Energy Thief biter: Soldier class
energy-thief-biter-nest-v5-t5-rampant=Energy Thief biter nest: Soldier class
energy-thief-worm-v5-t5-rampant=Energy Thief worm: Soldier class
energy-thief-biter-v6-t5-rampant=Energy Thief biter: Soldier class
energy-thief-biter-nest-v6-t5-rampant=Energy Thief biter nest: Soldier class
energy-thief-worm-v6-t5-rampant=Energy Thief worm: Soldier class
energy-thief-biter-v7-t5-rampant=Energy Thief biter: Soldier class
energy-thief-biter-nest-v7-t5-rampant=Energy Thief biter nest: Soldier class
energy-thief-worm-v7-t5-rampant=Energy Thief worm: Soldier class
energy-thief-biter-v8-t5-rampant=Energy Thief biter: Soldier class
energy-thief-biter-nest-v8-t5-rampant=Energy Thief biter nest: Soldier class
energy-thief-worm-v8-t5-rampant=Energy Thief worm: Soldier class
energy-thief-biter-v9-t5-rampant=Energy Thief biter: Soldier class
energy-thief-biter-nest-v9-t5-rampant=Energy Thief biter nest: Soldier class
energy-thief-worm-v9-t5-rampant=Energy Thief worm: Soldier class
energy-thief-biter-v10-t5-rampant=Energy Thief biter: Soldier class
energy-thief-biter-nest-v10-t5-rampant=Energy Thief biter nest: Soldier class
energy-thief-worm-v10-t5-rampant=Energy Thief worm: Soldier class
energy-thief-biter-v11-t5-rampant=Energy Thief biter: Soldier class
energy-thief-biter-nest-v11-t5-rampant=Energy Thief biter nest: Soldier class
energy-thief-worm-v11-t5-rampant=Energy Thief worm: Soldier class
energy-thief-biter-v12-t5-rampant=Energy Thief biter: Soldier class
energy-thief-biter-nest-v12-t5-rampant=Energy Thief biter nest: Soldier class
energy-thief-worm-v12-t5-rampant=Energy Thief worm: Soldier class
energy-thief-biter-v13-t5-rampant=Energy Thief biter: Soldier class
energy-thief-biter-nest-v13-t5-rampant=Energy Thief biter nest: Soldier class
energy-thief-worm-v13-t5-rampant=Energy Thief worm: Soldier class
energy-thief-biter-v14-t5-rampant=Energy Thief biter: Soldier class
energy-thief-biter-nest-v14-t5-rampant=Energy Thief biter nest: Soldier class
energy-thief-worm-v14-t5-rampant=Energy Thief worm: Soldier class
energy-thief-biter-v15-t5-rampant=Energy Thief biter: Soldier class
energy-thief-biter-nest-v15-t5-rampant=Energy Thief biter nest: Soldier class
energy-thief-worm-v15-t5-rampant=Energy Thief worm: Soldier class
energy-thief-biter-v16-t5-rampant=Energy Thief biter: Soldier class
energy-thief-biter-nest-v16-t5-rampant=Energy Thief biter nest: Soldier class
energy-thief-worm-v16-t5-rampant=Energy Thief worm: Soldier class
energy-thief-biter-v17-t5-rampant=Energy Thief biter: Soldier class
energy-thief-biter-nest-v17-t5-rampant=Energy Thief biter nest: Soldier class
energy-thief-worm-v17-t5-rampant=Energy Thief worm: Soldier class
energy-thief-biter-v18-t5-rampant=Energy Thief biter: Soldier class
energy-thief-biter-nest-v18-t5-rampant=Energy Thief biter nest: Soldier class
energy-thief-worm-v18-t5-rampant=Energy Thief worm: Soldier class
energy-thief-biter-v19-t5-rampant=Energy Thief biter: Soldier class
energy-thief-biter-nest-v19-t5-rampant=Energy Thief biter nest: Soldier class
energy-thief-worm-v19-t5-rampant=Energy Thief worm: Soldier class
energy-thief-biter-v20-t5-rampant=Energy Thief biter: Soldier class
energy-thief-biter-nest-v20-t5-rampant=Energy Thief biter nest: Soldier class
energy-thief-worm-v20-t5-rampant=Energy Thief worm: Soldier class
energy-thief-biter-v1-t6-rampant=Energy Thief biter: General class
energy-thief-biter-nest-v1-t6-rampant=Energy Thief biter nest: General class
energy-thief-worm-v1-t6-rampant=Energy Thief worm: General class
energy-thief-biter-v2-t6-rampant=Energy Thief biter: General class
energy-thief-biter-nest-v2-t6-rampant=Energy Thief biter nest: General class
energy-thief-worm-v2-t6-rampant=Energy Thief worm: General class
energy-thief-biter-v3-t6-rampant=Energy Thief biter: General class
energy-thief-biter-nest-v3-t6-rampant=Energy Thief biter nest: General class
energy-thief-worm-v3-t6-rampant=Energy Thief worm: General class
energy-thief-biter-v4-t6-rampant=Energy Thief biter: General class
energy-thief-biter-nest-v4-t6-rampant=Energy Thief biter nest: General class
energy-thief-worm-v4-t6-rampant=Energy Thief worm: General class
energy-thief-biter-v5-t6-rampant=Energy Thief biter: General class
energy-thief-biter-nest-v5-t6-rampant=Energy Thief biter nest: General class
energy-thief-worm-v5-t6-rampant=Energy Thief worm: General class
energy-thief-biter-v6-t6-rampant=Energy Thief biter: General class
energy-thief-biter-nest-v6-t6-rampant=Energy Thief biter nest: General class
energy-thief-worm-v6-t6-rampant=Energy Thief worm: General class
energy-thief-biter-v7-t6-rampant=Energy Thief biter: General class
energy-thief-biter-nest-v7-t6-rampant=Energy Thief biter nest: General class
energy-thief-worm-v7-t6-rampant=Energy Thief worm: General class
energy-thief-biter-v8-t6-rampant=Energy Thief biter: General class
energy-thief-biter-nest-v8-t6-rampant=Energy Thief biter nest: General class
energy-thief-worm-v8-t6-rampant=Energy Thief worm: General class
energy-thief-biter-v9-t6-rampant=Energy Thief biter: General class
energy-thief-biter-nest-v9-t6-rampant=Energy Thief biter nest: General class
energy-thief-worm-v9-t6-rampant=Energy Thief worm: General class
energy-thief-biter-v10-t6-rampant=Energy Thief biter: General class
energy-thief-biter-nest-v10-t6-rampant=Energy Thief biter nest: General class
energy-thief-worm-v10-t6-rampant=Energy Thief worm: General class
energy-thief-biter-v11-t6-rampant=Energy Thief biter: General class
energy-thief-biter-nest-v11-t6-rampant=Energy Thief biter nest: General class
energy-thief-worm-v11-t6-rampant=Energy Thief worm: General class
energy-thief-biter-v12-t6-rampant=Energy Thief biter: General class
energy-thief-biter-nest-v12-t6-rampant=Energy Thief biter nest: General class
energy-thief-worm-v12-t6-rampant=Energy Thief worm: General class
energy-thief-biter-v13-t6-rampant=Energy Thief biter: General class
energy-thief-biter-nest-v13-t6-rampant=Energy Thief biter nest: General class
energy-thief-worm-v13-t6-rampant=Energy Thief worm: General class
energy-thief-biter-v14-t6-rampant=Energy Thief biter: General class
energy-thief-biter-nest-v14-t6-rampant=Energy Thief biter nest: General class
energy-thief-worm-v14-t6-rampant=Energy Thief worm: General class
energy-thief-biter-v15-t6-rampant=Energy Thief biter: General class
energy-thief-biter-nest-v15-t6-rampant=Energy Thief biter nest: General class
energy-thief-worm-v15-t6-rampant=Energy Thief worm: General class
energy-thief-biter-v16-t6-rampant=Energy Thief biter: General class
energy-thief-biter-nest-v16-t6-rampant=Energy Thief biter nest: General class
energy-thief-worm-v16-t6-rampant=Energy Thief worm: General class
energy-thief-biter-v17-t6-rampant=Energy Thief biter: General class
energy-thief-biter-nest-v17-t6-rampant=Energy Thief biter nest: General class
energy-thief-worm-v17-t6-rampant=Energy Thief worm: General class
energy-thief-biter-v18-t6-rampant=Energy Thief biter: General class
energy-thief-biter-nest-v18-t6-rampant=Energy Thief biter nest: General class
energy-thief-worm-v18-t6-rampant=Energy Thief worm: General class
energy-thief-biter-v19-t6-rampant=Energy Thief biter: General class
energy-thief-biter-nest-v19-t6-rampant=Energy Thief biter nest: General class
energy-thief-worm-v19-t6-rampant=Energy Thief worm: General class
energy-thief-biter-v20-t6-rampant=Energy Thief biter: General class
energy-thief-biter-nest-v20-t6-rampant=Energy Thief biter nest: General class
energy-thief-worm-v20-t6-rampant=Energy Thief worm: General class
energy-thief-biter-v1-t7-rampant=Energy Thief biter: Overlord class
energy-thief-biter-nest-v1-t7-rampant=Energy Thief biter nest: Overlord class
energy-thief-worm-v1-t7-rampant=Energy Thief worm: Overlord class
energy-thief-biter-v2-t7-rampant=Energy Thief biter: Overlord class
energy-thief-biter-nest-v2-t7-rampant=Energy Thief biter nest: Overlord class
energy-thief-worm-v2-t7-rampant=Energy Thief worm: Overlord class
energy-thief-biter-v3-t7-rampant=Energy Thief biter: Overlord class
energy-thief-biter-nest-v3-t7-rampant=Energy Thief biter nest: Overlord class
energy-thief-worm-v3-t7-rampant=Energy Thief worm: Overlord class
energy-thief-biter-v4-t7-rampant=Energy Thief biter: Overlord class
energy-thief-biter-nest-v4-t7-rampant=Energy Thief biter nest: Overlord class
energy-thief-worm-v4-t7-rampant=Energy Thief worm: Overlord class
energy-thief-biter-v5-t7-rampant=Energy Thief biter: Overlord class
energy-thief-biter-nest-v5-t7-rampant=Energy Thief biter nest: Overlord class
energy-thief-worm-v5-t7-rampant=Energy Thief worm: Overlord class
energy-thief-biter-v6-t7-rampant=Energy Thief biter: Overlord class
energy-thief-biter-nest-v6-t7-rampant=Energy Thief biter nest: Overlord class
energy-thief-worm-v6-t7-rampant=Energy Thief worm: Overlord class
energy-thief-biter-v7-t7-rampant=Energy Thief biter: Overlord class
energy-thief-biter-nest-v7-t7-rampant=Energy Thief biter nest: Overlord class
energy-thief-worm-v7-t7-rampant=Energy Thief worm: Overlord class
energy-thief-biter-v8-t7-rampant=Energy Thief biter: Overlord class
energy-thief-biter-nest-v8-t7-rampant=Energy Thief biter nest: Overlord class
energy-thief-worm-v8-t7-rampant=Energy Thief worm: Overlord class
energy-thief-biter-v9-t7-rampant=Energy Thief biter: Overlord class
energy-thief-biter-nest-v9-t7-rampant=Energy Thief biter nest: Overlord class
energy-thief-worm-v9-t7-rampant=Energy Thief worm: Overlord class
energy-thief-biter-v10-t7-rampant=Energy Thief biter: Overlord class
energy-thief-biter-nest-v10-t7-rampant=Energy Thief biter nest: Overlord class
energy-thief-worm-v10-t7-rampant=Energy Thief worm: Overlord class
energy-thief-biter-v11-t7-rampant=Energy Thief biter: Overlord class
energy-thief-biter-nest-v11-t7-rampant=Energy Thief biter nest: Overlord class
energy-thief-worm-v11-t7-rampant=Energy Thief worm: Overlord class
energy-thief-biter-v12-t7-rampant=Energy Thief biter: Overlord class
energy-thief-biter-nest-v12-t7-rampant=Energy Thief biter nest: Overlord class
energy-thief-worm-v12-t7-rampant=Energy Thief worm: Overlord class
energy-thief-biter-v13-t7-rampant=Energy Thief biter: Overlord class
energy-thief-biter-nest-v13-t7-rampant=Energy Thief biter nest: Overlord class
energy-thief-worm-v13-t7-rampant=Energy Thief worm: Overlord class
energy-thief-biter-v14-t7-rampant=Energy Thief biter: Overlord class
energy-thief-biter-nest-v14-t7-rampant=Energy Thief biter nest: Overlord class
energy-thief-worm-v14-t7-rampant=Energy Thief worm: Overlord class
energy-thief-biter-v15-t7-rampant=Energy Thief biter: Overlord class
energy-thief-biter-nest-v15-t7-rampant=Energy Thief biter nest: Overlord class
energy-thief-worm-v15-t7-rampant=Energy Thief worm: Overlord class
energy-thief-biter-v16-t7-rampant=Energy Thief biter: Overlord class
energy-thief-biter-nest-v16-t7-rampant=Energy Thief biter nest: Overlord class
energy-thief-worm-v16-t7-rampant=Energy Thief worm: Overlord class
energy-thief-biter-v17-t7-rampant=Energy Thief biter: Overlord class
energy-thief-biter-nest-v17-t7-rampant=Energy Thief biter nest: Overlord class
energy-thief-worm-v17-t7-rampant=Energy Thief worm: Overlord class
energy-thief-biter-v18-t7-rampant=Energy Thief biter: Overlord class
energy-thief-biter-nest-v18-t7-rampant=Energy Thief biter nest: Overlord class
energy-thief-worm-v18-t7-rampant=Energy Thief worm: Overlord class
energy-thief-biter-v19-t7-rampant=Energy Thief biter: Overlord class
energy-thief-biter-nest-v19-t7-rampant=Energy Thief biter nest: Overlord class
energy-thief-worm-v19-t7-rampant=Energy Thief worm: Overlord class
energy-thief-biter-v20-t7-rampant=Energy Thief biter: Overlord class
energy-thief-biter-nest-v20-t7-rampant=Energy Thief biter nest: Overlord class
energy-thief-worm-v20-t7-rampant=Energy Thief worm: Overlord class
energy-thief-biter-v1-t8-rampant=Energy Thief biter: Titan class
energy-thief-biter-nest-v1-t8-rampant=Energy Thief biter nest: Titan class
energy-thief-worm-v1-t8-rampant=Energy Thief worm: Titan class
energy-thief-biter-v2-t8-rampant=Energy Thief biter: Titan class
energy-thief-biter-nest-v2-t8-rampant=Energy Thief biter nest: Titan class
energy-thief-worm-v2-t8-rampant=Energy Thief worm: Titan class
energy-thief-biter-v3-t8-rampant=Energy Thief biter: Titan class
energy-thief-biter-nest-v3-t8-rampant=Energy Thief biter nest: Titan class
energy-thief-worm-v3-t8-rampant=Energy Thief worm: Titan class
energy-thief-biter-v4-t8-rampant=Energy Thief biter: Titan class
energy-thief-biter-nest-v4-t8-rampant=Energy Thief biter nest: Titan class
energy-thief-worm-v4-t8-rampant=Energy Thief worm: Titan class
energy-thief-biter-v5-t8-rampant=Energy Thief biter: Titan class
energy-thief-biter-nest-v5-t8-rampant=Energy Thief biter nest: Titan class
energy-thief-worm-v5-t8-rampant=Energy Thief worm: Titan class
energy-thief-biter-v6-t8-rampant=Energy Thief biter: Titan class
energy-thief-biter-nest-v6-t8-rampant=Energy Thief biter nest: Titan class
energy-thief-worm-v6-t8-rampant=Energy Thief worm: Titan class
energy-thief-biter-v7-t8-rampant=Energy Thief biter: Titan class
energy-thief-biter-nest-v7-t8-rampant=Energy Thief biter nest: Titan class
energy-thief-worm-v7-t8-rampant=Energy Thief worm: Titan class
energy-thief-biter-v8-t8-rampant=Energy Thief biter: Titan class
energy-thief-biter-nest-v8-t8-rampant=Energy Thief biter nest: Titan class
energy-thief-worm-v8-t8-rampant=Energy Thief worm: Titan class
energy-thief-biter-v9-t8-rampant=Energy Thief biter: Titan class
energy-thief-biter-nest-v9-t8-rampant=Energy Thief biter nest: Titan class
energy-thief-worm-v9-t8-rampant=Energy Thief worm: Titan class
energy-thief-biter-v10-t8-rampant=Energy Thief biter: Titan class
energy-thief-biter-nest-v10-t8-rampant=Energy Thief biter nest: Titan class
energy-thief-worm-v10-t8-rampant=Energy Thief worm: Titan class
energy-thief-biter-v11-t8-rampant=Energy Thief biter: Titan class
energy-thief-biter-nest-v11-t8-rampant=Energy Thief biter nest: Titan class
energy-thief-worm-v11-t8-rampant=Energy Thief worm: Titan class
energy-thief-biter-v12-t8-rampant=Energy Thief biter: Titan class
energy-thief-biter-nest-v12-t8-rampant=Energy Thief biter nest: Titan class
energy-thief-worm-v12-t8-rampant=Energy Thief worm: Titan class
energy-thief-biter-v13-t8-rampant=Energy Thief biter: Titan class
energy-thief-biter-nest-v13-t8-rampant=Energy Thief biter nest: Titan class
energy-thief-worm-v13-t8-rampant=Energy Thief worm: Titan class
energy-thief-biter-v14-t8-rampant=Energy Thief biter: Titan class
energy-thief-biter-nest-v14-t8-rampant=Energy Thief biter nest: Titan class
energy-thief-worm-v14-t8-rampant=Energy Thief worm: Titan class
energy-thief-biter-v15-t8-rampant=Energy Thief biter: Titan class
energy-thief-biter-nest-v15-t8-rampant=Energy Thief biter nest: Titan class
energy-thief-worm-v15-t8-rampant=Energy Thief worm: Titan class
energy-thief-biter-v16-t8-rampant=Energy Thief biter: Titan class
energy-thief-biter-nest-v16-t8-rampant=Energy Thief biter nest: Titan class
energy-thief-worm-v16-t8-rampant=Energy Thief worm: Titan class
energy-thief-biter-v17-t8-rampant=Energy Thief biter: Titan class
energy-thief-biter-nest-v17-t8-rampant=Energy Thief biter nest: Titan class
energy-thief-worm-v17-t8-rampant=Energy Thief worm: Titan class
energy-thief-biter-v18-t8-rampant=Energy Thief biter: Titan class
energy-thief-biter-nest-v18-t8-rampant=Energy Thief biter nest: Titan class
energy-thief-worm-v18-t8-rampant=Energy Thief worm: Titan class
energy-thief-biter-v19-t8-rampant=Energy Thief biter: Titan class
energy-thief-biter-nest-v19-t8-rampant=Energy Thief biter nest: Titan class
energy-thief-worm-v19-t8-rampant=Energy Thief worm: Titan class
energy-thief-biter-v20-t8-rampant=Energy Thief biter: Titan class
energy-thief-biter-nest-v20-t8-rampant=Energy Thief biter nest: Titan class
energy-thief-worm-v20-t8-rampant=Energy Thief worm: Titan class
energy-thief-biter-v1-t9-rampant=Energy Thief biter: Leviathan class
energy-thief-biter-nest-v1-t9-rampant=Energy Thief biter nest: Leviathan class
energy-thief-worm-v1-t9-rampant=Energy Thief worm: Leviathan class
energy-thief-biter-v2-t9-rampant=Energy Thief biter: Leviathan class
energy-thief-biter-nest-v2-t9-rampant=Energy Thief biter nest: Leviathan class
energy-thief-worm-v2-t9-rampant=Energy Thief worm: Leviathan class
energy-thief-biter-v3-t9-rampant=Energy Thief biter: Leviathan class
energy-thief-biter-nest-v3-t9-rampant=Energy Thief biter nest: Leviathan class
energy-thief-worm-v3-t9-rampant=Energy Thief worm: Leviathan class
energy-thief-biter-v4-t9-rampant=Energy Thief biter: Leviathan class
energy-thief-biter-nest-v4-t9-rampant=Energy Thief biter nest: Leviathan class
energy-thief-worm-v4-t9-rampant=Energy Thief worm: Leviathan class
energy-thief-biter-v5-t9-rampant=Energy Thief biter: Leviathan class
energy-thief-biter-nest-v5-t9-rampant=Energy Thief biter nest: Leviathan class
energy-thief-worm-v5-t9-rampant=Energy Thief worm: Leviathan class
energy-thief-biter-v6-t9-rampant=Energy Thief biter: Leviathan class
energy-thief-biter-nest-v6-t9-rampant=Energy Thief biter nest: Leviathan class
energy-thief-worm-v6-t9-rampant=Energy Thief worm: Leviathan class
energy-thief-biter-v7-t9-rampant=Energy Thief biter: Leviathan class
energy-thief-biter-nest-v7-t9-rampant=Energy Thief biter nest: Leviathan class
energy-thief-worm-v7-t9-rampant=Energy Thief worm: Leviathan class
energy-thief-biter-v8-t9-rampant=Energy Thief biter: Leviathan class
energy-thief-biter-nest-v8-t9-rampant=Energy Thief biter nest: Leviathan class
energy-thief-worm-v8-t9-rampant=Energy Thief worm: Leviathan class
energy-thief-biter-v9-t9-rampant=Energy Thief biter: Leviathan class
energy-thief-biter-nest-v9-t9-rampant=Energy Thief biter nest: Leviathan class
energy-thief-worm-v9-t9-rampant=Energy Thief worm: Leviathan class
energy-thief-biter-v10-t9-rampant=Energy Thief biter: Leviathan class
energy-thief-biter-nest-v10-t9-rampant=Energy Thief biter nest: Leviathan class
energy-thief-worm-v10-t9-rampant=Energy Thief worm: Leviathan class
energy-thief-biter-v11-t9-rampant=Energy Thief biter: Leviathan class
energy-thief-biter-nest-v11-t9-rampant=Energy Thief biter nest: Leviathan class
energy-thief-worm-v11-t9-rampant=Energy Thief worm: Leviathan class
energy-thief-biter-v12-t9-rampant=Energy Thief biter: Leviathan class
energy-thief-biter-nest-v12-t9-rampant=Energy Thief biter nest: Leviathan class
energy-thief-worm-v12-t9-rampant=Energy Thief worm: Leviathan class
energy-thief-biter-v13-t9-rampant=Energy Thief biter: Leviathan class
energy-thief-biter-nest-v13-t9-rampant=Energy Thief biter nest: Leviathan class
energy-thief-worm-v13-t9-rampant=Energy Thief worm: Leviathan class
energy-thief-biter-v14-t9-rampant=Energy Thief biter: Leviathan class
energy-thief-biter-nest-v14-t9-rampant=Energy Thief biter nest: Leviathan class
energy-thief-worm-v14-t9-rampant=Energy Thief worm: Leviathan class
energy-thief-biter-v15-t9-rampant=Energy Thief biter: Leviathan class
energy-thief-biter-nest-v15-t9-rampant=Energy Thief biter nest: Leviathan class
energy-thief-worm-v15-t9-rampant=Energy Thief worm: Leviathan class
energy-thief-biter-v16-t9-rampant=Energy Thief biter: Leviathan class
energy-thief-biter-nest-v16-t9-rampant=Energy Thief biter nest: Leviathan class
energy-thief-worm-v16-t9-rampant=Energy Thief worm: Leviathan class
energy-thief-biter-v17-t9-rampant=Energy Thief biter: Leviathan class
energy-thief-biter-nest-v17-t9-rampant=Energy Thief biter nest: Leviathan class
energy-thief-worm-v17-t9-rampant=Energy Thief worm: Leviathan class
energy-thief-biter-v18-t9-rampant=Energy Thief biter: Leviathan class
energy-thief-biter-nest-v18-t9-rampant=Energy Thief biter nest: Leviathan class
energy-thief-worm-v18-t9-rampant=Energy Thief worm: Leviathan class
energy-thief-biter-v19-t9-rampant=Energy Thief biter: Leviathan class
energy-thief-biter-nest-v19-t9-rampant=Energy Thief biter nest: Leviathan class
energy-thief-worm-v19-t9-rampant=Energy Thief worm: Leviathan class
energy-thief-biter-v20-t9-rampant=Energy Thief biter: Leviathan class
energy-thief-biter-nest-v20-t9-rampant=Energy Thief biter nest: Leviathan class
energy-thief-worm-v20-t9-rampant=Energy Thief worm: Leviathan class
energy-thief-biter-v1-t10-rampant=Energy Thief biter: Juggernaut class
energy-thief-biter-nest-v1-t10-rampant=Energy Thief biter nest: Juggernaut class
energy-thief-worm-v1-t10-rampant=Energy Thief worm: Juggernaut class
energy-thief-biter-v2-t10-rampant=Energy Thief biter: Juggernaut class
energy-thief-biter-nest-v2-t10-rampant=Energy Thief biter nest: Juggernaut class
energy-thief-worm-v2-t10-rampant=Energy Thief worm: Juggernaut class
energy-thief-biter-v3-t10-rampant=Energy Thief biter: Juggernaut class
energy-thief-biter-nest-v3-t10-rampant=Energy Thief biter nest: Juggernaut class
energy-thief-worm-v3-t10-rampant=Energy Thief worm: Juggernaut class
energy-thief-biter-v4-t10-rampant=Energy Thief biter: Juggernaut class
energy-thief-biter-nest-v4-t10-rampant=Energy Thief biter nest: Juggernaut class
energy-thief-worm-v4-t10-rampant=Energy Thief worm: Juggernaut class
energy-thief-biter-v5-t10-rampant=Energy Thief biter: Juggernaut class
energy-thief-biter-nest-v5-t10-rampant=Energy Thief biter nest: Juggernaut class
energy-thief-worm-v5-t10-rampant=Energy Thief worm: Juggernaut class
energy-thief-biter-v6-t10-rampant=Energy Thief biter: Juggernaut class
energy-thief-biter-nest-v6-t10-rampant=Energy Thief biter nest: Juggernaut class
energy-thief-worm-v6-t10-rampant=Energy Thief worm: Juggernaut class
energy-thief-biter-v7-t10-rampant=Energy Thief biter: Juggernaut class
energy-thief-biter-nest-v7-t10-rampant=Energy Thief biter nest: Juggernaut class
energy-thief-worm-v7-t10-rampant=Energy Thief worm: Juggernaut class
energy-thief-biter-v8-t10-rampant=Energy Thief biter: Juggernaut class
energy-thief-biter-nest-v8-t10-rampant=Energy Thief biter nest: Juggernaut class
energy-thief-worm-v8-t10-rampant=Energy Thief worm: Juggernaut class
energy-thief-biter-v9-t10-rampant=Energy Thief biter: Juggernaut class
energy-thief-biter-nest-v9-t10-rampant=Energy Thief biter nest: Juggernaut class
energy-thief-worm-v9-t10-rampant=Energy Thief worm: Juggernaut class
energy-thief-biter-v10-t10-rampant=Energy Thief biter: Juggernaut class
energy-thief-biter-nest-v10-t10-rampant=Energy Thief biter nest: Juggernaut class
energy-thief-worm-v10-t10-rampant=Energy Thief worm: Juggernaut class
energy-thief-biter-v11-t10-rampant=Energy Thief biter: Juggernaut class
energy-thief-biter-nest-v11-t10-rampant=Energy Thief biter nest: Juggernaut class
energy-thief-worm-v11-t10-rampant=Energy Thief worm: Juggernaut class
energy-thief-biter-v12-t10-rampant=Energy Thief biter: Juggernaut class
energy-thief-biter-nest-v12-t10-rampant=Energy Thief biter nest: Juggernaut class
energy-thief-worm-v12-t10-rampant=Energy Thief worm: Juggernaut class
energy-thief-biter-v13-t10-rampant=Energy Thief biter: Juggernaut class
energy-thief-biter-nest-v13-t10-rampant=Energy Thief biter nest: Juggernaut class
energy-thief-worm-v13-t10-rampant=Energy Thief worm: Juggernaut class
energy-thief-biter-v14-t10-rampant=Energy Thief biter: Juggernaut class
energy-thief-biter-nest-v14-t10-rampant=Energy Thief biter nest: Juggernaut class
energy-thief-worm-v14-t10-rampant=Energy Thief worm: Juggernaut class
energy-thief-biter-v15-t10-rampant=Energy Thief biter: Juggernaut class
energy-thief-biter-nest-v15-t10-rampant=Energy Thief biter nest: Juggernaut class
energy-thief-worm-v15-t10-rampant=Energy Thief worm: Juggernaut class
energy-thief-biter-v16-t10-rampant=Energy Thief biter: Juggernaut class
energy-thief-biter-nest-v16-t10-rampant=Energy Thief biter nest: Juggernaut class
energy-thief-worm-v16-t10-rampant=Energy Thief worm: Juggernaut class
energy-thief-biter-v17-t10-rampant=Energy Thief biter: Juggernaut class
energy-thief-biter-nest-v17-t10-rampant=Energy Thief biter nest: Juggernaut class
energy-thief-worm-v17-t10-rampant=Energy Thief worm: Juggernaut class
energy-thief-biter-v18-t10-rampant=Energy Thief biter: Juggernaut class
energy-thief-biter-nest-v18-t10-rampant=Energy Thief biter nest: Juggernaut class
energy-thief-worm-v18-t10-rampant=Energy Thief worm: Juggernaut class
energy-thief-biter-v19-t10-rampant=Energy Thief biter: Juggernaut class
energy-thief-biter-nest-v19-t10-rampant=Energy Thief biter nest: Juggernaut class
energy-thief-worm-v19-t10-rampant=Energy Thief worm: Juggernaut class
energy-thief-biter-v20-t10-rampant=Energy Thief biter: Juggernaut class
energy-thief-biter-nest-v20-t10-rampant=Energy Thief biter nest: Juggernaut class
energy-thief-worm-v20-t10-rampant=Energy Thief worm: Juggernaut class
[entity-description]

598
prototypes/EnergyThief.lua Executable file
View File

@ -0,0 +1,598 @@
-- imports
local thiefUtils = require("utils/ThiefUtils")
local biterUtils = require("utils/BiterUtils")
local beamUtils = require("utils/BeamUtils")
local attackBall = require("utils/AttackBall")
local swarmUtils = require("SwarmUtils")
package.path = "../libs/?.lua;" .. package.path
local constants = require("Constants")
-- constants
local energyThief = {}
local ENERGY_THIEF_UNIT_TIERS = constants.ENERGY_THIEF_UNIT_TIERS
local ENERGY_THIEF_UNIT_VARIATIONS = constants.ENERGY_THIEF_UNIT_VARIATIONS
local ENERGY_THIEF_NEST_TIERS = constants.ENERGY_THIEF_NEST_TIERS
local ENERGY_THIEF_NEST_VARIATIONS = constants.ENERGY_THIEF_NEST_VARIATIONS
local ENERGY_THIEF_WORM_TIERS = constants.ENERGY_THIEF_WORM_TIERS
local ENERGY_THIEF_WORM_VARIATIONS = constants.ENERGY_THIEF_WORM_VARIATIONS
-- imported functions
local buildUnitSpawner = swarmUtils.buildUnitSpawner
local buildWorm = swarmUtils.buildWorm
local createElectricAttack = biterUtils.createElectricAttack
local createAttackBall = attackBall.createAttackBall
local makeLaser = beamUtils.makeLaser
local createRangedAttack = biterUtils.createRangedAttack
local makeBeam = beamUtils.makeBeam
local makeBubble = beamUtils.makeBubble
local makeDrainCrystal = thiefUtils.makeDrainCrystal
local makeUnitAlienLootTable = biterUtils.makeUnitAlienLootTable
local makeSpawnerAlienLootTable = biterUtils.makeSpawnerAlienLootTable
local makeWormAlienLootTable = biterUtils.makeWormAlienLootTable
function energyThief.addFaction()
local biterLoot = makeUnitAlienLootTable("blue")
local spawnerLoot = makeSpawnerAlienLootTable("blue")
local wormLoot = makeWormAlienLootTable("blue")
local electricBubble = makeBubble({
name = "energy-thief-worm",
lTint = {r=0, g=0, b=1, a=1}
})
local softSmoke = "the-soft-smoke-rampant"
-- energy-thief biters
buildUnitSpawner(
{
unit = {
name = "energy-thief-biter",
attributes = {
explosion = "blood-explosion-small"
},
loot = biterLoot,
attack = {
damageType = "electric"
},
resistances = {},
type = "biter",
attackName = "biter-energy-thief",
tint1 = {r=0, g=0, b=0.83, a=0.65},
tint2 = {r=0, g=0, b=0.63, a=0.65}
},
unitSpawner = {
name = "energy-thief-biter-nest",
loot = spawnerLoot,
attributes = {},
resistances = {},
tint = {r=0, g=0, b=0.83, a=0.65}
}
},
{
unit = {
{
type = "attribute",
name = "health",
[1] = 10,
[2] = 50,
[3] = 200,
[4] = 350,
[5] = 750,
[6] = 1000,
[7] = 1500,
[8] = 2500,
[9] = 4500,
[10] = 7000
},
{
type = "attack",
name = "width",
[1] = 1.5,
[2] = 1.5,
[3] = 1.6,
[4] = 1.6,
[5] = 1.7,
[6] = 1.7,
[7] = 1.8,
[8] = 1.8,
[9] = 1.9,
[10] = 1.9
},
{
type = "attack",
name = "damageInterval",
[1] = 20,
[2] = 20,
[3] = 21,
[4] = 21,
[5] = 22,
[6] = 22,
[7] = 23,
[8] = 23,
[9] = 24,
[10] = 24
},
{
type = "attack",
name = "duration",
[1] = 20,
[2] = 20,
[3] = 21,
[4] = 21,
[5] = 22,
[6] = 22,
[7] = 23,
[8] = 23,
[9] = 24,
[10] = 24
},
{
type = "resistance",
name = "laser",
decrease = {
[1] = 3,
[2] = 3,
[3] = 7,
[4] = 7,
[5] = 10,
[6] = 10,
[7] = 13,
[8] = 13,
[9] = 16,
[10] = 18
},
percent = {
[1] = 35,
[2] = 35,
[3] = 40,
[4] = 40,
[5] = 45,
[6] = 45,
[7] = 50,
[8] = 55,
[9] = 55,
[10] = 60
}
},
{
type = "resistance",
name = "electric",
decrease = {
[1] = 7,
[2] = 7,
[3] = 10,
[4] = 10,
[5] = 13,
[6] = 13,
[7] = 16,
[8] = 16,
[9] = 19,
[10] = 23
},
percent = {
[1] = 65,
[2] = 65,
[3] = 70,
[4] = 75,
[5] = 75,
[6] = 80,
[7] = 85,
[8] = 85,
[9] = 90,
[10] = 90
}
},
{
type = "attack",
name = "range",
[1] = 11,
[2] = 11,
[3] = 12,
[4] = 12,
[5] = 13,
[6] = 13,
[7] = 14,
[8] = 14,
[9] = 15,
[10] = 15
}
},
unitSpawner = {
{
type = "resistance",
name = "laser",
decrease = {
[1] = 3,
[2] = 3,
[3] = 7,
[4] = 7,
[5] = 10,
[6] = 10,
[7] = 13,
[8] = 13,
[9] = 16,
[10] = 18
},
percent = {
[1] = 35,
[2] = 35,
[3] = 40,
[4] = 40,
[5] = 45,
[6] = 45,
[7] = 50,
[8] = 55,
[9] = 55,
[10] = 60
}
},
{
type = "resistance",
name = "electric",
decrease = {
[1] = 7,
[2] = 7,
[3] = 10,
[4] = 10,
[5] = 13,
[6] = 13,
[7] = 16,
[8] = 16,
[9] = 19,
[10] = 23
},
percent = {
[1] = 65,
[2] = 65,
[3] = 70,
[4] = 75,
[5] = 75,
[6] = 80,
[7] = 85,
[8] = 85,
[9] = 90,
[10] = 90
}
}
}
},
function (attributes)
return createElectricAttack(attributes,
makeBeam(attributes),
biterattackanimation(attributes.scale, attributes.tint1, attributes.tint2))
end,
{
unit = ENERGY_THIEF_UNIT_VARIATIONS,
unitSpawner = ENERGY_THIEF_NEST_VARIATIONS
},
{
unit = ENERGY_THIEF_UNIT_TIERS,
unitSpawner = ENERGY_THIEF_NEST_TIERS
}
)
-- energy-thief worms
buildWorm(
{
name = "energy-thief-worm",
loot = wormLoot,
attributes = {},
attack = {
type = "projectile",
bubble = electricBubble,
damageType = "electric",
softSmokeName = softSmoke,
pointEffects = function(attributes)
return
{
{
type="nested-result",
action = {
{
type = "cluster",
cluster_count = attributes.clusters,
distance = attributes.clusterDistance,
distance_deviation = 3,
action_delivery =
{
type = "projectile",
projectile = attributes.laserName,
duration = 20,
direction_deviation = 0.6,
starting_speed = attributes.startingSpeed,
starting_speed_deviation = 0.3
}
}
},
}
}
end
},
resistances = {},
attackName = "worm-energy-thief",
tint = {r=0, g=0, b=0.83, a=0.65},
pTint = {r=0, g=0, b=0.8, a=1},
sTint = {r=0, g=0, b=0.8, a=1},
lTint = {r=0, g=0, b=0.8, a=1}
},
{
{
type = "attack",
name = "startingSpeed",
[1] = 0.25,
[2] = 0.25,
[3] = 0.27,
[4] = 0.27,
[5] = 0.29,
[6] = 0.29,
[7] = 0.31,
[8] = 0.31,
[9] = 0.33,
[10] = 0.33
},
{
type = "attack",
name = "clusterDistance",
[1] = 3,
[2] = 3,
[3] = 4,
[4] = 4,
[5] = 5,
[6] = 5,
[7] = 6,
[8] = 6,
[9] = 7,
[10] = 7
},
{
type = "attack",
name = "clusters",
min = 2,
[1] = 5,
[2] = 5,
[3] = 6,
[4] = 6,
[5] = 7,
[6] = 7,
[7] = 8,
[8] = 8,
[9] = 9,
[10] = 9
},
{
type = "resistance",
name = "laser",
decrease = {
[1] = 3,
[2] = 3,
[3] = 7,
[4] = 7,
[5] = 10,
[6] = 10,
[7] = 13,
[8] = 13,
[9] = 16,
[10] = 18
},
percent = {
[1] = 35,
[2] = 35,
[3] = 40,
[4] = 40,
[5] = 45,
[6] = 45,
[7] = 50,
[8] = 55,
[9] = 55,
[10] = 60
}
},
{
type = "resistance",
name = "electric",
decrease = {
[1] = 7,
[2] = 7,
[3] = 10,
[4] = 10,
[5] = 13,
[6] = 13,
[7] = 16,
[8] = 16,
[9] = 19,
[10] = 23
},
percent = {
[1] = 65,
[2] = 65,
[3] = 70,
[4] = 75,
[5] = 75,
[6] = 80,
[7] = 85,
[8] = 85,
[9] = 90,
[10] = 90
}
}
},
function (attributes)
attributes.laserName = makeLaser(attributes)
return createRangedAttack(attributes,
createAttackBall(attributes))
end,
ENERGY_THIEF_WORM_VARIATIONS,
ENERGY_THIEF_WORM_TIERS
)
data:extend({
{
type = "item",
name = "crystal-drain-pole-rampant",
icon = "__Rampant__/graphics/icons/thief/crystal-drain.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "energy",
order = "e[accumulator]-a[accumulator]",
place_result = "crystal-drain-pole-rampant",
stack_size = 50
},
{
type = "electric-pole",
name = "crystal-drain-pole-rampant",
icon = "__Rampant__/graphics/icons/thief/crystal-drain.png",
icon_size = 32,
flags = {},
minable = {hardness = 0.2, mining_time = 0.5, result = "big-electric-pole"},
max_health = 150,
healing_per_tick = 0.02,
corpse = "medium-remnants",
resistances =
{
{
type = "fire",
percent = 100
},
{
type = "electric",
percent = 100
},
{
type = "laser",
percent = 100
}
},
collision_box = {{-0.55, -0.55}, {0.55, 0.55}},
selection_box = {{-0.55, -0.55}, {0.55, 0.55}},
drawing_box = {{-1, -3}, {1, 0.5}},
maximum_wire_distance = 30,
supply_area_distance = 9,
vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 },
pictures =
{
filename = "__Rampant__/graphics/entities/thief/crystal-drain-pole.png",
priority = "high",
width = 168,
height = 130,
direction_count = 4,
shift = {1.6, -1.4}
},
connection_points =
{
{
shadow =
{
copper = {2.7, 0},
green = {1.8, 0},
red = {3.6, 0}
},
wire =
{
copper = {0, -2.5},
green = {-0.59375, -2.5},
red = {0.625, -2.5}
}
},
{
shadow =
{
copper = {3.1, 0.2},
green = {2.3, -0.3},
red = {3.8, 0.6}
},
wire =
{
copper = {-0.0625, -2.5},
green = {-0.5, -3},
red = {0.34375, -2}
}
},
{
shadow =
{
copper = {2.9, 0.06},
green = {3.0, -0.6},
red = {3.0, 0.8}
},
wire =
{
copper = {-0.09375, -2.5},
green = {-0.09375, -3},
red = {-0.09375, -2}
}
},
{
shadow =
{
copper = {3.1, 0.2},
green = {3.8, -0.3},
red = {2.35, 0.6}
},
wire =
{
copper = {-0.0625, -2.4},
green = {0.375, -2.9},
red = {-0.46875, -2.4}
}
}
},
radius_visualisation_picture =
{
filename = "__base__/graphics/entity/small-electric-pole/electric-pole-radius-visualization.png",
width = 12,
height = 12,
priority = "extra-high-no-scale"
}
}
})
for i=1,10 do
local drainCrystalAttributes = {
name = "crystal-v" .. i,
drain = i * 300 .. "kW",
scale = (i * 0.1) + 0.5,
health = 100 * i
}
makeDrainCrystal(drainCrystalAttributes)
end
end
return energyThief

View File

@ -605,7 +605,7 @@ function spawner.addFaction()
attack = {
type = "projectile",
softSmokeName = softSmoke,
triggerCreated = true,
triggerCreated = false,
directionOnly = true,
sourceEffect = function (attributes)
return
@ -700,7 +700,7 @@ function spawner.addFaction()
},
attack = {
type = "projectile",
triggerCreated = true,
triggerCreated = false,
softSmokeName = softSmoke
},
resistances = {},

View File

@ -1,8 +1,8 @@
-- module code
local function generateLocal()
function generateLocal()
-- local names = {"Alpha", "Beta", "Gamma", "Delta", "Epsilon", "Zeta", "Eta", "Theta", "Iota", "Kappa", "Lambda", "Mu", "Nu", "Xi", "Omicron", "Pi", "Rho", "Sigma", "Tau", "Upsilon", "Phi", "Chi", "Psi", "Omega"}
local names = {"Neutral", "Acid", "Physical", "Electric", "Suicide", "Nuclear", "Fire", "Inferno", "Troll", "Fast", "Laser", "Wasp", "Spawner", "Xi", "Omicron", "Pi", "Rho", "Sigma", "Tau", "Upsilon", "Phi", "Chi", "Psi", "Omega"}
local names = {"Neutral", "Acid", "Physical", "Electric", "Suicide", "Nuclear", "Fire", "Inferno", "Troll", "Fast", "Laser", "Wasp", "Spawner", "Energy Thief", "Omicron", "Pi", "Rho", "Sigma", "Tau", "Upsilon", "Phi", "Chi", "Psi", "Omega"}
local sizes = {"Larva", "Pupae", "Worker", "Grunt", "Soldier", "General", "Overlord", "Titan", "Leviathan", "Juggernaut"}
print("[entity-name]")
@ -175,5 +175,16 @@ local function generateLocal()
end
end
name = names[14]
for t = 1, 10 do
local size = sizes[t]
for v = 1, 20 do
print("energy-thief-biter-v" .. v .. "-t" .. t .. "-rampant=" .. name .. " biter: " .. size .. " class")
print("energy-thief-biter-nest-v" .. v .. "-t" .. t .. "-rampant=" .. name .. " biter nest: " .. size .. " class")
print("energy-thief-worm-v" .. v .. "-t" .. t .. "-rampant=" .. name .. " worm: " .. size .. " class")
end
end
end

86
prototypes/utils/ThiefUtils.lua Executable file
View File

@ -0,0 +1,86 @@
local thiefUtils = {}
-- module code
function thiefUtils.makeDrainCrystal(attributes)
local name = attributes.name .. "-drain-rampant"
local itemName = attributes.name .. "-item-drain-rampant"
data:extend({
{
type = "item",
name = itemName,
icon = "__Rampant__/graphics/icons/thief/crystal-drain.png",
icon_size = 32,
flags = {"goes-to-quickbar"},
subgroup = "energy",
order = "e[accumulator]-a[accumulator]",
place_result = name,
stack_size = 50
},
{
type = "radar",
name = name,
icon = "__Rampant__/graphics/icons/thief/crystal-drain.png",
icon_size = 32,
flags = {"placeable-enemy"},
minable = {hardness = 0.2, mining_time = 0.5, result = itemName},
max_health = attributes.health or 500,
corpse = "small-remnants",
collision_box = {{-0.9 * attributes.scale, -0.9 * attributes.scale}, {0.9 * attributes.scale, 0.9 * attributes.scale}},
selection_box = {{-1.1 * attributes.scale, -1.1 * attributes.scale}, {1.1 * attributes.scale, 1.1 * attributes.scale}},
energy_per_sector = "100MJ",
max_distance_of_sector_revealed = 0,
max_distance_of_nearby_sector_revealed = 0,
energy_per_nearby_scan = "750kJ",
resistances = {
{
type = "fire",
percent = 100
},
{
type = "electric",
percent = 100
},
{
type = "laser",
percent = 100
}
},
energy_source =
{
type = "electric",
usage_priority = "primary-input"
},
energy_usage = attributes.drain or "500kW",
pictures =
{
filename = "__Rampant__/graphics/entities/thief/crystal-drain.png",
priority = "low",
width = 128,
height = 128,
scale = attributes.scale,
apply_projection = false,
direction_count = 32,
animation_speed = 0.5,
line_length = 8,
shift = {0.65, 0}
},
vehicle_impact_sound = { filename = "__base__/sound/car-metal-impact.ogg", volume = 0.65 },
working_sound =
{
sound = {
{
filename = "__base__/sound/accumulator-working.ogg"
}
},
apparent_volume = 2,
},
radius_minimap_visualisation_color = { r = 0.059, g = 0.092, b = 0.8, a = 0.275 },
}
})
return
end
return thiefUtils

View File

@ -463,6 +463,15 @@ data:extend({
per_user = false
},
{
type = "bool-setting",
name = "rampant-energyThiefEnemy",
setting_type = "startup",
default_value = true,
order = "l[modifier]-x[unit]",
per_user = false
},
{
type = "bool-setting",
name = "rampant-disableVanillaAI",