The problem is that when the player opens the pip boy, it has to be reequipped. If it is not reequipped, you will just take a look at your arm. However, when it is just reequipped, sometimes the armor arm will shadow the pip boy, so that parts of the screen is not visible. To stop this, you have to unequip the armor.
Here's the code, edited to show the part that handles entering the Pipboy.
1) During gamemode, the "enter Pipboy" key is pressed, pipKeyState goes to 1, phase 0 gets executed (pipboy gets equipped), phase set to 2 (no phase 1 apparently)
2) Then in menumode (while you're in the pipboy) phase gets set to 3, and a timer gets initialized
3) Back in gamemode again, after exiting the pipboy and a brief delay, phase 3 happens (armor gets removed and pipboy gets unequipped), phase set to 4
4) Phase 4, armor gets reequipped, phase reset to 0
So armor doesn't get removed until after you've exited the pipboy. The armor doesn't interfere with viewing the Readius version of the Pipboy because its a PDA that's held in the player's hand - unless you were wearing a glove with freakishly large thumbs, nothing would be obscured. The only thing I can think of is that sometimes the Pipboy maybe doesn't disappear properly when unequipped, and they have to force a reevaluation of the equipped gear by removing the armor. But in my play testing, that wasn't necessary, everything worked/looked fine.
Spoiler begin Gamemode......... ;Normal functionality elseif (UninstallFlag == 0 && player.getItemCount Pipboy != 0 && getPlayerControlsDisabled 0 1 == 0) if (PipSpamTimer > 0) set PipSpamTimer to PipSpamTimer - getSecondsPassed endif ;Pip-Boy callup hook if (PipKeyState == 0 && PipSpamTimer <= 0) if (isControlPressed 14 == 1) set pipKeyState to 1 endif elseif (PipKeyState == 1) if (Phase == 0) set PipKeyState to 1 player.EquipItem Pipboy 1 1 resetPipboyManager set Phase to 2 elseif (Phase == 3) if (PipVanishTimer > 0) set PipVanishTimer to PipVanishTimer - getSecondsPassed else player.unEquipItem Pipboy 1 1 set EquippedItem to player.getEquippedObject 2 if (EquippedItem != 0) set EquippedCondition to (player.getEquippedCurrentHealth 2 / getHealth EquippedItem) player.removeItem EquippedItem 1 1 set Phase to 4 else set Phase to 0 set PipKeyState to 0 endif endif elseif (Phase == 4) player.addItemHealthPercent EquippedItem 1 EquippedCondition 1 player.equipItem EquippedItem 0 1 set Phase to 0 set PipKeyState to 0 endif endif ;If the player loses the Pip-Boy, remove the light, if it had been on. elseif (UninstallFlag == 0 && player.getItemCount Pipboy == 0 && player.hasPerk BIDEpipLightPerk == 1) player.removePerk BIDEpipLightPerk endifendendbegin Menumode if (Phase == 2 && Menumode == 1) set Phase to 3 set PipSpamTimer to 0.3 set PipVanishTimer to 0.35 endifend