diff --git a/data/compatibility/krastorio2.lua b/data/compatibility/krastorio2.lua index 75f2372..03adda6 100644 --- a/data/compatibility/krastorio2.lua +++ b/data/compatibility/krastorio2.lua @@ -1,6 +1,10 @@ if mods["Krastorio2"] then local spider = data.raw["spider-vehicle"]["constructron"] - if spider then + if data.raw["spider-vehicle"]["constructron"] then spider.equipment_grid = "kr-spidertron-equipment-grid" end + local spider_rocket = data.raw["spider-vehicle"]["constructron-rocket-powered"] + if data.raw["spider-vehicle"]["constructron-rocket-powered"] then + spider_rocket.equipment_grid = "kr-spidertron-equipment-grid" + end end diff --git a/data/constructron-rocket-powered.lua b/data/constructron-rocket-powered.lua index a77d1e7..ca4d255 100644 --- a/data/constructron-rocket-powered.lua +++ b/data/constructron-rocket-powered.lua @@ -1,70 +1,53 @@ -local lib_spider = require("data/lib/lib_spider") -------------------------------------------------------------------------------- +------------------------------------------------------------------------------ -- Entity ------------------------------------------------------------------------------- -local spidertron_definition = { +local args = { name = "constructron-rocket-powered", - guns = {}, scale = 1, - leg_scale = 0, - legs = { - { - block = {1}, - angle = 0, - length = 1 - } - }, - collision_mask = {"colliding-with-tiles-only", "ground-tile", "water-tile"} + leg_scale = 1, + leg_movement_speed = 1, + leg_thickness = 1, } -local constructron = lib_spider.create_spidertron(spidertron_definition) -constructron.se_allow_in_space = true -if mods["Krastorio2"] then - constructron.equipment_grid = "kr-spidertron-equipment-grid" -end +local spider_leg = { + type = "spider-leg", + name = "constructron-rocket-powered-leg", + localised_name = {"entity-name.spidertron-leg"}, + collision_box = {{-0.1, -0.1}, {0.1, 0.1}}, + selection_box = {{-0.5, -0.5}, {0.5, 0.5}}, + icon = "__base__/graphics/icons/spidertron.png", + collision_mask = { layers = { } }, + target_position_randomisation_distance = 0.25, + minimal_step_size = 4, + stretch_force_scalar = 1, + knee_height = 2.5, + knee_distance_factor = 0.4, + initial_movement_speed = 100, + movement_acceleration = 100, + max_health = 100, + base_position_selection_distance = 6, + movement_based_position_selection_distance = 4, + selectable_in_game = false, + alert_when_damaged = false, +} +data:extend({spider_leg}) ---Rocket flames --- local layers = constructron.graphics_set.base_animation.layers --- for _, layer in pairs(layers) do --- layer.repeat_count = 8 --- layer.hr_version.repeat_count = 8 --- end --- table.insert( --- layers, --- 1, --- { --- filename = "__base__/graphics/entity/rocket-silo/10-jet-flame.png", --- priority = "medium", --- blend_mode = "additive", --- draw_as_glow = true, --- width = 87, --- height = 128, --- frame_count = 8, --- line_length = 8, --- animation_speed = 0.5, --- scale = 1.25, --- shift = util.by_pixel(-0.5, 55), --- direction_count = 1, --- hr_version = { --- filename = "__base__/graphics/entity/rocket-silo/hr-10-jet-flame.png", --- priority = "medium", --- blend_mode = "additive", --- draw_as_glow = true, --- width = 172, --- height = 256, --- frame_count = 8, --- line_length = 8, --- animation_speed = 0.5, --- scale = 1.25 / 2, --- shift = util.by_pixel(-1, 80), --- direction_count = 1 --- } --- } --- ) +create_spidertron(args) -local leg_entities = lib_spider.create_spidertron_legs(spidertron_definition) +-- remove legs from the spidertron entity +local spidertron = data.raw["spider-vehicle"]["constructron-rocket-powered"] +spidertron.spider_engine.legs = { -- 1 + leg = "constructron-rocket-powered-leg", + mount_position = {0, -1}, + ground_position = {0, -1}, + walking_group = 1, +} + +if mods["Krastorio2"] then + spidertron.equipment_grid = "kr-spidertron-equipment-grid" +end ------------------------------------------------------------------------------- -- Item @@ -97,23 +80,15 @@ local constructron_recipe = { name = "constructron-rocket-powered", enabled = false, ingredients = { - {type = "item", name = "constructron", amount = 1}, - {type = "item", name = "jetpack-1", amount = 4} + {type = "item", name = "spidertron", amount = 1}, + {type = "item", name = "jetpack-1", amount = 4}, }, results = { - {type = "item", name = "constructron-rocket-powered", amount = 1} + {type = "item", name = "constructron-rocket-powered", amount = 1}, }, energy = 1 } -local ctron_rocket_powered = {constructron, constructron_item} -table.insert(ctron_rocket_powered, constructron_recipe) - -for _, leg in pairs(leg_entities) do - leg.se_allow_in_space = true - table.insert(ctron_rocket_powered, leg) -end - ------------------------------------------------------------------------------- -- Technology ------------------------------------------------------------------------------- @@ -129,4 +104,5 @@ table.insert( -- Extend ------------------------------------------------------------------------------- -data:extend(ctron_rocket_powered) +data:extend({constructron_item}) +data:extend({constructron_recipe}) \ No newline at end of file diff --git a/locale/ru/locale.cfg b/locale/ru/locale.cfg index c624ea6..d42a419 100644 --- a/locale/ru/locale.cfg +++ b/locale/ru/locale.cfg @@ -32,6 +32,7 @@ missing_power=Необходим источник питания! stuck=Застрял! fleeing=Убегает! trying_diff_station=Пробует другую станцию +no_station_power=Нет питания на станции! no_logi_robots=В сети нет логистических роботов! no_logi_storage=В сети нет логистического хранилища! dest_station_invalid=Станция назначения не исправна! @@ -49,6 +50,7 @@ no_landfill=Перезапуск задания: отсутствует отсы clearing_inventory=Освобождает инвентарь new=Новая задача delivering_cargo=Выгружает +safe_position=Двигается на безопасную позицию [ctron_gui_locale] all_logistics_req=Логистические запросы @@ -72,6 +74,7 @@ job_card_cargo_name=Доставка job_card_destroy_name=Уничтожение job_card_utility_name=Снабжение job_status=Ожидание свободного Конструктрона +chunk_delay=Начало через __1__ секунд job_locate_button=Показать job_locate_button_tooltip=Посмотреть место задачи job_remote_button=Управление @@ -99,6 +102,7 @@ settings_robot_count_label=Количество дронов settings_robot_count_tooltip=Количество дронов, используемых при выполнении задач. Обычно это значение устанавливается в максимальное количество, поддерживаемое дронстанцией settings_robot_selection_label=Выбор дронов settings_robot_selection_tooltip=Тип дронов используемых для выполнения задач +settings_zone_restriction_label=Ограничения зоны settings_zone_restriction_tooltip=Переключение заданий в зонах строительства дронстанций. Полезно для предотвращения выполнения конструкторами заданий в пределах диапазона стройки дронстанции. Применяется ко всем типам заданий. settings_construction_jobs_label=Строительство settings_construction_jobs_tooltip=Конструктроны будут автоматически строить призрачные сущности. @@ -113,10 +117,14 @@ settings_destroy_jobs_tooltip=Включает режим уничтожения settings_repair_jobs_label=Ремонт settings_repair_jobs_tooltip=Конструктроны будут автоматически ремонтировать строения. settings_repair_tool_selection_label=Инструменты ремонта +settings_repair_tool_selection_tooltip=Эти инструменты будут использоваться для ремонта settings_ammo_selection_label=Вооружение settings_ammo_selection_tooltip=Тип боеприпасов для уничтожения противников settings_ammo_count_label=Боеприпасов settings_ammo_count_tooltip=Количество боеприпасов для уничтожения +settings_atomic_selection_label=Выбор ядерных боеприпасов +settings_atomic_count_label=Количество ядерных боеприпасов +settings_min_cluster_size_label=Минимальный размер кластера job_title=Информация о работе job_worker_minimap_label=Местонахождение рабочего diff --git a/script/entity_processor.lua b/script/entity_processor.lua index 6560d73..a88e616 100644 --- a/script/entity_processor.lua +++ b/script/entity_processor.lua @@ -401,7 +401,7 @@ script.on_event(ev.on_player_alt_selected_area, function (event) for _, entity in pairs(event.entities) do if entity and entity.valid and entity.name == "constructron" then for _, job in pairs(storage.jobs) do - if job.worker.unit_number == entity.unit_number then + if job.worker and job.worker.unit_number == entity.unit_number then if not player.gui.screen.ctron_job_window then gui_job.buildJobGui(player, job) player.opened = player.gui.screen.ctron_job_window diff --git a/script/job/destroy.lua b/script/job/destroy.lua index b5740df..2b63fdf 100644 --- a/script/job/destroy.lua +++ b/script/job/destroy.lua @@ -422,10 +422,10 @@ local threat_weights = { ["big-spitter"] = 2, ["behemoth-spitter"] = 3, - ["small-worm-turret"] = 1, - ["medium-worm-turret"] = 2, - ["big-worm-turret"] = 4, - ["behemoth-worm-turret"] = 6, + ["small-worm-turret"] = 0.1, + ["medium-worm-turret"] = 0.5, + ["big-worm-turret"] = 1, + ["behemoth-worm-turret"] = 2, ["biter-spawner"] = 0.5, ["spitter-spawner"] = 0.5,