ROLL20CON EPIC SCRIPTS AND MACROS

Table of Contents

2. Scripts

Utility Character Sheets

DM Utilities

Character GMUtilsOGL has many abilities which I created for easy transporting between campaigns.

Player Utilities

> Whisper to GM

Name: wgm

Description:

/w gm ?{Message}

> Whisper to Token

Name: wch

Description:

/emas @{selected|token_name} speaks low.
/w @{target|token_name} ?{"What"|um}

> Miscellaneous D20 Rol

Name: roll

Description:

/me rolls a [[1d20+?{modifier|0}]] for ?{reason|no reason}.

> Calculator

Name: calc

Description:

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

Turn /talktomyself on/off

Name: ttms

Description:

/talktomyself

Post an Image

Name: img

Description:

[Image](?{Image URL})

Post a Link

Item of Menu

Name: link

Description:

Link: **[?{Link Title}](?{Link URL})**

SCRIPTS

List of all installed scripts

  • ChatSetAttr

  • GroupCheck

  • GroupInitiative

  • 5th Edition OGL by Roll20 Companion

  • TokenMod

  • TokenNameNumber

  • Marching Order

  • HTML Builder

  • Welcome Package

  • Message of the Day

  • MonsterHitDice

  • OGL-Statblock.js

  • OGL-Token-Actions.js

  • TurnMarker-1.js

  • TurnTimer.js

  • Token Status Manager

ChatSetAttr

GroupCheck

GroupInitiative

5th Edition OGL by Roll20 Companion

TokenMod

TokenNameNumber

Marching Order

HTML Builder

Welcome Package

Message of the Day

MonsterHitDice

OGL-Statblock.js

OGL-Token-Actions.js

TurnMarker-1.js

TurnTimer.js

Token Status Manager

OGL MACROS

Definition of description's format

I will describe used macros in next format:

Name - logical name of macros, for example - OGL_init Shown name - short version with using of emoji (as described in Clever Tricks) Needed API scriptx - if macro will use some Api

Code of macro is ready to be copy-pasted in Roll20

Player Utiliy Sheet Menu

Name of Macros PCUtilsOGL

/w @{selected|character_name} &{template:desc} {{desc=
**PC Utilities**
[> Whisper to GM (wgm)](~PCutilsOGL|wgm)
[> Whisper to Token (wch)](~PCutilsOGL|wch)
[> Miscellaneous D20 Roll (roll)](~PCutilsOGL|roll)
[> Calculator (calc)](~PCutilsOGL|calc)
[> Turn /talktomyself on/off (ttms)](~PCutilsOGL|ttms)
[> Post an Image (img)](~PCutilsOGL|img)
[> Post a Link (link)](~PCutilsOGL|link) }}

OGL_Init

Snown name - ⚔Init Description: It rolls initative for selected token

/me 's initiative is [[1d20 + @{selected|dexterity_mod}&{tracker}]]

OGL_Skills

Snown name

Description: Token action to roll skill check for selected token

