1
0
mirror of https://github.com/veden/Rampant.git synced 2025-03-17 20:58:35 +02:00

see changelog

This commit is contained in:
Aaron Veden 2021-04-03 17:16:25 -07:00
parent f27614e977
commit 538b4b82d6
No known key found for this signature in database
GPG Key ID: FF5990B1C6DD3F84
7 changed files with 1594 additions and 1522 deletions

View File

@ -1,3 +1,20 @@
---------------------------------------------------------------------------------------------------
Version: 1.0.7
Date: 03. 04. 2021
Contributions:
- Metallumere has added more distinct colors for each faction.
- Metallumere has changed the names of sizes and some faction names to more common terms
- Metallumere has increased attack speed of fast faction while keeping total DPS the same
- Metallumere has increased movement speed of fast, nuclear, and suicide factions
Tweaks:
- Decreased Poison faction cloud damage by 25%
- Increased suicide biters damage by 50%
- Added scorchmark scaling to new enemies
Bugfixes:
- Fixed nocturnal biters mod setting description. As vanilla attacks have been integrated
- Fixed missing locale for fire spitter acid pool
- Fixed tooltip for suicide and nuclear biters
---------------------------------------------------------------------------------------------------
Version: 1.0.6
Date: 28. 03. 2021

View File

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

File diff suppressed because it is too large Load Diff

View File

@ -57,7 +57,7 @@ function poison.addFactionAddon()
target_effects =
{
type = "damage",
damage = { amount = 1.2 * i, type = "poison"}
damage = { amount = 0.9 * i, type = "poison"}
}
}
}

View File

