Not sure why you're using sunOrMoon, but using a loop with 0.5s sleep for every single unit won't really yield good results, since it can take at most 1 second to hide the unit. Using an eachFrame EH for something as timing critical as this is basically a no brainer. Also using while true loops is bad practice, even when used as a quick example only.     To make units invisible without using thermals one could use this: this setVariable ["GOM_fnc_spoopy",true]; in the units init field.   Then inside initPlayerLocal.sqf of the mission root folder put this: addMissionEventHandler ["EachFrame",{ _spoopy = (allUnits + vehicles) select {_x getVariable ["GOM_fnc_spoopy",false]}; if (currentVisionMode player isEqualTo 2) exitWith { {_x hideObject false} forEach _spoopy; }; {_x hideObject true} forEach _spoopy; }]; This way you'll get the desired effect for each player individually.   Cheers
    • Thanks