When you disable a reflection probe in a linkset, with a script, then re-enable it with proper mirror flags, even though the prim properties itself (in the editor) will say 'Mirror everything', the reflection probe effectively just does 'Static' only. And it will not revert to 'Mirror everything' until you manually toggle between, say, 'static' and 'mirror everything.' Best illustrated by the actual script, that disables reflection probe when avatar is above 27.7m, and re-enables it again afterwards (where re-enaabling via script does not have the intended effect): float HEIGHT = 27.5; float CHECK_INTERVAL = 1.0; string KEY_SAVED; string KEY_AMBIANCE; string KEY_CLIP; string KEY_FLAGS; float probeAmbiance; float probeClipDistance; integer probeFlags; integer currentlyDisabled; makeKeys() { string prefix = "probe." + (string)llGetKey() + "."; KEY_SAVED = prefix + "saved"; KEY_AMBIANCE = prefix + "ambiance"; KEY_CLIP = prefix + "clip"; KEY_FLAGS = prefix + "flags"; } saveOriginalSettings() { list settings = llGetPrimitiveParams([ PRIM_REFLECTION_PROBE ]); probeAmbiance = llList2Float(settings, 1); probeClipDistance = llList2Float(settings, 2); probeFlags = llList2Integer(settings, 3); llLinksetDataWrite( KEY_AMBIANCE, (string)probeAmbiance ); llLinksetDataWrite( KEY_CLIP, (string)probeClipDistance ); llLinksetDataWrite( KEY_FLAGS, (string)probeFlags ); llLinksetDataWrite(KEY_SAVED, "1"); } loadOriginalSettings() { probeAmbiance = (float)llLinksetDataRead(KEY_AMBIANCE); probeClipDistance = (float)llLinksetDataRead(KEY_CLIP); probeFlags = (integer)llLinksetDataRead(KEY_FLAGS); } setProbe(integer enabled) { llSetPrimitiveParams([ PRIM_REFLECTION_PROBE, enabled, probeAmbiance, probeClipDistance, probeFlags ]); } default { state_entry() { makeKeys(); if (llLinksetDataRead(KEY_SAVED) == "") saveOriginalSettings(); else loadOriginalSettings(); list currentSettings = llGetPrimitiveParams([ PRIM_REFLECTION_PROBE ]); currentlyDisabled = !llList2Integer(currentSettings, 0); llSetTimerEvent(CHECK_INTERVAL); } timer() { list ownerData = llGetObjectDetails( llGetOwner(), [OBJECT_POS] ); // The owner is not currently in this region. if (ownerData == []) return; vector ownerPosition = llList2Vector(ownerData, 0); if (ownerPosition.z > HEIGHT) { if (!currentlyDisabled) { setProbe(FALSE); currentlyDisabled = TRUE; } } else { if (currentlyDisabled) { setProbe(TRUE); currentlyDisabled = FALSE; } } } }