diff --git a/evolved.lua b/evolved.lua index 11639a0..0eb07d1 100644 --- a/evolved.lua +++ b/evolved.lua @@ -1796,23 +1796,31 @@ local function __chunk_required_fragments(chunk, req_fragment_set, req_fragment_ fragment_stack[fragment_stack_size] = nil fragment_stack_size = fragment_stack_size - 1 - local fragment_requires = __sorted_requires[stack_fragment] - local fragment_require_list = fragment_requires and fragment_requires.__item_list - local fragment_require_count = fragment_requires and fragment_requires.__item_count or 0 + if stack_fragment < 0 then + -- this is a pair fragment, just skip it + else + local fragment_requires = __sorted_requires[stack_fragment] + local fragment_require_list = fragment_requires and fragment_requires.__item_list + local fragment_require_count = fragment_requires and fragment_requires.__item_count or 0 - for fragment_require_index = 1, fragment_require_count do - ---@cast fragment_require_list -? - local required_fragment = fragment_require_list[fragment_require_index] + for fragment_require_index = 1, fragment_require_count do + ---@cast fragment_require_list -? + local required_fragment = fragment_require_list[fragment_require_index] - if req_fragment_set[required_fragment] then - -- this fragment has already been gathered - else - req_fragment_count = req_fragment_count + 1 - req_fragment_set[required_fragment] = req_fragment_count - req_fragment_list[req_fragment_count] = required_fragment + if req_fragment_set[required_fragment] then + -- this fragment has already been gathered + else + req_fragment_count = req_fragment_count + 1 + req_fragment_set[required_fragment] = req_fragment_count + req_fragment_list[req_fragment_count] = required_fragment - fragment_stack_size = fragment_stack_size + 1 - fragment_stack[fragment_stack_size] = required_fragment + if required_fragment < 0 then + -- this is a pair fragment, just skip it + else + fragment_stack_size = fragment_stack_size + 1 + fragment_stack[fragment_stack_size] = required_fragment + end + end end end end @@ -1843,23 +1851,31 @@ local function __fragment_required_fragments(fragment, req_fragment_set, req_fra fragment_stack[fragment_stack_size] = nil fragment_stack_size = fragment_stack_size - 1 - local fragment_requires = __sorted_requires[stack_fragment] - local fragment_require_list = fragment_requires and fragment_requires.__item_list - local fragment_require_count = fragment_requires and fragment_requires.__item_count or 0 + if stack_fragment < 0 then + -- this is a pair fragment, just skip it + else + local fragment_requires = __sorted_requires[stack_fragment] + local fragment_require_list = fragment_requires and fragment_requires.__item_list + local fragment_require_count = fragment_requires and fragment_requires.__item_count or 0 - for fragment_require_index = 1, fragment_require_count do - ---@cast fragment_require_list -? - local required_fragment = fragment_require_list[fragment_require_index] + for fragment_require_index = 1, fragment_require_count do + ---@cast fragment_require_list -? + local required_fragment = fragment_require_list[fragment_require_index] - if req_fragment_set[required_fragment] then - -- this fragment has already been gathered - else - req_fragment_count = req_fragment_count + 1 - req_fragment_set[required_fragment] = req_fragment_count - req_fragment_list[req_fragment_count] = required_fragment + if req_fragment_set[required_fragment] then + -- this fragment has already been gathered + else + req_fragment_count = req_fragment_count + 1 + req_fragment_set[required_fragment] = req_fragment_count + req_fragment_list[req_fragment_count] = required_fragment - fragment_stack_size = fragment_stack_size + 1 - fragment_stack[fragment_stack_size] = required_fragment + if required_fragment < 0 then + -- this is a pair fragment, just skip it + else + fragment_stack_size = fragment_stack_size + 1 + fragment_stack[fragment_stack_size] = required_fragment + end + end end end end