@ -69,6 +69,19 @@ local makeUnitSpawner = biterUtils.makeUnitSpawner
-- module code
local scorchmarkTiers = {
"small-scorchmark",
"small-scorchmark",
"medium-scorchmark",
"medium-scorchmark",
"medium-scorchmark",
"big-scorchmark",
"big-scorchmark",
"big-scorchmark",
"huge-scorchmark",
"huge-scorchmark"
}
local explosionTiers = {
"explosion",
"explosion",
@ -104,7 +117,7 @@ local nuclearAttackNumeric = {
}
local bombAttackNumeric = {
["damage"] = { 50, 75, 100, 125, 180, 240, 400, 480, 650, 700 },
["damage"] = { 75, 112, 150, 187, 270, 360, 600, 720, 975, 1050 },
["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"] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }
@ -521,6 +534,7 @@ local function fillEntityTemplate(entity)
end
elseif (key == "explosionTiers") then
entity.attackExplosion = entity.explosionTiers[tier]
entity.attackScorchmark = entity.scorchmarkTiers[tier]
elseif (key == "attributes") then
for i=1,#entity[key] do
local attribute = entity[key][i]
@ -920,6 +934,7 @@ local function buildAttack(faction, template)
end
elseif (attack == "physical") then
template.explosionTiers = explosionTiers
template.scorchmarkTiers = scorchmarkTiers
template.damageType = "physical"
template.fireDamagePerTickType = "physical"
template.stickerDamagePerTickType = "physical"
@ -927,7 +942,7 @@ local function buildAttack(faction, template)
return {
{
type= "create-entity",
entity_name = "small-scorchmark"
entity_name = attributes.attackScorchmark
},
{
type= "create-entity",
@ -1047,6 +1062,7 @@ local function buildAttack(faction, template)
elseif (attack == "nuclear") then
template.addon[#template.addon+1] = nuclearAttackNumeric
template.explosionTiers = explosionTiers
template.scorchmarkTiers = scorchmarkTiers
template.nuclear = true
template.attackGenerator = function (attack)
return createSuicideAttack(attack,
@ -1058,6 +1074,7 @@ local function buildAttack(faction, template)
elseif (attack == "bomb") then
template.addon[#template.addon+1] = bombAttackNumeric
template.explosionTiers = explosionTiers
template.scorchmarkTiers = scorchmarkTiers
template.attackGenerator = function (attack)
return createSuicideAttack(attack,
nil,

View File

@ -63,8 +63,8 @@ end
function generateLocal()
-- local names = {"Alpha", "Beta", "Gamma", "Delta", "Epsilon", "Zeta", "Eta", "Theta", "Iota", "Kappa", "Lambda", "Mu", "Nu", "Xi", "Omicron", "Pi", "Rho", "Sigma", "Tau", "Upsilon", "Phi", "Chi", "Psi", "Omega"}
local names = {"Neutral", "Acid", "Physical", "Electric", "Suicide", "Nuclear", "Fire", "Inferno", "Troll", "Fast", "Laser", "Wasp", "Spawner", "Energy Thief", "Poison", "Pi", "Rho", "Sigma", "Tau", "Upsilon", "Phi", "Chi", "Psi", "Omega"}
local sizes = {"Larva", "Pupae", "Worker", "Grunt", "Soldier", "General", "Overlord", "Titan", "Leviathan", "Juggernaut"}
local names = {"Common", "Acidic", "Brutal", "Electric", "Suicide", "Nuclear", "Fire", "Inferno", "Regenerative", "Fast", "Laser", "Wasp", "Spawner", "Sapper", "Poison", "Pi", "Rho", "Sigma", "Tau", "Upsilon", "Phi", "Chi", "Psi", "Omega"}
local sizes = {"Larva", "Pupae", "Worker", "Grunt", "Soldier", "Elite", "Champion", "Overlord", "Titan", "Leviathan"}
local HIVE_BUILDINGS_TYPES = {
@ -192,6 +192,7 @@ function generateLocal()
print("fire-spitter-v" .. v .. "-t" .. t .. "-rampant=" .. name .. " spitter: " .. size .. " class")
print("fire-biter-spawner-v" .. v .. "-t" .. t .. "-rampant=" .. name .. " biter nest: " .. size .. " class")
print("fire-spitter-spawner-v" .. v .. "-t" .. t .. "-rampant=" .. name .. " spitter nest: " .. size .. " class")
print("fire-spitter-v" .. v .. "-t" .. t .. "-acid-fire-rampant=Acid pool: " .. size .. " class")
print("fire-worm-v" .. v .. "-t" .. t .. "-rampant=" .. name .. " worm: " .. size .. " class")
print("fire-worm-v" .. v .. "-t" .. t .. "-acid-fire-rampant=Acid pool: " .. size .. " class")
end

View File

@ -580,7 +580,8 @@ end
function biterFunctions.createSuicideAttack(attributes, blastWave, animation)
local o = {
type = "projectile",
range = attributes.range or 0.5,
range = -- attributes.range or
0.5,
cooldown = attributes.cooldown or 35,
range_mode = "bounding-box-to-bounding-box",
ammo_category = "melee",
@ -593,336 +594,272 @@ function biterFunctions.createSuicideAttack(attributes, blastWave, animation)
if attributes.nuclear then
o.ammo_type.action = {
{
type = "direct",
action_delivery =
{
type = "instant",
source_effects =
{
{
type = "set-tile",
tile_name = "nuclear-ground",
radius = attributes.radius * 0.25,
apply_projection = true,
tile_collision_mask = { "water-tile" },
},
{
type = "destroy-cliffs",
radius = attributes.radius * 0.18,
explosion = "explosion"
},
{
type = "create-entity",
entity_name = "nuke-explosion"
},
{
type = "camera-effect",
effect = "screen-burn",
duration = 60,
ease_in_duration = 5,
ease_out_duration = 60,
delay = 0,
strength = 6,
full_strength_max_distance = 200,
max_distance = 800
},
{
type = "play-sound",
sound = sounds.nuclear_explosion(0.9),
play_on_target_position = false,
-- min_distance = 200,
max_distance = 1000,
-- volume_modifier = 1,
audible_distance_modifier = 3
},
{
type = "play-sound",
sound = sounds.nuclear_explosion_aftershock(0.4),
play_on_target_position = false,
-- min_distance = 200,
max_distance = 1000,
-- volume_modifier = 1,
audible_distance_modifier = 3
},
{
type = "damage",
damage = {amount = attributes.damage, type = "explosion"}
},
{
type = "create-entity",
entity_name = "huge-scorchmark",
check_buildability = true,
},
{
type = "invoke-tile-trigger",
repeat_count = 1,
},
{
type = "destroy-decoratives",
include_soft_decoratives = true, -- soft decoratives are decoratives with grows_through_rail_path = true
include_decals = true,
invoke_decorative_trigger = true,
decoratives_with_trigger_only = false, -- if true, destroys only decoratives that have trigger_effect set
radius = attributes.radius * 0.35 -- large radius for demostrative purposes
},
{
type = "create-decorative",
decorative = "nuclear-ground-patch",
spawn_min_radius = attributes.radius * 0.1,
spawn_max_radius = attributes.radius * 0.12,
spawn_min = 30,
spawn_max = 40,
apply_projection = true,
spread_evenly = true
},
{
type = "nested-result",
action =
{
type = "area",
target_entities = false,
trigger_from_target = true,
repeat_count = 100,
radius = attributes.radius * 0.10,
action_delivery =
{
type = "projectile",
projectile = "atomic-bomb-ground-zero-projectile",
starting_speed = 0.6 * 0.8,
starting_speed_deviation = nuke_shockwave_starting_speed_deviation,
}
}
},
{
type = "nested-result",
action =
{
type = "area",
target_entities = false,
trigger_from_target = true,
repeat_count = 100,
radius = attributes.radius,
action_delivery =
{
type = "projectile",
projectile = "atomic-bomb-wave",
starting_speed = 0.5 * 0.7,
starting_speed_deviation = nuke_shockwave_starting_speed_deviation,
}
}
},
{
type = "nested-result",
action =
{
type = "area",
show_in_tooltip = false,
target_entities = false,
trigger_from_target = true,
repeat_count = 100,
radius = attributes.radius * 0.75,
action_delivery =
{
type = "projectile",
projectile = "atomic-bomb-wave-spawns-cluster-nuke-explosion",
starting_speed = 0.5 * 0.7,
starting_speed_deviation = nuke_shockwave_starting_speed_deviation,
}
}
},
{
type = "nested-result",
action =
{
type = "area",
show_in_tooltip = false,
target_entities = false,
trigger_from_target = true,
repeat_count = 50,
radius = attributes.radius * 0.07,
action_delivery =
{
type = "projectile",
projectile = "atomic-bomb-wave-spawns-fire-smoke-explosion",
starting_speed = 0.5 * 0.65,
starting_speed_deviation = nuke_shockwave_starting_speed_deviation,
}
}
},
{
type = "nested-result",
action =
{
type = "area",
show_in_tooltip = false,
target_entities = false,
trigger_from_target = true,
repeat_count = 100,
radius = attributes.radius * 0.07,
action_delivery =
{
type = "projectile",
projectile = "atomic-bomb-wave-spawns-nuke-shockwave-explosion",
starting_speed = 0.5 * 0.65,
starting_speed_deviation = nuke_shockwave_starting_speed_deviation,
}
}
},
{
type = "nested-result",
action =
{
type = "area",
show_in_tooltip = false,
target_entities = false,
trigger_from_target = true,
repeat_count = 100,
radius = attributes.radius * 0.85,
action_delivery =
{
type = "projectile",
projectile = "atomic-bomb-wave-spawns-nuclear-smoke",
starting_speed = 0.5 * 0.65,
starting_speed_deviation = nuke_shockwave_starting_speed_deviation,
}
}
},
{
type = "nested-result",
action =
{
type = "area",
show_in_tooltip = false,
target_entities = false,
trigger_from_target = true,
repeat_count = 10,
radius = attributes.radius * 0.18,
action_delivery =
{
type = "instant",
target_effects =
{
{
type = "create-entity",
entity_name = "nuclear-smouldering-smoke-source",
tile_collision_mask = { "water-tile" }
}
}
}
}
}
}
}
},
{
type = "cluster",
cluster_count = attributes.explosionCount,
distance = attributes.explosionDistance,
distance_deviation = attributes.explosionDistance,
action_delivery =
{
type = "instant",
source_effects= {
{
type="create-entity",
entity_name = attributes.attackExplosion,
},
{
type = "create-entity",
entity_name = attributes.attackScorchmark or "small-scorchmark",
check_buildability = true
}
}
}
}
}
else
o.ammo_type.action = {
{
type = "direct",
action_delivery = {
type = "direct",
action_delivery =
{
type = "instant",
source_effects =
target_effects =
{
{
type = "damage",
affects_target = true,
damage = {amount = attributes.healthDamage or 5, type = "explosion"}
type = "set-tile",
tile_name = "nuclear-ground",
radius = attributes.radius * 0.25,
apply_projection = true,
tile_collision_mask = { "water-tile" },
},
{
type = "destroy-cliffs",
radius = attributes.radius * 0.18,
explosion = "explosion"
},
{
type = "create-entity",
entity_name = attributes.attackExplosion
entity_name = "nuke-explosion"
},
{
type = "camera-effect",
effect = "screen-burn",
duration = 60,
ease_in_duration = 5,
ease_out_duration = 60,
delay = 0,
strength = 6,
full_strength_max_distance = 200,
max_distance = 800
},
{
type = "play-sound",
sound = sounds.nuclear_explosion(0.9),
play_on_target_position = false,
-- min_distance = 200,
max_distance = 1000,
-- volume_modifier = 1,
audible_distance_modifier = 3
},
{
type = "play-sound",
sound = sounds.nuclear_explosion_aftershock(0.4),
play_on_target_position = false,
-- min_distance = 200,
max_distance = 1000,
-- volume_modifier = 1,
audible_distance_modifier = 3
},
{
type = "damage",
damage = {amount = attributes.damage, type = "explosion"}
},
{
type = "create-entity",
entity_name = "huge-scorchmark",
check_buildability = true,
},
{
type = "invoke-tile-trigger",
repeat_count = 1,
},
{
type = "destroy-decoratives",
include_soft_decoratives = true, -- soft decoratives are decoratives with grows_through_rail_path = true
include_decals = true,
invoke_decorative_trigger = true,
decoratives_with_trigger_only = false, -- if true, destroys only decoratives that have trigger_effect set
radius = attributes.radius * 0.35 -- large radius for demostrative purposes
},
{
type = "create-decorative",
decorative = "nuclear-ground-patch",
spawn_min_radius = attributes.radius * 0.1,
spawn_max_radius = attributes.radius * 0.12,
spawn_min = 30,
spawn_max = 40,
apply_projection = true,
spread_evenly = true
},
{
type = "nested-result",
action = {
type = "area",
radius = attributes.radius,
action_delivery = {
type = "instant",
target_effects = {
action =
{
type = "area",
target_entities = false,
trigger_from_target = true,
repeat_count = 100,
radius = attributes.radius * 0.10,
action_delivery =
{
type = "damage",
damage = {
amount = attributes.damage,
type = attributes.damageType or "explosion"
}
},
}
type = "projectile",
projectile = "atomic-bomb-ground-zero-projectile",
starting_speed = 0.6 * 0.8,
starting_speed_deviation = nuke_shockwave_starting_speed_deviation,
}
}
}
},
{
type = "create-entity",
entity_name = attributes.attackScorchmark or "small-scorchmark",
check_buildability = true
type = "nested-result",
action =
{
type = "area",
target_entities = false,
trigger_from_target = true,
repeat_count = 100,
radius = attributes.radius,
action_delivery =
{
type = "projectile",
projectile = "atomic-bomb-wave",
starting_speed = 0.5 * 0.7,
starting_speed_deviation = nuke_shockwave_starting_speed_deviation,
}
}
},
{
type = "nested-result",
action =
{
type = "area",
show_in_tooltip = false,
target_entities = false,
trigger_from_target = true,
repeat_count = 100,
radius = attributes.radius * 0.75,
action_delivery =
{
type = "projectile",
projectile = "atomic-bomb-wave-spawns-cluster-nuke-explosion",
starting_speed = 0.5 * 0.7,
starting_speed_deviation = nuke_shockwave_starting_speed_deviation,
}
}
},
{
type = "nested-result",
action =
{
type = "area",
show_in_tooltip = false,
target_entities = false,
trigger_from_target = true,
repeat_count = 50,
radius = attributes.radius * 0.07,
action_delivery =
{
type = "projectile",
projectile = "atomic-bomb-wave-spawns-fire-smoke-explosion",
starting_speed = 0.5 * 0.65,
starting_speed_deviation = nuke_shockwave_starting_speed_deviation,
}
}
},
{
type = "nested-result",
action =
{
type = "area",
show_in_tooltip = false,
target_entities = false,
trigger_from_target = true,
repeat_count = 100,
radius = attributes.radius * 0.07,
action_delivery =
{
type = "projectile",
projectile = "atomic-bomb-wave-spawns-nuke-shockwave-explosion",
starting_speed = 0.5 * 0.65,
starting_speed_deviation = nuke_shockwave_starting_speed_deviation,
}
}
},
{
type = "nested-result",
action =
{
type = "area",
show_in_tooltip = false,
target_entities = false,
trigger_from_target = true,
repeat_count = 100,
radius = attributes.radius * 0.85,
action_delivery =
{
type = "projectile",
projectile = "atomic-bomb-wave-spawns-nuclear-smoke",
starting_speed = 0.5 * 0.65,
starting_speed_deviation = nuke_shockwave_starting_speed_deviation,
}
}
},
{
type = "nested-result",
action =
{
type = "area",
show_in_tooltip = false,
target_entities = false,
trigger_from_target = true,
repeat_count = 10,
radius = attributes.radius * 0.18,
action_delivery =
{
type = "instant",
target_effects =
{
{
type = "create-entity",
entity_name = "nuclear-smouldering-smoke-source",
tile_collision_mask = { "water-tile" }
}
}
}
}
}
}
}
}
else
o.ammo_type.action = {
type = "direct",
action_delivery = {
type = "instant",
source_effects = {
{
type = "damage",
affects_target = true,
show_in_tooltip = false,
damage = {amount = attributes.healthDamage or 5, type = "explosion"}
}
},
}-- ,
-- {
-- type = "cluster",
-- cluster_count = attributes.explosionCount,
-- distance = attributes.explosionDistance,
-- distance_deviation = 3,
-- action_delivery =
-- {
-- type = "instant",
-- source_effects= {
-- {
-- type="create-entity",
-- entity_name = attributes.attackExplosion,
-- },
-- {
-- type = "create-entity",
-- entity_name = attributes.attackScorchmark or "small-scorchmark",
-- check_buildability = true
-- },
-- {
-- type = "nested-result",
-- action = {
-- type = "area",
-- radius = attributes.radius,
-- action_delivery = {
-- type = "instant",
-- target_effects = {
-- {
-- type = "damage",
-- damage = {
-- amount = attributes.damage,
-- type = attributes.damageType or "explosion"
-- }
-- }
-- }
-- }
-- }
-- }
-- }
-- }
-- }
target_effects = {
{
type = "create-entity",
entity_name = attributes.attackExplosion
},
{
type = "nested-result",
action = {
type = "area",
radius = attributes.radius,
action_delivery = {
type = "instant",
target_effects = {
{
type = "damage",
damage = {
amount = attributes.damage,
type = attributes.damageType or "explosion"
}
},
}
}
}
},
{
type = "create-entity",
entity_name = attributes.attackScorchmark or "small-scorchmark",
check_buildability = true
}
}
},
}
end