Difference between revisions of "Roll20"

From Omnia
Jump to navigation Jump to search
 
(2 intermediate revisions by the same user not shown)
Line 188: Line 188:
  
 
There is a "Visible To" setting to share Macros with players.  (Have to scroll down in the Macro edit).
 
There is a "Visible To" setting to share Macros with players.  (Have to scroll down in the Macro edit).
 +
 +
=== Calculator Macro ===
 +
 +
Popup to do some calculations.  Only slightly cooler than just typing them in the chat window directly.
 +
**=** [[?{Calculator}}]]
 +
 +
note: the double asterisks simply make the = bold. The only Part you really need is in the brackets.
 +
 +
ref: [https://wiki.roll20.net/Useful_Macros#D20_Based_Systems]
 +
 +
=== True False Macro ===
 +
 +
On a character sheet,
 +
 +
Create an ability:
 +
[Do I Like It?](~selected|bool[[ [[1d2]] ]])
 +
 +
Create a "bool1" with "True" and a "bool2" with "False" ability.
 +
 +
Ref: [https://app.roll20.net/forum/post/3346272/5e-ogl-use-boolean-value-for-text]
  
 
== Script Examples ==
 
== Script Examples ==

Latest revision as of 15:57, 21 May 2020

Sub Pages Table of Contents

Roll 20.net

Moving Tokens

Manipulating Graphics - Roll20 Wiki - https://wiki.roll20.net/Manipulating_Graphics

Alt key for fine movements

Tapping ←, →, ↑ or ↓ arrow keys will move a selected token one grid unit in the specified direction

X key for token past movement

Q key for waypoint movement

E and mouse wheel to rotate

Rotation

When token selected, blue handle will stick out the front of the token.

Can also hold E and mouse wheel to rotate.

Can also hold Alt + E and mouse will to rotate more accurately.

Roll Dice

/roll 1d20+10 vs AC
/roll 1d4+9 Damage
/roll 5+3

Ref: https://wiki.roll20.net/Dice_Reference

Ref: https://roll20.zendesk.com/hc/en-us/articles/360037773133-Dice-Reference

Inline Roll

I like the number [[1d100]] or 5+3

Drop/Keep

Advantage/Disadvantage

/r 4d20k1  # roll 4d20 keep highest
/r 4d20kh1  # roll 4d20 keep highest (ditto)
/r 4d20kl1  # roll 4d20 keep lowest
/r 4d20dl   # drop lowest
/r 4d20dl   # drop highest

Emote

/em ...
/me rams his dagger home

Re3GCjh.png

Out of Character

OOC entries always appear as the player (e.g. "Riley D.") rather than the Character you have selected in the "Speaking As" drop-down (e.g. "Orrbain").

/ooc I could really use another Red Bull right now.

Chat Markup

Text Chat - Roll20 Wiki https://wiki.roll20.net/Text_Chat

Bold

** bold **

Italicize

* italicize*

Link or Image

[link or image](url)
*I* **love** [Roll20](https://app.roll20.net)

Inline Roll

Inline roll 1d20+5

Colored Text

NOTE: Doesn't appear to work...

 <inline style="color: rgb( 31 , 73 , 125 )">blue</inline>
 <span style="background: yellow">OOC: What is this?</span>

Community Forums: Colored text | Roll20: Online virtual tabletop https://app.roll20.net/forum/post/2069398/colored-text

Escape Text

Start line with back tick `

`&{template:default} {{attack=[[1d20]]}}

Useful for sharing Macros

GM Descriptions

/desc  (description not spoken by anyone: center aligned, bold, italicized, black font, light grey highlight)
/as
/emas
/gmroll in secret
/gr

Talk to Myself

/talktomyself on
/talktomyself off

Roll Query

?{Prompt Message}
//Example:
/roll ?{Number of Dice}d20
//You can also include a default value:  (1 is default)
/roll ?{Number of Dice|1}d20
?{Which macro?|Attack,#use-sword |Defend,#use-shield }

ref: https://wiki.roll20.net/Dice_Reference#Roll_Queries

Choice

?{Which |Charm, #Charm |Fear, #Fear |}

Ref: https://app.roll20.net/forum/post/5220046/macro-with-choices

Templates

&{template:default} {{name=Fey Presence}} {{Charm = [Roll20 Logo](gif)}} {{Effect= A charmed creature can’t Attack the charmer or target
the charmer with harmful Abilities or magical effects. The charmer has advantage on any ability check to interact socially with the creature.}} 

814INLA.png

Images

[Gold the Great](https://s3.amazonaws.com/files.d20.io/images/1725103/oXeN9hS_kB395ps0zsHD9Q/med.gif?1377575057&size=200x200#.gif)

UKWY24U.png

Ref: https://app.roll20.net/forum/post/1793704/how-to-show-pictures-slash-images-to-players

---

Image by choice: (will ask for caption, and url, but provides defaults)

[?{Caption|no caption}](?{URL|http://www.d20pfsrd.com/_/rsrc/1420094759946/config/customLogo.gif?revision=40}#.png)

Macros

Anything you can command. Name the macro, and you can then call it with #[MACRO_NAME]

(Nesting Macros) Macros can also call other macros with the #[MACRO_NAME]

Use selected token: (user bar1 value

/r 1d20 + @{selected|bar1}
/r 1d20 + @{selected|Intelligence}
/r 1d20 + @{selected|token_name} fires his gun!  # use selected name
/r 1d20 + @{selected|character_name} fires his gun!  # use selected name

ref: https://wiki.roll20.net/Macros

Share Macros

There is a "Visible To" setting to share Macros with players. (Have to scroll down in the Macro edit).

Calculator Macro

Popup to do some calculations. Only slightly cooler than just typing them in the chat window directly.

**=** [[?{Calculator}}]]

note: the double asterisks simply make the = bold. The only Part you really need is in the brackets.

ref: [1]

True False Macro

On a character sheet,

Create an ability:

[Do I Like It?](~selected|bool[[ 1d2 ]])

Create a "bool1" with "True" and a "bool2" with "False" ability.

Ref: [2]

Script Examples

Ray of Frost damage

Ray of Frost damage 1d8 per 1st, 5th, 11th, 17th

[[round((@{level} + 1) / 6 + 0.5)]]d8

Magic Missile Damage

?{MissleCount|3}d4+?{MissleCount}

Import DnD Beyond Characters

https://github.com/RobinKuiper/Roll20APIScripts

Raw source of script:

https://raw.githubusercontent.com/RobinKuiper/Roll20APIScripts/master/BeyondImporter_5eOGL/BeyondImporter.js

DnD Beyond character add /json, copy and paste into chat:

!beyond --import [JSON.....]

Initiative Roll Macro

ref: [3]

// @{selected|token_name} rolls [[ @{selected|dex_mod}+1d20 &{tracker} ]] for initiative.
@{selected|token_name} rolls [[ 1d20 + @{selected|initiative_bonus} &{tracker} ]] for initiative.

or

Rolling Initiative for @{selected|token_name}: [[ 1d20+?{Initiative Bonus|0} &{tracker} ]]

NPC Macro: (doesn't work with player characters)

%{selected|npc_init}

Call of Cthulhu:

@{selected|token_name} has [[ @{selected|dexterity} &{tracker} ]] for initiative.

Fog of War and Dynamic Lighting

Fog of War - Forced Darkness layer by DM

Advanced Fog of War - Gray Darkness layer

  • Show Grid - Show grid through fog of war and shadows
  • Dim Light Reveals -
  • All Tokens Reveal (GM) -

Dynamic Lighting

  • Enforce Line of Sight - Players can only see light that they can directly see
  • Only Update on Drop - Update areas only drop (good to keep players from sneaking around walls and back)
  • Restrict Movement - Can't cross DL lines (must have sight)
  • Global Illumination - No shadows (only when you only want restrict only)

Campaign Settings

Allow players to import their own Characters?  Yes
ROLL QUERIES:  Advantage Toggle
WHISPER ROLLS TO GM:  Whisper Toggle

My preferred for Compendium Monster drops:

BAR 1 VALUE:  npc_challenge
BAR 2 VALUE:  npc_ac
BAR 3 VALUE:  hp_max
BAR 3 MAX:  hp_max
* all others are blank
Sanity Score:  On

5e.tools

Import Monster Manual

https://5e.tools/roll20.html
https://wiki.5e.tools/index.php/Better20_User_Guide

Tips and Tricks

Community Forums: Stupid Roll20 Tricks (and some clever ones) | Roll20: Online virtual tabletop
https://app.roll20.net/forum/post/5899495/stupid-roll20-tricks-and-some-clever-ones/

Auto Racking Ammunition

  1. Add "5th Edition OGL by Roll20 Companion" API script (Pro only)
  2. Character sheet (or default in game settings) - set "Ammo Tracking" to "On"
  3. Edit equipment to "Use as a resource"
  4. Edit Weapon and set "Ammunition" to name of resource


D&D 5E by Roll20: How to setup Ammunition and Resource tracker - Roll20 Wiki https://wiki.roll20.net/OGL_5e_DnD:_How_to_setup_Ammunition_and_Resource_tracker

Addons

Bloodied and Dead Status Markers

bloodied.js:

on("change:graphic", function(obj) {
    // Settings:
    //var lifeBarNumber = 3;          // 3:red; 2:blue; 1:green
    var lifeBarNumber = 0;          // 3:red; 2:blue; 1:green
    var percentForRedmark = 50;     // Write for example 50 for 50%
    var totalKillThreshold = -10;   // As soon as a tokens life goes bellow this value
                                    // it gets an additional (killed) symbol.
    
    // Auto select bar1 or bar3
    // Is life bar set at all?
    // If not simply escape the function.
    if(obj.get("bar1_max") === "") {
        if(obj.get("bar3_max") === "") {
            return;
        } else {
            lifeBarNumber = 3;
        }
    } else {
        lifeBarNumber = 1;
    }
   
    // Back from the dead?
    if((obj.get("status_dead") == true || obj.status_skull == true) && obj.get("bar" + lifeBarNumber + "_value") > 0){
        SetStatuSymbolById(obj,3,1);
    }
   
    // Total-kill
    if(obj.get("bar" + lifeBarNumber + "_value") <= totalKillThreshold){
        SetStatuSymbolById(obj,0,0);
        SetStatuSymbolById(obj,1,1);
        SetStatuSymbolById(obj,2,1);
        SetStatuSymbolById(obj,3,0);
    }
    // Dead
    else if(obj.get("bar" + lifeBarNumber + "_value") <= 0){
        SetStatuSymbolById(obj,0,0);
        SetStatuSymbolById(obj,1,1);
        SetStatuSymbolById(obj,2,0);
        SetStatuSymbolById(obj,3,0);
    }
    // Bellow x% life
    else if(obj.get("bar" + lifeBarNumber + "_value") <= obj.get("bar" + lifeBarNumber + "_max") / 100 * percentForRedmark) {
        SetStatuSymbolById(obj,0,1);
        SetStatuSymbolById(obj,1,0);
        SetStatuSymbolById(obj,2,0);
    }
    else{
        ResetDeathSymbols(obj);
        
        // Back from the dead but now again with full (or beyond that) health?
        // TODO: >= not working..?
        if(obj.get("bar" + lifeBarNumber + "_value") == obj.get("bar" + lifeBarNumber + "_max")){
            SetStatuSymbolById(obj,3,0);
        }
    }
});

/*
Reset the following symboles
    redmarker, dead & skull
*/
function ResetDeathSymbols(obj){
    SetStatuSymbolById(obj,0,0);
    SetStatuSymbolById(obj,1,0);
    SetStatuSymbolById(obj,2,0);
}

/*
Sets the value of a given tokens symbol by the symbols id
symbolid:
    0:redmarker
    1:dead
    2:skull
    3:death-zone
    x:y
    
value:
    true/1 or false/0
 */
function SetStatuSymbolById(obj, symbolid, value) {
    switch(symbolid){
        case 0:
            SetStatusSymbolByName(obj, "redmarker", value);
            break;
        case 1:
            SetStatusSymbolByName(obj, "dead", value);
            break;
        case 2:
            SetStatusSymbolByName(obj, "skull", value);
            break;
        case 3:
            SetStatusSymbolByName(obj, "death-zone", value);
            break;
        default:
            // Something is wrong so log it and exit.
            log("Error: SetStatuSymbolById - There was no usable number for symbolid given!");
            log("       Object name: " + obj.get("name") + "; symbolid: " + symbolid + "; value: " + value);
            return;
    }
}

/*
Sets the value of a given tokens symbol by the symbols name
value:
    true/1 or false/0
*/
function SetStatusSymbolByName(obj, symbolname, value){
    value = CheckForTrueOrFalse(value);
    
    // Set the symbols value.
    obj.set("status_" + symbolname, value);
}

/*
Checks if a given value is true or false.
value:
    0:false
    1:true
    default:false
*/
function CheckForTrueOrFalse(value){
    if (value === 0){value = false;}
    else if (value === 1){value = true;}
    else if (value === true || value === false){
        // Nothing to do, these are valid values.
    }
    // The input for value is not known, therefore we set it to false.
    else{
        value = false;
        log("Error: CheckForTrueOrFalse - An unhandled value has been used!");
        log("       value has been set to de default value " + value);
    }
    return value;
}

/*
Debug function
Place where ever you would like to see the actual values.
*/
function DebugMe(obj,msg){
    log("--- DEBUG: " + msg + "---");
    log("obj name: " + obj.get("name"));
    log("status values:");
    log("redmarker:    " + obj.get("status_redmarker"));
    log("dead:    " + obj.get("status_dead"));
    log("skull:    " + obj.get("status_skull"));
    log("death:    " + obj.get("status_death"));
}

Original:

Modified: https://app.roll20.net/forum/post/8507481/script-bloodied-and-dead-status-markers-extended-auto-select-bar-1-or-3/?pageforid=8507481#post-8507481

Cuerpo ref: https://app.roll20.net/users/389397/cuerpo

ref: https://wiki.roll20.net/API:Cookboox

:Bloodied_and_Dead_Status_Markers

https://wiki.roll20.net/Script:Bloodied_and_Dead_Status_Markers
Scripts moved to:
https://github.com/Roll20/roll20-api-scripts/tree/44c583189173bd5cfb68031f6b1a6a869c0b24a4/Bloodied%20and%20Dead%20Status%20Markers

bloodied.js

var barValue = "bar1";
var acceptedValues = ["bar1", "bar2", "bar3"];

on('chat:message', function (msg) {
 
    if (msg.type == 'api' && msg.content.indexOf('!ChangeBar') !== -1) {
        var message = msg.content.split(" ")[1];
        log("Message: " + message);
        if (acceptedValues.includes(message)) {
            barValue = message;
            log("Blood and Dead bar value changed to " + message);
        }
    }
});


on("change:graphic:bar1_value", function(obj) {
    if(obj.get("bar1_max") === "") return;
   
    if(obj.get("bar1_value") <= obj.get("bar1_max") / 2) {
        obj.set({
              status_redmarker: true
        });
    }
    else{
        obj.set({
            status_redmarker: false
        })
    }

    if(obj.get("bar1_value") <= 0) {
      obj.set({
         status_dead: true
      });
    }
    else {
      obj.set({
        status_dead: false
      });
    }
});

Roll20 Scripts Collection

https://github.com/Roll20/roll20-api-scripts/

Puzzle Packs

https://marketplace.roll20.net/browse/publisher/91/paul-camp
Escape the Room: Fantasy Edition | Roll20 Marketplace: Digital goods for online tabletop gaming
https://marketplace.roll20.net/browse/gameaddon/359/escape-the-room-fantasy-edition

DnDBeyond Integration

Beyond 20 - Chrome Web Store
https://chrome.google.com/webstore/detail/beyond-20/gnblbpbepfbfmoobegdogkglpbhcjofh?hl=en

Forums

Colored Text

"I do all of my editing in office [Word], then copy/paste into Roll20."

Community Forums: Colored text | Roll20: Online virtual tabletop https://app.roll20.net/forum/post/2069398/colored-text

Status Page

503 Service Unavailable

There was not a server available to handle your request. Most of the time this is a temporary error -- try reloading. If you are consistently seeing this error, then there may be an issue with the site. See the status page: http://status.roll20.net

Keywords