@{selected|wtype}&{template:simple} @{selected|rtype}?{Ability|Acrobatics, [email protected]{selected|acrobatics_bonus}@{selected|pbd_safe} ]]}} {{rname=Acrobatics}} {{[email protected]{selected|acrobatics_bonus}}} {{r1=[[ @{selected|d20} + @{selected|acrobatics_bonus}@{selected|pbd_safe} ]]}} |Animal Handling, [email protected]{selected|animal_handling_bonus}@{selected|pbd_safe} ]]}} {{rname=Animal Handling}} {{[email protected]{selected|animal_handling_bonus}}} {{r1=[[ @{selected|d20} + @{selected|animal_handling_bonus}@{selected|pbd_safe} ]]}} |Arcana, [email protected]{selected|arcana_bonus}@{selected|pbd_safe} ]]}} {{rname=Arcana}} {{[email protected]{selected|arcana_bonus}}} {{r1=[[ @{selected|d20} + @{selected|arcana_bonus}@{selected|pbd_safe} ]]}} |Athletics, [email protected]{selected|athletics_bonus}@{selected|pbd_safe} ]]}} {{rname=Athletics}} {{[email protected]{selected|athletics_bonus}}} {{r1=[[ @{selected|d20} + @{selected|athletics_bonus}@{selected|pbd_safe} ]]}} |Deception, [email protected]{selected|deception_bonus}@{selected|pbd_safe} ]]}} {{rname=Deception}} {{[email protected]{selected|deception_bonus}}} {{r1=[[ @{selected|d20} + @{selected|deception_bonus}@{selected|pbd_safe} ]]}} |History, [email protected]{selected|history_bonus}@{selected|pbd_safe} ]]}} {{rname=History}} {{[email protected]{selected|history_bonus}}} {{r1=[[ @{selected|d20} + @{selected|history_bonus}@{selected|pbd_safe} ]]}} |Insight, [email protected]{selected|insight_bonus}@{selected|pbd_safe} ]]}} {{rname=Insight}} {{[email protected]{selected|insight_bonus}}} {{r1=[[ @{selected|d20} + @{selected|insight_bonus}@{selected|pbd_safe} ]]}} |Intimidation, [email protected]{selected|intimidation_bonus}@{selected|pbd_safe} ]]}} {{rname=Intimidation}} {{[email protected]{selected|intimidation_bonus}}} {{r1=[[ @{selected|d20} + @{selected|intimidation_bonus}@{selected|pbd_safe} ]]}} |Investigation, [email protected]{selected|investigation_bonus}@{selected|pbd_safe} ]]}} {{rname=Investigation}} {{[email protected]{selected|investigation_bonus}}} {{r1=[[ @{selected|d20} + @{selected|investigation_bonus}@{selected|pbd_safe} ]]}} |Medicine, [email protected]{selected|medicine_bonus}@{selected|pbd_safe} ]]}} {{rname=Medicine}} {{[email protected]{selected|medicine_bonus}}} {{r1=[[ @{selected|d20} + @{selected|medicine_bonus}@{selected|pbd_safe} ]]}} |Nature, [email protected]{selected|nature_bonus}@{selected|pbd_safe} ]]}} {{rname=Nature}} {{[email protected]{selected|nature_bonus}}} {{r1=[[ @{selected|d20} + @{selected|nature_bonus}@{selected|pbd_safe} ]]}} |Perception, [email protected]{selected|perception_bonus}@{selected|pbd_safe} ]]}} {{rname=Perception}} {{[email protected]{selected|perception_bonus}}} {{r1=[[ @{selected|d20} + @{selected|perception_bonus}@{selected|pbd_safe} ]]}} |Performance, [email protected]{selected|performance_bonus}@{selected|pbd_safe} ]]}} {{rname=Performance}} {{[email protected]{selected|performance_bonus}}} {{r1=[[ @{selected|d20} + @{selected|performance_bonus}@{selected|pbd_safe} ]]}} |Persuasion, [email protected]{selected|persuasion_bonus}@{selected|pbd_safe} ]]}} {{rname=Persuasion}} {{[email protected]{selected|persuasion_bonus}}} {{r1=[[ @{selected|d20} + @{selected|persuasion_bonus}@{selected|pbd_safe} ]]}} |Religion, [email protected]{selected|religion_bonus}@{selected|pbd_safe} ]]}} {{rname=Religion}} {{[email protected]{selected|religion_bonus}}} {{r1=[[ @{selected|d20} + @{selected|religion_bonus}@{selected|pbd_safe} ]]}} |Sleight of Hand, [email protected]{selected|sleight_of_hand_bonus}@{selected|pbd_safe} ]]}} {{rname=Sleight of Hand}} {{[email protected]{selected|sleight_of_hand_bonus}}} {{r1=[[ @{selected|d20} + @{selected|sleight_of_hand_bonus}@{selected|pbd_safe} ]]}} |Stealth, [email protected]{selected|stealth_bonus}@{selected|pbd_safe} ]]}} {{rname=Stealth}} {{[email protected]{selected|stealth_bonus}}} {{r1=[[ @{selected|d20} + @{selected|stealth_bonus}@{selected|pbd_safe} ]]}} |Survival, [email protected]{selected|survival_bonus}@{selected|pbd_safe} ]]}} {{rname=Survival}} {{[email protected]{selected|survival_bonus}}} {{r1=[[ @{selected|d20} + @{selected|survival_bonus}@{selected|pbd_safe} ]]}} |Strength, [email protected]{selected|strength_mod}@{selected|jack_attr}[STR]]]}} {{rname=Strength}} {{[email protected]{selected|strength_mod}@{selected|jack_bonus}}} {{r1=[[ @{selected|d20} + @{selected|strength_mod}@{selected|jack_attr}[STR]]]}} |Dexterity, [email protected]{selected|dexterity_mod}@{selected|jack_attr}[DEX]]]}} {{rname=Dexterity}} {{[email protected]{selected|dexterity_mod}@{selected|jack_bonus}}} {{r1=[[ @{selected|d20} + @{selected|dexterity_mod}@{selected|jack_attr}[DEX]]]}} |Constitution, [email protected]{selected|constitution_mod}@{selected|jack_attr}[CON]]]}} {{rname=Constitution}} {{[email protected]{selected|constitution_mod}@{selected|jack_bonus}}} {{r1=[[ @{selected|d20} + @{selected|constitution_mod}@{selected|jack_attr}[CON]]]}} |Intelligence, [email protected]{selected|intelligence_mod}@{selected|jack_attr}[INT]]]}} {{rname=Intelligence}} {{[email protected]{selected|intelligence_mod}@{selected|jack_bonus}}} {{r1=[[ @{selected|d20} + @{selected|intelligence_mod}@{selected|jack_attr}[INT]]]}} |Wisdom, [email protected]{selected|wisdom_mod}@{selected|jack_attr}[WIS]]]}} {{rname=Wisdom}} {{[email protected]{selected|wisdom_mod}@{selected|jack_bonus}}} {{r1=[[ @{selected|d20} + @{selected|wisdom_mod}@{selected|jack_attr}[WIS]]]}} |Charisma, [email protected]{selected|charisma_mod}@{selected|jack_attr}[CHA]]]}} {{rname=Charisma}} {{[email protected]{selected|charisma_mod}@{selected|jack_bonus}}} {{r1=[[ @{selected|d20} + @{selected|charisma_mod}@{selected|jack_attr}[CHA]]]}} } @{selected|global_skill_mod} @{selected|charname_output}

OGL Ability Checks

Snown name ✔️

Description: Token action to roll ability check for selected token

