Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save AelarTheElfRogue/71bebda50bce505d83d3b2b7e0863d83 to your computer and use it in GitHub Desktop.
Save AelarTheElfRogue/71bebda50bce505d83d3b2b7e0863d83 to your computer and use it in GitHub Desktop.
[Class] Factotum
var iFileName = "Class - Factotum.js";
RequiredSheetVersion(12.999);
//Create the source
SourceList["FC"] ={
name : "The Factotum Class - Jacky Leung",
abbreviation : "FC",
group : "DM's Guild",
url : "https://deathbymage.com/2018/03/12/the-factotum-class-the-jack-of-all-trades-returns-to-dd-5e/",
date : "2019/01/07"
};
//Create the class
ClassList["factotum"] = {
regExpSearch : /^(?=.*factotum).*$/i,
name : "Factotum",
source : ["FC", 0],
primaryAbility : "\n \u2022 Factotum: Intelligence;",
prereqs : "\n \u2022 Factotum: Dexterity 13 and Intelligence 13;",
die : 8,
improvements : [0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 5, 5],
saves : ["Dex", "Int"],
abilitySave: 4,
skills : ["\n\n" + toUni("Factotum") + ": Choose any three skills.", "\n\n" + toUni("Factotum") + ": Choose any one skill."],
toolProfs : {
primary : [["Any tool", 4]],
secondary : [["Any tool", 1]]
},
armor : [
[true, false, false, false],
[true, false, false, false]
],
weapons : [
[true, false, ["longsword", "rapier", "shortsword"]],
[false, false, [""]]
],
equipment : "Factotum starting equipment:\n \u2022 Climber's kit -or- healer's kit;\n \u2022 a longsword -or- a rapier -or- two simple melee weapons;\n \u2022 A light crossbow and 20 bolts -or- three javelins;\n \u2022 Leather armor, a dungeoneer's pack, an arcane focus, and a holy symbol.\n\nAlternatively, choose 4d4 \xD7 10 gp worth of starting equipment instead of both the class' and the background's starting equipment.",
subclasses : ["Dalliance", ["exemplar", "martial ace", "thaumaturge"]],
attacks : [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
features : {
"genius" : {
name : "Genius",
source : ["FC", 4],
minlevel : 1,
description : desc([
"As a bonus action, I can expend a use of Genius to add my INT mod to an ability check",
"or saving throw you are not proficient with. If you are proficient, your double proficiency.",
]),
usages : [2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 8],
recovery : levels.map(function (n) {
return n < 5 ? "long rest" : "short rest";
}),
action : ["bonus action", ""]
},
"cunning aptitude" : {
name : "Cunning Aptitude",
source : ["FC",4],
minlevel : 1,
description : desc([
"I can expend a use of Genius to use Intelligence for a skill check for 1 minute.",
]),
},
"subclassfeature2" : {
name : "Dalliance",
source : ["P", 72],
minlevel : 2,
description : "\n " + "Choose a Dalliance you strive to emulate and put it in the \"Class\" field" + "\n " + "Choose Exemplar, Martial Ace, or Thaumaturge",
},
"intellectual senses" : {
name : "Intellectual Senses",
source : ["FC", 4],
minlevel : 3,
description : desc([
"I add my INT mod to Perception checks unless blinded, deafened, or incapacitated.",
]),
addMod : { type : "skill", field : "Perc", mod : "Int", text : "I can add my Intelligence modifier to my Perception checks." }
},
"jack of all trades" : {
name : "Jack of All Trades",
source : [["SRD", 12], ["P", 54], ["FC", 4]],
minlevel : 2,
description : "\n " + "I can add half my proficiency bonus to any ability check that doesn't already include it",
eval : "Checkbox('Jack of All Trades', true);",
removeeval : "Checkbox('Jack of All Trades', false);"
},
"creative momentum" : {
name : "Creative Momentum",
souce : ["FC", 4],
minlevel : 5,
description : desc([
"I regain all expended uses of Genius on a short rest.",
]),
},
"expansive repertoire" : {
name : "Expansive Repertoire",
source : ["FC", 4],
minlevel : 7,
description : desc([
"I gain two new skills, or a skill and a tool. I do this again at 13th level."
]),
skillstxt : "\n\n" + toUni("Factotum") + ": Proficiency with any two skills or a skill and a tool, and two more at 13th level",
additional : levels.map(function (n) {
return n < 7 ? "" : "with " + (n < 13 ? 2 : 4) + " skills or tools";
})
},
"mystical dilettante" : {
name : "Mystical Dilettante",
souce : ["FC", 4],
minlevel : 9,
description : desc ([
"I can expend 1 use of Genius to Channel Divinity, Arcana, or Nature (See Extra Notes).",
]),
action : ["action", "",],
eval : "AddString(\"Extra.Notes\", \"\\u25C6 Mystical Dilettante (Factotum 9, FC 4)\\n - Channel Divinity: Turn Undead. You can brandish a holy symbol you carry, invoking sacred words and prayers. Each undead that can see or hear you within 30 feet must make a Wisdom saving throw (DC equal to 8 + your proficiency bonus + your Intelligence modifier). If a the creature fails its saving throw, it is turned for 1 minute or until it takes any damage. A turned creature must spend its turn trying to move as far away from you as it can, and it cannot willingly move to a space within 30 feet of you. It also can’t take reactions. For its actions, it can use only the Dash action or try to escape from an effect that prevents it from moving. If there is nowhere to move, the creature can use the Dodge action.\\n - Channel Arcana: Magecraft. You empty a handful of magical components, muttering arcane gibberish. You choose one spell between 1st and 2nd level from the Wizard spell list and cast it as an action. Your spell attack roll is equal to your proficiency bonus + your Intelligence modifier, and your spell save DC is equal to 8 + your proficiency bonus + your Intelligence modifier. At 12th level, you can choose a spell up to 3rd level. At 15th level, you can choose up to 4th level. At 18th level, you can choose up to 5th level.\\n - Channel Nature: Healing Poultices. You master the basics of medicinal herbs, strung together with harnessing nature’s energy. You can use an action, to heal a creature you can touch, with a number of d8s equal to your Intelligence modifier.\", true);",
removeeval : "RemoveString(\"Extra.Notes\", \"\\u25C6 Mystical Dilettante (Factotum 9, FC 4)\\n - Channel Divinity: Turn Undead. You can brandish a holy symbol you carry, invoking sacred words and prayers. Each undead that can see or hear you within 30 feet must make a Wisdom saving throw (DC equal to 8 + your proficiency bonus + your Intelligence modifier). If a the creature fails its saving throw, it is turned for 1 minute or until it takes any damage. A turned creature must spend its turn trying to move as far away from you as it can, and it cannot willingly move to a space within 30 feet of you. It also can’t take reactions. For its actions, it can use only the Dash action or try to escape from an effect that prevents it from moving. If there is nowhere to move, the creature can use the Dodge action.\\n - Channel Arcana: Magecraft. You empty a handful of magical components, muttering arcane gibberish. You choose one spell between 1st and 2nd level from the Wizard spell list and cast it as an action. Your spell attack roll is equal to your proficiency bonus + your Intelligence modifier, and your spell save DC is equal to 8 + your proficiency bonus + your Intelligence modifier. At 12th level, you can choose a spell up to 3rd level. At 15th level, you can choose up to 4th level. At 18th level, you can choose up to 5th level.\\n - Channel Nature: Healing Poultices. You master the basics of medicinal herbs, strung together with harnessing nature’s energy. You can use an action, to heal a creature you can touch, with a number of d8s equal to your Intelligence modifier.\", false);",
},
"reliable talent" : {
name : "Reliable Talent",
source : ["FC", 5],
minlevel : 11,
description : desc ([
"If I make an ability check where I add my proficiency bonus, rolls of 9 or lower are 10",
]),
},
"brains over brawn" : {
name : "Brains Over Brawn",
source : ["FC", 5],
minlevel : 15,
description : desc ([
"I can expend 1 use of Genius to reroll a Strength, Dexterity, or Constitution saving",
"throw, adding my Intelligence modifier. I must keep the second result.",
]),
action : ["reaction", ""],
usages : 1,
recovery : "long rest",
},
"creative drive" : {
name : "Creative Drive",
source : ["FC", 5],
minlevel : 17,
description : desc ([
"I can expend 1 use of Genius to make an Intelligence saving throw in place of a Wisdom",
"or Charisma saving throw.",
]),
action : ["reaction", ""],
},
"multidisiplinary thesis" : {
name : "Multidisciplinary Thesis",
source : ["FC", 5],
minlevel : 20,
description : desc ([
"I regain 4 uses of Genius if I have no more remaining when I roll initiative."
]),
},
}
};
//Create the Exemplar Subclass
AddSubClass(
"factotum",
"exemplar",
{
regExpSearch : /^(?=.*exemplar).*$/i,
subname : "Exemplar Dalliance",
source : ["FC", 7],
fullname : "Factotum (Exemplar Dalliance)",
features : {
"subclassfeature2" : {
name : "Expertise",
source : ["FC", 8],
minlevel : 2,
description : desc([
"I gain expertise with two skills or a skill and a tool I am proficient with; +2 at 10th level",
]),
skillstxt : "\n\n" + toUni("Exemplar") + ": Expertise with any two skills or a skill and a tool, and two more at 10th level",
additional : levels.map(function (n) {
return n < 2 ? "" : "with " + (n < 10 ? 2 : 4) + " skills or tools";
})
},
"subclassfeature6" : {
name : "Mental Agility",
source : ["FC", 7],
minlevel : 6,
description : desc ([
"I add my INT mod to Intiative checks. I can expend 1 use of Genius to gain advantage.",
]),
addMod : { type : "skill", field : "Init", mod : "Int", text : "I can add my Intelligence modifier to my Initiative rolls." }
},
"subclassfeature10" : {
name : "Skillful Assist",
source : ["FC", 7],
minlevel : 10,
description : desc ([
"When I use the Help action, the creature I aid adds my INT mod to their roll.",
"Allies attacking the same adjacent target as me add my INT mod to attack rolls."
]),
},
"subclassfeature14" : {
name : "Adroit Presence",
source : ["FC", 8],
minlevel : 14,
description : desc ([
"When I succeed on a skill check that I am proficient with, I can expend",
"1 use of Genius to make creatures frightened or charmed by me for 1 minute",
"DC = 8 + prof bonus + INT mod. Creatures who succeed can't be affected for 24 hours."
]),
action : ["reaction", ""],
},
"subclassfeature18" : {
name : "Best of the Best",
source : ["FC", 8],
minlevel : 18,
description : desc ([
"I cam expend 1 use of Genius to force a creature within 60 ft to subtract my INT mod",
"from an attack roll, skill check, or saving throw."
]),
action : ["reaction", ""],
},
}
}
);
//Create the Martial Ace Subclass
AddSubClass(
"factotum",
"martial ace",
{
regExpSearch : /^(?=.*martial)(?=.*ace).*$/i,
subname : "Martial Ace Dalliance",
source : ["FC", 8],
fullname : "Factotum (Martial Ace Dalliance)",
features : {
"subclassfeature2" : {
name : "Martial Training",
source : ["FC", 8],
minlevel : 2,
description : desc([
"I gain proficiency with martial weapons, medium armor, and shields",
]),
armor : [false, true, false, true],
weapons : [false, true]
},
"subclassfeature2.1" : {
name : "Insightful Defense",
source : ["FC", 8],
minlevel : 2,
description : desc ([
"I can expend 1 use of Genius to add my Intelligence modifier to my AC",
"against a one attack that I can see that would hit me."
]),
action : ["reaction", ""],
},
"subclassfeature6" : {
name : "Extra Attack",
source : ["FC", 8],
minlevel : 6,
description : desc ([
"I can attack twice when I take the attack action.",
]),
attacks : [1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2],
},
"subclassfeature10" : {
name : "Cunning Strike",
source : ["FC", 8],
minlevel : 10,
description : desc ([
"I can expend 1 use of Genius to add my Intelligence modifier to my attack and damage",
"rolls on my next weapons attack until the end of my turn."
]),
action : ["bonus action", ""],
},
"subclassfeature14" : {
name : "Ingenious Sight",
source : ["FC", 8],
minlevel : 14,
description : desc ([
"I can expend 1 use of Genius to gain truesight for 1 minute",
]),
action : ["bonus action", ""],
},
"subclassfeature18" : {
name : "Combat Genius",
source : ["FC", 8],
minlevel : 18,
description : desc ([
"I regain 1 expended use of Genius when I kill a creature with a melee weapon attack,",
"and two uses if I kill the creature with a critical hit."
]),
},
}
}
);
//Create the Martial Ace Subclass
AddSubClass(
"factotum",
"thaumaturge",
{
regExpSearch : /^(?=.*thaumaturge).*$/i,
subname : "Thaumaturge Dalliance",
source : ["FC", 9],
fullname : "Factotum (Thaumaturge Dalliance)",
features : {
"subclassfeature2" : {
name : "Mystical Knowledge",
source : ["FC", 9],
minlevel : 2,
description : desc([
"I gain proficiency with Arcana, Religion, and Nature, and I learn the Prestidigitation, Thaumaturgy, and Druidcraft cantrips",
]),
skills : ["Arcana", "Religion", "Nature"],
spellcastingAbility : 4,
spellcastingBonus : [{
name : "Mystical Knowledge",
spells : ["prestidigitation"],
selection : ["prestidigitation"]
}, {
name : "Mystical Knowledge",
spells : ["thaumaturgy"],
selection : ["thaumaturgy"]
}, {
name : "Mystical Knowledge",
spells : ["druidcraft"],
selection : ["druidcraft"]
}]
},
"subclassfeature2.1" : {
name : "Agnostic Elocutionist",
source : ["FC", 9],
minlevel : 2,
description : desc ([
"I can expend 1 use of Genius to cast Comprehend Languages as a ritual.",
]),
spellcastingBonus : [{
name : "Agnostic Elocutionist (level 2)",
spells : ["comprehend languages"],
selection : ["comprehend languages"]
}],
},
"subclassfeature6" : {
name : "Thaumaturgic Revelations",
source : ["FC", 9],
minlevel : 6,
description : desc ([
"I learn 3 1st-level spells from the cleric, druid, or wizard list. INT is my spellcasting",
"ability. Can only cast spells at lowest level, expending 1 use of Genius per spell level",
]),
spellcastingBonus : [{
name : "Thaumaturgic Revelations (level 6)",
"class" : ["cleric", "druid", "wizard"],
level : [1, 1],
times : 3,
},]
},
"subclassfeature10" : {
name : "Thaumaturgic Surge",
source : ["FC", 9],
minlevel : 10,
description : desc ([
"I can expend 1 additional use of Genius to gain additional Mystical Dillettante benefits",
]),
eval : "AddString(\"Extra.Notes\", \"\\u25C6 Thaumaturgic Surge (Thaumaturge Dalliance 10, FC 9)\\n - Destroy Undead. Undead creatures that fail against your Channel Divinity: Turn Undead ability are instantly destroyed if their challenge rating is below 1. At 18th level, undead creatures who fail their saving throw with a challenge rating of 2 or lower are instantly destroyed.\\n - Eldritch Overcharge. When you roll damage for a spell, you can reroll a number of damage dice up to your Intelligence modifier (minimum of one). You must use the new rolls. Alternatively, if a spell you cast forces a creature to make a saving throw to resist its effects, one target gains disadvantage on its first saving throw against the spell.\\n - Verdant Restoration. You double the number of d8s you roll to heal hit points. Additionally, positive energy flows onto the target and removes a debilitating effect.\", true);",
removeeval : "RemoveString(\"Extra.Notes\", \"\\u25C6 Thaumaturgic Surge (Thaumaturge Dalliance 10, FC 9)\\n - Destroy Undead. Undead creatures that fail against your Channel Divinity: Turn Undead ability are instantly destroyed if their challenge rating is below 1. At 18th level, undead creatures who fail their saving throw with a challenge rating of 2 or lower are instantly destroyed.\\n - Eldritch Overcharge. When you roll damage for a spell, you can reroll a number of damage dice up to your Intelligence modifier (minimum of one). You must use the new rolls. Alternatively, if a spell you cast forces a creature to make a saving throw to resist its effects, one target gains disadvantage on its first saving throw against the spell.\\n - Verdant Restoration. You double the number of d8s you roll to heal hit points. Additionally, positive energy flows onto the target and removes a debilitating effect.\", false);",
},
"subclassfeature12" : {
name : "Additional Spells",
source : ["FC", 9],
minlevel : 12,
description : desc([
"I learn 3 2nd-level spells from the cleric, druid, or wizard list. I can expend 1 use of Genius to cast Tongues on myself."
]),
spellcastingBonus : [{
name : "Agnostic Elocutionist (level 12)",
spells : ["tongues"],
selection : ["tongues"]
}, {
name : "Thaumaturgic Revelations (level 12)",
"class" : ["cleric", "druid", "wizard"],
level : [2, 2],
times : 3,
},]
},
"subclassfeature14" : {
name : "Occult Mountebank",
source : ["FC", 9],
minlevel : 14,
description : desc ([
"I ignore all class, race, and level requirments on the use of magic items.",
]),
},
"subclassfeature18" : {
name : "Eldritch Disjunction",
source : ["FC", 9],
minlevel : 18,
description : desc ([
"I can expend 1 use of Genius to cast counterspell, using INT as my spellcasting ability",
"I also learn 3 3rd-level spells from the cleric druid, or wizard list."
]),
action : ["reaction", ""],
usages : 1,
recovery : "long rest",
spellcastingBonus : [{
name : "Agnostic Elocutionist (level 12)",
spells : ["counterspell"],
selection : ["counterspell"],
oncelr : true,
}, {
name : "Thaumaturgic Revelations (level 18)",
"class" : ["cleric", "druid", "wizard"],
level : [3, 3],
times : 3,
},]
},
}
}
);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment