mirror of
https://github.com/veden/Rampant.git
synced 2025-01-26 03:20:07 +02:00
see changelog
This commit is contained in:
parent
0c2e0b7dc4
commit
0ac25d84a7
@ -268,7 +268,12 @@ function upgrade.attempt(natives)
|
||||
game.surfaces[natives.activeSurface].print("Rampant - Version 0.16.42")
|
||||
global.version = constants.VERSION_77
|
||||
end
|
||||
if (global.version < constants.VERSION_78) then
|
||||
|
||||
game.surfaces[natives.activeSurface].print("Rampant - Version 0.17.0")
|
||||
global.version = constants.VERSION_78
|
||||
end
|
||||
|
||||
return starting ~= global.version, natives
|
||||
end
|
||||
|
||||
|
@ -1,3 +1,19 @@
|
||||
---------------------------------------------------------------------------------------------------
|
||||
Version: 0.17.0
|
||||
Date: 2. 26. 2019
|
||||
Improvements:
|
||||
- Added thumbnail
|
||||
Tweaks:
|
||||
- Updated to 0.17
|
||||
- Synced worm vanilla to worm template
|
||||
- Changed ground shakes warning message to off by default
|
||||
- For now, acid-splash-purple replaced explosion
|
||||
Bugfixes:
|
||||
- Require statement path changes
|
||||
- Removed unused chunk scanner entity causing load errors
|
||||
- Removed acid splash spitter and worm decal as it no longer exist
|
||||
- Fixed 0.17.2 hide-from-bonus-gui
|
||||
|
||||
---------------------------------------------------------------------------------------------------
|
||||
Version: 0.16.42
|
||||
Date: 2. 18. 2019
|
||||
|
@ -1,10 +1,10 @@
|
||||
{
|
||||
"name" : "Rampant",
|
||||
"factorio_version" : "0.16",
|
||||
"version" : "0.16.42",
|
||||
"factorio_version" : "0.17",
|
||||
"version" : "0.17.0",
|
||||
"title" : "Rampant",
|
||||
"author" : "Veden",
|
||||
"homepage" : "https://forums.factorio.com/viewtopic.php?f=94&t=31445",
|
||||
"description" : "Improves the enemies tactics by using potential fields/pheromones allowing probing of defenses, retreats, reinforcements, counterattacking, breaching, raids, rallying death cry, and player hunting. Uses nonhoming blockable biter projectiles. Adds new Enemies (disabled by default). Can completely replace the vanilla AI. Difficulty setting in mod options menu.",
|
||||
"dependencies" : ["base >= 0.16.43", "? bobenemies", "? Natural_Evolution_Enemies >= 9.0.3", "? Clockwork", "? Orbital Ion Cannon", "? RampantArsenal"]
|
||||
"dependencies" : ["base >= 0.17.0", "? bobenemies", "? Natural_Evolution_Enemies >= 9.0.3", "? Clockwork", "? Orbital Ion Cannon", "? RampantArsenal"]
|
||||
}
|
||||
|
@ -11,8 +11,7 @@ local chunkPropertyUtils = require("ChunkPropertyUtils")
|
||||
local unitGroupUtils = require("UnitGroupUtils")
|
||||
local movementUtils = require("MovementUtils")
|
||||
local mathUtils = require("MathUtils")
|
||||
package.path = "../?.lua;" .. package.path
|
||||
local config = require("config")
|
||||
local config = require("__Rampant__/config")
|
||||
|
||||
-- constants
|
||||
|
||||
|
@ -29,6 +29,7 @@ constants.VERSION_73 = 73
|
||||
constants.VERSION_75 = 75
|
||||
constants.VERSION_76 = 76
|
||||
constants.VERSION_77 = 77
|
||||
constants.VERSION_78 = 78
|
||||
|
||||
-- misc
|
||||
|
||||
|
2
make.rkt
2
make.rkt
@ -35,6 +35,7 @@
|
||||
(string->path "Upgrade.lua")
|
||||
(string->path "settings.lua")
|
||||
(string->path "README.md")
|
||||
(string->path "thumbnail.png")
|
||||
(string->path "NOTICE")
|
||||
(string->path "libs")
|
||||
(string->path "sounds")
|
||||
@ -73,6 +74,7 @@
|
||||
(copyFile "changelog.txt" modFolder)
|
||||
(copyFile "Upgrade.lua" modFolder)
|
||||
(copyFile "tests.lua" modFolder)
|
||||
(copyFile "thumbnail.png" modFolder)
|
||||
(copyDirectory "libs" modFolder)
|
||||
(copyDirectory "locale" modFolder)
|
||||
(copyDirectory "sounds" modFolder)
|
||||
|
@ -3,8 +3,7 @@
|
||||
local acidBall = require("utils/AttackBall")
|
||||
local biterUtils = require("utils/BiterUtils")
|
||||
local swarmUtils = require("SwarmUtils")
|
||||
package.path = "../libs/?.lua;" .. package.path
|
||||
local constants = require("Constants")
|
||||
local constants = require("__Rampant__/libs/Constants")
|
||||
|
||||
-- constants
|
||||
|
||||
|
@ -4,8 +4,7 @@ local biterUtils = require("utils/BiterUtils")
|
||||
local beamUtils = require("utils/BeamUtils")
|
||||
local attackBall = require("utils/AttackBall")
|
||||
local swarmUtils = require("SwarmUtils")
|
||||
package.path = "../libs/?.lua;" .. package.path
|
||||
local constants = require("Constants")
|
||||
local constants = require("__Rampant__/libs/Constants")
|
||||
|
||||
-- constants
|
||||
|
||||
|
@ -6,8 +6,7 @@ local biterUtils = require("utils/BiterUtils")
|
||||
local beamUtils = require("utils/BeamUtils")
|
||||
local attackBall = require("utils/AttackBall")
|
||||
local swarmUtils = require("SwarmUtils")
|
||||
package.path = "../libs/?.lua;" .. package.path
|
||||
local constants = require("Constants")
|
||||
local constants = require("__Rampant__/libs/Constants")
|
||||
|
||||
-- constants
|
||||
|
||||
@ -513,9 +512,9 @@ function energyThief.addFaction()
|
||||
{
|
||||
filename = "__core__/graphics/empty.png",
|
||||
priority = "extra-high",
|
||||
width = 46,
|
||||
height = 33,
|
||||
shift = {0.25, 0.015625}
|
||||
width = 1,
|
||||
height = 1,
|
||||
shift = {0, 0}
|
||||
}
|
||||
},
|
||||
|
||||
@ -525,7 +524,7 @@ function energyThief.addFaction()
|
||||
icon = "__Rampant__/graphics/icons/thief/crystal-drain.png",
|
||||
icon_size = 32,
|
||||
hidden = true,
|
||||
flags = {"goes-to-quickbar"},
|
||||
flags = {},
|
||||
subgroup = "energy",
|
||||
order = "e[accumulator]-a[accumulator]",
|
||||
place_result = "drain-trigger-rampant",
|
||||
@ -537,7 +536,7 @@ function energyThief.addFaction()
|
||||
name = "crystal-drain-pole-rampant",
|
||||
icon = "__Rampant__/graphics/icons/thief/crystal-drain.png",
|
||||
icon_size = 32,
|
||||
flags = {"goes-to-quickbar"},
|
||||
flags = {},
|
||||
subgroup = "energy",
|
||||
order = "e[accumulator]-a[accumulator]",
|
||||
place_result = "crystal-drain-pole-rampant",
|
||||
@ -667,11 +666,11 @@ function energyThief.addFaction()
|
||||
{
|
||||
filename = "__core__/graphics/empty.png",
|
||||
priority = "low",
|
||||
width = 46,
|
||||
height = 49,
|
||||
width = 1,
|
||||
height = 1,
|
||||
direction_count = 1,
|
||||
line_length = 1,
|
||||
shift = {0.1875, -0.2}
|
||||
shift = {0, 0}
|
||||
}
|
||||
}}
|
||||
chest.max_health = 750
|
||||
@ -716,7 +715,7 @@ function energyThief.addFaction()
|
||||
name = "pylon-target-rampant",
|
||||
icon = "__Rampant__/graphics/icons/thief/crystal-drain.png",
|
||||
icon_size = 32,
|
||||
flags = {"goes-to-quickbar"},
|
||||
flags = {},
|
||||
subgroup = "storage",
|
||||
hidden = true,
|
||||
order = "a[items]-h[steel-collector]",
|
||||
|
@ -3,8 +3,7 @@
|
||||
local acidBall = require("utils/AttackBall")
|
||||
local biterUtils = require("utils/BiterUtils")
|
||||
local swarmUtils = require("SwarmUtils")
|
||||
package.path = "../libs/?.lua;" .. package.path
|
||||
local constants = require("Constants")
|
||||
local constants = require("__Rampant__/libs/Constants")
|
||||
|
||||
-- constants
|
||||
|
||||
|
@ -3,8 +3,7 @@
|
||||
local acidBall = require("utils/AttackBall")
|
||||
local biterUtils = require("utils/BiterUtils")
|
||||
local swarmUtils = require("SwarmUtils")
|
||||
package.path = "../libs/?.lua;" .. package.path
|
||||
local constants = require("Constants")
|
||||
local constants = require("__Rampant__/libs/Constants")
|
||||
|
||||
-- constants
|
||||
|
||||
|
@ -3,8 +3,8 @@
|
||||
local attackFlame = require("utils/AttackFlame")
|
||||
local biterUtils = require("utils/BiterUtils")
|
||||
local swarmUtils = require("SwarmUtils")
|
||||
package.path = "../libs/?.lua;" .. package.path
|
||||
local constants = require("Constants")
|
||||
|
||||
local constants = require("__Rampant__/libs/Constants")
|
||||
local math3d = require("math3d")
|
||||
|
||||
-- constants
|
||||
|
@ -4,8 +4,7 @@ local acidBall = require("utils/AttackBall")
|
||||
local beamUtils = require("utils/BeamUtils")
|
||||
local biterUtils = require("utils/BiterUtils")
|
||||
local swarmUtils = require("SwarmUtils")
|
||||
package.path = "../libs/?.lua;" .. package.path
|
||||
local constants = require("Constants")
|
||||
local constants = require("__Rampant__/libs/Constants")
|
||||
|
||||
-- constants
|
||||
|
||||
|
@ -3,8 +3,7 @@
|
||||
local acidBall = require("utils/AttackBall")
|
||||
local biterUtils = require("utils/BiterUtils")
|
||||
local swarmUtils = require("SwarmUtils")
|
||||
package.path = "../libs/?.lua;" .. package.path
|
||||
local constants = require("Constants")
|
||||
local constants = require("__Rampant__/libs/Constants")
|
||||
|
||||
-- constants
|
||||
|
||||
|
@ -5,8 +5,7 @@ local biterUtils = require("utils/BiterUtils")
|
||||
local stickerUtils = require("utils/StickerUtils")
|
||||
local bombUtils = require("utils/BombUtils")
|
||||
local swarmUtils = require("SwarmUtils")
|
||||
package.path = "../libs/?.lua;" .. package.path
|
||||
local constants = require("Constants")
|
||||
local constants = require("__Rampant__/libs/Constants")
|
||||
|
||||
-- constants
|
||||
|
||||
|
@ -3,8 +3,7 @@
|
||||
local physicalBall = require("utils/AttackBall")
|
||||
local biterUtils = require("utils/BiterUtils")
|
||||
local swarmUtils = require("SwarmUtils")
|
||||
package.path = "../libs/?.lua;" .. package.path
|
||||
local constants = require("Constants")
|
||||
local constants = require("__Rampant__/libs/Constants")
|
||||
|
||||
-- constants
|
||||
|
||||
|
@ -4,8 +4,7 @@ local physicalBall = require("utils/AttackBall")
|
||||
local biterUtils = require("utils/BiterUtils")
|
||||
local smokeUtils = require("utils/SmokeUtils")
|
||||
local swarmUtils = require("SwarmUtils")
|
||||
package.path = "../libs/?.lua;" .. package.path
|
||||
local constants = require("Constants")
|
||||
local constants = require("__Rampant__/libs/Constants")
|
||||
|
||||
-- constants
|
||||
|
||||
|
@ -4,8 +4,7 @@ local acidBall = require("utils/AttackBall")
|
||||
local droneUtils = require("utils/DroneUtils")
|
||||
local biterUtils = require("utils/BiterUtils")
|
||||
local swarmUtils = require("SwarmUtils")
|
||||
package.path = "../libs/?.lua;" .. package.path
|
||||
local constants = require("Constants")
|
||||
local constants = require("__Rampant__/libs/Constants")
|
||||
|
||||
-- constants
|
||||
|
||||
|
@ -4,8 +4,7 @@ local acidBall = require("utils/AttackBall")
|
||||
local biterUtils = require("utils/BiterUtils")
|
||||
local stickerUtils = require("utils/StickerUtils")
|
||||
local swarmUtils = require("SwarmUtils")
|
||||
package.path = "../libs/?.lua;" .. package.path
|
||||
local constants = require("Constants")
|
||||
local constants = require("__Rampant__/libs/Constants")
|
||||
|
||||
-- constants
|
||||
|
||||
|
@ -3,9 +3,9 @@ local swarmUtils = {}
|
||||
|
||||
local droneUtils = require("utils/DroneUtils")
|
||||
local biterUtils = require("utils/BiterUtils")
|
||||
package.path = "../?.lua;" .. package.path
|
||||
local mathUtils = require("libs/MathUtils")
|
||||
local constants = require("libs/Constants")
|
||||
|
||||
local constants = require("__Rampant__/libs/Constants")
|
||||
local mathUtils = require("__Rampant__/libs/MathUtils")
|
||||
|
||||
-- imported functions
|
||||
|
||||
|
@ -3,8 +3,7 @@
|
||||
local acidBall = require("utils/AttackBall")
|
||||
local biterUtils = require("utils/BiterUtils")
|
||||
local swarmUtils = require("SwarmUtils")
|
||||
package.path = "../libs/?.lua;" .. package.path
|
||||
local constants = require("Constants")
|
||||
local constants = require("__Rampant__/libs/Constants")
|
||||
|
||||
-- constants
|
||||
|
||||
|
@ -4,8 +4,7 @@ local acidBall = require("utils/AttackBall")
|
||||
local droneUtils = require("utils/DroneUtils")
|
||||
local biterUtils = require("utils/BiterUtils")
|
||||
local swarmUtils = require("SwarmUtils")
|
||||
package.path = "../libs/?.lua;" .. package.path
|
||||
local constants = require("Constants")
|
||||
local constants = require("__Rampant__/libs/Constants")
|
||||
|
||||
-- constants
|
||||
|
||||
@ -64,8 +63,9 @@ buildUnits(
|
||||
type = "instant",
|
||||
target_effects =
|
||||
{
|
||||
--FIXME
|
||||
type = "create-entity",
|
||||
entity_name = "acid-splash-purple"
|
||||
entity_name = "explosion"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -274,8 +274,9 @@ buildUnits(
|
||||
type = "instant",
|
||||
target_effects =
|
||||
{
|
||||
--FIXME
|
||||
type = "create-entity",
|
||||
entity_name = "acid-splash-purple"
|
||||
entity_name = "explosion"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -19,95 +19,23 @@ data:extend({
|
||||
vehicle_impact_sound = { filename = "__base__/sound/car-wood-impact.ogg", volume = 1.0 },
|
||||
picture =
|
||||
{
|
||||
filename = "__base__/graphics/entity/wooden-chest/wooden-chest.png",
|
||||
priority = "extra-high",
|
||||
width = 46,
|
||||
height = 33,
|
||||
shift = {0.25, 0.015625}
|
||||
},
|
||||
filename = "__base__/graphics/entity/wooden-chest/wooden-chest.png",
|
||||
priority = "extra-high",
|
||||
width = 32,
|
||||
height = 36,
|
||||
shift = util.by_pixel(0.5, -2),
|
||||
hr_version =
|
||||
{
|
||||
filename = "__base__/graphics/entity/wooden-chest/hr-wooden-chest.png",
|
||||
priority = "extra-high",
|
||||
width = 62,
|
||||
height = 72,
|
||||
shift = util.by_pixel(0.5, -2),
|
||||
scale = 0.5
|
||||
}
|
||||
},
|
||||
circuit_wire_connection_point = circuit_connector_definitions["chest"].points,
|
||||
circuit_connector_sprites = circuit_connector_definitions["chest"].sprites,
|
||||
circuit_wire_max_distance = default_circuit_wire_max_distance
|
||||
},
|
||||
|
||||
{
|
||||
type = "container",
|
||||
name = "chunk-scanner-ns-rampant",
|
||||
icon = "__base__/graphics/icons/wooden-chest.png",
|
||||
icon_size = 32,
|
||||
flags = {},
|
||||
collision_mask = {"player-layer", "object-layer", "water-tile"},
|
||||
collision_box = {{-0.5, 0}, {0, 32}},
|
||||
-- minable = {mining_time = 1, result = "chunk-scanner-ns-rampant"},
|
||||
minable = {mining_time = 1, result = "wooden-chest"},
|
||||
max_health = 100,
|
||||
corpse = "small-remnants",
|
||||
fast_replaceable_group = "container",
|
||||
selection_box = {{-0.5, 0}, {0, 32}},
|
||||
inventory_size = 16,
|
||||
open_sound = { filename = "__base__/sound/wooden-chest-open.ogg" },
|
||||
close_sound = { filename = "__base__/sound/wooden-chest-close.ogg" },
|
||||
vehicle_impact_sound = { filename = "__base__/sound/car-wood-impact.ogg", volume = 1.0 },
|
||||
picture =
|
||||
{
|
||||
filename = "__base__/graphics/entity/wooden-chest/wooden-chest.png",
|
||||
priority = "extra-high",
|
||||
width = 46,
|
||||
height = 33,
|
||||
shift = {0.25, 0.015625}
|
||||
},
|
||||
circuit_wire_connection_point = circuit_connector_definitions["chest"].points,
|
||||
circuit_connector_sprites = circuit_connector_definitions["chest"].sprites,
|
||||
circuit_wire_max_distance = default_circuit_wire_max_distance
|
||||
},
|
||||
|
||||
{
|
||||
type = "container",
|
||||
name = "chunk-scanner-ew-rampant",
|
||||
icon = "__base__/graphics/icons/wooden-chest.png",
|
||||
icon_size = 32,
|
||||
flags = {},
|
||||
collision_box = {{0, -0.5}, {32, 0}},
|
||||
collision_mask = {"player-layer", "object-layer", "water-tile"},
|
||||
-- minable = {mining_time = 1, result = "chunk-scanner-ew-rampant"},
|
||||
minable = {mining_time = 1, result = "wooden-chest"},
|
||||
max_health = 100,
|
||||
corpse = "small-remnants",
|
||||
fast_replaceable_group = "container",
|
||||
selection_box = {{0, -0.5}, {32, 0}},
|
||||
inventory_size = 16,
|
||||
open_sound = { filename = "__base__/sound/wooden-chest-open.ogg" },
|
||||
close_sound = { filename = "__base__/sound/wooden-chest-close.ogg" },
|
||||
vehicle_impact_sound = { filename = "__base__/sound/car-wood-impact.ogg", volume = 1.0 },
|
||||
picture =
|
||||
{
|
||||
filename = "__base__/graphics/entity/wooden-chest/wooden-chest.png",
|
||||
priority = "extra-high",
|
||||
width = 46,
|
||||
height = 33,
|
||||
shift = {0.25, 0.015625}
|
||||
},
|
||||
circuit_wire_connection_point = circuit_connector_definitions["chest"].points,
|
||||
circuit_connector_sprites = circuit_connector_definitions["chest"].sprites,
|
||||
circuit_wire_max_distance = default_circuit_wire_max_distance
|
||||
}
|
||||
|
||||
}
|
||||
})
|
||||
|
||||
-- local d = table.deepcopy(data.raw["item"]["wooden-chest"])
|
||||
-- d.name = "chunk-scanner-ew-rampant"
|
||||
-- d.hidden = true
|
||||
-- d.place_result = "chunk-scanner-ew-rampant"
|
||||
|
||||
-- data:extend({
|
||||
-- d
|
||||
-- })
|
||||
|
||||
-- d = table.deepcopy(data.raw["item"]["wooden-chest"])
|
||||
-- d.name = "chunk-scanner-ns-rampant"
|
||||
-- d.hidden = true
|
||||
-- d.place_result = "chunk-scanner-ns-rampant"
|
||||
|
||||
-- data:extend({
|
||||
-- d
|
||||
-- })
|
||||
|
@ -25,7 +25,7 @@ stickerUtils.makeSticker({
|
||||
function AttackBall.createAttackBall(attributes)
|
||||
|
||||
if (attributes.type == "stream") or FORCE_OLD_PROJECTILES then
|
||||
|
||||
|
||||
elseif attributes.damage and (attributes.type == "projectile") then
|
||||
attributes.damage = attributes.damage * 2.7
|
||||
end
|
||||
@ -59,9 +59,10 @@ function AttackBall.createAttackBall(attributes)
|
||||
type = "instant",
|
||||
target_effects = (attributes.pointEffects and attributes.pointEffects(attributes)) or
|
||||
{
|
||||
--FIXME
|
||||
{
|
||||
type= "create-entity",
|
||||
entity_name = attributes.crater or "acid-splash-purple"
|
||||
entity_name = attributes.crater or "small-scorchmark"
|
||||
},
|
||||
{
|
||||
type = "damage",
|
||||
|
@ -81,8 +81,9 @@ function attacks.addAttacks()
|
||||
sticker = "slowdown-sticker",
|
||||
},
|
||||
{
|
||||
type = "create-entity",
|
||||
entity_name = "acid-splash-purple"
|
||||
type = "create-entity",
|
||||
--FIXME
|
||||
entity_name = "explosion"
|
||||
}
|
||||
}
|
||||
end,
|
||||
@ -184,8 +185,9 @@ function attacks.addAttacks()
|
||||
pointEffects = function (attributes)
|
||||
return {
|
||||
{
|
||||
type = "create-entity",
|
||||
entity_name = "acid-splash-purple"
|
||||
--FIXME
|
||||
type = "create-entity",
|
||||
entity_name = "explosion"
|
||||
}
|
||||
}
|
||||
end,
|
||||
@ -218,8 +220,9 @@ function attacks.addAttacks()
|
||||
pointEffects = function (attributes)
|
||||
return {
|
||||
{
|
||||
--FIXME
|
||||
type = "create-entity",
|
||||
entity_name = "acid-splash-purple"
|
||||
entity_name = "explosion"
|
||||
}
|
||||
}
|
||||
end,
|
||||
|
@ -1,57 +1,145 @@
|
||||
local biterFunctions = {}
|
||||
|
||||
local unitSpawnerUtils = require("UnitSpawnerUtils")
|
||||
|
||||
local unitUtils = require("UnitUtils")
|
||||
|
||||
local FORCE_OLD_PROJECTILES = settings.startup["rampant-forceOldProjectiles"].value
|
||||
|
||||
|
||||
local spitter_alternative_attacking_animation_sequence = unitUtils.spitter_alternative_attacking_animation_sequence
|
||||
local spawner_integration = unitSpawnerUtils.spawner_integration
|
||||
local spawner_idle_animation = unitSpawnerUtils.spawner_idle_animation
|
||||
local spawner_die_animation = unitSpawnerUtils.spawner_die_animation
|
||||
|
||||
|
||||
|
||||
function biterFunctions.makeSpitterCorpse(attributes)
|
||||
local name = attributes.name .. "-corpse-rampant"
|
||||
|
||||
local corpse = {
|
||||
type = "corpse",
|
||||
name = name,
|
||||
icon = "__base__/graphics/icons/big-biter-corpse.png",
|
||||
icon_size = 32,
|
||||
selectable_in_game = false,
|
||||
selection_box = {{-1, -1}, {1, 1}},
|
||||
subgroup="corpses",
|
||||
order = "c[corpse]-b[spitter]-a[small]",
|
||||
flags = {"placeable-neutral", "placeable-off-grid", "building-direction-8-way", "not-on-map"},
|
||||
}
|
||||
|
||||
corpse.animation = spitterdyinganimation(attributes.scale, attributes.tint1, attributes.tint2)
|
||||
corpse.dying_speed = 0.04
|
||||
corpse.time_before_removed = 15 * 60 * 60
|
||||
corpse.direction_shuffle = { { 1, 2, 3, 16 }, { 4, 5, 6, 7 }, { 8, 9, 10, 11 }, { 12, 13, 14, 15 } }
|
||||
corpse.shuffle_directions_at_frame = 4
|
||||
corpse.final_render_layer = "lower-object-above-shadow"
|
||||
|
||||
corpse.ground_patch_render_layer = "decals" -- "transport-belt-integration"
|
||||
corpse.ground_patch_fade_in_delay = 1 / 0.02 -- in ticks; 1/dying_speed to delay the animation until dying animation finishes
|
||||
corpse.ground_patch_fade_in_speed = 0.002
|
||||
corpse.ground_patch_fade_out_start = 50 * 60
|
||||
corpse.ground_patch_fade_out_duration = 20 * 60
|
||||
|
||||
local a = 1
|
||||
local d = 0.9
|
||||
corpse.ground_patch =
|
||||
{
|
||||
sheet =
|
||||
{
|
||||
filename = "__base__/graphics/entity/biter/blood-puddle-var-main.png",
|
||||
flags = { "low-object" },
|
||||
line_length = 4,
|
||||
variation_count = 4,
|
||||
frame_count = 1,
|
||||
width = 84,
|
||||
height = 68,
|
||||
shift = util.by_pixel(1, 0),
|
||||
tint = {r = 0.6 * d * a, g = 0.1 * d * a, b = 0.6 * d * a, a = a},
|
||||
scale = attributes.scale * 2,
|
||||
hr_version =
|
||||
{
|
||||
filename = "__base__/graphics/entity/biter/hr-blood-puddle-var-main.png",
|
||||
flags = { "low-object" },
|
||||
line_length = 4,
|
||||
variation_count = 4,
|
||||
frame_count = 1,
|
||||
width = 164,
|
||||
height = 134,
|
||||
shift = util.by_pixel(-0.5,-0.5),
|
||||
tint = {r = 0.6 * d * a, g = 0.1 * d * a, b = 0.6 * d * a, a = a},
|
||||
scale = attributes.scale
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
data:extend(
|
||||
{
|
||||
{
|
||||
type = "corpse",
|
||||
name = name,
|
||||
icon = "__base__/graphics/icons/big-biter-corpse.png",
|
||||
icon_size = 32,
|
||||
selectable_in_game = false,
|
||||
selection_box = {{-1, -1}, {1, 1}},
|
||||
subgroup="corpses",
|
||||
order = "c[corpse]-b[spitter]-a[small]",
|
||||
flags = {"placeable-neutral", "placeable-off-grid", "building-direction-8-way", "not-on-map"},
|
||||
dying_speed = 0.04,
|
||||
time_before_removed = 15 * 60 * 60,
|
||||
final_render_layer = "corpse",
|
||||
animation = spitterdyinganimation(attributes.scale, attributes.tint)
|
||||
}
|
||||
corpse
|
||||
})
|
||||
return name
|
||||
end
|
||||
|
||||
function biterFunctions.makeBiterCorpse(attributes)
|
||||
local name = attributes.name .. "-corpse-rampant"
|
||||
|
||||
local corpse = {
|
||||
type = "corpse",
|
||||
name = name,
|
||||
icon = "__base__/graphics/icons/small-biter-corpse.png",
|
||||
icon_size = 32,
|
||||
selection_box = {{-0.8, -0.8}, {0.8, 0.8}},
|
||||
selectable_in_game = false,
|
||||
subgroup="corpses",
|
||||
order = "c[corpse]-a[biter]-a[small]",
|
||||
flags = {"placeable-neutral", "placeable-off-grid", "building-direction-8-way", "not-repairable", "not-on-map"}
|
||||
}
|
||||
|
||||
corpse.animation = biterdieanimation(attributes.scale, attributes.tint1, attributes.tint2)
|
||||
corpse.dying_speed = 0.04
|
||||
corpse.time_before_removed = 15 * 60 * 60
|
||||
corpse.direction_shuffle = { { 1, 2, 3, 16 }, { 4, 5, 6, 7 }, { 8, 9, 10, 11 }, { 12, 13, 14, 15 } }
|
||||
corpse.shuffle_directions_at_frame = 7
|
||||
corpse.final_render_layer = "lower-object-above-shadow"
|
||||
|
||||
corpse.ground_patch_render_layer = "decals" -- "transport-belt-integration"
|
||||
corpse.ground_patch_fade_in_delay = 1 / 0.02 -- in ticks; 1/dying_speed to delay the animation until dying animation finishes
|
||||
corpse.ground_patch_fade_in_speed = 0.002
|
||||
corpse.ground_patch_fade_out_start = 50 * 60
|
||||
corpse.ground_patch_fade_out_duration = 20 * 60
|
||||
|
||||
local a = 1
|
||||
local d = 0.9
|
||||
corpse.ground_patch =
|
||||
{
|
||||
sheet =
|
||||
{
|
||||
filename = "__base__/graphics/entity/biter/blood-puddle-var-main.png",
|
||||
flags = { "low-object" },
|
||||
line_length = 4,
|
||||
variation_count = 4,
|
||||
frame_count = 1,
|
||||
width = 84,
|
||||
height = 68,
|
||||
shift = util.by_pixel(1, 0),
|
||||
tint = {r = 0.6 * d * a, g = 0.1 * d * a, b = 0.6 * d * a, a = a},
|
||||
scale = attributes.scale * 2,
|
||||
hr_version =
|
||||
{
|
||||
filename = "__base__/graphics/entity/biter/hr-blood-puddle-var-main.png",
|
||||
flags = { "low-object" },
|
||||
line_length = 4,
|
||||
variation_count = 4,
|
||||
frame_count = 1,
|
||||
width = 164,
|
||||
height = 134,
|
||||
shift = util.by_pixel(-0.5,-0.5),
|
||||
tint = {r = 0.6 * d * a, g = 0.1 * d * a, b = 0.6 * d * a, a = a},
|
||||
scale = attributes.scale
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
data:extend({
|
||||
{
|
||||
type = "corpse",
|
||||
name = name,
|
||||
icon = "__base__/graphics/icons/big-biter-corpse.png",
|
||||
icon_size = 32,
|
||||
selectable_in_game = false,
|
||||
selection_box = {{-1, -1}, {1, 1}},
|
||||
subgroup="corpses",
|
||||
order = "c[corpse]-b[spitter]-a[small]",
|
||||
flags = {"placeable-neutral", "placeable-off-grid", "building-direction-8-way", "not-on-map"},
|
||||
dying_speed = 0.04,
|
||||
time_before_removed = 15 * 60 * 60,
|
||||
final_render_layer = "corpse",
|
||||
animation = biterdieanimation(attributes.scale, attributes.tint1, attributes.tint2)
|
||||
}
|
||||
corpse
|
||||
})
|
||||
return name
|
||||
end
|
||||
@ -100,8 +188,12 @@ function biterFunctions.makeWormCorpse(attributes)
|
||||
flags = {"placeable-neutral", "placeable-off-grid", "building-direction-8-way", "not-repairable", "not-on-map"},
|
||||
dying_speed = 0.01,
|
||||
time_before_removed = 15 * 60 * 60,
|
||||
final_render_layer = "corpse",
|
||||
animation = worm_die_animation(attributes.scale, attributes.tint)
|
||||
final_render_layer = "lower-object-above-shadow",
|
||||
animation = worm_die_animation(attributes.scale, attributes.tint),
|
||||
ground_patch =
|
||||
{
|
||||
sheet = worm_integration(attributes.scale)
|
||||
}
|
||||
}
|
||||
})
|
||||
return name
|
||||
@ -113,7 +205,7 @@ function biterFunctions.makeBiter(name, biterAttributes, biterAttack, biterResis
|
||||
v.type = k
|
||||
resistances[#resistances+1] = v
|
||||
end
|
||||
-- print(name .. " " .. biterAttributes.health)
|
||||
-- print(name .. " " .. biterAttributes.health)
|
||||
return {
|
||||
type = "unit",
|
||||
name = name .. "-rampant",
|
||||
@ -153,7 +245,7 @@ function biterFunctions.makeSpitter(name, biterAttributes, biterAttack, biterRes
|
||||
v.type = k
|
||||
resistances[#resistances+1] = v
|
||||
end
|
||||
-- print(name .. " " .. biterAttributes.health)
|
||||
-- print(name .. " " .. biterAttributes.health)
|
||||
return {
|
||||
type = "unit",
|
||||
name = name .. "-rampant",
|
||||
@ -179,6 +271,7 @@ function biterFunctions.makeSpitter(name, biterAttributes, biterAttack, biterRes
|
||||
distance_per_frame = biterAttributes.distancePerFrame or 0.1,
|
||||
pollution_to_join_attack = biterAttributes.pollutionToAttack or 200,
|
||||
distraction_cooldown = biterAttributes.distractionCooldown or 300,
|
||||
alternative_attacking_frame_sequence = spitter_alternative_attacking_animation_sequence(),
|
||||
corpse = biterAttributes.corpse,
|
||||
dying_explosion = biterAttributes.explosion,
|
||||
dying_sound = make_spitter_dying_sounds(0.8),
|
||||
@ -193,7 +286,7 @@ function biterFunctions.makeUnitSpawner(name, biterAttributes, biterResistances,
|
||||
v.type = k
|
||||
resistances[#resistances+1] = v
|
||||
end
|
||||
-- print(name .. " " .. biterAttributes.health)
|
||||
-- print(name .. " " .. biterAttributes.health)
|
||||
local o = {
|
||||
type = "unit-spawner",
|
||||
name = name .. "-rampant",
|
||||
@ -243,6 +336,10 @@ function biterFunctions.makeUnitSpawner(name, biterAttributes, biterResistances,
|
||||
spawner_idle_animation(2, biterAttributes.tint, biterAttributes.scale),
|
||||
spawner_idle_animation(3, biterAttributes.tint, biterAttributes.scale)
|
||||
},
|
||||
integration =
|
||||
{
|
||||
sheet = spawner_integration(biterAttributes.scale)
|
||||
},
|
||||
result_units = unitSet,
|
||||
-- With zero evolution the spawn rate is 6 seconds, with max evolution it is 2.5 seconds
|
||||
spawning_cooldown = biterAttributes.spawningCooldown or {360, 150},
|
||||
@ -265,7 +362,7 @@ function biterFunctions.makeWorm(name, attributes, attack, wormResistances)
|
||||
v.type = k
|
||||
resistances[#resistances+1] = v
|
||||
end
|
||||
-- print(name .. " " .. attributes.health)
|
||||
-- print(name .. " " .. attributes.health)
|
||||
local o = {
|
||||
type = "turret",
|
||||
name = name .. "-rampant",
|
||||
@ -276,6 +373,7 @@ function biterFunctions.makeWorm(name, attributes, attack, wormResistances)
|
||||
subgroup="enemies",
|
||||
max_health = attributes.health,
|
||||
loot = attributes.loot,
|
||||
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}},
|
||||
@ -287,22 +385,39 @@ function biterFunctions.makeWorm(name, attributes, attack, wormResistances)
|
||||
inventory_size = attributes.inventorySize,
|
||||
dying_sound = make_worm_dying_sounds(0.9),
|
||||
folded_speed = 0.01,
|
||||
folded_animation = worm_folded_animation(attributes.scale, attributes.tint),
|
||||
preparing_speed = attributes.preparingSpeed or 0.025,
|
||||
folded_speed_secondary = 0.024,
|
||||
folded_animation = worm_folded_animation(attributes.scale, attributes.tint),
|
||||
preparing_speed = attributes.preparingSpeed or 0.024,
|
||||
preparing_animation = worm_preparing_animation(attributes.scale, attributes.tint, "forward"),
|
||||
prepared_speed = 0.015,
|
||||
prepared_animation = worm_prepared_animation(attributes.scale, attributes.tint),
|
||||
starting_attack_speed = 0.03,
|
||||
starting_attack_animation = worm_attack_animation(attributes.scale, attributes.tint, "forward"),
|
||||
preparing_sound = make_worm_standup_sounds(1),
|
||||
prepared_speed = 0.024,
|
||||
prepared_speed_secondary = 0.012,
|
||||
prepared_animation = worm_prepared_animation(attributes.scale, attributes.tint),
|
||||
prepared_sound = make_worm_breath(0.8),
|
||||
prepared_alternative_speed = 0.014,
|
||||
prepared_alternative_speed_secondary = 0.010,
|
||||
prepared_alternative_chance = 0.2,
|
||||
prepared_alternative_animation = worm_prepared_alternative_animation(attributes.scale, attributes.tint),
|
||||
prepared_alternative_sound = make_worm_roar_alternative(0.8),
|
||||
|
||||
starting_attack_speed = 0.034,
|
||||
starting_attack_animation = worm_start_attack_animation(attributes.scale, attributes.tint),
|
||||
starting_attack_sound = make_worm_roars(0.8),
|
||||
ending_attack_speed = 0.03,
|
||||
ending_attack_animation = worm_attack_animation(attributes.scale, attributes.tint, "backward"),
|
||||
ending_attack_speed = 0.016,
|
||||
ending_attack_animation = worm_end_attack_animation(attributes.scale, attributes.tint),
|
||||
folding_speed = attributes.foldingSpeed or 0.015,
|
||||
folding_animation = worm_preparing_animation(attributes.scale, attributes.tint, "backward"),
|
||||
folding_sound = make_worm_fold_sounds(1),
|
||||
prepare_range = attributes.prepareRange or 30,
|
||||
attack_parameters = attack,
|
||||
integration = worm_integration(attributes.scale),
|
||||
attack_parameters = attack,
|
||||
secondary_animation = true,
|
||||
random_animation_offset = true,
|
||||
attack_from_start_frame = true,
|
||||
|
||||
allow_turning_when_starting_attack = true,
|
||||
build_base_evolution_requirement = attributes.evolutionRequirement or 0.0,
|
||||
call_for_help_radius = 40
|
||||
call_for_help_radius = 60
|
||||
}
|
||||
|
||||
if attributes.autoplace then
|
||||
|
@ -16,7 +16,7 @@ function droneUtils.makeDrone(name, attributes, biterResistances, biterAttack, b
|
||||
name = n,
|
||||
icon = "__base__/graphics/icons/defender.png",
|
||||
icon_size = 32,
|
||||
flags = {"placeable-off-grid", "not-on-map", "not-repairable", "breaths-air", "hide-from-bonus-gui"},
|
||||
flags = {"placeable-off-grid", "not-on-map", "not-repairable", "breaths-air", "hidden"},
|
||||
subgroup="capsule",
|
||||
order="e-a-a",
|
||||
max_health = attributes.health or 60,
|
||||
|
@ -12,7 +12,7 @@ function thiefUtils.makeDrainCrystal(attributes)
|
||||
name = itemName,
|
||||
icon = "__Rampant__/graphics/icons/thief/crystal-drain.png",
|
||||
icon_size = 32,
|
||||
flags = {"goes-to-quickbar"},
|
||||
flags = {},
|
||||
subgroup = "energy",
|
||||
order = "e[accumulator]-a[accumulator]",
|
||||
place_result = name,
|
||||
|
@ -1,103 +1,154 @@
|
||||
|
||||
local unitSpawnerUtils = {}
|
||||
|
||||
function unitSpawnerUtils.spawner_integration(scale)
|
||||
return
|
||||
{
|
||||
filename = "__base__/graphics/entity/spawner/spawner-idle-integration.png",
|
||||
variation_count = 4,
|
||||
width = 258,
|
||||
height = 188,
|
||||
shift = util.by_pixel(2, -2),
|
||||
frame_count = 1,
|
||||
scale = scale,
|
||||
line_length = 1,
|
||||
hr_version =
|
||||
{
|
||||
filename = "__base__/graphics/entity/spawner/hr-spawner-idle-integration.png",
|
||||
variation_count = 4,
|
||||
width = 522,
|
||||
height = 380,
|
||||
shift = util.by_pixel(3, -3),
|
||||
frame_count = 1,
|
||||
line_length = 1,
|
||||
scale = scale * 0.5
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
function unitSpawnerUtils.spawner_idle_animation(variation, tint, scale)
|
||||
return
|
||||
{
|
||||
layers =
|
||||
{
|
||||
{
|
||||
filename = "__base__/graphics/entity/spawner/spawner-idle.png",
|
||||
line_length = 8,
|
||||
width = 243,
|
||||
height = 181,
|
||||
frame_count = 8,
|
||||
animation_speed = 0.18,
|
||||
direction_count = 1,
|
||||
scale = scale,
|
||||
run_mode = "forward-then-backward",
|
||||
shift = {0.140625 - 0.65, -0.234375},
|
||||
y = variation * 181
|
||||
},
|
||||
{
|
||||
filename = "__base__/graphics/entity/spawner/spawner-idle-mask.png",
|
||||
flags = { "mask" },
|
||||
width = 166,
|
||||
height = 148,
|
||||
frame_count = 8,
|
||||
scale = scale,
|
||||
animation_speed = 0.18,
|
||||
run_mode = "forward-then-backward",
|
||||
shift = {-0.34375 - 0.65, -0.375},
|
||||
line_length = 8,
|
||||
tint = tint,
|
||||
y = variation * 148
|
||||
}
|
||||
}
|
||||
}
|
||||
{
|
||||
layers =
|
||||
{
|
||||
{
|
||||
filename = "__base__/graphics/entity/spawner/spawner-idle.png",
|
||||
line_length = 4,
|
||||
width = 248,
|
||||
height = 180,
|
||||
frame_count = 8,
|
||||
animation_speed = 0.18,
|
||||
direction_count = 1,
|
||||
scale = scale,
|
||||
run_mode = "forward-then-backward",
|
||||
shift = util.by_pixel(2, -4),
|
||||
y = variation * 180 * 2,
|
||||
hr_version =
|
||||
{
|
||||
filename = "__base__/graphics/entity/spawner/hr-spawner-idle.png",
|
||||
line_length = 4,
|
||||
width = 490,
|
||||
height = 354,
|
||||
frame_count = 8,
|
||||
animation_speed = 0.18,
|
||||
direction_count = 1,
|
||||
scale = scale * 0.5,
|
||||
run_mode = "forward-then-backward",
|
||||
shift = util.by_pixel(3, -2),
|
||||
y = variation * 354 * 2,
|
||||
}
|
||||
},
|
||||
{
|
||||
filename = "__base__/graphics/entity/spawner/spawner-idle-mask.png",
|
||||
flags = { "mask" },
|
||||
width = 140,
|
||||
height = 118,
|
||||
frame_count = 8,
|
||||
animation_speed = 0.18,
|
||||
run_mode = "forward-then-backward",
|
||||
shift = util.by_pixel(-2, -14),
|
||||
line_length = 4,
|
||||
tint = tint,
|
||||
scale = scale,
|
||||
y = variation * 118 * 2,
|
||||
hr_version =
|
||||
{
|
||||
filename = "__base__/graphics/entity/spawner/hr-spawner-idle-mask.png",
|
||||
flags = { "mask" },
|
||||
width = 276,
|
||||
height = 234,
|
||||
frame_count = 8,
|
||||
animation_speed = 0.18,
|
||||
run_mode = "forward-then-backward",
|
||||
shift = util.by_pixel(-1, -14),
|
||||
line_length = 4,
|
||||
tint = tint,
|
||||
y = variation * 234 * 2,
|
||||
scale = scale * 0.5
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
function unitSpawnerUtils.spawner_die_animation(variation, tint, scale)
|
||||
return
|
||||
{
|
||||
layers =
|
||||
{
|
||||
{
|
||||
width = 255,
|
||||
height = 184,
|
||||
frame_count = 20,
|
||||
direction_count = 1,
|
||||
scale = scale,
|
||||
shift = {-0.015625 - 0.65, -0.28125},
|
||||
stripes =
|
||||
{
|
||||
{
|
||||
filename = "__base__/graphics/entity/spawner/spawner-die-01.png",
|
||||
width_in_frames = 7,
|
||||
height_in_frames = 4,
|
||||
y = variation * 184
|
||||
},
|
||||
{
|
||||
filename = "__base__/graphics/entity/spawner/spawner-die-02.png",
|
||||
width_in_frames = 7,
|
||||
height_in_frames = 4,
|
||||
y = variation * 184
|
||||
},
|
||||
{
|
||||
filename = "__base__/graphics/entity/spawner/spawner-die-03.png",
|
||||
width_in_frames = 6,
|
||||
height_in_frames = 4,
|
||||
y = variation * 184
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
flags = { "mask" },
|
||||
width = 166,
|
||||
height = 148,
|
||||
frame_count = 20,
|
||||
direction_count = 1,
|
||||
scale = scale,
|
||||
shift = {-0.34375 - 0.65, -0.375},
|
||||
tint = tint,
|
||||
stripes =
|
||||
{
|
||||
{
|
||||
filename = "__base__/graphics/entity/spawner/spawner-die-mask-01.png",
|
||||
width_in_frames = 10,
|
||||
height_in_frames = 4,
|
||||
y = variation * 148
|
||||
},
|
||||
{
|
||||
filename = "__base__/graphics/entity/spawner/spawner-die-mask-02.png",
|
||||
width_in_frames = 10,
|
||||
height_in_frames = 4,
|
||||
y = variation * 148
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
layers =
|
||||
{
|
||||
{
|
||||
filename = "__base__/graphics/entity/spawner/spawner-die.png",
|
||||
line_length = 8,
|
||||
width = 248,
|
||||
height = 178,
|
||||
frame_count = 8,
|
||||
direction_count = 1,
|
||||
shift = util.by_pixel(2, -2),
|
||||
y = variation * 178,
|
||||
scale = scale,
|
||||
hr_version =
|
||||
{
|
||||
filename = "__base__/graphics/entity/spawner/hr-spawner-die.png",
|
||||
line_length = 8,
|
||||
width = 490,
|
||||
height = 354,
|
||||
frame_count = 8,
|
||||
direction_count = 1,
|
||||
shift = util.by_pixel(3, -2),
|
||||
y = variation * 354,
|
||||
scale = scale * 0.5
|
||||
}
|
||||
},
|
||||
{
|
||||
filename = "__base__/graphics/entity/spawner/spawner-die-mask.png",
|
||||
flags = { "mask" },
|
||||
width = 140,
|
||||
height = 118,
|
||||
frame_count = 8,
|
||||
direction_count = 1,
|
||||
shift = util.by_pixel(-2, -14),
|
||||
|
||||
scale = scale,
|
||||
line_length = 8,
|
||||
tint = tint,
|
||||
y = variation * 118,
|
||||
he_version =
|
||||
{
|
||||
filename = "__base__/graphics/entity/spawner/hr-spawner-die-mask.png",
|
||||
flags = { "mask" },
|
||||
width = 276,
|
||||
height = 234,
|
||||
frame_count = 8,
|
||||
direction_count = 1,
|
||||
shift = util.by_pixel(-1, -14),
|
||||
line_length = 8,
|
||||
tint = tint,
|
||||
y = variation * 234,
|
||||
scale = scale * 0.5
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
return unitSpawnerUtils
|
||||
|
20
prototypes/utils/UnitUtils.lua
Executable file
20
prototypes/utils/UnitUtils.lua
Executable file
@ -0,0 +1,20 @@
|
||||
local unitUtils = {}
|
||||
|
||||
function unitUtils.spitter_alternative_attacking_animation_sequence()
|
||||
return {
|
||||
warmup_frame_sequence = { 1, 2, 3, 4, 5, 6 },
|
||||
warmup2_frame_sequence = { 7, 7, 7, 7, 7, 7 },
|
||||
attacking_frame_sequence = { 7, 8, 9, 10, 11, 12, 13, 14, 13, 14, 13, 12, 11, 10, 9, 8 },
|
||||
cooldown_frame_sequence = { 7 },
|
||||
prepared_frame_sequence = { 7 },
|
||||
back_to_walk_frame_sequence = { 6, 5, 4, 3, 2, 1 },
|
||||
|
||||
warmup_animation_speed = 1 / 6 * 0.4,
|
||||
attacking_animation_speed = 1 / 16 * 0.4,
|
||||
cooldown_animation_speed = 1 / 1 * 0.4 * 0.125;
|
||||
prepared_animation_speed = 1 / 1 * 0.5 * 0.4,
|
||||
back_to_walk_animation_speed = 1 / 6 * 0.4,
|
||||
}
|
||||
end
|
||||
|
||||
return unitUtils
|
@ -49,6 +49,19 @@ function vanillaUpdates.useDumbProjectiles()
|
||||
},
|
||||
"acid-ball-4-" .. attackType .. "-rampant")
|
||||
|
||||
turrets["behemoth-worm-turret"]["attack_parameters"] = biterUtils.createRangedAttack(
|
||||
{
|
||||
cooldown = 60,
|
||||
range = 26,
|
||||
min_range = 3,
|
||||
type = "projectile",
|
||||
turn_range = 1,
|
||||
fire_penalty = 0,
|
||||
scale = 1.2
|
||||
},
|
||||
"acid-ball-5-" .. attackType .. "-rampant")
|
||||
|
||||
|
||||
local units = data.raw["unit"];
|
||||
|
||||
local unit = units["small-spitter"]
|
||||
|
@ -543,7 +543,7 @@ data:extend({
|
||||
name = "rampant-attack-warning",
|
||||
description = "rampant-attack-warning",
|
||||
setting_type = "runtime-per-user",
|
||||
default_value = true,
|
||||
default_value = false,
|
||||
order = "o[modifer]-a[message]",
|
||||
per_user = true
|
||||
},
|
||||
|
BIN
thumbnail.png
Executable file
BIN
thumbnail.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 16 KiB |
Loading…
x
Reference in New Issue
Block a user