{
  "blur": {
    "name": "PF2E_VISIONER.RULE_ELEMENTS.EFFECT.EXAMPLES.BLUR.NAME",
    "description": "PF2E_VISIONER.RULE_ELEMENTS.EFFECT.EXAMPLES.BLUR.DESCRIPTION",
    "rules": [
      {
        "key": "PF2eVisionerEffect",
        "operations": [
          {
            "type": "overrideVisibility",
            "state": "concealed",
            "direction": "from",
            "observers": "all",
            "source": "blur-spell"
          },
          {
            "type": "modifyActionQualification",
            "qualifications": {
              "hide": {
                "qualifiesOnConcealment": false
              },
              "sneak": {
                "end": {
                  "qualifiesOnConcealment": false
                }
              }
            },
            "source": "blur-spell"
          }
        ],
        "priority": 100
      }
    ]
  },
  "faerieFire": {
    "name": "PF2E_VISIONER.RULE_ELEMENTS.EFFECT.EXAMPLES.FAERIE_FIRE.NAME",
    "description": "PF2E_VISIONER.RULE_ELEMENTS.EFFECT.EXAMPLES.FAERIE_FIRE.DESCRIPTION",
    "rules": [
      {
        "key": "PF2eVisionerEffect",
        "operations": [
          {
            "type": "conditionalState",
            "condition": "invisible",
            "thenState": "concealed",
            "stateType": "visibility",
            "direction": "from",
            "observers": "all",
            "source": "faerie-fire"
          },
          {
            "type": "overrideVisibility",
            "fromStates": ["concealed"],
            "toState": "observed",
            "direction": "from",
            "observers": "all",
            "source": "faerie-fire"
          }
        ],
        "priority": 110
      }
    ]
  },
  "revealingLight": {
    "name": "PF2E_VISIONER.RULE_ELEMENTS.EFFECT.EXAMPLES.REVEALING_LIGHT.NAME",
    "description": "PF2E_VISIONER.RULE_ELEMENTS.EFFECT.EXAMPLES.REVEALING_LIGHT.DESCRIPTION",
    "rules": [
      {
        "key": "PF2eVisionerEffect",
        "operations": [
          {
            "type": "conditionalState",
            "condition": "invisible",
            "thenState": "concealed",
            "stateType": "visibility",
            "direction": "from",
            "observers": "all",
            "source": "revealing-light"
          },
          {
            "type": "overrideVisibility",
            "fromStates": ["concealed"],
            "toState": "observed",
            "direction": "from",
            "observers": "all",
            "source": "revealing-light"
          }
        ],
        "priority": 110
      }
    ]
  },
  "cloudedFocus": {
    "name": "PF2E_VISIONER.RULE_ELEMENTS.EFFECT.EXAMPLES.CLOUDED_FOCUS.NAME",
    "description": "PF2E_VISIONER.RULE_ELEMENTS.EFFECT.EXAMPLES.CLOUDED_FOCUS.DESCRIPTION",
    "rules": [
      {
        "key": "PF2eVisionerEffect",
        "operations": [
          {
            "type": "modifyDetectionModes",
            "modeModifications": {
              "hearing": {
                "range": 20
              },
              "all": {
                "maxRange": 20
              }
            },
            "source": "clouded-focus"
          },
          {
            "type": "modifySenses",
            "senseModifications": {
              "all": {
                "maxRange": 20,
                "precision": "precise"
              }
            },
            "source": "clouded-focus"
          }
        ],
        "priority": 100
      }
    ]
  },
  "thousandVisions": {
    "name": "PF2E_VISIONER.RULE_ELEMENTS.EFFECT.EXAMPLES.THOUSAND_VISIONS.NAME",
    "description": "PF2E_VISIONER.RULE_ELEMENTS.EFFECT.EXAMPLES.THOUSAND_VISIONS.DESCRIPTION",
    "rules": [
      {
        "key": "PF2eVisionerEffect",
        "operations": [
          {
            "type": "overrideVisibility",
            "fromStates": ["concealed"],
            "toState": "observed",
            "direction": "to",
            "observers": "all",
            "range": 30,
            "source": "thousand-visions"
          },
          {
            "type": "modifySenses",
            "senseModifications": {
              "all": {
                "maxRange": 30,
                "beyondIsImprecise": true
              }
            },
            "source": "thousand-visions"
          }
        ],
        "priority": 100
      }
    ]
  },
  "blindFight": {
    "name": "PF2E_VISIONER.RULE_ELEMENTS.EFFECT.EXAMPLES.BLIND_FIGHT.NAME",
    "description": "PF2E_VISIONER.RULE_ELEMENTS.EFFECT.EXAMPLES.BLIND_FIGHT.DESCRIPTION",
    "rules": [
      {
        "key": "PF2eVisionerEffect",
        "operations": [
          {
            "type": "modifyActionQualification",
            "qualifications": {
              "attack": {
                "ignoreThisConcealment": true,
                "customMessage": "PF2E_VISIONER.RULE_ELEMENTS.EFFECT.MESSAGES.BLIND_FIGHT_ACTIVE"
              }
            },
            "source": "blind-fight-concealment"
          },
          {
            "type": "offGuardSuppression",
            "suppressedStates": ["hidden"],
            "source": "blind-fight-offguard"
          },
          {
            "type": "overrideVisibility",
            "fromStates": ["undetected"],
            "toState": "hidden",
            "direction": "to",
            "observers": "enemies",
            "range": 5,
            "levelComparison": "lte",
            "source": "blind-fight-adjacent"
          }
        ],
        "priority": 120
      }
    ]
  },
  "darkvisionConditional": {
    "name": "PF2E_VISIONER.RULE_ELEMENTS.EFFECT.EXAMPLES.DARKVISION_CONDITIONAL.NAME",
    "description": "PF2E_VISIONER.RULE_ELEMENTS.EFFECT.EXAMPLES.DARKVISION_CONDITIONAL.DESCRIPTION",
    "rules": [
      {
        "key": "PF2eVisionerEffect",
        "predicate": ["lighting:dim", "lighting:darkness"],
        "operations": [
          {
            "type": "modifySenses",
            "senseModifications": {
              "darkvision": {
                "range": 60,
                "precision": "precise"
              }
            },
            "source": "darkvision-conditional"
          }
        ],
        "priority": 100
      }
    ]
  },
  "heavyPrecipitation": {
    "name": "PF2E_VISIONER.RULE_ELEMENTS.EFFECT.EXAMPLES.HEAVY_PRECIPITATION.NAME",
    "description": "PF2E_VISIONER.RULE_ELEMENTS.EFFECT.EXAMPLES.HEAVY_PRECIPITATION.DESCRIPTION",
    "rules": [
      {
        "key": "PF2eVisionerEffect",
        "operations": [
          {
            "type": "distanceBasedVisibility",
            "direction": "to",
            "observers": "all",
            "distanceBands": [
              {
                "minDistance": 0,
                "maxDistance": 30,
                "state": "observed"
              },
              {
                "minDistance": 30,
                "maxDistance": null,
                "state": "concealed"
              }
            ],
            "source": "heavy-precipitation"
          }
        ],
        "priority": 100
      }
    ]
  },
  "thickFog": {
    "name": "PF2E_VISIONER.RULE_ELEMENTS.EFFECT.EXAMPLES.THICK_FOG.NAME",
    "description": "PF2E_VISIONER.RULE_ELEMENTS.EFFECT.EXAMPLES.THICK_FOG.DESCRIPTION",
    "rules": [
      {
        "key": "PF2eVisionerEffect",
        "operations": [
          {
            "type": "distanceBasedVisibility",
            "direction": "to",
            "observers": "all",
            "distanceBands": [
              {
                "minDistance": 0,
                "maxDistance": 10,
                "state": "observed"
              },
              {
                "minDistance": 10,
                "maxDistance": 20,
                "state": "concealed"
              },
              {
                "minDistance": 20,
                "maxDistance": null,
                "state": "hidden"
              }
            ],
            "source": "thick-fog"
          }
        ],
        "priority": 100
      }
    ]
  },
  "mirrorImage": {
    "name": "PF2E_VISIONER.RULE_ELEMENTS.EFFECT.EXAMPLES.MIRROR_IMAGE.NAME",
    "description": "PF2E_VISIONER.RULE_ELEMENTS.EFFECT.EXAMPLES.MIRROR_IMAGE.DESCRIPTION",
    "rules": [
      {
        "key": "PF2eVisionerEffect",
        "operations": [
          {
            "type": "offGuardSuppression",
            "suppressedStates": ["concealed", "hidden", "undetected"],
            "source": "mirror-image"
          }
        ],
        "priority": 100
      }
    ]
  }
}
