diff --git a/Upgrade.lua b/Upgrade.lua index 85b76eed..746d2b9b 100755 --- a/Upgrade.lua +++ b/Upgrade.lua @@ -324,14 +324,19 @@ end function upgrade.attempt(universe) local starting = global.version - if not global.version or global.version < 106 then - global.version = 106 + if not global.version or global.version < 114 then + global.version = 114 + + if not universe then + universe = {} + global.universe = universe + end game.forces.enemy.kill_all_units() universe.safeEntities = {} - universe.aiPointsScaler = settings.global["rampant-aiPointsScaler"].value - universe.aiNocturnalMode = settings.global["rampant-permanentNocturnal"].value + universe.aiPointsScaler = settings.global["rampant--aiPointsScaler"].value + universe.aiNocturnalMode = settings.global["rampant--permanentNocturnal"].value universe.retreatThreshold = 0 universe.rallyThreshold = 0 @@ -341,7 +346,7 @@ function upgrade.attempt(universe) universe.attackWaveUpperBound = 0 universe.unitRefundAmount = 0 universe.regroupIndex = 1 - universe.randomGenerator = game.create_random_generator(settings.startup["rampant-enemySeed"].value+1024) + universe.randomGenerator = game.create_random_generator(settings.startup["rampant--enemySeed"].value+1024) game.map_settings.path_finder.min_steps_to_check_path_find_termination = constants.PATH_FINDER_MIN_STEPS_TO_CHECK_PATH @@ -363,7 +368,7 @@ function upgrade.attempt(universe) universe.settlerWaveDeviation = 0 universe.settlerWaveSize = 0 - universe.enabledMigration = universe.expansion and settings.global["rampant-enableMigration"].value + universe.enabledMigration = universe.expansion and settings.global["rampant--enableMigration"].value universe.enemyAlignmentLookup = {} @@ -375,30 +380,24 @@ function upgrade.attempt(universe) game.map_settings.unit_group.max_group_slowdown_factor = constants.UNIT_GROUP_SLOWDOWN_FACTOR game.map_settings.max_failed_behavior_count = 3 - - universe.ENEMY_VARIATIONS = settings.startup["rampant-newEnemyVariations"].value + game.map_settings.unit_group.member_disown_distance = 10 + game.map_settings.unit_group.tick_tolerance_when_member_arrives = 60 + game.forces.enemy.ai_controllable = true universe.evolutionLevel = game.forces.enemy.evolution_factor - end - if (global.version < 113) then - global.version = 113 - global.pendingChunks = nil - - game.map_settings.unit_group.member_disown_distance = 10 - game.map_settings.unit_group.tick_tolerance_when_member_arrives = 60 + global.natives = nil + global.map = nil universe.builderCount = 0 universe.squadCount = 0 - game.forces.enemy.ai_controllable = true - addCommandSet(universe) game.print("Rampant - Version 1.0.3") end - return starting ~= global.version + return (starting ~= global.version) and global.version end function upgrade.compareTable(entities, option, new) diff --git a/changelog.txt b/changelog.txt index ec509d7a..ddcbe4ab 100755 --- a/changelog.txt +++ b/changelog.txt @@ -3,6 +3,8 @@ Version: 1.0.3 Date: 06. 02. 2021 Improvements: - AI temperament logic now will calm down after you destroy enough units and/or nests + - Rampant now functions on all surfaces + - Rampant no longer clears surface information on mod changes Tweaks: - Reduced spitter range by 2 across all new enemy tiers - Increased spitter projectile collision box by 5x @@ -25,7 +27,7 @@ Date: 06. 02. 2021 - Fixed potential desync in unit group creation event - Fixed potential desync in building native tables - Fixed find entity upgrade incorrectly calculating evolution - + - Fixed bug with the mod new game+ --------------------------------------------------------------------------------------------------- Version: 1.0.2 diff --git a/control.lua b/control.lua index f7cb97d8..0de18b04 100755 --- a/control.lua +++ b/control.lua @@ -20,6 +20,7 @@ local chunkUtils = require("libs/ChunkUtils") local upgrade = require("Upgrade") local config = require("config") local aiPredicates = require("libs/AIPredicates") +local stringUtils = require("libs/StringUtils") -- constants @@ -43,6 +44,8 @@ local ENERGY_THIEF_LOOKUP = constants.ENERGY_THIEF_LOOKUP -- imported functions +local isRampantSetting = stringUtils.isRampantSetting + local canMigrate = aiPredicates.canMigrate local convertTypeToDrainCrystal = unitUtils.convertTypeToDrainCrystal @@ -158,41 +161,35 @@ end local function onModSettingsChange(event) - if event and ((string.sub(event.setting, 1, 7) ~= "rampant") or - (string.sub(event.setting, 1, 15) == "rampant-arsenal") or - (string.sub(event.setting, 1, 17) == "rampant-resources") or - (string.sub(event.setting, 1, 17) == "rampant-evolution") or - (string.sub(event.setting, 1, 19) == "rampant-maintenance") or - (string.sub(event.setting, 1, 16) == "rampant-industry")) - then - return false + if not isRampantSetting(event.setting) then + return end upgrade.compareTable(universe, "safeBuildings", - settings.global["rampant-safeBuildings"].value) + settings.global["rampant--safeBuildings"].value) upgrade.compareTable(universe.safeEntities, "curved-rail", - settings.global["rampant-safeBuildings-curvedRail"].value) + settings.global["rampant--safeBuildings-curvedRail"].value) upgrade.compareTable(universe.safeEntities, "straight-rail", - settings.global["rampant-safeBuildings-straightRail"].value) + settings.global["rampant--safeBuildings-straightRail"].value) upgrade.compareTable(universe.safeEntities, "rail-signal", - settings.global["rampant-safeBuildings-railSignals"].value) + settings.global["rampant--safeBuildings-railSignals"].value) upgrade.compareTable(universe.safeEntities, "rail-chain-signal", - settings.global["rampant-safeBuildings-railChainSignals"].value) + settings.global["rampant--safeBuildings-railChainSignals"].value) upgrade.compareTable(universe.safeEntities, "train-stop", - settings.global["rampant-safeBuildings-trainStops"].value) + settings.global["rampant--safeBuildings-trainStops"].value) upgrade.compareTable(universe.safeEntities, "lamp", - settings.global["rampant-safeBuildings-lamps"].value) + settings.global["rampant--safeBuildings-lamps"].value) local changed, newValue = upgrade.compareTable(universe.safeEntities, "big-electric-pole", - settings.global["rampant-safeBuildings-bigElectricPole"].value) + settings.global["rampant--safeBuildings-bigElectricPole"].value) if changed then universe.safeEntities["big-electric-pole"] = newValue universe.safeEntities["big-electric-pole-2"] = newValue @@ -206,45 +203,45 @@ local function onModSettingsChange(event) upgrade.compareTable(universe, "deadZoneFrequency", - settings.global["rampant-deadZoneFrequency"].value) + settings.global["rampant--deadZoneFrequency"].value) upgrade.compareTable(universe, "raidAIToggle", - settings.global["rampant-raidAIToggle"].value) + settings.global["rampant--raidAIToggle"].value) upgrade.compareTable(universe, "siegeAIToggle", - settings.global["rampant-siegeAIToggle"].value) + settings.global["rampant--siegeAIToggle"].value) upgrade.compareTable(universe, "attackPlayerThreshold", - settings.global["rampant-attackPlayerThreshold"].value) + settings.global["rampant--attackPlayerThreshold"].value) upgrade.compareTable(universe, "attackUsePlayer", - settings.global["rampant-attackWaveGenerationUsePlayerProximity"].value) + settings.global["rampant--attackWaveGenerationUsePlayerProximity"].value) upgrade.compareTable(universe, "attackWaveMaxSize", - settings.global["rampant-attackWaveMaxSize"].value) + settings.global["rampant--attackWaveMaxSize"].value) upgrade.compareTable(universe, "aiNocturnalMode", - settings.global["rampant-permanentNocturnal"].value) + settings.global["rampant--permanentNocturnal"].value) upgrade.compareTable(universe, "aiPointsScaler", - settings.global["rampant-aiPointsScaler"].value) + settings.global["rampant--aiPointsScaler"].value) - universe.enabledMigration = universe.expansion and settings.global["rampant-enableMigration"].value + universe.enabledMigration = universe.expansion and settings.global["rampant--enableMigration"].value upgrade.compareTable(universe, "AI_MAX_SQUAD_COUNT", - settings.global["rampant-maxNumberOfSquads"].value) + settings.global["rampant--maxNumberOfSquads"].value) upgrade.compareTable(universe, "AI_MAX_BUILDER_COUNT", - settings.global["rampant-maxNumberOfBuilders"].value) + settings.global["rampant--maxNumberOfBuilders"].value) return true end -local function prepWorld(surface) - surface.print("Rampant - Indexing chunks, please wait.") +local function prepMap(surface) + surface.print("Rampant - Indexing surface:" .. tostring(surface.index) .. ", please wait.") local surfaceIndex = surface.index @@ -258,7 +255,6 @@ local function prepWorld(surface) universe.maps[surfaceIndex] = map end - map.totalChunks = 0 map.processedChunks = 0 map.mapIterator = nil map.processQueue = {} @@ -373,19 +369,94 @@ local function prepWorld(surface) end local function onConfigChanged() - if upgrade.attempt(universe) then - onModSettingsChange(nil) + local version = upgrade.attempt(universe) + if version then + if not universe then + universe = global.universe + end + + upgrade.compareTable(universe, + "safeBuildings", + settings.global["rampant--safeBuildings"].value) + upgrade.compareTable(universe.safeEntities, + "curved-rail", + settings.global["rampant--safeBuildings-curvedRail"].value) + upgrade.compareTable(universe.safeEntities, + "straight-rail", + settings.global["rampant--safeBuildings-straightRail"].value) + upgrade.compareTable(universe.safeEntities, + "rail-signal", + settings.global["rampant--safeBuildings-railSignals"].value) + upgrade.compareTable(universe.safeEntities, + "rail-chain-signal", + settings.global["rampant--safeBuildings-railChainSignals"].value) + upgrade.compareTable(universe.safeEntities, + "train-stop", + settings.global["rampant--safeBuildings-trainStops"].value) + upgrade.compareTable(universe.safeEntities, + "lamp", + settings.global["rampant--safeBuildings-lamps"].value) + + local changed, newValue = upgrade.compareTable(universe.safeEntities, + "big-electric-pole", + settings.global["rampant--safeBuildings-bigElectricPole"].value) + if changed then + universe.safeEntities["big-electric-pole"] = newValue + universe.safeEntities["big-electric-pole-2"] = newValue + universe.safeEntities["big-electric-pole-3"] = newValue + universe.safeEntities["big-electric-pole-4"] = newValue + universe.safeEntities["lighted-big-electric-pole-4"] = newValue + universe.safeEntities["lighted-big-electric-pole-3"] = newValue + universe.safeEntities["lighted-big-electric-pole-2"] = newValue + universe.safeEntities["lighted-big-electric-pole"] = newValue + end + + upgrade.compareTable(universe, + "deadZoneFrequency", + settings.global["rampant--deadZoneFrequency"].value) + upgrade.compareTable(universe, + "raidAIToggle", + settings.global["rampant--raidAIToggle"].value) + upgrade.compareTable(universe, + "siegeAIToggle", + settings.global["rampant--siegeAIToggle"].value) + + upgrade.compareTable(universe, + "attackPlayerThreshold", + settings.global["rampant--attackPlayerThreshold"].value) + upgrade.compareTable(universe, + "attackUsePlayer", + settings.global["rampant--attackWaveGenerationUsePlayerProximity"].value) + + upgrade.compareTable(universe, + "attackWaveMaxSize", + settings.global["rampant--attackWaveMaxSize"].value) + upgrade.compareTable(universe, + "aiNocturnalMode", + settings.global["rampant--permanentNocturnal"].value) + upgrade.compareTable(universe, + "aiPointsScaler", + settings.global["rampant--aiPointsScaler"].value) + + universe.enabledMigration = universe.expansion and settings.global["rampant--enableMigration"].value + + upgrade.compareTable(universe, + "AI_MAX_SQUAD_COUNT", + settings.global["rampant--maxNumberOfSquads"].value) + upgrade.compareTable(universe, + "AI_MAX_BUILDER_COUNT", + settings.global["rampant--maxNumberOfBuilders"].value) end upgrade.compareTable(universe, "ENEMY_SEED", - settings.startup["rampant-enemySeed"].value) + settings.startup["rampant--enemySeed"].value) upgrade.compareTable(universe, "ENEMY_VARIATIONS", - settings.startup["rampant-newEnemyVariations"].value) + settings.startup["rampant--newEnemyVariations"].value) upgrade.compareTable(universe, "NEW_ENEMIES", - settings.startup["rampant-newEnemies"].value) + settings.startup["rampant--newEnemies"].value) if universe.NEW_ENEMIES then rebuildNativeTables(universe, game.create_random_generator(universe.ENEMY_SEED)) @@ -398,6 +469,12 @@ local function onConfigChanged() universe.buildingHiveTypeLookup["big-worm-turret"] = "turret" universe.buildingHiveTypeLookup["behemoth-worm-turret"] = "turret" end + + if version and (version <= 114) then + for _,surface in pairs(game.surfaces) do + prepMap(surface) + end + end end local function onBuild(event) @@ -455,7 +532,7 @@ local function onDeath(event) -- drop death pheromone where unit died deathScent(map, chunk) - if (-getDeathGenerator(map, chunk) < -map.retreatThreshold) and cause and cause.valid then + if (-getDeathGenerator(map, chunk) < -universe.retreatThreshold) and cause and cause.valid then retreatUnits(chunk, cause, map, @@ -465,7 +542,7 @@ local function onDeath(event) map.lostEnemyUnits = map.lostEnemyUnits + 1 - if (mRandom() < map.rallyThreshold) and not surface.peaceful_mode then + if (mRandom() < universe.rallyThreshold) and not surface.peaceful_mode then rallyUnits(chunk, map, tick) end end @@ -735,7 +812,6 @@ local function onInit() hookEvents() onConfigChanged() - prepWorld(game.surfaces["nauvis"]) end local function onEntitySpawned(event) @@ -883,17 +959,15 @@ local function onForceMerged(event) end local function onSurfaceCreated(event) - -end - -local function onSurfaceCleared(event) - local surfaceIndex = event.surface_index - -- universe.maps[surfaceIndex] = nil - -- universe[surfaceIndex] = nil + print("new surface", event.surface_index) + prepMap(game.surfaces[event.surface_index]) end local function onSurfaceDeleted(event) local surfaceIndex = event.surface_index + if (universe.mapIterator == surfaceIndex) then + universe.mapIterator, universe.activeMap = next(universe.maps, universe.mapIterator) + end universe.maps[surfaceIndex] = nil end @@ -923,21 +997,15 @@ script.on_event(defines.events.on_tick, local pick = tick % 7 -- local profiler = game.create_profiler() + local map = universe.activeMap - if (not map) or (map.processedChunks > #map.processQueue) then - print("swapping map", map, universe.mapIterator) + if (not map) or (universe.processedChunks > #map.processQueue) then universe.mapIterator, map = next(universe.maps, universe.mapIterator) - if map then - print("existing map", map, universe.mapIterator) - map.processedChunks = 0 - universe.activeMap = map - else - print("grabbing next map", map, universe.mapIterator) + if not map then universe.mapIterator, map = next(universe.maps, universe.mapIterator) - map.processedChunks = 0 - universe.activeMap = map end - + universe.processedChunks = 0 + universe.activeMap = map end if (pick == 0) then @@ -948,7 +1016,7 @@ script.on_event(defines.events.on_tick, cleanUpMapTables(map, tick) elseif (pick == 2) then processMap(map, tick) - map.processChunks = map.processChunks + PROCESS_QUEUE_SIZE + universe.processedChunks = universe.processedChunks + PROCESS_QUEUE_SIZE planning(map, gameRef.forces.enemy.evolution_factor, tick) if universe.NEW_ENEMIES then recycleBases(map, tick) @@ -970,11 +1038,13 @@ script.on_event(defines.events.on_tick, end processActiveNests(map, tick) + -- game.print({"", "--dispatch4 ", profiler, ", ", game.tick, " ", mRandom()}) end) -script.on_event(defines.events.on_surface_cleared, onSurfaceCleared) script.on_event(defines.events.on_surface_deleted, onSurfaceDeleted) +script.on_event(defines.events.on_surface_cleared, onSurfaceCreated) +script.on_event(defines.events.on_surface_created, onSurfaceCreated) script.on_init(onInit) script.on_load(onLoad) diff --git a/data-final-fixes.lua b/data-final-fixes.lua index f64fafc1..d278ab55 100755 --- a/data-final-fixes.lua +++ b/data-final-fixes.lua @@ -3,14 +3,14 @@ local vanillaBuildings = require("prototypes/buildings/UpdatesVanilla") local swarmUtils = require("prototypes/SwarmUtils") -if settings.startup["rampant-newEnemies"].value then +if settings.startup["rampant--newEnemies"].value then swarmUtils.processFactions() swarmUtils.generateSpawnerProxy(data.raw["unit-spawner"]["neutral-biter-spawner-v1-t10-rampant"].result_units) else swarmUtils.generateSpawnerProxy(data.raw["unit-spawner"]["biter-spawner"].result_units) end -if settings.startup["rampant-removeBloodParticles"].value then +if settings.startup["rampant--removeBloodParticles"].value then local explosions = data.raw["explosion"] for k,v in pairs(explosions) do @@ -20,7 +20,7 @@ if settings.startup["rampant-removeBloodParticles"].value then end end -if settings.startup["rampant-unitSpawnerBreath"].value then +if settings.startup["rampant--unitSpawnerBreath"].value then for _, unitSpawner in pairs(data.raw["unit-spawner"]) do if (string.find(unitSpawner.name, "hive") or string.find(unitSpawner.name, "biter") or string.find(unitSpawner.name, "spitter")) then @@ -35,14 +35,14 @@ end for k, unit in pairs(data.raw["unit"]) do if (string.find(k, "biter") or string.find(k, "spitter")) and unit.collision_box then - if settings.startup["rampant-enableSwarm"].value then + if settings.startup["rampant--enableSwarm"].value then unit.collision_box = { {unit.collision_box[1][1] * 0.20, unit.collision_box[1][2] * 0.20}, {unit.collision_box[2][1] * 0.20, unit.collision_box[2][2] * 0.20} } end - unit.affected_by_tiles = settings.startup["rampant-unitsAffectedByTiles"].value + unit.affected_by_tiles = settings.startup["rampant--unitsAffectedByTiles"].value unit.ai_settings = { destroy_when_commands_fail = false, @@ -53,7 +53,7 @@ for k, unit in pairs(data.raw["unit"]) do end end -if settings.startup["rampant-enableShrinkNestsAndWorms"].value then +if settings.startup["rampant--enableShrinkNestsAndWorms"].value then for k, unit in pairs(data.raw["unit-spawner"]) do if (string.find(k, "biter") or string.find(k, "spitter") or string.find(k, "hive")) and unit.collision_box then unit.collision_box = { @@ -73,12 +73,12 @@ if settings.startup["rampant-enableShrinkNestsAndWorms"].value then end end --- if not settings.startup["rampant-newEnemies"].value then +-- if not settings.startup["rampant--newEnemies"].value then -- unit = data.raw["unit"]["small-biter"] -- if string.find(k, "biter") then --- unit.max_health = unit.max_health * settings.startup["rampant-unitBiterHealthScaler"].value --- unit.max_health = unit.healing_per_tick * settings.startup["rampant-unitBiterHealingScaler"].value --- unit.range = unit.range * settings.startup["rampant-unitBiterRangeScaler"].value +-- unit.max_health = unit.max_health * settings.startup["rampant--unitBiterHealthScaler"].value +-- unit.max_health = unit.healing_per_tick * settings.startup["rampant--unitBiterHealingScaler"].value +-- unit.range = unit.range * settings.startup["rampant--unitBiterRangeScaler"].value -- else if string.find(k, "spitter") then @@ -97,15 +97,15 @@ end -- end -- end -if settings.startup["rampant-enableFadeTime"].value then +if settings.startup["rampant--enableFadeTime"].value then for k, corpse in pairs(data.raw["corpse"]) do if (string.find(k, "biter") or string.find(k, "spitter") or string.find(k, "hive") or string.find(k, "worm") or string.find(k, "spawner")) then - corpse.time_before_removed = settings.startup["rampant-unitAndSpawnerFadeTime"].value * 60 + corpse.time_before_removed = settings.startup["rampant--unitAndSpawnerFadeTime"].value * 60 end end end -if settings.startup["rampant-addWallResistanceAcid"].value then +if settings.startup["rampant--addWallResistanceAcid"].value then vanillaBuildings.addWallAcidResistance() end diff --git a/data-updates.lua b/data-updates.lua index e53c455d..3eaab4b1 100755 --- a/data-updates.lua +++ b/data-updates.lua @@ -2,7 +2,7 @@ local vanillaUpdates = require("prototypes/utils/UpdatesVanilla") local attackBall = require("prototypes/utils/AttackBall") local constants = require("libs/Constants") -if settings.startup["rampant-useDumbProjectiles"].value or settings.startup["rampant-newEnemies"].value then +if settings.startup["rampant--useDumbProjectiles"].value or settings.startup["rampant--newEnemies"].value then attackBall.generateVanilla() vanillaUpdates.useDumbProjectiles() end @@ -13,7 +13,7 @@ for _, robot in pairs(data.raw["logistic-robot"]) do -- end -- robot.collision_mask[#robot.collision_mask+1] = "layer-13" - if (settings.startup["rampant-unkillableLogisticRobots"].value) then + if (settings.startup["rampant--unkillableLogisticRobots"].value) then robot.resistances = {} for damageType, _ in pairs(data.raw["damage-type"]) do robot.resistances[damageType] = { @@ -30,7 +30,7 @@ for _, robot in pairs(data.raw["construction-robot"]) do -- end -- robot.collision_mask[#robot.collision_mask+1] = "layer-13" - if (settings.startup["rampant-unkillableConstructionRobots"].value) then + if (settings.startup["rampant--unkillableConstructionRobots"].value) then robot.resistances = {} for damageType, _ in pairs(data.raw["damage-type"]) do robot.resistances[damageType] = { diff --git a/libs/AIAttackWave.lua b/libs/AIAttackWave.lua index 461b2eb4..bfc8e4af 100755 --- a/libs/AIAttackWave.lua +++ b/libs/AIAttackWave.lua @@ -206,7 +206,7 @@ function aiAttackWave.formSettlers(map, chunk) local squadPosition = surface.find_non_colliding_position("chunk-scanner-squad-rampant", positionFromDirectionAndChunk(squadDirection, chunk, - map.position, + universe.position, 0.98), CHUNK_SIZE, 4, @@ -221,11 +221,11 @@ function aiAttackWave.formSettlers(map, chunk) local scaledWaveSize = settlerWaveScaling(universe) - map.formGroupCommand.group = squad.group - map.formCommand.unit_count = scaledWaveSize - local foundUnits = surface.set_multi_command(map.formCommand) + universe.formGroupCommand.group = squad.group + universe.formCommand.unit_count = scaledWaveSize + local foundUnits = surface.set_multi_command(universe.formCommand) if (foundUnits > 0) then - squad.kamikaze = mRandom() < calculateKamikazeThreshold(foundUnits, map) + squad.kamikaze = mRandom() < calculateKamikazeThreshold(foundUnits, universe) universe.builderCount = universe.builderCount + 1 map.points = map.points - AI_SETTLER_COST map.groupNumberToSquad[squad.groupNumber] = squad @@ -254,7 +254,7 @@ function aiAttackWave.formVengenceSquad(map, chunk) local squadPosition = surface.find_non_colliding_position("chunk-scanner-squad-rampant", positionFromDirectionAndChunk(squadDirection, chunk, - map.position, + universe.position, 0.98), CHUNK_SIZE, 4, @@ -265,11 +265,11 @@ function aiAttackWave.formVengenceSquad(map, chunk) squad.rabid = mRandom() < 0.03 local scaledWaveSize = attackWaveScaling(universe) - map.formGroupCommand.group = squad.group - map.formCommand.unit_count = scaledWaveSize - local foundUnits = surface.set_multi_command(map.formCommand) + universe.formGroupCommand.group = squad.group + universe.formCommand.unit_count = scaledWaveSize + local foundUnits = surface.set_multi_command(universe.formCommand) if (foundUnits > 0) then - squad.kamikaze = mRandom() < calculateKamikazeThreshold(foundUnits, map) + squad.kamikaze = mRandom() < calculateKamikazeThreshold(foundUnits, universe) map.groupNumberToSquad[squad.groupNumber] = squad universe.squadCount = universe.squadCount + 1 map.points = map.points - AI_VENGENCE_SQUAD_COST @@ -299,7 +299,7 @@ function aiAttackWave.formSquads(map, chunk, tick) local squadPosition = surface.find_non_colliding_position("chunk-scanner-squad-rampant", positionFromDirectionAndChunk(squadDirection, chunk, - map.position, + universe.position, 0.98), CHUNK_SIZE, 4, @@ -310,11 +310,11 @@ function aiAttackWave.formSquads(map, chunk, tick) squad.rabid = mRandom() < 0.03 local scaledWaveSize = attackWaveScaling(universe) - map.formGroupCommand.group = squad.group - map.formCommand.unit_count = scaledWaveSize - local foundUnits = surface.set_multi_command(map.formCommand) + universe.formGroupCommand.group = squad.group + universe.formCommand.unit_count = scaledWaveSize + local foundUnits = surface.set_multi_command(universe.formCommand) if (foundUnits > 0) then - squad.kamikaze = mRandom() < calculateKamikazeThreshold(foundUnits, map) + squad.kamikaze = mRandom() < calculateKamikazeThreshold(foundUnits, universe) map.points = map.points - AI_SQUAD_COST universe.squadCount = universe.squadCount + 1 map.groupNumberToSquad[squad.groupNumber] = squad diff --git a/libs/AIPlanning.lua b/libs/AIPlanning.lua index affcd60f..0992766c 100755 --- a/libs/AIPlanning.lua +++ b/libs/AIPlanning.lua @@ -77,7 +77,6 @@ function aiPlanning.planning(map, evolution_factor, tick) universe.formSquadThreshold = mMax((0.20 * evolution_factor), 0.05) universe.attackWaveSize = attackWaveMaxSize * (evolution_factor ^ 1.4) - map.attackWaveSize = universe.attackWaveSize universe.attackWaveDeviation = (universe.attackWaveSize * 0.333) universe.attackWaveUpperBound = universe.attackWaveSize + (universe.attackWaveSize * 0.35) @@ -364,10 +363,10 @@ function aiPlanning.temperamentPlanner(map) delta = delta + val end - print("temperament", map.activeNests, map.activeRaidNests, map.destroyPlayerBuildings, - map.lostEnemyUnits, - map.lostEnemyBuilding, map.rocketLaunched, map.builtEnemyBuilding, map.ionCannonBlasts, - map.artilleryBlasts) + -- print("temperament", map.activeNests, map.activeRaidNests, map.destroyPlayerBuildings, + -- map.lostEnemyUnits, + -- map.lostEnemyBuilding, map.rocketLaunched, map.builtEnemyBuilding, map.ionCannonBlasts, + -- map.artilleryBlasts) -- map.destroyPlayerBuildings = 0 -- map.lostEnemyUnits = 0 @@ -380,8 +379,8 @@ function aiPlanning.temperamentPlanner(map) map.temperamentScore = mMin(10000, mMax(-10000, currentTemperament + delta)) map.temperament = ((map.temperamentScore + 10000) * 0.00005) - print("tempResult", map.temperament, map.temperamentScore) - print("--") + -- print("tempResult", map.temperament, map.temperamentScore) + -- print("--") end aiPlanningG = aiPlanning diff --git a/libs/ChunkUtils.lua b/libs/ChunkUtils.lua index ed1f964d..ab84895f 100755 --- a/libs/ChunkUtils.lua +++ b/libs/ChunkUtils.lua @@ -244,7 +244,7 @@ function chunkUtils.initialScan(chunk, map, tick) for i = 1, #enemyBuildings do local enemyBuilding = enemyBuildings[i] - if not isRampant(enemyBuilding.name) then + if not buildingHiveTypeLookup[enemyBuilding.name] then local newEntity = upgradeEntity(enemyBuilding, surface, alignment, map, nil, true) if newEntity then local hiveType = buildingHiveTypeLookup[newEntity.name] diff --git a/libs/Constants.lua b/libs/Constants.lua index d0068f06..3951d7e9 100755 --- a/libs/Constants.lua +++ b/libs/Constants.lua @@ -435,8 +435,8 @@ end local tiers10 = {} -local tierStart = settings.startup["rampant-tierStart"].value -local tierEnd = settings.startup["rampant-tierEnd"].value +local tierStart = settings.startup["rampant--tierStart"].value +local tierEnd = settings.startup["rampant--tierEnd"].value local function buildTier(size, tiers) local step = (tierEnd - tierStart) / (size - 1) @@ -451,7 +451,7 @@ buildTier(10, tiers10) constants.TIER_UPGRADE_SET_10 = tiers10 -local variations = settings.startup["rampant-newEnemyVariations"].value +local variations = settings.startup["rampant--newEnemyVariations"].value constants.ENERGY_THIEF_LOOKUP = {} @@ -548,7 +548,7 @@ constants.FACTION_SET[#constants.FACTION_SET+1] = { } } -if settings.startup["rampant-acidEnemy"].value then +if settings.startup["rampant--acidEnemy"].value then constants.FACTION_SET[#constants.FACTION_SET+1] = { type = "acid", tint = {r=1, g=1, b=1, a=1}, @@ -629,7 +629,7 @@ if settings.startup["rampant-acidEnemy"].value then } end -if settings.startup["rampant-laserEnemy"].value then +if settings.startup["rampant--laserEnemy"].value then constants.FACTION_SET[#constants.FACTION_SET+1] = { type = "laser", tint = {r=0.3, g=0.3, b=0.42, a=1}, @@ -704,7 +704,7 @@ if settings.startup["rampant-laserEnemy"].value then } end -if settings.startup["rampant-fireEnemy"].value then +if settings.startup["rampant--fireEnemy"].value then constants.FACTION_SET[#constants.FACTION_SET+1] = { type = "fire", tint = {r=1, g=1, b=1, a=1}, @@ -785,7 +785,7 @@ if settings.startup["rampant-fireEnemy"].value then } end -if settings.startup["rampant-infernoEnemy"].value then +if settings.startup["rampant--infernoEnemy"].value then constants.FACTION_SET[#constants.FACTION_SET+1] = { type = "inferno", tint = {r=0.7, g=0.45, b=0.5, a=1}, @@ -844,7 +844,7 @@ if settings.startup["rampant-infernoEnemy"].value then } end -if settings.startup["rampant-waspEnemy"].value then +if settings.startup["rampant--waspEnemy"].value then constants.FACTION_SET[#constants.FACTION_SET+1] = { type = "wasp", tint = {r=0.6, g=0.9, b=0.9, a=1}, @@ -909,7 +909,7 @@ if settings.startup["rampant-waspEnemy"].value then } end -if settings.startup["rampant-spawnerEnemy"].value then +if settings.startup["rampant--spawnerEnemy"].value then constants.FACTION_SET[#constants.FACTION_SET+1] = { type = "spawner", tint = {r=0.7, g=0, b=0.7, a=1}, @@ -981,7 +981,7 @@ if settings.startup["rampant-spawnerEnemy"].value then } end -if settings.startup["rampant-electricEnemy"].value then +if settings.startup["rampant--electricEnemy"].value then constants.FACTION_SET[#constants.FACTION_SET+1] = { type = "electric", tint = {r=0.7, g=0.7, b=1.0, a=1.0}, @@ -1040,7 +1040,7 @@ if settings.startup["rampant-electricEnemy"].value then } end -if settings.startup["rampant-physicalEnemy"].value then +if settings.startup["rampant--physicalEnemy"].value then constants.FACTION_SET[#constants.FACTION_SET+1] = { type = "physical", tint = {r=0.9, g=0.9, b=0.9, a=1}, @@ -1099,7 +1099,7 @@ if settings.startup["rampant-physicalEnemy"].value then } end -if settings.startup["rampant-trollEnemy"].value then +if settings.startup["rampant--trollEnemy"].value then constants.FACTION_SET[#constants.FACTION_SET+1] = { type = "troll", tint = {r=0.4, g=0.4, b=0.4, a=1}, @@ -1159,7 +1159,7 @@ if settings.startup["rampant-trollEnemy"].value then } end -if settings.startup["rampant-poisonEnemy"].value then +if settings.startup["rampant--poisonEnemy"].value then constants.FACTION_SET[#constants.FACTION_SET+1] = { type = "poison", tint = {r=0.4, g=0.6, b=0.5, a=1}, @@ -1222,7 +1222,7 @@ if settings.startup["rampant-poisonEnemy"].value then } end -if settings.startup["rampant-suicideEnemy"].value then +if settings.startup["rampant--suicideEnemy"].value then constants.FACTION_SET[#constants.FACTION_SET+1] = { type = "suicide", tint = {r=0.8, g=0.8, b=0.8, a=1}, @@ -1281,7 +1281,7 @@ if settings.startup["rampant-suicideEnemy"].value then } end -if settings.startup["rampant-nuclearEnemy"].value then +if settings.startup["rampant--nuclearEnemy"].value then constants.FACTION_SET[#constants.FACTION_SET+1] = { type = "nuclear", tint = {r=0.6, g=0.6, b=0.4, a=1}, @@ -1339,7 +1339,7 @@ if settings.startup["rampant-nuclearEnemy"].value then } end -if settings.startup["rampant-energyThiefEnemy"].value then +if settings.startup["rampant--energyThiefEnemy"].value then constants.FACTION_SET[#constants.FACTION_SET+1] = { type = "energy-thief", tint = {r=0.4, g=0.5, b=0.7, a=1}, @@ -1397,7 +1397,7 @@ if settings.startup["rampant-energyThiefEnemy"].value then } end -if settings.startup["rampant-fastEnemy"].value then +if settings.startup["rampant--fastEnemy"].value then constants.FACTION_SET[#constants.FACTION_SET+1] = { type = "fast", tint = {r=0.26, g=0.66, b=0.62, a=1}, diff --git a/libs/MapProcessor.lua b/libs/MapProcessor.lua index be4e23a0..90fcc22d 100755 --- a/libs/MapProcessor.lua +++ b/libs/MapProcessor.lua @@ -224,6 +224,7 @@ function mapProcessor.processPlayers(players, map, tick) -- put down player pheromone for player hunters -- randomize player order to ensure a single player isn't singled out local allowingAttacks = canAttack(map, tick) + local universe = map.universe -- not looping everyone because the cost is high enough already in multiplayer if (#players > 0) then @@ -235,7 +236,7 @@ function mapProcessor.processPlayers(players, map, tick) local vengence = allowingAttacks and (map.points >= AI_VENGENCE_SQUAD_COST) and ((getEnemyStructureCount(map, playerChunk) > 0) or - (-getDeathGenerator(map, playerChunk) < -map.retreatThreshold)) + (-getDeathGenerator(map, playerChunk) < -universe.retreatThreshold)) for x=playerChunk.x - PROCESS_PLAYER_BOUND, playerChunk.x + PROCESS_PLAYER_BOUND, 32 do for y=playerChunk.y - PROCESS_PLAYER_BOUND, playerChunk.y + PROCESS_PLAYER_BOUND, 32 do diff --git a/libs/SquadAttack.lua b/libs/SquadAttack.lua index dec9a281..4b042a86 100755 --- a/libs/SquadAttack.lua +++ b/libs/SquadAttack.lua @@ -99,8 +99,9 @@ local function scoreAttackKamikazeLocation(_, neighborChunk) end local function settleMove(map, squad) - local targetPosition = map.position - local targetPosition2 = map.position2 + local universe = map.universe + local targetPosition = universe.position + local targetPosition2 = universe.position2 local group = squad.group local groupPosition = group.position @@ -138,7 +139,7 @@ local function settleMove(map, squad) targetPosition.x = position.x targetPosition.y = position.y - cmd = map.settleCommand + cmd = universe.settleCommand if squad.kamikaze then cmd.distraction = DEFINES_DISTRACTION_NONE else @@ -158,11 +159,11 @@ local function settleMove(map, squad) scoreFunction) if (attackChunk == -1) then - cmd = map.wonderCommand + cmd = universe.wonderCommand group.set_command(cmd) return elseif (attackDirection ~= 0) then - local attackPlayerThreshold = map.universe.attackPlayerThreshold + local attackPlayerThreshold = universe.attackPlayerThreshold if (nextAttackChunk ~= -1) then attackChunk = nextAttackChunk @@ -183,7 +184,7 @@ local function settleMove(map, squad) addDeathGenerator(map, attackChunk, TEN_DEATH_PHEROMONE_GENERATOR_AMOUNT) end else - cmd = map.wonderCommand + cmd = universe.wonderCommand group.set_command(cmd) return end @@ -191,7 +192,7 @@ local function settleMove(map, squad) if (getPlayerBaseGenerator(map, attackChunk) ~= 0) or (attackChunk[PLAYER_PHEROMONE] >= attackPlayerThreshold) then - cmd = map.attackCommand + cmd = universe.attackCommand if not squad.rabid then squad.frenzy = true @@ -199,7 +200,7 @@ local function settleMove(map, squad) squad.frenzyPosition.y = groupPosition.y end else - cmd = map.moveCommand + cmd = universe.moveCommand if squad.rabid or squad.kamikaze then cmd.distraction = DEFINES_DISTRACTION_NONE else @@ -207,7 +208,7 @@ local function settleMove(map, squad) end end else - cmd = map.settleCommand + cmd = universe.settleCommand cmd.destination.x = groupPosition.x cmd.destination.y = groupPosition.y @@ -226,8 +227,9 @@ end local function attackMove(map, squad) - local targetPosition = map.position - local targetPosition2 = map.position2 + local universe = map.universe + local targetPosition = universe.position + local targetPosition2 = universe.position2 local group = squad.group @@ -252,7 +254,7 @@ local function attackMove(map, squad) attackScorer) local cmd if (attackChunk == -1) then - cmd = map.wonderCommand + cmd = universe.wonderCommand group.set_command(cmd) return elseif (nextAttackChunk ~= -1) then @@ -266,7 +268,7 @@ local function attackMove(map, squad) end if not position then - cmd = map.wonderCommand + cmd = universe.wonderCommand group.set_command(cmd) return else @@ -280,9 +282,9 @@ local function attackMove(map, squad) end if (getPlayerBaseGenerator(map, attackChunk) ~= 0) and - (attackChunk[PLAYER_PHEROMONE] >= map.universe.attackPlayerThreshold) + (attackChunk[PLAYER_PHEROMONE] >= universe.attackPlayerThreshold) then - cmd = map.attackCommand + cmd = universe.attackCommand if not squad.rabid then squad.frenzy = true @@ -290,7 +292,7 @@ local function attackMove(map, squad) squad.frenzyPosition.y = groupPosition.y end else - cmd = map.moveCommand + cmd = universe.moveCommand if squad.rabid or squad.frenzy then cmd.distraction = DEFINES_DISTRACTION_BY_ANYTHING else @@ -303,7 +305,7 @@ end local function buildMove(map, squad) local group = squad.group - local position = map.position + local position = map.universe.position local groupPosition = findMovementPosition(map.surface, group.position) if not groupPosition then @@ -345,7 +347,7 @@ function squadAttack.cleanSquads(map) squads[k] = nil k = nextK elseif (group.state == 4) then - squadAttack.squadDispatch(map, group.surface, squad, squad.groupNumber) + squadAttack.squadDispatch(map, squad, squad.groupNumber) end end map.squadIterator = k diff --git a/libs/SquadDefense.lua b/libs/SquadDefense.lua index 4f91bc21..6d8b455c 100755 --- a/libs/SquadDefense.lua +++ b/libs/SquadDefense.lua @@ -59,8 +59,9 @@ function aiDefense.retreatUnits(chunk, cause, map, tick, radius) chunk.y), scoreRetreatLocation, map) - local position = map.position - local targetPosition2 = map.position2 + local universe = map.universe + local position = universe.position + local targetPosition2 = universe.position2 local retreatPosition position.x = chunk.x + 16 position.y = chunk.y + 16 @@ -85,7 +86,6 @@ function aiDefense.retreatUnits(chunk, cause, map, tick, radius) end local newSquad = findNearbyRetreatingSquad(map, exitPath) - local universe = map.universe local created = false if not newSquad then @@ -97,12 +97,12 @@ function aiDefense.retreatUnits(chunk, cause, map, tick, radius) end end - map.fleeCommand.from = cause - map.retreatCommand.group = newSquad.group + universe.fleeCommand.from = cause + universe.retreatCommand.group = newSquad.group - map.formRetreatCommand.unit_search_distance = radius + universe.formRetreatCommand.unit_search_distance = radius - local foundUnits = surface.set_multi_command(map.formRetreatCommand) + local foundUnits = surface.set_multi_command(universe.formRetreatCommand) if (foundUnits == 0) then if created then diff --git a/libs/StringUtils.lua b/libs/StringUtils.lua index a8faecbf..6376fb16 100755 --- a/libs/StringUtils.lua +++ b/libs/StringUtils.lua @@ -3,14 +3,10 @@ if stringUtilsG then end local stringUtils = {} -local sFind = string.find +local sSub = string.sub -function stringUtils.isRampant(str) - return sFind(str, "rampant", -#"rampant") -end - -function stringUtils.isSpawnerEgg(str) - return sFind(str, "spawner", -#"spawner") +function stringUtils.isRampantSetting(str) + return sSub(str, 1, #"rampant--") == "rampant--" end stringUtilsG = stringUtils diff --git a/libs/UnitGroupUtils.lua b/libs/UnitGroupUtils.lua index ad96dae3..1e1e3dc5 100755 --- a/libs/UnitGroupUtils.lua +++ b/libs/UnitGroupUtils.lua @@ -104,8 +104,8 @@ function unitGroupUtils.createSquad(position, surface, group, settlers) return squad end -function unitGroupUtils.calculateKamikazeThreshold(memberCount, map) - local threshold = (memberCount / map.attackWaveMaxSize) * 0.2 + (map.evolutionLevel * 0.2) +function unitGroupUtils.calculateKamikazeThreshold(memberCount, universe) + local threshold = (memberCount / universe.attackWaveMaxSize) * 0.2 + (universe.evolutionLevel * 0.2) return threshold end diff --git a/locale/en/locale.cfg b/locale/en/locale.cfg index f30a41c3..2a75efaf 100755 --- a/locale/en/locale.cfg +++ b/locale/en/locale.cfg @@ -18689,211 +18689,205 @@ poison-worm-v20-t10-rampant=Poison worm: Juggernaut class [entity-description] [mod-setting-name] -rampant-unitsAffectedByTiles=World: Units affected by tiles -rampant-oldRedEnemyMapColor=Map: Revert Enemy Map Color -rampant-unitSpawnerBreath=World: Unit Spawners breath air -rampant-useDumbProjectiles=Projectiles: Use blockable projectiles -rampant-attackWaveGenerationThresholdMax=Attack Wave: Starting chunk attack threshold -rampant-attackWaveGenerationThresholdMin=Attack Wave: Ending chunk attack threshold -rampant-attackWaveMaxSize=Attack Wave: Max biter group size that can be directly formed -rampant-maxNumberOfSquads=Attack Wave: Max number of attack groups that can be active at once -rampant-maxNumberOfBuilders=Attack Wave: Max number of building groups that can be active at once -rampant-safeBuildings=Safety: Enable building safety. -rampant-safeBuildings-curvedRail=Safety: Make curved rails safe from biters -rampant-safeBuildings-straightRail=Safety: Make straight rails safe from biters -rampant-safeBuildings-bigElectricPole=Safety: Make big electric poles safe from biters -rampant-safeBuildings-railChainSignals=Safety: Make rail chain signals safe from biters -rampant-safeBuildings-railSignals=Safety: Make rail signals safe from biters -rampant-safeBuildings-trainStops=Safety: Make train stops safe from biters -rampant-permanentNocturnal=Attack Wave: Nocturnal Mode -rampant-aiPointsScaler=Attack Wave: Difficulty Scaling -rampant-addWallResistanceAcid=Safety; Increase wall resistance to spitters -rampant-safeBuildings-lamps=Safety: Make lamps safe from biters -rampant-removeBloodParticles=Optimization: Remove blood particles (Reduces lag spikes) -rampant-attack-warning=Notification: Enable attack wave warnings -rampant-enableSwarm=Attack Wave: Enable the swarm -rampant-newEnemies=World: Enable new enemies -rampant-enemySeed=World: Enemy Random Seed -rampant-deadZoneFrequency=World: Enemy deadzone frequency -rampant-newEnemyVariations=World: Enemy Variations -rampant-enableBobsUnits=World: Enable Bobs as a faction -rampant-enableNEUnits=World: Enable NE as a faction -rampant-disallowFriendlyFire=Safety: Disallow Friendly Fire Splash Damage -rampant-tierStart=World: Beginning enemy level -rampant-tierEnd=World: Ending enemy level -rampant-enableMigration=AI: Enable Migration -# rampant-liteMode=Optimization: Lite mode +rampant--unitsAffectedByTiles=World: Units affected by tiles +rampant--oldRedEnemyMapColor=Map: Revert Enemy Map Color +rampant--unitSpawnerBreath=World: Unit Spawners breath air +rampant--useDumbProjectiles=Projectiles: Use blockable projectiles +rampant--attackWaveGenerationThresholdMax=Attack Wave: Starting chunk attack threshold +rampant--attackWaveGenerationThresholdMin=Attack Wave: Ending chunk attack threshold +rampant--attackWaveMaxSize=Attack Wave: Max biter group size that can be directly formed +rampant--maxNumberOfSquads=Attack Wave: Max number of attack groups that can be active at once +rampant--maxNumberOfBuilders=Attack Wave: Max number of building groups that can be active at once +rampant--safeBuildings=Safety: Enable building safety. +rampant--safeBuildings-curvedRail=Safety: Make curved rails safe from biters +rampant--safeBuildings-straightRail=Safety: Make straight rails safe from biters +rampant--safeBuildings-bigElectricPole=Safety: Make big electric poles safe from biters +rampant--safeBuildings-railChainSignals=Safety: Make rail chain signals safe from biters +rampant--safeBuildings-railSignals=Safety: Make rail signals safe from biters +rampant--safeBuildings-trainStops=Safety: Make train stops safe from biters +rampant--permanentNocturnal=Attack Wave: Nocturnal Mode +rampant--aiPointsScaler=Attack Wave: Difficulty Scaling +rampant--addWallResistanceAcid=Safety; Increase wall resistance to spitters +rampant--safeBuildings-lamps=Safety: Make lamps safe from biters +rampant--removeBloodParticles=Optimization: Remove blood particles (Reduces lag spikes) +rampant--attack-warning=Notification: Enable attack wave warnings +rampant--enableSwarm=Attack Wave: Enable the swarm +rampant--newEnemies=World: Enable new enemies +rampant--enemySeed=World: Enemy Random Seed +rampant--deadZoneFrequency=World: Enemy deadzone frequency +rampant--newEnemyVariations=World: Enemy Variations +rampant--enableBobsUnits=World: Enable Bobs as a faction +rampant--enableNEUnits=World: Enable NE as a faction +rampant--disallowFriendlyFire=Safety: Disallow Friendly Fire Splash Damage +rampant--tierStart=World: Beginning enemy level +rampant--tierEnd=World: Ending enemy level +rampant--enableMigration=AI: Enable Migration +# rampant--liteMode=Optimization: Lite mode -rampant-attackWaveGenerationUsePlayerProximity=Attack Wave: Use Player Proximity as attack trigger -rampant-attackPlayerThreshold=Attack Wave: Player score contribution threshold +rampant--attackWaveGenerationUsePlayerProximity=Attack Wave: Use Player Proximity as attack trigger +rampant--attackPlayerThreshold=Attack Wave: Player score contribution threshold -rampant-unkillableLogisticRobots=World: Unkillable logistic bots -rampant-unkillableConstructionRobots=World: Unkillable construction bots +rampant--unkillableLogisticRobots=World: Unkillable logistic bots +rampant--unkillableConstructionRobots=World: Unkillable construction bots -rampant-unitBiterHealthScaler=Modifier: Biter Health Scaler -rampant-unitBiterSpeedScaler=Modifier: Biter Speed Scaler -rampant-unitBiterDamageScaler=Modifier: Biter Damage Scaler -rampant-unitBiterRangeScaler=Modifier: Biter Range Scaler -rampant-unitBiterHealingScaler=Modifier: Biter Healing Scaler -rampant-unitSpitterHealthScaler=Modifier: Spitter Health Scaler -rampant-unitSpitterSpeedScaler=Modifier: Spitter Speed Scaler -rampant-unitSpitterDamageScaler=Modifier: Spitter Damage Scaler -rampant-unitSpitterRangeScaler=Modifier: Spitter Range Scaler -rampant-unitSpitterHealingScaler=Modifier: Spitter Healing Scaler -rampant-unitDroneHealthScaler=Modifier: Drone Health Scaler -rampant-unitDroneSpeedScaler=Modifier: Drone Speed Scaler -rampant-unitDroneDamageScaler=Modifier: Drone Damage Scaler -rampant-unitDroneRangeScaler=Modifier: Drone Range Scaler -rampant-unitDroneHealingScaler=Modifier: Drone Healing Scaler -rampant-unitWormHealthScaler=Modifier: Worm Health Scaler -rampant-unitWormDamageScaler=Modifier: Worm Damage Scaler -rampant-unitWormRangeScaler=Modifier: Worm Range Scaler -rampant-unitWormHealingScaler=Modifier: Worm Healing Scaler -rampant-unitSpawnerHealthScaler=Modifier: Unit Spawner Health Scaler -rampant-unitSpawnerOwnedScaler=Modifier: Unit Spawner Owned Count Scaler -rampant-unitSpawnerSpawnScaler=Modifier: Unit Spawner Spawn Count Scaler -rampant-unitSpawnerRespawnScaler=Modifier: Unit Spawner Respawn Rate Scaler -rampant-unitSpawnerHealingScaler=Modifier: Unit Spawner Healing Scaler +rampant--unitBiterHealthScaler=Modifier: Biter Health Scaler +rampant--unitBiterSpeedScaler=Modifier: Biter Speed Scaler +rampant--unitBiterDamageScaler=Modifier: Biter Damage Scaler +rampant--unitBiterRangeScaler=Modifier: Biter Range Scaler +rampant--unitBiterHealingScaler=Modifier: Biter Healing Scaler +rampant--unitSpitterHealthScaler=Modifier: Spitter Health Scaler +rampant--unitSpitterSpeedScaler=Modifier: Spitter Speed Scaler +rampant--unitSpitterDamageScaler=Modifier: Spitter Damage Scaler +rampant--unitSpitterRangeScaler=Modifier: Spitter Range Scaler +rampant--unitSpitterHealingScaler=Modifier: Spitter Healing Scaler +rampant--unitDroneHealthScaler=Modifier: Drone Health Scaler +rampant--unitDroneSpeedScaler=Modifier: Drone Speed Scaler +rampant--unitDroneDamageScaler=Modifier: Drone Damage Scaler +rampant--unitDroneRangeScaler=Modifier: Drone Range Scaler +rampant--unitDroneHealingScaler=Modifier: Drone Healing Scaler +rampant--unitWormHealthScaler=Modifier: Worm Health Scaler +rampant--unitWormDamageScaler=Modifier: Worm Damage Scaler +rampant--unitWormRangeScaler=Modifier: Worm Range Scaler +rampant--unitWormHealingScaler=Modifier: Worm Healing Scaler +rampant--unitSpawnerHealthScaler=Modifier: Unit Spawner Health Scaler +rampant--unitSpawnerOwnedScaler=Modifier: Unit Spawner Owned Count Scaler +rampant--unitSpawnerSpawnScaler=Modifier: Unit Spawner Spawn Count Scaler +rampant--unitSpawnerRespawnScaler=Modifier: Unit Spawner Respawn Rate Scaler +rampant--unitSpawnerHealingScaler=Modifier: Unit Spawner Healing Scaler -rampant-unitHiveHealthScaler=Modifier: Hive Health Scaler -rampant-unitHiveHealingScaler=Modifier: Hive Healing Scaler -rampant-unitHiveRespawnScaler=Modifier: Hive Respawn Scaler +rampant--unitHiveHealthScaler=Modifier: Hive Health Scaler +rampant--unitHiveHealingScaler=Modifier: Hive Healing Scaler +rampant--unitHiveRespawnScaler=Modifier: Hive Respawn Scaler -rampant-suppress-surface-change-warnings=Suppress all surface change warnings -# rampant-aiAggressiveness=AI:AI Aggressiveness +# rampant--suppress-surface-change-warnings=Suppress all surface change warnings +# rampant--aiAggressiveness=AI:AI Aggressiveness -rampant-enableShrinkNestsAndWorms=Attack Wave: Shrink Nests and Worms +rampant--enableShrinkNestsAndWorms=Attack Wave: Shrink Nests and Worms -rampant-raidAIToggle=AI: Enable Raiding AI -rampant-siegeAIToggle=AI: Enable Siege AI -# rampant-onslaughtAIToggle=AI: Enable Onslaught AI +rampant--raidAIToggle=AI: Enable Raiding AI +rampant--siegeAIToggle=AI: Enable Siege AI +# rampant--onslaughtAIToggle=AI: Enable Onslaught AI -rampant-laserEnemy=World: Laser Biter Faction -rampant-waspEnemy=World: Wasp Biter Faction -rampant-spawnerEnemy=World: Spawner Biter Faction -rampant-trollEnemy=World: Troll Biter Faction -rampant-fastEnemy=World: Fast Biter Faction -rampant-infernoEnemy=World: Inferno Biter Faction -rampant-nuclearEnemy=World: Nuclear Biter Faction -rampant-electricEnemy=World: Electric Biter Faction -rampant-fireEnemy=World: Fire Biter Faction -rampant-suicideEnemy=World: Suicide Biter Faction -rampant-physicalEnemy=World: Physical Biter Faction -rampant-acidEnemy=World: Acid Biter Faction -rampant-energyThiefEnemy=World: Energy Thief Biter Faction -rampant-poisonEnemy=World: Poison Biter Faction +rampant--laserEnemy=World: Laser Biter Faction +rampant--waspEnemy=World: Wasp Biter Faction +rampant--spawnerEnemy=World: Spawner Biter Faction +rampant--trollEnemy=World: Troll Biter Faction +rampant--fastEnemy=World: Fast Biter Faction +rampant--infernoEnemy=World: Inferno Biter Faction +rampant--nuclearEnemy=World: Nuclear Biter Faction +rampant--electricEnemy=World: Electric Biter Faction +rampant--fireEnemy=World: Fire Biter Faction +rampant--suicideEnemy=World: Suicide Biter Faction +rampant--physicalEnemy=World: Physical Biter Faction +rampant--acidEnemy=World: Acid Biter Faction +rampant--energyThiefEnemy=World: Energy Thief Biter Faction +rampant--poisonEnemy=World: Poison Biter Faction -rampant-disableCollidingProjectiles=Projectiles: Non biter force colliding projectiles -rampant-enableFullMapScan=Compatibility: Enable full map scanning -rampant-unitAndSpawnerFadeTime=Biter, Spitter, Worm, Spawners, and Hive Corpse Fade Time -rampant-enableFadeTime=Enable corpse fade time +rampant--disableCollidingProjectiles=Projectiles: Non biter force colliding projectiles +rampant--enableFullMapScan=Compatibility: Enable full map scanning +rampant--unitAndSpawnerFadeTime=Biter, Spitter, Worm, Spawners, and Hive Corpse Fade Time +rampant--enableFadeTime=Enable corpse fade time [mod-setting-description] -rampant-unitAndSpawnerFadeTime=The time in seconds for how long biter corpses stay around -rampant-unitsAffectedByTiles=(Can cause Desyncs) Units are affected by tile movement modifiers -rampant-oldRedEnemyMapColor=Reverts the enemy map color to the vanilla enemy map color -rampant-unitSpawnerBreath=Now unit spawners breath air so they are affected by things like poison capsules -rampant-useDumbProjectiles=Use the projectile attacks that are blockable. This should be checked if you are using the new enemies. -rampant-attackWaveGenerationThresholdMax=The total score that a chunk must reach in order for an attack wave to spawn. DOES NOT affect vanilla biters waves. Scaling linearly with evolution factor (starting threshold @ 0.0 evolution) -rampant-attackWaveGenerationThresholdMin=The total score that a chunk must reach in order for an attack wave to spawn. DOES NOT affect vanilla biters waves. Scaling linearly with evolution factor (ending threshold @ 100.0 evolution) -rampant-attackWaveMaxSize=If you wish to change how the attack wave scales with evolution you will need to modify the config.lua in the zip file. -rampant-safeBuildings=This needs to be toggle for the safe building toggles to work. This will cause entities made safe to regenerate with the destructible flag set to false, which causes them to never be targeted or damaged again. -rampant-safeBuildings-curvedRail=Make curved rails safe from biters -rampant-safeBuildings-straightRail=Make straight rails safe from biters -rampant-safeBuildings-bigElectricPole=Make big electric poles safe from biters -rampant-safeBuildings-railChainSignals=Make rail chain signals safe from biters -rampant-safeBuildings-railSignals=Make rail signals safe from biters -rampant-safeBuildings-lamps=Make lamps safe from biters -rampant-safeBuildings-trainStops=Make train stops safe from biters -rampant-permanentNocturnal=Toggling this will cause Rampant attack waves to spawn at night. DOES NOT turn off vanilla attack groups yet. Works better with the clockwork mod. -rampant-aiPointsScaler=Between 0.0 and 100.0. This scales how many action points the ai gets per logic cycle to perform actions like making attack waves. 0.3 - very easy, 0.75 - easy, 1.0 - medium, 1.25+ - hard -rampant-addWallResistanceAcid=Toggling this will cause a %60 acid resistance to be added to all wall entities to reduce the damage done by spitters to walls. -rampant-removeBloodParticles=The blood particles that are created when biters are being killed can cause UPS spikes, this removes them. -rampant-enableSwarm=This reduces the size of the unit collision_mask causing them to reduce pathing collisions and smooth out the attacks -rampant-attack-warning=Shows a message warning players that an attack wave is incoming -rampant-newEnemies=Adds news enemies that will be dispersed over the world. This increases the RAM requirements. With 1 variation for each biter, worm, and nest and 5 tiers expect upto a 2GB RAM increase. With 20 variations and 10 tiers set expect up to 9GB RAM increase. Variations add randominess to each tier of biter, worms, or nests. Tiers are the power level of the biters. -rampant-enemySeed=The seed that powers all of the unit generation, so change this if you want the enemy stats to change -rampant-deadZoneFrequency=The percentage of zones that start without worms or nests -rampant-newEnemyVariations=This number corresponds to the number of variations per tier. This adds randominess to each tier power level. Min 1, Max 20 -rampant-disallowFriendlyFire=Prevents enemy spitters and worms from damaging units or buildings from the same force through splash damage -rampant-tierStart=This is the starting level of the enemy that will be used when generating the set of enemies for the specified number of tiers and increases linearly to the end tier for as many tiers selected. Roughly healthwise each tier is a follows (1-15,2-75,3-150,4-250,5-1000,6-2000,7-3500,8-7500,9-15000,10-30000). min 1, max 10 -rampant-tierEnd=This is the ending tier level that is reached after increasing linearly from the start tier for as many tiers selected. Roughly healthwise each tier is a follows (1-15,2-75,3-150,4-250,5-1000,6-2000,7-3500,8-7500,9-15000,10-30000). min 1, max 10 -rampant-enableMigration=This will allow the ai to expand its worms and nests. Respects the map settings for biter expansion. +rampant--unitAndSpawnerFadeTime=The time in seconds for how long biter corpses stay around +rampant--unitsAffectedByTiles=(Can cause Desyncs) Units are affected by tile movement modifiers +rampant--oldRedEnemyMapColor=Reverts the enemy map color to the vanilla enemy map color +rampant--unitSpawnerBreath=Now unit spawners breath air so they are affected by things like poison capsules +rampant--useDumbProjectiles=Use the projectile attacks that are blockable. This should be checked if you are using the new enemies. +rampant--attackWaveGenerationThresholdMax=The total score that a chunk must reach in order for an attack wave to spawn. DOES NOT affect vanilla biters waves. Scaling linearly with evolution factor (starting threshold @ 0.0 evolution) +rampant--attackWaveGenerationThresholdMin=The total score that a chunk must reach in order for an attack wave to spawn. DOES NOT affect vanilla biters waves. Scaling linearly with evolution factor (ending threshold @ 100.0 evolution) +rampant--attackWaveMaxSize=If you wish to change how the attack wave scales with evolution you will need to modify the config.lua in the zip file. +rampant--safeBuildings=This needs to be toggle for the safe building toggles to work. This will cause entities made safe to regenerate with the destructible flag set to false, which causes them to never be targeted or damaged again. +rampant--safeBuildings-curvedRail=Make curved rails safe from biters +rampant--safeBuildings-straightRail=Make straight rails safe from biters +rampant--safeBuildings-bigElectricPole=Make big electric poles safe from biters +rampant--safeBuildings-railChainSignals=Make rail chain signals safe from biters +rampant--safeBuildings-railSignals=Make rail signals safe from biters +rampant--safeBuildings-lamps=Make lamps safe from biters +rampant--safeBuildings-trainStops=Make train stops safe from biters +rampant--permanentNocturnal=Toggling this will cause Rampant attack waves to spawn at night. DOES NOT turn off vanilla attack groups yet. Works better with the clockwork mod. +rampant--aiPointsScaler=Between 0.0 and 100.0. This scales how many action points the ai gets per logic cycle to perform actions like making attack waves. 0.3 - very easy, 0.75 - easy, 1.0 - medium, 1.25+ - hard +rampant--addWallResistanceAcid=Toggling this will cause a %60 acid resistance to be added to all wall entities to reduce the damage done by spitters to walls. +rampant--removeBloodParticles=The blood particles that are created when biters are being killed can cause UPS spikes, this removes them. +rampant--enableSwarm=This reduces the size of the unit collision_mask causing them to reduce pathing collisions and smooth out the attacks +rampant--attack-warning=Shows a message warning players that an attack wave is incoming +rampant--newEnemies=Adds news enemies that will be dispersed over the world. This increases the RAM requirements. With 1 variation for each biter, worm, and nest and 5 tiers expect upto a 2GB RAM increase. With 20 variations and 10 tiers set expect up to 9GB RAM increase. Variations add randominess to each tier of biter, worms, or nests. Tiers are the power level of the biters. +rampant--enemySeed=The seed that powers all of the unit generation, so change this if you want the enemy stats to change +rampant--deadZoneFrequency=The percentage of zones that start without worms or nests +rampant--newEnemyVariations=This number corresponds to the number of variations per tier. This adds randominess to each tier power level. Min 1, Max 20 +rampant--disallowFriendlyFire=Prevents enemy spitters and worms from damaging units or buildings from the same force through splash damage +rampant--tierStart=This is the starting level of the enemy that will be used when generating the set of enemies for the specified number of tiers and increases linearly to the end tier for as many tiers selected. Roughly healthwise each tier is a follows (1-15,2-75,3-150,4-250,5-1000,6-2000,7-3500,8-7500,9-15000,10-30000). min 1, max 10 +rampant--tierEnd=This is the ending tier level that is reached after increasing linearly from the start tier for as many tiers selected. Roughly healthwise each tier is a follows (1-15,2-75,3-150,4-250,5-1000,6-2000,7-3500,8-7500,9-15000,10-30000). min 1, max 10 +rampant--enableMigration=This will allow the ai to expand its worms and nests. Respects the map settings for biter expansion. -rampant-enableShrinkNestsAndWorms=Reduce the collision box size of nests and worms by 50%. May cause overlapping entities due to the collision box being smaller than the entity graphic. -rampant-attackWaveGenerationUsePlayerProximity=Include player pheromones amount for threshold on chunks with biter nests that will generate a Rampant attack wave. DOES NOT affect vanilla biters waves -rampant-attackPlayerThreshold=The score that a chunk must reach for it to contribute to the attack threshold. Increasing reduces player pheromone cloud impact. +rampant--enableShrinkNestsAndWorms=Reduce the collision box size of nests and worms by 50%. May cause overlapping entities due to the collision box being smaller than the entity graphic. +rampant--attackWaveGenerationUsePlayerProximity=Include player pheromones amount for threshold on chunks with biter nests that will generate a Rampant attack wave. DOES NOT affect vanilla biters waves +rampant--attackPlayerThreshold=The score that a chunk must reach for it to contribute to the attack threshold. Increasing reduces player pheromone cloud impact. -rampant-unkillableLogisticRobots=This will make logistic bots immune to all damage -rampant-unkillableConstructionRobots=This will make construction bots immune to all damage +rampant--unkillableLogisticRobots=This will make logistic bots immune to all damage +rampant--unkillableConstructionRobots=This will make construction bots immune to all damage -# rampant-aiAggressiveness=This setting directly affects how often the ai enters a peaceful state. Less than one will cause biters to be more aggressive, greater than one the biters will be more peaceful. Settings this to zero will cause the AI to never be at peace. 0 - 2 +# rampant--aiAggressiveness=This setting directly affects how often the ai enters a peaceful state. Less than one will cause biters to be more aggressive, greater than one the biters will be more peaceful. Settings this to zero will cause the AI to never be at peace. 0 - 2 -rampant-unitBiterHealthScaler=Scales by a percentage all new enemy biter health -rampant-unitBiterSpeedScaler=Scales by a percentage all new enemy biter speed -rampant-unitBiterDamageScaler=Scales by a percentage all new enemy biter damage -rampant-unitBiterRangeScaler=Scales by a percentage all new enemy biter attack range -rampant-unitBiterHealingScaler=Scales by a percentage all new enemy biter Healing -rampant-unitSpitterHealthScaler=Scales by a percentage all new enemy spitter health -rampant-unitSpitterSpeedScaler=Scales by a percentage all new enemy spitter speed -rampant-unitSpitterDamageScaler=Scales by a percentage all new enemy spitter damage -rampant-unitSpitterRangeScaler=Scales by a percentage all new enemy spitter range -rampant-unitSpitterHealingScaler=Scales by a percentage all new enemy spitter Healing -rampant-unitDroneHealthScaler=Scales by a percentage all new enemy drone health. Drones come from the factions spawner and wasp -rampant-unitDroneSpeedScaler=Scales by a percentage all new enemy drone speed. Drones come from the factions spawner and wasp -rampant-unitDroneDamageScaler=Scales by a percentage all new enemy drone damage. Drones come from the factions spawner and wasp -rampant-unitDroneRangeScaler=Scales by a percentage all new enemy drone range. Drones come from the factions spawner and wasp -rampant-unitDroneHealingScaler=Scales by a percentage all new enemy drone healing. Drones come from the factions spawner and wasp -rampant-unitWormHealthScaler=Scales by a percentage all new enemy worm health -rampant-unitWormDamageScaler=Scales by a percentage all new enemy worm damage -rampant-unitWormRangeScaler=Scales by a percentage all new enemy worm range -rampant-unitWormHealingScaler=Scales by a percentage all new enemy worm healing -rampant-unitSpawnerHealthScaler=Scales by a percentage all new enemy unit spawner health -rampant-unitSpawnerOwnedScaler=Scales by a percentage all new enemy unit spawner max number of units controlled per spawner -rampant-unitSpawnerSpawnScaler=Scales by a percentage all new enemy unit spawner number of units spawned at any one time -rampant-unitSpawnerRespawnScaler=Scales by a percentage all new enemy unit spawner time to spawn new units -rampant-unitSpawnerHealingScaler=Scales by a percentage all new enemy unit spawner healing -rampant-unitHiveHealthScaler=Scales by a percentage all new enemy unit hive health -rampant-unitHiveHealingScaler=Scales by a percentage all new enemy unit hive healing -rampant-unitHiveRespawnScaler=Scales by a percentage all new enemy unit hive time to spawn new units +rampant--unitBiterHealthScaler=Scales by a percentage all new enemy biter health +rampant--unitBiterSpeedScaler=Scales by a percentage all new enemy biter speed +rampant--unitBiterDamageScaler=Scales by a percentage all new enemy biter damage +rampant--unitBiterRangeScaler=Scales by a percentage all new enemy biter attack range +rampant--unitBiterHealingScaler=Scales by a percentage all new enemy biter Healing +rampant--unitSpitterHealthScaler=Scales by a percentage all new enemy spitter health +rampant--unitSpitterSpeedScaler=Scales by a percentage all new enemy spitter speed +rampant--unitSpitterDamageScaler=Scales by a percentage all new enemy spitter damage +rampant--unitSpitterRangeScaler=Scales by a percentage all new enemy spitter range +rampant--unitSpitterHealingScaler=Scales by a percentage all new enemy spitter Healing +rampant--unitDroneHealthScaler=Scales by a percentage all new enemy drone health. Drones come from the factions spawner and wasp +rampant--unitDroneSpeedScaler=Scales by a percentage all new enemy drone speed. Drones come from the factions spawner and wasp +rampant--unitDroneDamageScaler=Scales by a percentage all new enemy drone damage. Drones come from the factions spawner and wasp +rampant--unitDroneRangeScaler=Scales by a percentage all new enemy drone range. Drones come from the factions spawner and wasp +rampant--unitDroneHealingScaler=Scales by a percentage all new enemy drone healing. Drones come from the factions spawner and wasp +rampant--unitWormHealthScaler=Scales by a percentage all new enemy worm health +rampant--unitWormDamageScaler=Scales by a percentage all new enemy worm damage +rampant--unitWormRangeScaler=Scales by a percentage all new enemy worm range +rampant--unitWormHealingScaler=Scales by a percentage all new enemy worm healing +rampant--unitSpawnerHealthScaler=Scales by a percentage all new enemy unit spawner health +rampant--unitSpawnerOwnedScaler=Scales by a percentage all new enemy unit spawner max number of units controlled per spawner +rampant--unitSpawnerSpawnScaler=Scales by a percentage all new enemy unit spawner number of units spawned at any one time +rampant--unitSpawnerRespawnScaler=Scales by a percentage all new enemy unit spawner time to spawn new units +rampant--unitSpawnerHealingScaler=Scales by a percentage all new enemy unit spawner healing +rampant--unitHiveHealthScaler=Scales by a percentage all new enemy unit hive health +rampant--unitHiveHealingScaler=Scales by a percentage all new enemy unit hive healing +rampant--unitHiveRespawnScaler=Scales by a percentage all new enemy unit hive time to spawn new units -rampant-raidAIToggle=Toggles the ai raiding parties from outside your pollution cloud -rampant-siegeAIToggle=Toggles the ai siege parties from outside your pollution cloud that attack or nest -# rampant-onslaughtAIToggle=Toggles the ai onslaught state where the AI gets 2x credits per logic cycle +rampant--raidAIToggle=Toggles the ai raiding parties from outside your pollution cloud +rampant--siegeAIToggle=Toggles the ai siege parties from outside your pollution cloud that attack or nest +# rampant--onslaughtAIToggle=Toggles the ai onslaught state where the AI gets 2x credits per logic cycle -rampant-laserEnemy=Laser Biter Faction, Laser is major resistance, electric is a minor resistance. Has Biters and Spitter unit types. -rampant-waspEnemy=Wasp Biter Faction, Spitter only units and each spitter spits small drones. -rampant-spawnerEnemy=Spawner Biter Faction, Only Spitters produced by spawners and spitters make eggs that hatch into biters. -rampant-trollEnemy=Troll Biter Faction, High health regeneration, major weakness to fire, minor resistance to physical, minor resistance to explosive. -rampant-fastEnemy=Fast Biter Faction, High rate of movement, minor resistance to explosive. -rampant-infernoEnemy=Inferno Biter Faction, Only Spitters that spit flaming acid that burns everything. Major resistance to Acid & Fire, Minor weakness to poison. -rampant-nuclearEnemy=Nuclear Biter Faction, Only Biters that explode like a atomic bomb. Major weakness to explosive. -rampant-electricEnemy=Electric Biter Faction, Only Biters with a short range attack that hits multiple entities in a line. Major resistance to Electric, Minor resistance to Laser. -rampant-fireEnemy=Fire Biter Faction, Major resistance to Acid & Fire. -rampant-suicideEnemy=Suicide Biter Faction, Only Biters that explode when they attack. Minor resistance to Poison, Major weakness to explosive. -rampant-physicalEnemy=Physical Biter Faction, Only Biters. Major resistance to physical, Major resistance to explosive, Minor Weakness to Electric. -rampant-acidEnemy=Acid Biter Faction, Major resistance to Acid, Minor resistance to Poison. -rampant-energyThiefEnemy=Energy Thief Biter Faction, Major resistance to Electric, Minor resistance to Laser. Destroying powered structures creates draining crystals. -rampant-poisonEnemy=Poison Biter Faction, Only Biters. On death creates a cloud that heals biters and hurts player objects. Major resistance to Poison, Minor weakness to Electric, Minor weakness to Explosive, Minor weakness to Laser, Minor resistance to Fire. +rampant--laserEnemy=Laser Biter Faction, Laser is major resistance, electric is a minor resistance. Has Biters and Spitter unit types. +rampant--waspEnemy=Wasp Biter Faction, Spitter only units and each spitter spits small drones. +rampant--spawnerEnemy=Spawner Biter Faction, Only Spitters produced by spawners and spitters make eggs that hatch into biters. +rampant--trollEnemy=Troll Biter Faction, High health regeneration, major weakness to fire, minor resistance to physical, minor resistance to explosive. +rampant--fastEnemy=Fast Biter Faction, High rate of movement, minor resistance to explosive. +rampant--infernoEnemy=Inferno Biter Faction, Only Spitters that spit flaming acid that burns everything. Major resistance to Acid & Fire, Minor weakness to poison. +rampant--nuclearEnemy=Nuclear Biter Faction, Only Biters that explode like a atomic bomb. Major weakness to explosive. +rampant--electricEnemy=Electric Biter Faction, Only Biters with a short range attack that hits multiple entities in a line. Major resistance to Electric, Minor resistance to Laser. +rampant--fireEnemy=Fire Biter Faction, Major resistance to Acid & Fire. +rampant--suicideEnemy=Suicide Biter Faction, Only Biters that explode when they attack. Minor resistance to Poison, Major weakness to explosive. +rampant--physicalEnemy=Physical Biter Faction, Only Biters. Major resistance to physical, Major resistance to explosive, Minor Weakness to Electric. +rampant--acidEnemy=Acid Biter Faction, Major resistance to Acid, Minor resistance to Poison. +rampant--energyThiefEnemy=Energy Thief Biter Faction, Major resistance to Electric, Minor resistance to Laser. Destroying powered structures creates draining crystals. +rampant--poisonEnemy=Poison Biter Faction, Only Biters. On death creates a cloud that heals biters and hurts player objects. Major resistance to Poison, Minor weakness to Electric, Minor weakness to Explosive, Minor weakness to Laser, Minor resistance to Fire. -rampant-disableCollidingProjectiles=Biter projectiles no longer collide with other biters, worms or nests. Everything else still collides with biter projectiles. -# rampant-liteMode=AI is still fully functional but the map scanning and processing is slowed, which will cause pheromones to remain longer, reduce the number of attacks spawned, and pheromones will spread slower. -rampant-enableFullMapScan=This setting causes the game map to slowly be scanned for entities created or destroyed outside of the factorio event system. (If a mod isnt using script_raised_built or script_raised_destroyed this will cause Rampant to still eventually be consistent with the game map) +rampant--disableCollidingProjectiles=Biter projectiles no longer collide with other biters, worms or nests. Everything else still collides with biter projectiles. +# rampant--liteMode=AI is still fully functional but the map scanning and processing is slowed, which will cause pheromones to remain longer, reduce the number of attacks spawned, and pheromones will spread slower. +rampant--enableFullMapScan=This setting causes the game map to slowly be scanned for entities created or destroyed outside of the factorio event system. (If a mod isnt using script_raised_built or script_raised_destroyed this will cause Rampant to still eventually be consistent with the game map) -rampant-suppress-surface-change-warnings=Turn off the warnings you get when you change surfaces, warnings should only appear the first time you visit a new surface. +# rampant--suppress-surface-change-warnings=Turn off the warnings you get when you change surfaces, warnings should only appear the first time you visit a new surface. -rampant-enableFadeTime=Enable the fade time to reduce or increase biter, spitter, worm, spawner, and hive. If disabled, no alterations are made to corpse times. +rampant--enableFadeTime=Enable the fade time to reduce or increase biter, spitter, worm, spawner, and hive. If disabled, no alterations are made to corpse times. -rampant-maxNumberOfBuilders=More builders requires more UPS. -rampant-maxNumberOfSquads=More squads requires more UPS. +rampant--maxNumberOfBuilders=More builders requires more UPS. +rampant--maxNumberOfSquads=More squads requires more UPS. [description] -rampant-set-surface=You are setting the Rampant AI active surface to\n__1__ -rampant-error-set-surface=If you wish to change Rampants active surface run, \n/SetRampantAISurface SurfaceName\nwhere SurfaceName is the name of the surface you want to switch to. -rampant-invalid-set-surface=Invalid surface name\n__1__. rampant-bobs-nee-newEnemies=Bobs enemies or NEE has been detected with Rampants new enemies,\nthe artifacts from each of these mods will still work with Rampants new enemies.\nThe generation of bobs or NEE unit spawners explicitly by Rampant is\nno longer supported when the Rampants new enemies are active. -rampant-get-surface=Rampant can only have one active surface.\nYou are on the surface named \n__1__\nRampant thinks the active surface is named \n__2__\nIf you wish to change Rampants active surface run\n/SetRampantAISurface __1__ -rampant-change-surface=Rampant can only have one active surface.\nYou are on the surface named \n__1__\nRampant thinks the active surface is named \n__2__\nIf you wish to change Rampants active surface run\n/SetRampantAISurface __1__\nThese messages can be disabled in the per player mod settings.\nThese messages only appear the first time the player reaches a surface. -rampant-already-set-surface=Rampant active surface is already set to\n__1__ \ No newline at end of file diff --git a/locale/ru/ru.cfg b/locale/ru/ru.cfg index 3787ec85..b31ba26c 100644 --- a/locale/ru/ru.cfg +++ b/locale/ru/ru.cfg @@ -18689,182 +18689,182 @@ poison-worm-v20-t10-rampant=Ядовитый червь: класс Джагге [entity-description] [mod-setting-name] -rampant-unitsAffectedByTiles=Мир: тайлы действуют на юниты -rampant-oldRedEnemyMapColor=Карта: Обратить цвета врагов на карте -rampant-unitSpawnerBreath=Мир: Породители юнитов дышат воздухом -rampant-useDumbProjectiles=Снаряды: использовать блокируемые снаряды -rampant-attackWaveGenerationThresholdMax=Волна атаки: Начальный порог атаки чанка -rampant-attackWaveGenerationThresholdMin=Волна атаки: Конечный порог атаки чанка -rampant-attackWaveMaxSize=Волна атаки: Максимальный размер группы кусак, сформированный напрямую -rampant-maxNumberOfSquads=Волна атаки: Максимальное количество атакующих групп за раз -rampant-maxNumberOfBuilders=Волна атаки: Максимальное количество формирующихся групп за раз -rampant-safeBuildings=Безопасность: Включить безопасность строений -rampant-safeBuildings-curvedRail=Безопасность: Обезопасить изогнутые рельсы от кусак -rampant-safeBuildings-straightRail=Безопасность: Обезопасить прямые рельсы от кусак -rampant-safeBuildings-bigElectricPole=Безопасность: Обезопасить большие опоры ЛЭП от кусак -rampant-safeBuildings-railChainSignals=Безопасность: Обезопасить проходные светофоры от кусак -rampant-safeBuildings-railSignals=Безопасность: Обезопасить светофоры от кусак -rampant-safeBuildings-trainStops=Безопасность: Обезопасить ЖД-станции от кусак -rampant-permanentNocturnal=Волна атаки: ночной режим -rampant-aiPointsScaler=Волна атаки: уровень сложности -rampant-addWallResistanceAcid=Безопасность: увеличить сопротивление стен к атакам плевак -rampant-safeBuildings-lamps=Безопасность: кусаки не трогают лампы -rampant-removeBloodParticles=Оптимизация: Убрать брызги крови (уменьшает лаги) -rampant-attack-warning=Уведомление: включить предупреждения о волне атаки -rampant-enableSwarm=Волна атаки: включить рой -rampant-newEnemies=Мир: включить новых врагов -rampant-enemySeed=Мир: зерно генерации врагов -rampant-deadZoneFrequency=Мир: частота мёртвых зон -rampant-newEnemyVariations=Мир: варианты врагов -rampant-enableBobsUnits=Мир: включить фракцию врагов из мода Bob -rampant-enableNEUnits=Мир: включить фракцию врагов из мода NE -rampant-disallowFriendlyFire=Безопасность: отключить дружественный огонь огненных плевков -rampant-tierStart=Мир: начальный уровень врагов -rampant-tierEnd=Мир: начальный уровень врагов -rampant-enableMigration=ИИ: включить миграцию -# rampant-liteMode=Оптимизация: простой режим -rampant-attackWaveGenerationUsePlayerProximity=Волна атаки: использовать близость игрока как триггер атаки -rampant-attackPlayerThreshold=Волна атаки: порог вклада игрока -rampant-unkillableLogisticRobots=Мир: бессмертные транспортные дроны -rampant-unkillableConstructionRobots=Мир: бессмертные строительные дроны -rampant-unitBiterHealthScaler=Модификатор: уровень здоровья кусак -rampant-unitBiterSpeedScaler=Модификатор: уровень скорости кусак -rampant-unitBiterDamageScaler=Модификатор: уровень урона кусак -rampant-unitBiterRangeScaler=Модификатор: уровень дальности атаки кусак -rampant-unitBiterHealingScaler=Модификатор: уровень регенерации кусак -rampant-unitSpitterHealthScaler=Модификатор: уровень здоровья плевак -rampant-unitSpitterSpeedScaler=Модификатор: уровень скорости плевак -rampant-unitSpitterDamageScaler=Модификатор: уровень урона плевак -rampant-unitSpitterRangeScaler=Модификатор: уровень дальности атаки плевак -rampant-unitSpitterHealingScaler=Модификатор: уровень регенерации плевак -rampant-unitDroneHealthScaler=Модификатор: уровень здоровья дронов -rampant-unitDroneSpeedScaler=Модификатор: уровень скорости дронов -rampant-unitDroneDamageScaler=Модификатор: уровень урона дронов -rampant-unitDroneRangeScaler=Модификатор: уровень дальности атаки дронов -rampant-unitDroneHealingScaler=Модификатор: уровень регенерации дронов -rampant-unitWormHealthScaler=Модификатор: уровень здоровья червей -rampant-unitWormDamageScaler=Модификатор: уровень урона червей -rampant-unitWormRangeScaler=Модификатор: уровень дальности атаки червей -rampant-unitWormHealingScaler=Модификатор: уровень регенерации червей -rampant-unitSpawnerHealthScaler=Модификатор: уровень здоровья породителей -rampant-unitSpawnerOwnedScaler=Модификатор: уровень количества порождений -rampant-unitSpawnerSpawnScaler=Модификатор: уровень количества порождений за раз -rampant-unitSpawnerRespawnScaler=Модификатор: уровень частоты порождений -rampant-unitSpawnerHealingScaler=Модификатор: уровень регенерации породителей -rampant-unitHiveHealthScaler=Модификатор: уровень здоровья ульев -rampant-unitHiveHealingScaler=Модификатор: уровень регенерации ульев -rampant-unitHiveRespawnScaler=Модификатор: уровень частоты рождений из ульев -rampant-suppress-surface-change-warnings=Отключить все предупреждения о смене поверхности -# rampant-aiAggressiveness=ИИ: агрессивность ИИ -rampant-enableShrinkNestsAndWorms=Волна атаки: урезать гнёзда и червей -rampant-raidAIToggle=ИИ: включить рейдовый ИИ -rampant-siegeAIToggle=ИИ: включить осадный ИИ -# rampant-onslaughtAIToggle=ИИ: включить нападающий ИИ -rampant-laserEnemy=Мир: фракция Лазерные кусаки -rampant-waspEnemy=Мир: фракция Осы -rampant-spawnerEnemy=Мир: фракция Породители -rampant-trollEnemy=Мир: фракция Тролли -rampant-fastEnemy=Мир: фракция Быстрых кусак -rampant-infernoEnemy=Мир: фракция Адские кусаки -rampant-nuclearEnemy=Мир: фракция Ядерные кусаки -rampant-electricEnemy=Мир: фракция Электрические кусаки -rampant-fireEnemy=Мир: фракция Огненные кусаки -rampant-suicideEnemy=Мир: фракция Самоубийцы -rampant-physicalEnemy=Мир: фракция Физические кусаки -rampant-acidEnemy=Мир: фракция Кислотные кусаки -rampant-energyThiefEnemy=Мир: фракция Энерго-вампиры -rampant-poisonEnemy=Мир: фракция Ядовитые кусаки -rampant-disableCollidingProjectiles=Снаряды: не сталкивающиеся снаряды кусак -rampant-enableFullMapScan=Совместимость: включить сканирование всей карты -rampant-unitAndSpawnerFadeTime=Время исчезновения трупов кусак +rampant--unitsAffectedByTiles=Мир: тайлы действуют на юниты +rampant--oldRedEnemyMapColor=Карта: Обратить цвета врагов на карте +rampant--unitSpawnerBreath=Мир: Породители юнитов дышат воздухом +rampant--useDumbProjectiles=Снаряды: использовать блокируемые снаряды +rampant--attackWaveGenerationThresholdMax=Волна атаки: Начальный порог атаки чанка +rampant--attackWaveGenerationThresholdMin=Волна атаки: Конечный порог атаки чанка +rampant--attackWaveMaxSize=Волна атаки: Максимальный размер группы кусак, сформированный напрямую +rampant--maxNumberOfSquads=Волна атаки: Максимальное количество атакующих групп за раз +rampant--maxNumberOfBuilders=Волна атаки: Максимальное количество формирующихся групп за раз +rampant--safeBuildings=Безопасность: Включить безопасность строений +rampant--safeBuildings-curvedRail=Безопасность: Обезопасить изогнутые рельсы от кусак +rampant--safeBuildings-straightRail=Безопасность: Обезопасить прямые рельсы от кусак +rampant--safeBuildings-bigElectricPole=Безопасность: Обезопасить большие опоры ЛЭП от кусак +rampant--safeBuildings-railChainSignals=Безопасность: Обезопасить проходные светофоры от кусак +rampant--safeBuildings-railSignals=Безопасность: Обезопасить светофоры от кусак +rampant--safeBuildings-trainStops=Безопасность: Обезопасить ЖД-станции от кусак +rampant--permanentNocturnal=Волна атаки: ночной режим +rampant--aiPointsScaler=Волна атаки: уровень сложности +rampant--addWallResistanceAcid=Безопасность: увеличить сопротивление стен к атакам плевак +rampant--safeBuildings-lamps=Безопасность: кусаки не трогают лампы +rampant--removeBloodParticles=Оптимизация: Убрать брызги крови (уменьшает лаги) +rampant--attack-warning=Уведомление: включить предупреждения о волне атаки +rampant--enableSwarm=Волна атаки: включить рой +rampant--newEnemies=Мир: включить новых врагов +rampant--enemySeed=Мир: зерно генерации врагов +rampant--deadZoneFrequency=Мир: частота мёртвых зон +rampant--newEnemyVariations=Мир: варианты врагов +rampant--enableBobsUnits=Мир: включить фракцию врагов из мода Bob +rampant--enableNEUnits=Мир: включить фракцию врагов из мода NE +rampant--disallowFriendlyFire=Безопасность: отключить дружественный огонь огненных плевков +rampant--tierStart=Мир: начальный уровень врагов +rampant--tierEnd=Мир: начальный уровень врагов +rampant--enableMigration=ИИ: включить миграцию +# rampant--liteMode=Оптимизация: простой режим +rampant--attackWaveGenerationUsePlayerProximity=Волна атаки: использовать близость игрока как триггер атаки +rampant--attackPlayerThreshold=Волна атаки: порог вклада игрока +rampant--unkillableLogisticRobots=Мир: бессмертные транспортные дроны +rampant--unkillableConstructionRobots=Мир: бессмертные строительные дроны +rampant--unitBiterHealthScaler=Модификатор: уровень здоровья кусак +rampant--unitBiterSpeedScaler=Модификатор: уровень скорости кусак +rampant--unitBiterDamageScaler=Модификатор: уровень урона кусак +rampant--unitBiterRangeScaler=Модификатор: уровень дальности атаки кусак +rampant--unitBiterHealingScaler=Модификатор: уровень регенерации кусак +rampant--unitSpitterHealthScaler=Модификатор: уровень здоровья плевак +rampant--unitSpitterSpeedScaler=Модификатор: уровень скорости плевак +rampant--unitSpitterDamageScaler=Модификатор: уровень урона плевак +rampant--unitSpitterRangeScaler=Модификатор: уровень дальности атаки плевак +rampant--unitSpitterHealingScaler=Модификатор: уровень регенерации плевак +rampant--unitDroneHealthScaler=Модификатор: уровень здоровья дронов +rampant--unitDroneSpeedScaler=Модификатор: уровень скорости дронов +rampant--unitDroneDamageScaler=Модификатор: уровень урона дронов +rampant--unitDroneRangeScaler=Модификатор: уровень дальности атаки дронов +rampant--unitDroneHealingScaler=Модификатор: уровень регенерации дронов +rampant--unitWormHealthScaler=Модификатор: уровень здоровья червей +rampant--unitWormDamageScaler=Модификатор: уровень урона червей +rampant--unitWormRangeScaler=Модификатор: уровень дальности атаки червей +rampant--unitWormHealingScaler=Модификатор: уровень регенерации червей +rampant--unitSpawnerHealthScaler=Модификатор: уровень здоровья породителей +rampant--unitSpawnerOwnedScaler=Модификатор: уровень количества порождений +rampant--unitSpawnerSpawnScaler=Модификатор: уровень количества порождений за раз +rampant--unitSpawnerRespawnScaler=Модификатор: уровень частоты порождений +rampant--unitSpawnerHealingScaler=Модификатор: уровень регенерации породителей +rampant--unitHiveHealthScaler=Модификатор: уровень здоровья ульев +rampant--unitHiveHealingScaler=Модификатор: уровень регенерации ульев +rampant--unitHiveRespawnScaler=Модификатор: уровень частоты рождений из ульев +# rampant--suppress-surface-change-warnings=Отключить все предупреждения о смене поверхности +# rampant--aiAggressiveness=ИИ: агрессивность ИИ +rampant--enableShrinkNestsAndWorms=Волна атаки: урезать гнёзда и червей +rampant--raidAIToggle=ИИ: включить рейдовый ИИ +rampant--siegeAIToggle=ИИ: включить осадный ИИ +# rampant--onslaughtAIToggle=ИИ: включить нападающий ИИ +rampant--laserEnemy=Мир: фракция Лазерные кусаки +rampant--waspEnemy=Мир: фракция Осы +rampant--spawnerEnemy=Мир: фракция Породители +rampant--trollEnemy=Мир: фракция Тролли +rampant--fastEnemy=Мир: фракция Быстрых кусак +rampant--infernoEnemy=Мир: фракция Адские кусаки +rampant--nuclearEnemy=Мир: фракция Ядерные кусаки +rampant--electricEnemy=Мир: фракция Электрические кусаки +rampant--fireEnemy=Мир: фракция Огненные кусаки +rampant--suicideEnemy=Мир: фракция Самоубийцы +rampant--physicalEnemy=Мир: фракция Физические кусаки +rampant--acidEnemy=Мир: фракция Кислотные кусаки +rampant--energyThiefEnemy=Мир: фракция Энерго-вампиры +rampant--poisonEnemy=Мир: фракция Ядовитые кусаки +rampant--disableCollidingProjectiles=Снаряды: не сталкивающиеся снаряды кусак +rampant--enableFullMapScan=Совместимость: включить сканирование всей карты +rampant--unitAndSpawnerFadeTime=Время исчезновения трупов кусак [mod-setting-description] -rampant-unitsAffectedByTiles=(Может вызвать рассинхрон) На юнитов действуют модификаторы передвижения тайлов -rampant-oldRedEnemyMapColor=Возвращает цвет врагов на карте к цвету в оригинальной игре -rampant-unitSpawnerBreath=Теперь породители юнитов дышат воздухом, так что на них влияют вещи типа ядовитых капсул -rampant-useDumbProjectiles=Использовать снаряды атакующих, которые блокируются (стенами). Это полезно отметить, если вы используете новых врагов. -rampant-attackWaveGenerationThresholdMax=Общее количество очков, которое должен набрать чанк, чтобы возникла волна атаки. НЕ влияет на обычные волны кусак. Линейно масштабируется с коэффициентом эволюции (начальный порог при эволюции 0,0) -rampant-attackWaveGenerationThresholdMin=Общее количество очков, которое должен набрать чанк, чтобы возникла волна атаки. НЕ влияет на обычные волны кусак. Линейно масштабируется с коэффициентом эволюции (конечный порог при эволюции 100,0) -rampant-attackWaveMaxSize=Если вы хотите изменить зависимость волны атаки от эволюции, отредактируйте файл config.lua в архиве мода. -rampant-maxNumberOfSquads=Больше отрядов требуют больше UPS. -rampant-maxNumberOfBuilders=Больше формирующихся групп требуют больше UPS. -rampant-safeBuildings=Это должно быть включено, чтобы работало безопасное строительство. Это приведет к регенерации объектов, с флагом разрушаемости, установленным в false, что заставит их больше никогда не быть целью или повреждёнными. -rampant-safeBuildings-curvedRail=Обезопасить изогнутые рельсы от кусак -rampant-safeBuildings-straightRail=Обезопасить прямые рельсы от кусак -rampant-safeBuildings-bigElectricPole=Обезопасить большие опоры ЛЭП от кусак -rampant-safeBuildings-railChainSignals=Обезопасить проходные светофоры от кусак -rampant-safeBuildings-railSignals=Обезопасить светофоры от кусак -rampant-safeBuildings-trainStops=Обезопасить ЖД-станции от кусак -rampant-permanentNocturnal=Переключение этого параметра вызовет появление волн атак мода Rampant ночью. НЕ отключает стандартные группы атаки. Лучше работает с модом Clockwork. -rampant-aiPointsScaler=От 0.0 до 100.0. Уровень определяет, сколько очков действия получает ИИ каждый логический цикл для совершения действий, например, создания атакующих волн. 0.3 - очень легко, 0.75 - легко, 1.0 - средне, 1.25+ - тяжело. -rampant-addWallResistanceAcid=При включении стены получат 60% сопротивления кислоте, что уменьшит повреждения от атак плевак. -rampant-safeBuildings-lamps=Обезопасить лампы от кусак -rampant-removeBloodParticles=Брызги крови, которые появляются при убийстве кусак, вызывают падение UPS. -rampant-attack-warning=Показывать сообщение, предупреждающее игроков о надвигающейся волне атаки -rampant-enableSwarm=Этот параметр уменьшает размер элемента collision_mask, что позволяет кусакам уменьшить количество столкновений и двигаться более плавной волной -rampant-newEnemies=Добавляет новых врагов, которые будут распространены по миру. Это увеличивает потребление ОЗУ. По 1 варианту на кусак, червей, гнёзд и 5 уровней их развития это увеличит потребление ОЗУ на 2 ГБ. По 20 вариантов и 10 уровней развития - до 9 ГБ потребления ОЗУ. Варианты добавляют случайности каждому уровню кусак, червей и гнёзд. -rampant-enemySeed=Зерно случайной генерации всех юнитов, измените, если хотите поменять характеристики врагов -rampant-deadZoneFrequency=Процент зон, которые генерируются без червей или гнёзд -rampant-newEnemyVariations=Число определяет количество вариантов на каждый уровень развития. Это добавляет случайности каждому уровню развития. От 1 до 20. -rampant-disallowFriendlyFire=Не позволяет вражеским плевакам и червям наносить урон юнитам или зданиям от одной и той же силы за счет урона по области. -rampant-tierStart=Это начальный уровень врага, который будет использоваться при создании набора врагов для указанного количества уровней и линейно увеличивается до конечного уровня. Примерно по здоровью каждый уровень выглядит следующим образом (1-15,2-75,3-150,4-250,5-1000,6-2000,7-3500,8-7500,9-15000,10-30000). Значение от 1 до 10. -rampant-tierEnd=Это конечный уровень врага, который будет использоваться при создании набора врагов для указанного количества уровней и линейно увеличивается до конечного уровня. Примерно по здоровью каждый уровень выглядит следующим образом (1-15,2-75,3-150,4-250,5-1000,6-2000,7-3500,8-7500,9-15000,10-30000). Значение от 1 до 10. -rampant-enableMigration=Это позволит ИИ расселяться червям и гнёздам. Смотрите настройки карты для настройки расселения кусак. -# rampant-liteMode=ИИ по-прежнему полностью функционален, но сканирование и обработка карты замедляются, что приводит к тому, что феромоны остаются дольше, уменьшают количество порождаемых атак, а феромоны распространяются медленнее. -rampant-attackWaveGenerationUsePlayerProximity=Включает количество феромонов игрока в пороговое значение к чанкам с гнездами кусак, которые будут генерировать атаки Rampant. НЕ влияет на ванильные волны атаки. -rampant-attackPlayerThreshold=Результат, которого должен достичь чанк, чтобы внести свой вклад в порог атаки. Увеличение снижает влияние феромонного облака игрока. -rampant-unkillableLogisticRobots=Это делает транспортных дронов невосприимчивыми к повреждениям -rampant-unkillableConstructionRobots=Это делает строительных дронов невосприимчивыми к повреждениям -rampant-unitBiterHealthScaler=Уровень здоровья кусак в процентах -rampant-unitBiterSpeedScaler=Уровень скорости кусак в процентах -rampant-unitBiterDamageScaler=Уровень урона кусак в процентах -rampant-unitBiterRangeScaler=Уровень дальности атаки кусак в процентах -rampant-unitBiterHealingScaler=Уровень регенерации кусак в процентах -rampant-unitSpitterHealthScaler=Уровень здоровья плевак в процентах -rampant-unitSpitterSpeedScaler=Уровень скорости плевак в процентах -rampant-unitSpitterDamageScaler=Уровень урона плевак в процентах -rampant-unitSpitterRangeScaler=Уровень дальности атаки плевак в процентах -rampant-unitSpitterHealingScaler=Уровень регенерации плевак в процентах -rampant-unitDroneHealthScaler=Уровень здоровья дронов в процентах. Дроны исходят от фракций Породитель и Оса. -rampant-unitDroneSpeedScaler=Уровень скорости дронов в процентах. Дроны исходят от фракций Породитель и Оса. -rampant-unitDroneDamageScaler=Уровень урона дронов в процентах. Дроны исходят от фракций Породитель и Оса. -rampant-unitDroneRangeScaler=Уровень дальности атаки дронов в процентах. Дроны исходят от фракций Породитель и Оса. -rampant-unitDroneHealingScaler=Уровень регенерации дронов в процентах. Дроны исходят от фракций Породитель и Оса. -rampant-unitWormHealthScaler=Уровень здоровья червей в процентах -rampant-unitWormDamageScaler=Уровень урона червей в процентах -rampant-unitWormRangeScaler=Уровень дальности атаки червей в процентах -rampant-unitWormHealingScaler=Уровень регенерации червей в процентах -rampant-unitSpawnerHealthScaler=Уровень здоровья породителей в процентах -rampant-unitSpawnerOwnedScaler=Максимальное количество порождений, которые может создать породитель, в процентах -rampant-unitSpawnerSpawnScaler=Максимальное количество порождений, которые может создать породитель за один раз, в процентах -rampant-unitSpawnerRespawnScaler=Сколько времени проходит между появлениями новых порождений, в процентах -rampant-unitSpawnerHealingScaler=Уровень регенерации породителей в процентах -rampant-unitHiveHealthScaler=Уровень здоровья ульев в процентах -rampant-unitHiveHealingScaler=Уровень регенерации ульев в процентах -rampant-unitHiveRespawnScaler=Сколько времени проходит между появлениями новых юнитов из ульев, в процентах -rampant-suppress-surface-change-warnings=Отключить все предупреждения, появляющиеся при смене поверхности (игрового мира), сообщения появятся только при первом появлении в мире. -# rampant-aiAggressiveness=Этот параметр напрямую влияет на то, как часто ИИ переходит в мирное состояние. Меньше единицы заставит кусающих быть более агрессивными, больше единицы - более миролюбивые. Установка этого значения на ноль приведет к тому, что ИИ никогда не будет в покое. Диапазон от 0 до 2. -rampant-enableShrinkNestsAndWorms=Уменьшает размер границ столкновения у гнёзд и червей на 50% (для лучшего прохождения между ними). Могут возникнуть взаимные перекрытия из-за того, что размер границ столкновения будет меньше, чем размер самого объекта. -rampant-raidAIToggle=Включает рейды ИИ из-за пределов облака загрязнения -rampant-siegeAIToggle=Включает осадные группы ИИ из-за пределов облака загрязнения, которые будут атаковать или гнездиться -# rampant-onslaughtAIToggle=Включает режим агрессивного нападения, ИИ получает в 2 раза больше очков действия на логический цикл -rampant-laserEnemy=Фракция лазерных кусак, большое сопротивление лазеру, небольшое - электричеству. Юниты: кусаки и плеваки. -rampant-waspEnemy=Фракция ос, юниты - только плеваки, плюющиеся мелкими дронами. -rampant-spawnerEnemy=Фракция породителей, юниты - плеваки, появляющиеся из породителей, плеваки откладывают яйца, из которых вылупляются кусаки. -rampant-trollEnemy=Фракция кусак-троллей, мощная регенерация, большая уязвимость к огню, небольшое сопротивление физическим атакам, небольшое сопротивление взрывчатке. -rampant-fastEnemy=Фракция быстрых кусак, большая скорость передвижения, небольшое сопротивление взрывчатке. -rampant-infernoEnemy=Фракция адских кусак, юниты - только плеваки, которые плюются зажигательной кислотой, сжигающей всё. Большое сопротивление кислоте и огню, небольшая уязвимость к яду. -rampant-nuclearEnemy=Фракция ядерных кусак, юниты - только кусаки, взрывающиеся как атомная бомба. Большая уязвимость к взрывчатке. -rampant-electricEnemy=Фракция электрических кусак, юниты - только кусаки, на небольшом расстоянии поражающие электричеством несколько целей на линии удара. Большое сопротивление электричеству, небольшое сопротивление лазеру. -rampant-fireEnemy=Фракция огненных кусак, большое сопротивление кислоте и огню. -rampant-suicideEnemy=Фракция кусак-самоубийц, юниты - только кусаки, взрывающиеся при атаке. Небольшое сопротивление яду, большая уязвимость ко взрывчатке, -rampant-physicalEnemy=Фракция физических кусак, юниты - только кусаки. Большое сопротивление физическим атакам и взрывчатке, небольшая уязвимость к электричеству. -rampant-acidEnemy=Фракция кислотных кусак, большое сопротивление кислоте, небольшое сопротивление яду. -rampant-energyThiefEnemy=Фракция энерго-вампиров, большое сопротивление электричеству, небольшое сопротивление лазеру. Разрушают подключенные структуры, создавая энергопоглощающие кристаллы -rampant-poisonEnemy=Фракция ядовитых кусак, юниты - только кусаки. При смерти создаёт облако, которое лечит кусак и повреждает объекты игрока. Большое сопротивление яду, небольшая уязвимость к электричеству, взрывчатке и лазеру, небольшое сопротивление огню. -rampant-disableCollidingProjectiles=Снаряды (плевки) кусак не сталкиваются с другими кусаками, червями или гнёздами. Всё остальное может с ними сталкиваться. -rampant-enableFullMapScan=Этот параметр заставляет карту игры медленно сканироваться на предмет сущностей, созданных или уничтоженных вне системы событий factorio. (Если в моде не используется script_raised_built или script_raised_destroyed, это приведет к тому, что Rampant в конечном итоге будет соответствовать карте игры). -rampant-unitAndSpawnerFadeTime=Время в секундах, которое трупы кусак будут оставаться вокруг +rampant--unitsAffectedByTiles=(Может вызвать рассинхрон) На юнитов действуют модификаторы передвижения тайлов +rampant--oldRedEnemyMapColor=Возвращает цвет врагов на карте к цвету в оригинальной игре +rampant--unitSpawnerBreath=Теперь породители юнитов дышат воздухом, так что на них влияют вещи типа ядовитых капсул +rampant--useDumbProjectiles=Использовать снаряды атакующих, которые блокируются (стенами). Это полезно отметить, если вы используете новых врагов. +rampant--attackWaveGenerationThresholdMax=Общее количество очков, которое должен набрать чанк, чтобы возникла волна атаки. НЕ влияет на обычные волны кусак. Линейно масштабируется с коэффициентом эволюции (начальный порог при эволюции 0,0) +rampant--attackWaveGenerationThresholdMin=Общее количество очков, которое должен набрать чанк, чтобы возникла волна атаки. НЕ влияет на обычные волны кусак. Линейно масштабируется с коэффициентом эволюции (конечный порог при эволюции 100,0) +rampant--attackWaveMaxSize=Если вы хотите изменить зависимость волны атаки от эволюции, отредактируйте файл config.lua в архиве мода. +rampant--maxNumberOfSquads=Больше отрядов требуют больше UPS. +rampant--maxNumberOfBuilders=Больше формирующихся групп требуют больше UPS. +rampant--safeBuildings=Это должно быть включено, чтобы работало безопасное строительство. Это приведет к регенерации объектов, с флагом разрушаемости, установленным в false, что заставит их больше никогда не быть целью или повреждёнными. +rampant--safeBuildings-curvedRail=Обезопасить изогнутые рельсы от кусак +rampant--safeBuildings-straightRail=Обезопасить прямые рельсы от кусак +rampant--safeBuildings-bigElectricPole=Обезопасить большие опоры ЛЭП от кусак +rampant--safeBuildings-railChainSignals=Обезопасить проходные светофоры от кусак +rampant--safeBuildings-railSignals=Обезопасить светофоры от кусак +rampant--safeBuildings-trainStops=Обезопасить ЖД-станции от кусак +rampant--permanentNocturnal=Переключение этого параметра вызовет появление волн атак мода Rampant ночью. НЕ отключает стандартные группы атаки. Лучше работает с модом Clockwork. +rampant--aiPointsScaler=От 0.0 до 100.0. Уровень определяет, сколько очков действия получает ИИ каждый логический цикл для совершения действий, например, создания атакующих волн. 0.3 - очень легко, 0.75 - легко, 1.0 - средне, 1.25+ - тяжело. +rampant--addWallResistanceAcid=При включении стены получат 60% сопротивления кислоте, что уменьшит повреждения от атак плевак. +rampant--safeBuildings-lamps=Обезопасить лампы от кусак +rampant--removeBloodParticles=Брызги крови, которые появляются при убийстве кусак, вызывают падение UPS. +rampant--attack-warning=Показывать сообщение, предупреждающее игроков о надвигающейся волне атаки +rampant--enableSwarm=Этот параметр уменьшает размер элемента collision_mask, что позволяет кусакам уменьшить количество столкновений и двигаться более плавной волной +rampant--newEnemies=Добавляет новых врагов, которые будут распространены по миру. Это увеличивает потребление ОЗУ. По 1 варианту на кусак, червей, гнёзд и 5 уровней их развития это увеличит потребление ОЗУ на 2 ГБ. По 20 вариантов и 10 уровней развития - до 9 ГБ потребления ОЗУ. Варианты добавляют случайности каждому уровню кусак, червей и гнёзд. +rampant--enemySeed=Зерно случайной генерации всех юнитов, измените, если хотите поменять характеристики врагов +rampant--deadZoneFrequency=Процент зон, которые генерируются без червей или гнёзд +rampant--newEnemyVariations=Число определяет количество вариантов на каждый уровень развития. Это добавляет случайности каждому уровню развития. От 1 до 20. +rampant--disallowFriendlyFire=Не позволяет вражеским плевакам и червям наносить урон юнитам или зданиям от одной и той же силы за счет урона по области. +rampant--tierStart=Это начальный уровень врага, который будет использоваться при создании набора врагов для указанного количества уровней и линейно увеличивается до конечного уровня. Примерно по здоровью каждый уровень выглядит следующим образом (1-15,2-75,3-150,4-250,5-1000,6-2000,7-3500,8-7500,9-15000,10-30000). Значение от 1 до 10. +rampant--tierEnd=Это конечный уровень врага, который будет использоваться при создании набора врагов для указанного количества уровней и линейно увеличивается до конечного уровня. Примерно по здоровью каждый уровень выглядит следующим образом (1-15,2-75,3-150,4-250,5-1000,6-2000,7-3500,8-7500,9-15000,10-30000). Значение от 1 до 10. +rampant--enableMigration=Это позволит ИИ расселяться червям и гнёздам. Смотрите настройки карты для настройки расселения кусак. +# rampant--liteMode=ИИ по-прежнему полностью функционален, но сканирование и обработка карты замедляются, что приводит к тому, что феромоны остаются дольше, уменьшают количество порождаемых атак, а феромоны распространяются медленнее. +rampant--attackWaveGenerationUsePlayerProximity=Включает количество феромонов игрока в пороговое значение к чанкам с гнездами кусак, которые будут генерировать атаки Rampant. НЕ влияет на ванильные волны атаки. +rampant--attackPlayerThreshold=Результат, которого должен достичь чанк, чтобы внести свой вклад в порог атаки. Увеличение снижает влияние феромонного облака игрока. +rampant--unkillableLogisticRobots=Это делает транспортных дронов невосприимчивыми к повреждениям +rampant--unkillableConstructionRobots=Это делает строительных дронов невосприимчивыми к повреждениям +rampant--unitBiterHealthScaler=Уровень здоровья кусак в процентах +rampant--unitBiterSpeedScaler=Уровень скорости кусак в процентах +rampant--unitBiterDamageScaler=Уровень урона кусак в процентах +rampant--unitBiterRangeScaler=Уровень дальности атаки кусак в процентах +rampant--unitBiterHealingScaler=Уровень регенерации кусак в процентах +rampant--unitSpitterHealthScaler=Уровень здоровья плевак в процентах +rampant--unitSpitterSpeedScaler=Уровень скорости плевак в процентах +rampant--unitSpitterDamageScaler=Уровень урона плевак в процентах +rampant--unitSpitterRangeScaler=Уровень дальности атаки плевак в процентах +rampant--unitSpitterHealingScaler=Уровень регенерации плевак в процентах +rampant--unitDroneHealthScaler=Уровень здоровья дронов в процентах. Дроны исходят от фракций Породитель и Оса. +rampant--unitDroneSpeedScaler=Уровень скорости дронов в процентах. Дроны исходят от фракций Породитель и Оса. +rampant--unitDroneDamageScaler=Уровень урона дронов в процентах. Дроны исходят от фракций Породитель и Оса. +rampant--unitDroneRangeScaler=Уровень дальности атаки дронов в процентах. Дроны исходят от фракций Породитель и Оса. +rampant--unitDroneHealingScaler=Уровень регенерации дронов в процентах. Дроны исходят от фракций Породитель и Оса. +rampant--unitWormHealthScaler=Уровень здоровья червей в процентах +rampant--unitWormDamageScaler=Уровень урона червей в процентах +rampant--unitWormRangeScaler=Уровень дальности атаки червей в процентах +rampant--unitWormHealingScaler=Уровень регенерации червей в процентах +rampant--unitSpawnerHealthScaler=Уровень здоровья породителей в процентах +rampant--unitSpawnerOwnedScaler=Максимальное количество порождений, которые может создать породитель, в процентах +rampant--unitSpawnerSpawnScaler=Максимальное количество порождений, которые может создать породитель за один раз, в процентах +rampant--unitSpawnerRespawnScaler=Сколько времени проходит между появлениями новых порождений, в процентах +rampant--unitSpawnerHealingScaler=Уровень регенерации породителей в процентах +rampant--unitHiveHealthScaler=Уровень здоровья ульев в процентах +rampant--unitHiveHealingScaler=Уровень регенерации ульев в процентах +rampant--unitHiveRespawnScaler=Сколько времени проходит между появлениями новых юнитов из ульев, в процентах +# rampant--suppress-surface-change-warnings=Отключить все предупреждения, появляющиеся при смене поверхности (игрового мира), сообщения появятся только при первом появлении в мире. +# rampant--aiAggressiveness=Этот параметр напрямую влияет на то, как часто ИИ переходит в мирное состояние. Меньше единицы заставит кусающих быть более агрессивными, больше единицы - более миролюбивые. Установка этого значения на ноль приведет к тому, что ИИ никогда не будет в покое. Диапазон от 0 до 2. +rampant--enableShrinkNestsAndWorms=Уменьшает размер границ столкновения у гнёзд и червей на 50% (для лучшего прохождения между ними). Могут возникнуть взаимные перекрытия из-за того, что размер границ столкновения будет меньше, чем размер самого объекта. +rampant--raidAIToggle=Включает рейды ИИ из-за пределов облака загрязнения +rampant--siegeAIToggle=Включает осадные группы ИИ из-за пределов облака загрязнения, которые будут атаковать или гнездиться +# rampant--onslaughtAIToggle=Включает режим агрессивного нападения, ИИ получает в 2 раза больше очков действия на логический цикл +rampant--laserEnemy=Фракция лазерных кусак, большое сопротивление лазеру, небольшое - электричеству. Юниты: кусаки и плеваки. +rampant--waspEnemy=Фракция ос, юниты - только плеваки, плюющиеся мелкими дронами. +rampant--spawnerEnemy=Фракция породителей, юниты - плеваки, появляющиеся из породителей, плеваки откладывают яйца, из которых вылупляются кусаки. +rampant--trollEnemy=Фракция кусак-троллей, мощная регенерация, большая уязвимость к огню, небольшое сопротивление физическим атакам, небольшое сопротивление взрывчатке. +rampant--fastEnemy=Фракция быстрых кусак, большая скорость передвижения, небольшое сопротивление взрывчатке. +rampant--infernoEnemy=Фракция адских кусак, юниты - только плеваки, которые плюются зажигательной кислотой, сжигающей всё. Большое сопротивление кислоте и огню, небольшая уязвимость к яду. +rampant--nuclearEnemy=Фракция ядерных кусак, юниты - только кусаки, взрывающиеся как атомная бомба. Большая уязвимость к взрывчатке. +rampant--electricEnemy=Фракция электрических кусак, юниты - только кусаки, на небольшом расстоянии поражающие электричеством несколько целей на линии удара. Большое сопротивление электричеству, небольшое сопротивление лазеру. +rampant--fireEnemy=Фракция огненных кусак, большое сопротивление кислоте и огню. +rampant--suicideEnemy=Фракция кусак-самоубийц, юниты - только кусаки, взрывающиеся при атаке. Небольшое сопротивление яду, большая уязвимость ко взрывчатке, +rampant--physicalEnemy=Фракция физических кусак, юниты - только кусаки. Большое сопротивление физическим атакам и взрывчатке, небольшая уязвимость к электричеству. +rampant--acidEnemy=Фракция кислотных кусак, большое сопротивление кислоте, небольшое сопротивление яду. +rampant--energyThiefEnemy=Фракция энерго-вампиров, большое сопротивление электричеству, небольшое сопротивление лазеру. Разрушают подключенные структуры, создавая энергопоглощающие кристаллы +rampant--poisonEnemy=Фракция ядовитых кусак, юниты - только кусаки. При смерти создаёт облако, которое лечит кусак и повреждает объекты игрока. Большое сопротивление яду, небольшая уязвимость к электричеству, взрывчатке и лазеру, небольшое сопротивление огню. +rampant--disableCollidingProjectiles=Снаряды (плевки) кусак не сталкиваются с другими кусаками, червями или гнёздами. Всё остальное может с ними сталкиваться. +rampant--enableFullMapScan=Этот параметр заставляет карту игры медленно сканироваться на предмет сущностей, созданных или уничтоженных вне системы событий factorio. (Если в моде не используется script_raised_built или script_raised_destroyed, это приведет к тому, что Rampant в конечном итоге будет соответствовать карте игры). +rampant--unitAndSpawnerFadeTime=Время в секундах, которое трупы кусак будут оставаться вокруг [description] rampant-set-surface=Вы установили активную поверхность ИИ Rampant на\n__1__ diff --git a/prototypes/SwarmUtils.lua b/prototypes/SwarmUtils.lua index 18e4c8ea..1be4e909 100755 --- a/prototypes/SwarmUtils.lua +++ b/prototypes/SwarmUtils.lua @@ -30,7 +30,7 @@ local deepcopy = util.table.deepcopy local TIER_UPGRADE_SET_10 = constants.TIER_UPGRADE_SET_10 -local xorRandom = mathUtils.xorRandom(settings.startup["rampant-enemySeed"].value) +local xorRandom = mathUtils.xorRandom(settings.startup["rampant--enemySeed"].value) local biterattackanimation = unitUtils.biterattackanimation @@ -353,49 +353,49 @@ end local function scaleAttributes (entity) if (entity.type == "biter") then - entity["health"] = entity["health"] * settings.startup["rampant-unitBiterHealthScaler"].value - entity["movement"] = entity["movement"] * settings.startup["rampant-unitBiterSpeedScaler"].value - entity["distancePerFrame"] = entity["distancePerFrame"] * settings.startup["rampant-unitBiterSpeedScaler"].value - entity["damage"] = entity["damage"] * settings.startup["rampant-unitBiterDamageScaler"].value - entity["range"] = entity["range"] * settings.startup["rampant-unitBiterRangeScaler"].value - entity["healing"] = entity["healing"] * settings.startup["rampant-unitBiterHealingScaler"].value + entity["health"] = entity["health"] * settings.startup["rampant--unitBiterHealthScaler"].value + entity["movement"] = entity["movement"] * settings.startup["rampant--unitBiterSpeedScaler"].value + entity["distancePerFrame"] = entity["distancePerFrame"] * settings.startup["rampant--unitBiterSpeedScaler"].value + entity["damage"] = entity["damage"] * settings.startup["rampant--unitBiterDamageScaler"].value + entity["range"] = entity["range"] * settings.startup["rampant--unitBiterRangeScaler"].value + entity["healing"] = entity["healing"] * settings.startup["rampant--unitBiterHealingScaler"].value elseif (entity.type == "spitter") then - entity["health"] = entity["health"] * settings.startup["rampant-unitSpitterHealthScaler"].value - entity["movement"] = entity["movement"] * settings.startup["rampant-unitSpitterSpeedScaler"].value - entity["distancePerFrame"] = entity["distancePerFrame"] * settings.startup["rampant-unitSpitterSpeedScaler"].value - entity["damage"] = entity["damage"] * settings.startup["rampant-unitSpitterDamageScaler"].value + entity["health"] = entity["health"] * settings.startup["rampant--unitSpitterHealthScaler"].value + entity["movement"] = entity["movement"] * settings.startup["rampant--unitSpitterSpeedScaler"].value + entity["distancePerFrame"] = entity["distancePerFrame"] * settings.startup["rampant--unitSpitterSpeedScaler"].value + entity["damage"] = entity["damage"] * settings.startup["rampant--unitSpitterDamageScaler"].value if entity["stickerDamagePerTick"] then - entity["stickerDamagePerTick"] = entity["stickerDamagePerTick"] * settings.startup["rampant-unitSpitterDamageScaler"].value + entity["stickerDamagePerTick"] = entity["stickerDamagePerTick"] * settings.startup["rampant--unitSpitterDamageScaler"].value end - entity["damagePerTick"] = entity["damagePerTick"] * settings.startup["rampant-unitSpitterDamageScaler"].value - entity["range"] = entity["range"] * settings.startup["rampant-unitSpitterRangeScaler"].value - entity["healing"] = entity["healing"] * settings.startup["rampant-unitSpitterHealingScaler"].value + entity["damagePerTick"] = entity["damagePerTick"] * settings.startup["rampant--unitSpitterDamageScaler"].value + entity["range"] = entity["range"] * settings.startup["rampant--unitSpitterRangeScaler"].value + entity["healing"] = entity["healing"] * settings.startup["rampant--unitSpitterHealingScaler"].value elseif (entity.type == "drone") then - entity["health"] = entity["health"] * settings.startup["rampant-unitDroneHealthScaler"].value - entity["movement"] = entity["movement"] * settings.startup["rampant-unitDroneSpeedScaler"].value - entity["distancePerFrame"] = entity["distancePerFrame"] * settings.startup["rampant-unitDroneSpeedScaler"].value - entity["damage"] = entity["damage"] * settings.startup["rampant-unitDroneDamageScaler"].value - entity["damagePerTick"] = entity["damagePerTick"] * settings.startup["rampant-unitDroneDamageScaler"].value - entity["range"] = entity["range"] * settings.startup["rampant-unitDroneRangeScaler"].value - entity["healing"] = entity["healing"] * settings.startup["rampant-unitDroneHealingScaler"].value + entity["health"] = entity["health"] * settings.startup["rampant--unitDroneHealthScaler"].value + entity["movement"] = entity["movement"] * settings.startup["rampant--unitDroneSpeedScaler"].value + entity["distancePerFrame"] = entity["distancePerFrame"] * settings.startup["rampant--unitDroneSpeedScaler"].value + entity["damage"] = entity["damage"] * settings.startup["rampant--unitDroneDamageScaler"].value + entity["damagePerTick"] = entity["damagePerTick"] * settings.startup["rampant--unitDroneDamageScaler"].value + entity["range"] = entity["range"] * settings.startup["rampant--unitDroneRangeScaler"].value + entity["healing"] = entity["healing"] * settings.startup["rampant--unitDroneHealingScaler"].value elseif (entity.type == "biter-spawner") or (entity.type == "spitter-spawner") then - entity["health"] = entity["health"] * settings.startup["rampant-unitSpawnerHealthScaler"].value - entity["unitsOwned"] = entity["unitsOwned"] * settings.startup["rampant-unitSpawnerOwnedScaler"].value - entity["unitsToSpawn"] = entity["unitsToSpawn"] * settings.startup["rampant-unitSpawnerSpawnScaler"].value - entity["spawningCooldownStart"] = entity["spawningCooldownStart"] * settings.startup["rampant-unitSpawnerRespawnScaler"].value - entity["spawningCooldownEnd"] = entity["spawningCooldownEnd"] * settings.startup["rampant-unitSpawnerRespawnScaler"].value - entity["healing"] = entity["healing"] * settings.startup["rampant-unitSpawnerHealingScaler"].value + entity["health"] = entity["health"] * settings.startup["rampant--unitSpawnerHealthScaler"].value + entity["unitsOwned"] = entity["unitsOwned"] * settings.startup["rampant--unitSpawnerOwnedScaler"].value + entity["unitsToSpawn"] = entity["unitsToSpawn"] * settings.startup["rampant--unitSpawnerSpawnScaler"].value + entity["spawningCooldownStart"] = entity["spawningCooldownStart"] * settings.startup["rampant--unitSpawnerRespawnScaler"].value + entity["spawningCooldownEnd"] = entity["spawningCooldownEnd"] * settings.startup["rampant--unitSpawnerRespawnScaler"].value + entity["healing"] = entity["healing"] * settings.startup["rampant--unitSpawnerHealingScaler"].value elseif (entity.type == "turret") then - entity["health"] = entity["health"] * settings.startup["rampant-unitWormHealthScaler"].value - entity["damage"] = entity["damage"] * settings.startup["rampant-unitWormDamageScaler"].value - entity["damagePerTick"] = entity["damagePerTick"] * settings.startup["rampant-unitWormDamageScaler"].value - entity["range"] = entity["range"] * settings.startup["rampant-unitWormRangeScaler"].value - entity["healing"] = entity["healing"] * settings.startup["rampant-unitWormHealingScaler"].value + entity["health"] = entity["health"] * settings.startup["rampant--unitWormHealthScaler"].value + entity["damage"] = entity["damage"] * settings.startup["rampant--unitWormDamageScaler"].value + entity["damagePerTick"] = entity["damagePerTick"] * settings.startup["rampant--unitWormDamageScaler"].value + entity["range"] = entity["range"] * settings.startup["rampant--unitWormRangeScaler"].value + entity["healing"] = entity["healing"] * settings.startup["rampant--unitWormHealingScaler"].value elseif (entity.type == "hive") then - entity["health"] = entity["health"] * settings.startup["rampant-unitHiveHealthScaler"].value - entity["healing"] = entity["healing"] * settings.startup["rampant-unitHiveHealingScaler"].value - entity["spawningCooldownStart"] = entity["spawningCooldownStart"] * settings.startup["rampant-unitHiveRespawnScaler"].value - entity["spawningCooldownEnd"] = entity["spawningCooldownEnd"] * settings.startup["rampant-unitHiveRespawnScaler"].value + entity["health"] = entity["health"] * settings.startup["rampant--unitHiveHealthScaler"].value + entity["healing"] = entity["healing"] * settings.startup["rampant--unitHiveHealingScaler"].value + entity["spawningCooldownStart"] = entity["spawningCooldownStart"] * settings.startup["rampant--unitHiveRespawnScaler"].value + entity["spawningCooldownEnd"] = entity["spawningCooldownEnd"] * settings.startup["rampant--unitHiveRespawnScaler"].value end end @@ -666,7 +666,7 @@ end function swarmUtils.buildUnits(template) local unitSet = {} - local variations = settings.startup["rampant-newEnemyVariations"].value + local variations = settings.startup["rampant--newEnemyVariations"].value for tier=1, 10 do local effectiveLevel = TIER_UPGRADE_SET_10[tier] @@ -741,7 +741,7 @@ local function buildEntities(entityTemplates) end function swarmUtils.buildEntitySpawner(template) - local variations = settings.startup["rampant-newEnemyVariations"].value + local variations = settings.startup["rampant--newEnemyVariations"].value for tier=1, 10 do local effectiveLevel = TIER_UPGRADE_SET_10[tier] @@ -766,7 +766,7 @@ function swarmUtils.buildEntitySpawner(template) end function swarmUtils.buildUnitSpawner(template) - local variations = settings.startup["rampant-newEnemyVariations"].value + local variations = settings.startup["rampant--newEnemyVariations"].value for tier=1, 10 do local effectiveLevel = TIER_UPGRADE_SET_10[tier] @@ -793,7 +793,7 @@ function swarmUtils.buildUnitSpawner(template) end function swarmUtils.buildWorm(template) - local variations = settings.startup["rampant-newEnemyVariations"].value + local variations = settings.startup["rampant--newEnemyVariations"].value for tier=1, 10 do local effectiveLevel = TIER_UPGRADE_SET_10[tier] @@ -1199,7 +1199,7 @@ local function buildUnitSpawnerTemplate(faction, incomingTemplate, unitSets) local unitSet = {} - -- local unitVariations = settings.startup["rampant-newEnemyVariations"].value + -- local unitVariations = settings.startup["rampant--newEnemyVariations"].value for t=1,10 do for i=1,#template.buildSets do diff --git a/prototypes/utils/AttackBall.lua b/prototypes/utils/AttackBall.lua index b0afeee7..0c0964e8 100755 --- a/prototypes/utils/AttackBall.lua +++ b/prototypes/utils/AttackBall.lua @@ -7,7 +7,7 @@ local projectileUtils = require("ProjectileUtils") -- constants -local DISALLOW_FRIENDLY_FIRE = settings.startup["rampant-disallowFriendlyFire"].value +local DISALLOW_FRIENDLY_FIRE = settings.startup["rampant--disallowFriendlyFire"].value -- imported functions diff --git a/prototypes/utils/AttackFlame.lua b/prototypes/utils/AttackFlame.lua index c5dc62b0..a6c58d73 100755 --- a/prototypes/utils/AttackFlame.lua +++ b/prototypes/utils/AttackFlame.lua @@ -9,7 +9,7 @@ local stickerUtils = require("StickerUtils") -- constants -local DISALLOW_FRIENDLY_FIRE = settings.startup["rampant-disallowFriendlyFire"].value +local DISALLOW_FRIENDLY_FIRE = settings.startup["rampant--disallowFriendlyFire"].value -- imported functions diff --git a/prototypes/utils/BiterUtils.lua b/prototypes/utils/BiterUtils.lua index eb7e48ce..4ccda655 100755 --- a/prototypes/utils/BiterUtils.lua +++ b/prototypes/utils/BiterUtils.lua @@ -234,7 +234,7 @@ function biterFunctions.makeBiter(attributes) order = "b-b-a", subgroup="enemies", healing_per_tick = attributes.healing, - damaged_trigger_effect = ((not settings.startup["rampant-removeBloodParticles"].value) and makeDamagedParticle(attributes)) or nil, + damaged_trigger_effect = ((not settings.startup["rampant--removeBloodParticles"].value) and makeDamagedParticle(attributes)) or nil, water_reflection = biter_water_reflection(attributes.scale), resistances = resistances, collision_box = { @@ -260,8 +260,8 @@ function biterFunctions.makeBiter(attributes) corpse = makeBiterCorpse(attributes), dying_explosion = attributes.explosion, dying_trigger_effect = attributes.dyingEffect, - enemy_map_color = ((not settings.startup["rampant-oldRedEnemyMapColor"].value) and attributes.tint2) or nil, - affected_by_tiles = settings.startup["rampant-unitsAffectedByTiles"].value, + enemy_map_color = ((not settings.startup["rampant--oldRedEnemyMapColor"].value) and attributes.tint2) or nil, + affected_by_tiles = settings.startup["rampant--unitsAffectedByTiles"].value, dying_sound = sounds.biter_dying(0.3 + (0.05 * attributes.effectiveLevel)), working_sound = sounds.biter_calls(0.2 + (0.05 * attributes.effectiveLevel)), running_sound_animation_positions = {2,}, @@ -310,14 +310,14 @@ function biterFunctions.makeSpitter(attributes) alternative_attacking_frame_sequence = spitter_alternative_attacking_animation_sequence(), corpse = makeSpitterCorpse(attributes), dying_explosion = attributes.explosion, - enemy_map_color = ((not settings.startup["rampant-oldRedEnemyMapColor"].value) and attributes.tint2) or nil, + enemy_map_color = ((not settings.startup["rampant--oldRedEnemyMapColor"].value) and attributes.tint2) or nil, dying_trigger_effect = attributes.dyingEffect, dying_sound = sounds.spitter_dying(0.3 + (0.05 * attributes.effectiveLevel)), working_sound = sounds.biter_calls(0.2 + (0.05 * attributes.effectiveLevel)), running_sound_animation_positions = {2,}, water_reflection = spitter_water_reflection(attributes.scale), - damaged_trigger_effect = ((not settings.startup["rampant-removeBloodParticles"].value) and makeDamagedParticle(attributes)) or nil, - affected_by_tiles = settings.startup["rampant-unitsAffectedByTiles"].value, + damaged_trigger_effect = ((not settings.startup["rampant--removeBloodParticles"].value) and makeDamagedParticle(attributes)) or nil, + affected_by_tiles = settings.startup["rampant--unitsAffectedByTiles"].value, run_animation = spitterrunanimation(attributes.scale, attributes.tint, attributes.tint2 or attributes.tint), ai_settings = { destroy_when_commands_fail = false, allow_try_return_to_spawner = true, path_resolution_modifier = -5, do_seperation = true } } @@ -368,7 +368,7 @@ function biterFunctions.makeUnitSpawner(attributes) volume = 0.4 + (0.05 * attributes.effectiveLevel) } }, - damaged_trigger_effect = ((not settings.startup["rampant-removeBloodParticles"].value) and makeDamagedParticle(attributes)) or nil, + damaged_trigger_effect = ((not settings.startup["rampant--removeBloodParticles"].value) and makeDamagedParticle(attributes)) or nil, healing_per_tick = attributes.healing or 0.02, collision_box = {{-3.0 * attributes.scale, -2.0 * attributes.scale}, {2.0 * attributes.scale, 2.0 * attributes.scale}}, selection_box = {{-3.5 * attributes.scale, -2.5 * attributes.scale}, {2.5 * attributes.scale, 2.5 * attributes.scale}}, @@ -381,7 +381,7 @@ function biterFunctions.makeUnitSpawner(attributes) dying_trigger_effect = attributes.dyingEffect, max_count_of_owned_units = attributes.unitsOwned or 7, max_friends_around_to_spawn = attributes.unitsToSpawn or 5, - enemy_map_color = ((not settings.startup["rampant-oldRedEnemyMapColor"].value) and attributes.tint2) or nil, + enemy_map_color = ((not settings.startup["rampant--oldRedEnemyMapColor"].value) and attributes.tint2) or nil, animations = { spawner_idle_animation(0, attributes.tint, attributes.scale, attributes.tint2 or attributes.tint), @@ -515,7 +515,7 @@ function biterFunctions.makeWorm(attributes) prepared_alternative_animation = wormPreparedAlternativeAnimation(attributes.scale, attributes.tint, attributes.tint2 or attributes.tint), prepared_alternative_sound = sounds.worm_roar_alternative(0.2 + (0.05 * attributes.effectiveLevel)), - damaged_trigger_effect = ((not settings.startup["rampant-removeBloodParticles"].value) and makeDamagedParticle(attributes)) or nil, + damaged_trigger_effect = ((not settings.startup["rampant--removeBloodParticles"].value) and makeDamagedParticle(attributes)) or nil, starting_attack_speed = 0.034, starting_attack_animation = wormStartAttackAnimation(attributes.scale, attributes.tint, attributes.tint2 or attributes.tint), @@ -529,7 +529,7 @@ function biterFunctions.makeWorm(attributes) integration = worm_integration(attributes.scale), attack_parameters = attributes.attack, secondary_animation = true, - enemy_map_color = ((not settings.startup["rampant-oldRedEnemyMapColor"].value) and attributes.tint2) or nil, + enemy_map_color = ((not settings.startup["rampant--oldRedEnemyMapColor"].value) and attributes.tint2) or nil, random_animation_offset = true, attack_from_start_frame = true, diff --git a/prototypes/utils/ProjectileUtils.lua b/prototypes/utils/ProjectileUtils.lua index d1319e68..479e3688 100755 --- a/prototypes/utils/ProjectileUtils.lua +++ b/prototypes/utils/ProjectileUtils.lua @@ -12,7 +12,7 @@ function projectileUtils.makeProjectile(attributes, attack) direction_only = attributes.attackDirectionOnly, piercing_damage = attributes.attackPiercingDamage or 0, acceleration = attributes.attackAcceleration or 0.02, - force_condition = (settings.startup["rampant-disableCollidingProjectiles"].value and "not-same") or nil, + force_condition = (settings.startup["rampant--disableCollidingProjectiles"].value and "not-same") or nil, action = attack, animation = { diff --git a/settings.lua b/settings.lua index afbe9b69..bd124eb4 100755 --- a/settings.lua +++ b/settings.lua @@ -2,8 +2,8 @@ data:extend({ { type = "bool-setting", - name = "rampant-useDumbProjectiles", - description = "rampant-useDumbProjectiles", + name = "rampant--useDumbProjectiles", + description = "rampant--useDumbProjectiles", setting_type = "startup", default_value = true, order = "a[modifier]-a[projectiles]", @@ -12,7 +12,7 @@ data:extend({ { type = "bool-setting", - name = "rampant-disableCollidingProjectiles", + name = "rampant--disableCollidingProjectiles", setting_type = "startup", default_value = true, order = "b[modifier]-b[trigger]", @@ -21,7 +21,7 @@ data:extend({ { type = "bool-setting", - name = "rampant-unitsAffectedByTiles", + name = "rampant--unitsAffectedByTiles", setting_type = "startup", default_value = true, order = "b[modifier]-b[trigger]", @@ -30,7 +30,7 @@ data:extend({ { type = "bool-setting", - name = "rampant-oldRedEnemyMapColor", + name = "rampant--oldRedEnemyMapColor", setting_type = "startup", default_value = false, order = "b[modifier]-c[trigger]", @@ -39,7 +39,7 @@ data:extend({ { type = "int-setting", - name = "rampant-attackWaveMaxSize", + name = "rampant--attackWaveMaxSize", setting_type = "runtime-global", minimum_value = 20, maximum_value = 600, @@ -50,7 +50,7 @@ data:extend({ { type = "int-setting", - name = "rampant-maxNumberOfSquads", + name = "rampant--maxNumberOfSquads", setting_type = "runtime-global", minimum_value = 1, maximum_value = 300, @@ -61,7 +61,7 @@ data:extend({ { type = "int-setting", - name = "rampant-maxNumberOfBuilders", + name = "rampant--maxNumberOfBuilders", setting_type = "runtime-global", minimum_value = 1, maximum_value = 120, @@ -72,7 +72,7 @@ data:extend({ { type = "int-setting", - name = "rampant-unitAndSpawnerFadeTime", + name = "rampant--unitAndSpawnerFadeTime", setting_type = "startup", minimum_value = 1, maximum_value = 30000000 * 60, @@ -83,7 +83,7 @@ data:extend({ { type = "bool-setting", - name = "rampant-enableFadeTime", + name = "rampant--enableFadeTime", setting_type = "startup", default_value = true, order = "b[modifier]-f[wave]", @@ -92,8 +92,8 @@ data:extend({ { type = "bool-setting", - name = "rampant-permanentNocturnal", - description = "rampant-permanentNocturnal", + name = "rampant--permanentNocturnal", + description = "rampant--permanentNocturnal", setting_type = "runtime-global", default_value = false, order = "b[modifier]-g[ai]", @@ -102,7 +102,7 @@ data:extend({ -- { -- type = "bool-setting", - -- name = "rampant-liteMode", + -- name = "rampant--liteMode", -- setting_type = "startup", -- default_value = false, -- order = "b[modifier]-g[ai]", @@ -111,8 +111,8 @@ data:extend({ { type = "double-setting", - name = "rampant-aiPointsScaler", - description = "rampant-aiPointsScaler", + name = "rampant--aiPointsScaler", + description = "rampant--aiPointsScaler", setting_type = "runtime-global", default_value = 1.0, minimum_value = 0.0, @@ -123,8 +123,8 @@ data:extend({ { type = "bool-setting", - name = "rampant-enableSwarm", - description = "rampant-enableSwarm", + name = "rampant--enableSwarm", + description = "rampant--enableSwarm", setting_type = "startup", default_value = true, order = "b[modifier]-j[unit]", @@ -133,8 +133,8 @@ data:extend({ { type = "bool-setting", - name = "rampant-enableShrinkNestsAndWorms", - description = "rampant-enableShrinkNestsAndWorms", + name = "rampant--enableShrinkNestsAndWorms", + description = "rampant--enableShrinkNestsAndWorms", setting_type = "startup", default_value = true, order = "b[modifier]-j[unit]", @@ -143,7 +143,7 @@ data:extend({ { type = "bool-setting", - name = "rampant-safeBuildings", + name = "rampant--safeBuildings", setting_type = "runtime-global", default_value = false, order = "c[modifier]-a[safe]", @@ -152,7 +152,7 @@ data:extend({ { type = "bool-setting", - name = "rampant-safeBuildings-curvedRail", + name = "rampant--safeBuildings-curvedRail", setting_type = "runtime-global", default_value = false, order = "c[modifier]-b[safe]", @@ -161,7 +161,7 @@ data:extend({ { type = "bool-setting", - name = "rampant-safeBuildings-straightRail", + name = "rampant--safeBuildings-straightRail", setting_type = "runtime-global", default_value = false, order = "c[modifier]-c[safe]", @@ -170,7 +170,7 @@ data:extend({ { type = "bool-setting", - name = "rampant-safeBuildings-bigElectricPole", + name = "rampant--safeBuildings-bigElectricPole", setting_type = "runtime-global", default_value = false, order = "c[modifier]-d[safe]", @@ -179,7 +179,7 @@ data:extend({ { type = "bool-setting", - name = "rampant-safeBuildings-railSignals", + name = "rampant--safeBuildings-railSignals", setting_type = "runtime-global", default_value = false, order = "c[modifier]-e[safe]", @@ -188,7 +188,7 @@ data:extend({ { type = "bool-setting", - name = "rampant-safeBuildings-railChainSignals", + name = "rampant--safeBuildings-railChainSignals", setting_type = "runtime-global", default_value = false, order = "c[modifier]-f[safe]", @@ -197,7 +197,7 @@ data:extend({ { type = "bool-setting", - name = "rampant-safeBuildings-trainStops", + name = "rampant--safeBuildings-trainStops", setting_type = "runtime-global", default_value = false, order = "c[modifier]-g[safe]", @@ -206,7 +206,7 @@ data:extend({ { type = "bool-setting", - name = "rampant-safeBuildings-lamps", + name = "rampant--safeBuildings-lamps", setting_type = "runtime-global", default_value = false, order = "c[modifier]-h[safe]", @@ -215,8 +215,8 @@ data:extend({ { type = "bool-setting", - name = "rampant-addWallResistanceAcid", - description = "rampant-addWallResistanceAcid", + name = "rampant--addWallResistanceAcid", + description = "rampant--addWallResistanceAcid", setting_type = "startup", default_value = false, order = "c[modifier]-j[damage]", @@ -225,7 +225,7 @@ data:extend({ { type = "bool-setting", - name = "rampant-disallowFriendlyFire", + name = "rampant--disallowFriendlyFire", setting_type = "startup", default_value = false, order = "c[modifier]-k[trigger]", @@ -235,8 +235,8 @@ data:extend({ { type = "double-setting", - name = "rampant-deadZoneFrequency", - description = "rampant-deadZoneFrequency", + name = "rampant--deadZoneFrequency", + description = "rampant--deadZoneFrequency", setting_type = "runtime-global", default_value = 0.1, minimum_value = 0.0, @@ -247,8 +247,8 @@ data:extend({ { type = "bool-setting", - name = "rampant-newEnemies", - description = "rampant-newEnemies", + name = "rampant--newEnemies", + description = "rampant--newEnemies", setting_type = "startup", default_value = false, order = "e[modifier]-a[unit]", @@ -257,8 +257,8 @@ data:extend({ { type = "int-setting", - name = "rampant-enemySeed", - description = "rampant-enemySeed", + name = "rampant--enemySeed", + description = "rampant--enemySeed", setting_type = "startup", minimum_value = 0, default_value = 0, @@ -268,8 +268,8 @@ data:extend({ { type = "int-setting", - name = "rampant-newEnemyVariations", - description = "rampant-newEnemyVariations", + name = "rampant--newEnemyVariations", + description = "rampant--newEnemyVariations", setting_type = "startup", minimum_value = 1, maximum_value = 20, @@ -280,7 +280,7 @@ data:extend({ { type = "int-setting", - name = "rampant-tierStart", + name = "rampant--tierStart", setting_type = "startup", default_value = 1, minimum_value = 1, @@ -291,7 +291,7 @@ data:extend({ { type = "int-setting", - name = "rampant-tierEnd", + name = "rampant--tierEnd", setting_type = "startup", minimum_value = 1, maximum_value = 10, @@ -302,7 +302,7 @@ data:extend({ { type = "bool-setting", - name = "rampant-acidEnemy", + name = "rampant--acidEnemy", setting_type = "startup", default_value = true, order = "l[modifier]-n[unit]", @@ -311,7 +311,7 @@ data:extend({ { type = "bool-setting", - name = "rampant-physicalEnemy", + name = "rampant--physicalEnemy", setting_type = "startup", default_value = true, order = "l[modifier]-o[unit]", @@ -320,7 +320,7 @@ data:extend({ { type = "bool-setting", - name = "rampant-suicideEnemy", + name = "rampant--suicideEnemy", setting_type = "startup", default_value = true, order = "l[modifier]-p[unit]", @@ -329,7 +329,7 @@ data:extend({ { type = "bool-setting", - name = "rampant-fireEnemy", + name = "rampant--fireEnemy", setting_type = "startup", default_value = true, order = "l[modifier]-q[unit]", @@ -338,7 +338,7 @@ data:extend({ { type = "bool-setting", - name = "rampant-electricEnemy", + name = "rampant--electricEnemy", setting_type = "startup", default_value = true, order = "l[modifier]-r[unit]", @@ -347,7 +347,7 @@ data:extend({ { type = "bool-setting", - name = "rampant-nuclearEnemy", + name = "rampant--nuclearEnemy", setting_type = "startup", default_value = true, order = "l[modifier]-s[unit]", @@ -356,7 +356,7 @@ data:extend({ { type = "bool-setting", - name = "rampant-infernoEnemy", + name = "rampant--infernoEnemy", setting_type = "startup", default_value = true, order = "l[modifier]-t[unit]", @@ -365,7 +365,7 @@ data:extend({ { type = "bool-setting", - name = "rampant-fastEnemy", + name = "rampant--fastEnemy", setting_type = "startup", default_value = true, order = "l[modifier]-u[unit]", @@ -374,7 +374,7 @@ data:extend({ { type = "bool-setting", - name = "rampant-trollEnemy", + name = "rampant--trollEnemy", setting_type = "startup", default_value = true, order = "l[modifier]-v[unit]", @@ -383,7 +383,7 @@ data:extend({ { type = "bool-setting", - name = "rampant-spawnerEnemy", + name = "rampant--spawnerEnemy", setting_type = "startup", default_value = true, order = "l[modifier]-w[unit]", @@ -392,7 +392,7 @@ data:extend({ { type = "bool-setting", - name = "rampant-waspEnemy", + name = "rampant--waspEnemy", setting_type = "startup", default_value = true, order = "l[modifier]-x[unit]", @@ -401,7 +401,7 @@ data:extend({ { type = "bool-setting", - name = "rampant-laserEnemy", + name = "rampant--laserEnemy", setting_type = "startup", default_value = true, order = "l[modifier]-y[unit]", @@ -410,7 +410,7 @@ data:extend({ { type = "bool-setting", - name = "rampant-energyThiefEnemy", + name = "rampant--energyThiefEnemy", setting_type = "startup", default_value = true, order = "l[modifier]-z[unit]", @@ -419,7 +419,7 @@ data:extend({ { type = "bool-setting", - name = "rampant-poisonEnemy", + name = "rampant--poisonEnemy", setting_type = "startup", default_value = true, order = "l[modifier]-za[unit]", @@ -428,7 +428,7 @@ data:extend({ { type = "bool-setting", - name = "rampant-unitSpawnerBreath", + name = "rampant--unitSpawnerBreath", setting_type = "startup", default_value = true, order = "l[modifier]-zb[unit]", @@ -437,8 +437,8 @@ data:extend({ -- { -- type = "bool-setting", - -- name = "rampant-disableVanillaAI", - -- description = "rampant-disableVanillaAI", + -- name = "rampant--disableVanillaAI", + -- description = "rampant--disableVanillaAI", -- setting_type = 'runtime-global', -- default_value = true, -- order = "m[total]-a[ai]", @@ -447,8 +447,8 @@ data:extend({ { type = "bool-setting", - name = "rampant-enableMigration", - description = "rampant-enableMigration", + name = "rampant--enableMigration", + description = "rampant--enableMigration", setting_type = 'runtime-global', default_value = true, order = "m[total]-b[ai]", @@ -457,7 +457,7 @@ data:extend({ { type = "bool-setting", - name = "rampant-raidAIToggle", + name = "rampant--raidAIToggle", setting_type = "runtime-global", default_value = true, order = "m[total]-c[ai]", @@ -466,7 +466,7 @@ data:extend({ { type = "bool-setting", - name = "rampant-siegeAIToggle", + name = "rampant--siegeAIToggle", setting_type = "runtime-global", default_value = true, order = "m[total]-c[ai]", @@ -475,8 +475,8 @@ data:extend({ { type = "bool-setting", - name = "rampant-removeBloodParticles", - description = "rampant-reduceBloodParticles", + name = "rampant--removeBloodParticles", + description = "rampant--reduceBloodParticles", setting_type = "startup", default_value = false, order = "n[modifier]-a[optimize]", @@ -485,7 +485,7 @@ data:extend({ -- { -- type = "bool-setting", - -- name = "rampant-enableFullMapScan", + -- name = "rampant--enableFullMapScan", -- setting_type = "runtime-global", -- default_value = true, -- order = "n[modifier]-a[optimize]", @@ -494,7 +494,7 @@ data:extend({ { type = "bool-setting", - name = "rampant-unkillableLogisticRobots", + name = "rampant--unkillableLogisticRobots", setting_type = "startup", default_value = false, order = "n[modifier]-b[optimize]", @@ -503,7 +503,7 @@ data:extend({ { type = "bool-setting", - name = "rampant-unkillableConstructionRobots", + name = "rampant--unkillableConstructionRobots", setting_type = "startup", default_value = false, order = "n[modifier]-c[optimize]", @@ -512,8 +512,8 @@ data:extend({ { type = "double-setting", - name = "rampant-unitBiterHealthScaler", - description = "rampant-unitBiterHealthScaler", + name = "rampant--unitBiterHealthScaler", + description = "rampant--unitBiterHealthScaler", setting_type = "startup", default_value = 1.0, minimum_value = 0.0001, @@ -524,8 +524,8 @@ data:extend({ { type = "double-setting", - name = "rampant-unitBiterHealingScaler", - description = "rampant-unitBiterHealingScaler", + name = "rampant--unitBiterHealingScaler", + description = "rampant--unitBiterHealingScaler", setting_type = "startup", default_value = 1.0, minimum_value = 0.0001, @@ -536,8 +536,8 @@ data:extend({ { type = "double-setting", - name = "rampant-unitBiterSpeedScaler", - description = "rampant-unitBiterSpeedScaler", + name = "rampant--unitBiterSpeedScaler", + description = "rampant--unitBiterSpeedScaler", setting_type = "startup", default_value = 1.0, minimum_value = 0.0001, @@ -548,8 +548,8 @@ data:extend({ { type = "double-setting", - name = "rampant-unitBiterDamageScaler", - description = "rampant-unitBiterDamageScaler", + name = "rampant--unitBiterDamageScaler", + description = "rampant--unitBiterDamageScaler", setting_type = "startup", default_value = 1.0, minimum_value = 0.0001, @@ -560,8 +560,8 @@ data:extend({ { type = "double-setting", - name = "rampant-unitBiterRangeScaler", - description = "rampant-unitBiterRangeScaler", + name = "rampant--unitBiterRangeScaler", + description = "rampant--unitBiterRangeScaler", setting_type = "startup", default_value = 1.0, minimum_value = 0.0001, @@ -572,8 +572,8 @@ data:extend({ { type = "double-setting", - name = "rampant-unitSpitterHealthScaler", - description = "rampant-unitSpitterHealthScaler", + name = "rampant--unitSpitterHealthScaler", + description = "rampant--unitSpitterHealthScaler", setting_type = "startup", default_value = 1.0, minimum_value = 0.0001, @@ -584,8 +584,8 @@ data:extend({ { type = "double-setting", - name = "rampant-unitSpitterHealingScaler", - description = "rampant-unitSpitterHealingScaler", + name = "rampant--unitSpitterHealingScaler", + description = "rampant--unitSpitterHealingScaler", setting_type = "startup", default_value = 1.0, minimum_value = 0.0001, @@ -596,8 +596,8 @@ data:extend({ { type = "double-setting", - name = "rampant-unitSpitterSpeedScaler", - description = "rampant-unitSpitterSpeedScaler", + name = "rampant--unitSpitterSpeedScaler", + description = "rampant--unitSpitterSpeedScaler", setting_type = "startup", default_value = 1.0, minimum_value = 0.0001, @@ -608,8 +608,8 @@ data:extend({ { type = "double-setting", - name = "rampant-unitSpitterDamageScaler", - description = "rampant-unitSpitterDamageScaler", + name = "rampant--unitSpitterDamageScaler", + description = "rampant--unitSpitterDamageScaler", setting_type = "startup", default_value = 1.0, minimum_value = 0.0001, @@ -620,8 +620,8 @@ data:extend({ { type = "double-setting", - name = "rampant-unitSpitterRangeScaler", - description = "rampant-unitSpitterRangeScaler", + name = "rampant--unitSpitterRangeScaler", + description = "rampant--unitSpitterRangeScaler", setting_type = "startup", default_value = 1.0, minimum_value = 0.0001, @@ -632,8 +632,8 @@ data:extend({ { type = "double-setting", - name = "rampant-unitDroneHealthScaler", - description = "rampant-unitDroneHealthScaler", + name = "rampant--unitDroneHealthScaler", + description = "rampant--unitDroneHealthScaler", setting_type = "startup", default_value = 1.0, minimum_value = 0.0001, @@ -644,8 +644,8 @@ data:extend({ { type = "double-setting", - name = "rampant-unitDroneHealingScaler", - description = "rampant-unitDroneHealingScaler", + name = "rampant--unitDroneHealingScaler", + description = "rampant--unitDroneHealingScaler", setting_type = "startup", default_value = 1.0, minimum_value = 0.0001, @@ -656,8 +656,8 @@ data:extend({ { type = "double-setting", - name = "rampant-unitDroneSpeedScaler", - description = "rampant-unitDroneSpeedScaler", + name = "rampant--unitDroneSpeedScaler", + description = "rampant--unitDroneSpeedScaler", setting_type = "startup", default_value = 1.0, minimum_value = 0.0001, @@ -668,8 +668,8 @@ data:extend({ { type = "double-setting", - name = "rampant-unitDroneDamageScaler", - description = "rampant-unitDroneDamageScaler", + name = "rampant--unitDroneDamageScaler", + description = "rampant--unitDroneDamageScaler", setting_type = "startup", default_value = 1.0, minimum_value = 0.0001, @@ -680,8 +680,8 @@ data:extend({ { type = "double-setting", - name = "rampant-unitDroneRangeScaler", - description = "rampant-unitDroneRangeScaler", + name = "rampant--unitDroneRangeScaler", + description = "rampant--unitDroneRangeScaler", setting_type = "startup", default_value = 1.0, minimum_value = 0.0001, @@ -692,8 +692,8 @@ data:extend({ { type = "double-setting", - name = "rampant-unitWormHealthScaler", - description = "rampant-unitWormHealthScaler", + name = "rampant--unitWormHealthScaler", + description = "rampant--unitWormHealthScaler", setting_type = "startup", default_value = 1.0, minimum_value = 0.0001, @@ -704,8 +704,8 @@ data:extend({ { type = "double-setting", - name = "rampant-unitWormHealingScaler", - description = "rampant-unitWormHealingScaler", + name = "rampant--unitWormHealingScaler", + description = "rampant--unitWormHealingScaler", setting_type = "startup", default_value = 1.0, minimum_value = 0.0001, @@ -716,8 +716,8 @@ data:extend({ { type = "double-setting", - name = "rampant-unitWormDamageScaler", - description = "rampant-unitWormDamageScaler", + name = "rampant--unitWormDamageScaler", + description = "rampant--unitWormDamageScaler", setting_type = "startup", default_value = 1.0, minimum_value = 0.0001, @@ -728,8 +728,8 @@ data:extend({ { type = "double-setting", - name = "rampant-unitWormRangeScaler", - description = "rampant-unitWormRangeScaler", + name = "rampant--unitWormRangeScaler", + description = "rampant--unitWormRangeScaler", setting_type = "startup", default_value = 1.0, minimum_value = 0.0001, @@ -740,8 +740,8 @@ data:extend({ { type = "double-setting", - name = "rampant-unitSpawnerHealthScaler", - description = "rampant-unitSpawnerHealthScaler", + name = "rampant--unitSpawnerHealthScaler", + description = "rampant--unitSpawnerHealthScaler", setting_type = "startup", default_value = 1.0, minimum_value = 0.0001, @@ -752,8 +752,8 @@ data:extend({ { type = "double-setting", - name = "rampant-unitSpawnerHealingScaler", - description = "rampant-unitSpawnerHealingScaler", + name = "rampant--unitSpawnerHealingScaler", + description = "rampant--unitSpawnerHealingScaler", setting_type = "startup", default_value = 1.0, minimum_value = 0.0001, @@ -764,8 +764,8 @@ data:extend({ { type = "double-setting", - name = "rampant-unitSpawnerOwnedScaler", - description = "rampant-unitSpawnerOwnedScaler", + name = "rampant--unitSpawnerOwnedScaler", + description = "rampant--unitSpawnerOwnedScaler", setting_type = "startup", default_value = 1.0, minimum_value = 0.0001, @@ -776,8 +776,8 @@ data:extend({ { type = "double-setting", - name = "rampant-unitSpawnerSpawnScaler", - description = "rampant-unitSpawnerSpawnScaler", + name = "rampant--unitSpawnerSpawnScaler", + description = "rampant--unitSpawnerSpawnScaler", setting_type = "startup", default_value = 1.0, minimum_value = 0.0001, @@ -788,8 +788,8 @@ data:extend({ { type = "double-setting", - name = "rampant-unitSpawnerRespawnScaler", - description = "rampant-unitSpawnerRespawnScaler", + name = "rampant--unitSpawnerRespawnScaler", + description = "rampant--unitSpawnerRespawnScaler", setting_type = "startup", default_value = 1.0, minimum_value = 0.0001, @@ -801,8 +801,8 @@ data:extend({ { type = "double-setting", - name = "rampant-unitHiveRespawnScaler", - description = "rampant-unitHiveRespawnScaler", + name = "rampant--unitHiveRespawnScaler", + description = "rampant--unitHiveRespawnScaler", setting_type = "startup", default_value = 1.0, minimum_value = 0.0001, @@ -813,8 +813,8 @@ data:extend({ { type = "double-setting", - name = "rampant-unitHiveHealthScaler", - description = "rampant-unitHiveHealthScaler", + name = "rampant--unitHiveHealthScaler", + description = "rampant--unitHiveHealthScaler", setting_type = "startup", default_value = 1.0, minimum_value = 0.0001, @@ -825,8 +825,8 @@ data:extend({ { type = "double-setting", - name = "rampant-unitHiveHealingScaler", - description = "rampant-unitHiveHealingScaler", + name = "rampant--unitHiveHealingScaler", + description = "rampant--unitHiveHealingScaler", setting_type = "startup", default_value = 1.0, minimum_value = 0.0001, @@ -837,7 +837,7 @@ data:extend({ { type = "bool-setting", - name = "rampant-attackWaveGenerationUsePlayerProximity", + name = "rampant--attackWaveGenerationUsePlayerProximity", setting_type = "runtime-global", default_value = true, order = "b[modifier]-b[trigger]", @@ -847,20 +847,12 @@ data:extend({ { type = "double-setting", - name = "rampant-attackPlayerThreshold", + name = "rampant--attackPlayerThreshold", setting_type = "runtime-global", minimum_value = 0, default_value = 20, order = "b[modifier]-c[threshold]", per_user = false - }, + } - { - type = "bool-setting", - name = "rampant-suppress-surface-change-warnings", - setting_type = "runtime-per-user", - default_value = false, - order = "b[modifier]-b[trigger]", - per_user = true - }, })