aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--LICENSE21
-rw-r--r--changelog.txt0
-rw-r--r--control.lua421
-rw-r--r--data.lua12
-rw-r--r--graphics/entity/construction-robot/construction-robot-reflection.pngbin0 -> 231 bytes
-rw-r--r--graphics/entity/construction-robot/construction-robot-shadow.pngbin0 -> 25931 bytes
-rw-r--r--graphics/entity/construction-robot/construction-robot-working.pngbin0 -> 193605 bytes
-rw-r--r--graphics/entity/construction-robot/construction-robot.pngbin0 -> 231204 bytes
-rw-r--r--graphics/entity/iron-active-provider-chest.pngbin0 -> 11556 bytes
-rw-r--r--graphics/entity/iron-buffer-chest.pngbin0 -> 26169 bytes
-rw-r--r--graphics/entity/iron-chest.pngbin0 -> 10749 bytes
-rw-r--r--graphics/entity/iron-passive-provider-chest.pngbin0 -> 26153 bytes
-rw-r--r--graphics/entity/iron-requester-chest.pngbin0 -> 26081 bytes
-rw-r--r--graphics/entity/iron-storage-chest.pngbin0 -> 26207 bytes
-rw-r--r--graphics/entity/logistic-robot/logistic-robot-shadow.pngbin0 -> 35156 bytes
-rw-r--r--graphics/entity/logistic-robot/logistic-robot.pngbin0 -> 433640 bytes
-rw-r--r--graphics/items/construction-robot.pngbin0 -> 26256 bytes
-rw-r--r--graphics/items/inventory-blocker.pngbin0 -> 5917 bytes
-rw-r--r--graphics/items/iron-active-provider-chest.pngbin0 -> 12892 bytes
-rw-r--r--graphics/items/iron-buffer-chest.pngbin0 -> 11899 bytes
-rw-r--r--graphics/items/iron-chest.pngbin0 -> 12063 bytes
-rw-r--r--graphics/items/iron-passive-provider-chest.pngbin0 -> 27424 bytes
-rw-r--r--graphics/items/iron-requester-chest.pngbin0 -> 27295 bytes
-rw-r--r--graphics/items/iron-storage-chest.pngbin0 -> 27432 bytes
-rw-r--r--graphics/items/logistic-robot.pngbin0 -> 24641 bytes
-rw-r--r--graphics/technology/logistic-system-early.pngbin0 -> 152092 bytes
-rw-r--r--graphics/technology/logistic-system.pngbin0 -> 151206 bytes
-rw-r--r--info.json18
-rw-r--r--locale/en/locale.cfg25
-rw-r--r--locale/ru/locale.cfg36
-rw-r--r--prototypes/energy-pad.lua51
-rw-r--r--prototypes/entities.lua70
-rw-r--r--prototypes/item.lua89
-rw-r--r--prototypes/recepie.lua160
-rw-r--r--prototypes/tech.lua73
-rw-r--r--thumbnail.pngbin0 -> 4580775 bytes
36 files changed, 976 insertions, 0 deletions
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..bfdf56c
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2024 Krypt0nC0R3
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/changelog.txt b/changelog.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/changelog.txt
diff --git a/control.lua b/control.lua
new file mode 100644
index 0000000..80affc9
--- /dev/null
+++ b/control.lua
@@ -0,0 +1,421 @@
+local util = require("util")
+local crash_site = require("crash-site")
+
+local modEnabled = true
+
+local entities =
+ {
+ {"substation", {y = 0.5,x = -0.5}, {}},
+ {"accumulator", {y = -1.5,x = -0.5}, {}},
+ {"accumulator", {y = -1.5,x = 1.5}, {}},
+ {"accumulator", {y = 0.5,x = 1.5}, {}},
+ {"iron-storage-chest", {y = -2,x = 3},
+ {
+ items =
+ {
+ {"roboport", 5},
+ {"repair-turret", 15},
+ {"electric-mining-drill", 10},
+ {"transport-belt", 100},
+ {"big-electric-pole", 10},
+ {"small-electric-pole", 20},
+ {"power-switch", 5},
+ {"iron-active-provider-chest", 10},
+ {"iron-buffer-chest", 20},
+ {"iron-passive-provider-chest", 50},
+ {"iron-requester-chest", 50},
+ {"iron-storage-chest", 50},
+ {"inserter", 50},
+ {"stone-furnace", 50}
+ }
+ }},
+ {"iron-storage-chest", {y = -2,x = 4}, {}},
+ {"iron-storage-chest", {y = -2,x = 5}, {}},
+ {"roboport", {y = -0.5,x = -3.5},
+ {
+ items =
+ {
+ {"early-construction-robot", 20},
+ {"early-logistic-robot", 10},
+ {"repair-pack", 50}
+ }
+ }},
+ {"assembling-machine-1", {y = 0,x = 4}, {}},
+ {"inserter", {y = -1,x = 6}, {dir = "west"}},
+ {"inserter", {y = 1,x = 6}, {dir = "east"}},
+ {"iron-passive-provider-chest", {y = -1,x = 7}, {}},
+ {"iron-requester-chest", {y = 1,x = 7}, {}},
+ {"solar-panel", {y = 3,x = 6}, {}},
+ {"solar-panel", {y = 3,x = 3}, {}},
+ {"solar-panel", {y = 3,x = 0}, {}},
+ {"solar-panel", {y = 3,x = -3}, {}},
+ {"solar-panel", {y = 3,x = -6}, {}},
+ {"solar-panel", {y = 6,x = 6}, {}},
+ {"solar-panel", {y = 6,x = 3}, {}},
+ {"solar-panel", {y = 6,x = 0}, {}},
+ {"solar-panel", {y = 6,x = -3}, {}},
+ {"solar-panel", {y = 6,x = -6}, {}},
+ {"solar-panel", {y = 9,x = 6}, {}},
+ {"solar-panel", {y = 9,x = 3}, {}},
+ {"solar-panel", {y = 9,x = 0}, {}},
+ {"solar-panel", {y = 9,x = -3}, {}},
+ {"solar-panel", {y = 9,x = -6}, {}},
+ {"solar-panel", {y = -4,x = 6}, {}},
+ {"solar-panel", {y = -4,x = 3}, {}},
+ {"solar-panel", {y = -4,x = 0}, {}},
+ {"solar-panel", {y = -4,x = -3}, {}},
+ {"solar-panel", {y = -4,x = -6}, {}},
+ {"solar-panel", {y = -7,x = 6}, {}},
+ {"solar-panel", {y = -7,x = 3}, {}},
+ {"solar-panel", {y = -7,x = 0}, {}},
+ {"solar-panel", {y = -7,x = -3}, {}},
+ {"solar-panel", {y = -7,x = -6}, {}},
+ {"accumulator", {y = 0.5,x = -6.5}, {}},
+ {"accumulator", {y = -1.5,x = -6.5}, {}}
+ }
+--local entities =
+local entities_landing_pad =
+ {
+ {"roboport", {y = -6.5,x = 2.5},
+ {
+ items =
+ {
+ {"construction-robot", 10}
+ }
+ }},
+ {"storage-chest", {y = -5,x = 5}, {}},
+ {"substation", {y = -3.5,x = 4.5}, {}},
+
+ }
+--local entities_landing_pad_aquilo =
+
+local function spawn_entity(entity_name, relative_position, center, surface, extra_options, force)
+ -- local entity_name = expressions.entity(entity, vars)
+
+ -- if not prototypes[entity_name] then
+ -- util.debugprint("entity " .. entity_name .. " does not exist")
+ -- return
+ -- end
+
+ local recipe
+ if extra_options.recipe then
+ if not game.recipe_prototypes[extra_options.recipe] then
+ util.debugprint("recipe " .. extra_options.recipe .. " does not exist")
+ else
+ recipe = extra_options.recipe
+ end
+ end
+
+ local e = surface.create_entity {
+ name = entity_name,
+ position = {center.x + relative_position.x, center.y + relative_position.y},
+ direction = defines.direction[extra_options.dir] or defines.direction.north,
+ force = force,
+ raise_built = true,
+ create_build_effect_smoke = true,
+ recipe = recipe
+ }
+ if extra_options.items then
+ local items = {}
+ for _, v in pairs(extra_options.items) do
+ local name = v[1] or v.name
+
+ local count = v[2] or v.count
+
+ if count and count > 0 then
+ items[name] = count
+ end
+ end
+ util.insert_safe(e, items)
+ end
+
+ return e
+end
+
+function getTableSize(t)
+ local count = 0
+ for _, _ in pairs(t) do
+ count = count + 1
+ end
+ return count
+end
+
+function create_power_source(entity)
+ local powerInterface = entity.surface.create_entity({
+ name = "clp-electric-source",
+ position = entity.position,
+ force = entity.force,
+ snap_to_grid = false,
+ raise_built = false
+ })
+ if(true) then
+ local hi = spawn_entity("clp-heat-interface",{y=-3,x=2},entity.position,entity.surface,{},entity.force)
+ local hp = spawn_entity("clp-heat-pipe",{y=-4,x=2},entity.position,entity.surface,{},entity.force)
+ hi.set_heat_setting{temperature = 31, mode = "at-least"}
+ storage.heat_intefaces[entity.unit_number] = {hi,hp}
+ end
+
+ storage.power_interfaces[entity.unit_number] = powerInterface
+end
+
+function destroy_power_source(entity)
+ local powerInterface = storage.power_interfaces[entity.unit_number]
+ if powerInterface ~= nil then
+ powerInterface.destroy({
+ raise_destroy = false
+ })
+ storage.power_interfaces[entity.unit_number] = nil
+ end
+ local heatInterface = storage.heat_intefaces[entity.unit_number]
+ if heatInterface ~= nil then
+ heatInterface[1].destroy({
+ raise_destroy = false
+ })
+ heatInterface[2].destroy({
+ raise_destroy = false
+ })
+ storage.heat_intefaces[entity.unit_number] = nil
+ end
+end
+
+local function clear_area(area, surface)
+ for _, entity in pairs(surface.find_entities_filtered({
+ area = area,
+ -- type = {"resource"},
+ invert = true
+ })) do
+ if (entity.valid) then
+ entity.destroy({
+ do_cliff_correction = false,
+ raise_destroy = false
+ })
+ end
+ end
+
+ return true
+end
+
+function on_deconstruction(event)
+ local inventory = event.entity.get_inventory(defines.inventory.cargo_unit) or event.entity.get_inventory(defines.inventory.chest)
+
+ if(inventory == nil) then
+ do return end
+ end
+ local content = inventory.get_contents()
+ if(content == nil) then
+ do return end
+ end
+ if(inventory.get_item_count("cargo-landing-pad") >= 1 and getTableSize(event.entity.surface.find_entities_filtered({name="cargo-landing-pad"})) == 0) then
+ inventory.remove({name="cargo-landing-pad",count=1})
+ content = inventory.get_contents()
+ inventory.clear()
+ local position = event.entity.position
+ local surface = event.entity.surface
+ local force = event.entity.force
+ local area = {{position.x - 5, position.y - 5}, {position.x + 5, position.y + 5}}
+ local chart = {{position.x - 50, position.y - 50}, {position.x + 50, position.y + 50}}
+ event.entity.destroy()
+ force.chart(surface,chart)
+ clear_area(area,surface)
+ local clp = spawn_entity("cargo-landing-pad",{x=0,y=0},position,surface,{items=content},force)
+ for _, v in pairs(entities_landing_pad) do
+ local name = v[1]
+ local pos = v[2]
+ local extra = v[3]
+ spawn_entity(name, pos, clp.position, surface, extra, force)
+ end
+
+ --[[if(surface.name == "aquilo") then
+ local entity = spawn_entity("clp-heat-interface",{y=-3,x=2},position,surface,{},force)
+ entity.set_heat_setting{temperature = 1000, mode = "exactly"}
+ spawn_entity("clp-heat-pipe",{y=-4,x=2},position,surface,{},force)
+ end]]--
+ end
+
+end
+
+
+
+local function create_roboport(center, surface, player)
+ for _, v in pairs(entities) do
+ local name = v[1]
+ local pos = v[2]
+ local extra = v[3]
+ local entity = spawn_entity(name, pos, center, surface, extra, player.force)
+ --[[if(entity.name == "clp-heat-interface" or entity.name == "heat-interface") then
+ entity.set_heat_setting{temperature = 1000, mode = "exactly"}
+ end]]--
+ end
+end
+
+local function updateInventory ()
+ if not modEnabled then
+ return
+ end
+ for _, pl in pairs(game.players) do
+ --p = game.get_player(1)
+ local player = game.get_player(pl.name)
+ local inventory = player.get_main_inventory()
+ inventory.clear()
+ end
+end
+
+local function on_player_created(event)
+ -- unregister. we only get called once.
+ --script.on_event(defines.events.on_player_created, nil)
+
+ -- vars the freeplay.lua snippit had
+ local crashed_ship_items = remote.call("freeplay", "get_ship_items")
+ local crashed_debris_items = remote.call("freeplay", "get_debris_items")
+
+ local player = game.get_player(event.player_index)
+ local character = player.character
+
+ local group = player.permission_group or game.permissions.create_group("NO_INVENTORY")
+ group.set_allows_action(defines.input_action.craft,false)
+ --group.set_allows_action(defines.input_action.destroy_item,false)
+ --group.set_allows_action(defines.input_action.destroy_opened_item,false)
+ group.set_allows_action(defines.input_action.drop_item,false)
+ group.set_allows_action(defines.input_action.inventory_transfer,false)
+ group.set_allows_action(defines.input_action.inventory_split,false)
+ group.set_allows_action(defines.input_action.cursor_transfer,false)
+ group.set_allows_action(defines.input_action.cursor_split,false)
+ group.set_allows_action(defines.input_action.fast_entity_split,false)
+ group.set_allows_action(defines.input_action.fast_entity_transfer,false)
+ group.set_allows_action(defines.input_action.stack_split,false)
+ group.set_allows_action(defines.input_action.stack_transfer,false)
+ --group.set_allows_action(defines.input_action.use_item,false)
+ group.set_allows_action(defines.input_action.begin_mining,false)
+ group.set_allows_action(defines.input_action.begin_mining_terrain,false)
+ --group.set_allows_action(defines.input_action.smart_pipette,false)
+ group.name = "NO_INVENTORY"
+ group.add_player(player)
+ --player.print(player.permission_group.allows_action(defines.input_action.inventory_transfer))
+
+ --player.get_main_inventory().resize(0)
+
+
+ local center = player.character.position
+ player.character = nil
+ if character then
+ character.destroy()
+ end
+
+ -- our settings
+ local disable_crashsite = true
+ local skip_cutscene = true
+
+ -- add a crash site
+ local surface = player.surface
+ -- surface.daytime = 0.7
+ crash_site.create_crash_site(surface, {-20, -13}, util.copy(crashed_ship_items), util.copy(crashed_debris_items))
+ util.remove_safe(player, crashed_ship_items)
+ util.remove_safe(player, crashed_debris_items)
+ -- player.get_main_inventory().sort_and_merge()
+
+ -- player.character.destroy()
+ -- player.character = nil
+ -- crash_site.create_cutscene(player, {-5, -4})
+
+ -- while player.can_insert{name = "inventory-blocker", count = 1} do
+ -- player.insert{name = "inventory-blocker", count = 1}
+ -- end
+ updateInventory()
+ local area = {{center.x + 10, center.y + 15}, {center.x - 10, center.y - 15}}
+ clear_area(area, surface)
+ create_roboport(center, surface, player)
+end
+
+script.on_init(function ()
+
+ if not remote.interfaces.freeplay then
+ modEnabled = false
+ return
+ end
+
+ remote.call("freeplay", "set_disable_crashsite", true)
+ script.on_event(defines.events.on_player_created, on_player_created)
+
+ script.on_configuration_changed(updateInventory)
+
+ if(script.active_mods["space-age"]) then
+ local filter_built = {{filter = "name", name = "cargo-landing-pad"}}
+ storage = {
+ power_interfaces = {},
+ heat_intefaces = {}
+ }
+ script.on_event(defines.events.on_marked_for_deconstruction,on_deconstruction,{{filter = "name", name = "cargo-pod-container"}})
+ script.on_event(defines.events.on_space_platform_changed_state, function (event)
+ if(event.platform.state == defines.space_platform_state.waiting_at_station) then
+ local surface = game.get_surface(event.platform.space_location.name)
+ if(surface) then
+ event.platform.force.chart(surface, {{-50, -50}, {50, 50}})
+ end
+ end
+ end)
+
+ script.on_event(defines.events.script_raised_built, function(event)
+ local entity = event.entity or event.created_entity
+ if not entity or not entity.valid then return end
+
+ if (entity.name == "cargo-landing-pad") then
+ create_power_source(entity)
+ end
+ end, filter_built)
+ script.on_event(defines.events.on_built_entity, function(event)
+ local entity = event.entity or event.created_entity
+ if not entity or not entity.valid then return end
+
+ if entity.name == "cargo-landing-pad" then
+ create_power_source(entity)
+ end
+ end, filter_built)
+ script.on_event(defines.events.on_robot_built_entity, function(event)
+ local entity = event.entity or event.created_entity
+ if not entity or not entity.valid then return end
+
+ if entity.name == "cargo-landing-pad" then
+ create_power_source(entity)
+ end
+ end, filter_built)
+
+ script.on_event(defines.events.on_entity_died, function(event)
+ local entity = event.entity or event.created_entity
+ if not entity or not entity.valid then return end
+
+ if entity.name == "cargo-landing-pad" then
+ destroy_power_source(entity)
+ end
+ end, filter_built)
+
+ ---@param event script_raised_destroy
+ script.on_event(defines.events.script_raised_destroy, function(event)
+ local entity = event.entity or event.created_entity
+ if not entity or not entity.valid then return end
+
+ if entity.name == "cargo-landing-pad" then
+ destroy_power_source(entity)
+ end
+ end, filter_built)
+
+ ---@param event on_player_mined_entity
+ script.on_event(defines.events.on_player_mined_entity, function(event)
+ local entity = event.entity or event.created_entity
+ if not entity or not entity.valid then return end
+
+ if entity.name == "cargo-landing-pad" then
+ destroy_power_source(entity)
+ end
+ end, filter_built)
+
+ ---@param event on_robot_mined_entity
+ script.on_event(defines.events.on_robot_mined_entity, function(event)
+ local entity = event.entity or event.created_entity
+ if not entity or not entity.valid then return end
+
+ if entity.name == "cargo-landing-pad" then
+ destroy_power_source(entity)
+ end
+ end, filter_built)
+ end
+end)
diff --git a/data.lua b/data.lua
new file mode 100644
index 0000000..00a120d
--- /dev/null
+++ b/data.lua
@@ -0,0 +1,12 @@
+require("prototypes.tech")
+require("prototypes.recepie")
+require("prototypes.entities")
+require("prototypes.item")
+
+if data.raw.technology["steel-axe"] then
+ data.raw.technology["steel-axe"] = null
+end
+
+if(mods["space-age"]) then
+ require("prototypes.energy-pad")
+end \ No newline at end of file
diff --git a/graphics/entity/construction-robot/construction-robot-reflection.png b/graphics/entity/construction-robot/construction-robot-reflection.png
new file mode 100644
index 0000000..18e5bc5
--- /dev/null
+++ b/graphics/entity/construction-robot/construction-robot-reflection.png
Binary files differ
diff --git a/graphics/entity/construction-robot/construction-robot-shadow.png b/graphics/entity/construction-robot/construction-robot-shadow.png
new file mode 100644
index 0000000..5645739
--- /dev/null
+++ b/graphics/entity/construction-robot/construction-robot-shadow.png
Binary files differ
diff --git a/graphics/entity/construction-robot/construction-robot-working.png b/graphics/entity/construction-robot/construction-robot-working.png
new file mode 100644
index 0000000..c565f6a
--- /dev/null
+++ b/graphics/entity/construction-robot/construction-robot-working.png
Binary files differ
diff --git a/graphics/entity/construction-robot/construction-robot.png b/graphics/entity/construction-robot/construction-robot.png
new file mode 100644
index 0000000..14cc719
--- /dev/null
+++ b/graphics/entity/construction-robot/construction-robot.png
Binary files differ
diff --git a/graphics/entity/iron-active-provider-chest.png b/graphics/entity/iron-active-provider-chest.png
new file mode 100644
index 0000000..fd48814
--- /dev/null
+++ b/graphics/entity/iron-active-provider-chest.png
Binary files differ
diff --git a/graphics/entity/iron-buffer-chest.png b/graphics/entity/iron-buffer-chest.png
new file mode 100644
index 0000000..e3cf10a
--- /dev/null
+++ b/graphics/entity/iron-buffer-chest.png
Binary files differ
diff --git a/graphics/entity/iron-chest.png b/graphics/entity/iron-chest.png
new file mode 100644
index 0000000..917d181
--- /dev/null
+++ b/graphics/entity/iron-chest.png
Binary files differ
diff --git a/graphics/entity/iron-passive-provider-chest.png b/graphics/entity/iron-passive-provider-chest.png
new file mode 100644
index 0000000..c19a894
--- /dev/null
+++ b/graphics/entity/iron-passive-provider-chest.png
Binary files differ
diff --git a/graphics/entity/iron-requester-chest.png b/graphics/entity/iron-requester-chest.png
new file mode 100644
index 0000000..893f041
--- /dev/null
+++ b/graphics/entity/iron-requester-chest.png
Binary files differ
diff --git a/graphics/entity/iron-storage-chest.png b/graphics/entity/iron-storage-chest.png
new file mode 100644
index 0000000..a1fe5da
--- /dev/null
+++ b/graphics/entity/iron-storage-chest.png
Binary files differ
diff --git a/graphics/entity/logistic-robot/logistic-robot-shadow.png b/graphics/entity/logistic-robot/logistic-robot-shadow.png
new file mode 100644
index 0000000..3f71cc6
--- /dev/null
+++ b/graphics/entity/logistic-robot/logistic-robot-shadow.png
Binary files differ
diff --git a/graphics/entity/logistic-robot/logistic-robot.png b/graphics/entity/logistic-robot/logistic-robot.png
new file mode 100644
index 0000000..0532783
--- /dev/null
+++ b/graphics/entity/logistic-robot/logistic-robot.png
Binary files differ
diff --git a/graphics/items/construction-robot.png b/graphics/items/construction-robot.png
new file mode 100644
index 0000000..7e84d1e
--- /dev/null
+++ b/graphics/items/construction-robot.png
Binary files differ
diff --git a/graphics/items/inventory-blocker.png b/graphics/items/inventory-blocker.png
new file mode 100644
index 0000000..3666527
--- /dev/null
+++ b/graphics/items/inventory-blocker.png
Binary files differ
diff --git a/graphics/items/iron-active-provider-chest.png b/graphics/items/iron-active-provider-chest.png
new file mode 100644
index 0000000..74cf049
--- /dev/null
+++ b/graphics/items/iron-active-provider-chest.png
Binary files differ
diff --git a/graphics/items/iron-buffer-chest.png b/graphics/items/iron-buffer-chest.png
new file mode 100644
index 0000000..f7856bf
--- /dev/null
+++ b/graphics/items/iron-buffer-chest.png
Binary files differ
diff --git a/graphics/items/iron-chest.png b/graphics/items/iron-chest.png
new file mode 100644
index 0000000..e29d9d2
--- /dev/null
+++ b/graphics/items/iron-chest.png
Binary files differ
diff --git a/graphics/items/iron-passive-provider-chest.png b/graphics/items/iron-passive-provider-chest.png
new file mode 100644
index 0000000..d5ffc88
--- /dev/null
+++ b/graphics/items/iron-passive-provider-chest.png
Binary files differ
diff --git a/graphics/items/iron-requester-chest.png b/graphics/items/iron-requester-chest.png
new file mode 100644
index 0000000..19b740a
--- /dev/null
+++ b/graphics/items/iron-requester-chest.png
Binary files differ
diff --git a/graphics/items/iron-storage-chest.png b/graphics/items/iron-storage-chest.png
new file mode 100644
index 0000000..7c45e01
--- /dev/null
+++ b/graphics/items/iron-storage-chest.png
Binary files differ
diff --git a/graphics/items/logistic-robot.png b/graphics/items/logistic-robot.png
new file mode 100644
index 0000000..35aa9d5
--- /dev/null
+++ b/graphics/items/logistic-robot.png
Binary files differ
diff --git a/graphics/technology/logistic-system-early.png b/graphics/technology/logistic-system-early.png
new file mode 100644
index 0000000..1ea41e9
--- /dev/null
+++ b/graphics/technology/logistic-system-early.png
Binary files differ
diff --git a/graphics/technology/logistic-system.png b/graphics/technology/logistic-system.png
new file mode 100644
index 0000000..ee8d3f8
--- /dev/null
+++ b/graphics/technology/logistic-system.png
Binary files differ
diff --git a/info.json b/info.json
new file mode 100644
index 0000000..a8bc580
--- /dev/null
+++ b/info.json
@@ -0,0 +1,18 @@
+{
+ "name": "robot-start-2",
+ "version": "1.0.1",
+ "factorio_version": "2.0",
+ "title": "Robot start 2",
+ "author": "Krypt0n_C0R3",
+ "contact": "",
+ "homepage": "",
+ "description": "Replace your character to roboport",
+ "dependencies": [
+ "base",
+ "Repair_Turret",
+ "? space-age",
+ "? quality",
+ "! ElectroTurret",
+ "! ShockTurret"
+ ]
+}
diff --git a/locale/en/locale.cfg b/locale/en/locale.cfg
new file mode 100644
index 0000000..17d46e3
--- /dev/null
+++ b/locale/en/locale.cfg
@@ -0,0 +1,25 @@
+[item-name]
+iron-active-provider-chest=Iron active provider chest
+iron-buffer-chest=Iron buffer chest
+iron-passive-provider-chest=Iron passive provider chest
+iron-requester-chest=Iron requester chest
+iron-storage-chest=Iron storage chest
+early-logistic-robot=Simply logistic robot
+early-construction-robot=Simply construction robot
+inventory-blocker=Inventory is locked
+
+[entity-name]
+iron-active-provider-chest=Iron active provider chest
+iron-buffer-chest=Iron buffer chest
+iron-passive-provider-chest=Iron passive provider chest
+iron-requester-chest=Iron requester chest
+iron-storage-chest=Iron storage chest
+early-logistic-robot=Simply logistic robot
+early-construction-robot=Simply construction robot
+inventory-blocker=Inventory is locked
+
+[technology-name]
+early-logistic=Simply logistics
+
+[technology-description]
+early-logistic=Unlocks access to a simple logistics network and provides access to simple logistics network chests \ No newline at end of file
diff --git a/locale/ru/locale.cfg b/locale/ru/locale.cfg
new file mode 100644
index 0000000..597dac4
--- /dev/null
+++ b/locale/ru/locale.cfg
@@ -0,0 +1,36 @@
+repair-turret=Ремонтная турель
+repair-turret-description=Чинит союзные сооружения в радиусе.\nСкорость ремонта: [font=default][color=1, 0.74, 0.40] 55/с[/color][/font]\nРадиус: [font=default][color=1, 0.74, 0.40]25[/color][/font]
+repair-turret-power=Мощность ремотной турели
+repair-turret-power-description=Мощность ремотной турели: +100%
+repair-turret-efficiency=Эффективность ремотной турели
+repair-turret-efficiency-description=Эффективность ремотной турели: +25%
+repair-turret-construction=Строительное улучшение ремотной турели
+repair-turret-construction-description=Позволяет ремотной турели сооружать "призраки" используя предметы из логистической сети.
+repair-turret-deconstruction-description=Позволяет ремотной турели деконструировать сооружения, возвращая предметы в логистическую сеть.
+
+
+[item-name]
+iron-active-provider-chest=Железный сундук активного снабжения
+iron-buffer-chest=Железный буфферный сундук
+iron-passive-provider-chest=Железный сундук пассивного снабжения
+iron-requester-chest=Железный сундук запроса
+iron-storage-chest=Железный сундук хранения
+early-logistic-robot=Простой транспортный дрон
+early-construction-robot=Простой строительный дрон
+inventory-blocker=Инвентарь заблокирован
+
+[entity-name]
+iron-active-provider-chest=Железный сундук активного снабжения
+iron-buffer-chest=Железный буфферный сундук
+iron-passive-provider-chest=Железный сундук пассивного снабжения
+iron-requester-chest=Железный сундук запроса
+iron-storage-chest=Железный сундук хранения
+early-logistic-robot=Простой транспортный дрон
+early-construction-robot=Простой строительный дрон
+inventory-blocker=Инвентарь заблокирован
+
+[technology-name]
+early-logistic=Простая логистика
+
+[technology-description]
+early-logistic=Открывает доступ к простой логистической сети и предоставляет доступ к простым сундукам логистической сети \ No newline at end of file
diff --git a/prototypes/energy-pad.lua b/prototypes/energy-pad.lua
new file mode 100644
index 0000000..11b3c50
--- /dev/null
+++ b/prototypes/energy-pad.lua
@@ -0,0 +1,51 @@
+local portable_nuclear_reactor = data.raw["generator-equipment"]["fission-reactor-equipment"]
+local clp = data.raw["cargo-landing-pad"]["cargo-landing-pad"]
+local energy_source = util.table.deepcopy(data.raw["electric-energy-interface"]["hidden-electric-energy-interface"])
+
+energy_source.name = "clp-electric-source"
+energy_source.localised_name = {"entity-name.cargo-landing-pad"}
+energy_source.icon = clp.icon
+energy_source.energy_source = {
+ type = "electric",
+ buffer_capacity = "5MJ",
+ usage_priority = "tertiary"
+}
+energy_source.energy_production = portable_nuclear_reactor.power
+energy_source.collision_box = clp.collision_box
+energy_source.selection_box = clp.selection_box
+
+
+local clp_recepie = util.table.deepcopy(data.raw["recipe"]["cargo-landing-pad"])
+clp_recepie.ingredients =
+{
+ {type = "item", name = "concrete", amount = 250},
+ {type = "item", name = "processing-unit", amount = 35},
+ {type = "item", name = "steel-plate", amount = 80},
+ {type = "item", name = "accumulator", amount = 1},
+ {type = "item", name = "fission-reactor-equipment", amount = 1},
+ {type = "item", name = "construction-robot", amount = 10}
+}
+
+
+local thermal_pad = util.table.deepcopy(data.raw["heat-interface"]["heat-interface"])
+thermal_pad.minable = nil
+thermal_pad.gui_mode = "none"
+thermal_pad.heat_buffer.default_temperature = 15
+thermal_pad.heat_buffer.max_temperature = 31
+thermal_pad.heat_buffer.min_working_temperature = 30
+thermal_pad.flags = {"placeable-neutral", "player-creation", "not-deconstructable"}
+thermal_pad.name = "clp-heat-interface"
+
+--entity.set_heat_setting{temperature = 1000, mode = "exactly"}
+
+local heat_pipe = util.table.deepcopy(data.raw["heat-pipe"]["heat-pipe"])
+heat_pipe.name = "clp-heat-pipe"
+heat_pipe.flags = {"placeable-neutral", "player-creation", "not-deconstructable"}
+heat_pipe.minable = nil
+
+data:extend({
+ energy_source,
+ clp_recepie,
+ heat_pipe,
+ thermal_pad
+})
diff --git a/prototypes/entities.lua b/prototypes/entities.lua
new file mode 100644
index 0000000..9337cc4
--- /dev/null
+++ b/prototypes/entities.lua
@@ -0,0 +1,70 @@
+require ("util")
+
+local iron_chest = data.raw["container"]["iron-chest"]
+local ipsc = util.table.deepcopy(data.raw["logistic-container"]["passive-provider-chest"])
+local ibc = util.table.deepcopy(data.raw["logistic-container"]["buffer-chest"])
+local iasc = util.table.deepcopy(data.raw["logistic-container"]["active-provider-chest"])
+local isc = util.table.deepcopy(data.raw["logistic-container"]["storage-chest"])
+local irc = util.table.deepcopy(data.raw["logistic-container"]["requester-chest"])
+
+local chests = {ipsc,ibc,iasc,irc,isc}
+
+for _, chest in ipairs(chests) do
+ chest.name = "iron-"..chest.name
+ chest.icon = "__robot-start-2__/graphics/items/"..chest.name..".png"
+ chest.corpse = iron_chest.corpse
+ chest.max_health = iron_chest.max_health
+ chest.minable = {mining_time = 0.1, result = chest.name}
+ chest.dying_explosion = iron_chest.dying_explosion
+ chest.resistances = iron_chest.resistances
+ chest.open_sound = iron_chest.open_sound
+ chest.close_sound = iron_chest.close_sound
+ chest.inventory_size = iron_chest.inventory_size
+ chest.animation = nil
+ chest.picture = util.table.deepcopy(iron_chest.picture)
+ chest.picture.layers[1].filename = "__robot-start-2__/graphics/entity/"..chest.name..".png"
+end
+
+local early_l_bot = util.table.deepcopy(data.raw["logistic-robot"]["logistic-robot"])
+local early_c_bot = util.table.deepcopy(data.raw["construction-robot"]["construction-robot"])
+
+local bots = {early_c_bot,early_l_bot}
+
+for _, bot in ipairs(bots) do
+ bot.icon = "__robot-start-2__/graphics/items/"..bot.name..".png"
+ bot.name = "early-"..bot.name
+ bot.minable = {mining_time = 0.1, result = bot.name}
+ bot.resistances =
+ {
+ {
+ type = "fire",
+ percent = 100
+ }
+ }
+ bot.max_health = 50
+ bot.speed = 0.04
+ bot.max_energy = "0.75MJ"
+ bot.energy_per_move = "2.5kJ"
+ bot.idle.filename = bot.idle.filename:gsub("base","robot-start-2")
+ bot.in_motion.filename = bot.in_motion.filename:gsub("base","robot-start-2")
+ bot.shadow_idle.filename = bot.shadow_idle.filename:gsub("base","robot-start-2")
+ bot.shadow_in_motion.filename = bot.shadow_in_motion.filename:gsub("base","robot-start-2")
+end
+
+early_c_bot.working.filename = early_c_bot.working.filename:gsub("base","robot-start-2")
+early_c_bot.shadow_working.filename = early_c_bot.shadow_working.filename:gsub("base","robot-start-2")
+
+early_l_bot.idle_with_cargo.filename = early_l_bot.idle_with_cargo.filename:gsub("base","robot-start-2")
+early_l_bot.in_motion_with_cargo.filename = early_l_bot.in_motion_with_cargo.filename:gsub("base","robot-start-2")
+early_l_bot.shadow_idle_with_cargo.filename = early_l_bot.shadow_idle_with_cargo.filename:gsub("base","robot-start-2")
+early_l_bot.shadow_in_motion_with_cargo.filename = early_l_bot.shadow_in_motion_with_cargo.filename:gsub("base","robot-start-2")
+
+data:extend{
+ ipsc,
+ ibc,
+ iasc,
+ isc,
+ irc,
+ early_c_bot,
+ early_l_bot
+} \ No newline at end of file
diff --git a/prototypes/item.lua b/prototypes/item.lua
new file mode 100644
index 0000000..70ca8ee
--- /dev/null
+++ b/prototypes/item.lua
@@ -0,0 +1,89 @@
+data:extend{
+ {
+ type = "item",
+ name = "iron-active-provider-chest",
+ icon = "__robot-start-2__/graphics/items/iron-active-provider-chest.png",
+ icon_size = 64,
+ icon_mipmaps = 4,
+ subgroup = "storage",
+ order = "a[items]-b[iron-active-provider-chest]",
+ place_result = "iron-active-provider-chest",
+ stack_size = 50
+ },
+ {
+ type = "item",
+ name = "iron-buffer-chest",
+ icon = "__robot-start-2__/graphics/items/iron-buffer-chest.png",
+ icon_size = 64,
+ icon_mipmaps = 4,
+ subgroup = "storage",
+ order = "a[items]-b[iron-buffer-chest]",
+ place_result = "iron-buffer-chest",
+ stack_size = 50
+ },
+ {
+ type = "item",
+ name = "iron-passive-provider-chest",
+ icon = "__robot-start-2__/graphics/items/iron-passive-provider-chest.png",
+ icon_size = 64,
+ icon_mipmaps = 4,
+ subgroup = "storage",
+ order = "a[items]-b[iron-passive-provider-chest]",
+ place_result = "iron-passive-provider-chest",
+ stack_size = 50
+ },
+ {
+ type = "item",
+ name = "iron-requester-chest",
+ icon = "__robot-start-2__/graphics/items/iron-requester-chest.png",
+ icon_size = 64,
+ icon_mipmaps = 4,
+ subgroup = "storage",
+ order = "a[items]-b[iron-requester-chest]",
+ place_result = "iron-requester-chest",
+ stack_size = 50
+ },
+ {
+ type = "item",
+ name = "iron-storage-chest",
+ icon = "__robot-start-2__/graphics/items/iron-storage-chest.png",
+ icon_size = 64,
+ icon_mipmaps = 4,
+ subgroup = "storage",
+ order = "a[items]-b[iron-storage-chest]",
+ place_result = "iron-storage-chest",
+ stack_size = 50
+ },
+ {
+ type = "item",
+ name = "early-logistic-robot",
+ icon = "__robot-start-2__/graphics/items/logistic-robot.png",
+ icon_size = 64,
+ icon_mipmaps = 4,
+ subgroup = "logistic-network",
+ order = "a[robot]-b[early-logistic-robot]",
+ place_result = "early-logistic-robot",
+ stack_size = 50
+ },
+ {
+ type = "item",
+ name = "early-construction-robot",
+ icon = "__robot-start-2__/graphics/items/construction-robot.png",
+ icon_size = 64,
+ icon_mipmaps = 4,
+ subgroup = "logistic-network",
+ order = "a[robot]-b[early-construction-robot]",
+ place_result = "early-construction-robot",
+ stack_size = 50
+ },
+ {
+ type = "item",
+ name = "inventory-blocker",
+ icon = "__robot-start-2__/graphics/items/inventory-blocker.png",
+ icon_size = 64,
+ icon_mipmaps = 4,
+ subgroup = "logistic-network",
+ order = "a[robot]-b[early-construction-robot]",
+ stack_size = 1
+ },
+} \ No newline at end of file
diff --git a/prototypes/recepie.lua b/prototypes/recepie.lua
new file mode 100644
index 0000000..ba0112e
--- /dev/null
+++ b/prototypes/recepie.lua
@@ -0,0 +1,160 @@
+data:extend{
+ {
+ type = "recipe",
+ name = "iron-active-provider-chest",
+ auto_recycle = false,
+ enabled = false,
+ ingredients =
+ {
+ {type = "item", name = "electronic-circuit", amount = 5},
+ {type = "item", name = "iron-chest", amount = 1}
+ },
+ surface_conditions =
+ {
+ {
+ property = "gravity",
+ min = 1
+ }
+ },
+ allow_productivity = false,
+ allow_quality = false,
+ energy_required = 15,
+ results = {{type = "item", name = "iron-active-provider-chest", amount = 1}}
+ },
+ {
+ type = "recipe",
+ name = "iron-buffer-chest",
+ auto_recycle = false,
+ enabled = false,
+ ingredients =
+ {
+ {type = "item", name = "electronic-circuit", amount = 5},
+ {type = "item", name = "iron-chest", amount = 1}
+ },
+ surface_conditions =
+ {
+ {
+ property = "gravity",
+ min = 1
+ }
+ },
+ allow_productivity = false,
+ allow_quality = false,
+ energy_required = 15,
+ results = {{type = "item", name = "iron-buffer-chest", amount = 1}}
+ },
+ {
+ type = "recipe",
+ name = "iron-passive-provider-chest",
+ auto_recycle = false,
+ enabled = false,
+ ingredients =
+ {
+ {type = "item", name = "electronic-circuit", amount = 5},
+ {type = "item", name = "iron-chest", amount = 1}
+ },
+ surface_conditions =
+ {
+ {
+ property = "gravity",
+ min = 1
+ }
+ },
+ allow_productivity = false,
+ allow_quality = false,
+ energy_required = 15,
+ results = {{type = "item", name = "iron-passive-provider-chest", amount = 1}}
+ },
+ {
+ type = "recipe",
+ name = "iron-requester-chest",
+ auto_recycle = false,
+ enabled = false,
+ ingredients =
+ {
+ {type = "item", name = "electronic-circuit", amount = 5},
+ {type = "item", name = "iron-chest", amount = 1}
+ },
+ surface_conditions =
+ {
+ {
+ property = "gravity",
+ min = 1
+ }
+ },
+ allow_productivity = false,
+ allow_quality = false,
+ energy_required = 15,
+ results = {{type = "item", name = "iron-requester-chest", amount = 1}}
+ },
+ {
+ type = "recipe",
+ name = "iron-storage-chest",
+ auto_recycle = false,
+ enabled = false,
+ ingredients =
+ {
+ {type = "item", name = "electronic-circuit", amount = 5},
+ {type = "item", name = "iron-chest", amount = 1}
+ },
+ surface_conditions =
+ {
+ {
+ property = "gravity",
+ min = 1
+ }
+ },
+ allow_productivity = false,
+ allow_quality = false,
+ energy_required = 15,
+ results = {{type = "item", name = "iron-storage-chest", amount = 1}}
+ },
+ {
+ type = "recipe",
+ name = "early-logistic-robot",
+ auto_recycle = false,
+ enabled = false,
+ ingredients =
+ {
+ {type = "item", name = "electronic-circuit", amount = 5},
+ {type = "item", name = "iron-gear-wheel", amount = 12},
+ {type = "item", name = "copper-cable", amount = 3},
+ {type = "item", name = "iron-plate", amount = 18},
+ },
+ surface_conditions =
+ {
+ {
+ property = "gravity",
+ min = 1
+ }
+ },
+ allow_productivity = false,
+ allow_quality = false,
+ energy_required = 8,
+ results = {{type = "item", name = "early-logistic-robot", amount = 1}}
+ },
+ {
+ type = "recipe",
+ name = "early-construction-robot",
+ auto_recycle = false,
+ enabled = false,
+ ingredients =
+ {
+ {type = "item", name = "electronic-circuit", amount = 5},
+ {type = "item", name = "iron-gear-wheel", amount = 12},
+ {type = "item", name = "copper-cable", amount = 3},
+ {type = "item", name = "iron-plate", amount = 18},
+ },
+ surface_conditions =
+ {
+ {
+ property = "gravity",
+ min = 1
+ }
+ },
+ allow_productivity = false,
+ allow_quality = false,
+ energy_required = 8,
+ results = {{type = "item", name = "early-construction-robot", amount = 1}}
+ },
+} \ No newline at end of file
diff --git a/prototypes/tech.lua b/prototypes/tech.lua
new file mode 100644
index 0000000..bc77fe5
--- /dev/null
+++ b/prototypes/tech.lua
@@ -0,0 +1,73 @@
+data.raw.technology["logistic-system"].icon = "__robot-start-2__/graphics/technology/logistic-system.png"
+--[[data.raw.technology["logistic-robotics"].effects =
+{
+ {
+ type = "unlock-recipe",
+ recipe = "roboport"
+ },
+ {
+ type = "unlock-recipe",
+ recipe = "logistic-chest-passive-provider"
+ },
+ {
+ type = "unlock-recipe",
+ recipe = "logistic-chest-storage"
+ },
+ {
+ type = "unlock-recipe",
+ recipe = "logistic-robot"
+ }
+}]]--
+
+data:extend{
+ {
+ type = "technology",
+ name = "early-logistic",
+ icon_size = 256, icon_mipmaps = 4,
+ icon = "__robot-start-2__/graphics/technology/logistic-system-early.png",
+ effects =
+ {
+ {
+ type = "unlock-recipe",
+ recipe = "iron-active-provider-chest"
+ },
+ {
+ type = "unlock-recipe",
+ recipe = "iron-buffer-chest"
+ },
+ {
+ type = "unlock-recipe",
+ recipe = "iron-passive-provider-chest"
+ },
+ {
+ type = "unlock-recipe",
+ recipe = "iron-requester-chest"
+ },
+ {
+ type = "unlock-recipe",
+ recipe = "iron-storage-chest"
+ },
+ {
+ type = "unlock-recipe",
+ recipe = "early-logistic-robot"
+ },
+ {
+ type = "unlock-recipe",
+ recipe = "early-construction-robot"
+ },
+ },
+ prerequisites = {"logistic-science-pack"},
+ unit =
+ {
+ count = 100*1,
+ ingredients =
+ {
+ {"automation-science-pack", 1},
+ {"logistic-science-pack",5}
+ },
+ time = 30
+ },
+ upgrade = false,
+ order = "e-l-a"
+ },
+} \ No newline at end of file
diff --git a/thumbnail.png b/thumbnail.png
new file mode 100644
index 0000000..71669ab
--- /dev/null
+++ b/thumbnail.png
Binary files differ