diff --git a/locale/en/pirates.cfg b/locale/en/pirates.cfg index 6c3748ed..be0ef305 100644 --- a/locale/en/pirates.cfg +++ b/locale/en/pirates.cfg @@ -531,7 +531,7 @@ gui_runs_proposal_maker_run_name_2=Name gui_runs_proposal_maker_capacity=Capacity gui_runs_proposal_maker_propose=Propose gui_runs_proposal_maker_no_limit=No limit -gui_runs_proposal_maker_blueprints_disabled=Blueprint imports disabled +gui_runs_proposal_maker_blueprints_disabled=Disable BP Imports gui_runs_proposal_maker_protected=Captain-protected gui_runs_proposal_maker_protected_tooltip=Captain-protected crew. If the captain leaves or becomes afk, and there are no officers, the captain role stays vacant. gui_runs_proposal_maker_private=Private diff --git a/maps/pirates/ai.lua b/maps/pirates/ai.lua index 5e2525a2..5ee7112e 100644 --- a/maps/pirates/ai.lua +++ b/maps/pirates/ai.lua @@ -171,7 +171,7 @@ function Public.try_main_attack() local wave_size_multiplier = Public.wave_size_rng() if wave_size_multiplier == 0 then - log('Attacks: ' .. 'Aborted by chance.') + log('Attacks: ' .. 'Not attempted (by chance).') return nil else local group = Public.spawn_group_of_scripted_biters(2 / 3, 6, 350, wave_size_multiplier) @@ -189,7 +189,7 @@ function Public.try_secondary_attack() local wave_size_multiplier = Public.wave_size_rng() if wave_size_multiplier == 0 then - log('Attacks: ' .. 'Aborted by chance.') + log('Attacks: ' .. 'Not attempted (by chance).') return nil else local surface = game.surfaces[Common.current_destination().surface_name] @@ -216,7 +216,7 @@ function Public.try_rogue_attack() local wave_size_multiplier = Public.wave_size_rng() if wave_size_multiplier == 0 then - log('Attacks: ' .. 'Aborted by chance.') + log('Attacks: ' .. 'Not attempted (by chance).') return nil else local surface = game.surfaces[Common.current_destination().surface_name] diff --git a/maps/pirates/api_events.lua b/maps/pirates/api_events.lua index 32f739ed..df7ea5e9 100644 --- a/maps/pirates/api_events.lua +++ b/maps/pirates/api_events.lua @@ -2014,10 +2014,6 @@ local function event_on_built_entity(event) memory.players_to_last_landmine_placement_tick[player.index] = game.tick end - if entity.type == 'entity-ghost' and entity.force and entity.force.valid then - entity.time_to_live = 12 * 60 * 60 - end - if memory.boat and memory.boat.surface_name and player.surface == game.surfaces[memory.boat.surface_name] and entity.valid 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 Boats.on_boat(memory.boat, entity.position) then diff --git a/maps/pirates/api_on_tick.lua b/maps/pirates/api_on_tick.lua index 9b45c89c..b0c6d4d2 100644 --- a/maps/pirates/api_on_tick.lua +++ b/maps/pirates/api_on_tick.lua @@ -1462,7 +1462,7 @@ function Public.silo_insta_update() if dynamic_data.rocketsilochargedbools and (not dynamic_data.rocketsilochargedbools[i]) then dynamic_data.rocketsilochargedbools[i] = true local inv = silo.get_inventory(defines.inventory.assembling_machine_input) - inv.insert { name = 'rocket-control-unit', count = 10 } + inv.insert { name = 'processing-unit', count = 10 } inv.insert { name = 'low-density-structure', count = 10 } inv.insert { name = 'rocket-fuel', count = 10 } end @@ -1621,14 +1621,14 @@ function Public.check_for_cliff_explosives_in_hold_wooden_chests() queued_chests_timers[i] = nil else local tick_tacks = { '*tick*', '*tick*', '*tack*', '*tak*', '*tik*', '*tok*' } - surface.create_entity( - { - name = 'flying-text', - position = chest.position, - text = tick_tacks[Math.random(#tick_tacks)], - color = { r = 0.75, g = 0.75, b = 0.75 } - } - ) + -- surface.create_entity( + -- { + -- name = 'flying-text', + -- position = chest.position, + -- text = tick_tacks[Math.random(#tick_tacks)], + -- color = { r = 0.75, g = 0.75, b = 0.75 } + -- } + -- ) end else -- we probably don't want to have it in the queue anymore if it's invalid now, do we? diff --git a/maps/pirates/common.lua b/maps/pirates/common.lua index d6899d87..f4fab257 100644 --- a/maps/pirates/common.lua +++ b/maps/pirates/common.lua @@ -193,25 +193,21 @@ function Public.parrot_speak(force, message) Server.to_discord_embed_raw({ '', '[' .. memory.name .. '] ', { 'pirates.notify_parrot' }, ' ', message }, true) end -function Public.flying_text(surface, position, text) - surface.create_entity( - { - name = 'flying-text', - position = { position.x - 0.7, position.y - 3.05 }, - text = text - } - ) +function Public.flying_text(player, position, text) + player.create_local_flying_text { + name = 'flying-text', + position = { position.x - 0.7, position.y - 3.05 }, + text = text + } end -function Public.flying_text_small(surface, position, text) --differs just in the location of the text, more suitable for small things like '+' - surface.create_entity( - { - name = 'flying-text', - position = { position.x - 0.08, position.y - 1.5 }, - -- position = {position.x - 0.06, position.y - 1.5}, - text = text - } - ) +function Public.flying_text_small(player, position, text) --differs just in the location of the text, more suitable for small things like '+' + player.create_local_flying_text { + name = 'flying-text', + position = { position.x - 0.08, position.y - 1.5 }, + -- position = {position.x - 0.06, position.y - 1.5}, + text = text + } end function Public.processed_loot_data(raw_data) @@ -405,9 +401,9 @@ function Public.give(player, stacks, spill_position, short_form, spill_surface, if #stacks2 > 1 then text2 = '(' .. text2 .. ')' end - Public.flying_text(spill_surface, flying_text_position, text1 .. ' [font=count-font]' .. text2 .. '[/font]') + Public.flying_text(player, flying_text_position, text1 .. ' [font=count-font]' .. text2 .. '[/font]') else - Public.flying_text(spill_surface, flying_text_position, text1) + Public.flying_text(player, flying_text_position, text1) end end @@ -728,7 +724,6 @@ function Public.new_healthbar(text, target_entity, max_health, optional_id, heal text = '', color = { 255, 255, 255 }, scale = 1.2 + size * 2, - render_layer = 'light-effect', target = target_entity, target_offset = { 0, -3.6 - size * 0.6 + extra_offset }, surface = target_entity.surface, @@ -1691,10 +1686,8 @@ function Public.get_item_blacklist(tier) -- blacklist['productivity-module-3'] = true -- blacklist['efficiency-module-3'] = true -- blacklist['space-science-pack'] = true - -- blacklist['rocket-control-unit'] = true blacklist['artillery-wagon'] = true blacklist['artillery-turret'] = true - blacklist['artillery-targeting-remote'] = true -- blacklist['uranium-cannon-shell'] = true -- blacklist['explosive-uranium-cannon-shell'] = true blacklist['satellite'] = true @@ -1752,20 +1745,20 @@ function Public.get_random_dictionary_entry(t, key) end end --- Used to connect multi-surface poles +-- Used to connect multi-surface poles. NOTE: Now that Factorio 2.0 has defines.wire_origin.script, perhaps we don't need to worry about overflowing the number of connections anymore? function Public.force_connect_poles(pole1, pole2) - if not pole1 then - return - end - if not pole1.valid then - return - end - if not pole2 then - return - end - if not pole2.valid then - return - end + if not pole1 then return end + if not pole1.valid then return end + if not pole2 then return end + if not pole2.valid then return end + + local pole1_connector = pole1.get_wire_connector(defines.wire_connector_id.pole_copper, true) + local pole2_connector = pole2.get_wire_connector(defines.wire_connector_id.pole_copper, true) + + if not pole1_connector then return end + if not pole1_connector.valid then return end + if not pole2_connector then return end + if not pole2_connector.valid then return end -- force connections for testing (by placing many poles around the substations) -- for _, e in pairs(pole1.surface.find_entities_filtered{type="electric-pole", position = pole1.position, radius = 10}) do @@ -1777,34 +1770,34 @@ function Public.force_connect_poles(pole1, pole2) -- end -- NOTE: "connect_neighbour" returns false when the entities are already connected as well - pole1.disconnect_neighbour(pole2) - local success = pole1.connect_neighbour(pole2) + pole1_connector.disconnect_from(pole2_connector) + local success = pole1_connector.connect_to(pole2_connector, false, defines.wire_origin.script) if success then return end - local pole1_neighbours = pole1.neighbours['copper'] - local pole2_neighbours = pole2.neighbours['copper'] + local pole1_connections = pole1_connector.connections + local pole2_connections = pole2_connector.connections -- try avoiding disconnecting more poles than needed local disconnect_from_pole1 = false local disconnect_from_pole2 = false - if #pole1_neighbours >= #pole2_neighbours then + if #pole1_connections >= #pole2_connections then disconnect_from_pole1 = true end - if #pole2_neighbours >= #pole1_neighbours then + if #pole2_connections >= #pole1_connections then disconnect_from_pole2 = true end if disconnect_from_pole1 then -- Prioritise disconnecting last connections as those are most likely redundant (at least for holds, although even then it's not always the case) - for i = #pole1_neighbours, 1, -1 do - local e = pole1_neighbours[i] + for i = #pole1_connections, 1, -1 do + local c = pole1_connections[i] -- only disconnect poles from same surface - if e and e.valid and e.surface.name == pole1.surface.name then - pole1.disconnect_neighbour(e) + if c and c.valid and c.owner and c.owner.valid and c.owner.surface.name == pole1.owner.surface.name then + pole1_connector.disconnect_from(c) break end end @@ -1812,17 +1805,17 @@ function Public.force_connect_poles(pole1, pole2) if disconnect_from_pole2 then -- Prioritise disconnecting last connections as those are most likely redundant (at least for holds, although even then it's not always the case) - for i = #pole2_neighbours, 1, -1 do - local e = pole2_neighbours[i] + for i = #pole2_connections, 1, -1 do + local c = pole2_connections[i] -- only disconnect poles from same surface - if e and e.valid and e.surface.name == pole2.surface.name then - pole2.disconnect_neighbour(e) + if c and c.valid and c.owner and c.owner.valid and c.owner.surface.name == pole2.owner.surface.name then + pole2_connector.disconnect_from(c) break end end end - local success2 = pole1.connect_neighbour(pole2) + local success2 = pole1_connector.connect_to(pole2_connector, false, defines.wire_origin.script) if not success2 then -- This can happen if in future pole reach connection limit(5) with poles from other surfaces log("Error: power fix didn't work") @@ -1849,7 +1842,7 @@ end function Public.replace_unwalkable_tiles(surface, position, width, height) local area = { left_top = { position.x - width / 2, position.y - height / 2 }, right_bottom = { position.x + width / 2 + 0.5, position.y + height / 2 + 0.5 } } - local existing = surface.find_tiles_filtered { area = area, collision_mask = 'water-tile' } + local existing = surface.find_tiles_filtered { area = area, collision_mask = 'water_tile' } if not existing then return end diff --git a/maps/pirates/crew.lua b/maps/pirates/crew.lua index 6a189969..d6525b59 100644 --- a/maps/pirates/crew.lua +++ b/maps/pirates/crew.lua @@ -1068,7 +1068,6 @@ function Public.reset_crew_and_enemy_force(id) -- crew_force.technologies['efficiency-module-2'].enabled = false -- crew_force.technologies['efficiency-module-3'].enabled = false -- crew_force.technologies['automation-3'].enabled = false - -- crew_force.technologies['rocket-control-unit'].enabled = false -- crew_force.technologies['rocket-silo'].enabled = false -- crew_force.technologies['space-scienkce-pack'].enabled = false -- crew_force.technologies['mining-productivity-3'].enabled = false diff --git a/maps/pirates/gui/runs.lua b/maps/pirates/gui/runs.lua index 39e51f29..444bf8bb 100644 --- a/maps/pirates/gui/runs.lua +++ b/maps/pirates/gui/runs.lua @@ -347,13 +347,6 @@ function Public.toggle_window(player) flow5.style.horizontal_align = 'left' flow5.style.bottom_margin = 5 - flow5.add({ - name = 'blueprints_disabled_checkbox', - type = 'checkbox', - caption = { 'pirates.gui_runs_proposal_maker_blueprints_disabled' }, - state = false, - }) - flow5.add({ name = 'protected_checkbox', type = 'checkbox', @@ -370,6 +363,13 @@ function Public.toggle_window(player) tooltip = { 'pirates.gui_runs_proposal_maker_private_tooltip' } }) + flow5.add({ + name = 'blueprints_disabled_checkbox', + type = 'checkbox', + caption = { 'pirates.gui_runs_proposal_maker_blueprints_disabled' }, + state = false, + }) + flow6 = flow5.add({ name = 'password_label', type = 'label', diff --git a/maps/pirates/locally_maintained_comfy_forks/tick_tack_trap.lua b/maps/pirates/locally_maintained_comfy_forks/tick_tack_trap.lua index d56951e3..25bbbc78 100644 --- a/maps/pirates/locally_maintained_comfy_forks/tick_tack_trap.lua +++ b/maps/pirates/locally_maintained_comfy_forks/tick_tack_trap.lua @@ -39,14 +39,14 @@ local function create_flying_text(surface, position, text) if not surface.valid then return end - surface.create_entity( - { - name = 'flying-text', - position = position, - text = text, - color = { r = 0.75, g = 0.75, b = 0.75 } - } - ) + -- surface.create_entity( + -- { + -- name = 'flying-text', + -- position = position, + -- text = text, + -- color = { r = 0.75, g = 0.75, b = 0.75 } + -- } + -- ) if text == '...' then return end @@ -60,14 +60,14 @@ local function create_kaboom(force_name, surface, position, name) local target = position local speed = 0.5 if name == 'defender-capsule' or name == 'destroyer-capsule' or name == 'distractor-capsule' then - surface.create_entity( - { - name = 'flying-text', - position = position, - text = '(((Sentries Engaging Target)))', - color = { r = 0.8, g = 0.0, b = 0.0 } - } - ) + -- surface.create_entity( + -- { + -- name = 'flying-text', + -- position = position, + -- text = '(((Sentries Engaging Target)))', + -- color = { r = 0.8, g = 0.0, b = 0.0 } + -- } + -- ) local nearest_player_unit = surface.find_nearest_enemy({ position = position, max_distance = 128, force = force_name }) if nearest_player_unit then target = nearest_player_unit.position diff --git a/maps/pirates/overworld.lua b/maps/pirates/overworld.lua index 0257adca..3fe00b39 100644 --- a/maps/pirates/overworld.lua +++ b/maps/pirates/overworld.lua @@ -519,7 +519,7 @@ function Public.ensure_lane_generated_up_to(lane_yvalue, x) if type(r) == 'table' and r.text_rendering and r.text_rendering.valid then for _, price_data in ipairs(Upgrades.upgrades_data[dest.static_params.upgrade_for_sale].market_item.price) do if price_data.name == rendering_name then - r.text_rendering.text = Utils.bignumber_abbrevform2(price_data[2]) + r.text_rendering.text = Utils.bignumber_abbrevform2(price_data.count) break end end diff --git a/maps/pirates/progression.lua b/maps/pirates/progression.lua index 776bf372..c023598a 100644 --- a/maps/pirates/progression.lua +++ b/maps/pirates/progression.lua @@ -81,7 +81,6 @@ function Public.set_off_from_starting_dock() local p = Utils.psum { memory.boat.position, Boats.get_scope(memory.boat).Data.crewname_rendering_position } memory.boat.rendering_crewname_text = rendering.draw_text { text = memory.name, - -- render_layer = '125', --does nothing surface = surface, target = p, color = CoreData.colors.renderingtext_yellow, diff --git a/maps/pirates/shop/dock.lua b/maps/pirates/shop/dock.lua index 810a696f..4d6a8493 100644 --- a/maps/pirates/shop/dock.lua +++ b/maps/pirates/shop/dock.lua @@ -53,7 +53,6 @@ Public.market_permanent_offers = { { price = { { name = 'coin', count = 4200 } }, offer = { type = 'give-item', item = 'speed-module-2', count = 2 } }, { price = { { name = 'coin', count = 3000 } }, offer = { type = 'give-item', item = 'explosives', count = 50 } }, { price = { { name = 'coin', count = 6500 }, { name = 'steel-plate', count = 25 }, { name = 'explosives', count = 50 } }, offer = { type = 'give-item', item = 'land-mine', count = 100 } }, - -- {price = {{'coin', 30000}}, offer = {type = 'give-item', item = 'artillery-targeting-remote', count = 1}}, } -- cheap but one-off diff --git a/maps/pirates/shop/shop.lua b/maps/pirates/shop/shop.lua index 028696d8..1ef7c04d 100644 --- a/maps/pirates/shop/shop.lua +++ b/maps/pirates/shop/shop.lua @@ -316,7 +316,7 @@ function Public.event_on_market_item_purchased(event) local text1 = '[color=1,1,1]+' .. thisPurchaseData.offer_giveitem_count .. '[/color] [item=' .. thisPurchaseData.offer_giveitem_name .. ']' local text2 = '[color=' .. flying_text_color.r .. ',' .. flying_text_color.g .. ',' .. flying_text_color.b .. '](' .. inv.get_item_count(thisPurchaseData.offer_giveitem_name) .. ')[/color]' - Common.flying_text(player.surface, player.position, text1 .. ' [font=count-font]' .. text2 .. '[/font]') + Common.flying_text(player, player.position, text1 .. ' [font=count-font]' .. text2 .. '[/font]') else local decay_param = Balance.barter_decay_parameter() if thisPurchaseData.decay_type == 'fast_decay' then decay_param = Balance.barter_decay_parameter() ^ 3 end @@ -326,7 +326,7 @@ function Public.event_on_market_item_purchased(event) local text1 = '[color=1,1,1]+' .. thisPurchaseData.offer_giveitem_count .. '[/color] [item=' .. thisPurchaseData.offer_giveitem_name .. ']' local text2 = '[color=' .. flying_text_color.r .. ',' .. flying_text_color.g .. ',' .. flying_text_color.b .. '](' .. inv.get_item_count(thisPurchaseData.offer_giveitem_name) .. ')[/color]' - Common.flying_text(player.surface, player.position, text1 .. ' [font=count-font]' .. text2 .. '[/font]') + Common.flying_text(player, player.position, text1 .. ' [font=count-font]' .. text2 .. '[/font]') --update market trades: thisPurchaseData.alloffers[offer_index].offer.count = Math.max(Math.floor(thisPurchaseData.alloffers[offer_index].offer.count * decay_param), 1) diff --git a/maps/pirates/structures/boats/boats.lua b/maps/pirates/structures/boats/boats.lua index d9a1c959..c3d77136 100644 --- a/maps/pirates/structures/boats/boats.lua +++ b/maps/pirates/structures/boats/boats.lua @@ -12,7 +12,7 @@ local Hold = require 'maps.pirates.surfaces.hold' local Cabin = require 'maps.pirates.surfaces.cabin' local Utils = require 'maps.pirates.utils_local' local IslandEnum = require 'maps.pirates.surfaces.islands.island_enum' --- local _inspect = require 'utils.inspect'.inspect +local _inspect = require 'utils.inspect'.inspect -- DEV NOTE: If making boat designs that have rails, make sure the boat is placed at odd co-ordinates before blueprinting. @@ -824,7 +824,7 @@ local function process_entity_on_boat_unteleportable(memory, boat, newsurface, v end -- @TODO: Rocket silo that is prepared to launch the rocket needs to be cloned with clone_entities instead. See: https://forums.factorio.com/viewtopic.php?f=23&t=105073&p=580968 -local function process_entity_on_boat_teleportable(memory, boat, newsurface, newposition, vector, oldsurface_name, newsurface_name, electric_pole_neighbours_matrix, circuit_neighbours_matrix, e) +local function process_entity_on_boat_teleportable(memory, boat, newsurface, newposition, vector, oldsurface_name, newsurface_name, wire_connections_matrix, e) if oldsurface_name == newsurface_name then e.teleport(vector.x, vector.y) e.update_connections() @@ -835,40 +835,26 @@ local function process_entity_on_boat_teleportable(memory, boat, newsurface, new local p = Utils.deepcopy(e.position) local p2 = { x = p.x + vector.x, y = p.y + vector.y } - if e.type == 'electric-pole' then - for k, v in pairs(e.neighbours or {}) do - if k == 'copper' then --red and green cases handled by circuit_neighbours_matrix - if not electric_pole_neighbours_matrix[k] then electric_pole_neighbours_matrix[k] = {} end - for _, v2 in pairs(v) do - if v2 and v2.valid and v2.position then - local v2p = v2.position - if not electric_pole_neighbours_matrix[k][v2p.x] then - electric_pole_neighbours_matrix[k][v2p.x] = {} - end - if not electric_pole_neighbours_matrix[k][v2p.x][v2p.y] then - electric_pole_neighbours_matrix[k][v2p.x][v2p.y] = {} - end - electric_pole_neighbours_matrix[k][v2p.x][v2p.y][#electric_pole_neighbours_matrix[k][v2p.x][v2p.y] + 1] = { name = e.name, pos = p } - end - end - end - end - end + local wire_connnectors = e.get_wire_connectors(false) - for _, v in pairs(e.circuit_connection_definitions or {}) do - local e2 = v.target_entity - local wire = v.wire - local source_circuit_id = v.source_circuit_id - local target_circuit_id = v.target_circuit_id - if e2 and e2.valid and e2.position and (wire == defines.wire_type.red or wire == defines.wire_type.green) then --observed an error "Expected source_wire_id for entities with more than one wire connection" in the .connect_neighbour() function called later, so putting the red/green wire check in to try and catch it - local e2p = e2.position - if not circuit_neighbours_matrix[e2p.x] then - circuit_neighbours_matrix[e2p.x] = {} + for _, v in pairs(wire_connnectors or {}) do + local wire = v.wire_type + local wire_connector_id = v.wire_connector_id + local connections = v.connections + + for _, c in pairs(connections or {}) do + local c2 = c.target + + if c2 and c2.valid and c2.owner and c2.owner.valid and c2.owner.position then + local e2p = c2.owner.position + if not wire_connections_matrix[e2p.x] then + wire_connections_matrix[e2p.x] = {} + end + if not wire_connections_matrix[e2p.x][e2p.y] then + wire_connections_matrix[e2p.x][e2p.y] = {} + end + wire_connections_matrix[e2p.x][e2p.y][#wire_connections_matrix[e2p.x][e2p.y] + 1] = { name = e.name, pos = p, wire = wire, wire_connector_id = wire_connector_id } --flip since we will read these backwards end - if not circuit_neighbours_matrix[e2p.x][e2p.y] then - circuit_neighbours_matrix[e2p.x][e2p.y] = {} - end - circuit_neighbours_matrix[e2p.x][e2p.y][#circuit_neighbours_matrix[e2p.x][e2p.y] + 1] = { name = e.name, pos = p, wire = wire, source_circuit_id = target_circuit_id, target_circuit_id = source_circuit_id } --flip since we will read these backwards end end @@ -884,14 +870,11 @@ local function process_entity_on_boat_teleportable(memory, boat, newsurface, new if e == boat.upstairs_pole then boat.upstairs_pole = ee - if boat.downstairs_poles and boat.downstairs_poles[1] then - -- Remove previous connection, before connecting it with the new clone to avoid sometimes having to remove wire connection because of limit - e.disconnect_neighbour(boat.downstairs_poles[1][1]) + if boat.downstairs_poles and boat.downstairs_poles[1] and boat.downstairs_poles[1][1] then Common.force_connect_poles(boat.upstairs_pole, boat.downstairs_poles[1][1]) end end - local pet_biter_data = memory.pet_biters[e.unit_number] if pet_biter_data then local owner = pet_biter_data.pet_owner @@ -964,44 +947,28 @@ local function process_entity_on_boat_teleportable(memory, boat, newsurface, new end end - if circuit_neighbours_matrix[p.x] and circuit_neighbours_matrix[p.x][p.y] then - for _, v2 in pairs(circuit_neighbours_matrix[p.x][p.y]) do + if wire_connections_matrix[p.x] and wire_connections_matrix[p.x][p.y] then + log(_inspect(wire_connections_matrix[p.x][p.y])) + for _, v2 in pairs(wire_connections_matrix[p.x][p.y]) do + log(_inspect(v2.pos)) local p3 = { x = v2.pos.x + vector.x, y = v2.pos.y + vector.y } local e3s = newsurface.find_entities_filtered { name = v2.name, position = p3, radius = 0.01, } + log(#e3s) if e3s and #e3s > 0 then local e3 = e3s[1] if e3 and e3.valid then - ee.connect_neighbour { wire = v2.wire, target_entity = e3, source_circuit_id = v2.source_circuit_id, target_circuit_id = v2.target_circuit_id } - end - end - end - end + log(_inspect(e3.name)) + local ee_connector = ee.get_wire_connector(v2.wire_connector_id, true) + local e3_connector = e3.get_wire_connector(v2.wire_connector_id, true) - if ee.type == 'electric-pole' then - for k, v in pairs(electric_pole_neighbours_matrix or {}) do - if v[p.x] and v[p.x][p.y] then - for _, v2 in pairs(v[p.x][p.y]) do - local p3 = { x = v2.pos.x + vector.x, y = v2.pos.y + vector.y } - local e3s = newsurface.find_entities_filtered { - name = v2.name, - position = p3, - radius = 0.01, - } - if e3s and #e3s > 0 then - local e3 = e3s[1] - if e3 and e3.valid then - if k == 'copper' then - ee.connect_neighbour(e3) - -- elseif k == 'red' then - -- ee.connect_neighbour{wire = defines.wire_type.red, target_entity = e3} - -- elseif k == 'green' then - -- ee.connect_neighbour{wire = defines.wire_type.green, target_entity = e3} - end - end + if ee_connector and e3_connector and ee_connector.valid and e3_connector.valid then + log('connecting') + local succeeded = ee_connector.connect_to(e3_connector, false) + log(succeeded) end end end @@ -1010,7 +977,7 @@ local function process_entity_on_boat_teleportable(memory, boat, newsurface, new end -local function process_entity_on_boat(memory, boat, newsurface, newposition, vector, players_just_offside, oldsurface_name, newsurface_name, unique_entities_list, electric_pole_neighbours_matrix, circuit_neighbours_matrix, e) +local function process_entity_on_boat(memory, boat, newsurface, newposition, vector, players_just_offside, oldsurface_name, newsurface_name, unique_entities_list, wire_connections_matrix, e) if e and e.valid and (not Utils.contains(unique_entities_list, e)) then unique_entities_list[#unique_entities_list + 1] = e local name = e.name @@ -1032,7 +999,7 @@ local function process_entity_on_boat(memory, boat, newsurface, newposition, vec elseif Utils.contains(CoreData.unteleportable_names, name) or (name == 'entity-ghost' and Utils.contains(CoreData.unteleportable_names, e.ghost_name)) then process_entity_on_boat_unteleportable(memory, boat, newsurface, vector, players_just_offside, oldsurface_name, newsurface_name, e, name) else - process_entity_on_boat_teleportable(memory, boat, newsurface, newposition, vector, oldsurface_name, newsurface_name, electric_pole_neighbours_matrix, circuit_neighbours_matrix, e) + process_entity_on_boat_teleportable(memory, boat, newsurface, newposition, vector, oldsurface_name, newsurface_name, wire_connections_matrix, e) end end end @@ -1152,7 +1119,6 @@ local function teleport_handle_renderings(boat, oldsurface_name, newsurface_name boat.rendering_crewname_text.destroy() boat.rendering_crewname_text = rendering.draw_text { text = memory.name, - -- render_layer = '125', --does nothing surface = newsurface, target = p, color = CoreData.colors.renderingtext_yellow, @@ -1425,13 +1391,12 @@ function Public.teleport_boat(boat, newsurface_name, newposition, new_floor_tile - local electric_pole_neighbours_matrix = {} - local circuit_neighbours_matrix = {} + local wire_connections_matrix = {} -- local underground_belt_neighbours_matrix = {} for i = 1, #entities_on_boat do local e = entities_on_boat[i] - process_entity_on_boat(memory, boat, newsurface, newposition, vector, players_just_offside, oldsurface_name, newsurface_name, unique_entities_list, electric_pole_neighbours_matrix, circuit_neighbours_matrix, e) + process_entity_on_boat(memory, boat, newsurface, newposition, vector, players_just_offside, oldsurface_name, newsurface_name, unique_entities_list, wire_connections_matrix, e) end @@ -1485,7 +1450,7 @@ function Public.clear_fluid_from_ship_tanks(idx) end end --- Players can brick power by removing wire connections themselves (even between surfaces) with "shift + LMB" when clicking on pole +-- At least before Factorio 2.0, players can brick power by removing wire connections themselves (even between surfaces) with "shift + LMB" when clicking on pole function Public.force_reconnect_boat_poles() local memory = Memory.get_crew_memory() local boat = memory.boat @@ -1493,17 +1458,11 @@ function Public.force_reconnect_boat_poles() if boat.downstairs_poles then if boat.downstairs_poles[1] then Common.force_connect_poles(boat.upstairs_pole, boat.downstairs_poles[1][1]) - - -- Optional connection - boat.downstairs_poles[1][1].connect_neighbour(boat.downstairs_poles[1][2]) end for i = 2, memory.hold_surface_count do if boat.downstairs_poles[i] then Common.force_connect_poles(boat.downstairs_poles[i][1], boat.downstairs_poles[i - 1][2]) - - -- Optional connection - boat.downstairs_poles[i][1].connect_neighbour(boat.downstairs_poles[i][2]) end end end diff --git a/maps/pirates/structures/quest_structures/quest_structures.lua b/maps/pirates/structures/quest_structures/quest_structures.lua index 49fb6b12..b6b1e80b 100644 --- a/maps/pirates/structures/quest_structures/quest_structures.lua +++ b/maps/pirates/structures/quest_structures/quest_structures.lua @@ -72,13 +72,15 @@ function Public.initialise_cached_quest_structure(position, quest_structure_type scale = 1.5, font = 'default-game', alignment = 'right', + text = '', } local rendering2 = rendering.draw_sprite { sprite = 'item/' .. entry_price.name, surface = surface, target = { x = position.x + 3.5, y = position.y - 0.65 }, x_scale = 1.5, - y_scale = 1.5 + y_scale = 1.5, + text = '', } local rendering3 = rendering.draw_text { surface = surface, @@ -140,6 +142,7 @@ function Public.initialise_cached_quest_structure(position, quest_structure_type scale = 1.5, font = 'default-game', alignment = 'right', + text = '', } local rendering2 = rendering.draw_sprite { sprite = 'item/' .. entry_price.name, diff --git a/maps/pirates/surfaces/cabin.lua b/maps/pirates/surfaces/cabin.lua index aabfc857..225be1fd 100644 --- a/maps/pirates/surfaces/cabin.lua +++ b/maps/pirates/surfaces/cabin.lua @@ -300,9 +300,8 @@ function Public.create_cabin_surface() { color = { 60, 255, 124 }, scale = 1.6, - render_layer = 'light-effect', target = e, - target_offset = { 0, -2.7 }, + target_offset = { 0, -6 }, surface = e.surface, alignment = 'center', text = "Captain's Market" diff --git a/maps/pirates/surfaces/islands/islands.lua b/maps/pirates/surfaces/islands/islands.lua index 68cc4a93..a46eebfa 100644 --- a/maps/pirates/surfaces/islands/islands.lua +++ b/maps/pirates/surfaces/islands/islands.lua @@ -118,7 +118,7 @@ function Public.spawn_ghosts(destination, points_to_avoid) ghost.ghostobject_rendering = rendering.draw_sprite { surface = surface, target = p, - sprite = 'utility/ghost_time_to_live_modifier_icon', + sprite = 'utility/create_ghost_on_entity_death_modifier_icon', render_layer = '125', x_scale = 1, y_scale = 1, @@ -292,7 +292,7 @@ function Public.spawn_silo_setup(points_to_avoid) silo.rotatable = false silo.operable = false if i == 1 then - silo.auto_launch = true + -- silo.auto_launch = true Common.new_healthbar(true, silo, Balance.silo_max_hp, nil, Balance.silo_max_hp, 0.6, -2, destination.dynamic_data) else silo.destructible = false