1
0
mirror of https://github.com/veden/Rampant.git synced 2024-12-26 20:54:12 +02:00

see changelog

This commit is contained in:
Aaron Veden 2021-02-27 14:50:26 -08:00
parent 71727454b9
commit 721b458777
No known key found for this signature in database
GPG Key ID: FF5990B1C6DD3F84
24 changed files with 189 additions and 238 deletions

View File

@ -1,5 +1,6 @@
globals = {
"game",
"util",
"data",
"remote",
"settings",
@ -30,3 +31,5 @@ globals = {
"unitUtilsG",
"baseUtilsG"
}
max_line_length = false

View File

@ -5,7 +5,9 @@ Date: 06. 02. 2021
- 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
- Added a temperament modifer setting to adjust how quickly the ai will reach extremes in attacking and expansion.
Tweaks:
- Increased minimum points the AI can work with to 200
- Reduced spitter range by 2 across all new enemy tiers
- Increased spitter projectile collision box by 5x
- Decreased movement debuff from spitter acid puddle by roughly 70%
@ -13,7 +15,7 @@ Date: 06. 02. 2021
- Decreased suicide biter damage 90% and radius by roughly 50%
- Decreased nuclear biter damage 90%
- Decreased default max wave size to 75 units
- Increased evolution requirement for suicide and nuclear biters to 35% and 45%
- Increased evolution requirement for suicide and nuclear biters to 20% and 45%
- Decreased squad size ramp up to evolution_factor^1.4
- Increased unit lost temperament contribution to 0.03
- Decreased active spawner temperament contribution to 0.25
@ -21,15 +23,17 @@ Date: 06. 02. 2021
- Decreased siege ai state chance to 15% at peak temperament
- Halved AI temperament rate of change
- Increased ai state duration minimum to 10 and maximum to 25 minutes
- Changed default enemy seed to non-zero
Bugfixes:
- Fixed suicide and nuclear enemies explosion centered on target instead self
- Fixed process spawners reading missing globals
- Fixed process spawners function reading missing globals
- Fixed potential desync in squad attack movement
- 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+
- Fixed existing spawner upgrading in place over time
- Fixed add wall acid resistance setting would overwrite higher resistance and not effect gates
---------------------------------------------------------------------------------------------------
Version: 1.0.2

View File

@ -201,6 +201,10 @@ local function onModSettingsChange(event)
universe.safeEntities["lighted-big-electric-pole"] = newValue
end
upgrade.compareTable(universe,
"temperamentRateModifier",
settings.global["rampant--temperamentRateModifier"].value)
upgrade.compareTable(universe,
"deadZoneFrequency",
settings.global["rampant--deadZoneFrequency"].value)
@ -373,80 +377,10 @@ local function onConfigChanged()
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
onModSettingsChange({setting="rampant--"})
upgrade.compareTable(universe,
"ENEMY_SEED",
settings.startup["rampant--enemySeed"].value)
@ -772,10 +706,12 @@ local function onUsedCapsule(event)
local surface = game.players[event.player_index].surface
local map = universe.maps[surface.index]
if (event.item.name == "cliff-explosives") then
map.position2Top.x = event.position.x-0.75
map.position2Top.y = event.position.y-0.75
map.position2Bottom.x = event.position.x+0.75
map.position2Bottom.y = event.position.y+0.75
local position2Top = universe.position2Top
local position2Bottom = universe.position2Bottom
position2Top.x = event.position.x-0.75
position2Top.y = event.position.y-0.75
position2Bottom.x = event.position.x+0.75
position2Bottom.y = event.position.y+0.75
local cliffs = surface.find_entities_filtered(universe.cliffQuery)
for i=1,#cliffs do
entityForPassScan(map, cliffs[i])
@ -902,20 +838,19 @@ end
local function onGroupFinishedGathering(event)
local group = event.group
if group.valid and (group.force.name == "enemy") then
local unitNumber = group.group_number
local map = universe.maps[group.surface.index]
local squad = map.groupNumberToSquad[unitNumber]
local squad = map.groupNumberToSquad[group.group_number]
if squad then
if squad.settler then
if (universe.builderCount < universe.AI_MAX_BUILDER_COUNT) then
squadDispatch(map, squad, unitNumber)
squadDispatch(map, squad)
else
group.destroy()
map.points = map.points + AI_SETTLER_COST
end
else
if (universe.squadCount < universe.AI_MAX_SQUAD_COUNT) then
squadDispatch(map, squad, unitNumber)
squadDispatch(map, squad)
else
group.destroy()
map.points = map.points + AI_SQUAD_COST
@ -939,7 +874,7 @@ local function onGroupFinishedGathering(event)
else
universe.squadCount = universe.squadCount + 1
end
squadDispatch(map, squad, unitNumber)
squadDispatch(map, squad)
end
end
end

View File

@ -66,5 +66,3 @@ mapSettings.unit_group.max_group_slowdown_factor = constants.UNIT_GROUP_SLOWDOWN
data.raw["utility-constants"]["default"].unit_group_pathfinding_resolution = -5

View File

@ -21,9 +21,6 @@ local AI_STATE_MIGRATING = constants.AI_STATE_MIGRATING
local AI_STATE_ONSLAUGHT = constants.AI_STATE_ONSLAUGHT
local AI_STATE_SIEGE = constants.AI_STATE_SIEGE
local AGGRESSIVE_CAN_ATTACK_WAIT_MAX_DURATION = constants.AGGRESSIVE_CAN_ATTACK_WAIT_MAX_DURATION
local AGGRESSIVE_CAN_ATTACK_WAIT_MIN_DURATION = constants.AGGRESSIVE_CAN_ATTACK_WAIT_MIN_DURATION
local AI_UNIT_REFUND = constants.AI_UNIT_REFUND
local AI_MAX_POINTS = constants.AI_MAX_POINTS
@ -327,6 +324,7 @@ function aiPlanning.temperamentPlanner(map)
delta = delta + val
end
delta = delta * map.universe.temperamentRateModifier
map.temperamentScore = mMin(10000, mMax(-10000, currentTemperament + delta))
map.temperament = ((map.temperamentScore + 10000) * 0.00005)

View File

@ -5,7 +5,6 @@ local chunkUtils = {}
-- imports
local stringUtils = require("StringUtils")
local baseUtils = require("BaseUtils")
local constants = require("Constants")
local mapUtils = require("MapUtils")
@ -47,7 +46,6 @@ local GENERATOR_PHEROMONE_LEVEL_6 = constants.GENERATOR_PHEROMONE_LEVEL_6
-- imported functions
local isRampant = stringUtils.isRampant
local setNestCount = chunkPropertyUtils.setNestCount
local setPlayerBaseGenerator = chunkPropertyUtils.setPlayerBaseGenerator
local addPlayerBaseGenerator = chunkPropertyUtils.addPlayerBaseGenerator

View File

@ -115,7 +115,7 @@ constants.MAX_TICKS_BEFORE_SORT_CHUNKS = 60 * 60 * 30 -- 1 tick = 1/60 sec * 60
constants.RESOURCE_MINIMUM_FORMATION_DELTA = 15
constants.MINIMUM_AI_POINTS = 100
constants.MINIMUM_AI_POINTS = 200
constants.AI_POINT_GENERATOR_AMOUNT = 0.688863
constants.AI_SQUAD_COST = 175
constants.RECOVER_NEST_COST = constants.AI_SQUAD_COST
@ -1227,7 +1227,7 @@ if settings.startup["rampant--suicideEnemy"].value then
type = "suicide",
tint = {r=0.8, g=0.8, b=0.8, a=1},
tint2 = {r=0.95, g=0.95, b=0, a=1},
acceptRate = {3, 10, 0.05, 0.15},
acceptRate = {2, 10, 0.05, 0.15},
evo = 0.35,
units = {
{

View File

@ -348,7 +348,7 @@ function squadAttack.cleanSquads(map)
squads[k] = nil
k = nextK
elseif (group.state == 4) then
squadAttack.squadDispatch(map, squad, squad.groupNumber)
squadAttack.squadDispatch(map, squad)
end
end
map.squadIterator = k

View File

@ -18705,8 +18705,8 @@ rampant--safeBuildings-bigElectricPole=Safety: Make big electric poles safe from
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--permanentNocturnal=AI: Nocturnal Mode
rampant--aiPointsScaler=AI: 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)
@ -18788,6 +18788,7 @@ rampant--disableCollidingProjectiles=Projectiles: Non biter force colliding proj
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--temperamentRateModifier=AI: Temperament Rate Modifier
[mod-setting-description]
rampant--unitAndSpawnerFadeTime=The time in seconds for how long biter corpses stay around
@ -18888,6 +18889,7 @@ rampant--enableFadeTime=Enable the fade time to reduce or increase biter, spitte
rampant--maxNumberOfBuilders=More builders requires more UPS.
rampant--maxNumberOfSquads=More squads requires more UPS.
rampant--temperamentRateModifier=Change how quickly Rampant will hit extremes in the ai temperament stat which control attacking and expanding. This is a percentage increase or decrease with 1 being equal to 100%.
[description]
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.

View File

@ -4,17 +4,36 @@ function vanillaUpdates.addWallAcidResistance()
local walls = data.raw["wall"]
for _,wall in pairs(walls) do
local foundAcid = false
for _,resistance in pairs(wall.resistances) do
if resistance.type == "acid" then
resistance.percent = 60
foundAcid = true
break
end
end
if not foundAcid then
wall.resistances[#wall.resistances+1] = {type="acid",percent=60}
end
local foundAcid = false
for _,resistance in pairs(wall.resistances) do
if resistance.type == "acid" then
if resistance.percent < 60 then
resistance.percent = 60
end
foundAcid = true
break
end
end
if not foundAcid then
wall.resistances[#wall.resistances+1] = {type="acid",percent=60}
end
end
walls = data.raw["gate"]
for _,wall in pairs(walls) do
local foundAcid = false
for _,resistance in pairs(wall.resistances) do
if resistance.type == "acid" then
if resistance.percent < 60 then
resistance.percent = 60
end
foundAcid = true
break
end
end
if not foundAcid then
wall.resistances[#wall.resistances+1] = {type="acid",percent=60}
end
end
end

View File

@ -104,7 +104,7 @@ function AttackBall.createAttackBall(attributes)
}
local name
local template
-- local template
if (attributes.attackType == "stream") then
-- template = {
-- name = attributes.name,

View File

@ -3,7 +3,6 @@ local attackFlame = {}
-- imported
local streamUtils = require("StreamUtils")
local colorUtils = require("ColorUtils")
local fireUtils = require("FireUtils")
local stickerUtils = require("StickerUtils")
@ -13,7 +12,6 @@ local DISALLOW_FRIENDLY_FIRE = settings.startup["rampant--disallowFriendlyFire"]
-- imported functions
local makeColor = colorUtils.makeColor
local makeStream = streamUtils.makeStream
local makeFire = fireUtils.makeFire
local makeSticker = stickerUtils.makeSticker

View File

@ -487,7 +487,7 @@ function biterFunctions.makeWorm(attributes)
subgroup="enemies",
max_health = attributes.health,
loot = attributes.loot,
shooting_cursor_size = 3.5 * attributes.scale,
-- shooting_cursor_size = 3.5 * attributes.scale,
resistances = resistances,
healing_per_tick = attributes.healing or 0.01,
collision_box = {{-1.1 * attributes.scale, -1.0 * attributes.scale}, {1.1 * attributes.scale, 1.0 * attributes.scale}},
@ -1264,7 +1264,6 @@ function biterFunctions.createStreamAttack(attributes, fireAttack, animation)
type = "stream",
ammo_category = "biological",
cooldown = attributes.cooldown,
warmup = attributes.warmup,
range = attributes.range,
min_range = attributes.minRange,
cooldown_deviation = 0.15,

View File

@ -97,7 +97,6 @@ local function makeBloodParticle(attributes)
hr_version =
{
filename = "__base__/graphics/particle/blood-particle/hr-blood-particle-02.png",
line_length = 6,
width = 8,
height = 6,
line_length = 6,
@ -120,7 +119,6 @@ local function makeBloodParticle(attributes)
hr_version =
{
filename = "__base__/graphics/particle/blood-particle/hr-blood-particle-03.png",
line_length = 6,
width = 6,
height = 6,
line_length = 6,
@ -143,7 +141,6 @@ local function makeBloodParticle(attributes)
hr_version =
{
filename = "__base__/graphics/particle/blood-particle/hr-blood-particle-04.png",
line_length = 6,
width = 6,
height = 6,
line_length = 6,
@ -166,7 +163,6 @@ local function makeBloodParticle(attributes)
hr_version =
{
filename = "__base__/graphics/particle/blood-particle/hr-blood-particle-05.png",
line_length = 6,
width = 6,
height = 4,
line_length = 6,
@ -189,7 +185,6 @@ local function makeBloodParticle(attributes)
hr_version =
{
filename = "__base__/graphics/particle/blood-particle/hr-blood-particle-06.png",
line_length = 6,
width = 6,
height = 6,
line_length = 6,
@ -212,7 +207,6 @@ local function makeBloodParticle(attributes)
hr_version =
{
filename = "__base__/graphics/particle/blood-particle/hr-blood-particle-07.png",
line_length = 6,
width = 6,
height = 6,
line_length = 6,
@ -235,7 +229,6 @@ local function makeBloodParticle(attributes)
hr_version =
{
filename = "__base__/graphics/particle/blood-particle/hr-blood-particle-08.png",
line_length = 6,
width = 10,
height = 8,
line_length = 6,
@ -324,7 +317,6 @@ local function makeBloodParticle(attributes)
hr_version =
{
filename = "__base__/graphics/particle/blood-particle/hr-blood-particle-12.png",
line_length = 6,
width = 8,
height = 8,
line_length = 6,
@ -372,7 +364,6 @@ local function makeBloodParticle(attributes)
hr_version =
{
filename = "__base__/graphics/particle/blood-particle/hr-blood-particle-02.png",
line_length = 6,
width = 8,
height = 6,
line_length = 6,
@ -395,7 +386,6 @@ local function makeBloodParticle(attributes)
hr_version =
{
filename = "__base__/graphics/particle/blood-particle/hr-blood-particle-03.png",
line_length = 6,
width = 6,
height = 6,
line_length = 6,
@ -418,7 +408,6 @@ local function makeBloodParticle(attributes)
hr_version =
{
filename = "__base__/graphics/particle/blood-particle/hr-blood-particle-04.png",
line_length = 6,
width = 6,
height = 6,
line_length = 6,
@ -441,7 +430,6 @@ local function makeBloodParticle(attributes)
hr_version =
{
filename = "__base__/graphics/particle/blood-particle/hr-blood-particle-05.png",
line_length = 6,
width = 6,
height = 4,
line_length = 6,
@ -508,7 +496,6 @@ local function makeBloodParticle(attributes)
hr_version =
{
filename = "__base__/graphics/particle/blood-particle/hr-blood-particle-08.png",
line_length = 6,
width = 10,
height = 8,
line_length = 6,
@ -597,7 +584,6 @@ local function makeBloodParticle(attributes)
hr_version =
{
filename = "__base__/graphics/particle/blood-particle/hr-blood-particle-12.png",
line_length = 6,
width = 8,
height = 8,
line_length = 6,

View File

@ -90,16 +90,6 @@ data:extend({
per_user = false
},
{
type = "bool-setting",
name = "rampant--permanentNocturnal",
description = "rampant--permanentNocturnal",
setting_type = "runtime-global",
default_value = false,
order = "b[modifier]-g[ai]",
per_user = false
},
-- {
-- type = "bool-setting",
-- name = "rampant--liteMode",
@ -109,18 +99,6 @@ data:extend({
-- per_user = false
-- },
{
type = "double-setting",
name = "rampant--aiPointsScaler",
description = "rampant--aiPointsScaler",
setting_type = "runtime-global",
default_value = 1.0,
minimum_value = 0.0,
maximum_value = 100.0,
order = "b[modifier]-h[ai]",
per_user = false
},
{
type = "bool-setting",
name = "rampant--enableSwarm",
@ -260,8 +238,8 @@ data:extend({
name = "rampant--enemySeed",
description = "rampant--enemySeed",
setting_type = "startup",
minimum_value = 0,
default_value = 0,
minimum_value = 1,
default_value = 1024567,
order = "l[modifer]-b[unit]",
per_user = false
},
@ -451,7 +429,7 @@ data:extend({
description = "rampant--enableMigration",
setting_type = 'runtime-global',
default_value = true,
order = "m[total]-b[ai]",
order = "m[total]-c[ai]",
per_user = false
},
@ -473,6 +451,39 @@ data:extend({
per_user = false
},
{
type = "bool-setting",
name = "rampant--permanentNocturnal",
description = "rampant--permanentNocturnal",
setting_type = "runtime-global",
default_value = false,
order = "m[total]-a[ai]",
per_user = false
},
{
type = "double-setting",
name = "rampant--aiPointsScaler",
description = "rampant--aiPointsScaler",
setting_type = "runtime-global",
default_value = 1.0,
minimum_value = 0.0,
maximum_value = 100.0,
order = "m[total]-b[ai]",
per_user = false
},
{
type = "double-setting",
name = "rampant--temperamentRateModifier",
setting_type = "runtime-global",
default_value = 1,
minimum_value = 0.001,
maximum_value = 100.0,
order = "m[total]-b[ai]",
per_user = false
},
{
type = "bool-setting",
name = "rampant--removeBloodParticles",