Skip to content

Instantly share code, notes, and snippets.

@Undrhil
Created November 29, 2020 11:03
Show Gist options
  • Save Undrhil/15cf005efe8a9ee2c05e19b4687baae1 to your computer and use it in GitHub Desktop.
Save Undrhil/15cf005efe8a9ee2c05e19b4687baae1 to your computer and use it in GitHub Desktop.
TCoE Subclasses coded by Undrhil
/* -WHAT IS THIS?-
This file adds optional material to "MPMB's Character Record Sheet" found at https://flapkan.com/mpmb/charsheets
Import this file using the "Add Extra Materials" bookmark.
-KEEP IN MIND-
It is recommended to enter the code in a fresh sheet before adding any other information (i.e. before making my character with it).
*/
/* -INFORMATION-
Subject: "Tasha's Cauldron of Everything"
Effect: This script adds most player options from the book "Tasha's Cauldron of Everything"
This is based on the hardcover publication of the book November 2020
All content was produced by Dungeons & Dragons ©2020 Wizards of the Coast LLC
Content: New Rogue Subclass - The Phantom
Code by: Undrhil & MorePurpleMoreBetter
Import by: Undrhil
Date: 2020-11-29 (sheet v13.0.5)
Please support the creator of this content (Wizards of the Coast) and purchase therir creation.
It contains a lot more than just player options!
Link: https://www.dndbeyond.com/sources/tcoe
*/
var iFileName = "Rogue_Phantom_Subclass_TCoE.js";
RequiredSheetVersion(13);
// Define the source
SourceList.T={
name : "Tasha's Cauldron of Everything",
abbreviation : "TCoE",
group : "Primary Sources",
date : "2020/11/17",
},
AddSubClass("rogue", "phantom", {
regExpSearch : /^(?=.*rogue)(?=.*phantom).*$/i,
subname : "Phantom",
Source : ["T",62],
features : {
"subclassfeature3" : {
name : "Whispers of the Dead",
source : ["T", 62],
minlevel : 3,
description : desc([
"Whenever I finish a short or long rest, I gain one skill or tool proficiency of my choice.",
"This proficiency lasts until I use this feature again"
])
},
"subclassfeature3.1" : {
name : "Wails from the Grave",
source : ["T",62],
minlevel : 3,
description : desc([
"Immediately after I deal Sneak Attack damage on my turn, I can target a second",
"creature that I can see within 30 ft of the first creature. I roll half the number of",
"Sneak Attack dice for my level \(round up\). and the second creature takes psychic",
"damage equal to the roll's total.",
"I can use this feature a number of times equal to my proficiency bonus and regain",
"all expended uses when I finish a long rest."
]),
usages : "Proficiency bonus per ",
usagescalc : "event.value = What('Proficiency Bonus');",
recovery : "long rest"
},
"subclassfeature9" : {
name : "Tokens of the Departed",
source : ["T", 63],
minlevel : 9,
description : desc([
"As a reaction when a creature I can see dies within 30 ft of me, I get a Tiny trinket,",
"a soul trinket. DM chooses the trinket's form or have me roll on the Trinkets table",
"in the Player's Handbook.",
"I can have a max number of soul trinkets equal to my proficiency bonus, and I cannot",
"create a new one while at my max.",
"While the soul trinket is on my person, I have advantage on death saving throws",
"and Constitution saving throws.",
"When I deal Sneak Attack damage on my turn, I can destroy a soul trinket and",
"immediately use Wail of the Grave feature without expending a use of that feature.",
"As an action, I can destroy one of my soul trinkets, no matter where it's located.",
"When I do, I can ask the spirit associated with the trinket one question. The spirit",
"appears and answers in a language it knew in life. It doesn't have to be truthful and",
"it answers as concisely as possible before departing. It knows only what it knew in life."
]),
action : [["reaction","create a soul trinket"],["action","destroy a soul trinket"]]
},
"subclassfeature13" : {
name : "Ghost Walk",
source : "TCoE,63",
minlevel : 13,
description : desc([
"As a bonus action, I assume a spectral form. While in this form, I have a fly speed",
"of 10 ft, can hover, and attack rolls have disadvantage against me. I can move through",
"creatures and objects as if difficult terrain; I take 1d10 force damage if I end my",
"turn inside a creature or an object.",
"I stay in this form for 10 minutes or until I end it as a bonus action. To use this",
"feature again, I must finish a long rest or destroy a soul trinket as part of the",
"bonus action to activate Ghost Walk."
]),
usages : "destroy soul trinket or 1x per ",
recovery : "long rest",
action : ["bonus action","begin/end Ghost Walk"]
},
"subclassfeature17" : {
name : "Death's Friend",
source : ["T",63],
minlevel : 17,
description : desc([
"\u25C6 When I use my Wails from the Grave feature, I can now deal the psychic damage",
"to both the first and second creature.",
"\u25C6 I get a soul trinket at the end of a long rest as spirits of the dead are",
"drawn to me."
])
}
}
});
/* -WHAT IS THIS?-
This file adds optional material to "MPMB's Character Record Sheet" found at https://flapkan.com/mpmb/charsheets
Import this file using the "Add Extra Materials" bookmark.
-KEEP IN MIND-
It is recommended to enter the code in a fresh sheet before adding any other information (i.e. before making my character with it).
*/
/* -INFORMATION-
Subject: "Tasha's Cauldron of Everything"
Effect: This script adds most player options from the book "Tasha's Cauldron of Everything"
This is based on the hardcover publication of the book November 2020
All content was produced by Dungeons & Dragons ©2020 Wizards of the Coast LLC
Content: New Warlock Subclasses
Code by: Undrhil & MorePurpleMoreBetter
Import by: Undrhil
Date: 2020-11-29 (sheet v13.0.5)
Please support the creator of this content (Wizards of the Coast) and purchase therir creation.
It contains a lot more than just player options!
Link: https://www.dndbeyond.com/sources/tcoe
*/
var iFileName = "Warlock_Subclasses_TCoE.js";
RequiredSheetVersion(13);
// Define the source
SourceList.T={
name : "Tasha's Cauldron of Everything",
abbreviation : "TCoE",
group : "Primary Sources",
date : "2020/11/17",
},
AddSubClass("warlock", "the fathomless", {
regExpSearch : /^(?=.*warlock)(?=.*fathomless).*$/i,
subname : "The Fathomless",
source : ["T",72],
features : {
"subclassfeature1" : {
name : "Tentacle of the Deep",
source : ["T",72],
minlevel : 1,
description : desc([
"Bonus action to create a 10 foot-long tentacle within 60 feet.",
"Can attack with it when created and when I use a bonus action to move it 30'",
"Melee spell attack that does 1d8 cold dmg and -10 to its speed.",
"Tentacle lasts for 1 minute and can be summoned a number of times equal to my","Proficiency bonus per long rest"
]),
action : ["bonus action","summon/move tentacle"],
usages : "Prof. Bonus per ",
usagescalc : "event.value = What('Proficiency Bonus');",
recovery : "long rest"
},
"subclassfeature1.1" : {
name : "Expanded Spell List",
source : ["T",72],
minlevel : 1,
spellcastingExtra : ["create or destroy water", "thunderwave", "gust of wind", "silence", "lightning bolt", "sleet storm", "control water", "summon elemental", "bigby's hand", "cone of cold"],
description : desc([
"My patron grants me extra spells I can choose from. Water only for",
"Summon Elemental and Bigby's Hand appears as a tentacle."
]),
},
"subclassfeature1.2" : {
name : "Gift of the Sea",
source : ["T",72],
minlevel : 1,
description : desc([
"I gain a swim speed of 40' and can breathe underwater."
]),
},
"subclassfeature6" : {
name : "Oceanic Soul",
minlevel : 6,
source : ["T",73],
description : desc ([
"I gain resistance to cold damage. In addition, while completely",
"submerged under water, othe submerged creatures understand me."
]),
dmgres : ["Cold"]
},
"subclassfeature6.1" : {
name : "Guardian Coil",
minlevel : 6,
source : ["T",73],
description : desc([
"With Tentacle of the Deep summoned, reaction when me or any",
"creature that I see within 10 feet of it to reduce dmg by 1d8",
"This increases to 2d8 at level 10."
]),
/* action : ["reaction","reduce dmg by 1d8"], */
},
"subclassfeature10" : {
name : "Grasping Tentacles",
source : ["T",73],
minlevel : 10,
description : desc([
"I learn Evard's Black Tentacles spell, it counts as a Warlock spell",
"but doesn't count against number of spells known. Can cast it once",
"per long rest without using a spell slot",
"I gain temporary hit points equal to my Warlock level and damage",
"doesn't break concentration on this spell"
]),
spellcastingBonus : {
name: "Grasping Tentacles",
spells: ["evard's black tentacles"],
selection: ["evard's black tentacles"],
firstCol: "oncelr"
},
usages : "1x per ",
recovery : "long rest"
},
"subclassfeature14" : {
name : "Fathomless Plunge",
source : ["T",73],
minlevel : 14,
description : desc ([
"As an action, I teleport myself and up to 5 willing creatures up to 1 mile to a body",
"of water I've seen (pond or larger) or within 30 feet of it, appearing within 30'",
"of each other. Must finish short or long rest to use again."
]),
action : ["action",""],
usages : "1x per ",
recovery : "short rest"
}
}
});
AddSubClass("warlock", "the genie", {
regExpSearch : /^(?=.*warlock)((?=.*genie)|(?=.*dao)(?=.*djinni)(?=.*efreeti)(?=.*marid)).*$/i,
subname : "The Genie",
source : ["T",73],
features : {
"subclassfeature1" : {
name : "Choose your patron",
source : ["T",73],
minlevel : 1,
description : "\n " + "Use the \"Choose Feature\" button above to choose your Genie Patron",
extraname : "Genie Kind",
choices : ["dao", "djinni", "efreeti", "marid"],
"dao" : {
name : "Dao",
source : ["T", 73],
spellcastingExtra : ["detect evil and good", "sanctuary", "phantasmal force", "spike growth", "create food and water", "meld into stone", "phantasmal killer", "creation", "stone shape", "wall of stone", "wish"],
description : "\n " + "My Genie patron is a Dao, associated with Earth"
},
"djinni" : {
name : "Djinni",
source : ["T", 73],
spellcastingExtra : ["detect evil and good", "thunderwave", "phantasmal force", "gust of wind", "create food and water", "wind wall", "phantasmal killer", "greater invisibility", "creation", "seeming", "wish"],
description : "\n " + "My Genie patron is a Djinni, associated with Air"
},
"efreeti" : {
name : "Efreeti",
source : ["T", 73],
spellcastingExtra : ["detect evil and good", "burning hands", "phantasmal force", "scorching ray", "create food and water", "fireball", "phantasmal killer", "fire shield", "creation", "flame strike", "wish"],
description : "\n " + "My Genie patron is an Efreeti, associated with Fire"
},
"marid" : {
name : "Marid",
source : ["T", 73],
spellcastingExtra : ["detect evil and good", "fog cloud", "phantasmal force", "blur", "create food and water", "sleet storm", "phantasmal killer", "control water", "creation", "cone of cold", "wish"],
description : "\n " + "My Genie patron is a Marid, associated with Water"
},
choiceDependencies : [{
feature : "subclassfeature6"
}, {
feature : "subclassfeature1.2"
}]
},
"subclassfeature1.1" : {
name : "Expanded Spell List",
source : ["T",73],
minlevel : 1,
/* description : "\n " + "I gain additional spells which I can choose from when selecting my Warlock spells" + "\n " + "These additional spells are determined by my Genie patron.",*/
calcChanges : {
spellList : [
function(spList, spName, spType) {
// don't add if this is not a class or a list of spells is already given
if (!ClassList[spName] || spList.spells || spList.psionic) return;
// if this is an 'extra spell', also test if it uses the class' spell list or not
if (spType.indexOf("bonus") !== -1 && (spList.school || !spList["class"] || (spList["class"].indexOf(spName) === -1 && spName !== "fighter"))) return;
spList.extraspells = spList.extraspells.concat(["wish"]);
},
"The Genie Patron adds Wish as a spell available as a 9th level Mystic Arcanum."
]
},
},
"subclassfeature1.2" : {
name : "Genie's Vessel",
source : ["T",73],
minlevel : 1,
description : desc([
"My patron gifts me a magical vessel that grants me a measure of my patron's power.",
"Tiny object; spellcasting focus for my Warlock spells",
"While I am touching the vessel, I can use Bottled Respite or Genie's Wrath \(See Notes.\).",
"The Vessel's AC equals my spell save DC. Its hit points equal my Warlock level plus my",
"prof. bonus, and it is immune to poison and psychic damage.",
"If destroyed, I can perform a 1 hour ritual to reclaim. It vanishes when I die.",
"Choose form or roll a d6: 1. Oil lamp, 2. Urn, 3. Ring with compartment,",
"4. Stoppered bottle, 5. Hollow Statuette, 6. Ornate lantern"
]),
"dao" : {
name : "Genie's Vessel",
additional : "Genie's Wrath: bludgeoning"
},
"djinni" : {
name : "Genie's Vessel",
additional : "Genie's Wrath: thunder"
},
"efreeti" : {
name : "Genie's Vessel",
additional : "Genie's Wrath: fire"
},
"marid" : {
name : "Genie's Vessel",
additional : "Genie's Wrath: cold"
},
toNotesPage : [{
name : "Genie's Vessel",
source : ["T",3],
popupName : "Genie's Vessel",
note : [
"Bottled Respite",
"As an action, I can magically vanish and enter my vessel, which remains in the space I left.",
"The interior of the vessel is an extradimensional space in the shape of a 20-foot-radius",
"cylinder, 20 feet high, and resembles my vessel. The interior is comfortably appointed with",
"cushions and low tables and is a comfortable temperature. While inside, I can hear the area",
"around my vessel as if I were in its space. I can remain inside the vessel up to a number of",
"hours equal to twice my proficiency bonus. I exit the vessel early if I use a bonus action",
"to leave, if I die, or if the vessel is destroyed. When I exit the vessel, I appear in the",
"unoccupied space closest to it. Any objects left in the vessel remain there until carried",
"out, and if the vessel is destroyed, every object stored there harmlessly appears in the",
"unoccupied spaces closest to the vessel’s former space. Once I enter the vessel, I can’t",
"enter again until I finish a long rest.",
"Genie's Wrath",
"Once during each of my turns when I hit with an attack roll, I can deal extra damage to",
"the target equal to my proficiency bonus. The type of this damage is determined by",
"my patron: bludgeoning \(dao\), thunder \(djinni\), fire \(efreeti\), or cold \(marid\)."
]
}],
action :["action","Bottled Respite"],
usages : "Enter 1x per ",
recovery : "long rest"
},
"subclassfeature6" : {
name : "Elemental Gift",
minlevel : 6,
"dao" : {
name : "Elemental Gift",
source : ["T",75],
description : desc ([
"I gain resistance to bludgeoning damage. Bonus action to gain a fly speed of 30 ft",
"which lasts for 10 min and I can hover. I can use this bonus action a number of",
"times equal to my prof. bonus and I regain all uses after a long rest.",
]),
dmgres : "Bludgeoning"
},
"djinni" : {
name : "Elemental Gift",
source : ["T",75],
description : desc ([
"I gain resistance to thunder damage. Bonus action to gain a fly speed of 30 ft",
"which lasts for 10 min and I can hover. I can use this bonus action as number of",
"times equal to my prof. bonus and I regain all uses after a long rest.",
]),
dmgres : ["Thunder"]
},
"efreeti" : {
name : "Elemental Gift",
source : ["T",75],
description : desc ([
"I gain resistance to fire damage. Bonus action to gain a fly speed of 30 ft",
"which lasts for 10 min and I can hover. I can use this bonus action as number of",
"times equal to my prof. bonus and I regain all uses after a long rest.",
]),
dmgres : ["Fire"]
},
"marid" : {
name : "Elemental Gift",
source : ["T",75],
description : desc ([
"I gain resistance to cold damage. Bonus action to gain a fly speed of 30 ft",
"which lasts for 10 min and I can hover. I can use this bonus action as number of",
"times equal to my prof. bonus and I regain all uses after a long rest.",
]),
dmgres : ["Cold"]
},
action : ["bonus action","30 ft Fly Speed"],
usages : "Prof. Bonus per ",
usagescalc : "event.value = What('Proficiency Bonus');",
recovery : "long rest"
},
"subclassfeature10" : {
name : "Sanctuary Vessel",
source : ["T",75],
minlevel : 10,
description : desc([
"When I enter my Genie’s Vessel via the Bottled Respite feature, I can now choose up to",
"five willing creatures that I can see within 30 feet of me, and the chosen creatures are",
"drawn into the vessel with me. As a bonus action, I can eject any number of creatures",
"from the vessel, and everyone is ejected if I leave or the vessel is destroyed.",
"In addition, anyone (including me) who remains within the vessel for at least 10 minutes",
"gains the benefit of finishing a short rest, and anyone can add my proficiency bonus",
"to the number hit points they regain if they spend Hit Dice as part of a short rest there."
])
},
"subclassfeature14" : {
name : "Limited Wish",
source : ["T",75],
minlevel : 14,
description : desc ([
"I entreat my patron to grant me a small wish. As an action, I can speak my desire to my",
"Genie’s Vessel, requesting the effect of one spell that is 6th level or lower and has a",
"casting time of 1 action. The spell can be from any class’s spell list, and I don’t need to",
"meet the requirements in that spell, including costly components; the spell simply takes",
"effect as part of this action.",
"Once I use this feature, I can’t use it again until I finish 1d4 long rests."
]),
action : ["action",""],
usages : "1d4 ",
recovery : "long rest"
}
}
});
/* -WHAT IS THIS?-
This file adds optional material to "MPMB's Character Record Sheet" found at https://flapkan.com/mpmb/charsheets
Import this file using the "Add Extra Materials" bookmark.
-KEEP IN MIND-
It is recommended to enter the code in a fresh sheet before adding any other information (i.e. before making my character with it).
*/
/* -INFORMATION-
Subject: "Tasha's Cauldron of Everything"
Effect: This script adds most player options from the book "Tasha's Cauldron of Everything"
This is based on the hardcover publication of the book November 2020
All content was produced by Dungeons & Dragons ©2020 Wizards of the Coast LLC
Content: New Wizard Subclass - Order of the Scribe
Code by: Undrhil & MorePurpleMoreBetter
Import by: Undrhil
Date: 2020-11-29 (sheet v13.0.5)
Please support the creator of this content (Wizards of the Coast) and purchase therir creation.
It contains a lot more than just player options!
*/
var iFileName = "Wizard_Scribe_Subclass_TCoE.js";
RequiredSheetVersion(13);
// Define the source
SourceList.T={
name : "Tasha's Cauldron of Everything",
abbreviation : "TCoE",
group : "Primary Sources",
date : "2020/11/17",
},
AddSubClass("wizard","order of scribes", {
regExpSearch : /^(?=.*wizard)(?=.*order)(?=.*scribes).*$/i,
subname : "Order of Scribes",
source : ["TCoE",77],
features : {
"subclassfeature2" : {
name : "Wizardly Quill",
source : ["TCoE",77],
minlevel : 2,
description : desc([
"As a bonus action, I can magically create a Tiny quill. It disappears if I ",
"create another one or I die. It has the following properties:",
"\u25C6 It doesn't require ink; produces ink in color of my choice",
"\u25C6 If used for spell transcribing, 2 minutes per spell level",
"\u25C6 As a bonus action, I can erase any text I've written with the quill",
" as long as it's within 5 ft",
]),
action : [["bonus action","create quill"],["bonus action","erase text"]]
},
"subclassfeature2.1" : {
name : "Awakened Spellbook",
source :["TCoE",77],
minlevel : 2,
description : desc ([
"I have awakened an arcane sentience within my spellbook.",
"While I am holding the book, it grants me the followings benefits",
"\u25C6 I can use the book as a spellcasting focus for my wizard spells",
"\u25C6 When I cast a wizard spell with a spell slot, I can temp. replace its",
" damage type with another type of a spell in my spellbook of the same",
" level as the slot used to cast this spell",
"\u25C6 When I cast a wizard spell as a ritual, I can use the spell's normal",
" casting time, rather than adding 10 minutes to it. Once I use this benefit",
" I can't use it again until I take a long rest.",
"Can replace the book over a short rest by using my Wizardly Quill to write arcane",
"sigils in a blank book or a spellbook to which I am attuned. All spells vanish from",
"previous book if it exists somewhere."
]),
usages : 1,
recovery : "long rest"
},
"subclassfeature10" : {
name : "Master Scrivener",
source : ["TCoE",79],
minlevel : 10,
description : desc([
"Whenever I finish a long rest, I can create a magic scroll by touching my Wizardly",
"Quill to a blank piece of paper or parchment and causing one spell from my Awakened",
"Spellbook to be copied onto the scroll. The spellbook must be within 5 ft to do this.",
"Chosen spell must be 1st or 2nd level and have a casting time of 1 action. Once in the",
"scroll, the spell's power is enhanced counting as 1 level higher than normal. I can",
"cast this spell as an action by reading the scroll. No one else can read it and it",
"vanishes when I cast it or finish my next long rest.",
"When I craft spell scrolls, gold and time are halved when using my Wizardly Quill."
]),
usages : 1,
recovery : "long rest",
action : ["action","cast Scrivener scroll"]
},
"subclassfeature6" : {
name : "Manifest Mind",
source : ["TCoE",78],
minlevel : 6,
description : desc([
"As a bonus action, I can cause my Awakened Spellbook to manifest. See \"Notes\" page",
"Once conjured, I can't do so again until I finish a long rest or expend a spell",
"slot of any level."
]),
toNotesPage : [{
name : "Manifest Mind",
source : ["TCoE",78],
popupName : "Manifest Mind",
page3notes : false,
note : desc (["As a bonus action with my Awakened Spellbook on my person, I can cause the mind to",
"manifest as a Tiny spectral object, hovering in an unoccupied space of my choice within",
"60 ft. It is intangible and doesn't occupy its space, and it sheds dim light in a 10 ft radius.",
"It looks like a ghostly tome, a cascade of text, or a scholar from the past \(my choice.\).",
"\(See Companion Page for statistics for this construct.\)",
"While manifested, it can hear and see and has darkvision with a range of 60 ft. It can",
"share what it sees and hears with me (no action required).",
"Whenever I cast a wizard spell on my turn, I can cast it as if I were in the spectral mind's",
"space, using its senses. I can do this a number of times per day equal to my proficiency",
"bonus, and I regain all uses when I finish a long rest.",
"As a bonus action, I can cause it to hover up to 30 ft to an unoccupied space that I or it",
"can see. It can pass through creatures but not objects. It stops manifesting if it is ever",
"more than 300 ft away from me, if it drops to 0 hit points, if I die, or if I dismiss it as",
"a bonus action."
])
}],
/* eval : function() {
var companionFunctions = ClassList.artificer ? ClassList.artificer.artificerCompFunc : ClassList.wizard.artificer.CompFunc;
companionFunctions.add("Manifest Mind");
ClassList.wizard.wizardCompFunc.update(10, What('Int mod'),What('AC'),What('Str mod'),What('Dex mod'),What('Con mod'),What('Wis mod'),What('Cha mod'));
},
removeeval : function() {
var companionFunctions = ClassList.artificer ? ClassList.artificer.artificerCompFunc : ClassList.wizard.artificerCompFunc;
companionFunctions.remove("Manifest Mind");
},
*/
action : [["bonus action",""],["bonus action","Hover spellbook 30ft"],["bonus action","dismiss Manifestation"]],
//usages : "Prof. Bonus per ",
//usagescalc : "event.value = What('Proficiency Bonus');",
recovery : "long rest"
},
"subclassfeature14" : {
name : "One with the Word",
source : ["TCoE",79],
minlevel : 14,
description : desc([
"While Awakened Spellbook is on my person, advantage on Intelligence (Arcana) checks.",
"If I take damage while Awakened Spellbook is manifested, I can use reaction to dismiss",
"the manifected book to prevent all damage. Roll 3d6 and temporarily lose combined",
"spells of that level in Awakened spellbook. If not enough spells, I drop to 0 hp.",
"I must finish 1d6 long rests to regain lost spells (cannot cast them from scrolls"
]),
action : ["reaction","dismiss/prevent dmg"],
//usages : "Prof. Bonus per ",
//usagescalc : "event.value = What('Proficiency Bonus');",
usages : "1x per 1d6 ",
recovery : "long rest"
}
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment