1
0
mirror of https://github.com/ComfyFactory/ComfyFactorio.git synced 2025-09-16 09:06:21 +02:00
This commit is contained in:
danielmartin0
2021-10-13 14:56:49 +01:00
parent 4da8094a0b
commit 29473d4ed9
16 changed files with 72 additions and 54 deletions

View File

@@ -3,6 +3,7 @@ _LIFECYCLE = _STAGE.control -- Control stage
_DEBUG = false _DEBUG = false
_DUMP_ENV = false _DUMP_ENV = false
require 'utils.server' require 'utils.server'
require 'utils.server_commands' require 'utils.server_commands'
require 'utils.utils' require 'utils.utils'
@@ -29,12 +30,12 @@ require 'utils.debug.command'
require 'comfy_panel.main' require 'comfy_panel.main'
require 'comfy_panel.player_list' require 'comfy_panel.player_list'
require 'comfy_panel.admin' require 'comfy_panel.admin'
require 'comfy_panel.group' -- require 'comfy_panel.group'
require 'comfy_panel.poll' -- require 'comfy_panel.poll'
require 'comfy_panel.score' -- require 'comfy_panel.score'
require 'comfy_panel.config' require 'comfy_panel.config'
require 'modules.autostash' -- require 'modules.autostash'
---------------- !ENABLE MODULES HERE ---------------- ---------------- !ENABLE MODULES HERE ----------------
--require 'modules.admins_operate_biters' --require 'modules.admins_operate_biters'
@@ -107,6 +108,10 @@ require 'modules.autostash'
--![[Comfylatron has seized the Fish Train and turned it into a time machine]]-- --![[Comfylatron has seized the Fish Train and turned it into a time machine]]--
--require 'maps.chronosphere.main' --require 'maps.chronosphere.main'
--![[Adventure as a crew of pirates!]]--
require 'maps.pirates.main'
-- Note: should disable comfy_panel.group, comfy_panel.poll, comfy_panel.score
--![[Launch rockets in increasingly harder getting worlds.]]-- --![[Launch rockets in increasingly harder getting worlds.]]--
--require 'maps.journey.main' --require 'maps.journey.main'

View File

@@ -13,7 +13,7 @@ softmod_info_new_players_1=For New Players
softmod_info_new_players_2=Try asking the captain what you can help with, or just mine resources and bring them to the ship. softmod_info_new_players_2=Try asking the captain what you can help with, or just mine resources and bring them to the ship.
softmod_info_tips_1=Features of the game that are hard to work out alone softmod_info_tips_1=Features of the game that are hard to work out alone
softmod_info_tips_2=• Resources granted to the ship appear in the captain's cabin.\n• After the first island, the ship makes ore over time.\n• Charging a silo launches a rocket. This makes gold and coin, but also pollution and evo.\n• Charging a silo drains power from everything else on its network.\n• Once a silo has launched a rocket, biters will ignore it.\n• If X marks the spot, use inserters to dig.\n• You can steer the boat from the crow's nest by placing 100 rail signals in one of the blue boxes.\n• Labs producitivity increases with each league.\n• To launch a second parallel run, you need a fifth of the server's pirates to endorse it.\n• Time increase in evolution, and passive pollution, are both proportional to the number of remaining nests. However, destroying a nest will immediately jump evolution by roughly the amount it 'would have' made had it survived. \n• At Abandoned Labs, biters don't care if you emit pollution. They only care how long you stay. softmod_info_tips_2=• Resources granted to the ship appear in the captain's cabin.\n• After the first island, the ship makes ore over time.\n• Charging a silo launches a rocket. This makes gold and coin, but also pollution and evo.\n• Charging a silo drains power from everything else on its network.\n• Once a silo has launched a rocket, biters will ignore it.\n• If X marks the spot, use inserters to dig.\n• You can steer the boat from the crow's nest by placing 100 rail signals in one of the blue boxes.\n• Labs producitivity increases with each league.\n• To launch a second parallel run, you need a fifth of the server's pirates to endorse it.\n• Time increase in evolution, and the strength of attacks, are both proportional to the number of remaining nests. However, destroying a nest will immediately jump evolution by roughly the amount it 'would have' made had it survived. \n• At Abandoned Labs, biters don't care if you emit pollution. They only care how long you stay.
softmod_info_updates_1=Development softmod_info_updates_1=Development
softmod_info_updates_2=After more than a year on and off development, Pirate Ship is released. Not everything made it into 1.0. We don't have a 'city' in the lobby with a practice boat, nor 'biter forts' on the top lane, 'maze wurld', localisation to other languages, nor pvp. But for now, it is time to enjoy and tweak 1.0. softmod_info_updates_2=After more than a year on and off development, Pirate Ship is released. Not everything made it into 1.0. We don't have a 'city' in the lobby with a practice boat, nor 'biter forts' on the top lane, 'maze wurld', localisation to other languages, nor pvp. But for now, it is time to enjoy and tweak 1.0.

View File

@@ -57,6 +57,7 @@ function(cmd)
if player and player.valid then if player and player.valid then
if PlayerColors[param] then if PlayerColors[param] then
player.color = PlayerColors[param] player.color = PlayerColors[param]
player.chat_color = PlayerColors[param]
game.print(player.name .. '\'s color is now ' .. param .. ' (via /ccolor).', PlayerColors[param]) game.print(player.name .. '\'s color is now ' .. param .. ' (via /ccolor).', PlayerColors[param])
else else
player.print('Color not found.') player.print('Color not found.')

View File

@@ -5,8 +5,8 @@ local inspect = require 'utils.inspect'.inspect
local Public = {} local Public = {}
Public.scenario_id_name = 'pirates' Public.scenario_id_name = 'pirates'
Public.version_string = '1.0.1.5' Public.version_string = '1.0.1.6'
Public.version_float = 1.015 Public.version_float = 1.016
Public.victory_x = 1000 Public.victory_x = 1000

View File

@@ -704,6 +704,7 @@ function Public.reset_crew_and_enemy_force(id)
crew_force.recipes['centrifuge'].enabled = false crew_force.recipes['centrifuge'].enabled = false
crew_force.recipes['flamethrower-turret'].enabled = true crew_force.recipes['flamethrower-turret'].enabled = true
crew_force.recipes['locomotive'].enabled = false crew_force.recipes['locomotive'].enabled = false
crew_force.technologies['automobilism'].enabled = false
crew_force.recipes['car'].enabled = false crew_force.recipes['car'].enabled = false
crew_force.recipes['cargo-wagon'].enabled = false crew_force.recipes['cargo-wagon'].enabled = false

View File

@@ -191,14 +191,16 @@ function Public.click(event)
event.element.zoom = zoom event.element.zoom = zoom
end end
if event.button == defines.mouse_button_type.middle then if event.button == defines.mouse_button_type.middle then
if size == 320 then if size == 340 then
size = 420 size = 440
elseif size == 420 then elseif size == 440 then
size = 520 size = 560
elseif size == 520 then elseif size == 560 then
size = 250 size = 700
elseif size == 700 then
size = 280
else else
size = 320 size = 340
end end
event.element.style.minimal_height = size event.element.style.minimal_height = size
event.element.style.minimal_width = size event.element.style.minimal_width = size

View File

