Scriptname DetectNearbyDoors extends activemagiceffect FormList Property PrkcDoorList Auto Const Mandatory STATIC Property PDoorMarker Auto Const Mandatory Light Property PDoorLight Auto Const Mandatory ObjectReference[] saveMarkers Event OnEffectStart(Actor akTarget, Actor akCaster) ; Debug.MessageBox("Script start on [" + akCaster + "]") ObjectReference[] doorsArray = akCaster.FindAllReferencesOfType(PrkcDoorList , 10000.0) ; Debug.MessageBox("PrkdDoorList size = [" + PrkcDoorList.GetSize() + "]") saveMarkers = new ObjectReference[doorsArray.Length * 2] float fActorX = akCaster.GetPositionX() float fActorY = akCaster.GetPositionY() float fActorZ = akCaster.GetPositionZ() Int iSaveIndex = 0; Int iIndex3 = doorsArray.Length While iIndex3 >= 0 iIndex3 -= 1 ObjectReference object = doorsArray[iIndex3] float fh = object.GetHeight() / 2.0 float fscale = object.GetScale() ObjectReference objGlow = object.PlaceAtMe(PDoorLight, 1) float fx = objGlow.GetPositionX() + (25.0 * Math.Cos(-90.0 + objGlow.GetAngleZ())) float fy = objGlow.GetPositionY() + (25.0 * Math.Sin(-90.0 + objGlow.GetAngleZ())) float fz = objGlow.GetPositionZ() + fh objGlow.SetPosition(fx, fy, fz) objGlow.SetScale(6.0 * objGlow.GetScale()) ObjectReference objMarker = object.PlaceAtMe(PDoorMarker , 1) float fxm = objMarker.GetPositionX() + (25.0 * Math.Cos(-90.0 + objMarker.GetAngleZ())) float fym = objMarker.GetPositionY() + (25.0 * Math.Sin(-90.0 + objMarker.GetAngleZ())) float fzm = objMarker.GetPositionZ() + fh objMarker.SetPosition(fxm, fym, fzm) objMarker.SetScale(2.0 * objMarker.GetScale()) saveMarkers[iSaveIndex] = objGlow iSaveIndex += 1 saveMarkers[iSaveIndex] = objMarker iSaveIndex += 1 EndWhile endEvent Event OnEffectFinish(Actor akTarget, Actor akCaster) ; Debug.MessageBox("End GlowingMentats Effect") Int iIndex = saveMarkers.Length While iIndex >= 0 ObjectReference object = saveMarkers[iIndex] object.Delete() iIndex -= 1 EndWhile endEvent