diff --git a/cybersyn/changelog.txt b/cybersyn/changelog.txt index d26cafe..5c8f108 100644 --- a/cybersyn/changelog.txt +++ b/cybersyn/changelog.txt @@ -1,4 +1,9 @@ --------------------------------------------------------------------------------------------------- +Version: 1.1.7 +Date: 2022-12-17 + Changes: + - Fixed false positives in copy-paste by blueprint detection logic +--------------------------------------------------------------------------------------------------- Version: 1.1.6 Date: 2022-12-16 Changes: diff --git a/cybersyn/info.json b/cybersyn/info.json index 91518b3..ac57f6b 100644 --- a/cybersyn/info.json +++ b/cybersyn/info.json @@ -1,6 +1,6 @@ { "name": "cybersyn", - "version": "1.1.6", + "version": "1.1.7", "title": "Project Cybersyn", "author": "Mami", "factorio_version": "1.1", diff --git a/cybersyn/scripts/main.lua b/cybersyn/scripts/main.lua index 116f7f3..79261fb 100644 --- a/cybersyn/scripts/main.lua +++ b/cybersyn/scripts/main.lua @@ -398,24 +398,34 @@ function combinator_update(map_data, comb, reset_display) local params = control.parameters local old_params = map_data.to_comb_params[unit_number] local has_changed = false + local station + local id - local stop = map_data.to_stop[comb.unit_number] - if reset_display and stop then - id = stop.unit_number - station = map_data.stations[id] - if station then - --make sure only MODE_PRIMARY_IO gets stored on map_data.to_comb_params - if station.display_state >= 2 then - params.operation = MODE_PRIMARY_IO_ACTIVE - elseif station.display_state == 1 then - params.operation = MODE_PRIMARY_IO_FAILED_REQUEST - else - params.operation = MODE_PRIMARY_IO + + if params.operation == MODE_PRIMARY_IO_ACTIVE or params.operation == MODE_PRIMARY_IO_FAILED_REQUEST or params.operation == MODE_PRIMARY_IO then + --the follow is only present to fix combinators that have been copy-pasted by blueprint with the wrong operation + local stop = map_data.to_stop[comb.unit_number--[[@as uint]]] + local should_reset = reset_display + if stop then + id = stop.unit_number--[[@as uint]] + station = map_data.stations[id] + if should_reset and station and station.entity_comb1 == comb then + --make sure only MODE_PRIMARY_IO gets stored on map_data.to_comb_params + if station.display_state >= 2 then + params.operation = MODE_PRIMARY_IO_ACTIVE + elseif station.display_state == 1 then + params.operation = MODE_PRIMARY_IO_FAILED_REQUEST + else + params.operation = MODE_PRIMARY_IO + end + control.parameters = params + should_reset = false end + end + if should_reset then + params.operation = MODE_PRIMARY_IO control.parameters = params end - end - if params.operation == MODE_PRIMARY_IO_ACTIVE or params.operation == MODE_PRIMARY_IO_FAILED_REQUEST then params.operation = MODE_PRIMARY_IO end if params.operation ~= old_params.operation then