@{selected|wtype}&{template:simple} @{selected|rtype}?{Stat
|Strength,+[[@{selected|strength_mod}]][STR] ]]}} {{rname=^{strength-u}}} {{mod=[[ [[@{selected|strength_mod}]][STR] ]]}} {{r1=[[@{selected|d20}+[[@{selected|strength_mod}]][STR] ]]
|Dexterity,+[[@{selected|dexterity_mod}]][DEX] ]]}} {{rname=^{dexterity-u}}} {{mod=[[ [[@{selected|dexterity_mod}]][DEX] ]]}} {{r1=[[@{selected|d20}+[[@{selected|dexterity_mod}]][DEX] ]]
|Constitution,+[[@{selected|constitution_mod}]][CON] ]]}} {{rname=^{constitution-u}}} {{mod=[[ [[@{selected|constitution_mod}]][CON] ]]}} {{r1=[[@{selected|d20}+[[@{selected|constitution_mod}]][CON] ]]
|Intelligence,+[[@{selected|intelligence_mod}]][INT] ]]}} {{rname=^{intelligence-u}}} {{mod=[[ [[@{selected|intelligence_mod}]][INT] ]]}} {{r1=[[@{selected|d20}+[[@{selected|intelligence_mod}]][INT] ]]
|Wisdom,+[[@{selected|wisdom_mod}]][WIS] ]]}} {{rname=^{wisdom-u}}} {{mod=[[ [[@{selected|wisdom_mod}]][WIS] ]]}} {{r1=[[@{selected|d20}+[[@{selected|wisdom_mod}]][WIS] ]]
|Charisma,+[[@{selected|charisma_mod}]][CHA] ]]}} {{rname=^{charisma-u}}} {{mod=[[ [[@{selected|charisma_mod}]][CHA] ]]}} {{r1=[[@{selected|d20}+[[@{selected|charisma_mod}]][CHA] ]]
}}} @{selected|global_skill_mod} @{selected|charname_output}

OGL Saves

Snown name 🎲

Description: Token action to roll saves for selected token

@{selected|wtype}&{template:simple} @{selected|rtype}?{Save
|Strength,+[[(@{selected|strength_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_str_save}*@{selected|npc})]][STR SAVE] ]]}} {{rname=^{strength-save-u}}} {{mod=[[ [[(@{selected|strength_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_str_save}*@{selected|npc})]][STR SAVE] ]]}} {{r1=[[@{selected|d20}+[[(@{selected|strength_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_str_save}*@{selected|npc})]][STR SAVE] ]]
|Dexterity,+[[(@{selected|dexterity_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_dex_save}*@{selected|npc})]][DEX SAVE] ]]}} {{rname=^{dexterity-save-u}}} {{mod=[[ [[(@{selected|dexterity_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_dex_save}*@{selected|npc})]][DEX SAVE] ]]}} {{r1=[[@{selected|d20}+[[(@{selected|dexterity_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_dex_save}*@{selected|npc})]][DEX SAVE] ]]
|Constitution,+[[(@{selected|constitution_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_con_save}*@{selected|npc})]][CON SAVE] ]]}} {{rname=^{constitution-save-u}}} {{mod=[[ [[(@{selected|constitution_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_con_save}*@{selected|npc})]][CON SAVE] ]]}} {{r1=[[@{selected|d20}+[[(@{selected|constitution_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_con_save}*@{selected|npc})]][CON SAVE] ]]
|Intelligence,+[[(@{selected|intelligence_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_int_save}*@{selected|npc})]][INT SAVE] ]]}} {{rname=^{intelligence-save-u}}} {{mod=[[ [[(@{selected|intelligence_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_int_save}*@{selected|npc})]][INT SAVE] ]]}} {{r1=[[@{selected|d20}+[[(@{selected|intelligence_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_int_save}*@{selected|npc})]][INT SAVE] ]]
|Wisdom,+[[(@{selected|wisdom_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_wis_save}*@{selected|npc})]][WIS SAVE] ]]}} {{rname=^{wisdom-save-u}}} {{mod=[[ [[(@{selected|wisdom_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_wis_save}*@{selected|npc})]][WIS SAVE] ]]}} {{r1=[[@{selected|d20}+[[(@{selected|wisdom_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_wis_save}*@{selected|npc})]][WIS SAVE] ]]
|Charisma,+[[(@{selected|charisma_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_cha_save}*@{selected|npc})]][CHA SAVE] ]]}} {{rname=^{charisma-save-u}}} {{mod=[[ [[(@{selected|charisma_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_cha_save}*@{selected|npc})]][CHA SAVE] ]]}} {{r1=[[@{selected|d20}+[[(@{selected|charisma_save_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_cha_save}*@{selected|npc})]][CHA SAVE] ]]
}}} @{selected|global_save_mod} @{selected|charname_output}

OGL Short Rest

Snown name

Description

@{selected|wtype}&{template:simple} {{rname=^{hit-dice-u}}} {{mod=?{How many hit dice would you like to spend?|1}[email protected]{selected|hitdie_final}+[[@{selected|constitution_mod}*?{How many hit dice would you like to spend?}[CON]]]}} {{r1=[[ ?{How many hit dice would you like to spend?}[email protected]{selected|hitdie_final}+[[@{selected|constitution_mod}* ?{How many hit dice would you like to spend?}]][CON]]]}} {{normal=1}} @{selected|charname_output} {{[email protected]{selected|token_name}}}

Dungeon Master's OGL Macros

OGL Setup Group Initiative and Checks

Description Одноразовый макрос - производит настройку Group Initiative для листа персонажа Roll20 5e OGL

!group-check-config --import 5E-OGL
!group-init --del-group 1
!group-init-config --toggle-replace-roll
!group-init --add-group --bare initiative_bonus

Long Rest

Snown name 💤LR

Description : Делает длинный отдых персонажу (обновляет значения расходуемых ресурсов и обновляет значение bar1) Automated Long Rest and Token Bar Refresh

