Important: There are also important scripts in the Stage that are used to initialize the inheritance system. clone identifier -> index: Converts a clone identifier number to a clone index. The clone index is where the clone data is stored in the y position and parent ID lists, and may change while the ID remains the same. clone index -> y position: Stores the y position for each clone index (not ID!), so that its children can inherit it. clone index -> parent identifier: Stores the parent ID (not index!) of each clone index (not ID!).
In this work-in-progress demonstration, the sprite on the left is the original, the sprite in the middle is the clone, and the sprite on the right is the clone of the clone. The first clone inherits the Y position of the original sprite for 5 seconds, until it wants a change of pace and wants to move of its own accord. The second clone inherits the Y position of the first clone, so it remains in sync with them instead of the original sprite. Each sprite, whether a clone or not, has a clone identifier and clone index. The clone identifier remains the same, but the clone index may change as clones are deleted, so the sprite should always get the clone index from the "clone identifier -> index" list. Bugs to iron out: What to do with clones whose parents are deleted? Snap! seems to change the parent of the parentless clone to its former grandparent.