A module for FoundryVTT that adds perception vs stealth testing to Foundry's visibility tests. It filters out any objects with the Hidden condition if the viewing Perception value fails to beat the object's Stealth value.
Rolling Stealth checks applies the Hidden effect
Rolling a Stealth skill check will apply the Hidden effect to the actor and record the result of the check in that effect for later comparisons, replacing the stored result if the Hidden effect is already present. Stealthy's default Hidden effect can be overriden by adding a custom Hidden effect in either Convenient Effects or CUB.
Rolling a Perception check will add a Spot effect to the actor which records the result of that perception check (the passive value for Perception is used if this effect isn't present on the actor).
A toggle named 'Active Spot' is available under token controls to suspend adding of the Spot condition as the GM sees fit. Toggling it off will also clear out all Spot effects.
Once the Hidden or Spot effects are applied, GMs will see token buttons with an input box on the bottom which shows the rolled values, or the passive values if the effect was added directly without rolling. Perception is on the left, Stealth is on the right. Changing the value in this input box will alter the stored results for future visibility tests while that effect remains.
An invisible actor that also has the 'Hidden' effect will check Perception vs Stealth before showing up in the 'See Invisibility' vision mode.
The GM has the option for allowing Hidden tokens to be seen by other tokens of the same disposition.
Automatic Hidden Door detection
Doors can have a detection range that will hide the door control until the viewing token is within the given range. Doors can also have an optional stealth value; tokens with a sufficiently high perception effect will be able to see a hidden door if it beats that door's stealth.
THIS DOES NOT APPLY TO FOUNDRY'S SECRET DOORS!!! I tried and failed to to get the secret doors to play nice - it turns out to be way easier to conditionally hide a regular door from players than to conditionally show a secret door to them.
Stealthy currently works in the following systems (specific notes about a given system are in the Wiki):
Handling Hidden removal
Stealthy will not automatically remove the Hidden effect - the dnd5e Skulker feat demonstrates why removing Hidden gets complicated without heavier automation support provided by modules like the excellent Midi-QOL which handles this for my games. I suggest Visual Active Effects as an easier way to manually remove it, especially for low automation level games.