Skip to content

Tutorial 10

Ken Dearman edited this page Oct 5, 2026 · 3 revisions

Tutorial 10: The Architect's Dilemma (Automation Strategy & Data Mining)

Goal: To master Visage, you need to think like an architect. This tutorial will teach you where to place your automations to keep your game running efficiently, how to use selective conditions, and how to use the browser console to find hidden "Derived" attributes that don't appear in the standard Attribute Picker.

Prerequisites

  • Role: Player or Game Master
  • Required Modules: Visage

Concepts Covered

  • Local vs. Global Automations (When to use which)
  • The "Halfway House" (Selective Global Rules)
  • Using the Browser Console (F12)
  • Inspecting the canvas.tokens.controlled[0].actor object
  • Building custom data paths

Step-by-Step Guide

Phase 1: Local vs. Global (The Philosophy)

When you want an event to trigger a Visage, you have to decide where that Visage lives.

  • Local Automations (Character-Specific): If an automation is unique to a single character (like a barbarian's "rage" or a specific cursed magic item), build it in their Local Library. It keeps the global engine light because Visage only watches for that trigger when that specific token is in the scene.
  • Global Automations (Universal Rules): If a mechanic affects everyone (like the "Bloodied" condition at 50% HP, or a shadow aura that applies when entering a dark region), build it in the Global Library.

Phase 2: The Halfway House (Selective Global Rules)

What if you have a rule that applies to a group of tokens, but not everyone? (For example, a "Zombie Resurrection" visual effect). You shouldn't put it in 50 individual Local Libraries, but if you make it Global, you don't want your players resurrecting as zombies!

The solution is a Selective Global Rule:

  1. Build the Visage in the Global Library.
  2. Add your primary trigger (e.g., Attribute: system.attributes.hp.value <= 0).
  3. Click the Attribute button again to add a second condition.
  4. Set the path to name, read as text, the comparison to contains, and the value to Zombie.
  5. Make sure the rule's sentence says "Apply this Visage while all of these are true".

Now, your Global Library remains clean, Local Libraries remain empty, and the effect only fires when a token dies if their name contains "Zombie".

Phase 3: The Console Hacker (Finding Hidden Attributes)

As mentioned in Tutorial 6, the Attribute Picker only shows "Base" data (permanent database values). Temporary, calculated numbers (like a character's current armour class after casting a spell, or their temporary movement speed) are called "Derived" attributes.

You can still use Derived attributes in Visage automations, but you have to find their exact paths yourself using Foundry's backend.

  1. Select a Token: Click on any token on your canvas.

  2. Open the Console: Press F12 on your keyboard (or Ctrl+Shift+I on Windows / Cmd+Option+I on Mac) to open your browser's Developer Tools. Click the Console tab.

  3. The Magic Command: At the very bottom of the console, type this exact command and press Enter:

    canvas.tokens.controlled[0].actor

  4. Inspect the Object: The console will spit out an object that looks like Actor5e {...} (or your system's equivalent). Click the small arrow ► next to it to expand it.

  5. Dig into the System Data: Scroll down and find the property called system. Expand it ►. This is where almost all of a character's mechanical data lives.

    • Example: Expand attributes, then look for ac. Inside you might see value: 16.
  6. Build the Path: To use this in Visage, you just connect the folders you opened with dots.

    • You opened system -> attributes -> ac -> and found value.
    • Your final path is: system.attributes.ac.value.

    Tip: The path is case-sensitive and you must include any symbols (derived data paths often contain a leading _ symbol).

  7. Use it in Visage: Go back to the Visage Editor, create a condition, and manually type system.attributes.ac.value into the data path field. You have successfully hacked the matrix.

Testing It Out

  1. Test your Custom Path: Set up a quick automation using your new custom path (e.g., Make a token glow if system.attributes.ac.value > 15).
  2. Change the Value: Double-click the token to open its sheet and equip a shield or cast a spell that changes that derived attribute.
  3. Watch the Automation: Visage will instantly read the derived data and trigger the effect!

Pro-Tips & Creative Ideas

  • Exploring Flags: Not everything is in the system folder. Many modules (like Midi-QOL or condition managers) store their data in a folder called flags. If you expand flags in the console, you might find a path like flags.midi-qol.advantage.all. You can use this path in Visage just like any other.

  • Data Type Safety: When manually typing a custom path, make sure you set the condition's read as dropdown correctly in the Visage Editor's Automation view. If the value in the console is a word (like "poisoned"), set it to text. If it is true or false, set it to true or false.

    Tip: Visage can only test number, boolean and string data types.

Documentation

Links

Clone this wiki locally