Skip to content

Instantly share code, notes, and snippets.

@Bastlifa
Bastlifa / AddWep.js
Last active November 21, 2018 06:38
Add Weapon to FFG SW Sheets on Roll20
on("ready", function() {
on('chat:message', function(msg) {
if (msg.type === "api" && msg.content.split(' ')[0] === "!AddWep")
{
// strips the first bit off of the api command
let weaponName = msg.content.replace("!AddWep ", "");
AddWep(msg, weaponName);
}
});
});
@Bastlifa
Bastlifa / TableMaker.js
Created December 17, 2018 03:00
Roll20 Table Maker via Blank Character Sheet
//TableMaker
//Make a character with no sheet.
//All attributes are table entries, all current values are weights.
//Drag token (can be default) to canvas. Select it. Type !TableMaker <table name> into chat and hit enter
//Table name must use dashes for spaces (probably)
//Transmog your table over to whatever game you need it for.
//This probably sucks, don't use it.
on("ready", function() {
@Bastlifa
Bastlifa / CombatManeuverBatch
Created September 4, 2019 01:48
Combat Maneuver Batch Adder for Roll20 PF1
// Add other maneuvers as desired.
// Select PC tokens tokens, hit !CombatManeuverBatch
var generateUUID = (function() {
"use strict";
var a = 0, b = [];
return function() {
var c = (new Date()).getTime() + 0, d = c === a;
a = c;
@Bastlifa
Bastlifa / ScreenShaker.js
Last active May 13, 2020 00:08
Roll20 API script to shake the screen, maybe for earthquake
/* Screen Shake (really just maps, tokens, and paths)
make a macro with the folloing body
/w gm &{template:default} {{name=Screen Shaker}} {{[Start](!ScreenShake)}} {{[Shake With Time](!ScreenShake &#63;{time})}} {{[Stop](!ScreenShakeStop)}}
*/
on("ready", function() {
var ScreenShakeEnabled = true;
on("chat:message", function (msg) {
if (msg.type === "api" && msg.content.split(' ')[0] === "!ScreenShake" && playerIsGM(msg.playerid))
{
var shakeTime = 0;
@Bastlifa
Bastlifa / witcherLifeEvent.js
Created May 15, 2020 01:56
Witcher TTRPG Life Events Script for Roll20
on("ready", function()
{
on("chat:message", function (msg)
{
if (msg.type === "api" && msg.content === "!allyEnemy")
{
allyEnemy()
}
if (msg.type === "api" && msg.content === "!fortuneMisfortune")
{
@Bastlifa
Bastlifa / DruidShift
Last active August 19, 2020 04:08
Druid Shift Script for Roll20 D&D 5E OGL Sheet
/**************************************** Druid Shift ****************************************
This is for the 5E OGL sheet in Roll20. It will probably not work with any others without
some modification. Also, I didn't do much in the way of error checking.
The GM must make character named Druid X, where X is the creature being shifted into.
It is suggested that the GM duplicate existing creatures, rename them, and assign to the druid
player. The images for the characters must be uploaded and assigned to the avatar of the druid
form characters. The easiest way I've found it to open the character sheet, edit, right click
the picture in the avatar, copy, paste into your image program, save, upload and put it back in.
Maybe you could just upload it back into the avatar directly. Anyways, this won't work if you
@Bastlifa
Bastlifa / TemplateGenMacro
Last active September 15, 2020 20:51
Roll20 API Script to create aoe templates at tokens.
&{template:npcaction} {{name=Size and Shape}} {{rname=Shape Maker}} {{description=**Circle Radius**
[5 ft](!TemplateGenerator Circle 5) | [10 ft](!TemplateGenerator Circle 10) | [20 ft](!TemplateGenerator Circle 20) | [30 ft](!TemplateGenerator Circle 30) | [40 ft](!TemplateGenerator Circle 40)
________________________
**Square Side**
[10 ft](!TemplateGenerator Square 10) | [15 ft](!TemplateGenerator Square 15) | [20 ft](!TemplateGenerator Square 20) | [40 ft](!TemplateGenerator Square 40)
________________________
**Cones**
[60](!TemplateGenerator Cone 60 135) -------- [60](!TemplateGenerator Cone 60 90) -------- [60](!TemplateGenerator Cone 60 45)
----[30](!TemplateGenerator Cone 30 135) ---- [30](!TemplateGenerator Cone 30 90) ---- [30](!TemplateGenerator Cone 30 45)----
--------[15](!TemplateGenerator Cone 15 135) [15](!TemplateGenerator Cone 15 90) [15](!TemplateGenerator Cone 15 45)---------
@Bastlifa
Bastlifa / DiceSetup.js
Last active April 8, 2021 08:45
Dice Macro Setup for roll20: buttons make for faster rolling.
on("ready", function()
{
on("chat:message", function (msg)
{
if (msg.type === "api" && msg.content === "!DiceMacroSetup")
{
if (playerIsGM(msg.playerid))
{
if (!findObjs({_type: 'macro', _playerid: msg.playerid, name: 'd2'})[0])
{
@Bastlifa
Bastlifa / gist:291d456123179b335b408827a7fe24d4
Last active March 3, 2022 21:47
Threat and Momentum Report and Adjustment for Star Trek Adventures on Roll20. Simplified by Aaron.
/************************************************************************************************************
You will need to create a character named TMChar. Leave him empty, but in the attributes and abilities tab,
add two attributes: PoolThreat, and PoolMomentum. Set appropriate caps. Momentum caps at 6, I believe.
I chose 20 for a threat cap, but I'm not sure there is one. You can edit to remove the cap on threat,
or just set it very high on the sheet.
You will then need to make 5 macros, with the following bodies:
!TMReport
!TMThreatInc
!TMThreatDec
!TMMomentumInc
@Bastlifa
Bastlifa / rooftops.js
Last active July 23, 2023 08:22
Rooftops plus dynamic lighting
// a script to remove rooftops if a player enters a building
// move the player flag to the page you want to use this on
// draw your dynamic lighting lines on your building
// use a roof token, best if it's rotation is an integer multiple of 90 degrees (0, 90, 180, 270)
// name the roof token "roof", without the quotes. Preferable put it on map layer
// drag in player tokens. That is, tokens either assigned to players, or representing characters assigned to player
// type !RoofReady into chat, or better yet, use it from a macro. Alternatively, dragging the player flag to the page does this.
// should be good to go. Let me know if there are errors please :)
// other feature: !RoofDLOff and !RoofDLOn will now turn off or on the dynamic lighting interaction of the script. Default is 'on'.
// if you want default to be off, change the declaration on line 21 to read: var dlInteraction = false;