In Companion 8.5, we introduced script persistence, a countermeasure to parcels with the "no scripts" flag set. With persistence enabled, the controller uses an LSL feature called llTakeControls() to ensure that most system functions are able to continue normally. Crucially, this prevents units from getting stranded due to FTL cooldowns and allows them to continue to speak. However, it comes with several drawbacks:
- To work, script persistence must be already running before the unit teleports. You may choose to disable and enable it manually with the persist system command (e.g. @persist off and @persist on) so that it is only active when you know in advance you are entering somewhere hazardous to the controller's functioning. (Note that you must reattach the main controller after toggling script persistence for the turning behavior to change.)
- While active, it causes the unit to experience "vehicle"-style turning with no turning animations and to always back up when the back arrow key is pressed, rather than walking toward its overview camera. llTakeControls() was designed for vehicles, and other attachments that use it in third-person mode (such as melee weapons) will cause the same behavior. The CSU AO can play turning animations despite this, as it uses its own llTakeControls() handler to monitor the unit's turning state.
- Weapons may not function correctly while script persistence is enabled. In particular, NS weapons will only fire after holstering and re-drawing them while in first-person mode. Weapons also use llTakeControls(), and the permissions required for scripts to do so are prone to overriding each other.
- Script persistence does not protect user memory (which contains vox filters and the RLV relay, _restraint), however, so there are some circumstances in which it is possible to be muted or subject to other restrictions that cannot be removed. Chat filters can still be disabled with the system command @vox clear.