mirror of
https://github.com/veden/Rampant.git
synced 2025-01-05 22:53:24 +02:00
185 lines
6.1 KiB
Lua
185 lines
6.1 KiB
Lua
-- Copyright (C) 2022 veden
|
|
|
|
-- This program is free software: you can redistribute it and/or modify
|
|
-- it under the terms of the GNU General Public License as published by
|
|
-- the Free Software Foundation, either version 3 of the License, or
|
|
-- (at your option) any later version.
|
|
|
|
-- This program is distributed in the hope that it will be useful,
|
|
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
-- GNU General Public License for more details.
|
|
|
|
-- You should have received a copy of the GNU General Public License
|
|
-- along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
|
|
|
|
local biterUtils = require("prototypes/utils/BiterUtils")
|
|
local constants = require("libs/Constants")
|
|
local smokeUtils = require("prototypes/utils/SmokeUtils")
|
|
|
|
data:extend({
|
|
biterUtils.makeBiter({
|
|
name = "chunk-scanner-squad",
|
|
scale=15,
|
|
movement=1,
|
|
effectiveLevel=1,
|
|
resistances = {},
|
|
hitSprayName = "blood-fountain-hit-spray",
|
|
attack = biterUtils.createMeleeAttack({
|
|
radius=1,
|
|
damage=1,
|
|
scale=15,
|
|
effectiveLevel=1
|
|
})
|
|
}),
|
|
|
|
biterUtils.makeBiter({
|
|
name = "chunk-scanner-squad-movement",
|
|
scale=2.5,
|
|
movement=1,
|
|
effectiveLevel=1,
|
|
resistances = {},
|
|
hitSprayName = "blood-fountain-hit-spray",
|
|
attack = biterUtils.createMeleeAttack({
|
|
radius=1,
|
|
damage=1,
|
|
scale=15,
|
|
effectiveLevel=1
|
|
})
|
|
})
|
|
})
|
|
|
|
local function generateCollisionBox(scale, entityType)
|
|
if entityType == "turret" then
|
|
return {
|
|
{-1.1 * scale, -1.0 * scale},
|
|
{1.1 * scale, 1.0 * scale}
|
|
}
|
|
elseif (entityType == "biter-spawner") or (entityType == "spitter-spawner") then
|
|
return {
|
|
{-3 * scale, -2 * scale},
|
|
{2 * scale, 2 * scale}
|
|
}
|
|
elseif entityType == "hive" then
|
|
return {
|
|
{-3 * scale, -2 * scale},
|
|
{2 * scale, 2 * scale}
|
|
}
|
|
end
|
|
end
|
|
|
|
local scales = {
|
|
-- ["trap"] = {},
|
|
-- ["utility"] = {},
|
|
["spitter-spawner"] = {
|
|
[1] = 0.70, [2] = 0.83, [3] = 0.96, [4] = 1.09, [5] = 1.22,
|
|
[6] = 1.35, [7] = 1.48, [8] = 1.61, [9] = 1.74, [10] = 1.87
|
|
},
|
|
["biter-spawner"] = {
|
|
[1] = 0.83, [2] = 0.96, [3] = 1.09, [4] = 1.22, [5] = 1.35,
|
|
[6] = 1.48, [7] = 1.61, [8] = 1.74, [9] = 1.87, [10] = 2.0
|
|
},
|
|
["hive"] = {
|
|
[1] = 1.35, [2] = 1.48, [3] = 1.61, [4] = 1.74, [5] = 1.87,
|
|
[6] = 2.0, [7] = 2.13, [8] = 2.26, [9] = 2.39, [10] = 2.52
|
|
},
|
|
["turret"] = {
|
|
[1] = 0.635, [2] = 0.765, [3] = 0.895, [4] = 1.025, [5] = 1.155,
|
|
[6] = 1.285, [7] = 1.415, [8] = 1.545, [9] = 1.675, [10] = 1.805
|
|
}
|
|
}
|
|
|
|
local subTypes = constants.HIVE_BUILDINGS_TYPES
|
|
|
|
|
|
for si=1,#subTypes do
|
|
local st = subTypes[si]
|
|
if scales[st] then
|
|
for t=1,10 do
|
|
-- local scale = scales[st][t]
|
|
local scale = scales["biter-spawner"][t]
|
|
|
|
data:extend(
|
|
{
|
|
{
|
|
type = "land-mine",
|
|
name = "entity-proxy-" .. st .. "-t" .. t .. "-rampant",
|
|
localised_name = biterUtils.getLocalisedName({
|
|
faction="entity-proxy",
|
|
unit_name=st,
|
|
tier=t,
|
|
isRampant=true
|
|
}),
|
|
icon = "__base__/graphics/icons/steel-chest.png",
|
|
icon_size = 32,
|
|
flags = {},
|
|
build_base_evolution_requirement = 0.08 * (t-1),
|
|
order = "s-e-w-f",
|
|
collision_mask = {"player-layer", "object-layer", "water-tile", "train-layer"},
|
|
minable = nil,
|
|
max_health = 100,
|
|
corpse = nil,
|
|
timeout = 1,
|
|
trigger_radius = 0,
|
|
-- collision_box = generateCollisionBox(scale, st),
|
|
collision_box = generateCollisionBox(scale, "biter-spawner"),
|
|
selection_box = nil,
|
|
|
|
picture_safe =
|
|
{
|
|
filename = "__core__/graphics/empty.png",
|
|
priority = "extra-high",
|
|
width = 1,
|
|
height = 1
|
|
},
|
|
picture_set =
|
|
{
|
|
filename = "__core__/graphics/empty.png",
|
|
priority = "extra-high",
|
|
width = 1,
|
|
height = 1
|
|
}
|
|
}
|
|
}
|
|
)
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
smokeUtils.makeNewCloud(
|
|
{
|
|
name = "build-clear",
|
|
wind = false,
|
|
scale = 9,
|
|
duration = 540,
|
|
cooldown = 10,
|
|
tint = { r=0.7, g=0.2, b=0.7 }
|
|
},
|
|
{
|
|
type = "area",
|
|
radius = 17,
|
|
force = "not-same",
|
|
action_delivery =
|
|
{
|
|
type = "instant",
|
|
target_effects =
|
|
{
|
|
{
|
|
type = "damage",
|
|
damage = { amount = 1.1, type = "poison"}
|
|
},
|
|
{
|
|
type = "damage",
|
|
damage = { amount = 1.1, type = "acid"}
|
|
},
|
|
{
|
|
type = "damage",
|
|
damage = { amount = 1.1, type = "fire"}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
)
|