772 lines
18 KiB
Lua
772 lines
18 KiB
Lua
local util = require("tf_util/tf_util")
|
|
|
|
data:extend({
|
|
{
|
|
type = "item",
|
|
name = "mirv-rocket",
|
|
icon = "__MIRV__/mirv_rocket.png",
|
|
icon_size = 32,
|
|
flags = {},
|
|
subgroup = "defensive-structure",
|
|
order = "z[MIRV]",
|
|
stack_size = 1,
|
|
},
|
|
{
|
|
type = "recipe",
|
|
name = "mirv-rocket",
|
|
energy_required = 10,
|
|
enabled = false,
|
|
category = "crafting",
|
|
ingredients =
|
|
{
|
|
{"atomic-bomb", 20},
|
|
{"rocket-fuel", 50},
|
|
{"rocket-control-unit", 10}
|
|
},
|
|
result= "mirv-rocket",
|
|
order = "z[MIRV]"
|
|
},
|
|
{
|
|
type = "arrow",
|
|
name = "mirv-entity",
|
|
render_layer = "object",
|
|
icon = "__MIRV__/mirv_item.png",
|
|
icon_size = 32,
|
|
flags = {"placeable-neutral", "player-creation", "placeable-off-grid"},
|
|
selectable_in_game = false,
|
|
order = "z[MIRV]",
|
|
max_health = 1,
|
|
collision_box = {{0, 0}, {0, 0}},
|
|
selection_box = {{-0.5, -0.5}, {0.5, 0.5}},
|
|
drawing_box = {{-32, -32},{32,32}},
|
|
circle_picture =
|
|
{
|
|
filename = "__MIRV__/mirv_template.png",
|
|
priority = "extra-high",
|
|
width = 768,
|
|
height = 548,
|
|
scale = 3,
|
|
shift = util.by_pixel(0,-32)
|
|
},
|
|
arrow_picture =
|
|
{
|
|
filename = "__core__/graphics/empty.png",
|
|
priority = "extra-high",
|
|
width = 1,
|
|
height = 1,
|
|
}
|
|
},
|
|
{
|
|
type = "trivial-smoke",
|
|
name = "mirv-smoke",
|
|
flags = {"not-on-map"},
|
|
show_when_smoke_off = true,
|
|
duration = 440,
|
|
fade_in_duration = 0,
|
|
fade_away_duration = 0,
|
|
spread_duration = 380,
|
|
start_scale = 3,
|
|
end_scale = 1,
|
|
cyclic = true,
|
|
affected_by_wind = false,
|
|
movement_slow_down_factor = 0,
|
|
color = {r = 1, g = 1, b = 1},
|
|
render_layer = "lower-object",
|
|
animation =
|
|
{
|
|
width = 624,
|
|
height = 440,
|
|
line_length = 3,
|
|
frame_count = 12,
|
|
axially_symmetrical = false,
|
|
direction_count = 1,
|
|
priority = "high",
|
|
animation_speed = 0.25,
|
|
filename = "__MIRV__/mirv_anim.png"
|
|
}
|
|
},
|
|
{
|
|
type = "trivial-smoke",
|
|
name = "mirv-smoke-2",
|
|
flags = {"not-on-map"},
|
|
show_when_smoke_off = true,
|
|
duration = 440,
|
|
fade_in_duration = 0,
|
|
fade_away_duration = 0,
|
|
spread_duration = 380,
|
|
start_scale = 3,
|
|
end_scale = 1,
|
|
cyclic = true,
|
|
affected_by_wind = false,
|
|
movement_slow_down_factor = 0,
|
|
color = {r = 1, g = 1, b = 1},
|
|
render_layer = "lower-object",
|
|
animation =
|
|
{
|
|
width = 800,
|
|
height = 565,
|
|
line_length = 1,
|
|
frame_count = 1,
|
|
axially_symmetrical = false,
|
|
direction_count = 1,
|
|
priority = "high",
|
|
animation_speed = 0.25,
|
|
filename = "__MIRV__/mirv_static.png"
|
|
}
|
|
},
|
|
{
|
|
type = "simple-entity-with-owner",
|
|
name = "mirv-target",
|
|
render_layer = "object",
|
|
icon = "__MIRV__/mirv-target.png",
|
|
icon_size = 32,
|
|
flags = {},
|
|
order = "z[MIRV]",
|
|
max_health = 1,
|
|
selectable_in_game = false,
|
|
collision_box = {{0, 0}, {0, 0}},
|
|
selection_box = {{0, 0}, {0, 0}},
|
|
picture =
|
|
{
|
|
filename = "__core__/graphics/empty.png",
|
|
priority = "extra-high",
|
|
width = 1,
|
|
height = 1
|
|
},
|
|
build_sound =
|
|
{
|
|
filename = "__MIRV__/launch-sound.ogg",
|
|
volume = 1
|
|
}
|
|
},
|
|
{
|
|
type = "technology",
|
|
name = "mirv-technology",
|
|
icon = "__MIRV__/mirv-technology.png",
|
|
icon_size = 128,
|
|
effects =
|
|
{
|
|
{
|
|
type = "unlock-recipe",
|
|
recipe = "mirv-rocket"
|
|
},
|
|
{
|
|
type = "unlock-recipe",
|
|
recipe = "mirv-targeting-remote"
|
|
},
|
|
},
|
|
prerequisites = {"rocket-silo", "atomic-bomb"},
|
|
unit =
|
|
{
|
|
count = 10000,
|
|
ingredients =
|
|
{
|
|
{"automation-science-pack", 1},
|
|
{"logistic-science-pack", 1},
|
|
{"chemical-science-pack", 1},
|
|
{"military-science-pack", 1},
|
|
{"production-science-pack", 1},
|
|
{"utility-science-pack", 1}
|
|
},
|
|
time = 45
|
|
},
|
|
order = "e-a-c"
|
|
}
|
|
})
|
|
|
|
local turret =
|
|
{
|
|
type = "artillery-turret",
|
|
name = "mirv-launcher",
|
|
localised_name = {"item-name.mirv-rocket"},
|
|
icon = "__MIRV__/mirv_rocket.png",
|
|
icon_size = 32,
|
|
flags = {"placeable-neutral", "placeable-player", "player-creation"},
|
|
|
|
--collision_box = {{-1.45, -1.45}, {1.45, 1.45}},
|
|
--selection_box = {{-1.5, -1.5}, {1.5, 1.5}},
|
|
collision_mask = {},
|
|
|
|
inventory_size = 1,
|
|
ammo_stack_limit = 5,
|
|
automated_ammo_count = 1,
|
|
gun = "mirv-launcher-gun",
|
|
turret_rotation_speed = 1,
|
|
manual_range_modifier = 1000000,
|
|
disable_automatic_firing = not settings.startup["mirv-auto-launch"].value,
|
|
|
|
base_picture = util.empty_sprite(),
|
|
cannon_barrel_pictures = util.empty_sprite(),
|
|
cannon_base_pictures = util.empty_sprite(),
|
|
order = "lol",
|
|
alert_when_attacking = false
|
|
|
|
}
|
|
|
|
local gun =
|
|
{
|
|
type = "gun",
|
|
name = "mirv-launcher-gun",
|
|
localised_name = {"item-name.mirv-rocket"},
|
|
icon = "__base__/graphics/icons/tank-cannon.png",
|
|
icon_size = 64, icon_mipmaps = 4,
|
|
flags = {"hidden"},
|
|
subgroup = "gun",
|
|
order = "z[artillery]-a[cannon]",
|
|
attack_parameters =
|
|
{
|
|
type = "projectile",
|
|
ammo_category = util.ammo_category("mirv-launcher"),
|
|
cooldown = 15 * 60,
|
|
movement_slow_down_factor = 0,
|
|
range = 1000
|
|
},
|
|
stack_size = 1
|
|
}
|
|
|
|
local ammo =
|
|
{
|
|
type = "ammo",
|
|
name = "mirv-ammo",
|
|
icon = "__base__/graphics/icons/atomic-bomb.png",
|
|
icon_size = 1, icon_mipmaps = 1,
|
|
ammo_type =
|
|
{
|
|
target_type = "position",
|
|
category = util.ammo_category("mirv-launcher"),
|
|
action =
|
|
{
|
|
type = "direct",
|
|
action_delivery =
|
|
{
|
|
type = "instant",
|
|
target_effects =
|
|
{
|
|
|
|
{
|
|
type = "script",
|
|
effect_id = "mirv-launch"
|
|
},
|
|
{
|
|
type = "nested-result",
|
|
action =
|
|
{
|
|
type = "area",
|
|
radius = 120,
|
|
target_entities = false,
|
|
action_delivery =
|
|
{
|
|
type = "instant",
|
|
target_effects =
|
|
{
|
|
{
|
|
type = "damage",
|
|
damage = {amount = 0 , type = "physical"}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
subgroup = "ammo",
|
|
order = "d[rocket-launcher]-c[atomic-bomb]",
|
|
stack_size = 10
|
|
}
|
|
|
|
local nuke_target_effects =
|
|
{
|
|
{
|
|
type = "nested-result",
|
|
action =
|
|
{
|
|
type = "area",
|
|
target_entities = false,
|
|
trigger_from_target = true,
|
|
repeat_count = 50,
|
|
radius = 10,
|
|
action_delivery =
|
|
{
|
|
type = "instant",
|
|
target_effects =
|
|
{
|
|
{
|
|
type = "create-entity",
|
|
entity_name = "nuke-explosion"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if settings.startup["mirv-pollution-on-detonation"].value then
|
|
table.insert(nuke_target_effects,
|
|
{
|
|
type = "script",
|
|
effect_id = "mirv-pollute"
|
|
})
|
|
end
|
|
|
|
local do_whacka_do = function()
|
|
local watra = 1 + ((math.random() - 0.5))
|
|
return
|
|
{
|
|
filename = "__base__/graphics/entity/bigass-explosion/hr-bigass-explosion-36f.png",
|
|
flags = { "compressed" },
|
|
animation_speed = 0.5 * watra,
|
|
width = 324,
|
|
height = 416,
|
|
frame_count = 36,
|
|
shift = util.by_pixel(0, -48),
|
|
scale = 1 / watra,
|
|
stripes =
|
|
{
|
|
{
|
|
filename = "__base__/graphics/entity/bigass-explosion/hr-bigass-explosion-36f-1.png",
|
|
width_in_frames = 6,
|
|
height_in_frames = 3
|
|
},
|
|
{
|
|
filename = "__base__/graphics/entity/bigass-explosion/hr-bigass-explosion-36f-2.png",
|
|
width_in_frames = 6,
|
|
height_in_frames = 3
|
|
}
|
|
}
|
|
}
|
|
end
|
|
|
|
local nuke_explosion =
|
|
{
|
|
type = "explosion",
|
|
name = "nuke-explosion",
|
|
flags = {"not-on-map"},
|
|
animations =
|
|
{
|
|
do_whacka_do(), do_whacka_do(), do_whacka_do(),
|
|
do_whacka_do(), do_whacka_do(), do_whacka_do(),
|
|
do_whacka_do(), do_whacka_do(), do_whacka_do(),
|
|
do_whacka_do(), do_whacka_do(), do_whacka_do(),
|
|
do_whacka_do(), do_whacka_do(), do_whacka_do(),
|
|
do_whacka_do(), do_whacka_do(), do_whacka_do(),
|
|
do_whacka_do(), do_whacka_do(), do_whacka_do(),
|
|
do_whacka_do(), do_whacka_do(), do_whacka_do(),
|
|
do_whacka_do(), do_whacka_do(), do_whacka_do(),
|
|
do_whacka_do(), do_whacka_do(), do_whacka_do(),
|
|
do_whacka_do(), do_whacka_do(), do_whacka_do(),
|
|
do_whacka_do(), do_whacka_do(), do_whacka_do(),
|
|
do_whacka_do(), do_whacka_do(), do_whacka_do(),
|
|
do_whacka_do(), do_whacka_do(), do_whacka_do(),
|
|
do_whacka_do(), do_whacka_do(), do_whacka_do(),
|
|
do_whacka_do(), do_whacka_do(), do_whacka_do(),
|
|
do_whacka_do(), do_whacka_do(), do_whacka_do(),
|
|
do_whacka_do(), do_whacka_do(), do_whacka_do(),
|
|
},
|
|
light = {intensity = 1, size = 50, color = {r=1.0, g=1.0, b=1.0}},
|
|
sound =
|
|
{
|
|
aggregation =
|
|
{
|
|
max_count = 2,
|
|
remove = true
|
|
},
|
|
variations =
|
|
{
|
|
{
|
|
filename = "__base__/sound/fight/large-explosion-1.ogg",
|
|
volume = 1.0
|
|
},
|
|
{
|
|
filename = "__base__/sound/fight/large-explosion-2.ogg",
|
|
volume = 1.0
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
local fire_util = require("tf_util/tf_fire_util")
|
|
local fiery_particle =
|
|
{
|
|
type = "optimized-particle",
|
|
name = "fiery-particle",
|
|
life_time = 100,
|
|
movement_modifier = 0,
|
|
pictures = fire_util.create_fire_pictures{scale = 2}
|
|
}
|
|
|
|
|
|
data:extend{fiery_particle}
|
|
|
|
local make_scorchmark = function(name)
|
|
local scale = math.random(50, 250) / 100
|
|
data:extend
|
|
{
|
|
{
|
|
type = "corpse",
|
|
name = name,
|
|
icon = "__base__/graphics/icons/small-scorchmark.png",
|
|
icon_size = 64, icon_mipmaps = 4,
|
|
flags = {"placeable-neutral", "not-on-map", "placeable-off-grid"},
|
|
collision_box = {{-1.5, -1.5}, {1.5, 1.5}},
|
|
collision_mask = {"doodad-layer", "not-colliding-with-itself"},
|
|
selection_box = {{-1, -1}, {1, 1}},
|
|
selectable_in_game = false,
|
|
time_before_removed = 60 * 60 * (scale + 2),
|
|
final_render_layer = "ground-patch-higher2",
|
|
subgroup = "remnants",
|
|
order="d[remnants]-b[scorchmark]-a[small]",
|
|
remove_on_entity_placement = false,
|
|
remove_on_tile_placement = true,
|
|
ground_patch =
|
|
{
|
|
sheet =
|
|
{
|
|
filename = "__base__/graphics/entity/scorchmark/small-scorchmark.png",
|
|
width = 128,
|
|
height = 92,
|
|
line_length = 4,
|
|
shift = util.by_pixel(0, 2),
|
|
variation_count = 4,
|
|
scale = scale,
|
|
hr_version =
|
|
{
|
|
filename = "__base__/graphics/entity/scorchmark/hr-small-scorchmark.png",
|
|
width = 256,
|
|
height = 182,
|
|
line_length = 4,
|
|
shift = util.by_pixel(0, 2),
|
|
variation_count = 4,
|
|
scale = scale / 2,
|
|
}
|
|
}
|
|
},
|
|
ground_patch_higher =
|
|
{
|
|
sheet =
|
|
{
|
|
filename = "__base__/graphics/entity/scorchmark/small-scorchmark-top.png",
|
|
width = 34,
|
|
height = 28,
|
|
line_length = 4,
|
|
variation_count = 4,
|
|
shift = util.by_pixel(0, -2),
|
|
scale = scale,
|
|
hr_version =
|
|
{
|
|
filename = "__base__/graphics/entity/scorchmark/hr-small-scorchmark-top.png",
|
|
width = 68,
|
|
height = 54,
|
|
line_length = 4,
|
|
shift = util.by_pixel(0, -2),
|
|
variation_count = 4,
|
|
scale = 0.5 * scale,
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return name
|
|
end
|
|
|
|
local pictures = fire_util.create_fire_pictures({scale = 3, shift = {0, 3}})
|
|
|
|
local make_fire = function(name)
|
|
local fire = util.copy(data.raw.fire["fire-flame"])
|
|
fire.name = name
|
|
fire.initial_lifetime = math.random(5, 20) * 60
|
|
fire.collision_box = {{-1.5, -1.5}, {1.5, 1.5}}
|
|
fire.collision_mask = {"doodad-layer", "not-colliding-with-itself"}
|
|
data:extend{fire}
|
|
return name
|
|
end
|
|
|
|
local total = #pictures
|
|
local proj_count = math.ceil(2000 / total)
|
|
for k, picture in pairs (pictures) do
|
|
|
|
local effect =
|
|
{
|
|
type = "nested-result",
|
|
action =
|
|
{
|
|
{
|
|
|
|
type = "area",
|
|
target_entities = false,
|
|
trigger_from_target = true,
|
|
repeat_count = proj_count,
|
|
radius = 100,
|
|
action_delivery =
|
|
{
|
|
type = "artillery",
|
|
projectile = "mirv-nuke-projectile"..k,
|
|
starting_speed = 0.75,
|
|
starting_speed_deviation = 0.2,
|
|
direction_deviation = 0,
|
|
range_deviation = 0.5
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
table.insert(nuke_target_effects, effect)
|
|
|
|
local nested_projectile =
|
|
{
|
|
type = "artillery-projectile",
|
|
name = "mirv-nuke-projectile"..k,
|
|
flags = {"not-on-map"},
|
|
map_color = {1, 1, 1},
|
|
reveal_map = true,
|
|
picture = picture,
|
|
chart_picture =
|
|
{
|
|
filename = "__base__/graphics/entity/artillery-projectile/artillery-shoot-map-visualization.png",
|
|
flags = { "icon" },
|
|
frame_count = 1,
|
|
width = 64,
|
|
height = 64,
|
|
priority = "high",
|
|
scale = math.random(20, 30) / 100
|
|
},
|
|
action =
|
|
{
|
|
type = "direct",
|
|
action_delivery =
|
|
{
|
|
type = "instant",
|
|
target_effects =
|
|
{
|
|
{
|
|
type = "nested-result",
|
|
action =
|
|
{
|
|
type = "area",
|
|
radius = 5.0,
|
|
action_delivery =
|
|
{
|
|
type = "instant",
|
|
target_effects =
|
|
{
|
|
{
|
|
type = "create-fire",
|
|
entity_name = make_fire("nuke-fire"..k),
|
|
initial_ground_flame_count = math.random(10, 20),
|
|
check_buildability = true,
|
|
probability = 0.1
|
|
},
|
|
{
|
|
type = "damage",
|
|
damage = {amount = 2000 , type = "physical"}
|
|
},
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
|
|
type = "create-particle",
|
|
repeat_count = 3,
|
|
particle_name = "fiery-particle",
|
|
initial_height = 0.1,
|
|
--speed_from_center = 0.08,
|
|
--speed_from_center_deviation = 0.1,
|
|
offset_deviation = {{-3, -3}, {3,3}}
|
|
--initial_vertical_speed = 0.18,
|
|
--initial_vertical_speed_deviation = 0.15,
|
|
|
|
},
|
|
{
|
|
type = "show-explosion-on-chart",
|
|
scale = math.random(6, 12)/32
|
|
},
|
|
{
|
|
type = "create-entity",
|
|
entity_name = "nuke-explosion"
|
|
},
|
|
{
|
|
type = "create-entity",
|
|
entity_name = make_scorchmark("nuke-scorchmark"..k.."1"),
|
|
check_buildability = true,
|
|
offset_deviation = {{-4, -4},{4, 4}}
|
|
},
|
|
{
|
|
type = "create-entity",
|
|
entity_name = make_scorchmark("nuke-scorchmark"..k.."2"),
|
|
check_buildability = true,
|
|
offset_deviation = {{-4, -4},{4, 4}}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
data:extend{nested_projectile}
|
|
end
|
|
|
|
local projectile =
|
|
{
|
|
type = "artillery-projectile",
|
|
name = "mirv-projectile",
|
|
flags = {"not-on-map"},
|
|
acceleration = 0.01,
|
|
reveal_map = false,
|
|
map_color = {r = 0, g = 1, b = 0},
|
|
action =
|
|
{
|
|
type = "direct",
|
|
action_delivery =
|
|
{
|
|
type = "instant",
|
|
target_effects = nuke_target_effects
|
|
}
|
|
},
|
|
chart_picture =
|
|
{
|
|
layers =
|
|
{
|
|
|
|
{
|
|
filename = "__base__/graphics/entity/artillery-projectile/artillery-shoot-map-visualization.png",
|
|
flags = { "icon" },
|
|
frame_count = 1,
|
|
width = 64,
|
|
height = 64,
|
|
priority = "high",
|
|
scale = 1,
|
|
shift = {0.05, -0.5}
|
|
},
|
|
{
|
|
filename = "__base__/graphics/entity/artillery-projectile/artillery-shoot-map-visualization.png",
|
|
flags = { "icon" },
|
|
frame_count = 1,
|
|
width = 64,
|
|
height = 64,
|
|
priority = "high",
|
|
scale = 0.5,
|
|
shift = {0.05, -0.8}
|
|
},
|
|
{
|
|
filename = "__MIRV__/mirv_projectile.png",
|
|
width = 64,
|
|
height = 64,
|
|
scale = 0.5,
|
|
frame_count = 1
|
|
}
|
|
}
|
|
},
|
|
light = {intensity = 0.8, size = 15},
|
|
picture =
|
|
{
|
|
filename = "__base__/graphics/entity/rocket-silo/02-rocket.png",
|
|
width = 154,
|
|
height = 300,
|
|
scale = 0.5,
|
|
shift = util.by_pixel(-4, -28),
|
|
hr_version =
|
|
{
|
|
filename = "__base__/graphics/entity/rocket-silo/hr-02-rocket.png",
|
|
width = 310,
|
|
height = 596,
|
|
shift = util.by_pixel(-5, -27),
|
|
scale = 0.25
|
|
}
|
|
},
|
|
shadow =
|
|
{
|
|
filename = "__base__/graphics/entity/rocket/rocket-shadow.png",
|
|
frame_count = 1,
|
|
width = 1,
|
|
height = 1,
|
|
priority = "high",
|
|
shift = {0, 0}
|
|
}
|
|
}
|
|
|
|
local remote =
|
|
{
|
|
type = "capsule",
|
|
name = "mirv-targeting-remote",
|
|
icon = "__MIRV__/mirv-targeting-remote.png",
|
|
icon_size = 64,
|
|
capsule_action =
|
|
{
|
|
type = "artillery-remote",
|
|
flare = "mirv-flare"
|
|
},
|
|
subgroup = "capsule",
|
|
order = "zz",
|
|
stack_size = 1
|
|
}
|
|
|
|
local flare =
|
|
{
|
|
type = "artillery-flare",
|
|
name = "mirv-flare",
|
|
icon = "__base__/graphics/icons/artillery-targeting-remote.png",
|
|
icon_size = 64, icon_mipmaps = 4,
|
|
flags = {"placeable-off-grid", "not-on-map"},
|
|
map_color = {r=1, g=0.5, b=0},
|
|
life_time = 60 * 60,
|
|
initial_height = 0,
|
|
initial_vertical_speed = 0,
|
|
initial_frame_speed = 1,
|
|
shots_per_flare = 1,
|
|
early_death_ticks = 3 * 60,
|
|
shot_category = util.ammo_category("mirv-launcher"),
|
|
pictures =
|
|
{
|
|
{
|
|
filename = "__core__/graphics/shoot-cursor-red.png",
|
|
priority = "low",
|
|
width = 258,
|
|
height = 183,
|
|
frame_count = 1,
|
|
scale = 1,
|
|
flags = {"icon"}
|
|
},
|
|
--{
|
|
-- filename = "__base__/graphics/entity/sparks/sparks-02.png",
|
|
-- width = 36,
|
|
-- height = 32,
|
|
-- frame_count = 19,
|
|
-- line_length = 19,
|
|
-- shift = {0.03125, 0.125},
|
|
-- tint = { r = 1.0, g = 0.9, b = 0.0, a = 1.0 },
|
|
-- animation_speed = 0.3,
|
|
--}
|
|
}
|
|
}
|
|
|
|
local remote_recipe =
|
|
{
|
|
type = "recipe",
|
|
name = "mirv-targeting-remote",
|
|
enabled = false,
|
|
ingredients =
|
|
{
|
|
{"processing-unit", 1},
|
|
{"radar", 1}
|
|
},
|
|
result = "mirv-targeting-remote"
|
|
}
|
|
|
|
data:extend
|
|
{
|
|
turret,
|
|
gun,
|
|
ammo,
|
|
projectile,
|
|
remote,
|
|
flare,
|
|
remote_recipe,
|
|
nuke_explosion
|
|
|
|
}
|
|
|
|
local artillery_flare = data.raw["artillery-flare"]["artillery-flare"]
|
|
if artillery_flare then
|
|
artillery_flare.shot_category = artillery_flare.shot_category or "artillery-shell"
|
|
end
|