API Scripts Token Mod, 5th Edition OGL by Roll20 Companion

!longrest @{selected|character_name}
!token-mod --set bar1_reset|

Monster Token Setup

💀M

Description: This macro will setup token and settings of Character Sheet of Monster (1 character sheet belong to many tokens on map)

API scripts Token Mod

!token-mod --set bar3_link| bar2_link| bar1_link| showname|yes bar1|[[@{selected|npc_hpformula}]] bar2_value|@{selected|npc_ac} bar3_value|@{selected|npc_speed} height|[[@{selected|token_size}*70]] width|[[@{selected|token_size}*70]] name|"@{selected|npc_name} %%NUMBERED%%" bar1_max| bar2_max| defaulttoken
!setattr --sel --wtype --rtype

NPC Token Setup

💀N

Description This macro will setup token and settings of Character Sheet of Monster (1 character sheet belong to many tokens on map)

API Scripts Token Mod

!token-mod --set bar3_reset| bar1_reset| bar2_reset| bar1_link|hp showname|yes bar1|@{selected|hp|max} bar2_value|@{selected|npc_ac} bar3_value|@{selected|npc_speed} height|[[@{selected|token_size}*70]] width|[[@{selected|token_size}*70]] name|"@{selected|npc_name}" defaulttoken
!setattr --sel --wtype --rtype

PC Token Setup

💀P

Description This macro will setup token of Player Character

API Scripts Token Mod

!token-mod --set bar3_reset| bar1_reset| bar2_reset| bar1_link|hp showname|yes bar1|@{selected|hp|max} bar2_value|@{selected|ac} bar3_value|@{selected|speed} height|[[@{selected|token_size}*70]] width|[[@{selected|token_size}*70]] name|"@{selected|character_name}" defaulttoken
!token mod light_hassight --on
!token-mod --set light_radius#60 light_dimradius#=0 --off light_otherplayers
!setattr --sel --wtype --rtype

Clear all status markers

API Scripts Token Mod

!token-mod --set statusmarkers|=blue|-blue

Move selected tokens to gm layer

API Scripts Token Mod

!token-mod --set layer|gmlayer

OGL Dungeon Master Utilities 1

Description of menu items

Set Default Token - will setup selected token as default token for character

Token Mod API help -

Create Token Actions - creating attacks, checks and saves for selected token

Create Spellbok - creating ability to fast spellcasting (token action "Spells")

Create Attacks - creating token action "Attacks" which will send to chat list of all possible character's attacks

Create Checks - creating token action "Other" which will send to chat list of all possible character's ability checks, skill checks, saves

API Scripts Token Mod, Token actions, 5eOGL-books

/w gm &{template:default}{{name=**Token-mod api**
[Set Default Token](!token-mod --set defaulttoken)
[Token Mod API help](!token-mod --help)
**TOKEN-ACTIONS**
[Create Token Actions](!ta) [Create Spellbook](!generate-spellbook) [Create Attacks](!generate-attackbook) [Create Checks](!generate-checkbook)}}

OGL Dungeon Master Utilities 2

Description

API Scripts Group Check

/w gm &{template:default}{{name=Game Utilitiess}}{{[Group Check](!group-check)[Reset HP](!token-mod --set bar3_reset|0)}}{{**Saves & Damage**}}{{[Play Slots](!token-mod --set statusmarkers|red:[[1d9]]|green:[[1d9]]|blue:[[1d9]] )}}{{**MI**}}{{[Players can ids](!token-mod --config players-can-ids|on)[Show name](!token-mod --on showname)[move selected tokens to gm layer](!token-mod --set layer|gmlayer)[turn blue aura on](!token-mod --on showplayers_aura1 --set aura1_radius|35 aura1_color|0000ff)}}{{[help](!token-mod --help)}}{{**Nameplate**}}{{[Name On](!token-mod --set showplayers_name|yes showname|yes) | [Name Off](!token-mod --set showplayers_name|no showname|yes)}}{{**Light & Vision**}}{{[Snuff](!token-mod --set light_otherplayers|off light_radius|0 light_dimradius|0 light_angle|360) | [Sight](!token-mod --on showname light_hassight light_angle|360) | [Blind](!token-mod --off showname light_hassight light_angle|360) | [Spot](!token-mod --set light_otherplayers|on light_radius|1 light_dimradius|0 light_angle|360) | [GM](!token-mod --set light_otherplayers|off light_radius|5 light_dimradius|5 light_angle|360)[Candle](!token-mod --set light_otherplayers|on light_radius|5 light_dimradius|0 light_angle|360) | [Lamp](!token-mod --set light_otherplayers|on light_radius|30 light_dimradius|15 light_angle|360) | [Torch](!token-mod --set light_otherplayers|on light_radius|40 light_dimradius|20 light_angle|360)[Hooded Lantern](!token-mod --set light_otherplayers|on light_radius|60 light_dimradius|30 light_angle|360) | [Bullseye Lantern](!token-mod --set light_otherplayers|on light_radius|120 light_dimradius|60 light_angle|90)[Darkvision](!token-mod --set light_otherplayers|off light_radius|60 light_dimradius|0 light_angle|360) | [DV90](!token-mod --set light_otherplayers|off light_radius|90 light_dimradius|0 light_angle|360) | [DV120](!token-mod --set light_otherplayers|off light_radius|120 light_dimradius|0 light_angle|360) | [*Light*](!token-mod --set light_otherplayers|on light_radius|40 light_dimradius|20 light_angle|360) | [*Daylight*](!token-mod --set light_otherplayers|on light_radius|120 light_dimradius|60 light_angle|360) | [*Faerie Fire*](!token-mod --set light_otherplayers|on light_radius|1 light_angle|3600 light_dimradius|0 statusmarkers|purple light_angle|360)}}{{**Status**}}{{[Blue](!token-mod --set statusmarkers|!blue) | [Purple](!token-mod --set statusmarkers|!purple) | [Pink](!token-mod --set statusmarkers|!pink) | [Yellow](!token-mod --set statusmarkers|!yellow) | [OFF](!token-mod --set statusmarkers|=dead|-dead)}}{{**Miscellaneous**}}{{[Follow](!showMarchingOrderMenu) }}{{**Initiative**}}{{[Roll Initiative](!group-init) | [Clear Tracker](!clear)}}{{[Sort Tracker](!order)}}{{**menu**}}{{[Set Default Token](!token-mod --set defaulttoken) }}

OGL Dungeon Master Utilities 3

Description

API Scripts Token Mod

/w gm &{template:default} {{name=Game Utilities 2}}{{
**Saves & Damage**
[Group Check](!group-check)
[Reset HP](!token-mod --set bar3_reset|0)
[Direct Damage](!#Apply-Damage)
[Play Slots](!token-mod --set statusmarkers|red:[1d9]]|green:[[1d9]]|blue:[[1d9]])
**Light & Vision**
[Snuff](!token-mod --set light_otherplayers|off light_radius|0 light_dimradius|0 light_angle|360) | [Sight](!token-mod --on showname light_hassight light_angle|360) | [Blind](!token-mod --off showname light_hassight light_angle|360) | [Spot](!token-mod --set light_otherplayers|on light_radius|1 light_dimradius|0 light_angle|360) | [GM](!token-mod --set light_otherplayers|off light_radius|5 light_dimradius|5 light_angle|360) [Candle](!token-mod --set light_otherplayers|on light_radius|5 light_dimradius|0 light_angle|360) | [Lamp](!token-mod --set light_otherplayers|on light_radius|30 light_dimradius|15 light_angle|360) | [Torch](!token-mod --set light_otherplayers|on light_radius|40 light_dimradius|20 light_angle|360) [Hooded Lantern](!token-mod --set light_otherplayers|on light_radius|60 light_dimradius|30 light_angle|360) | [Bullseye Lantern](!token-mod --set light_otherplayers|on light_radius|120 light_dimradius|60 light_angle|90) [Darkvision](!token-mod --set light_otherplayers|off light_radius|60 light_dimradius|0 light_angle|360) | [DV90](!token-mod --set light_otherplayers|off light_radius|90 light_dimradius|0 light_angle|360) | [DV120](!token-mod --set light_otherplayers|off light_radius|120 light_dimradius|0 light_angle|360) | [*Light*](!token-mod --set light_otherplayers|on light_radius|40 light_dimradius|20 light_angle|360) | [*Daylight*](!token-mod --set light_otherplayers|on light_radius|120 light_dimradius|60 light_angle|360) | [*Faerie Fire*](!token-mod --set light_otherplayers|on light_radius|1 light_angle|3600 light_dimradius|0 statusmarkers|purple light_angle|360)
**Initiative**
[Roll Initiative](!group-init) | [Clear Tracker](!clear) | [Sort Tracker](!order)
**Status**
[Blue](!token-mod --set statusmarkers|!blue) | [Purple](!token-mod --set statusmarkers|!purple) | [Pink](!token-mod --set statusmarkers|!pink) | [Yellow](!token-mod --set statusmarkers|!yellow) | [OFF](!token-mod --set statusmarkers|=dead|-dead)
**Nameplate**
[Name On](!token-mod --set showplayers_name|yes showname|yes) | [Name Off](!token-mod --set showplayers_name|no showname|yes)
**MI**
[TokenMod ids](!token-mod --config players-can-ids|on)
[bull](!token-mod --on showname)
[move 2 gm layer](!token-mod --set layer|gmlayer)
[turn blue aura on](!token-mod --on showplayers_aura1 --set aura1_radius|35 aura1_color|0000ff)
[clear markers](!token-mod --set statusmarkers|=blue|-blue)
[Set Default Token](!token-mod --set defaulttoken)
[help](!token-mod --help)
}}

OGL Whisper Perception Check of Selected token

Description

API Scripts N/A

/w gm @{selected|wtype}&{template:npc}{{always=1}} {{[email protected]{selected|npc_name}}} {{rname=Perception}} {{mod=}} {{r1=[[@{selected|d20}+[[@{selected|npc_perception}]][PERCEPTION]]]}} {{r2=[[@{selected|d20}+[[@{selected|npc_perception}]][PERCEPTION]]]}}
/w gm @{selected|wtype}&{template:npc}{{normal=1}}{{[email protected]{selected|npc_name}}}{{rname=Passive Perception}} {{mod=}} {{r1=[[10+[[@{selected|npc_perception}]][PERCEPTION]]]}}

Whisper Perception Checks of Entire Party

Описание:

