Most NS peripherals use hardcoded link and face numbers to control lighting effects. This means that using normal methods to link objects together will result in colouring malfunctions. The following procedure is safer and less likely to cause problems (although you should always make a backup first.)
Three principles govern the ordering of link number assignments:
I. The root prim of the last object selected is set to be link number 1:
[A, B] + [C] = [C, A, B]
II. Other selected objects are inserted immediately after the root prim, so that linking two objects together results in interleaving:
[A, B] + [C, D] = [C, A, B, D]
III. When objects are removed from a link set, they are always assigned link number 0 (unlinked). Other link numbers are decremented, so:
[A, B, C, D, E] – [A, B, D] = [C, E] + [A] + [B] + [D]
With the above in mind, our goal is to find a series of instructions to append one list to another. This is accomplished by the following:
1. We start with the following two linksets:
[A, B, C, D, E, F]
[G, H, I, J]
2. Remove the first link from the destination set, i.e. the one that should be the final root prim. If you're adding to a main controller, this will be the root prim of the controller itself. By rule III, we now have:
[A] + [B, C, D, E, F]
[G, H, I, J]
3. Link the new linkset to the root prim. Remember rule I, that you must select [A] last. This will create:
[A, G, H, I, J]
[B, C, D, E, F]
4. Now insert the remainder of the original destination linkset. Because of rule II, this results in:
[A, B, C, D, E, F, G, H, I, J]
Done! Note that some SL viewers will incorrectly display the link numbers (inserting the new prims at the end of the last-selected linkset) until you re-rez them or relog. This has been witnessed extensively in Firestorm. The server obeys the above rules, however, regardless of what your UI tells you.
How link numbers work
Three principles govern the ordering of link number assignments:
I. The root prim of the last object selected is set to be link number 1:
[A, B] + [C] = [C, A, B]
II. Other selected objects are inserted immediately after the root prim, so that linking two objects together results in interleaving:
[A, B] + [C, D] = [C, A, B, D]
III. When objects are removed from a link set, they are always assigned link number 0 (unlinked). Other link numbers are decremented, so:
[A, B, C, D, E] – [A, B, D] = [C, E] + [A] + [B] + [D]
Appending linksets
With the above in mind, our goal is to find a series of instructions to append one list to another. This is accomplished by the following:
1. We start with the following two linksets:
[A, B, C, D, E, F]
[G, H, I, J]
2. Remove the first link from the destination set, i.e. the one that should be the final root prim. If you're adding to a main controller, this will be the root prim of the controller itself. By rule III, we now have:
[A] + [B, C, D, E, F]
[G, H, I, J]
3. Link the new linkset to the root prim. Remember rule I, that you must select [A] last. This will create:
[A, G, H, I, J]
[B, C, D, E, F]
4. Now insert the remainder of the original destination linkset. Because of rule II, this results in:
[A, B, C, D, E, F, G, H, I, J]
Done! Note that some SL viewers will incorrectly display the link numbers (inserting the new prims at the end of the last-selected linkset) until you re-rez them or relog. This has been witnessed extensively in Firestorm. The server obeys the above rules, however, regardless of what your UI tells you.