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:
parent
791f4c3c23
commit
b2e7412f02
@ -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
|
||||
|
89
control.lua
89
control.lua
@ -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)
|
||||
|
||||
|
@ -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
|
||||
|
BIN
graphics/entities/thief/crystal-drain-pole.png
Executable file
BIN
graphics/entities/thief/crystal-drain-pole.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 70 KiB |
BIN
graphics/entities/thief/crystal-drain.png
Executable file
BIN
graphics/entities/thief/crystal-drain.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 181 KiB |
BIN
graphics/entities/tunnel/tunnelEntrance.png
Executable file
BIN
graphics/entities/tunnel/tunnelEntrance.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 18 KiB |
BIN
graphics/icons/thief/crystal-drain-pole.png
Executable file
BIN
graphics/icons/thief/crystal-drain-pole.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 2.3 KiB |
BIN
graphics/icons/thief/crystal-drain.png
Executable file
BIN
graphics/icons/thief/crystal-drain.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 2.8 KiB |
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
53
libs/UnitUtils.lua
Executable 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
|
@ -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
598
prototypes/EnergyThief.lua
Executable 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
|
@ -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 = {},
|
||||
|
@ -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
86
prototypes/utils/ThiefUtils.lua
Executable 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
|
@ -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",
|
||||
|
Loading…
Reference in New Issue
Block a user