You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
2.8 KiB
79 lines
2.8 KiB
--luacheck: no global
|
|
require("stdlib.event.event")
|
|
require("stdlib.config.config")
|
|
|
|
local QS = Config.new(QS or (MOD and MOD.config and MOD.config.quickstart) or {})
|
|
|
|
if remote.interfaces["quickstart-script"] then
|
|
if game then game.print("Existing quickstart script - "..remote.call("quickstart-script", "creative_mode_quickstart_registered_to")) end
|
|
return remote.call("quickstart-script", "registered_to")
|
|
end
|
|
local qs_interface = {}
|
|
qs_interface.creative_mode_quickstart_registerd_to = function()
|
|
game.print(QS.get("mod_name", "not-set"))
|
|
return QS.get("mod_name", "not-set")
|
|
end
|
|
qs_interface.registered_to = function()
|
|
return (MOD and MOD.name) or QS.get("mod_name", "not-set")
|
|
end
|
|
remote.add_interface("quickstart-script", qs_interface)
|
|
|
|
local Area=require("stdlib.area.area")
|
|
--local quickstart = {}
|
|
quickstart = {}
|
|
--quickstart.map = require("test")
|
|
function quickstart.on_player_created(event)
|
|
if #game.players == 1 then
|
|
local player = game.players[event.player_index]
|
|
|
|
if QS.get("clear_items", false) then
|
|
player.clear_items_inside()
|
|
end
|
|
|
|
local simple_stacks = QS.get("stacks", {})
|
|
|
|
for _, item in pairs(simple_stacks) do
|
|
if game.item_prototypes[item] then
|
|
player.insert(item)
|
|
end
|
|
end
|
|
|
|
if QS.get("power_armor", true) then
|
|
--Put on power armor, install equipment
|
|
local inv = player.get_inventory(defines.inventory.player_armor)
|
|
inv.insert("power-armor-mk2")
|
|
local armor = inv[1].grid
|
|
armor.put{name="fusion-reactor-equipment"}
|
|
armor.put{name="personal-roboport-equipment"}
|
|
end
|
|
|
|
local surface = player.surface
|
|
local area = QS.get("area_box", {{-100, -100}, {100, 100}})
|
|
|
|
if QS.get("disable_rso_starting", false) and remote.interfaces["RSO"] and remote.interfaces["RSO"]["disableStartingArea"] then
|
|
remote.call("RSO", "disableStartingArea")
|
|
end
|
|
if QS.get("disable_rso_chunk", false) and remote.interfaces["RSO"] and remote.interfaces["RSO"]["disableChunkHandler"] then
|
|
remote.call("RSO", "disableChunkHandler")
|
|
end
|
|
if QS.get("destroy_everything", true) then
|
|
for _, entity in pairs(surface.find_entities(area)) do
|
|
if entity.name ~= "player" then
|
|
entity.destroy()
|
|
end
|
|
end
|
|
end
|
|
|
|
if QS.get("floor_tile", true) then
|
|
local tiles = {}
|
|
for x, y in Area.spiral_iterate(area) do
|
|
tiles[#tiles+1]={name=QS.get("floor_tile", "concrete"), position={x=x, y=y}}
|
|
end
|
|
surface.set_tiles(tiles, true)
|
|
--surface.set_tiles(quickstart.map, true)
|
|
end
|
|
end
|
|
end
|
|
Event.register(defines.events.on_player_created, quickstart.on_player_created)
|
|
|
|
return quickstart
|
|
|