Hello all, I created a little script which I am going to use in my upcoming mission which allows the player to use an IR Grenade as an EMP (not really the most ideal use of that acronym but nevertheless) to destroy any active lights or engines within a certain radius. Currently I am adding an Event Handler to the player to check if the IR grenade is thrown and to get it's position once it has been thrown. player addEventHandler ["Fired", { if (_this select 5 == "B_IR_Grenade") then { _this spawn { _bullet = _this select 6; _newpos = getPosATL _bullet; while {(_newpos select 2) > .1} do { _newpos = getPos _bullet; sleep 0.1; }; [_bullet] execVM "HG_CutLights.sqf"; }; }; }]; This works most of the time however it does not work all of the time such as if the grenade gets stuck on a window frame or on a fence/wall. Therefore, I was wondering if there is a better way for me to check whether the grenade has stopped moving? I thought about using isNull or checking the alive status however I have not had any luck when I tried those, although it is quite possible that I used those commands incorrectly. For those who want to try this script out, "HG_CutLights.sqf" contains: _AOE = _this select 0; _Lights = nearestObjects [_AOE , ["Lamps_Base_F", "PowerLines_base_F","PowerLines_Small_base_F","PowerLines_Wires_base_F","Land_PowerPoleWooden_F"], 50]; _DamageOFF = 0.95; _DamageON = 0.00; _Vehicles = nearestObjects [(getpos _AOE), ["Car"], 50]; _CountLights = count _Lights; (_Lights select 0) say3D "electricity_loop"; sleep (floor(random 3) +2); for "_i" from 0 to _CountLights do { if (getDammage (_Lights select _i) < 0.90) then { (_Lights select _i) setDamage _DamageOFF; sleep 0.1; (_Lights select _i) setDamage _DamageON; sleep 0.1; (_Lights select _i) setDamage _DamageOFF; sleep 0.1; }; }; { if (isEngineOn _x) then {_x setHit ["motor", 1]} } foreach _Vehicles; Again this code might not be the most efficient because I am new to scripting, so any feedback would be appreciated!:p Some eye candy for you ;):