We used ScriptableObjects. it stores boolean datas to check if the world/player error is turned on. Then we have our scripts read this ScriptableObject to enable the necessary logics.
For example my PlayerMovement.cs checks if the Input Lag is enabled by reading the ScriptableObject. If it's enabled, it will apply the logic to basically add delays to my movement inputs.
Same goes for achievements, we have a ScriptableObject that stores boolean data for all achievements. Then we have a manager script to modify those data if the player completed the required task.