1
0
mirror of https://github.com/veden/Rampant.git synced 2025-01-14 02:23:01 +02:00

see changelog

This commit is contained in:
Aaron Veden 2019-02-02 22:01:28 -08:00
parent dbd2d92e55
commit 97d7595e42
13 changed files with 760 additions and 426 deletions

View File

@ -217,10 +217,10 @@ function upgrade.attempt(natives)
game.surfaces[natives.activeSurface].print("Rampant - Version 0.16.22") game.surfaces[natives.activeSurface].print("Rampant - Version 0.16.22")
global.version = constants.VERSION_57 global.version = constants.VERSION_57
end end
if (global.version < constants.VERSION_69) then if (global.version < constants.VERSION_70) then
game.surfaces[natives.activeSurface].print("Rampant - Version 0.16.34") game.surfaces[natives.activeSurface].print("Rampant - Version 0.16.35")
global.version = constants.VERSION_69 global.version = constants.VERSION_70
end end
return starting ~= global.version, natives return starting ~= global.version, natives

View File

@ -1,3 +1,19 @@
---------------------------------------------------------------------------------------------------
Version: 0.16.35
Date: 2. 1. 2019
Improvements:
- Added options to toggle new enemy factions
- Randomized base alignment array with map seed so faction distribution changes from map to map
- Added a setting to disable seige ai state, which may have been causing extra non pollution biter movements
Tweaks:
- Added upgrade path for neutral faction to laser resist faction
- Removed upgrade path from electric biters to laser resist faction
- Increased nest upgrade chance from 0.05% to 1.5%
Bugfixes:
- Fix for base upgrade framework to leveling nests correctly due to rounding errors in floating percision for lookup
- Fix for migration toggle setting not preventing the ai migration state
- Fix for entity upgrades allowing for a evolution decrease instead of start from current evolution requirement
--------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------
Version: 0.16.34 Version: 0.16.34
Date: 10. 19. 2018 Date: 10. 19. 2018
@ -10,9 +26,9 @@ Date: 10. 19. 2018
- Reduced Retreat pheromone max level from 20000 to 17000 - Reduced Retreat pheromone max level from 20000 to 17000
- Reduced Retreat pheromone min level from 1500 to 1000 - Reduced Retreat pheromone min level from 1500 to 1000
- Increased death generator from 75 to 125 - Increased death generator from 75 to 125
- Increased movement persistance from 0.875 to 0.975 - Increased movement persistence from 0.875 to 0.975
- Increased player persistance from 0.98 to 0.97 - Increased player persistence from 0.98 to 0.97
- Increased resource persistance from 0.99 to 0.97 - Increased resource persistence from 0.99 to 0.97
Bugfixes: Bugfixes:
- Fix for unit groups not being able to move off of impassable terrain - Fix for unit groups not being able to move off of impassable terrain
- Fix for incorrect variable name in interop - Fix for incorrect variable name in interop

View File

@ -296,6 +296,7 @@ local function onModSettingsChange(event)
upgrade.compareTable(natives, "deadZoneFrequency", settings.global["rampant-deadZoneFrequency"].value) upgrade.compareTable(natives, "deadZoneFrequency", settings.global["rampant-deadZoneFrequency"].value)
upgrade.compareTable(natives, "raidAIToggle", settings.global["rampant-raidAIToggle"].value) upgrade.compareTable(natives, "raidAIToggle", settings.global["rampant-raidAIToggle"].value)
upgrade.compareTable(natives, "seigeAIToggle", settings.global["rampant-seigeAIToggle"].value)
upgrade.compareTable(natives, "attackThresholdMin", settings.global["rampant-attackWaveGenerationThresholdMin"].value) upgrade.compareTable(natives, "attackThresholdMin", settings.global["rampant-attackWaveGenerationThresholdMin"].value)
upgrade.compareTable(natives, "attackThresholdMax", settings.global["rampant-attackWaveGenerationThresholdMax"].value) upgrade.compareTable(natives, "attackThresholdMax", settings.global["rampant-attackWaveGenerationThresholdMax"].value)

View File

@ -21,21 +21,45 @@ local laser = require("prototypes/Laser")
if settings.startup["rampant-newEnemies"].value then if settings.startup["rampant-newEnemies"].value then
neutral.addFaction() neutral.addFaction()
if settings.startup["rampant-acidEnemy"].value then
acid.addFaction() acid.addFaction()
end
if settings.startup["rampant-physicalEnemy"].value then
physical.addFaction() physical.addFaction()
end
if settings.startup["rampant-suicideEnemy"].value then
suicide.addFaction() suicide.addFaction()
end
if settings.startup["rampant-fireEnemy"].value then
fire.addFaction() fire.addFaction()
end
if settings.startup["rampant-electricEnemy"].value then
electric.addFaction() electric.addFaction()
end
if settings.startup["rampant-nuclearEnemy"].value then
nuclear.addFaction() nuclear.addFaction()
end
if settings.startup["rampant-infernoEnemy"].value then
inferno.addFaction() inferno.addFaction()
end
if settings.startup["rampant-fastEnemy"].value then
fast.addFaction() fast.addFaction()
end
if settings.startup["rampant-trollEnemy"].value then
troll.addFaction() troll.addFaction()
end
if settings.startup["rampant-spawnerEnemy"].value then
spawner.addFaction()
end
if settings.startup["rampant-waspEnemy"].value then
wasp.addFaction()
end
if settings.startup["rampant-laserEnemy"].value then
laser.addFaction()
end
-- require("prototypes/Decaying") -- require("prototypes/Decaying")
-- require("prototypes/Poison") -- require("prototypes/Poison")
-- require("prototypes/Undying") -- require("prototypes/Undying")
spawner.addFaction()
wasp.addFaction()
laser.addFaction()
-- energyThief.addFaction() -- energyThief.addFaction()
for _, unitSpawner in pairs(data.raw["unit-spawner"]) do for _, unitSpawner in pairs(data.raw["unit-spawner"]) do

