Skip to content

Instantly share code, notes, and snippets.

View KSops's full-sized avatar

Kyle Sakai KSops

  • PressReader Inc.
  • Canada
View GitHub Profile
@KSops
KSops / style.css
Created January 5, 2023 09:06
Styling Enhancements to PF2e FVTT
/* Custom CSS */
/*
Used in many places like:
right chat box
window titles
Original value: rgba(20,20,20,0.6)
*/
.app {
background-color: rgba(20,20,20,0.9)
@KSops
KSops / alchemy-macro.js
Last active August 17, 2024 20:34
Foundry Fabula Ultima Macros
// Configurables
const alliedColor = "green";
const enemyColor = "red";
// Effect refs
const airResistance = "eyJuYW1lIjoiQWlyIFJlc2lzdGFuY2UiLCJjaGFuZ2VzIjpbeyJrZXkiOiJzeXN0ZW0uYWZmaW5pdGllcy5haXIiLCJtb2RlIjowLCJ2YWx1ZSI6InVwZ3JhZGUifV0sImljb24iOiIvaWNvbnMvc3ZnL2F1cmEuc3ZnIn0=";
const fireResistance = "eyJuYW1lIjoiRmlyZSBSZXNpc3RhbmNlIiwiY2hhbmdlcyI6W3sia2V5Ijoic3lzdGVtLmFmZmluaXRpZXMuZmlyZSIsIm1vZGUiOjAsInZhbHVlIjoidXBncmFkZSJ9XSwiaWNvbiI6Ii9pY29ucy9zdmcvYXVyYS5zdmcifQ==";
const boltResistance = "eyJuYW1lIjoiQm9sdCBSZXNpc3RhbmNlIiwiY2hhbmdlcyI6W3sia2V5Ijoic3lzdGVtLmFmZmluaXRpZXMuYm9sdCIsIm1vZGUiOjAsInZhbHVlIjoidXBncmFkZSJ9XSwiaWNvbiI6Ii9pY29ucy9zdmcvYXVyYS5zdmcifQ==";
const iceResistance = "eyJuYW1lIjoiSWNlIFJlc2lzdGFuY2UiLCJjaGFuZ2VzIjpbeyJrZXkiOiJzeXN0ZW0uYWZmaW5pdGllcy5pY2UiLCJtb2RlIjowLCJ2YWx1ZSI6InVwZ3JhZGUifV0sImljb24iOiIvaWNvbnMvc3ZnL2F1cmEuc3ZnIn0=";
const darkResistance = "eyJuYW1lIjoiRGFyayBSZXNpc3RhbmNlIiwiY2hhbmdlcyI6W3sia2V5Ijoic3lzdGVtLmFmZmluaXRpZXMuZGFyayIsIm1vZGUiOjAsInZhbHVlIjoidXBncmFkZS
@KSops
KSops / discover-ingredients.js
Last active March 31, 2025 03:38
gourmet-discover-ingredients macro
// Setup
let tastes = ["bitter", "salty", "sour", "sweet", "umami"];
let ingredients = actor.itemTypes.classFeature.filter(x => x.system.featureType === "projectfu.ingredient");
let ingredientMap = {};
ingredients.forEach(i => {
let taste = i.system.data.taste;
if (ingredientMap[taste] == null) {
ingredientMap[taste] = i;
}
});
@KSops
KSops / bimagus-calculator.js
Last active October 6, 2025 05:31
Foundry Fabula Ultima Macros
// Setup
const mpMin = 20;
const mpMax = 50;
let mpCurrent = mpMin;
let spellChoice1 = undefined;
let spellChoice2 = undefined;
let isUpdatingMp = false;
const spells = actor.itemTypes.spell.flatMap(spell => {
const targeting = spell.system?.targeting;