Möglich ist fast alles.
sich das Rad samt den daran befindlichen Speichen und Griffen drehen,
Diese Prims sollten dann ein eigenes Objekt sein, nicht verlinkt mit dem Rest des Brunnens und in den Root-Prom (Achse) wird das Rotationsskript mit llTargetOmega eingebaut.
Da der Rest damit nicht verlinkt ist, müsste dieses Skript dem Seil und Eimer sagen (llSay), dass es los geht. Oder zurück.
dabei der Eimer am Seil sich nach unten bewegen,
das Seil an dem Eimer sich entsprechend verlängern,
Das Seil kannst du länger machen mit llSetPrimitiveParams, der Eimer kann seine Position verändern mit llSetPos. Die neuen Parameter für Seil und Eimer könntest du in einer Schlefe ausrechnen und in angemessener Schrittzahl wiederholen, damit die Bewegung flüssig aussieht, wobei du die Verzögerung von 0,2 Sekunden bei llSetPos berücksichtigen solltest.
und die Seilrolle auf der Welle entprechend kürzer werden
Kürzer oder dünner?
OK, die Eigenschaften eines Objektes kannst du mit llSetPrimitiveParams verändern, angepasst an die andere Schleife.
und das ganze nach einer bestimmten Tiefe von selbst wieder retour gehen.
Das kann ein Timer-Event machen, zeitlich abgestimmt auf die Bewegung, oder der Eimer sagt dem Rest, dass er unten ist und alles geht wieder rückwärts.
Wenn das Seil ein Zylinder ist und keine Box, dann wirst du den Türen-Trick mit dem halben Wegschneiden nicht nutzen können, also musst du bei der Verlängerung/Verkürzung berücksichtigen, dass sich der Mittelpunkt des Zylinders um die halbe Längenveränderung verlagert und gleichzeitig gesetzt werden muss.
Ansonsten sehe ich im Augenblick nur die Möglichkeit, den Brunnen aus mehreren Objekten zu bauen, weil einige sich drehen sollen und die wahrscheinlich nicht alle achsensymmetrisch sind (Kurbelrad, Speichen, ...)
Du wirst also mehrere Skripts benötigen, die auch ein wenig miteinander kommunizieren.