Pebblesworn's Hand
let pg = dv.current(); // set pg to be the current page, for brevity
let Name = pg.Name;
let Source = pg.Source;
let SourcePage = pg.SourcePage;
let Ritual = pg.Ritual;
let Level = pg.Level;
let School = pg.School;
let AreaDetail = pg.AreaDetail;
let TagsArea = pg.TagsArea;
let TagsMisc = pg.TagsMisc;
let RangeType = pg.RangeType;
let Range = pg.Range;
let ComponentsV = pg.ComponentsV;
let ComponentsS = pg.ComponentsS;
let ComponentsM = pg.ComponentsM;
let ComponentsMDetail = pg.ComponentsMDetail;
let ComponentsMCostCheck = pg.ComponentsMCostCheck;
let ComponentsMCost = pg.ComponentsMCost;
let ComponentsMConsume = pg.ComponentsMConsume;
let CastingTime = pg.CastingTime;
let DurationType = pg.DurationType;
let Duration = pg.Duration;
let Concentration = pg.Concentration;
let SaveCheck = pg.SaveCheck;
let AbilityCheck = pg.AbilityCheck;
let AffectsCreatureTypeCheck = pg.AffectsCreatureTypeCheck;
let AffectsCreatureType = pg.AffectsCreatureType;
let SpellAttack = pg.SpellAttack ;
let ImpactCheck = pg.ImpactCheck;
let ImpactTable = pg.ImpactTable;
let DamageInflict = pg.DamageInflict;
let ConditionInflict = pg.ConditionInflict;
let DamageVulnerable = pg.DamageVulnerable;
let DamageResist = pg.DamageResist;
let DamageImmune = pg.DamageImmune;
let ConditionImmune = pg.ConditionImmune;
let scalingLevelDice = pg.scalingLevelDice;
let HigherLevels = pg.HigherLevels;
let Description = pg.Description;
let DescriptionSub = pg.DescriptionSub;
let DescriptionTable = pg.DescriptionTable;
let Classes = pg.Classes;
let Backgrounds = pg.Backgrounds;
let Races = pg.Races;
////////////////////////////////
/////////// Filters
/////////// (e.g., excluding showing UA material
/////////// N.B. does not seem to work for multiples... yet)]
////////////////////////////////
let filterSources = ["(UA)"];
let ClassesFiltered = Classes.filter(x=>!x.includes(filterSources));
////////////////////////////////
/// Emoji Sets
////////////////////////////////
let emojiSets = {
//// Components //// //// //// //// ////
ComponentsV: ['💬', ''],
ComponentsS: ['🖐🏽', ''],
ComponentsM: ['🍄', ''],
ComponentsMConsume: [' **(Consumed)**', ''],
ComponentsMCostCheck: [ComponentsMCost, ''],
//// Concentration, Ritual, Save and Ability Check, Duration //// ////
Concentration: [' > [!danger] Concentration', ''],
Ritual: [' > [!tldr] Ritual', ''],
SaveCheck: ['> [!bug] ' + SaveCheck + ' Save\n>', ''],
AbilityCheck: ['> [!bug] ' + AbilityCheck + ' Check\n>', ''],
DurationType: {
timed: ' :fas_clock: ',
instant: 'Instant :fas_bolt_lightning: '
},
Duration: [Duration, ''],
//// Higher Levels //// //// //// //// ////
HigherLevels: ['> [!dnd-higher-levels] ' + "At Higher Levels (Slots)" + '\n' + HigherLevels, ''],
scalingLevelDice: ['> [!dnd-higher-levels] ' + "At Higher Levels (Character)" + '\n' + scalingLevelDice, ''],
//// Impacts - Damage, Condition, Creatures //// //// //// ////
DamageInflict: ['> [!dnd-impact] Damage Inflicted\n' + DamageInflict, ''],
DamageImmune: ['> [!dnd-impact-good] Damage Immunity\n' + DamageImmune, ''],
DamageResist: ['> [!dnd-impact-good] Damage Resistance\n' + DamageResist, ''],
DamageVulnerable: ['> [!attention] Damage Vulnerability\n' + DamageVulnerable, ''],
ConditionInflict: ['> [!dnd-impact] Condition Inflicted\n' + ConditionInflict, ''],
ConditionImmune: ['> [!dnd-impact-good] Condition Immunity\n' + ConditionImmune, ''],
AffectsCreatureTypeCheck: ['> [!dnd-impact] Affects Creature Type\n' + AffectsCreatureType + "\n", ''],
//// Classes, Races, Background //// //// //// //// ////
ClassesFiltered: ['> [!tldr] Classes\n' + Classes + "\n", ''],
Races: ['> [!tldr] Races\n' + Races + "\n", ''],
Backgrounds: ['> [!tldr] Backgrounds\n' + Backgrounds + "\n", ''],
};
/////// Components ////////////////////////////////////////////
let emojiV = ComponentsV ? emojiSets['ComponentsV'][0] : emojiSets['ComponentsV'][1];
let emojiS = ComponentsS ? emojiSets['ComponentsS'][0] : emojiSets['ComponentsS'][1];
let emojiM = ComponentsM ? emojiSets['ComponentsM'][0] : emojiSets['ComponentsM'][1];
let emojiMcon = ComponentsMConsume ? emojiSets['ComponentsMConsume'][0] : emojiSets['ComponentsMConsume'][1];
let emojiMcost = ComponentsMCostCheck ? emojiSets['ComponentsMCostCheck'][0] : emojiSets['ComponentsMCostCheck'][1];
/////// Concentration, Ritual, Saves, Ability Checks, Duration ///////////
let emojiC = Concentration ? emojiSets['Concentration'][0] : emojiSets['Concentration'][1];
let emojiR = Ritual ? emojiSets['Ritual'][0] : emojiSets['Ritual'][1];
let emojiSC = SaveCheck ? emojiSets['SaveCheck'][0] : emojiSets['SaveCheck'][1];
let emojiAC = AbilityCheck ? emojiSets['AbilityCheck'][0] : emojiSets['AbilityCheck'][1];
let emojiDuT = emojiSets['DurationType'][DurationType];
let emojiDu = Duration ? emojiSets['Duration'][0] : emojiSets['Duration'][1];
/////// Higher Levels /////////////////////////////
let emojiHLS = HigherLevels ? emojiSets['HigherLevels'][0] : emojiSets['HigherLevels'][1];
let emojiHLC = scalingLevelDice ? emojiSets['scalingLevelDice'][0] : emojiSets['scalingLevelDice'][1];
/////// Impacts - Damage, Conditions, Creatures /////////
let emojiDT = DamageInflict ? emojiSets['DamageInflict'][0] : emojiSets['DamageInflict'][1];
let emojiDI = DamageImmune ? emojiSets['DamageImmune'][0] : emojiSets['DamageImmune'][1];
let emojiDR = DamageResist ? emojiSets['DamageResist'][0] : emojiSets['DamageResist'][1];
let emojiDV = DamageVulnerable ? emojiSets['DamageVulnerable'][0] : emojiSets['DamageVulnerable'][1];
let emojiCT = ConditionInflict ? emojiSets['ConditionInflict'][0] : emojiSets['ConditionInflict'][1];
let emojiCI = ConditionImmune ? emojiSets['ConditionImmune'][0] : emojiSets['ConditionImmune'][1];
let emojiCreature = AffectsCreatureTypeCheck ? emojiSets['AffectsCreatureTypeCheck'][0] : emojiSets['AffectsCreatureTypeCheck'][1];
/////// Classes, Races, Backgrounds /////////
let emojiClassesFiltered = ClassesFiltered ? emojiSets['ClassesFiltered'][0] : emojiSets['ClassesFiltered'][1];
let emojiRaces = Races ? emojiSets['Races'][0] : emojiSets['Races'][1];
let emojiBackgrounds = Backgrounds ? emojiSets['Backgrounds'][0] : emojiSets['Backgrounds'][1];
////////////////////////////////
/// Content
////////////////////////////////
/////// Name, School, Level, Source /////////
dv.header(1, pg.Name);
dv.table(
[],
[
["*" + (pg.School + ', Level ' + pg.Level) + "*", (pg.Source + ', ' + pg.SourcePage)],
]
);
/////// Concentration, Ritual, Main Table, Duration ////////////////////
dv.paragraph(emojiC)
dv.paragraph(emojiR)
dv.table(
[],
[
["Casting Time:", CastingTime],
["Range:", Range],
["Area:", AreaDetail + " " + TagsArea],
["Components", emojiV + ' ' + emojiS + ' ' + emojiM],
["", ComponentsMDetail + "<br>" + emojiMcost + emojiMcon],
]
);
dv.paragraph("")
dv.span("Duration: ")
dv.el("b", emojiDu)
dv.el("b", emojiDuT)
/////// Description ////////////////////
dv.paragraph("> [!tldr] Description" + "\n>" + Description + ">" + DescriptionSub + ">" + DescriptionTable
);
/////// CARDS - Saves, Ability Checks, Damage, Conditions, Creature ////////////
dv.paragraph("\n> [!tldr] Details" + "\n>" + emojiSC + "\n>" + emojiAC + "\n>" + emojiDT + "\n>" + emojiDI + "\n>" + emojiDR + "\n>" + emojiDV + "\n>" + emojiCT + "\n>" + emojiCI + "\n>" + emojiCreature + "\n");
dv.paragraph(emojiHLS + "\n>" + emojiHLC)
/////// Clases, Races, Backgrounds ////////////////////
dv.paragraph("\n> [!tldr]- Classes/Races/Background" + "\n>" + emojiClassesFiltered + ">\n> " + emojiRaces + ">\n>" + emojiBackgrounds
);
You create a Large hand of shifting pebbles and stone in an unoccupied space that you can see within range. The hand lasts for the spell's duration, and it moves at your command, mimicking the movements of your own hand.
The hand is an object that has AC 18 and hit points equal to your hit point maximum. If it drops to 0 hit points, the spell ends. It has a Strength of 22 (+6) and a Dexterity of 10 (+0).
When you cast the spell and as a bonus action on your subsequent turns, you can move the hand up to 30 feet and then cause one of the following effects with it.
Clenched Fist.
melee ATTACK (5') 2d6 force damage.
Forceful Hand.
PUSH any direction
I make a Strength (Athletics) check (with Advantage if target)
The hand attempts to push a creature within 5 feet of it in a direction you choose. Make a check with the hand's Strength contested by the
check of the target. If the target is Medium or smaller, you have advantage on the check. If you succeed, the hand pushes the target up to 5 feet plus a number of feet equal to five times your spellcasting ability modifier. The hand moves with the target to remain within 5 feet of it.
Grasping Hand. The hand attempts to grapple a Huge or smaller creature within 5 feet of it. You use the hand's Strength score to resolve the grapple. If the target is Medium or smaller, you have advantage on the check. While the hand is grappling the target, you can use a bonus action to have the hand crush it. When you do so, the target takes bludgeoning damage equal to 1d6 + your spellcasting ability modifier.
Interposing Hand. The hand interposes itself between you and a creature you choose until you give the hand a different command. The hand moves to stay between you and the target, providing you with half cover against the target. The target can't move through the hand's space if its Strength score is less than or equal to the hand's Strength score. If its Strength score is higher than the hand's Strength score, the target can move toward you through the hand's space, but that space is difficult terrain for the target.
At Higher Levels. When you cast this spell using a spell slot of 4th level or higher, the damage from the clenched fist option increases by 2d6 and the damage from the grasping hand increases by 1d6.