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-03-28 22:00:49 -07:00
parent b80dd6d488
commit 90376f11d5
No known key found for this signature in database
GPG Key ID: FF5990B1C6DD3F84
10 changed files with 87 additions and 37 deletions

View File

@ -1,3 +1,19 @@
---------------------------------------------------------------------------------------------------
Version: 1.0.5
Date: 28. 03. 2021
Tweaks:
- Increased max ai points by 24%
- Added chance for normal migration at minimum temperament
- Added raiding at medium-high temperament
- Increased raiding chance at high temperament
- Added a max temperament stage that is all raiding, onslaught, and siege
- Increased active nest contribution to temperament by 38%
Bugfixes:
- Fixed ion cannon event typo in points
- Fixed suicide biters explosions being lots of small explosions to one big explosion
- Fixed unit movement resolution modifer being to low to path effectively
- Fixed range_mode not being set on new enemies for bounding box to bounding box
---------------------------------------------------------------------------------------------------
Version: 1.0.4
Date: 28. 02. 2021

View File

@ -131,7 +131,7 @@ local function onIonCannonFired(event)
--]]
local map = universe.maps[event.surface.index]
map.ionCannonBlasts = map.ionCannonBlasts + 1
map.points = map.point + 4000
map.points = map.points + 4000
local chunk = getChunkByPosition(map, event.position)
if (chunk ~= -1) then
@ -1017,6 +1017,8 @@ script.on_event(defines.events.on_unit_group_finished_gathering, onGroupFinished
script.on_event(defines.events.on_build_base_arrived, onBuilderArrived)
-- testing
remote.add_interface("rampantTests",
{
pheromoneLevels = tests.pheromoneLevels,
@ -1051,5 +1053,3 @@ remote.add_interface("rampantTests",
scanChunkPaths = tests.scanChunkPaths
}
)
-- remote.add_interface("rampant", interop)

View File

@ -46,9 +46,7 @@ for k, unit in pairs(data.raw["unit"]) do
unit.ai_settings = {
destroy_when_commands_fail = false,
allow_try_return_to_spawner = true,
path_resolution_modifier = -5,
do_seperation = true
allow_try_return_to_spawner = true
}
end
end

View File

@ -65,4 +65,4 @@ mapSettings.unit_group.max_member_slowdown_when_ahead = constants.UNIT_GROUP_MAX
mapSettings.unit_group.max_group_slowdown_factor = constants.UNIT_GROUP_SLOWDOWN_FACTOR
data.raw["utility-constants"]["default"].unit_group_pathfinding_resolution = -5
-- data.raw["utility-constants"]["default"].unit_group_pathfinding_resolution = -5

View File

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

View File

@ -120,7 +120,11 @@ function aiPlanning.planning(map, evolution_factor, tick)
local roll = mRandom()
if (map.temperament < 0.05) then -- 0 - 0.05
if universe.enabledMigration then
map.state = (universe.siegeAIToggle and AI_STATE_SIEGE) or AI_STATE_MIGRATING
if (roll < 0.7) and universe.siegeAIToggle then
map.state = AI_STATE_SIEGE
else
map.state = AI_STATE_MIGRATING
end
else
if universe.raidAIToggle then
if (roll < 0.85) then
@ -134,8 +138,8 @@ function aiPlanning.planning(map, evolution_factor, tick)
end
elseif (map.temperament < 0.20) then -- 0.05 - 0.2
if (universe.enabledMigration) then
if (roll < 0.4) then
map.state = (universe.siegeAIToggle and AI_STATE_SIEGE) or AI_STATE_MIGRATING
if (roll < 0.4) and universe.siegeAIToggle then
map.state = AI_STATE_SIEGE
else
map.state = AI_STATE_MIGRATING
end
@ -173,27 +177,29 @@ function aiPlanning.planning(map, evolution_factor, tick)
map.state = AI_STATE_PEACEFUL
end
elseif (map.temperament < 0.8) then -- 0.6 - 0.8
if (roll < 0.6) then
if (roll < 0.4) then
map.state = AI_STATE_AGGRESSIVE
elseif (roll < 0.8) then
elseif (roll < 0.6) then
map.state = AI_STATE_ONSLAUGHT
elseif (roll < 0.8) then
map.state = AI_STATE_RAIDING
else
map.state = AI_STATE_PEACEFUL
end
else -- 0.8 - 1
elseif (map.temperament < 0.95) then -- 0.8 - 0.95
if (universe.enabledMigration and universe.raidAIToggle) then
if (roll < 0.15) then
map.state = (universe.siegeAIToggle and AI_STATE_SIEGE) or AI_STATE_ONSLAUGHT
elseif (roll < 0.6) then
map.state = AI_STATE_ONSLAUGHT
elseif (roll < 0.8) then
if (roll < 0.15) and universe.siegeAIToggle then
map.state = AI_STATE_SIEGE
elseif (roll < 0.4) then
map.state = AI_STATE_RAIDING
elseif (roll < 0.8) then
map.state = AI_STATE_ONSLAUGHT
else
map.state = AI_STATE_AGGRESSIVE
end
elseif (universe.enabledMigration) then
if (roll < 0.15) then
map.state = (universe.siegeAIToggle and AI_STATE_SIEGE) or AI_STATE_ONSLAUGHT
if (roll < 0.15) and universe.siegeAIToggle then
map.state = AI_STATE_SIEGE
elseif (roll < 0.7) then
map.state = AI_STATE_ONSLAUGHT
else
@ -214,6 +220,30 @@ function aiPlanning.planning(map, evolution_factor, tick)
map.state = AI_STATE_AGGRESSIVE
end
end
else
if (universe.enabledMigration and universe.raidAIToggle) then
if (roll < 0.2) and universe.siegeAIToggle then
map.state = AI_STATE_SIEGE
elseif (roll < 0.6) then
map.state = AI_STATE_RAIDING
else
map.state = AI_STATE_ONSLAUGHT
end
elseif (universe.enabledMigration) then
if (roll < 0.2) and universe.siegeAIToggle then
map.state = AI_STATE_SIEGE
else
map.state = AI_STATE_ONSLAUGHT
end
elseif (universe.raidAIToggle) then
if (roll < 0.4) then
map.state = AI_STATE_ONSLAUGHT
else
map.state = AI_STATE_RAIDING
end
else
map.state = AI_STATE_ONSLAUGHT
end
end
-- print("changing state", map.state)
@ -247,7 +277,7 @@ function aiPlanning.temperamentPlanner(map)
local delta = 0
if activeNests > 0 then
local val = (0.021695 * activeNests)
local val = (0.03 * activeNests)
delta = delta + val
else
delta = delta - 0.014463

View File

@ -124,7 +124,7 @@ constants.AI_VENGENCE_SQUAD_COST = 45
constants.AI_SETTLER_COST = 400
constants.AI_BASE_BUILDING_COST = 500
constants.AI_TUNNEL_COST = 100
constants.AI_MAX_POINTS = 12500
constants.AI_MAX_POINTS = 15500
constants.AI_MAX_OVERFLOW_POINTS = constants.AI_MAX_POINTS * 3
constants.RAIDING_MINIMUM_BASE_THRESHOLD = 550
@ -149,7 +149,6 @@ constants.BASE_AI_STATE_ACTIVE = 1
constants.BASE_AI_STATE_OVERDRIVE = 2
constants.BASE_AI_STATE_MUTATE = 3
constants.AGGRESSIVE_CAN_ATTACK_WAIT_MIN_DURATION = 0.5
constants.AGGRESSIVE_CAN_ATTACK_WAIT_MAX_DURATION = 3
@ -164,7 +163,6 @@ constants.BASE_AI_MAX_STATE_DURATION = 10
constants.BASE_AI_MIN_TEMPERAMENT_DURATION = 5
constants.BASE_AI_MAX_TEMPERAMENT_DURATION = 15
-- ai base
constants.BASE_CLEAN_DISTANCE = 13

View File

@ -2,7 +2,7 @@
(require json)
(define modFolder "/mnt/gallery/gameFiles/factorio/mods/")
(define zipModFolder "/data/games/factorio2/mods/")
(define serverModFolder "/home/veden/Downloads/factorio/mods/")
(define configuration (call-with-input-file "info.json"
(lambda (port)
(string->jsexpr (port->string port)))))
@ -14,8 +14,10 @@
(let ((packagePath (string->path (string-append folder
packageName
".zip"))))
(delete-directory/files (string->path (string-append folder
packageName)))
(when (file-exists? (string->path (string-append folder
packageName)))
(delete-directory/files (string->path (string-append folder
packageName))))
(when (file-exists? packagePath)
(delete-file packagePath)))
(zip (string-append folder
@ -91,7 +93,9 @@
(hash-ref configuration 'version)))
(print (string-append "copying " (hash-ref configuration 'name) (hash-ref configuration 'version)))
(copyFiles modFolder))
(copyFiles modFolder)
;; (copyFiles serverModFolder)
)
(define (zipIt)
(set! configuration (call-with-input-file "info.json"

View File

@ -104,10 +104,10 @@ local nuclearAttackNumeric = {
}
local bombAttackNumeric = {
["damage"] = { 25, 25, 25, 25, 30, 30, 40, 40, 50, 50 },
["damage"] = { 50, 75, 100, 125, 180, 240, 400, 480, 650, 700 },
["radius"] = { 1.75, 1.75, 2, 2.5, 3, 3, 3.5, 3.5, 3.75, 4 },
["explosionDistance"] = { 2, 2, 2, 2, 2, 2.5, 2.5, 2.5, 3, 3 },
["explosionCount"] = { 2, 3, 4, 5, 6, 8, 10, 12, 13, 14 }
["explosionCount"] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }
}
local streamAttackNumeric = {

View File

@ -229,7 +229,7 @@ function biterFunctions.makeBiter(attributes)
icon = "__base__/graphics/icons/small-biter.png",
icon_size = 64,
icon_mipmaps = 4,
flags = attributes.flags or {"placeable-player", "placeable-enemy", "placeable-off-grid", "breaths-air"},
flags = attributes.flags or {"placeable-player", "placeable-enemy", "placeable-off-grid", "not-repairable", "breaths-air"},
max_health = attributes.health,
order = "b-b-a",
subgroup="enemies",
@ -266,7 +266,7 @@ function biterFunctions.makeBiter(attributes)
working_sound = sounds.biter_calls(0.2 + (0.05 * attributes.effectiveLevel)),
running_sound_animation_positions = {2,},
run_animation = biterrunanimation(attributes.scale, attributes.tint, attributes.tint2 or attributes.tint, attributes.altBiter),
ai_settings = { destroy_when_commands_fail = false, allow_try_return_to_spawner = true, path_resolution_modifier = -5, do_seperation = true }
ai_settings = { destroy_when_commands_fail = false, allow_try_return_to_spawner = true }
}
if attributes.collisionMask then
entity.collision_mask = attributes.collisionMask
@ -287,7 +287,7 @@ function biterFunctions.makeSpitter(attributes)
icon = "__base__/graphics/icons/small-spitter.png",
icon_size = 64,
icon_mipmaps = 4,
flags = attributes.flags or {"placeable-player", "placeable-enemy", "placeable-off-grid", "breaths-air"},
flags = attributes.flags or {"placeable-player", "placeable-enemy", "placeable-off-grid", "not-repairable", "breaths-air"},
max_health = attributes.health,
order = "b-b-a",
subgroup="enemies",
@ -319,7 +319,7 @@ function biterFunctions.makeSpitter(attributes)
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 }
ai_settings = { destroy_when_commands_fail = false, allow_try_return_to_spawner = true }
}
if attributes.collisionMask then
entity.collision_mask = attributes.collisionMask
@ -482,7 +482,7 @@ function biterFunctions.makeWorm(attributes)
name = attributes.name .. "-rampant",
icon = "__base__/graphics/icons/medium-worm.png",
icon_size = 64, icon_mipmaps = 4,
flags = attributes.flags or {"placeable-player", "placeable-enemy", "not-repairable", "breaths-air"},
flags = attributes.flags or {"placeable-player", "placeable-enemy", "not-repairable", "not-repairable", "breaths-air"},
order="b-b-e",
subgroup="enemies",
max_health = attributes.health,
@ -582,6 +582,7 @@ function biterFunctions.createSuicideAttack(attributes, blastWave, animation)
type = "projectile",
range = attributes.range or 0.5,
cooldown = attributes.cooldown or 35,
range_mode = "bounding-box-to-bounding-box",
ammo_category = "melee",
ammo_type = {
category = "biological"
@ -1093,6 +1094,7 @@ function biterFunctions.createElectricAttack(attributes, electricBeam, animation
{
type = "beam",
ammo_category = "biological",
range_mode = "bounding-box-to-bounding-box",
cooldown = attributes.cooldown or 20,
warmup = attributes.warmup,
min_attack_distance = (attributes.range and (attributes.range - 2)) or 15,
@ -1121,6 +1123,7 @@ function biterFunctions.createProjectileAttack(attributes, projectile, animation
return {
type = "projectile",
ammo_category = "biological",
range_mode = "bounding-box-to-bounding-box",
cooldown = attributes.cooldown or 15,
warmup = attributes.warmup,
cooldown_deviation = 0.15,
@ -1168,6 +1171,7 @@ function biterFunctions.createMeleeAttack(attackAttributes)
range = attackAttributes.range or 0.5,
cooldown = attackAttributes.cooldown or 35,
cooldown_deviation = 0.15,
range_mode = "bounding-box-to-bounding-box",
ammo_category = "melee",
ammo_type = {
category = "melee",
@ -1274,7 +1278,7 @@ function biterFunctions.createStreamAttack(attributes, fireAttack, animation)
warmup = attributes.warmup or 0,
damage_modifier = attributes.damageModifier or 1.0,
range_mode = "bounding-box-to-bounding-box",
lead_target_for_projectile_speed = attributes.particleHoizontalSpeed or 0.6,
projectile_creation_parameters = spitter_shoot_shiftings(attributes.scale, attributes.scale * 20),