/w gm @{PC1|wtype}&{template:npc}{{always=1}} {{[email protected]{PC1|npc_name}}} {{rname=Perception}} {{mod=}} {{r1=[[@{PC1|d20}+[[@{PC1|npc_perception}]][PERCEPTION]]]}} {{r2=[[@{PC1|d20}+[[@{PC1|npc_perception}]][PERCEPTION]]] Passive [[10+[[@{PC1|npc_perception}]][PERCEPTION]]]}}
/w gm @{PC2|wtype}&{template:npc}{{always=1}} {{[email protected]{PC2|npc_name}}} {{rname=Perception}} {{mod=}} {{r1=[[@{PC2|d20}+[[@{PC1|npc_perception}]][PERCEPTION]]]}} {{r2=[[@{PC2|d20}+[[@{PC2|npc_perception}]][PERCEPTION]]] Passive [[10+[[@{PC2|npc_perception}]][PERCEPTION]]]}}
/w gm @{PC3|wtype}&{template:npc}{{always=1}} {{[email protected]{PC3|npc_name}}} {{rname=Perception}} {{mod=}} {{r1=[[@{PC3|d20}+[[@{PC1|npc_perception}]][PERCEPTION]]]}} {{r2=[[@{PC3|d20}+[[@{PC3|npc_perception}]][PERCEPTION]]] Passive [[10+[[@{PC3|npc_perception}]][PERCEPTION]]]}}
/w gm @{PC4|wtype}&{template:npc}{{always=1}} {{[email protected]{PC4|npc_name}}} {{rname=Perception}} {{mod=}} {{r1=[[@{PC4|d20}+[[@{PC4|npc_perception}]][PERCEPTION]]]}} {{r2=[[@{PC4|d20}+[[@{PC4|npc_perception}]][PERCEPTION]]] Passive [[10+[[@{PC4|npc_perception}]][PERCEPTION]]]}}

👁Perception

Description Fast Perception check

/w gm Perception: %{Selected|npc_perception} @{selected|wtype}&{template:npc} {{[email protected]{selected|npc_name}}} {{rname=Perception}} {{[email protected]{selected|npc_perception}}} {{r1=[[[email protected]{selected|npc_perception}]]}} @{selected|rtype}[email protected]{selected|npc_perception}]]}}

🛠️Base-menu

Description

API Scripts Token Mod

!token-mod {{
--on showname
light_hassight
showplayers_name
showplayers_bar1
showplayers_bar2
showplayers_bar3
showplayers_aura1
showplayers_aura2
--set represents|?{Character Name}
bar2_link|ac
bar1_link|hp
bar3_link|spell_save_dc
light_radius|5
light_dimradius|=-5
defaulttoken
}}

Potion-Healing

/em applies a Potion of healing to @{target|Target|token_name}
!token-mod {{
--set
bar3_value|[[{@{target|Target|bar3}+2d4+2, @{target|Target|bar3|Max}d1}kl1]]
--ids
@{target|Target|token_id}
}}

Token Utilities 1

🔗Token

/w @{selected|character_name} &{template:desc} {{desc=
**Token Utilities 1**
[Create token of monster](~DMUtilsOGL|Monster-Token-Setup)
[Create token of NPC](~DMUtilsOGL|NPC-Token-Setup)
[Create token of PC](~DMUtilsOGL|PC-Token-Setup)
[NPC RND HP](~DMUtilsOGL|NPC-RND-HP)
}}

Light/Vision options

👁

?{
Light/Vision options:
|Normal vision,!token-mod --set light_radius#1 light_dimradius#0 --on light_otherplayers
|Off,!token-mod --set light_radius#0 light_dimradius#0 --off light_otherplayers
|Darkvision,!token-mod --set light_radius#70 light_dimradius#=-70 --off light_otherplayers
|Candle,!token-mod --set light_radius#10 light_dimradius#7 --on light_otherplayers
|Lamp,!token-mod --set light_radius#30 light_dimradius#17 --on light_otherplayers
|Torch/Light Cantrip,!token-mod --set light_radius#40 light_dimradius#22 --on light_otherplayers
|Hooded Lantern/Bonfire,!token-mod --set light_radius#60 light_dimradius#31 --on light_otherplayers
|Daylight Spell,!token-mod --set light_radius#120 light_dimradius#61 --on light_otherplayers
|True Seeing,!token-mod --set light_radius#119 light_dimradius#119 --on light_otherplayers
}

Bonus

a macro template for any repeating section of the OGL sheet

/w @{selected|character_name} &{template:npcaction} {{rname=Checks}} {{description=Select Attack
[@{selected|repeating_attack_$0_atkname}](~selected|repeating_attack_$0_attack)[@{selected|repeating_attack_$1_atkname}](~selected|repeating_attack_$1_attack) [@{selected|repeating_attack_$2_atkname}](~selected|repeating_attack_$2_attack)
}}

Template for spells

/w @{selected|character_name} &{template:npcaction} {{rname=Spells}} {{description=Select Spell
[@{selected|*******}](~selected|@@@@@@)
}}

** replace with spell levels reference repeating macro (change spell to spellname) [%{selected|repeatingspell-1$0spell} >>>> @{selected|repeating_spell-1$0_spellname}]

List of callable names for each repeating section and their section name repeating(section name)$0_(name called) traits > name tool > toolname proficiencies > name inventory > itemname (for money) @{selected|} [replace with cp,sp,ep,gp,pp]

Statblock macro

/w GM &{template:npcaction} {{[email protected]{selected|npc_name}}} {{description=**AC** = @{selected|npc_AC}
**Type** = @{selected|npc_type}
**Challenge** = @{selected|npc_challenge}
**XP** = @{selected|npc_xp}
**HP** = @{selected|npc_hpbase}
**Speed** = @{selected|npc_speed}
**STR** = @{selected|strength} @{selected|strength_mod}
**DEX** = @{selected|dexterity} @{selected|dexterity_mod}
**CON** = @{selected|constitution}} @{selected|constitution_mod}
**INT** = @{selected|intelligence} @{selected|intelligence_mod}
**WIS** = @{selected|wisdom} @{selected|wisdom_mod}
**CHA** = @{selected|charisma} @{selected|charisma_mod}
**Immunity** = @{selected|npc_immunities}}
**Immunity Condition** = @{selected|npc_condition_immunities}} **Senses** = @{selected|npc_senses}}}

