Skeletal Pirate (5e Creature)

Skeletal Pirate

Medium undead, neutral evil


Armor Class 15 (leather armor)
Hit Points 19 (3d8 + 6)
Speed 30 ft.


STR DEX CON INT WIS CHA
12 (+1) 16 (+3) 15 (+2) 10 (+0) 10 (+0) 10 (+0)

Damage Vulnerabilities bludgeoning
Damage Immunities poison
Condition Immunities exhaustion, poisoned
Senses darkvision 60 ft.; passive Perception 10
Languages any one language (usually Common)
Challenge 1/2 (100 XP)


Taunt. Once on its turn, the skeletal pirate can use an action taunt a creature within 60 feet of it which can see or hear it. The creature must make a DC 13 Wisdom saving throw. On a failure, the creature is taunted by the skeletal pirate until the end of its next turn.

Trained Seafarer. Skeletal Pirates are proficient in vehicles (water).

ACTIONS

Flintlock Pistol. Ranged Weapon Attack: +5 to hit, range 20/60, one target. Hit: 8 (1d10 + 3) piercing damage.

Cutlass. Melee Weapon Attack: +3 to hit, reach 5 ft., one target. Hit: 4 (1d6 + 1) slashing damage.


What could be scarier than a skeleton or a pirate? That's right, a skeletal pirate - the reanimated bones of a drunken, murderous pirate, continuing to prowl the high seas for blood and gold after his life was ended by the curse of an unfortunate fate. These skeletons are smarter than your average skeleton by a good margin, and as they fight they hurl seafarers' insults at the living.


Back to Main Page 5e Homebrew 5e Creatures

gollark: WHY(JIT) is capable of arbitrary IO.
gollark: Er, you'd need to sandbox it.
gollark: ```python#!/usr/bin/env python3import argparseimport subprocessimport randomimport stringparser = argparse.ArgumentParser(description="Compile a WHY program using WHYJIT.")parser.add_argument("input", help="File containing WHY source code")parser.add_argument("-o", "--output", help="Filename of the output executable to make", default="./a.why")parser.add_argument("-O", "--optimize", help="Optimization level", type=int, default="0")args = parser.parse_args()def randomword(length): letters = string.ascii_lowercase return ''.join(random.choice(letters) for i in range(length))def which(program): proc = subprocess.run(["which", program], stdout=subprocess.PIPE) if proc.returncode == 0: return proc.stdout.replace(b"\n", b"") else: return Nonedef find_C_compiler(): compilers = ["gcc", "clang", "tcc", "cc"] for compiler in compilers: path = which(compiler) if path != None: return pathdef build_output(code, mx): C_code = f"""#define QUITELONG long long intconst QUITELONG max = {mx};int main() {{ volatile QUITELONG i = 0; // disable some "optimizations" that RUIN OUR BEAUTIFUL CODE! while (i < max) {{ i++; }} {code}}} """ heredoc = randomword(100) devnull = "2>/dev/null" shell_script = f"""#!/bin/shTMP1=/tmp/ignore-meTMP2=/tmp/ignore-me-tooTMP3=/tmp/dont-look-here cat << {heredoc} > $TMP1{C_code}{heredoc}sed -e '1,/^exit \$?$/d' "$0" > $TMP3chmod +x $TMP3$TMP3 -x c -o $TMP2 $TMP1chmod +x $TMP2$TMP2exit $?""".encode("utf-8") with open(find_C_compiler(), "rb") as f: return shell_script + f.read()input = args.inputoutput = args.outputwith open(input, "r") as f: contents = f.read() looplen = max(1000, (2 ** -args.optimize) * 1000000000) code = build_output( contents, looplen ) with open(output, "wb") as out: out.write(code)```
gollark: I mean, it uses (y, x) coordinates, if I remember correctly!
gollark: Where n = infinity.
This article is issued from Dandwiki. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.