@@ -126,16 +126,16 @@ local function saved_scores_trim(scores)
table.sort(leagues_travelled_latestv) table.sort(leagues_travelled_latestv)
local completion_times_cutoff = #completion_times > 8 and completion_times[8] or 9999999 local completion_times_cutoff = #completion_times > 8 and completion_times[8] or 9999999
local completion_times_mediump_latestv_cutoff = #completion_times_mediump_latestv > 5 and completion_times_mediump_latestv[5] or 9999999 local completion_times_mediump_latestv_cutoff = #completion_times_mediump_latestv > 4 and completion_times_mediump_latestv[4] or 9999999
local completion_times_hard_cutoff = #completion_times_hard > 5 and completion_times_hard[5] or 9999999 local completion_times_hard_cutoff = #completion_times_hard > 4 and completion_times_hard[4] or 9999999
local completion_times_nightmare_cutoff = #completion_times_hard > 3 and completion_times_hard[3] or 9999999 local completion_times_nightmare_cutoff = #completion_times_hard > 2 and completion_times_hard[2] or 9999999
local completion_times_latestv_cutoff = #completion_times_latestv > 8 and completion_times_latestv[8] or 9999999 local completion_times_latestv_cutoff = #completion_times_latestv > 8 and completion_times_latestv[8] or 9999999
local leagues_travelled_cutoff = #leagues_travelled > 8 and leagues_travelled[-8] or 0 local leagues_travelled_cutoff = #leagues_travelled > 8 and leagues_travelled[-8] or 0
local leagues_travelled_mediump_latestv_cutoff = #leagues_travelled_mediump_latestv > 5 and leagues_travelled_mediump_latestv[-5] or 0 local leagues_travelled_mediump_latestv_cutoff = #leagues_travelled_mediump_latestv > 4 and leagues_travelled_mediump_latestv[-4] or 0
local leagues_travelled_hard_cutoff = #leagues_travelled_hard > 5 and leagues_travelled_hard[-5] or 0 local leagues_travelled_hard_cutoff = #leagues_travelled_hard > 4 and leagues_travelled_hard[-4] or 0
local leagues_travelled_nightmare_cutoff = #leagues_travelled_hard > 3 and leagues_travelled_hard[-3] or 0 local leagues_travelled_nightmare_cutoff = #leagues_travelled_hard > 2 and leagues_travelled_hard[-2] or 0
local leagues_travelled_latestv_cutoff = #leagues_travelled_latestv > 8 and leagues_travelled_latestv[-8] or 0 local leagues_travelled_latestv_cutoff = #leagues_travelled_latestv > 86 and leagues_travelled_latestv[-8] or 0
-- log(inspect{completion_times_cutoff,completion_times_mediump_latestv_cutoff,completion_times_hard_cutoff,completion_times_latestv_cutoff,leagues_travelled_cutoff,leagues_travelled_mediump_latestv_cutoff,leagues_travelled_hard_cutoff,leagues_travelled_latestv_cutoff}) -- log(inspect{completion_times_cutoff,completion_times_mediump_latestv_cutoff,completion_times_hard_cutoff,completion_times_latestv_cutoff,leagues_travelled_cutoff,leagues_travelled_mediump_latestv_cutoff,leagues_travelled_hard_cutoff,leagues_travelled_latestv_cutoff})
@@ -350,7 +350,7 @@ local function score_gui(data)
for _, header in ipairs(headers) do for _, header in ipairs(headers) do
local cap = header.caption local cap = header.caption
log(header.caption) -- log(header.caption)
-- Add sorting symbol if any -- Add sorting symbol if any
if header.column and sorting_pref[1] and sorting_pref[1].column == header.column then if header.column and sorting_pref[1] and sorting_pref[1].column == header.column then
@@ -483,30 +483,30 @@ local function on_gui_click(event)
['_difficulty'] = 'difficulty', ['_difficulty'] = 'difficulty',
['_capacity'] = 'capacity', ['_capacity'] = 'capacity',
} }
local column = element_to_column[name] if element_to_column[name] then
if column then
--@TODO: Extend --@TODO: Extend
local sorting_pref = this.sort_by[player.index] local sorting_pref = this.sort_by[player.index]
local found = false local found_index = nil
local new_method = 'descending' local new_method = 'descending'
for i, sort in ipairs(sorting_pref) do for i, sort in ipairs(sorting_pref) do
if sort.column == column.column then if sort.column == element_to_column[name] then
found = true found_index = i
if sort.method == 'descending' then new_method = 'ascending' end if sort.method == 'descending' and i==1 then new_method = 'ascending' end
end end
end end
if found then if found_index then
--remove this and shuffle everything before it up by 1: --remove this and shuffle everything before it up by 1:
for j = i, 2, -1 do for j = found_index, 2, -1 do
sorting_pref[j] = Utils.deepcopy(sorting_pref[j-1]) --deepcopy just as I'm slightly unsure about refernces here sorting_pref[j] = Utils.deepcopy(sorting_pref[j-1]) --deepcopy just as I'm slightly unsure about refernces here
end end
else else
--prepend: --prepend:
for j = #sorting_pref + 1, 2, -1 do for j = #sorting_pref + 1, 2, -1 do
sorting_pref[j] = Utils.deepcopy(sorting_pref[j-1]) --deepcopy just as I'm slightly unsure about refernces here sorting_pref[j] = Utils.deepcopy(sorting_pref[j-1]) --deepcopy just as I'm slightly unsure about references here
end end
end end
sorting_pref[1] = {column = column, method = new_method} sorting_pref[1] = {column = element_to_column[name], method = new_method}
score_gui({player = player, frame = frame}) score_gui({player = player, frame = frame})
return return

View File

@@ -1272,15 +1272,17 @@ local function event_on_built_entity(event)
entity.time_to_live = entity.force.ghost_time_to_live entity.time_to_live = entity.force.ghost_time_to_live
end end
if memory.boat and memory.boat.surface_name and player.surface == game.surfaces[memory.boat.surface_name] then if memory.boat and memory.boat.surface_name and player.surface == game.surfaces[memory.boat.surface_name] and entity.position then
if (entity.type and (entity.type == 'underground-belt')) or (entity.name == 'entity-ghost' and entity.ghost_type and (entity.ghost_type == 'underground-belt')) then if (entity.type and (entity.type == 'underground-belt')) or (entity.name == 'entity-ghost' and entity.ghost_type and (entity.ghost_type == 'underground-belt')) then
-- if (entity.type and (entity.type == 'underground-belt' or entity.type == 'pipe-to-ground')) or (entity.name == 'entity-ghost' and entity.ghost_type and (entity.ghost_type == 'underground-belt' or entity.ghost_type == 'pipe-to-ground')) then if Boats.on_boat(memory.boat, entity.position) then
if not (entity.name and entity.name == 'entity-ghost') then -- if (entity.type and (entity.type == 'underground-belt' or entity.type == 'pipe-to-ground')) or (entity.name == 'entity-ghost' and entity.ghost_type and (entity.ghost_type == 'underground-belt' or entity.ghost_type == 'pipe-to-ground')) then
player.insert{name = entity.name, count = 1} if not (entity.name and entity.name == 'entity-ghost') then
player.insert{name = entity.name, count = 1}
end
entity.destroy()
Common.notify_player(player, 'Undergrounds can\'t be built on the boat, due to conflicts with the boat movement code.')
return
end end
entity.destroy()
Common.notify_player(player, 'Undergrounds can\'t be built on the overworld, due to conflicts with the boat movement code.')
return
end end
end end

View File

@@ -13,8 +13,10 @@ function Public.buried_treasure_loot()
local ret local ret
local rng = Math.random(1000) local rng = Math.random(1000)
if rng <= 150 then if rng <= 100 then
ret = {name = 'steel-plate', count = 150} ret = {name = 'steel-plate', count = 150}
elseif rng <= 150 then
ret = {name = 'flying-robot-frame', count = 30}
elseif rng <= 200 then elseif rng <= 200 then
ret = {name = 'construction-robot', count = 15} ret = {name = 'construction-robot', count = 15}
elseif rng <= 330 then elseif rng <= 330 then

View File

@@ -60,7 +60,7 @@ local function on_init()
Autostash.bottom_button(true) Autostash.bottom_button(true)
BottomFrame.reset() BottomFrame.reset()
BottomFrame.activate_custom_buttons(true) BottomFrame.activate_custom_buttons(true)
BottomFrame.bottom_right(true) -- BottomFrame.bottom_right(true)
local mgs = game.surfaces['nauvis'].map_gen_settings local mgs = game.surfaces['nauvis'].map_gen_settings
mgs.width = 16 mgs.width = 16
@@ -208,8 +208,11 @@ local function crew_tick()
end end
if memory.captain_accrued_time_data and memory.playerindex_captain then if memory.captain_accrued_time_data and memory.playerindex_captain then
if (not memory.captain_accrued_time_data[memory.playerindex_captain]) then memory.captain_accrued_time_data[memory.playerindex_captain] = 0 end local player = game.players[memory.playerindex_captain]
memory.captain_accrued_time_data[memory.playerindex_captain] = memory.captain_accrued_time_data[memory.playerindex_captain] + 1 if player and player.name then
if (not memory.captain_accrued_time_data[player.name]) then memory.captain_accrued_time_data[player.name] = 0 end
memory.captain_accrued_time_data[player.name] = memory.captain_accrued_time_data[player.name] + 1
end
end end
if destination.dynamic_data.time_remaining and destination.dynamic_data.time_remaining > 0 then if destination.dynamic_data.time_remaining and destination.dynamic_data.time_remaining > 0 then

View File

@@ -164,6 +164,7 @@ function Public.draw_noisy_ore_patch(surface, position, name, budget, radius_squ
end end
end end
--@FIXME: Hardcode positions instead, ordered by distance from origin
local spiral_layer = 0 local spiral_layer = 0
local outwards_spiral_x = 0 local outwards_spiral_x = 0
local outwards_spiral_y = 0 local outwards_spiral_y = 0

View File

@@ -125,6 +125,7 @@ function Public.generate_overworld_destination(p)
if type == Surfaces.enum.ISLAND then if type == Surfaces.enum.ISLAND then
local scope = Surfaces[Surfaces.enum.ISLAND][subtype] local scope = Surfaces[Surfaces.enum.ISLAND][subtype]
--@FIXME: Common.activecrewcount() shouldn't be used here, it should be sensitive to the playercount when you arrive on the island
local playercount = Common.activecrewcount() local playercount = Common.activecrewcount()
local static_params = Utils.deepcopy(scope.Data.static_params_default) local static_params = Utils.deepcopy(scope.Data.static_params_default)
@@ -562,10 +563,10 @@ function Public.try_overworld_move_v2(vector) --islands stay, crowsnest moves
if memory.overworldx % 40 == 0 then if memory.overworldx % 40 == 0 then
local modal_captain = nil local modal_captain = nil
local modal_captain_time = 0 local modal_captain_time = 0
for player, time in pairs(memory.captain_accrued_time_data) do for name, time in pairs(memory.captain_accrued_time_data) do
if time > modal_captain_time then if time > modal_captain_time then
modal_captain_time = time modal_captain_time = time
modal_captain = player modal_captain = name
end end
end end
Highscore.write_score(memory.secs_id, memory.name, modal_captain, memory.completion_time or 0, memory.overworldx, CoreData.version_float, memory.difficulty, memory.capacity) Highscore.write_score(memory.secs_id, memory.name, modal_captain, memory.completion_time or 0, memory.overworldx, CoreData.version_float, memory.difficulty, memory.capacity)

View File

@@ -32,13 +32,13 @@ Public.areas_offleft = {
} }
Public.entities = { Public.entities = {
inaccessible = { inaccessible = {
pos = { x = -9, y = 0}, pos = { x = -7.5, y = 0},
bp_str = [[0eNqV08sOwiAQBdB/mTU1ltIXv2KMqXZSSdqhKfhoDP9uQRcmsmF5k7mHWQwvOI83nBdFFuQLDHVzZnU2LKr3+QkyZ7CCbB0DddFkQB62MTVQN/oBu84IEpTFCRhQN/n00LpHyi5XNBZ8kXr0kjsyQLLKKvw4Iawnuk1nXMJTMYHBrM1W0vRdab8rw1L5rnSO/TE8kdnHmSKRKeKMSGR4nCkTmTLOVImMiDN1IlPHmSaRqeJMm8g0ntluMVyt/PkBDO64mFDgTS7qlteiqETLG+fekGkHZg==]], bp_str = [[0eNqV08sOwiAQBdB/mTU1ltIXv2KMqXZSSdqhKfhoDP9uQRcmsmF5k7mHWQwvOI83nBdFFuQLDHVzZnU2LKr3+QkyZ7CCbB0DddFkQB62MTVQN/oBu84IEpTFCRhQN/n00LpHyi5XNBZ8kXr0kjsyQLLKKvw4Iawnuk1nXMJTMYHBrM1W0vRdab8rw1L5rnSO/TE8kdnHmSKRKeKMSGR4nCkTmTLOVImMiDN1IlPHmSaRqeJMm8g0ntluMVyt/PkBDO64mFDgTS7qlteiqETLG+fekGkHZg==]],
}, },
} }
Public.landingtrack = { Public.landingtrack = {
offset = {x = 4, y = -7}, offset = {x = 4.5, y = -7},
bp = [[0eNqV2M1qwkAYheF7mXWE+eZ/civFhdVBBjQJSSwVyb3XVBddtMV3JYHjBJ85m+NNvZ8uZRhrN6v2pqZuN2zmfnMc62F9/lStmEZd7x9+aVTd992k2rd7sB673WmNzNehqFbVuZxVo7rdeX265/ZjmYtav9QdynrOsm3UXE/lccDQT3Wuffd8y+b5Gr38dsafcWFxA0+neQvz7tW8MBxhOMJwBOIIxBGIoxmOZjia4WiIoyGOZjgZ2WREk5FMZjCZuWTGkhBLQiwJsSTGkhhLYiwRsUTEEhFLZCyRsUTGEhBLQCwBsQTGEhhLYCwesXjE4hGLZyyesXjG4hCLQywOsTjG4hiLYywWsVjEYhHLI21Rmv1Kj9IBpSNKJ5TO7HbgZbLbFHadwu7z5dqyWcJWCRslBtXWoNoaVFuDamtQbQ2qrUG1Nay2htUWbkY4GeliZJuITSK2iFBtBdVWUG0F1VZQbQXVVlBthdVWWG3pmod79Z/abpvHv0btj/+gGvVRxun7AJPExWyiDc5pa5blC6gg570=]], bp = [[0eNqV2M1qwkAYheF7mXWE+eZ/civFhdVBBjQJSSwVyb3XVBddtMV3JYHjBJ85m+NNvZ8uZRhrN6v2pqZuN2zmfnMc62F9/lStmEZd7x9+aVTd992k2rd7sB673WmNzNehqFbVuZxVo7rdeX265/ZjmYtav9QdynrOsm3UXE/lccDQT3Wuffd8y+b5Gr38dsafcWFxA0+neQvz7tW8MBxhOMJwBOIIxBGIoxmOZjia4WiIoyGOZjgZ2WREk5FMZjCZuWTGkhBLQiwJsSTGkhhLYiwRsUTEEhFLZCyRsUTGEhBLQCwBsQTGEhhLYCwesXjE4hGLZyyesXjG4hCLQywOsTjG4hiLYywWsVjEYhHLI21Rmv1Kj9IBpSNKJ5TO7HbgZbLbFHadwu7z5dqyWcJWCRslBtXWoNoaVFuDamtQbQ2qrUG1Nay2htUWbkY4GeliZJuITSK2iFBtBdVWUG0F1VZQbQXVVlBthdVWWG3pmod79Z/abpvHv0btj/+gGvVRxun7AJPExWyiDc5pa5blC6gg570=]],
} }

View File

@@ -157,9 +157,9 @@ Public.deck_whitebelts_lrtp_order = {
{x = -52.5, y = 11.5, direction = defines.direction.south, type = 'output'}, {x = -52.5, y = 11.5, direction = defines.direction.south, type = 'output'},
{x = -51.5, y = 11.5, direction = defines.direction.south, type = 'output'}, {x = -51.5, y = 11.5, direction = defines.direction.south, type = 'output'},
{x = -50.5, y = 11.5, direction = defines.direction.south, type = 'output'}, {x = -50.5, y = 11.5, direction = defines.direction.south, type = 'output'},
{x = -17.5, y = 11.5, direction = defines.direction.north, type = 'input'}, {x = -17.5, y = 11.5, direction = defines.direction.north, type = 'output'},
{x = -16.5, y = 11.5, direction = defines.direction.north, type = 'input'}, {x = -16.5, y = 11.5, direction = defines.direction.north, type = 'output'},
{x = -15.5, y = 11.5, direction = defines.direction.north, type = 'input'}, {x = -15.5, y = 11.5, direction = defines.direction.north, type = 'output'},
} }
Public.crewname_rendering_position = {x = -67, y = -18.5} Public.crewname_rendering_position = {x = -67, y = -18.5}

View File

@@ -52,9 +52,9 @@ Public[enum.INITIAL].Data.hold_whitebelts_lrtp_order = {
{x = -18.5, y = 21.5, direction = defines.direction.south, type = 'input'}, {x = -18.5, y = 21.5, direction = defines.direction.south, type = 'input'},
{x = -17.5, y = 21.5, direction = defines.direction.south, type = 'input'}, {x = -17.5, y = 21.5, direction = defines.direction.south, type = 'input'},
{x = 17.5, y = 21.5, direction = defines.direction.south, type = 'output'}, {x = 17.5, y = 21.5, direction = defines.direction.south, type = 'input'},
{x = 18.5, y = 21.5, direction = defines.direction.south, type = 'output'}, {x = 18.5, y = 21.5, direction = defines.direction.south, type = 'input'},
{x = 19.5, y = 21.5, direction = defines.direction.south, type = 'output'}, {x = 19.5, y = 21.5, direction = defines.direction.south, type = 'input'},
} }
Public[enum.SECONDARY] = {} Public[enum.SECONDARY] = {}

View File

@@ -46,7 +46,7 @@ function Public.prevent_unbarreling_off_ship(tickinterval)
local r = a.get_recipe() local r = a.get_recipe()
if r and r.subgroup and r.subgroup.name and r.subgroup.name == 'fill-barrel' and (not (r.name and r.name == 'fill-water-barrel')) then if r and r.subgroup and r.subgroup.name and r.subgroup.name == 'fill-barrel' and (not (r.name and r.name == 'fill-water-barrel')) then
if not Boats.on_boat(boat, a.position) then if not Boats.on_boat(boat, a.position) then
Common.notify_force(game.forces[memory.force_name], 'Nope: Can\'t barrel fluids offboard.') Common.notify_force(game.forces[memory.force_name], 'Barrelling recipe removed; barrels are too heavy to carry back to the ship.')
a.set_recipe('fill-water-barrel') a.set_recipe('fill-water-barrel')
end end
end end