Guest User

FVTT Macros

a guest
Mar 2nd, 2023
7,246
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //Next Turn for combat tracker:
  2. game.combats.active?.nextTurn()
  3.  
  4.  
  5. //Clear Measured Templates from Screen:
  6. canvas.scene.deleteEmbeddedDocuments('MeasuredTemplate',canvas.scene.templates.map(i=>i.id))
  7.  
  8.  
  9. //Lets players quickly change light/vision (Useful for torches and and such)
  10. let applyChanges = false;
  11. new Dialog({
  12.   title: `Token Vision Configuration`,
  13.   content: `
  14.     <form>
  15.       <div class="form-group">
  16.         <label>Vision Type:</label>
  17.         <select id="vision-type" name="vision-type">
  18.           <option value="nochange">No Change</option>
  19.           <option value="dim0">Self</option>
  20.           <option value="dim30">Darkvision (30 ft)</option>
  21.           <option value="dim60">Darkvision (60 ft)</option>
  22.           <option value="dim90">Darkvision (90 ft)</option>
  23.           <option value="dim120">Darkvision (120 ft)</option>
  24.           <option value="dim150">Darkvision (150 ft)</option>
  25.           <option value="dim180">Darkvision (180 ft)</option>
  26.           <option value="bright120">Devil's Sight (Warlock)</option>
  27.        </select>
  28.      </div>
  29.      <div class="form-group">
  30.        <label>Light Source:</label>
  31.        <select id="light-source" name="light-source">
  32.          <option value="nochange">No Change</option>
  33.          <option value="none">None</option>
  34.          <option value="candle">Candle</option>
  35.          <option value="lamp">Lamp</option>
  36.          <option value="bullseye">Lantern (Bullseye)</option>
  37.          <option value="hooded-dim">Lantern (Hooded - Dim)</option>
  38.          <option value="hooded-bright">Lantern (Hooded - Bright)</option>
  39.          <option value="light">Light (Cantrip)</option>
  40.          <option value="torch">Torch</option>
  41.          <option value="moon-touched">Moon-Touched</option>
  42.        </select>
  43.      </div>
  44.    </form>
  45.    `,
  46.  buttons: {
  47.    yes: {
  48.      icon: "<i class='fas fa-check'></i>",
  49.      label: `Apply Changes`,
  50.      callback: () => applyChanges = true
  51.    },
  52.    no: {
  53.      icon: "<i class='fas fa-times'></i>",
  54.      label: `Cancel Changes`
  55.    },
  56.  },
  57.  default: "yes",
  58.  close: html => {
  59.    if (applyChanges) {
  60.      let updates = [];
  61.      for ( let token of canvas.tokens.controlled ) {
  62.        let visionType = html.find('[name="vision-type"]')[0].value || "none";
  63.        let lightSource = html.find('[name="light-source"]')[0].value || "none";
  64.        let dimSight = 0;
  65.        let brightSight = 0;
  66.        let dimLight = 0;
  67.        let brightLight = 0;
  68.        let lightAngle = 360;
  69.        let lockRotation = token.data.lockRotation;
  70.        let lightAnimation = token.data.light.animation;
  71.        let lightAlpha = token.data.light.alpha;
  72.        let lightColor = token.data.light.color;
  73.        const colorFire = "#f8c377";
  74.        const colorWhite = "#ffffff";
  75.        const colorMoonGlow = "#f4f1c9";
  76.        // Get Vision Type Values
  77.        switch (visionType) {
  78.          case "dim0":
  79.            dimSight = 0;
  80.            brightSight = 0;
  81.            break;
  82.          case "dim30":
  83.            dimSight = 30;
  84.            brightSight = 0;
  85.            break;
  86.          case "dim60":
  87.            dimSight = 60;
  88.            brightSight = 0;
  89.            break;
  90.          case "dim90":
  91.            dimSight = 90;
  92.            brightSight = 0;
  93.            break;
  94.          case "dim120":
  95.            dimSight = 120;
  96.            brightSight = 0;
  97.            break;
  98.          case "dim150":
  99.            dimSight = 150;
  100.            brightSight = 0;
  101.            break;
  102.          case "dim180":
  103.            dimSight = 180;
  104.            brightSight = 0;
  105.            break;
  106.          case "bright120":
  107.            dimSight = 0;
  108.            brightSight= 120;
  109.            break;
  110.          case "nochange":
  111.          default:
  112.            dimSight = token.data.dimSight;
  113.            brightSight = token.data.brightSight;
  114.        }
  115.        // Get Light Source Values
  116.        switch (lightSource) {
  117.          case "none":
  118.            dimLight = 0;
  119.            brightLight = 0;
  120.            lightAnimation = {type: "none"};
  121.            break;
  122.          case "candle":
  123.            dimLight = 10;
  124.            brightLight = 5;
  125.            lightAnimation = {type: "torch", speed: 2, intensity: 2};
  126.            lightColor = colorFire;
  127.            lightAlpha = 0.15;
  128.            break;
  129.          case "lamp":
  130.            dimLight = 45;
  131.            brightLight = 15;
  132.            lightAnimation = {type: "torch", speed: 2, intensity: 2};
  133.            lightColor = colorFire;
  134.            lightAlpha = 0.15;
  135.            break;
  136.          case "bullseye":
  137.            dimLight = 120;
  138.            brightLight = 60;
  139.            lockRotation = false;
  140.            lightAngle = 52.5;
  141.            lightAnimation = {type: "torch", speed: 2, intensity: 2};
  142.            lightColor = colorFire;
  143.            lightAlpha = 0.15;
  144.            break;
  145.          case "hooded-dim":
  146.            dimLight = 5;
  147.            brightLight = 0;
  148.            lightAnimation = {type: "torch", speed: 2, intensity: 2};
  149.            lightColor = colorFire;
  150.            lightAlpha = 0.15;
  151.            break;
  152.          case "hooded-bright":
  153.            dimLight = 60;
  154.            brightLight = 30;
  155.            lightAnimation = {type: "torch", speed: 2, intensity: 2};
  156.            lightColor = colorFire;
  157.            lightAlpha = 0.15;
  158.            break;
  159.          case "light":
  160.            dimLight = 40;
  161.            brightLight = 20;
  162.            lightAnimation = {type: "none"};
  163.            lightColor = colorWhite;
  164.            lightAlpha = 0.15;
  165.            break;
  166.          case "torch":
  167.            dimLight = 40;
  168.            brightLight = 20;
  169.            lightAnimation = {type: "torch", speed: 2, intensity: 2};
  170.            lightColor = colorFire;
  171.            lightAlpha = 0.15;
  172.            break;
  173.          case "moon-touched":
  174.            dimLight = 30;
  175.            brightLight = 15;
  176.            lightAnimation = {type: "none"};
  177.            lightColor = colorMoonGlow;
  178.            break;
  179.          case "nochange":
  180.          default:
  181.            dimLight = token.data.light.dim;
  182.            brightLight = token.data.light.bright;
  183.            lightAngle = token.data.light.angle;
  184.            lockRotation = token.data.lockRotation;
  185.            lightAnimation = token.data.light.animation;
  186.            lightAlpha = token.data.light.alpha;
  187.            lightColor = token.data.light.color;
  188.        }
  189.        // Update Token
  190.        updates.push({
  191.          _id: token.id,
  192.          vision: true,
  193.          dimSight: dimSight,
  194.          brightSight: brightSight,
  195.          "light.dim": dimLight,
  196.          "light.bright":  brightLight,
  197.          "light.angle": lightAngle,
  198.          lockRotation: lockRotation,
  199.          "light.animation": lightAnimation,
  200.          "light.alpha": lightAlpha,
  201.          "light.color": lightColor
  202.        });
  203.      }
  204.      canvas.scene.updateEmbeddedDocuments("Token", updates);
  205.    }
  206.  }
  207. }).render(true);
Advertisement
Add Comment
Please, Sign In to add comment