// SPDX-License-Identifier: MIT // Copyright (c) 2026 Incoprea // Linked operation acknowledgment pulse // Not compiled or tested in-world // Setup: Root named job_controller sends code 8053 and success or failure. Owner-touch arms/disarms this particle-free child. // Stop / restore: Owner-touch or choose Off as described; let finite pulses expire. Clear particles before removal. These examples cannot recover a pre-existing particle system. // Notes: Use an otherwise particle-free prim. Particle systems persist independently of scripts. This is an indicator only; it does not know whether a job actually succeeded. Rate-limited to one pulse per second. // License: see LICENSE in this distribution. // Original Incoprea. MIT. Not compiled or tested in-world. integer armed; float next; default { touch_start(integer n) { if(llDetectedKey(0)!=llGetOwner())return; armed=!armed; llParticleSystem([]); llSetTimerEvent(0.0); } link_message(integer sender,integer code,string s,key data) { if(!armed||sender!=1||llGetLinkName(1)!="job_controller"||code!=8053||llGetTime(); else if(s=="failure")color=<1.0,0.3,0.2>; else return; next=llGetTime()+1.0; llParticleSystem([PSYS_PART_FLAGS,PSYS_PART_EMISSIVE_MASK|PSYS_PART_INTERP_COLOR_MASK,PSYS_SRC_PATTERN,PSYS_SRC_PATTERN_EXPLODE,PSYS_PART_START_COLOR,color,PSYS_PART_START_ALPHA,0.8,PSYS_PART_END_ALPHA,0.0,PSYS_PART_START_SCALE,<0.06,0.06,0.0>,PSYS_PART_MAX_AGE,0.7,PSYS_SRC_BURST_PART_COUNT,3,PSYS_SRC_BURST_SPEED_MIN,0.1,PSYS_SRC_BURST_SPEED_MAX,0.3,PSYS_SRC_MAX_AGE,0.1]); llSetTimerEvent(1.0); } timer() { llParticleSystem([]); llSetTimerEvent(0.0); } changed(integer change) { if(change&CHANGED_LINK) { armed=FALSE; llParticleSystem([]); llSetTimerEvent(0.0); } } }