Scorching Ray + Hex macro

&{template:default}{{name=Scorching Ray}}{{attack = + [[1d4]] on attack roll If bless is active
•[[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]/[[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]
[[2d6]]Fire[[1d6]] necrotic
[[2d6]]Fire[[1d6]] necrotic If crit
•[[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]/[[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]
[[2d6]]Fire[[1d6]] necrotic
[[2d6]]Fire[[1d6]] necrotic If crit
•[[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]/[[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]
[[2d6]]Fire[[1d6]] necrotic
[[2d6]]Fire[[1d6]] necrotic If crit ?{Spell Slot|
2,
My 3 **Rays** do **Fire Damage** to selected targets |
3,
• Attack 4 [[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]/[[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]
[[2d6]]Fire[[1d6]] necrotic
[[2d6]]Fire[[1d6]] necrotic If crit
My 4 **Rays** do **Fire Damage** to selected targets |
4,
• Attack 4 [[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]/[[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]
[[2d6]]Fire[[1d6]] necrotic
[[2d6]]Fire[[1d6]] necrotic If crit
• Attack 5 [[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]/[[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]
[[2d6]]Fire[[1d6]] necrotic
[[2d6]]Fire[[1d6]] necrotic If crit
My 5 **Rays** do **Fire Damage** to selected targets|
5,
• [[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]/[[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]
[[2d6]]Fire[[1d6]] necrotic
[[2d6]]Fire[[1d6]] necrotic If crit
• [[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]/[[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]
[[2d6]]Fire[[1d6]] necrotic
[[2d6]]Fire[[1d6]] necrotic If crit
• [[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]/[[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]
[[2d6]]Fire[[1d6]] necrotic
[[2d6]]Fire[[1d6]] necrotic If crit
My 6 **Rays** do **Fire Damage** to selected targets|
6,
• [[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]/[[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]
[[2d6]]Fire[[1d6]] necrotic
[[2d6]]Fire[[1d6]] necrotic If crit
• [[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]/[[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]
[[2d6]]Fire[[1d6]] necrotic
[[2d6]]Fire[[1d6]] necrotic If crit
• [[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]/[[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]
[[2d6]]Fire[[1d6]] necrotic
[[2d6]]Fire[[1d6]] necrotic If crit
• [[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]/[[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]
[[2d6]]Fire[[1d6]] necrotic
[[2d6]]Fire[[1d6]] necrotic If crit
My 7 **Rays** do **Fire Damage** to selected targets|
7,
• [[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]/[[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]
[[2d6]]Fire[[1d6]] necrotic
[[2d6]]Fire[[1d6]] necrotic If crit
• [[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]/[[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]
[[2d6]]Fire[[1d6]] necrotic
[[2d6]]Fire[[1d6]] necrotic If crit
• [[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]/[[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]
[[2d6]]Fire[[1d6]] necrotic
[[2d6]]Fire[[1d6]] necrotic If crit
• [[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]/[[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]
[[2d6]]Fire[[1d6]] necrotic
[[2d6]]Fire[[1d6]] necrotic If crit
• [[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]/[[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]
[[2d6]]Fire[[1d6]] necrotic
[[2d6]]Fire[[1d6]] necrotic If crit
My 8 **Rays** do **Fire Damage** to selected targets|
8,
• [[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]/[[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]
[[2d6]]Fire[[1d6]] necrotic
[[2d6]]Fire[[1d6]] necrotic If crit
• [[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]/[[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]
[[2d6]]Fire[[1d6]] necrotic
[[2d6]]Fire[[1d6]] necrotic If crit
• [[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]/[[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]
[[2d6]]Fire[[1d6]] necrotic
[[2d6]]Fire[[1d6]] necrotic If crit
• [[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]/[[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]
[[2d6]]Fire[[1d6]] necrotic
[[2d6]]Fire[[1d6]] necrotic If crit
• [[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]/[[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]
[[2d6]]Fire[[1d6]] necrotic
[[2d6]]Fire[[1d6]] necrotic If crit
• [[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]/[[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]
[[2d6]]Fire[[1d6]] necrotic
[[2d6]]Fire[[1d6]] necrotic If crit
My 9 **Rays** do **Fire Damage** to selected targets|
9,
• [[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]/[[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]
[[2d6]]Fire[[1d6]] necrotic
[[2d6]]Fire[[1d6]] necrotic If crit
• [[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]/[[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]
[[2d6]]Fire[[1d6]] necrotic
[[2d6]]Fire[[1d6]] necrotic If crit
• [[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]/[[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]
[[2d6]]Fire[[1d6]] necrotic
[[2d6]]Fire[[1d6]] necrotic If crit
• [[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]/[[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]
[[2d6]]Fire[[1d6]] necrotic
[[2d6]]Fire[[1d6]] necrotic If crit
• [[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]/[[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]
[[2d6]]Fire[[1d6]] necrotic
[[2d6]]Fire[[1d6]] necrotic If crit
• [[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]/[[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]
[[2d6]]Fire[[1d6]] necrotic
[[2d6]]Fire[[1d6]] necrotic If crit
• [[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]/[[[email protected]{Player_name|charisma_mod}[email protected]{Player_name|pb}]]
[[2d6]]Fire[[1d6]] necrotic
[[2d6]]Fire[[1d6]] necrotic If crit
My 10 **Rays** do **Fire Damage** to selected targets
}}}

Template for NPC spellbook

@{wtype} &{template:default}{{[email protected]{character_name} Spellcasting}} {{Spell Save DC @{spell_save_dc}[email protected]{spell_attack_bonus} to hit with spell attacks}}{{Spells
=[@{repeating_spell-cantrip_$0_spellname}](~selected|repeating_spell-cantrip_$0_spell)
[@{repeating_spell-cantrip_$1_spellname}](~selected|repeating_spell-cantrip_$1_spell)
[@{repeating_spell-cantrip_$2_spellname}](~selected|repeating_spell-cantrip_$2_spell)
[@{repeating_spell-1_$0_spellname}](~selected|repeating_spell-1_$0_spell)
[@{repeating_spell-1_$1_spellname}](~selected|repeating_spell-1_$1_spell)
[@{repeating_spell-2_$0_spellname}](~selected|repeating_spell-2_$0_spell)
[@{repeating_spell-2_$1_spellname}](~selected|repeating_spell-2_$1_spell)
}}

Magic Items Macros

Wand of Magic Missiles OGL

@{wtype} &{template:atkdmg} {{rname=Wand of Magic Missiles}} {{attack=0}} {{range=120 feet}} {{damage=1}} {{dmg1flag=1}} {{dmg1=[[ [[2+?{Charges|1}]]d4 + [[2+?{Charges}]] ]]}} {{dmg1type=force}} {{damage=1}} {{desc=1}} {{desc=?{Charges} charge(s)}} {{[email protected]{Testing|character_name}}}
!setattr --charid @{Testing|character_id} --repeating_resource_$0_resource_right|1 --silent

Roll20 forum

Staff of Healing OGL

/em using Staff of Healing
?{Staff of Healing|Cure Wounds,%{Testing|Cure-Wounds}|Lesser Restoration,%{Testing|Lesser-Restoration}|Mass Cure Wounds,%{Testing|Mass-Cure-Wounds}}
@{wtype}&{template:dmg&# 125; {{rname=Cure Wounds&# 125;&# 125;{{range=Touch&# 125;&# 125;{{damage=1&# 125;&# 125;{{dmg1flag=1&# 125;&# 125; {{dmg1=[[1d8+[[@{spellcasting_ability}]]]]&# 125;&# 125; {{dmg1type=Healing&# 125;&# 125;{{hldmg=[[[[(1*{(?{Charges&# 124;1&# 124;2&# 124;3&# 124;4&# 125;-1)&# 44;@{other_resource}&# 125;kl1)]]d8]]&# 125;&# 125;
!setattr --charid @{character_id} --modb --other_resource&# 124;-?{Charges&# 125; --silent
@{wtype}&{template:spell&# 125; {{level=abjuration 2&# 125;&# 125; {{name=Lesser Restoration&# 125;&# 125; {{castingtime=1 action&# 125;&# 125; {{range=Touch&# 125;&# 125;{{v=1&# 125;&# 125; {{s=1&# 125;&# 125;{{duration=Instantaneous&# 125;&# 125;{{description=You touch a creature and can end either one disease or one condition afflicting it. The condition can be blinded&# 44; deafened&# 44; paralyzed&# 44; or poisoned.&# 125;&# 125;
!setattr --charid @{character_id} --modb --other_resource&# 124;-2 --silent
@{wtype}&{template:dmg&# 125;{{rname=Mass Cure Wounds&# 125;&# 125;{{range=60 ft&# 125;&# 125;{{damage=1&# 125;&# 125;{{dmg1flag=1&# 125;&# 125;{{dmg1=[[3d8]]&# 125;&# 125;{{dmg1type=Healing&# 125;&# 125;
!setattr --charid @{character_id} --modb --other_resource&# 124;-5 --silent
@{output_option} &{template:5e-shaped&# 125;{{title=Mass Cure Wounds&# 125;&# 125;{{range=60 ft&# 125;&# 125;{{trait=1&# 125;&# 125;{{heal=[[3d8]]&# 125;&# 125; {{[email protected]{repeating_equipment_-KbFI1CvPYgpQEOMsWgZ_uses}&# 125;&# 125; {{[email protected]{repeating_equipment_-KbFI1CvPYgpQEOMsWgZ_uses|max}&# 125;&# 125;
!setattr --charid @{character_id} --modb --repeating_equipment_-KbFI1CvPYgpQEOMsWgZ_uses&# 124;-5 --silent
@{output_option} &{template:5e-shaped&# 125; {{title=Lesser Restoration&# 125;&# 125; {{spell=1&# 125;&# 125; {{spell_level=^{2ND_LEVEL&# 125;&# 125;&# 125; {{school=^{ABJURATION&# 125;&# 125;&# 125; {{casting_time=^{1_ACTION&# 125;&# 125;&# 125; {{range=Touch&# 125;&# 125; {{components=^{COMPONENTS_V_S&# 125;&# 125;&# 125; {{duration=^{INSTANTANEOUS&# 125;&# 125;&# 125; {{content=You touch a creature and can end either one disease or one condition afflicting it. The condition can be blinded&# 44; deafened&# 44; paralyzed&# 44; or poisoned.&# 125;&# 125;
!setattr --charid @{character_id} --modb --repeating_equipment_-KbFI1CvPYgpQEOMsWgZ_uses&# 124;-2 --silent

If you want to say "Thank you", you can buy