--- /dev/null
+//
+// sculpty morpher
+//needs header.
+
+integer position; // which texture are we on?
+
+change_sculpture()
+{
+ integer textures_available = llGetInventoryNumber(INVENTORY_TEXTURE);
+ if (textures_available == 0) {
+ // nothing to morph into.
+ return;
+ }
+ position++;
+ if (position >= textures_available) {
+ // we rolled over, so go back.
+ position = 0;
+ }
+ string texture_name = llGetInventoryName(INVENTORY_TEXTURE, position);
+ llSetPrimitiveParams([PRIM_TYPE, PRIM_TYPE_SCULPT, texture_name, PRIM_SCULPT_TYPE_SPHERE]);
+}
+
+default {
+ state_entry() { if (llSubStringIndex(llGetObjectName(), "huffotronic") < 0) state real_default; }
+ on_rez(integer parm) { state rerun; }
+}
+state rerun { state_entry() { state default; } }
+
+state real_default
+{
+ state_entry()
+ {
+ llSetTimerEvent(4.0);
+ position = 0;
+ }
+
+ timer() {
+ change_sculpture();
+ }
+
+ changed(integer type) {
+ if (type & CHANGED_INVENTORY) {
+ change_sculpture();
+ }
+ }
+}