View File

@ -1,7 +1,7 @@
{ {
"name" : "Rampant", "name" : "Rampant",
"factorio_version" : "0.16", "factorio_version" : "0.16",
"version" : "0.16.34", "version" : "0.16.35",
"title" : "Rampant", "title" : "Rampant",
"author" : "Veden", "author" : "Veden",
"homepage" : "https://forums.factorio.com/viewtopic.php?f=94&t=31445", "homepage" : "https://forums.factorio.com/viewtopic.php?f=94&t=31445",

View File

@ -111,9 +111,9 @@ function aiPlanning.planning(natives, evolution_factor, tick, surface, connected
roll = mRandom() roll = mRandom()
if (roll < 0.70) then if (roll < 0.70) then
natives.state = AI_STATE_AGGRESSIVE natives.state = AI_STATE_AGGRESSIVE
elseif (roll < 0.75) then elseif ((natives.enabledMigration) and (roll < 0.75)) then
natives.state = AI_STATE_MIGRATING natives.state = AI_STATE_MIGRATING
elseif (roll < 0.80) then elseif ((natives.seigeAIToggle) and (roll < 0.80)) then
natives.state = AI_STATE_SIEGE natives.state = AI_STATE_SIEGE
elseif ((natives.raidAIToggle) and (evolution_factor >= 0.04)) then elseif ((natives.raidAIToggle) and (evolution_factor >= 0.04)) then
natives.state = AI_STATE_RAIDING natives.state = AI_STATE_RAIDING

View File

@ -25,7 +25,7 @@ end
function aiPredicates.canMigrate(natives, surface) function aiPredicates.canMigrate(natives, surface)
return ((natives.state == AI_STATE_MIGRATING) or return ((natives.state == AI_STATE_MIGRATING) or
(natives.state == AI_STATE_SIEGE) or (natives.state == AI_STATE_SIEGE) or
aiPredicates.canAttackDark(natives, surface)) and natives.expansion aiPredicates.canAttackDark(natives, surface)) and natives.expansion and natives.enabledMigration
end end
function aiPredicates.isDark(surface) function aiPredicates.isDark(surface)

View File

@ -206,7 +206,7 @@ function baseUtils.findNearbyBase(map, chunk, natives)
return foundBase return foundBase
end end
local function findEntityUpgrade(baseAlignment, evoIndex, natives, evolutionTable) local function findEntityUpgrade(baseAlignment, currentEvo, evoIndex, natives, evolutionTable)
local alignments = evolutionTable[baseAlignment] local alignments = evolutionTable[baseAlignment]
@ -216,11 +216,10 @@ local function findEntityUpgrade(baseAlignment, evoIndex, natives, evolutionTabl
local entity = nil local entity = nil
for evo=evoIndex, 0, -EVOLUTION_INCREMENTS do for evo,entitySet in pairs(alignments) do
local entitySet = alignments[roundToFloor(evo, EVOLUTION_INCREMENTS)] if (currentEvo <= evo) and (evo <= evoIndex) and entitySet and (#entitySet > 0) then
if entitySet and (#entitySet > 0) then
entity = entitySet[mRandom(#entitySet)] entity = entitySet[mRandom(#entitySet)]
if (mRandom() > 0.35) then if (mRandom() < 0.1) then
break break
end end
end end
@ -231,16 +230,41 @@ end
local function findBaseInitialAlignment(evoIndex, natives, evolutionTable) local function findBaseInitialAlignment(evoIndex, natives, evolutionTable)
local evoTop = roundToFloor(gaussianRandomRange(evoIndex, evoIndex * 0.3, 0, evoIndex), EVOLUTION_INCREMENTS) local evoTop = gaussianRandomRange(evoIndex, evoIndex * 0.3, 0, evoIndex)
local pickedEvo
local alignment local alignment
for evo=evoTop, 0, -EVOLUTION_INCREMENTS do for _,evo in pairs(natives.evolutionTableAlignmentOrder) do
local entitySet = evolutionTable[roundToFloor(evo, EVOLUTION_INCREMENTS)]
if entitySet and (#entitySet > 0) then local entitySet = evolutionTable[evo]
if (evo <= evoTop) and entitySet and (#entitySet > 0) then
if not pickedEvo then
alignment = entitySet[mRandom(#entitySet)]
pickedEvo = evo
else
local diff = pickedEvo - evo
if (diff > 0.2) then
if (mRandom() < 0.10) then
alignment = entitySet[mRandom(#entitySet)] alignment = entitySet[mRandom(#entitySet)]
if (mRandom() > 0.35) then
break break
end end
elseif (diff >= 0) then
if (mRandom() < 0.15)then
alignment = entitySet[mRandom(#entitySet)]
break
end
elseif (diff <= -0.2) then
if (mRandom() < 0.35)then
alignment = entitySet[mRandom(#entitySet)]
break
end
elseif (diff < 0) then
if (mRandom() < 0.25)then
alignment = entitySet[mRandom(#entitySet)]
break
end
end
end
end end
end end
@ -276,6 +300,7 @@ end
function baseUtils.upgradeEntity(entity, surface, baseAlignment, natives, evolutionFactor) function baseUtils.upgradeEntity(entity, surface, baseAlignment, natives, evolutionFactor)
local position = entity.position local position = entity.position
local entityType = entity.type local entityType = entity.type
local currentEvo = entity.prototype.build_base_evolution_requirement or 0
entity.destroy() entity.destroy()
if not baseAlignment or (baseAlignment == BASE_ALIGNMENT_DEADZONE) then if not baseAlignment or (baseAlignment == BASE_ALIGNMENT_DEADZONE) then
@ -285,9 +310,9 @@ function baseUtils.upgradeEntity(entity, surface, baseAlignment, natives, evolut
local distance = roundToFloor(mMin(1, local distance = roundToFloor(mMin(1,
euclideanDistancePoints(position.x, position.y, 0, 0) * BASE_DISTANCE_TO_EVO_INDEX), euclideanDistancePoints(position.x, position.y, 0, 0) * BASE_DISTANCE_TO_EVO_INDEX),
EVOLUTION_INCREMENTS) EVOLUTION_INCREMENTS)
local evoIndex = mMax(distance, roundToFloor(evolutionFactor, EVOLUTION_INCREMENTS)) local evoIndex = mMax(distance, evolutionFactor)
local spawnerName = findEntityUpgrade(baseAlignment, evoIndex, natives, ((entityType == "unit-spawner") and natives.evolutionTableUnitSpawner) or natives.evolutionTableWorm) local spawnerName = findEntityUpgrade(baseAlignment, currentEvo, evoIndex, natives, ((entityType == "unit-spawner") and natives.evolutionTableUnitSpawner) or natives.evolutionTableWorm)
if spawnerName then if spawnerName then
local newPosition = surface.find_non_colliding_position(spawnerName, position, CHUNK_SIZE, 4) local newPosition = surface.find_non_colliding_position(spawnerName, position, CHUNK_SIZE, 4)
if newPosition then if newPosition then
@ -330,7 +355,7 @@ function baseUtils.processBase(map, chunk, surface, natives, tick, base, evoluti
entity = surface.find_entities_filtered(map.filteredEntitiesWormQueryLimited) entity = surface.find_entities_filtered(map.filteredEntitiesWormQueryLimited)
cost = BASE_WORM_UPGRADE cost = BASE_WORM_UPGRADE
end end
elseif (choice >= 0.995) then elseif (choice >= 0.985) then
if (base.points >= BASE_UPGRADE) then if (base.points >= BASE_UPGRADE) then
if upgradeBase(base) then if upgradeBase(base) then
base.points = base.points - BASE_UPGRADE base.points = base.points - BASE_UPGRADE
@ -355,8 +380,8 @@ function baseUtils.createBase(map, natives, evolutionFactor, chunk, surface, tic
local meanLevel = mFloor(distance / 200) local meanLevel = mFloor(distance / 200)
local distanceIndex = roundToFloor(mMin(1, distance * BASE_DISTANCE_TO_EVO_INDEX), EVOLUTION_INCREMENTS) local distanceIndex = mMin(1, distance * BASE_DISTANCE_TO_EVO_INDEX)
local evoIndex = mMax(distanceIndex, roundToFloor(evolutionFactor, EVOLUTION_INCREMENTS)) local evoIndex = mMax(distanceIndex, evolutionFactor)
local alignment local alignment
@ -393,7 +418,7 @@ function baseUtils.createBase(map, natives, evolutionFactor, chunk, surface, tic
end end
local function fileEntity(baseAlignment, entity, evolutionTable) local function fileEntity(baseAlignment, entity, evolutionTable)
local evoRequirement = mFloor(entity.prototype.build_base_evolution_requirement/EVOLUTION_INCREMENTS) * EVOLUTION_INCREMENTS local evoRequirement = mMin(entity.prototype.build_base_evolution_requirement, 1)
local eTable = evolutionTable[baseAlignment] local eTable = evolutionTable[baseAlignment]
if not eTable then if not eTable then
eTable = {} eTable = {}
@ -408,8 +433,8 @@ local function fileEntity(baseAlignment, entity, evolutionTable)
end end
local function fileAlignment(baseAlignment, evolution, evolutionTable) local function fileAlignment(baseAlignment, evolution, evolutionTable)
local evoRequirement = mFloor(evolution/EVOLUTION_INCREMENTS) * EVOLUTION_INCREMENTS local evoRequirement = mMin(evolution, 1)
local eTable = evolutionTable[evoRequirement] local eTable = evolutionTable[evolution]
if not eTable then if not eTable then
eTable = {} eTable = {}
evolutionTable[evoRequirement] = eTable evolutionTable[evoRequirement] = eTable
@ -417,6 +442,20 @@ local function fileAlignment(baseAlignment, evolution, evolutionTable)
eTable[#eTable+1] = baseAlignment eTable[#eTable+1] = baseAlignment
end end
local function nonRepeatingRandom(evoTable, rg)
local ordering = {}
for evo in pairs(evoTable) do
ordering[#ordering+1] = evo
end
for i=#ordering,1,-1 do
local s = rg(i)
local t = ordering[i]
ordering[i] = ordering[s]
ordering[s] = t
end
return ordering
end
local function processUnitClass(biterVariation, biterTier, spitterVariation, spitterTier, wormVariation, wormTier, surface, natives, baseAlignment, baseAlignmentString) local function processUnitClass(biterVariation, biterTier, spitterVariation, spitterTier, wormVariation, wormTier, surface, natives, baseAlignment, baseAlignmentString)
local position = { x = 0, y = 0 } local position = { x = 0, y = 0 }
@ -467,6 +506,8 @@ function baseUtils.rebuildNativeTables(natives, surface, rg)
natives.evolutionTableAlignment) natives.evolutionTableAlignment)
end end
natives.evolutionTableAlignmentOrder = nonRepeatingRandom(natives.evolutionTableAlignment, natives.randomGenerator)
if ENABLED_NE_UNITS then if ENABLED_NE_UNITS then
processNEUnitClass(natives, surface) processNEUnitClass(natives, surface)
end end
@ -486,6 +527,7 @@ function baseUtils.rebuildNativeTables(natives, surface, rg)
BASE_ALIGNMENT_NEUTRAL, BASE_ALIGNMENT_NEUTRAL,
"neutral") "neutral")
if settings.startup["rampant-acidEnemy"].value then
processUnitClass(ACID_NEST_VARIATIONS, processUnitClass(ACID_NEST_VARIATIONS,
ACID_NEST_TIERS, ACID_NEST_TIERS,
ACID_NEST_VARIATIONS, ACID_NEST_VARIATIONS,
@ -496,7 +538,9 @@ function baseUtils.rebuildNativeTables(natives, surface, rg)
natives, natives,
BASE_ALIGNMENT_ACID, BASE_ALIGNMENT_ACID,
"acid") "acid")
end
if settings.startup["rampant-physicalEnemy"].value then
processUnitClass(PHYSICAL_NEST_VARIATIONS, processUnitClass(PHYSICAL_NEST_VARIATIONS,
PHYSICAL_NEST_TIERS, PHYSICAL_NEST_TIERS,
0, 0,
@ -507,7 +551,9 @@ function baseUtils.rebuildNativeTables(natives, surface, rg)
natives, natives,
BASE_ALIGNMENT_PHYSICAL, BASE_ALIGNMENT_PHYSICAL,
"physical") "physical")
end
if settings.startup["rampant-fireEnemy"].value then
processUnitClass(FIRE_NEST_VARIATIONS, processUnitClass(FIRE_NEST_VARIATIONS,
FIRE_NEST_TIERS, FIRE_NEST_TIERS,
FIRE_NEST_VARIATIONS, FIRE_NEST_VARIATIONS,
@ -518,7 +564,9 @@ function baseUtils.rebuildNativeTables(natives, surface, rg)
natives, natives,
BASE_ALIGNMENT_FIRE, BASE_ALIGNMENT_FIRE,
"fire") "fire")
end
if settings.startup["rampant-electricEnemy"].value then
processUnitClass(ELECTRIC_NEST_VARIATIONS, processUnitClass(ELECTRIC_NEST_VARIATIONS,
ELECTRIC_NEST_TIERS, ELECTRIC_NEST_TIERS,
0, 0,
@ -529,7 +577,9 @@ function baseUtils.rebuildNativeTables(natives, surface, rg)
natives, natives,
BASE_ALIGNMENT_ELECTRIC, BASE_ALIGNMENT_ELECTRIC,
"electric") "electric")
end
if settings.startup["rampant-suicideEnemy"].value then
processUnitClass(SUICIDE_NEST_VARIATIONS, processUnitClass(SUICIDE_NEST_VARIATIONS,
SUICIDE_NEST_TIERS, SUICIDE_NEST_TIERS,
0, 0,
@ -540,7 +590,9 @@ function baseUtils.rebuildNativeTables(natives, surface, rg)
natives, natives,
BASE_ALIGNMENT_SUICIDE, BASE_ALIGNMENT_SUICIDE,
"suicide") "suicide")
end
if settings.startup["rampant-nuclearEnemy"].value then
processUnitClass(NUCLEAR_NEST_VARIATIONS, processUnitClass(NUCLEAR_NEST_VARIATIONS,
NUCLEAR_NEST_TIERS, NUCLEAR_NEST_TIERS,
0, 0,
@ -551,7 +603,9 @@ function baseUtils.rebuildNativeTables(natives, surface, rg)
natives, natives,
BASE_ALIGNMENT_NUCLEAR, BASE_ALIGNMENT_NUCLEAR,
"nuclear") "nuclear")
end
if settings.startup["rampant-trollEnemy"].value then
processUnitClass(TROLL_NEST_VARIATIONS, processUnitClass(TROLL_NEST_VARIATIONS,
TROLL_NEST_TIERS, TROLL_NEST_TIERS,
TROLL_NEST_VARIATIONS, TROLL_NEST_VARIATIONS,
@ -562,7 +616,9 @@ function baseUtils.rebuildNativeTables(natives, surface, rg)
natives, natives,
BASE_ALIGNMENT_TROLL, BASE_ALIGNMENT_TROLL,
"troll") "troll")
end
if settings.startup["rampant-infernoEnemy"].value then
processUnitClass(0, processUnitClass(0,
0, 0,
INFERNO_NEST_VARIATIONS, INFERNO_NEST_VARIATIONS,
@ -573,7 +629,9 @@ function baseUtils.rebuildNativeTables(natives, surface, rg)
natives, natives,
BASE_ALIGNMENT_INFERNO, BASE_ALIGNMENT_INFERNO,
"inferno") "inferno")
end
if settings.startup["rampant-fastEnemy"].value then
processUnitClass(FAST_NEST_VARIATIONS, processUnitClass(FAST_NEST_VARIATIONS,
FAST_NEST_TIERS, FAST_NEST_TIERS,
FAST_NEST_VARIATIONS, FAST_NEST_VARIATIONS,
@ -584,6 +642,7 @@ function baseUtils.rebuildNativeTables(natives, surface, rg)
natives, natives,
BASE_ALIGNMENT_FAST, BASE_ALIGNMENT_FAST,
"fast") "fast")
end
-- processUnitClass(DECAYING_NEST_VARIATIONS, -- processUnitClass(DECAYING_NEST_VARIATIONS,
-- DECAYING_NEST_TIERS, -- DECAYING_NEST_TIERS,
@ -618,6 +677,8 @@ function baseUtils.rebuildNativeTables(natives, surface, rg)
-- BASE_ALIGNMENT_POSION, -- BASE_ALIGNMENT_POSION,
-- "posion") -- "posion")
if settings.startup["rampant-laserEnemy"].value then
processUnitClass(LASER_NEST_VARIATIONS, processUnitClass(LASER_NEST_VARIATIONS,
LASER_NEST_TIERS, LASER_NEST_TIERS,
LASER_NEST_VARIATIONS, LASER_NEST_VARIATIONS,
@ -628,7 +689,9 @@ function baseUtils.rebuildNativeTables(natives, surface, rg)
natives, natives,
BASE_ALIGNMENT_LASER, BASE_ALIGNMENT_LASER,
"laser") "laser")
end
if settings.startup["rampant-waspEnemy"].value then
processUnitClass(0, processUnitClass(0,
0, 0,
WASP_NEST_VARIATIONS, WASP_NEST_VARIATIONS,
@ -639,7 +702,9 @@ function baseUtils.rebuildNativeTables(natives, surface, rg)
natives, natives,
BASE_ALIGNMENT_WASP, BASE_ALIGNMENT_WASP,
"wasp") "wasp")
end
if settings.startup["rampant-spawnerEnemy"].value then
processUnitClass(0, processUnitClass(0,
0, 0,
SPAWNER_NEST_VARIATIONS, SPAWNER_NEST_VARIATIONS,
@ -650,10 +715,10 @@ function baseUtils.rebuildNativeTables(natives, surface, rg)
natives, natives,
BASE_ALIGNMENT_SPAWNER, BASE_ALIGNMENT_SPAWNER,
"spawner") "spawner")
end
natives.evolutionTableUnitSpawner = normalizeProbabilities(natives.evolutionTableUnitSpawner) natives.evolutionTableUnitSpawner = normalizeProbabilities(natives.evolutionTableUnitSpawner)
natives.evolutionTableWorm = normalizeProbabilities(natives.evolutionTableWorm) natives.evolutionTableWorm = normalizeProbabilities(natives.evolutionTableWorm)
end end
return baseUtils return baseUtils

View File

@ -21,7 +21,7 @@ constants.VERSION_41 = 41
constants.VERSION_44 = 44 constants.VERSION_44 = 44
constants.VERSION_51 = 51 constants.VERSION_51 = 51
constants.VERSION_57 = 57 constants.VERSION_57 = 57
constants.VERSION_69 = 69 constants.VERSION_70 = 70
-- misc -- misc
@ -168,44 +168,127 @@ constants.BASE_PROCESS_INTERVAL = constants.TICKS_A_SECOND * 2
-- local decayingPath = {} -- local decayingPath = {}
-- decayingPath[constants.BASE_ALIGNMENT_UNDYING] = true -- decayingPath[constants.BASE_ALIGNMENT_UNDYING] = true
local electricPath = { constants.BASE_ALIGNMENT_EVOLUTION_BASELINE = {
-- constants.BASE_ALIGNMENT_ENERGY_THIEF, [constants.BASE_ALIGNMENT_NEUTRAL] = 0
constants.BASE_ALIGNMENT_LASER
} }
constants.BASE_ALIGNMENT_PATHS = {} constants.BASE_ALIGNMENT_PATHS = {}
constants.BASE_ALIGNMENT_PATHS[constants.BASE_ALIGNMENT_NEUTRAL] = { -- constants.BASE_ALIGNMENT_PATHS[constants.BASE_ALIGNMENT_NEUTRAL] = {
constants.BASE_ALIGNMENT_ACID, -- constants.BASE_ALIGNMENT_ACID,
constants.BASE_ALIGNMENT_FIRE, -- constants.BASE_ALIGNMENT_FIRE,
constants.BASE_ALIGNMENT_WASP, -- constants.BASE_ALIGNMENT_WASP,
constants.BASE_ALIGNMENT_PHYSICAL, -- constants.BASE_ALIGNMENT_PHYSICAL,
constants.BASE_ALIGNMENT_ELECTRIC, -- constants.BASE_ALIGNMENT_ELECTRIC,
constants.BASE_ALIGNMENT_SUICIDE, -- constants.BASE_ALIGNMENT_SUICIDE,
constants.BASE_ALIGNMENT_TROLL, -- constants.BASE_ALIGNMENT_TROLL,
constants.BASE_ALIGNMENT_FAST -- constants.BASE_ALIGNMENT_FAST
} -- }
constants.BASE_ALIGNMENT_PATHS[constants.BASE_ALIGNMENT_FIRE] = { constants.BASE_ALIGNMENT_INFERNO }
constants.BASE_ALIGNMENT_PATHS[constants.BASE_ALIGNMENT_SUICIDE] = { constants.BASE_ALIGNMENT_NUCLEAR } local function pushBasePath(x)
constants.BASE_ALIGNMENT_PATHS[constants.BASE_ALIGNMENT_WASP] = { constants.BASE_ALIGNMENT_SPAWNER } local tbl = constants.BASE_ALIGNMENT_PATHS[constants.BASE_ALIGNMENT_NEUTRAL]
if not tbl then
tbl = {}
constants.BASE_ALIGNMENT_PATHS[constants.BASE_ALIGNMENT_NEUTRAL] = tbl
end
tbl[#tbl+1] = x
end
if settings.startup["rampant-acidEnemy"].value then
pushBasePath(constants.BASE_ALIGNMENT_ACID)
local tbl = constants.BASE_ALIGNMENT_EVOLUTION_BASELINE
tbl[constants.BASE_ALIGNMENT_ACID] = 0.1
end
if settings.startup["rampant-physicalEnemy"].value then
pushBasePath(constants.BASE_ALIGNMENT_PHYSICAL)
local tbl = constants.BASE_ALIGNMENT_EVOLUTION_BASELINE
tbl[constants.BASE_ALIGNMENT_PHYSICAL] = 0.4
end
if settings.startup["rampant-suicideEnemy"].value then
pushBasePath(constants.BASE_ALIGNMENT_SUICIDE)
local tbl = constants.BASE_ALIGNMENT_EVOLUTION_BASELINE
tbl[constants.BASE_ALIGNMENT_SUICIDE] = 0.3
end
if settings.startup["rampant-fireEnemy"].value then
pushBasePath(constants.BASE_ALIGNMENT_FIRE)
local tbl = constants.BASE_ALIGNMENT_EVOLUTION_BASELINE
tbl[constants.BASE_ALIGNMENT_FIRE] = 0.4
end
if settings.startup["rampant-electricEnemy"].value then
pushBasePath(constants.BASE_ALIGNMENT_ELECTRIC)
local tbl = constants.BASE_ALIGNMENT_EVOLUTION_BASELINE
tbl[constants.BASE_ALIGNMENT_ELECTRIC] = 0.2
end
if settings.startup["rampant-nuclearEnemy"].value then
if settings.startup["rampant-suicideEnemy"].value then
constants.BASE_ALIGNMENT_PATHS[constants.BASE_ALIGNMENT_SUICIDE] = { constants.BASE_ALIGNMENT_NUCLEAR }
end
local tbl = constants.BASE_ALIGNMENT_EVOLUTION_BASELINE
tbl[constants.BASE_ALIGNMENT_NUCLEAR] = 0.7
end
if settings.startup["rampant-fastEnemy"].value then
pushBasePath(constants.BASE_ALIGNMENT_FAST)
local tbl = constants.BASE_ALIGNMENT_EVOLUTION_BASELINE
tbl[constants.BASE_ALIGNMENT_FAST] = 0.5
end
if settings.startup["rampant-trollEnemy"].value then
pushBasePath(constants.BASE_ALIGNMENT_TROLL)
local tbl = constants.BASE_ALIGNMENT_EVOLUTION_BASELINE
tbl[constants.BASE_ALIGNMENT_TROLL] = 0.5
end
if settings.startup["rampant-laserEnemy"].value then
pushBasePath(constants.BASE_ALIGNMENT_LASER)
local tbl = constants.BASE_ALIGNMENT_EVOLUTION_BASELINE
tbl[constants.BASE_ALIGNMENT_LASER] = 0.4
end
if settings.startup["rampant-waspEnemy"].value then
pushBasePath(constants.BASE_ALIGNMENT_WASP)
local tbl = constants.BASE_ALIGNMENT_EVOLUTION_BASELINE
tbl[constants.BASE_ALIGNMENT_WASP] = 0.5
end
-- constants.BASE_ALIGNMENT_PATHS[constants.BASE_ALIGNMENT_FIRE] = { constants.BASE_ALIGNMENT_INFERNO }
-- constants.BASE_ALIGNMENT_PATHS[constants.BASE_ALIGNMENT_SUICIDE] = { constants.BASE_ALIGNMENT_NUCLEAR }
-- constants.BASE_ALIGNMENT_PATHS[constants.BASE_ALIGNMENT_WASP] = { constants.BASE_ALIGNMENT_SPAWNER }
-- constants.BASE_ALIGNMENT_PATHS[constants.BASE_ALIGNMENT_ACID] = acidPath -- constants.BASE_ALIGNMENT_PATHS[constants.BASE_ALIGNMENT_ACID] = acidPath
-- constants.BASE_ALIGNMENT_PATHS[constants.BASE_ALIGNMENT_DECAYING] = decayingPath -- constants.BASE_ALIGNMENT_PATHS[constants.BASE_ALIGNMENT_DECAYING] = decayingPath
constants.BASE_ALIGNMENT_PATHS[constants.BASE_ALIGNMENT_ELECTRIC] = electricPath -- constants.BASE_ALIGNMENT_PATHS[constants.BASE_ALIGNMENT_ELECTRIC] = { constants.BASE_ALIGNMENT_LASER }
-- [constants.BASE_ALIGNMENT_WASP] = 0.5,
-- [constants.BASE_ALIGNMENT_SPAWNER] = 0.7,
-- [constants.BASE_ALIGNMENT_INFERNO] = 0.6,
if settings.startup["rampant-infernoEnemy"].value then
if settings.startup["rampant-fireEnemy"].value then
constants.BASE_ALIGNMENT_PATHS[constants.BASE_ALIGNMENT_FIRE] = { constants.BASE_ALIGNMENT_INFERNO }
end
local tbl = constants.BASE_ALIGNMENT_EVOLUTION_BASELINE
tbl[constants.BASE_ALIGNMENT_INFERNO] = 0.6
end
if settings.startup["rampant-spawnerEnemy"].value then
if settings.startup["rampant-waspEnemy"].value then
constants.BASE_ALIGNMENT_PATHS[constants.BASE_ALIGNMENT_WASP] = { constants.BASE_ALIGNMENT_SPAWNER }
end
local tbl = constants.BASE_ALIGNMENT_EVOLUTION_BASELINE
tbl[constants.BASE_ALIGNMENT_SPAWNER] = 0.7
end
constants.BASE_ALIGNMENT_EVOLUTION_BASELINE = {
[constants.BASE_ALIGNMENT_NEUTRAL] = 0,
[constants.BASE_ALIGNMENT_ACID] = 0.1,
[constants.BASE_ALIGNMENT_ELECTRIC] = 0.2,
[constants.BASE_ALIGNMENT_SUICIDE] = 0.3,
[constants.BASE_ALIGNMENT_PHYSICAL] = 0.4,
[constants.BASE_ALIGNMENT_LASER] = 0.4,
[constants.BASE_ALIGNMENT_WASP] = 0.5,
[constants.BASE_ALIGNMENT_FIRE] = 0.4,
[constants.BASE_ALIGNMENT_FAST] = 0.5,
[constants.BASE_ALIGNMENT_TROLL] = 0.5,
[constants.BASE_ALIGNMENT_SPAWNER] = 0.7,
[constants.BASE_ALIGNMENT_INFERNO] = 0.6,
[constants.BASE_ALIGNMENT_NUCLEAR] = 0.7
}
constants.ENABLED_NE_UNITS = settings.startup["rampant-enableNEUnits"].value and (settings.startup["NE_Difficulty"] ~= nil) constants.ENABLED_NE_UNITS = settings.startup["rampant-enableNEUnits"].value and (settings.startup["NE_Difficulty"] ~= nil)

View File

@ -125,7 +125,7 @@ function mapProcessor.processMap(map, surface, natives, tick, evolutionFactor)
if squads then if squads then
squads = formSquads(map, surface, natives, chunk, AI_SQUAD_COST) squads = formSquads(map, surface, natives, chunk, AI_SQUAD_COST)
end end
if natives.enabledMigration and settlers then if settlers then
settlers = formSettlers(map, surface, natives, chunk, AI_SETTLER_COST, tick) settlers = formSettlers(map, surface, natives, chunk, AI_SETTLER_COST, tick)
end end
end end

View File

@ -11266,6 +11266,20 @@ rampant-unitSpawnerSpawnScaler=Unit Spawner Spawn Count Scaler
rampant-unitSpawnerRespawnScaler=Unit Spawner Respawn Rate Scaler rampant-unitSpawnerRespawnScaler=Unit Spawner Respawn Rate Scaler
rampant-raidAIToggle=AI: Enable Raiding AI rampant-raidAIToggle=AI: Enable Raiding AI
rampant-seigeAIToggle=AI: Enable Seige AI
rampant-laserEnemy=Laser Biter Faction
rampant-waspEnemy=Wasp Biter Faction
rampant-spawnerEnemy=Spawner Biter Faction
rampant-trollEnemy=Troll Biter Faction
rampant-fastEnemy=Fast Biter Faction
rampant-infernoEnemy=Inferno Biter Faction
rampant-nuclearEnemy=Nuclear Biter Faction
rampant-electricEnemy=Electric Biter Faction
rampant-fireEnemy=Fire Biter Faction
rampant-suicideEnemy=Suicide Biter Faction
rampant-physicalEnemy=Physical Biter Faction
rampant-acidEnemy=Acid Biter Faction
[mod-setting-description] [mod-setting-description]
rampant-useDumbProjectiles=Turns off homing projectiles for worms and spitters rampant-useDumbProjectiles=Turns off homing projectiles for worms and spitters
@ -11331,3 +11345,17 @@ rampant-unitSpawnerSpawnScaler=Scales by a percentage all new enemy nest number
rampant-unitSpawnerRespawnScaler=Scales by a percentage all new enemy nest time to spawn new units rampant-unitSpawnerRespawnScaler=Scales by a percentage all new enemy nest time to spawn new units
rampant-raidAIToggle=Toggles the ai raiding parties from outside your pollution cloud rampant-raidAIToggle=Toggles the ai raiding parties from outside your pollution cloud
rampant-seigeAIToggle=Toggles the ai seige parties from outside your pollution cloud that attack or nest
rampant-laserEnemy=Laser Biter Faction
rampant-waspEnemy=Wasp Biter Faction
rampant-spawnerEnemy=Spawner Biter Faction
rampant-trollEnemy=Troll Biter Faction
rampant-fastEnemy=Fast Biter Faction
rampant-infernoEnemy=Inferno Biter Faction
rampant-nuclearEnemy=Nuclear Biter Faction
rampant-electricEnemy=Electric Biter Faction
rampant-fireEnemy=Fire Biter Faction
rampant-suicideEnemy=Suicide Biter Faction
rampant-physicalEnemy=Physical Biter Faction
rampant-acidEnemy=Acid Biter Faction

View File

@ -86,7 +86,7 @@
(makeZip modFolder)) (makeZip modFolder))
(define (run) (define (run)
(copyFiles modFolder) ;; (copyFiles modFolder)
;;(copyFiles zipModFolder) ;;(copyFiles zipModFolder)
;; (makeZip modFolder) (makeZip modFolder)
(system*/exit-code "/data/games/factorio/bin/x64/factorio"))) (system*/exit-code "/data/games/factorio/bin/x64/factorio")))

View File

@ -355,6 +355,114 @@ data:extend({
per_user = false per_user = false
}, },
{
type = "bool-setting",
name = "rampant-acidEnemy",
setting_type = "startup",
default_value = true,
order = "l[modifier]-n[unit]",
per_user = false
},
{
type = "bool-setting",
name = "rampant-physicalEnemy",
setting_type = "startup",
default_value = true,
order = "l[modifier]-o[unit]",
per_user = false
},
{
type = "bool-setting",
name = "rampant-suicideEnemy",
setting_type = "startup",
default_value = true,
order = "l[modifier]-p[unit]",
per_user = false
},
{
type = "bool-setting",
name = "rampant-fireEnemy",
setting_type = "startup",
default_value = true,
order = "l[modifier]-q[unit]",
per_user = false
},
{
type = "bool-setting",
name = "rampant-electricEnemy",
setting_type = "startup",
default_value = true,
order = "l[modifier]-r[unit]",
per_user = false
},
{
type = "bool-setting",
name = "rampant-nuclearEnemy",
setting_type = "startup",
default_value = true,
order = "l[modifier]-s[unit]",
per_user = false
},
{
type = "bool-setting",
name = "rampant-infernoEnemy",
setting_type = "startup",
default_value = true,
order = "l[modifier]-t[unit]",
per_user = false
},
{
type = "bool-setting",
name = "rampant-fastEnemy",
setting_type = "startup",
default_value = true,
order = "l[modifier]-u[unit]",
per_user = false
},
{
type = "bool-setting",
name = "rampant-trollEnemy",
setting_type = "startup",
default_value = true,
order = "l[modifier]-v[unit]",
per_user = false
},
{
type = "bool-setting",
name = "rampant-spawnerEnemy",
setting_type = "startup",
default_value = true,
order = "l[modifier]-w[unit]",
per_user = false
},
{
type = "bool-setting",
name = "rampant-waspEnemy",
setting_type = "startup",
default_value = true,
order = "l[modifier]-x[unit]",
per_user = false
},
{
type = "bool-setting",
name = "rampant-laserEnemy",
setting_type = "startup",
default_value = true,
order = "l[modifier]-y[unit]",
per_user = false
},
{ {
type = "bool-setting", type = "bool-setting",
name = "rampant-disableVanillaAI", name = "rampant-disableVanillaAI",
@ -384,6 +492,15 @@ data:extend({
per_user = false per_user = false
}, },
{
type = "bool-setting",
name = "rampant-seigeAIToggle",
setting_type = "runtime-global",
default_value = true,
order = "m[total]-d[ai]",
per_user = false
},
{ {
type = "bool-setting", type = "bool-setting",
name = "rampant-removeBloodParticles", name = "rampant-removeBloodParticles",