Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save AelarTheElfRogue/f6d86f07427411f2832e8d55e18c2646 to your computer and use it in GitHub Desktop.
Save AelarTheElfRogue/f6d86f07427411f2832e8d55e18c2646 to your computer and use it in GitHub Desktop.
[Class] Craftsman
/* -INFORMATION-
Subject: Class - The Craftsman [MageHandPress][AelarTheElfRogue].js
Sheet: v13.00.00 (2018-??-??) [identical to v12.999 syntax, except v12.999 uses 'borrow' for the burrow speed]
*/
// Converted for use with MPMB's Character Sheet by /u/AelarTheElfRogue
//Create the source
SourceList["MHP:C"] ={
name : "Mage Hand Press: The Craftsman Class",
abbreviation : "MHP:C",
group : "Mage Hand Press",
url : "https://store.magehandpress.com/products/complete-craftsman",
date : "2018/09/04"
};
//Create the source
SourceList["MHP:EP"] ={
name : "Mage Hand Press: Expansion Pack",
abbreviation : "MHP:EP",
group : "Mage Hand Press",
url : "https://store.magehandpress.com/products/expansion-pack",
date : "2018/10/10"
};
var iFileName = "Class - The Craftsman [MageHandPress][AelarTheElfRogue].js";
RequiredSheetVersion(12.999);
//Create the Craftsman Class
ClassList["craftsman"] = {
regExpSearch : /^(?=.*craftsman).*$/i,
name : "Craftsman",
source : ["MHP:C", 1],
primaryAbility : "\n \u2022 Craftsman: Intelligence;",
prereqs : "\n \u2022 Craftsman: Intelligence 13;",
die : 10,
improvements : [0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 5, 5],
saves : ["Int", "Con"],
skills : ["\n\n" + toUni("Craftsman") + ": Choose two from Arcana, Athletics, History, Investigation, Medicine, Perception, and Persuasion.", "\n\n" + toUni("Craftsman") + ": Choose one from Arcana, Athletics, History, Investigation, Medicine, Perception, and Persuasion."],
toolProfs : {
primary : [["Craftsman's tools", "Int"]],
secondary : [["Craftsman's tools", "Int"]]
},
armor : [
[true, true, true, true],
[true, true, true, true]
],
weapons : [
[true, true, ["exotic"]],
[true, true, ["exotic"]]
],
equipment : "Craftsman starting equipment:\n \u2022 A shield and a dagger;\n \u2022 A set of chain mail -or- scale mail;\n \u2022 A warhammer -or- any simple weapon;\n \u2022 A light crossbow and 20 bolts -or- a shortbow and 20 arrows;\n \u2022 Craftsman's tools;\n \u2022 An explorer's pack -or- one kit you're proficient with.\n\nAlternatively, choose 5d4 \xD7 10 gp worth of starting equipment instead of both the class' and the background's starting equipment.",
subclasses : ["Craftsman Profession", ["arcane maester", "armiger", "gearsmith", "gunsmith", "thunderlord", "trapsmith", "weaponsmith"]],
attacks : [1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2],
features : {
"bonus proficiencies" : {
name : "Bonus Proficiencies",
source : ["MHP:C", 2],
minlevel : 1,
description : desc([
"I am proficient with exotic weapons and armor, as well as all artisan's tools",
]),
},
"smithy" : {
name : "Smithy",
source : ["MHP:C", 2],
minlevel : 1,
description : desc([
"I carry craftsman's tools, which allow me to craft armor and weapons. I can make items",
"worth a total of 50 gp time my Craftsman level a day. I add my Intelligence modifier + ",
"Craftsman level to the damage threshold and HP of any item that I craft.",
]),
equipright : [
["Craftsman's tools", "", 20]
],
},
"masterwork equipment" : {
name : "Masterwork Equipment",
source : ["MFoV", 3],
minlevel : 2,
description : desc([
"I can craft +1 weapons and armor for 100gp plus the normal cost and time.",
]),
calcChanges : {
atkCalc : ["if ((/masterwork/i).test(WeaponText) && !(/exotic/i).test(theWea.type)) {output.extraDmg += 1; output.extraHit += 1; }; ", "Any non-magical weapon that I add the work Masterwork to will become a +1 weapon."]
},
eval : "AddACMisc(1, 'Masterwork Equipment', 'My masterwork armor gives me a +1 bonus to AC', \"!(/masterwork/i).test(CurrentArmour.field) || (/hero plate|battle plate|mountain plate|hardened leather|mountain leather|warsong armor|ballistic armor/i).test(CurrentArmour.field)\")",
removeeval : "AddACMisc(0, 'Masterwork Equipment', 'My masterwork armor gives me a +1 bonus to AC')"
},
"crafting techniques" : {
name : "Crafting Techniques",
source : ["MHP:C", 3],
minlevel : 2,
description : desc([
"I can apply crafting techniques to masterwork equipment, as long as I meet",
"the level requirement and have the gold to spend.",
]),
additional : "Crafting DC: 8 + Int Mod + Prof Bonus"
},
"tool belt" : {
name : "Tool Belt",
source : ["MHP:C", 4],
minlevel : 2,
description : desc([
"I can use an action to retrieve a piece of non-magical gear from my tool belt. The item's",
"value cannot be higher than 5x my Craftsman level and disappears after a long rest",
]),
usages : "Int mod (minimum of 1) x per ",
usagescalc : "event.value = Math.max(1, this.getField(\"Int Mod\").value);",
recovery : "long rest",
action : ["action", " (Retrieve tool)"],
},
"subclassfeature3" : {
name : "Craftsman Profession",
source : ["MFoV", 3],
minlevel : 3,
description : desc([
"Choose a Craftsman Profession you strive to emulate and put it in the \"Class\" field",
"Choose either Arcane Maester, Arimger, Gearsmith, Gunsmith, Thunderlord, Trapsmith, or Weaponsmith.",
]),
},
"folded steel" : {
name : "Folded Steel",
source : ["MHP:C", 4],
minlevel : 6,
description : desc([
"Masterwork and exotic weapons I craft count as magical",
]),
calcChanges : {
atkAdd : ["if ((/masterwork/i).test(WeaponText) && !(/exotic/i).test(theWea.type)) {fields.Description += (fields.Description ? '; ' : '') + 'Counts as magical';}; ", "Any non-magical weapon that I add the word Masterwork to will become a magical."]
},
},
"layman's modifications" : {
name : "Layman's Modifications",
source : ["MHP:C", 4],
minlevel : 9,
description : desc([
"Masterwork equipment with only beginner techniques can be used proficiently by others.",
]),
},
"craftsman's strike" : {
name : "Craftsman's Strike",
source : ["MHP:C", 4],
minlevel : 11,
description : desc([
"Once per turn, I can add 1d8 damage to attacks against objects, constructs, or creatures",
"wearing manufactured armor. My attacks always bypass an object's damage threshold.",
]),
},
"uncanny tool belt" : {
name : "Uncanny Tool Belt",
source : ["MHP:C", 4],
minlevel : 15,
description : desc([
"I can use an action to retrieve an uncommon magical item from my tool belt.",
"It remains in my possession until I take a short or long rest.",
]),
usages : 1,
recovery : "long rest",
action : ["action", " (Retrive magic item)"]
},
"magnum opus" : {
name : "Magnum Opus",
source : ["MHP:C", 4],
minlevel : 20,
description : desc([
"I craft a single legendary magic item, attuned only to me. I can only do this once.",
]),
},
},
}
//Add the Arcane Maester Subclass
AddSubClass(
"craftsman",
"arcane maester",
{
regExpSearch : /^(?=.*arcane)(?=.*maester).*$/i,
subname : "Arcane Maester Profession",
source : ["MHP:C", 5],
fullname : "Craftsman (Arcane Maester)",
abilitySave : 4,
spellcastingFactor : 3,
spellcastingList : {
"class" : "wizard",
school : ["Trans"],
level : [0, 4]
},
spellcastingKnown : {
cantrips : [0, 0, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2],
spells : [0, 0, 2, 3, 3, 3, 4, 4, 4, 5, 6, 6, 7, 7, 7, 8, 8, 8, 9, 9]
},
features : {
"subclassfeature3" : {
name : "Arcane Smithing",
source : ["MHP:C", 6],
minlevel : 3,
description : desc([
"I can craft magic items, taking a level of exhaustion for each day spent working. At 7th ",
"level, I have advantage on Arcana checks to create magic item schematics. Enchanting ",
"masterwork armor causes it to lose the masterwork quality and any crafting techniques.",
]),
additional : levels.map( function(n) {
if (n < 3) return "";
return (n * 150) + "gp per day";
}),
},
"subclassfeature3.1" : {
name : "Spellcasting",
source : ["MHP:C", 5],
minlevel : 3,
description : "\n " + "I can cast known wizard cantrips/spells, using Intelligence as my spellcasting ability",
additional : ["", "", "2 cantrips \u0026 3 spells known", "2 cantrips \u0026 4 spells known", "2 cantrips \u0026 4 spells known", "2 cantrips \u0026 4 spells known", "2 cantrips \u0026 5 spells known", "2 cantrips \u0026 6 spells known", "2 cantrips \u0026 6 spells known", "3 cantrips \u0026 7 spells known", "3 cantrips \u0026 8 spells known", "3 cantrips \u0026 8 spells known", "3 cantrips \u0026 9 spells known", "3 cantrips \u0026 10 spells known", "3 cantrips \u0026 10 spells known", "3 cantrips \u0026 11 spells known", "3 cantrips \u0026 11 spells known", "3 cantrips \u0026 11 spells known", "3 cantrips \u0026 12 spells known", "3 cantrips \u0026 13 spells known"],
spellcastingBonus : [{
name : "Mending cantrip",
spells : ["mending"],
selection : ["mending"]
},
{
name : "From any School",
"class" : "wizard",
times : [0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 4],
level : [1, 4],
}]
},
"subclassfeature7" : {
name : "Attunement Specialist",
source : ["MHP:C", 6],
minlevel : 7,
description : desc([
"I can attune to 4 magic items at once. At 18th level, I can attune to 5 magic items.",
]),
},
"subclassfeature10" : {
name : "Efficient Enchanting",
source : ["MHP:C", 5],
minlevel : 10,
description : desc([
"I can temporarily create enchanted items and spell scrolls as part of a long rest, using",
"enchantment points. After 24 hours, the enchantment on these items becomes inert.",
]),
usages : [0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, "Enchantment Points "],
recovery : "long rest",
eval : "AddString(\"Extra.Notes\", \"\\u25C6 Efficient Enchanting (Arcane Maester Profession 10, MHP:C 5)\\n - During a long rest, I can create temporarily enchanted items that lose their potency after \\n 24 hours. I cannot exceed the number of enchanting points I have to make these items.\\n I can create the following items.\\n - At 10th level, I can create a potion of healing, a potion of climbing, or a 1st level scroll \\n of a wizard spell that I know. These each cost 1 enchanting point.\\n - At 13th level, I can create a potion of resistance, a single bead of force, or a 2nd level\\n scroll of a wizard spell that I know. These each cost 2 enchanting points.\", true);",
removeeval : "RemoveString(\"Extra.Notes\", \"\\u25C6 Efficient Enchanting (Arcane Maester Profession 10, MHP:C 5)\\n - During a long rest, I can create temporarily enchanted items that lose their potency after \\n 24 hours. I cannot exceed the number of enchanting points I have to make these items.\\n I can create the following items.\\n - At 10th level, I can create a potion of healing, a potion of climbing, or a 1st level scroll \\n of a wizard spell that I know. These each cost 1 enchanting point.\\n - At 13th level, I can create a potion of resistance, a single bead of force, or a 2nd level\\n scroll of a wizard spell that I know. These each cost 2 enchanting points.\", false);",
},
"subclassfeature14" : {
name : "Rapid Recharge",
source : ["MHP:C", 6],
minlevel : 14,
description : desc([
"I can use an action to cause a magic item to regain a number of charges equal to the",
"amount that it would normally regain at dawn.",
]),
usages : 1,
recovery : "long rest",
action : ["action", ""],
},
"subclassfeature18" : {
name : "Master Spellwright",
source : ["MHP:C", 6],
minlevel : 18,
description : desc([
"I learn the Ardent and Mystical legendary crafting techniques. I can make a suit of",
"armor resistant to two types of elemental damage, and a weapon deal force damage.",
]),
},
}
}
);
//Add the Armiger Subclass
AddSubClass(
"craftsman",
"armiger",
{
regExpSearch : /^(?=.*armiger).*$/i,
subname : "Armiger Profession",
source : ["MHP:C", 6],
fullname : "Craftsman (Armiger)",
features : {
"subclassfeature3" : {
name : "Exotic Smithing",
source : ["MHP:C", 6],
minlevel : 3,
description : desc([
"I know how to craft all exotic armors and shields",
]),
},
"subclassfeature3.1" : {
name : "Armor Master",
source : ["MHP:C", 6],
minlevel : 3,
description : desc([
"Choose a Fighting Style for the fighter using the \"Choose Feature\" button above",
]),
choices : ["Defense", "Protection"],
"defense" : FightingStyles.defense,
"protection" : FightingStyles.protection,
},
"subclassfeature7" : {
name : "Iconic Emblem",
source : ["MHP:C", 6],
minlevel : 7,
description : desc([
"I create an emblem iconic of me and my craft. I can be identified with a DC 12",
"Intelligence check. If an ally that can see me must make a saving throw that they are not",
"proficient in they can add half my proficiency bonus (rounded up) to the save.",
]),
},
"subclassfeature10" : {
name : "Armiger's Eye",
source : ["MHP:C", 6],
minlevel : 10,
description : desc([
"I can spend 10 minutes reinforcing a suit of armor. If I do this as part of a short or long",
"rest, I can reinforce up to 6 sets of armor. This lasts until a creature wearing it is hit.",
]),
eval : "AddString(\"Extra.Notes\", \"\\u25C6 Armiger's Eye (Armiger Profession 10, MHP:C 6)\\n - I can spend 10 minutes reinforcing a suit of armor. If I do this as part of a short or long\\n rest, I can reinforce up to 6 sets of armor. This lasts until a creature wearing it is hit.\\n I have two reinforcement techniques.\\n - Adamant: When a creature wearing this armor takes damage, it reduces the amount it \\n takes by 1d8.\\n - Banded: A creature wearing this armor has a +1 bonus to Armor Class.\", true);",
removeeval : "RemoveString(\"Extra.Notes\", \"\\u25C6 Armiger's Eye (Armiger Profession 10, MHP:C 6)\\n - I can spend 10 minutes reinforcing a suit of armor. If I do this as part of a short or long\\n rest, I can reinforce up to 6 sets of armor. This lasts until a creature wearing it is hit.\\n I have two reinforcement techniques.\\n - Adamant: When a creature wearing this armor takes damage, it reduces the amount it \\n takes by 1d8\\n - Banded: A creature wearing this armor has a +1 bonus to Armor Class.\", false);",
},
"subclassfeature14" : {
name : "Wall of Iron",
source : ["MHP:C", 6],
minlevel : 14,
description : desc([
"I can use a bonus action to gain resistance to bludgeoning, piercing, and slashing",
"damage until the end of my next turn. I regain this ability after a short or long rest.",
]),
usages : 1,
recovery : "short rest",
action : ["bonus action", ""],
},
"subclassfeature18" : {
name : "Master Armorsmith",
source : ["MHP:C", 7],
minlevel : 18,
description : desc([
"I learn the Invincible legendary crafting technique. I can make a suit of armor immune",
"to either bludgeoning, piercing, or slashing damage.",
]),
},
}
}
);
//Add the Gearsmith Subclass
AddSubClass(
"craftsman",
"gearsmith",
{
regExpSearch : /^(?=.*gearsmith).*$/i,
subname : "Gearsmith Profession",
source : ["MHP:C", 7],
fullname : "Craftsman (Gearsmith)",
features : {
"subclassfeature3" : {
name : "Drone",
source : ["MHP:C", 7],
minlevel : 3,
description : desc([
"I craft a mechanical homunculus that does my bidding. It can't attack and has",
"HP equal to my Craftsman level. I can only have one drone at a time.",
]),
},
"subclassfeature3.1" : {
name : "Mechanical Servitor",
source : ["MHP:C", 7],
minlevel : 3,
description : desc([
"I craft a mechanical servitor, with special stats. See extra notes for all details",
]),
usages : 1,
additional : "Rebuild",
recovery : "long rest",
eval : "AddString(\"Extra.Notes\", \"\\u25C6 Mechanical Servitor (Gearsmith Profession 3, MHP:C 7)\\n - Starting at 3rd level, you can craft a mechanical servitor, a construct who aids you in combat. Over the course of a long rest, you can create a single servitor which is bound to you. Select a medium beast (other than a swarm) with a challenge rating of 1/2 or lower. The servitor has the physical stats, movement speed, and abilities of the beast, but it can look however you like, as long as its form is appropriate for its statistics. It’s mental ability scores are all 10. It can communicate with you telepathically, and understands whatever languages you speak.\\n - In combat, a servitor rolls its own initiative and acts on its own, defending both you and itself to the best of its ability. In all places where your servitor would use its proficiency modifier, it uses yours instead, and it adds your proficiency modifier to both its damage rolls and its AC. Additionally, your servitor gains proficiency in two skills of your choice.\\n - A servitor’s maximum hit points are equal to 4 x your craftsman level, regardless of the form it takes. If its form would normally have Multiattack, it loses that ability. A servitor can't wield weapons or wear armor, though its body counts as a suit of masterwork armor and its attacks count as masterwork weapons for the purposes of applying crafting techniques to them.\\n - Over the course of a long rest, you can break down and rebuild your servitor’s current body, selecting a new beast form for it, and/or you can restore a slain servitor to full health. A servitor that is completely destroyed (such as by a disintegrate spell) can be rebuilt with 500 gp worth of materials and 2 days of construction time. You can’t have more than one operational mechanical servitor at a time.\", true);",
removeeval : "RemoveString(\"Extra.Notes\", \"\\u25C6 Mechanical Servitor (Gearsmith Profession 3, MHP:C 7)\\n - Starting at 3rd level, you can craft a mechanical servitor, a construct who aids you in combat. Over the course of a long rest, you can create a single servitor which is bound to you. Select a medium beast (other than a swarm) with a challenge rating of 1/2 or lower. The servitor has the physical stats, movement speed, and abilities of the beast, but it can look however you like, as long as its form is appropriate for its statistics. It’s mental ability scores are all 10. It can communicate with you telepathically, and understands whatever languages you speak.\\n - In combat, a servitor rolls its own initiative and acts on its own, defending both you and itself to the best of its ability. In all places where your servitor would use its proficiency modifier, it uses yours instead, and it adds your proficiency modifier to both its damage rolls and its AC. Additionally, your servitor gains proficiency in two skills of your choice.\\n - A servitor’s maximum hit points are equal to 4 x your craftsman level, regardless of the form it takes. If its form would normally have Multiattack, it loses that ability. A servitor can't wield weapons or wear armor, though its body counts as a suit of masterwork armor and its attacks count as masterwork weapons for the purposes of applying crafting techniques to them.\\n - Over the course of a long rest, you can break down and rebuild your servitor’s current body, selecting a new beast form for it, and/or you can restore a slain servitor to full health. A servitor that is completely destroyed (such as by a disintegrate spell) can be rebuilt with 500 gp worth of materials and 2 days of construction time. You can’t have more than one operational mechanical servitor at a time.\", false);",
},
"subclassfeature7" : {
name : "Powerful Automatons",
source : ["MHP:C", 7],
minlevel : 7,
description : desc([
"Attacks made by my servitor count as magical for overcoming damage resistance.",
]),
},
"subclassfeature10" : {
name : "Clockwork Assistant",
source : ["MHP:C", 7],
minlevel : 10,
description : desc([
"I craft a clockwork assistant that functions as the Unseen Servant spell, AC = 10 + my",
"Int mod, and Strength = 15 + my Int Mod. It stays within 60 ft of me. It will",
"automatically make crafting progress each day on a single item at my crafting speed.",
]),
},
"subclassfeature14" : {
name : "Advanced Servitor",
source : ["MHP:C", 8],
minlevel : 14,
description : desc([
"When I rebuild my mechanical servitor, it can be up to size Large and up to CR 2",
]),
},
"subclassfeature18" : {
name : "Master Gearsmith",
source : ["MHP:C", 8],
minlevel : 18,
description : desc([
"I learn the Guardian Core legendary crafting technique. My mechanical servitor becomes",
"a shield guardian, with all its physical stats, HP max, and abilities, but loses the",
"attacks and actions granted to it by its servitor form."
]),
},
}
}
);
//Add the Gunsmith Subclass
AddSubClass(
"craftsman",
"gunsmith",
{
regExpSearch : /^(?=.*gunsmith).*$/i,
subname : "Gunsmith Profession",
source : ["MHP:C", 8],
fullname : "Craftsman (Gunsmith)",
features : {
"subclassfeature3" : {
name : "Bonus Proficiencies",
source : ["MHP:C", 8],
minlevel : 3,
description : desc([
"I am proficient with all firearms, exotic firearms, and explosives.",
]),
weapons : [false, false, ["Firearms", "Exotic Firearms", "Explosives"]],
},
"subclassfeature3.1" : {
name : "Exotic Smithing",
source : ["MHP:C", 8],
minlevel : 3,
description : desc([
"I can craft all types of firearms, exotic firearms, firearm ammunition, and explosives",
]),
},
"subclassfeature7" : {
name : "Hand Load",
source : ["MHP:C", 8],
minlevel : 7,
description : desc([
"Firearm ammunition and explosives I craft are magical for overcoming damage resistance",
"I can craft firearm ammunition and explosives for no cost during a short or long rest.",
]),
},
"subclassfeature10" : {
name : "Ballistic Trajectory",
source : ["MHP:C", 8],
minlevel : 10,
description : desc([
"I ignore half and three-quarters cover for attacks with masterwork firearms",
"The save DC for my mortar shells and explosives is 8 + Int Mod + Prof Bonus",
]),
},
"subclassfeature14" : {
name : "Applied Demolitions",
source : ["MHP:C", 8],
minlevel : 14,
description : desc([
"My mortar shells and explosives deal maximum damage to objetcs, and an additional",
"1d8 piercing damage to constructs. I can increase or decrease the explosive radius by 5ft.",
]),
},
"subclassfeature18" : {
name : "Master Gunsmith",
source : ["MHP:C", 8],
minlevel : 18,
description : desc([
"I learn the Rapid Fire legendary crafting technique. I can make a firearm that, when",
"used to make an attack, can make another single attack as a bonus action.",
]),
},
}
}
);
//Add the Thunderlord Subclass
AddSubClass(
"craftsman",
"thunderlord",
{
regExpSearch : /^(?=.*thunderlord).*$/i,
subname : "Thunderlord Profession",
source : ["MHP:C", 8],
fullname : "Craftsman (Thunderlord)",
spellcastingAbility : 4,
spellcastingFactor : 4,
features : {
"subclassfeature3" : {
name : "Thunderlord Gear",
source : ["MHP:C", 8],
minlevel : 3,
description : desc([
"I craft a power cell and with charge points, and a conduit. My conduit gives me the",
"ability to deal additional 1d6 lightning damage with my unarmed strikes and weapons",
"attacks, and cast spells using charge points. See extra notes for charge point costs.",
]),
action : ["bonus action", " (Charge Arms)"],
usagescalc : "event.value = Math.ceil(classes.known.craftsman.level/2);",
additional : "Charge Points",
recovery : "short rest",
spellcastingAbility : 4,
spellcastingBonus : [{
name : "Zap",
spells : ["shocking grasp"],
selection : ["shocking grasp"]
}, {
name : "Zap",
spells : ["spare the dying"],
selection : ["spare the dying"]
}, {
name : "Conduction (level 3)",
spells : ["burning hands"],
selection : ["burning hands"],
}, {
name : "Conduction (level 3)",
spells : ["thunderwave"],
selection : ["thunderwave"]
}, {
name : "Conduction (level 3)",
spells : ["scorching ray"],
selection : ["scorching ray"]
}],
eval : "AddString(\"Extra.Notes\", \"\\u25C6 Conduit (Thunderlord Gear, Thunderlord Profession 3, MHP:C 9)\\n - Charged Arms. You can can a bonus action and spend 1 charge point to electrically charge your gauntlets or weapons. Until the start of your next turn, you can add an additional 1d6 lightning damage when you deal damage with an unarmed strike or a weapon attack.\\n - Conduction. You can use an action to expend 1 or more charge points to cast one of a number of spells without using a spell slot or material components. At 3rd level, you can spend 1 charge point to cast the spells burning hands or thunderwave or 2 charge points to cast the spell scorching ray. Starting at level 7, you can spend 3 charge points to cast the spells call lightning, lightning bolt, or spirit guardians. Starting at level 10, you can spend 5 charge points to cast the spells cone of cold or sunbeam. Any spell cast using this ability deals lightning damage instead of its normal type.\\n - Zap. While you have at least one unspent charge point, you can use the cantrips shocking grasp and spare the dying.\", true);",
removeeval : "RemoveString(\"Extra.Notes\", \"\\u25C6 Conduit (Thunderlord Gear, Thunderlord Profession 3, MHP:C 9)\\n - Charged Arms. You can can a bonus action and spend 1 charge point to electrically charge your gauntlets or weapons. Until the start of your next turn, you can add an additional 1d6 lightning damage when you deal damage with an unarmed strike or a weapon attack.\\n - Conduction. You can use an action to expend 1 or more charge points to cast one of a number of spells without using a spell slot or material components. At 3rd level, you can spend 1 charge point to cast the spells burning hands or thunderwave or 2 charge points to cast the spell scorching ray. Starting at level 7, you can spend 3 charge points to cast the spells call lightning, lightning bolt, or spirit guardians. Starting at level 10, you can spend 5 charge points to cast the spells cone of cold or sunbeam. Any spell cast using this ability deals lightning damage instead of its normal type.\\n - Zap. While you have at least one unspent charge point, you can use the cantrips shocking grasp and spare the dying.\", false);",
},
"subclassfeature7" : {
name : "Lightning Rod",
source : ["MHP:C", 9],
minlevel : 7,
description : desc([
"I gain resistance to lightning damage while wearing my conduit, and can use my ",
"reaction to gain one charge point when taking lightning damage",
]),
action : ["reaction", " (Gain 1 Charge Point)"],
spellcastingBonus : [{
name : "Conduction (level 7)",
spells : ["call lightning"],
selection : ["call lightning"]
}, {
name : "Conduction (level 7)",
spells : ["lightning bolt"],
selection : ["lightning bolt"]
}, {
name : "Conduction (level 7)",
spells : ["spirit guardians"],
selection : ["spirit guardians"]
},]
},
"subclassfeature10" : {
name : "High Voltage",
source : ["MHP:C", 9],
minlevel : 10,
description : desc([
"My Charged Arms always functions as long as I have at least one charge point",
"Heavy Armor Conduits gain the the Magnetic Plating crafting technique",
]),
spellcastingBonus : [{
name : "Conduction (level 10)",
spells : ["cone of cold"],
selection : ["cone of cold"]
}, {
name : "Conduction (level 10)",
spells : ["sunbeam"],
selection : ["sunbeam"]
},]
},
"subclassfeature14" : {
name : "Transformer",
source : ["MHP:C", 9],
minlevel : 14,
description : desc([
"I can draw charges from magic items, gaining one charge point per charge up to my",
"charge point max. I gain resistance to force damage while wearing my conduit, and can",
"use my reaction to gain one charge point when taking force damage",
]),
action : ["reaction", " (Gain Charge)"],
},
"subclassfeature18" : {
name : "Master Electrician",
source : ["MHP:C", 9],
minlevel : 18,
description : desc([
"I learn the Tesla Coil legendary crafting technique. I can make a firearm that, when",
"used to make an attack, can make another single attack as a bonus action.",
]),
},
}
}
);
//Add the Trapsmith Subclass
AddSubClass(
"craftsman",
"trapsmith",
{
regExpSearch : /^(?=.*trapsmith).*$/i,
subname : "Trapsmith Profession",
source : ["MHP:EP", 3],
fullname : "Craftsman (Trapsmith)",
features : {
"subclassfeature3" : {
name : "Danger Sense",
source : ["MHP:EP", 3],
minlevel : 3,
description : desc([
"While I am not blinded, deafened, or incapacitated, I have advantage on",
"Dexterity saving throws against effects I can see, such as traps or spells"
]),
},
"subclassfeature3.1" : {
name : "Traps",
source : ["MHP:EP", 3],
minlevel : 3,
description : desc([
"I can craft traps, and maintain a number equal to twice my Craftsman level.",
"I carry a bag of Trapsmith's Parts, which I upgrade with Crafting Techniques.",
]),
additional : levels.map(function (n) { return n < 3 ? "" : Math.max(1, n*2) + " traps"; }),
},
"subclassfeature7" : {
name : "Booby Trap",
source : ["MHP:EP", 4],
minlevel : 7,
description : desc([
"I can spend 10 minutes hiding a trap. A creature can detect the trap with a",
"successful Investigation or Perception check. The DC is my Crafting Technique DC."
]),
},
"subclassfeature10" : {
name : "Cunning Mechanism",
source : ["MHP:EP", 4],
minlevel : 10,
description : desc([
"I add my Intelligence modifer to the damage of my traps",
]),
},
"subclassfeature14" : {
name : "Smart Traps",
source : ["MHP:EP", 4],
minlevel : 14,
description : desc([
"I can deploy a trap that does not trigger against or target creatures of my choosing."
]),
usages : 1,
recovery : "short rest",
},
"subclassfeature18" : {
name : "Master Trapsmith",
source : ["MHP:EP", 4],
minlevel : 18,
description : desc([
"I create a Trap Fabricator in my trapsmith's parts. It can automatically create",
"one type of trap that I choose at no cost for an action. I can change the type",
"of trap it create during a long rest."
]),
},
}
}
);
//Add the Weaponsmith Subclass
AddSubClass(
"craftsman",
"weaponsmith",
{
regExpSearch : /^(?=.*weaponsmith).*$/i,
subname : "Weaponsmith Profession",
source : ["MHP:C", 9],
fullname : "Craftsman (Weaponsmith)",
features : {
"subclassfeature3" : {
name : "Exotic Smithing",
source : ["MHP:C", 9],
minlevel : 3,
description : desc([
"I know how to craft all exotic weapons",
]),
},
"subclassfeature3.1" : {
name : "Weapon Master",
source : ["MHP:C", 10],
minlevel : 3,
description : desc([
"Choose a Fighting Style for the fighter using the \"Choose Feature\" button above",
]),
choices : ["Archery", "Dueling", "Great Weapon Fighting"],
"archery" : FightingStyles.archery,
"dueling" : FightingStyles.dueling,
"great weapon fighting" : FightingStyles.great_weapon,
},
"subclassfeature7" : {
name : "Wicked Blade",
source : ["MHP:C", 10],
minlevel : 7,
description : desc([
"I can add twice my proficiency bonus to Charisma (Intimidation) checks",
"using one of my masterwork weapons.",
]),
},
"subclassfeature10" : {
name : "Adamant Whetstone",
source : ["MHP:C", 10],
minlevel : 10,
description : desc([
"I can spend 10 minutes fortifying a weapon. If I do this as part of a short or long",
"rest, I can fortify up to 6 weapons. This lasts until the weapon hits a target.",
]),
eval : "AddString(\"Extra.Notes\", \"\\u25C6 Adamant Whetstone (Weaponsmith Profession 10, MHP:C 6)\\n - I can spend 10 minutes fortifying a weapon. If I do this as part of a short or long\\n rest, I can fortify up to 6 weapons. This lasts until the weapon hits a target.\\n I have two fortifying techniques.\\n - Honed: This weapon has a +2 bonus on attack rolls. \\n - Sharpened: This weapon deals an 1d8 additional damage on a hit.\", true);",
removeeval : "RemoveString(\"Extra.Notes\", \"\\u25C6 Adamant Whetstone (Weaponsmith Profession 10, MHP:C 6)\\n - I can spend 10 minutes fortifying a weapon. If I do this as part of a short or long\\n rest, I can fortify up to 6 weapons. This lasts until the weapon hits a target.\\n I have two fortifying techniques.\\n - Honed: This weapon has a +2 bonus on attack rolls. \\n - Sharpened: This weapon deals an 1d8 additional damage on a hit.\", false);",
},
"subclassfeature14" : {
name : "Sundering Strike",
source : ["MHP:C", 10],
minlevel : 14,
description : desc([
"As an action, I can make a single attack to try to break a target's weapon or armor.",
"If I hit, they must succeed on a Dexterity check with DC equal to my Crafting DC.",
"Otherwise, the item is broken and unusable until fixed."
]),
usages : 1,
recovery : "short rest",
action : ["action", ""],
},
"subclassfeature18" : {
name : "Master Weaponsmith",
source : ["MHP:C", 10],
minlevel : 18,
description : desc([
"I learn the Devastating legendary crafting technique. I can make weapons that deal",
"additionl damage equal to my Intelligence modifier.",
]),
calcChanges : {
atkCalc : ["if ((/devastating/i).test(WeaponText) && (/masterwork/i).test(WeaponText)) {output.extraDmg += What('Int Mod'); }; ", "This weapon deals my Int mod in extra damage (Devastating Crafting Technique)."]
},
},
}
}
);
//Craftsman Feats
FeatsList["exotic artisan"] = {
name : "Exotic Artisan",
source : ["MHP:C", 41],
prerequisite : "Prociency in at least one set of artisan's tools",
description : "I gain proficiency with a set of artisan's tools, or expertise if I am already proficient. I can add one floursih to each item I make at no cost, even if I take a shortcut. [+1 to Any]",
improvements : "Exotic Artisan (feat): +1 to any;",
toolProfs : [["Any artisan's tools", 1]],
};
FeatsList["exotic craftsman"] = {
name : "Exotic Craftsman",
source : ["MHP:C", 41],
description : "I learn to craft exotic armor and shield, or exotic weapons. When crafting, I double the amount of progess I make towards completing an item each day. [+1 Intelligence]",
improvements : "Exotic Craftsman (feat): +1 Intelligence;",
scores : [0, 0, 0, 1, 0, 0],
};
FeatsList["exotic mastery"] = {
name : "Exotic Mastery",
source : ["MHP:C", 41],
description : "I gain proficiency with two pieces of exotic equipment, which can be exotic armor, shields, or weapons. [+1 Strength or Dexterity]",
improvements : "Exotic Mastery (feat): +1 Strength or Dexterity;",
};
FeatsList["master artisan"] = {
name : "Master Artisan",
source : ["MHP:C", 41],
prerequisite : "Prociency in at least two set of artisan's tools",
description : "I have advantage on Intelligence checks to appraise items or known about a profession. I can improise sets of artisan tools I'm proficient with. Once per long rest, as an action I can make a DC 15 tool check to craft an item.",
action : ["action", " (Craft Tool)"],
recovery : "long rest",
};
//Add Exotic Weapons
WeaponsList["asp"] = {
regExpSearch : /^(?=.*asp).*$/i,
name : "Asp",
source : ["MHP:C", 21],
list : "exotic",
ability : 1,
type : "Exotic",
damage : [1, 4, "bludgeoning"],
range : "Melee, 20/60 ft",
description : "Collapsible, finesse, light, thrown",
abilitytodamage : true,
weight : 1,
};
WeaponsList["battle sycthe"] = {
regExpSearch : /^(?=.*battle)(?=.*sycthe).*$/i,
name : "Battle Scythe",
source : ["MHP:C", 21],
list : "martial",
ability : 1,
type : "Martial",
damage : [3, 4, "slashing"],
range : "Melee",
description : "Heavy, hooked, two-handed",
abilitytodamage : true,
weight : 10,
};
WeaponsList["beast cleaver"] = {
regExpSearch : /^(?=.*beast)(?=.*cleaver).*$/i,
name : "Beast Cleaver",
source : ["MHP:C", 21],
list : "exotic",
ability : 1,
type : "Exotic",
damage : [1, 8, "slashing"],
range : "Melee",
description : "Reach, switch (1d10 slashing, vicious), vicious",
abilitytodamage : true,
weight : 6,
};
WeaponsList["blood render"] = {
regExpSearch : /^(?=.*blood)(?=.*render).*$/i,
name : "Blood Render",
source : ["MHP:C", 21],
list : "exotic",
ability : 1,
type : "Exotic",
damage : [1, 8, "slashing"],
range : "Melee",
description : "Switch (1d12 slashing, two-handed, vicious), vicious",
abilitytodamage : true,
weight : 8,
};
WeaponsList["cestus"] = {
regExpSearch : /^(?=.*cestus).*$/i,
name : "Cestus",
source : ["MHP:C", 21],
list : "martial",
ability : 1,
type : "Martial",
damage : [1, 4, "bludgeoning"],
range : "Melee",
description : "Fist",
abilitytodamage : true,
weight : 2,
};
WeaponsList["chakram"] = {
regExpSearch : /^(?=.*chakram).*$/i,
name : "Chakram",
source : ["MHP:C", 21],
list : "exotic",
ability : 1,
type : "Exotic",
damage : [1, 6, "slashing"],
range : "Melee, 30/120 ft",
description : "Finesse, light, returning, thrown",
abilitytodamage : true,
weight : 1,
};
WeaponsList["claw gauntlet"] = {
regExpSearch : /^(?=.*claw)(?=.*gauntlet).*$/i,
name : "Claw Gauntlet",
source : ["MHP:C", 21],
list : "martial",
ability : 1,
type : "Martial",
damage : [1, 4, "slashing"],
range : "Melee",
description : "Fist",
abilitytodamage : true,
weight : 2,
};
WeaponsList["crossbow, repeating"] = {
regExpSearch : /^(?=.*crossbow)(?=.*repeating).*$/i,
name : "Crossbow, Repeating",
source : ["MHP:C", 21],
list : "exotic",
ability : 1,
type : "Exotic",
damage : [1, 10, "piercing"],
range : "150/600 ft",
description : "Ammunition, superheavy, two-handed",
abilitytodamage : true,
weight : 15,
};
WeaponsList["deckhammer"] = {
regExpSearch : /^(?=.*deckhammer).*$/i,
name : "Deckhammer",
source : ["MHP:C", 21],
list : "exotic",
ability : 1,
type : "Exotic",
damage : [2, 6, "bludgeoning"],
range : "Melee",
description : "Heavy, switch (1d8 slashing, versitle (1d10)), two-handed",
abilitytodamage : true,
weight : 15,
};
WeaponsList["dervish"] = {
regExpSearch : /^(?=.*dervish).*$/i,
name : "Dervish",
source : ["MHP:C", 21],
list : "exotic",
ability : 1,
type : "Exotic",
damage : [1, 6, "slashing"],
range : "Melee",
description : "Double (1d6 slashing), finesse, light, two-handed",
abilitytodamage : true,
weight : 5,
};
WeaponsList["double-sword"] = {
regExpSearch : /^(?=.*double-sword).*$/i,
name : "Double-Sword",
source : ["MHP:C", 21],
list : "exotic",
ability : 1,
type : "Exotic",
damage : [1, 8, "slashing"],
range : "Melee",
description : "Double (1d8 slashing), heavy, two-handed",
abilitytodamage : true,
weight : 10,
};
WeaponsList["dwarven waraxe"] = {
regExpSearch : /^(?=.*dwarven)(?=.*waraxe).*$/i,
name : "Dwarven Waraxe",
source : ["MHP:C", 21],
list : "exotic",
ability : 1,
type : "Exotic",
damage : [1, 8, "slashing"],
range : "Melee",
description : "Double (1d8 piercing), heavy, two-handed",
abilitytodamage : true,
weight : 12,
};
WeaponsList["goliath hammer"] = {
regExpSearch : /^(?=.*goliath)(?=.*hammer).*$/i,
name : "Goliath Hammer",
source : ["MHP:C", 21],
list : "exotic",
ability : 1,
type : "Exotic",
damage : [2, 8, "bludgeoning"],
range : "Melee",
description : "Superheavy, two-handed",
abilitytodamage : true,
weight : 20,
};
WeaponsList["grand spear"] = {
regExpSearch : /^(?=.*grand)(?=.*spear).*$/i,
name : "Grand Spear",
source : ["MHP:C", 21],
list : "exotic",
ability : 1,
type : "Exotic",
damage : [1, 8, "piercing"],
range : "Melee, 20/60 ft",
description : "Thrown, versatile (1d10)",
abilitytodamage : true,
weight : 10,
};
WeaponsList["great bow"] = {
regExpSearch : /^(?=.*great)(?=.*bow).*$/i,
name : "great bow",
source : ["MHP:C", 21],
list : "exotic",
ability : 1,
type : "Exotic",
damage : [1, 10, "piercing"],
range : "150/600 ft",
description : "Ammunition, superheavy, two-handed",
abilitytodamage : true,
weight : 15,
};
WeaponsList["great scimitar"] = {
regExpSearch : /^(?=.*great)(?=.*scimitar).*$/i,
name : "Great Scimitar",
source : ["MHP:C", 21],
list : "exotic",
ability : 1,
type : "Exotic",
damage : [1, 8, "slashing"],
range : "Melee",
description : "Finesse, versatile (1d10)",
abilitytodamage : true,
weight : 4,
};
WeaponsList["grim scythe"] = {
regExpSearch : /^(?=.*grim)(?=.*scythe).*$/i,
name : "Grim Scythe",
source : ["MHP:C", 21],
list : "exotic",
ability : 1,
type : "Exotic",
damage : [6, 4, "slashing"],
range : "Melee",
description : "Hooked, massive, superheavy, two-handed",
abilitytodamage : true,
weight : 30,
};
WeaponsList["ignition fist"] = {
regExpSearch : /^(?=.*ignition)(?=.*fist).*$/i,
name : "Ignition Fist",
source : ["MHP:C", 21],
list : "exotic",
ability : 1,
type : "Exotic",
damage : [1, 6, "bludgeoning"],
range : "Melee",
description : "Ballistic (2d4 piercing damage), fist, reload (6 shots)",
abilitytodamage : true,
weight : 3,
};
WeaponsList["khopesh"] = {
regExpSearch : /^(?=.*khopesh).*$/i,
name : "Khopesh",
source : ["MHP:C", 21],
list : "martial",
ability : 1,
type : "Martial",
damage : [1, 6, "slashing"],
range : "Melee",
description : "Finesse, hooked, light",
abilitytodamage : true,
weight : 4,
};
WeaponsList["man catcher"] = {
regExpSearch : /^(?=.*man)(?=.*catcher).*$/i,
name : "Man Catcher",
source : ["MHP:C", 21],
list : "exotic",
ability : 1,
type : "Exotic",
damage : [1, 4, "piercing"],
range : "Melee",
description : "Grappling, heavy, reach, two-handed",
abilitytodamage : true,
weight : 10,
};
WeaponsList["mountain cleaver"] = {
regExpSearch : /^(?=.*mountain)(?=.*cleaver).*$/i,
name : "Mountain Cleaver",
source : ["MHP:C", 21],
list : "exotic",
ability : 1,
type : "Exotic",
damage : [2, 12, "slashing"],
range : "Melee",
description : "Massive, superheavy, two-handed",
abilitytodamage : true,
weight : 45,
};
WeaponsList["portable ballista"] = {
regExpSearch : /^(?=.*portable ballista).*$/i,
name : "portable ballista",
source : ["MHP:C", 21],
list : "exotic",
ability : 1,
type : "Exotic",
damage : [1, 12, "piercing"],
range : "200/800 ft",
description : "Ammunition, loading, mounted, superheavy, two-handed",
abilitytodamage : true,
weight : 25,
};
WeaponsList["punching dagger"] = {
regExpSearch : /^(?=.*punching)(?=.*dagger).*$/i,
name : "Punching Dagger",
source : ["MHP:C", 21],
list : "martial",
ability : 1,
type : "Martial",
damage : [1, 4, "piercing"],
range : "Melee",
description : "Fist",
abilitytodamage : true,
weight : 2,
};
WeaponsList["quickblade"] = {
regExpSearch : /^(?=.*quickblade).*$/i,
name : "Quickblade",
source : ["MHP:C", 21],
list : "exotic",
ability : 1,
type : "Exotic",
damage : [1, 4, "piercing"],
range : "Melee, 20/60ft",
description : "Collapsible, finesse, light, thrown",
abilitytodamage : true,
weight : 1,
};
WeaponsList["shield axe"] = {
regExpSearch : /^(?=.*shield)(?=.*axe).*$/i,
name : "Shield Axe",
source : ["MHP:C", 21],
list : "exotic",
ability : 1,
type : "Exotic",
damage : [1, 6, "slashing"],
range : "Melee",
description : "Shield (+1 AC when not wielding a shield)",
abilitytodamage : true,
weight : 5,
};
WeaponsList["spiked chain"] = {
regExpSearch : /^(?=.*spiked)(?=.*chain).*$/i,
name : "Spiked Chain",
source : ["MHP:C", 21],
list : "exotic",
ability : 1,
type : "Exotic",
damage : [1, 4, "slashing"],
range : "Melee",
description : "Double (1d4 slashing), finesse, reach, two-handed",
abilitytodamage : true,
weight : 6,
};
WeaponsList["storm hammer"] = {
regExpSearch : /^(?=.*storm)(?=.*hammer).*$/i,
name : "Storm Hammer",
source : ["MHP:C", 21],
list : "exotic",
ability : 1,
type : "Exotic",
damage : [2, 6, "bludgeoning"],
range : "Melee",
description : "Ballistic (2d4 piercing damage), heavy, reload (6 shots), two-handed",
abilitytodamage : true,
weight : 45,
};
WeaponsList["titan maul"] = {
regExpSearch : /^(?=.*titan)(?=.*maul).*$/i,
name : "Titan Maul",
source : ["MHP:C", 21],
list : "exotic",
ability : 1,
type : "Exotic",
damage : [2, 12, "bludgeoning"],
range : "Melee",
description : "Massive, superheavy, two-handed",
abilitytodamage : true,
weight : 45,
};
WeaponsList["tether club"] = {
regExpSearch : /^(?=.*tether club).*$/i,
name : "Tether Club",
source : ["MHP:C", 21],
list : "exotic",
ability : 1,
type : "Exotic",
damage : [1, 8, "bludgeoning"],
range : "Melee",
description : "Finesse, switch (1d6 bludgeoning, finesse, reach)",
abilitytodamage : true,
weight : 4,
};
WeaponsList["warpike"] = {
regExpSearch : /^(?=.*warpike).*$/i,
name : "Warpike",
source : ["MHP:C", 21],
list : "exotic",
ability : 1,
type : "Exotic",
damage : [1, 12, "piercing"],
range : "Melee",
description : "Reach, superheavy, two-handed",
abilitytodamage : true,
weight : 15,
};
WeaponsList["whipsword"] = {
regExpSearch : /^(?=.*whipsword).*$/i,
name : "Whipsword",
source : ["MHP:C", 21],
list : "exotic",
ability : 1,
type : "Exotic",
damage : [1, 8, "slashing"],
range : "Melee",
description : "Finesse, switch (1d6 slashing, finesse, reach)",
abilitytodamage : true,
weight : 4,
};
WeaponsList["zweihaender"] = {
regExpSearch : /^(?=.*zweihaender).*$/i,
name : "Zweihaender",
source : ["MHP:C", 21],
list : "exotic",
ability : 1,
type : "Exotic",
damage : [1, 8, "slashing"],
range : "Melee",
description : "Superheavy, two-handed",
abilitytodamage : true,
weight : 15,
};
//Add Firearms
WeaponsList["coach gun"] = {
regExpSearch : /^(?=.*coach)(?=.*gun).*$/i,
name : "Coach Gun",
source : ["MHP:C", 22],
list : "firearm",
ability : 2,
type: "Firearm",
damage : [3, 4, "piercing"],
range : "15/45 ft",
weight : 6,
description : "Ammunition, reload (2 shots), scatter, two-handed",
abilitytodamage : false,
ammo : "shell"
};
WeaponsList["flamethrower"] = {
regExpSearch : /^(?=.*flamethrower).*$/i,
name : "Flamethrower",
source : ["MHP:C", 22],
list : "firearm",
ability : 2,
type: "Firearms",
damage : [4, 6, "fire"],
range : "Special",
weight : 10,
description : "Heavy, reload (6 uses), special, two-handed",
abilitytodamage : false,
};
WeaponsList["gatling gun"] = {
regExpSearch : /^(?=.*gatling)(?=.*gun).*$/i,
name : "Gatling Gun",
source : ["MHP:C", 22],
list : "firearm",
ability : 2,
type: "Firearms",
damage : [2, 8, "piercing"],
range : "60/180 ft",
weight : 80,
description : "Ammunition, heavy, mounted, reload (50 shots), special, two-handed",
abilitytodamage : false,
ammo : "bullet"
};
WeaponsList["light cannon"] = {
regExpSearch : /^(?=.*light)(?=.*cannon).*$/i,
name : "Light Cannon",
source : ["MHP:C", 22],
list : "firearm",
ability : 2,
type: "Firearm",
damage : [4, 12, "bludgeoning"],
range : "120/360 ft",
weight : 225,
description : "Ammunition, heavy, loading, mounted, special, two-handed",
abilitytodamage : false,
ammo : "cannonball"
};
WeaponsList["parlor gun"] = {
regExpSearch : /^(?=.*parlor)(?=.*gun).*$/i,
name : "Parlor Gun",
source : ["MHP:C", 22],
list : "firearm",
ability : 2,
type: "Firearm",
damage : [2, 4, "piercing"],
range : "30/90 ft",
weight : 2,
description : "Ammunition, concealable, light, loading",
abilitytodamage : false,
ammo : "bullet"
};
WeaponsList["light revolver"] = {
regExpSearch : /^(?=.*light)(?=.*revolver).*$/i,
name : "Light Revolver",
source : ["MHP:C", 22],
list : "firearm",
ability : 2,
type: "Firearm",
damage : [2, 6, "piercing"],
range : "40/120 ft",
weight : 3,
description : "Ammunition, light, reload (6 shots)",
abilitytodamage : false,
ammo : "bullet"
};
WeaponsList["revolver"] = {
regExpSearch : /^(?=.*revolver).*$/i,
name : "Revolver",
source : ["MHP:C", 22],
list : "firearm",
ability : 2,
type: "Firearm",
damage : [2, 8, "piercing"],
range : "40/120 ft",
weight : 3,
description : "Ammunition, light, reload (6 shots)",
abilitytodamage : false,
ammo : "bullet"
};
WeaponsList["hunting rifle"] = {
regExpSearch : /^(?=.*hunting)(?=.*rifle).*$/i,
name : "Hunting Rifle",
source : ["MHP:C", 22],
list : "firearm",
ability : 2,
type: "Firearm",
damage : [2, 10, "piercing"],
range : "80/240 ft",
weight : 8,
description : "Ammunition, reload (4 shots), two-handed",
abilitytodamage : false,
ammo : "bullet"
};
WeaponsList["repeating rifle"] = {
regExpSearch : /^(?=.*repeating)(?=.*rifle).*$/i,
name : "Repeating Rifle",
source : ["MHP:C", 22],
list : "firearm",
ability : 2,
type: "Firearm",
damage : [2, 8, "piercing"],
range : "80/240 ft",
weight : 8,
description : "Ammunition, reload (12 shots), two-handed",
abilitytodamage : false,
ammo : "bullet"
};
WeaponsList["double-barrel shotgun"] = {
regExpSearch : /^(?=.*double-barrel)(?=.*shotgun).*$/i,
name : "Double-Barrel Shotgun",
source : ["MHP:C", 22],
list : "firearm",
ability : 2,
type: "Firearm",
damage : [2, 8, "piercing"],
range : "30/90 ft",
weight : 7,
description : "Ammunition, reload (2 shots), scatter, two-handed",
abilitytodamage : false,
ammo : "shell"
};
WeaponsList["level-action shotgun"] = {
regExpSearch : /^(?=.*lever-action)(?=.*shotgun).*$/i,
name : "Lever-Action Shotgun",
source : ["MHP:C", 22],
list : "firearm",
ability : 2,
type: "Firearm",
damage : [2, 6, "piercing"],
range : "30/90 ft",
weight : 7,
description : "Ammunition, reload (8 shots), scatter, two-handed",
abilitytodamage : false,
ammo : "shell"
};
WeaponsList["gunblade"] = {
regExpSearch : /^(?=.*gunblade).*$/i,
name : "Gunblade",
source : ["MHP:C", 22],
list : "firearm",
ability : 2,
type: "Exotic Firearm",
damage : [1, 8, "slashing"],
range : "40/120 ft",
weight : 8,
description : "Combined (2d8 piercing, ammunition, reload (6 shots)), versatile (1d10)",
abilitytodamage : false,
ammo : "bullet"
};
WeaponsList["titan revolver"] = {
regExpSearch : /^(?=.*titan)(?!.*revolver).*$/i,
name : "Titan Revolver",
source : ["MHP:C", 22],
list : "firearm",
ability : 2,
type: "Firearm",
damage : [1, 10, "slashing"],
range : "40/120 ft",
weight : 6,
description : "Ammunition, heavy, reload (5 shots)",
abilitytodamage : false,
ammo : "bullet"
};
WeaponsList["wyvern axe"] = {
regExpSearch : /^(?=.*wyvern)(?=.*axe).*$/i,
name : "Wyvern Axe",
source : ["MHP:C", 22],
list : "firearm",
ability : 2,
type: "Exotic Firearm",
damage : [1, 10, "slashing"],
range : "30/90 ft",
weight : 8,
description : "Combined (3d4 piercing, ammunition, loading, scatter), heavy, two-handed",
abilitytodamage : false,
ammo : "shell"
};
//Add Ammunition
AmmoList["bullet"] = {
name : "Bullets",
source : ["MHP:C", 25],
weight : 0.1,
icon : "Bullets",
checks : [".Bullet"],
display : 50,
};
AmmoList["shell"] = {
name : "Shells",
source : ["MHP:C", 25],
weight : 0.1,
icon : "Bullets",
checks : [".Bullet"],
display : 50,
};
AmmoList["cannonball"] = {
name : "Cannonballs",
source : ["MHP:C", 25],
weight : 0.1,
icon : "Bullets",
checks : [".Bullet"],
display : 50,
};
//Add the Exotic Armors
ArmourList["hardened leather"] = {
regExpSearch : /^(?=.*hardened leather).*$/i,
name : "Hardened Leather",
source : ["MHP:C", 30],
type : "light",
ac : 13,
stealthdis : false,
weight : 15,
invName : "Hardened Leather armor",
};
ArmourList["mountain leather"] = {
regExpSearch : /^(?=.*mountain leather).*$/i,
name : "Mountain Leather",
source : ["MHP:C", 30],
type : "light",
ac : 12,
stealthdis : false,
weight : 20,
invName : "Mountain Leather armor",
};
ArmourList["ballistic armor"] = {
regExpSearch : /^(?=.*ballistic armor).*$/i,
name : "Ballistic Armor",
source : ["MHP:C", 30],
type : "medium",
ac : 14,
dex : 2,
stealthdis : true,
weight : 20,
invName : "Ballistic Armor",
};
ArmourList["hero plate"] = {
regExpSearch : /^(?=.*hero plate).*$/i,
name : "Hero Plate",
source : ["MHP:C", 30],
type : "medium",
ac : 16,
dex : 2,
stealthdis : true,
weight : 50,
invName : "Hero Plate armor",
};
ArmourList["warsong armor"] = {
regExpSearch : /^(?=.*warsong armor).*$/i,
name : "Warsong Armor",
source : ["MHP:C", 30],
type : "medium",
ac : 15,
dex : 2,
stealthdis : true,
weight : 50,
invName : "Warsong Armor",
};
ArmourList["battle plate"] = {
regExpSearch : /^(?=.*battle plate).*$/i,
name : "Battle Plate",
source : ["MHP:C", 30],
type : "heavy",
ac : 19,
dex : -10,
stealthdis : true,
weight : 75,
strReq : 16,
};
ArmourList["mountain plate"] = {
regExpSearch : /^(?=.*mountain plate).*$/i,
name : "Mountain Plate",
source : ["MHP:C", 30],
type : "heavy",
ac : 20,
dex : -10,
stealthdis : true,
weight : 100,
strReq : 18,
};
//Create new spells
SpellsList["alarm glyph"] = {
name : "Alarm Glyph",
regExpSearch : /^(?=.*alarm)(?=.*glyph).*$/i,
classes : ["bard", "cleric", "druid", "sorcerer", "paladin", "warlock", "wizard"],
source : ["MHP:C", 41],
ritual : false,
level : 2,
school : "Abjur",
time : "10 min",
range : "Touch",
components : "V,S,M\u2020",
compMaterial : "powdered diamond worth 100 gp, which the spell consumes",
duration : "Until dispelled",
description : "Create an alarm on an opening or object. Can hold spells when cast at higher levels. (See Description)",
descriptionFull : "This spell, based on the alarm and glyph of warding spells, is used to discourage theft by triggering an alarm when an item is removed from a location. It comes in two versions: one that is cast on an aperture, and one that is cast on an object." + "\n " + "Aperture. You spend ten minutes inscribing invisible glyphs on an aperture such as a door, gate, window or archway no larger than 10 square feet. Whenever an object bearing an alarm glyph passes through the warded area, it produces the sound of a hand bell for 10 seconds within 120 feet. Casting the knock spell on the aperture suppresses the effect for 10 minutes." + "\n " + "Object. You spend ten minutes inscribing an invisible glyph on an object. This object will now trigger any alarmed apertures through which it passes." + AtHigherLevels + "When you cast the aperture version of this spell using a spell slot of 3rd level or higher, you can store one spell of 2nd level or lower (usually hold person) inside it. This spell must target be capable of targeting a creature, object, or area and you must expend the appropriate spell slot and spell components when the spell is stored. This stored spell is then cast and expended the first time the alarm is triggered. If the triggering object isbeing worn or carried, the stored spell targets whoever is carrying it or the location where they are standing. If not, it targets the object directly. Once it has been expended, the stored spell can be re-activated (or changed to a different spell) by touching the glyph and expending another spell slot and spell components.",
};
SpellsList["dispel alarm"] = {
name : "Dispel Alarm",
regExpSearch : /^(?=.*dispel)(?=.*alarmh).*$/i,
classes : ["bard", "cleric", "druid", "sorcerer", "paladin", "warlock", "wizard"],
source : ["MHP:C", 42],
ritual : false,
level : 2,
school : "Abjur",
time : "1 a",
range : "Touch",
components : "V,S",
duration : "Instantaneous",
description : "Dispel the Alarm spell and object version of the Alarm Glyph spell",
descriptionFull : "You touch an object. If there is an alarm glyph or alarm spell on the object, the spell is dispelled. This spell can only be used on the object version of the alarm glyph; the aperture version can only be affected by dispel magic.",
};
SpellsList["duplicate onject"] = {
name : "Duplicate Object",
regExpSearch : /^(?=.*duplicate)(?=.*object).*$/i,
classes : ["bard", "cleric", "druid", "sorcerer", "paladin", "warlock", "wizard"],
source : ["MHP:C", 42],
ritual : false,
level : 4,
school : "Conj",
time : "1 min",
range : "30 ft",
components : "V,S,M",
compMaterial : "a silvered mirror",
duration : "Instantaneous",
description : "Create an exact copy of a non-magical object. (See description)",
descriptionFull : "You create an exact copy of a non-magical, non-living object you can see within range (the copy must also appear within the spell’s range.) The object must fit inside a 5-foot cube. The copy is a real, permanent, independent object that functions exactly like the original. You can’t duplicate an object created by this spell." + "\n " + "If the object you wish to copy would be considered a ‘complex item’ as noted in the Tools of the Trade chapter, you must be proficient in the requisite tools to duplicate it using this spell." + "\n " + "Materials such as adamantine, coldwood, mithral, and zurkhwood count as magical for the purposes of this spell." + AtHigherLevels + "When you cast this spell using a spell slot of 5th level or higher, the sides of the cube in which the object must fit are increased by 5 feet for each slot level above 4th, to a maximum of a 20-foot cube. Thus, when cast at 5th level, you could duplicate an object that fits in a 10-foot cube.",
};
SpellsList["safiya's industrious worker"] = {
name : "Safiya's Industrious Worker",
regExpSearch : /^(?=.*industrious)(?=.*worker).*$/i,
classes : ["bard", "cleric", "druid", "sorcerer", "paladin", "warlock", "wizard"],
source : ["MHP:C", 42],
ritual : false,
level : 1,
school : "Trans",
time : "10 min",
range : "Touch",
components : "V,S,M",
compMaterial : "a bar of iron",
duration : "8 h",
description : "Can craft items at 4 times the speed. One additional creature/SL",
descriptionFull : "You touch a willing creature. For the next 8 hours, they are able to perform manual tasks with exceptional speed." + "\n " + "Every hour spent crafting items under the influence of this spell provides 4 hours’ worth of output. This can be combined with other effects; for example, a character with expertise using this spell would produce 8 hours’ worth of work per hour." + AtHigherLevels + "When you cast this spell using a spell slot of 2nd level or higher, you can target one additional creature for each slot level above 1st.",
};
SpellsList["unseen accountant"] = {
name : "Unseen Accountant",
regExpSearch : /^(?=.*unseen)(?=.*accountant).*$/i,
classes : ["bard", "cleric", "druid", "sorcerer", "paladin", "warlock", "wizard"],
source : ["MHP:C", 42],
ritual : true,
level : 2,
school : "Conj",
time : "1 a",
range : "60 ft",
components : "V,S,M",
compMaterial : "an abacus",
duration : "8 h",
description : "Create invisible servant that carries out intellectual tasks (See description)",
descriptionFull : "This spell creates an invisible, shapeless force that performs intellectual tasks at your command until the spell ends. The servant springs into existence in an unoccupied space on the ground within range. It has AC 10, 1 hit point, an Intelligence of 12, and it can’t attack. If it drops to 0 hit points, the spell ends." + "\n " + "Once on each of your turns as a bonus action, you can mentally command the servant to move up to 15 feet and interact with an object. The accountant can perform intellectual tasks that a human clerk could do, such as assaying prices, updating accounts, managing inventories or computing interest. Once you give the command, the accountant performs the task to the best of its ability until it completes the task, then waits for your next command. The accountant can perform no physical labour and is not able to lift any object heavier than a bottle of ink." + "\n " + "If you command the accountant to perform a task that would move it more than 300 feet away from you, the spell ends.",
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment