D&D: import Open5e SRD bestiary as a raw staging table

fetch|gen bestiary subcommands vendor data/open5e/monsters.json (322
SRD monsters) and generate bestiary_srd_data.go — all 322 as raw SRD
stat blocks (HP/AC/ability scores/CR + per-attack damage dice).

This is a balance-baseline reference, not an engine roster: raw SRD
damage one-shots the solo player, so nothing here feeds combat. It's
what the future tuning pass reads against when deriving dndBestiary /
srdProfiles entries. XP is derived from CR (Open5e has no XP field).
This commit is contained in:
prosolis
2026-05-14 15:28:42 -07:00
parent d6ea08bba6
commit 53be17e6fe
6 changed files with 16522 additions and 5 deletions

View File

@@ -0,0 +1,342 @@
package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
"os"
"path/filepath"
"sort"
"strconv"
"strings"
"time"
)
// open5eMonster is the subset of the Open5e v1 monster schema we consume. The
// vendored JSON keeps the full payload; unknown fields are ignored here.
type open5eMonster struct {
Slug string `json:"slug"`
Name string `json:"name"`
Size string `json:"size"`
Type string `json:"type"`
CR float64 `json:"cr"`
ArmorClass int `json:"armor_class"`
HitPoints int `json:"hit_points"`
Speed map[string]any `json:"speed"`
Strength int `json:"strength"`
Dexterity int `json:"dexterity"`
Constitution int `json:"constitution"`
Intelligence int `json:"intelligence"`
Wisdom int `json:"wisdom"`
Charisma int `json:"charisma"`
Actions []open5eAction `json:"actions"`
LegendaryActions []open5eAction `json:"legendary_actions"`
SpecialAbilities []open5eNamedBlock `json:"special_abilities"`
}
// open5eAction is one entry in a monster's actions list. An entry is a weapon
// attack iff DamageDice is non-empty; Multiattack and utility actions leave it
// blank. AttackBonus/DamageBonus arrive as JSON null on non-attacks, which
// unmarshals to 0 — harmless, since DamageDice is the attack discriminator.
type open5eAction struct {
Name string `json:"name"`
Desc string `json:"desc"`
AttackBonus int `json:"attack_bonus"`
DamageDice string `json:"damage_dice"`
DamageBonus int `json:"damage_bonus"`
}
type open5eNamedBlock struct {
Name string `json:"name"`
}
type monstersPage struct {
Next string `json:"next"`
Results []open5eMonster `json:"results"`
}
// fetchMonsters pages through the SRD monster list and writes the full result
// set to data/open5e/monsters.json, pretty-printed for a reviewable diff.
func fetchMonsters() error {
client := &http.Client{Timeout: 30 * time.Second}
var all []open5eMonster
url := monstersAPIBase
for url != "" {
fmt.Fprintln(os.Stderr, "GET", url)
page, err := getMonstersPage(client, url)
if err != nil {
return err
}
all = append(all, page.Results...)
url = page.Next
}
fmt.Fprintf(os.Stderr, "fetched %d monsters\n", len(all))
if err := os.MkdirAll(filepath.Dir(monstersJSON), 0o755); err != nil {
return err
}
out, err := json.MarshalIndent(all, "", " ")
if err != nil {
return err
}
out = append(out, '\n')
return os.WriteFile(monstersJSON, out, 0o644)
}
func getMonstersPage(client *http.Client, url string) (*monstersPage, error) {
resp, err := client.Get(url)
if err != nil {
return nil, err
}
defer resp.Body.Close()
if resp.StatusCode != http.StatusOK {
return nil, fmt.Errorf("%s: HTTP %d", url, resp.StatusCode)
}
body, err := io.ReadAll(resp.Body)
if err != nil {
return nil, err
}
var page monstersPage
if err := json.Unmarshal(body, &page); err != nil {
return nil, err
}
return &page, nil
}
// ── Staging-table classifier ─────────────────────────────────────────────────
// genStatBlock mirrors plugin.SRDStatBlock — a raw SRD stat block. These values
// are NOT engine-tuned: raw SRD damage one-shots gogobee's solo player (see
// bestiary_srd.go). The staging table is a balance baseline the hand-authored
// dndBestiary / srdProfiles tuning pass reads against, not a drop-in roster.
type genStatBlock struct {
Slug, Name string
Size, Type string
CR float64
XP int
HP, AC int
SpeedWalk int
STR, DEX int
CON, INT int
WIS, CHA int
Multiattack string
Attacks []genStatAttack
Traits []string
Legendary bool
}
type genStatAttack struct {
Name string
AttackBonus int
DamageDice string
DamageBonus int
AvgDamage int
DamageType string
}
// xpByCR is the SRD experience-by-challenge-rating table. Open5e exposes no XP
// field, but the tuning pass wants it, so it is derived here from CR.
var xpByCR = map[float64]int{
0: 10, 0.125: 25, 0.25: 50, 0.5: 100,
1: 200, 2: 450, 3: 700, 4: 1100, 5: 1800, 6: 2300, 7: 2900, 8: 3900,
9: 5000, 10: 5900, 11: 7200, 12: 8400, 13: 10000, 14: 11500, 15: 13000,
16: 15000, 17: 18000, 18: 20000, 19: 22000, 20: 25000, 21: 33000,
22: 41000, 23: 50000, 24: 62000, 25: 75000, 26: 90000, 27: 105000,
28: 120000, 29: 135000, 30: 155000,
}
// genBestiary reads the vendored monsters.json, classifies every SRD monster
// into a raw staging stat block, and writes the generated Go data file.
func genBestiary() error {
raw, err := os.ReadFile(monstersJSON)
if err != nil {
return fmt.Errorf("read %s (run `fetch bestiary` first?): %w", monstersJSON, err)
}
var src []open5eMonster
if err := json.Unmarshal(raw, &src); err != nil {
return err
}
blocks := make([]genStatBlock, 0, len(src))
var attacks int
for _, m := range src {
b := classifyMonster(m)
attacks += len(b.Attacks)
blocks = append(blocks, b)
}
sort.Slice(blocks, func(i, j int) bool {
if blocks[i].CR != blocks[j].CR {
return blocks[i].CR < blocks[j].CR
}
return blocks[i].Slug < blocks[j].Slug
})
fmt.Fprintf(os.Stderr, "classified %d monsters (%d parsed attacks)\n", len(blocks), attacks)
out := emitBestiary(blocks)
if err := os.WriteFile(bestiaryGenGo, out, 0o644); err != nil {
return err
}
fmt.Fprintln(os.Stderr, "wrote", bestiaryGenGo)
return nil
}
func classifyMonster(m open5eMonster) genStatBlock {
b := genStatBlock{
Slug: strings.ReplaceAll(m.Slug, "-", "_"),
Name: m.Name,
Size: strings.ToLower(strings.TrimSpace(m.Size)),
Type: strings.ToLower(strings.TrimSpace(m.Type)),
CR: m.CR,
XP: xpByCR[m.CR],
HP: m.HitPoints,
AC: m.ArmorClass,
STR: m.Strength, DEX: m.Dexterity, CON: m.Constitution,
INT: m.Intelligence, WIS: m.Wisdom, CHA: m.Charisma,
SpeedWalk: speedWalk(m.Speed),
Legendary: len(m.LegendaryActions) > 0,
}
for _, a := range m.Actions {
if strings.EqualFold(strings.TrimSpace(a.Name), "Multiattack") {
b.Multiattack = firstSentence(strings.TrimSpace(a.Desc), 200)
continue
}
if a.DamageDice == "" {
continue
}
atk := genStatAttack{
Name: a.Name,
AttackBonus: a.AttackBonus,
DamageDice: strings.ReplaceAll(a.DamageDice, " ", ""),
DamageBonus: a.DamageBonus,
}
atk.AvgDamage = int(avgDice(atk.DamageDice)) + a.DamageBonus
if mt := reDmgType.FindStringSubmatch(strings.ToLower(a.Desc)); mt != nil {
atk.DamageType = strings.ToLower(mt[1])
}
b.Attacks = append(b.Attacks, atk)
}
for _, sa := range m.SpecialAbilities {
if n := strings.TrimSpace(sa.Name); n != "" {
b.Traits = append(b.Traits, n)
}
}
return b
}
// speedWalk pulls the walking speed (in feet) out of Open5e's speed object,
// falling back to the fastest other movement mode for creatures with no walk
// speed (flyers, swimmers). Returns 0 when nothing parses.
func speedWalk(speed map[string]any) int {
asInt := func(v any) int {
if f, ok := v.(float64); ok {
return int(f)
}
return 0
}
if w := asInt(speed["walk"]); w > 0 {
return w
}
best := 0
for mode, v := range speed {
if mode == "walk" {
continue
}
if n := asInt(v); n > best {
best = n
}
}
return best
}
// avgDice returns the statistical average of an NdM dice expression. A bare or
// unparseable expression yields 0 — the staging table records what it can and
// leaves the rest for the tuning pass.
func avgDice(dice string) float64 {
i := strings.IndexByte(dice, 'd')
if i <= 0 {
return 0
}
n, err1 := strconv.Atoi(dice[:i])
m, err2 := strconv.Atoi(dice[i+1:])
if err1 != nil || err2 != nil || n <= 0 || m <= 0 {
return 0
}
return float64(n) * (float64(m) + 1) / 2
}
// ── Code emission ────────────────────────────────────────────────────────────
func emitBestiary(blocks []genStatBlock) []byte {
var b bytes.Buffer
b.WriteString(`// Code generated by cmd/open5e-import. DO NOT EDIT.
//
// Source: Open5e SRD monster dump (data/open5e/monsters.json), 5e SRD content
// under CC-BY-4.0 — see NOTICE. Regenerate with:
//
// go run ./cmd/open5e-import fetch bestiary
// go run ./cmd/open5e-import gen bestiary
//
// This is the RAW SRD staging table — see bestiary_srd_staging.go for why these
// values are a balance baseline and not a drop-in engine roster.
package plugin
func buildSRDStagingBestiary() map[string]SRDStatBlock {
return map[string]SRDStatBlock{
`)
for _, m := range blocks {
fmt.Fprintf(&b, "\t\t%q: {Slug: %q, Name: %q", m.Slug, m.Slug, m.Name)
if m.Size != "" {
fmt.Fprintf(&b, ", Size: %q", m.Size)
}
if m.Type != "" {
fmt.Fprintf(&b, ", Type: %q", m.Type)
}
fmt.Fprintf(&b, ", CR: %s", strconv.FormatFloat(m.CR, 'g', -1, 64))
if m.XP != 0 {
fmt.Fprintf(&b, ", XP: %d", m.XP)
}
fmt.Fprintf(&b, ", HP: %d, AC: %d", m.HP, m.AC)
if m.SpeedWalk != 0 {
fmt.Fprintf(&b, ", SpeedWalk: %d", m.SpeedWalk)
}
fmt.Fprintf(&b, ", STR: %d, DEX: %d, CON: %d, INT: %d, WIS: %d, CHA: %d",
m.STR, m.DEX, m.CON, m.INT, m.WIS, m.CHA)
if m.Multiattack != "" {
fmt.Fprintf(&b, ", Multiattack: %q", m.Multiattack)
}
if len(m.Attacks) > 0 {
b.WriteString(", Attacks: []SRDStatAttack{")
for i, a := range m.Attacks {
if i > 0 {
b.WriteString(", ")
}
fmt.Fprintf(&b, "{Name: %q, AttackBonus: %d, DamageDice: %q, DamageBonus: %d, AvgDamage: %d",
a.Name, a.AttackBonus, a.DamageDice, a.DamageBonus, a.AvgDamage)
if a.DamageType != "" {
fmt.Fprintf(&b, ", DamageType: %q", a.DamageType)
}
b.WriteString("}")
}
b.WriteString("}")
}
if len(m.Traits) > 0 {
b.WriteString(", Traits: []string{")
for i, t := range m.Traits {
if i > 0 {
b.WriteString(", ")
}
fmt.Fprintf(&b, "%q", t)
}
b.WriteString("}")
}
if m.Legendary {
b.WriteString(", Legendary: true")
}
b.WriteString("},\n")
}
b.WriteString("\t}\n}\n")
return b.Bytes()
}

View File

@@ -4,11 +4,13 @@
// It is a pull-once / use-many tool — the generated files are committed, so // It is a pull-once / use-many tool — the generated files are committed, so
// the running bot has no runtime dependency on the Open5e API. // the running bot has no runtime dependency on the Open5e API.
// //
// open5e-import fetch spells # vendor data/open5e/spells.json from the API // open5e-import fetch spells # vendor data/open5e/spells.json from the API
// open5e-import gen spells # classify → internal/plugin/dnd_spells_srd_data.go // open5e-import gen spells # classify → internal/plugin/dnd_spells_srd_data.go
// open5e-import fetch bestiary # vendor data/open5e/monsters.json from the API
// open5e-import gen bestiary # classify → internal/plugin/bestiary_srd_data.go
// //
// `bestiary` and `equipment` subcommands are planned; the dispatch below is // `equipment` subcommands are planned; the dispatch below is structured to
// structured to grow into them without reshuffling. // grow into them without reshuffling.
package main package main
import ( import (
@@ -25,6 +27,10 @@ const (
spellsAPIBase = "https://api.open5e.com/v1/spells/?document__slug=wotc-srd&limit=50" spellsAPIBase = "https://api.open5e.com/v1/spells/?document__slug=wotc-srd&limit=50"
spellsJSON = "data/open5e/spells.json" spellsJSON = "data/open5e/spells.json"
spellsGenGo = "internal/plugin/dnd_spells_srd_data.go" spellsGenGo = "internal/plugin/dnd_spells_srd_data.go"
monstersAPIBase = "https://api.open5e.com/v1/monsters/?document__slug=wotc-srd&limit=50"
monstersJSON = "data/open5e/monsters.json"
bestiaryGenGo = "internal/plugin/bestiary_srd_data.go"
) )
func main() { func main() {
@@ -37,6 +43,8 @@ func main() {
switch noun { switch noun {
case "spells": case "spells":
must(fetchSpells()) must(fetchSpells())
case "bestiary":
must(fetchMonsters())
default: default:
usage() usage()
} }
@@ -44,6 +52,8 @@ func main() {
switch noun { switch noun {
case "spells": case "spells":
must(genSpells()) must(genSpells())
case "bestiary":
must(genBestiary())
default: default:
usage() usage()
} }
@@ -53,7 +63,7 @@ func main() {
} }
func usage() { func usage() {
fmt.Fprintln(os.Stderr, "usage: open5e-import (fetch|gen) (spells)") fmt.Fprintln(os.Stderr, "usage: open5e-import (fetch|gen) (spells|bestiary)")
os.Exit(2) os.Exit(2)
} }

15701
data/open5e/monsters.json Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,339 @@
// Code generated by cmd/open5e-import. DO NOT EDIT.
//
// Source: Open5e SRD monster dump (data/open5e/monsters.json), 5e SRD content
// under CC-BY-4.0 — see NOTICE. Regenerate with:
//
// go run ./cmd/open5e-import fetch bestiary
// go run ./cmd/open5e-import gen bestiary
//
// This is the RAW SRD staging table — see bestiary_srd_staging.go for why these
// values are a balance baseline and not a drop-in engine roster.
package plugin
func buildSRDStagingBestiary() map[string]SRDStatBlock {
return map[string]SRDStatBlock{
"awakened_shrub": {Slug: "awakened_shrub", Name: "Awakened Shrub", Size: "small", Type: "plant", CR: 0, XP: 10, HP: 10, AC: 9, SpeedWalk: 20, STR: 3, DEX: 8, CON: 11, INT: 10, WIS: 10, CHA: 6, Attacks: []SRDStatAttack{{Name: "Rake", AttackBonus: 1, DamageDice: "1d4", DamageBonus: -1, AvgDamage: 1, DamageType: "slashing"}}, Traits: []string{"False Appearance"}},
"baboon": {Slug: "baboon", Name: "Baboon", Size: "small", Type: "beast", CR: 0, XP: 10, HP: 3, AC: 12, SpeedWalk: 30, STR: 8, DEX: 14, CON: 11, INT: 4, WIS: 12, CHA: 6, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 1, DamageDice: "1d4", DamageBonus: -1, AvgDamage: 1, DamageType: "piercing"}}, Traits: []string{"Pack Tactics"}},
"badger": {Slug: "badger", Name: "Badger", Size: "tiny", Type: "beast", CR: 0, XP: 10, HP: 3, AC: 10, SpeedWalk: 20, STR: 4, DEX: 11, CON: 12, INT: 2, WIS: 12, CHA: 5, Traits: []string{"Keen Smell"}},
"bat": {Slug: "bat", Name: "Bat", Size: "tiny", Type: "beast", CR: 0, XP: 10, HP: 1, AC: 12, SpeedWalk: 5, STR: 2, DEX: 15, CON: 8, INT: 2, WIS: 12, CHA: 4, Traits: []string{"Echolocation", "Keen Hearing"}},
"cat": {Slug: "cat", Name: "Cat", Size: "tiny", Type: "beast", CR: 0, XP: 10, HP: 2, AC: 12, SpeedWalk: 40, STR: 3, DEX: 15, CON: 10, INT: 3, WIS: 12, CHA: 7, Traits: []string{"Keen Smell"}},
"commoner": {Slug: "commoner", Name: "Commoner", Size: "medium", Type: "humanoid", CR: 0, XP: 10, HP: 4, AC: 10, SpeedWalk: 30, STR: 10, DEX: 10, CON: 10, INT: 10, WIS: 10, CHA: 10, Attacks: []SRDStatAttack{{Name: "Club", AttackBonus: 2, DamageDice: "1d4", DamageBonus: 0, AvgDamage: 2, DamageType: "bludgeoning"}}},
"crab": {Slug: "crab", Name: "Crab", Size: "tiny", Type: "beast", CR: 0, XP: 10, HP: 2, AC: 11, SpeedWalk: 20, STR: 2, DEX: 11, CON: 10, INT: 1, WIS: 8, CHA: 2, Traits: []string{"Amphibious"}},
"deer": {Slug: "deer", Name: "Deer", Size: "medium", Type: "beast", CR: 0, XP: 10, HP: 4, AC: 13, SpeedWalk: 50, STR: 11, DEX: 16, CON: 11, INT: 2, WIS: 14, CHA: 5, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 2, DamageDice: "1d4", DamageBonus: 0, AvgDamage: 2, DamageType: "piercing"}}},
"eagle": {Slug: "eagle", Name: "Eagle", Size: "small", Type: "beast", CR: 0, XP: 10, HP: 3, AC: 12, SpeedWalk: 10, STR: 6, DEX: 15, CON: 10, INT: 2, WIS: 14, CHA: 7, Attacks: []SRDStatAttack{{Name: "Talons", AttackBonus: 4, DamageDice: "1d4", DamageBonus: 2, AvgDamage: 4, DamageType: "slashing"}}, Traits: []string{"Keen Sight"}},
"frog": {Slug: "frog", Name: "Frog", Size: "tiny", Type: "beast", CR: 0, XP: 10, HP: 1, AC: 11, SpeedWalk: 20, STR: 1, DEX: 13, CON: 8, INT: 1, WIS: 8, CHA: 3, Traits: []string{"Amphibious", "Standing Leap"}},
"giant_fire_beetle": {Slug: "giant_fire_beetle", Name: "Giant Fire Beetle", Size: "small", Type: "beast", CR: 0, XP: 10, HP: 4, AC: 13, SpeedWalk: 30, STR: 8, DEX: 10, CON: 12, INT: 1, WIS: 7, CHA: 3, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 1, DamageDice: "1d6", DamageBonus: -1, AvgDamage: 2, DamageType: "slashing"}}, Traits: []string{"Illumination"}},
"goat": {Slug: "goat", Name: "Goat", Size: "medium", Type: "beast", CR: 0, XP: 10, HP: 4, AC: 10, SpeedWalk: 40, STR: 12, DEX: 10, CON: 11, INT: 2, WIS: 10, CHA: 5, Attacks: []SRDStatAttack{{Name: "Ram", AttackBonus: 3, DamageDice: "1d4", DamageBonus: 1, AvgDamage: 3, DamageType: "bludgeoning"}}, Traits: []string{"Charge", "Sure-Footed"}},
"hawk": {Slug: "hawk", Name: "Hawk", Size: "tiny", Type: "beast", CR: 0, XP: 10, HP: 1, AC: 13, SpeedWalk: 10, STR: 5, DEX: 16, CON: 8, INT: 2, WIS: 14, CHA: 6, Traits: []string{"Keen Sight"}},
"homunculus": {Slug: "homunculus", Name: "Homunculus", Size: "tiny", Type: "construct", CR: 0, XP: 10, HP: 5, AC: 13, SpeedWalk: 20, STR: 4, DEX: 15, CON: 11, INT: 10, WIS: 10, CHA: 7, Traits: []string{"Telepathic Bond"}},
"hyena": {Slug: "hyena", Name: "Hyena", Size: "medium", Type: "beast", CR: 0, XP: 10, HP: 5, AC: 11, SpeedWalk: 50, STR: 11, DEX: 13, CON: 12, INT: 2, WIS: 12, CHA: 5, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 2, DamageDice: "1d6", DamageBonus: 0, AvgDamage: 3, DamageType: "piercing"}}, Traits: []string{"Pack Tactics"}},
"jackal": {Slug: "jackal", Name: "Jackal", Size: "small", Type: "beast", CR: 0, XP: 10, HP: 3, AC: 12, SpeedWalk: 40, STR: 8, DEX: 15, CON: 11, INT: 3, WIS: 12, CHA: 6, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 1, DamageDice: "1d4", DamageBonus: -1, AvgDamage: 1, DamageType: "piercing"}}, Traits: []string{"Keen Hearing and Smell", "Pack Tactics"}},
"lemure": {Slug: "lemure", Name: "Lemure", Size: "medium", Type: "fiend", CR: 0, XP: 10, HP: 13, AC: 7, SpeedWalk: 15, STR: 10, DEX: 5, CON: 11, INT: 1, WIS: 11, CHA: 3, Attacks: []SRDStatAttack{{Name: "Fist", AttackBonus: 3, DamageDice: "1d4", DamageBonus: 0, AvgDamage: 2, DamageType: "bludgeoning"}}, Traits: []string{"Devil's Sight", "Hellish Rejuvenation"}},
"lizard": {Slug: "lizard", Name: "Lizard", Size: "tiny", Type: "beast", CR: 0, XP: 10, HP: 2, AC: 10, SpeedWalk: 20, STR: 2, DEX: 11, CON: 10, INT: 1, WIS: 8, CHA: 3},
"octopus": {Slug: "octopus", Name: "Octopus", Size: "small", Type: "beast", CR: 0, XP: 10, HP: 3, AC: 12, SpeedWalk: 5, STR: 4, DEX: 15, CON: 11, INT: 3, WIS: 10, CHA: 4, Traits: []string{"Hold Breath", "Underwater Camouflage", "Water Breathing"}},
"owl": {Slug: "owl", Name: "Owl", Size: "tiny", Type: "beast", CR: 0, XP: 10, HP: 1, AC: 11, SpeedWalk: 5, STR: 3, DEX: 13, CON: 8, INT: 2, WIS: 12, CHA: 7, Traits: []string{"Flyby", "Keen Hearing and Sight"}},
"quipper": {Slug: "quipper", Name: "Quipper", Size: "tiny", Type: "beast", CR: 0, XP: 10, HP: 1, AC: 13, SpeedWalk: 40, STR: 2, DEX: 16, CON: 9, INT: 1, WIS: 7, CHA: 2, Traits: []string{"Blood Frenzy", "Water Breathing"}},
"rat": {Slug: "rat", Name: "Rat", Size: "tiny", Type: "beast", CR: 0, XP: 10, HP: 1, AC: 10, SpeedWalk: 20, STR: 2, DEX: 11, CON: 9, INT: 2, WIS: 10, CHA: 4, Traits: []string{"Keen Smell"}},
"raven": {Slug: "raven", Name: "Raven", Size: "tiny", Type: "beast", CR: 0, XP: 10, HP: 1, AC: 12, SpeedWalk: 10, STR: 2, DEX: 14, CON: 8, INT: 2, WIS: 12, CHA: 6, Traits: []string{"Mimicry"}},
"scorpion": {Slug: "scorpion", Name: "Scorpion", Size: "tiny", Type: "beast", CR: 0, XP: 10, HP: 1, AC: 11, SpeedWalk: 10, STR: 2, DEX: 11, CON: 8, INT: 1, WIS: 8, CHA: 2},
"sea_horse": {Slug: "sea_horse", Name: "Sea Horse", Size: "tiny", Type: "beast", CR: 0, XP: 10, HP: 1, AC: 11, SpeedWalk: 20, STR: 1, DEX: 12, CON: 8, INT: 1, WIS: 10, CHA: 2, Traits: []string{"Water Breathing"}},
"shrieker": {Slug: "shrieker", Name: "Shrieker", Size: "medium", Type: "plant", CR: 0, XP: 10, HP: 13, AC: 5, STR: 1, DEX: 1, CON: 10, INT: 1, WIS: 3, CHA: 1, Traits: []string{"False Appearance"}},
"spider": {Slug: "spider", Name: "Spider", Size: "tiny", Type: "beast", CR: 0, XP: 10, HP: 1, AC: 12, SpeedWalk: 20, STR: 2, DEX: 14, CON: 8, INT: 1, WIS: 10, CHA: 2, Traits: []string{"Spider Climb", "Web Sense", "Web Walker"}},
"vulture": {Slug: "vulture", Name: "Vulture", Size: "medium", Type: "beast", CR: 0, XP: 10, HP: 5, AC: 10, SpeedWalk: 10, STR: 7, DEX: 10, CON: 13, INT: 2, WIS: 12, CHA: 4, Attacks: []SRDStatAttack{{Name: "Beak", AttackBonus: 2, DamageDice: "1d4", DamageBonus: 0, AvgDamage: 2, DamageType: "piercing"}}, Traits: []string{"Keen Sight and Smell", "Pack Tactics"}},
"weasel": {Slug: "weasel", Name: "Weasel", Size: "tiny", Type: "beast", CR: 0, XP: 10, HP: 1, AC: 13, SpeedWalk: 30, STR: 3, DEX: 16, CON: 8, INT: 2, WIS: 12, CHA: 3, Traits: []string{"Keen Hearing and Smell"}},
"bandit": {Slug: "bandit", Name: "Bandit", Size: "medium", Type: "humanoid", CR: 0.125, XP: 25, HP: 11, AC: 12, SpeedWalk: 30, STR: 11, DEX: 12, CON: 12, INT: 10, WIS: 10, CHA: 10, Attacks: []SRDStatAttack{{Name: "Scimitar", AttackBonus: 3, DamageDice: "1d6", DamageBonus: 1, AvgDamage: 4, DamageType: "slashing"}, {Name: "Light Crossbow", AttackBonus: 3, DamageDice: "1d8", DamageBonus: 1, AvgDamage: 5, DamageType: "piercing"}}},
"blood_hawk": {Slug: "blood_hawk", Name: "Blood Hawk", Size: "small", Type: "beast", CR: 0.125, XP: 25, HP: 7, AC: 12, SpeedWalk: 10, STR: 6, DEX: 14, CON: 10, INT: 3, WIS: 14, CHA: 5, Attacks: []SRDStatAttack{{Name: "Beak", AttackBonus: 4, DamageDice: "1d4", DamageBonus: 2, AvgDamage: 4, DamageType: "piercing"}}, Traits: []string{"Keen Sight", "Pack Tactics"}},
"camel": {Slug: "camel", Name: "Camel", Size: "large", Type: "beast", CR: 0.125, XP: 25, HP: 15, AC: 9, SpeedWalk: 50, STR: 16, DEX: 8, CON: 14, INT: 2, WIS: 8, CHA: 5, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 5, DamageDice: "1d4", DamageBonus: 0, AvgDamage: 2, DamageType: "bludgeoning"}}},
"cultist": {Slug: "cultist", Name: "Cultist", Size: "medium", Type: "humanoid", CR: 0.125, XP: 25, HP: 9, AC: 12, SpeedWalk: 30, STR: 11, DEX: 12, CON: 10, INT: 10, WIS: 11, CHA: 10, Attacks: []SRDStatAttack{{Name: "Scimitar", AttackBonus: 3, DamageDice: "1d6", DamageBonus: 1, AvgDamage: 4, DamageType: "slashing"}}, Traits: []string{"Dark Devotion"}},
"flying_snake": {Slug: "flying_snake", Name: "Flying Snake", Size: "tiny", Type: "beast", CR: 0.125, XP: 25, HP: 5, AC: 14, SpeedWalk: 30, STR: 4, DEX: 18, CON: 11, INT: 2, WIS: 12, CHA: 5, Traits: []string{"Flyby"}},
"giant_crab": {Slug: "giant_crab", Name: "Giant Crab", Size: "medium", Type: "beast", CR: 0.125, XP: 25, HP: 13, AC: 15, SpeedWalk: 30, STR: 13, DEX: 15, CON: 11, INT: 1, WIS: 9, CHA: 3, Attacks: []SRDStatAttack{{Name: "Claw", AttackBonus: 3, DamageDice: "1d6", DamageBonus: 1, AvgDamage: 4, DamageType: "bludgeoning"}}, Traits: []string{"Amphibious"}},
"giant_rat": {Slug: "giant_rat", Name: "Giant Rat", Size: "small", Type: "beast", CR: 0.125, XP: 25, HP: 7, AC: 12, SpeedWalk: 30, STR: 7, DEX: 15, CON: 11, INT: 2, WIS: 10, CHA: 4, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 4, DamageDice: "1d4", DamageBonus: 2, AvgDamage: 4, DamageType: "piercing"}}, Traits: []string{"Keen Smell", "Pack Tactics"}},
"giant_rat_diseased": {Slug: "giant_rat_diseased", Name: "Giant Rat (Diseased)", Size: "small", Type: "beast", CR: 0.125, XP: 25, HP: 7, AC: 12, SpeedWalk: 30, STR: 7, DEX: 15, CON: 11, INT: 2, WIS: 10, CHA: 4, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 4, DamageDice: "1d4", DamageBonus: 2, AvgDamage: 4, DamageType: "piercing"}}},
"giant_weasel": {Slug: "giant_weasel", Name: "Giant Weasel", Size: "medium", Type: "beast", CR: 0.125, XP: 25, HP: 9, AC: 13, SpeedWalk: 40, STR: 11, DEX: 16, CON: 10, INT: 4, WIS: 12, CHA: 5, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 5, DamageDice: "1d4", DamageBonus: 3, AvgDamage: 5, DamageType: "piercing"}}, Traits: []string{"Keen Hearing and Smell"}},
"guard": {Slug: "guard", Name: "Guard", Size: "medium", Type: "humanoid", CR: 0.125, XP: 25, HP: 11, AC: 16, SpeedWalk: 30, STR: 13, DEX: 12, CON: 12, INT: 10, WIS: 11, CHA: 10, Attacks: []SRDStatAttack{{Name: "Spear", AttackBonus: 3, DamageDice: "1d6", DamageBonus: 1, AvgDamage: 4, DamageType: "piercing"}}},
"kobold": {Slug: "kobold", Name: "Kobold", Size: "small", Type: "humanoid", CR: 0.125, XP: 25, HP: 5, AC: 12, SpeedWalk: 30, STR: 7, DEX: 15, CON: 9, INT: 8, WIS: 7, CHA: 8, Attacks: []SRDStatAttack{{Name: "Dagger", AttackBonus: 4, DamageDice: "1d4", DamageBonus: 2, AvgDamage: 4, DamageType: "piercing"}, {Name: "Sling", AttackBonus: 4, DamageDice: "1d4", DamageBonus: 2, AvgDamage: 4, DamageType: "bludgeoning"}}, Traits: []string{"Sunlight Sensitivity", "Pack Tactics"}},
"mastiff": {Slug: "mastiff", Name: "Mastiff", Size: "medium", Type: "beast", CR: 0.125, XP: 25, HP: 5, AC: 12, SpeedWalk: 40, STR: 13, DEX: 14, CON: 12, INT: 3, WIS: 12, CHA: 7, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 3, DamageDice: "1d6", DamageBonus: 1, AvgDamage: 4, DamageType: "piercing"}}, Traits: []string{"Keen Hearing and Smell"}},
"merfolk": {Slug: "merfolk", Name: "Merfolk", Size: "medium", Type: "humanoid", CR: 0.125, XP: 25, HP: 11, AC: 11, SpeedWalk: 10, STR: 10, DEX: 13, CON: 12, INT: 11, WIS: 11, CHA: 12, Attacks: []SRDStatAttack{{Name: "Spear", AttackBonus: 2, DamageDice: "1d6", DamageBonus: 0, AvgDamage: 3, DamageType: "piercing"}}, Traits: []string{"Amphibious"}},
"mule": {Slug: "mule", Name: "Mule", Size: "medium", Type: "beast", CR: 0.125, XP: 25, HP: 11, AC: 10, SpeedWalk: 40, STR: 14, DEX: 10, CON: 13, INT: 2, WIS: 10, CHA: 5, Attacks: []SRDStatAttack{{Name: "Hooves", AttackBonus: 4, DamageDice: "1d4", DamageBonus: 2, AvgDamage: 4, DamageType: "bludgeoning"}}, Traits: []string{"Beast of Burden", "Sure-Footed"}},
"noble": {Slug: "noble", Name: "Noble", Size: "medium", Type: "humanoid", CR: 0.125, XP: 25, HP: 9, AC: 15, SpeedWalk: 30, STR: 11, DEX: 12, CON: 11, INT: 12, WIS: 14, CHA: 16, Attacks: []SRDStatAttack{{Name: "Rapier", AttackBonus: 3, DamageDice: "1d8", DamageBonus: 1, AvgDamage: 5, DamageType: "piercing"}}},
"poisonous_snake": {Slug: "poisonous_snake", Name: "Poisonous Snake", Size: "tiny", Type: "beast", CR: 0.125, XP: 25, HP: 2, AC: 13, SpeedWalk: 30, STR: 2, DEX: 16, CON: 11, INT: 1, WIS: 10, CHA: 3},
"pony": {Slug: "pony", Name: "Pony", Size: "medium", Type: "beast", CR: 0.125, XP: 25, HP: 11, AC: 10, SpeedWalk: 40, STR: 15, DEX: 10, CON: 13, INT: 2, WIS: 11, CHA: 7, Attacks: []SRDStatAttack{{Name: "Hooves", AttackBonus: 4, DamageDice: "2d4", DamageBonus: 2, AvgDamage: 7, DamageType: "bludgeoning"}}},
"stirge": {Slug: "stirge", Name: "Stirge", Size: "tiny", Type: "beast", CR: 0.125, XP: 25, HP: 2, AC: 14, SpeedWalk: 10, STR: 4, DEX: 16, CON: 11, INT: 2, WIS: 8, CHA: 6, Attacks: []SRDStatAttack{{Name: "Blood Drain", AttackBonus: 5, DamageDice: "1d4", DamageBonus: 3, AvgDamage: 5, DamageType: "piercing"}}},
"tribal_warrior": {Slug: "tribal_warrior", Name: "Tribal Warrior", Size: "medium", Type: "humanoid", CR: 0.125, XP: 25, HP: 11, AC: 12, SpeedWalk: 30, STR: 13, DEX: 11, CON: 12, INT: 8, WIS: 11, CHA: 8, Attacks: []SRDStatAttack{{Name: "Spear", AttackBonus: 3, DamageDice: "1d6", DamageBonus: 1, AvgDamage: 4, DamageType: "piercing"}}, Traits: []string{"Pack Tactics"}},
"acolyte": {Slug: "acolyte", Name: "Acolyte", Size: "medium", Type: "humanoid", CR: 0.25, XP: 50, HP: 9, AC: 10, SpeedWalk: 30, STR: 10, DEX: 10, CON: 10, INT: 10, WIS: 14, CHA: 11, Attacks: []SRDStatAttack{{Name: "Club", AttackBonus: 2, DamageDice: "1d4", DamageBonus: 0, AvgDamage: 2, DamageType: "bludgeoning"}}, Traits: []string{"Spellcasting"}},
"axe_beak": {Slug: "axe_beak", Name: "Axe Beak", Size: "large", Type: "beast", CR: 0.25, XP: 50, HP: 19, AC: 11, SpeedWalk: 50, STR: 14, DEX: 12, CON: 12, INT: 2, WIS: 10, CHA: 5, Attacks: []SRDStatAttack{{Name: "Beak", AttackBonus: 4, DamageDice: "1d8", DamageBonus: 2, AvgDamage: 6, DamageType: "slashing"}}},
"blink_dog": {Slug: "blink_dog", Name: "Blink Dog", Size: "medium", Type: "fey", CR: 0.25, XP: 50, HP: 22, AC: 13, SpeedWalk: 40, STR: 12, DEX: 17, CON: 12, INT: 10, WIS: 13, CHA: 11, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 3, DamageDice: "1d6", DamageBonus: 1, AvgDamage: 4, DamageType: "piercing"}}, Traits: []string{"Keen Hearing and Smell"}},
"boar": {Slug: "boar", Name: "Boar", Size: "medium", Type: "beast", CR: 0.25, XP: 50, HP: 11, AC: 11, SpeedWalk: 40, STR: 13, DEX: 11, CON: 12, INT: 2, WIS: 9, CHA: 5, Attacks: []SRDStatAttack{{Name: "Tusk", AttackBonus: 3, DamageDice: "1d6", DamageBonus: 1, AvgDamage: 4, DamageType: "slashing"}}, Traits: []string{"Charge", "Relentless (Recharges after a Short or Long Rest)"}},
"constrictor_snake": {Slug: "constrictor_snake", Name: "Constrictor Snake", Size: "large", Type: "beast", CR: 0.25, XP: 50, HP: 13, AC: 12, SpeedWalk: 30, STR: 15, DEX: 14, CON: 12, INT: 1, WIS: 10, CHA: 3, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 4, DamageDice: "1d6", DamageBonus: 2, AvgDamage: 5, DamageType: "piercing"}, {Name: "Constrict", AttackBonus: 4, DamageDice: "1d8", DamageBonus: 2, AvgDamage: 6, DamageType: "bludgeoning"}}},
"draft_horse": {Slug: "draft_horse", Name: "Draft Horse", Size: "large", Type: "beast", CR: 0.25, XP: 50, HP: 19, AC: 10, SpeedWalk: 40, STR: 18, DEX: 10, CON: 12, INT: 2, WIS: 11, CHA: 7, Attacks: []SRDStatAttack{{Name: "Hooves", AttackBonus: 6, DamageDice: "2d4", DamageBonus: 4, AvgDamage: 9, DamageType: "bludgeoning"}}},
"dretch": {Slug: "dretch", Name: "Dretch", Size: "small", Type: "fiend", CR: 0.25, XP: 50, HP: 18, AC: 11, SpeedWalk: 20, STR: 11, DEX: 11, CON: 12, INT: 5, WIS: 8, CHA: 3, Multiattack: "The dretch makes two attacks: one with its bite and one with its claws.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 2, DamageDice: "1d6", DamageBonus: 0, AvgDamage: 3, DamageType: "piercing"}, {Name: "Claws", AttackBonus: 2, DamageDice: "2d4", DamageBonus: 0, AvgDamage: 5, DamageType: "slashing"}}},
"drow": {Slug: "drow", Name: "Drow", Size: "medium", Type: "humanoid", CR: 0.25, XP: 50, HP: 13, AC: 15, SpeedWalk: 30, STR: 10, DEX: 14, CON: 10, INT: 11, WIS: 11, CHA: 12, Attacks: []SRDStatAttack{{Name: "Shortsword", AttackBonus: 4, DamageDice: "1d6", DamageBonus: 2, AvgDamage: 5, DamageType: "piercing"}, {Name: "Hand Crossbow", AttackBonus: 4, DamageDice: "1d6", DamageBonus: 2, AvgDamage: 5, DamageType: "piercing"}}, Traits: []string{"Fey Ancestry", "Innate Spellcasting", "Sunlight Sensitivity"}},
"elk": {Slug: "elk", Name: "Elk", Size: "large", Type: "beast", CR: 0.25, XP: 50, HP: 13, AC: 10, SpeedWalk: 50, STR: 16, DEX: 10, CON: 12, INT: 2, WIS: 10, CHA: 6, Traits: []string{"Charge"}},
"flying_sword": {Slug: "flying_sword", Name: "Flying Sword", Size: "small", Type: "construct", CR: 0.25, XP: 50, HP: 17, AC: 17, SpeedWalk: 50, STR: 12, DEX: 15, CON: 11, INT: 1, WIS: 5, CHA: 1, Attacks: []SRDStatAttack{{Name: "Longsword", AttackBonus: 3, DamageDice: "1d8", DamageBonus: 1, AvgDamage: 5, DamageType: "slashing"}}, Traits: []string{"Antimagic Susceptibility", "False Appearance"}},
"giant_badger": {Slug: "giant_badger", Name: "Giant Badger", Size: "medium", Type: "beast", CR: 0.25, XP: 50, HP: 13, AC: 10, SpeedWalk: 30, STR: 13, DEX: 10, CON: 15, INT: 2, WIS: 12, CHA: 5, Multiattack: "The badger makes two attacks: one with its bite and one with its claws.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 3, DamageDice: "1d6", DamageBonus: 1, AvgDamage: 4, DamageType: "piercing"}, {Name: "Claws", AttackBonus: 3, DamageDice: "2d4", DamageBonus: 1, AvgDamage: 6, DamageType: "slashing"}}, Traits: []string{"Keen Smell"}},
"giant_bat": {Slug: "giant_bat", Name: "Giant Bat", Size: "large", Type: "beast", CR: 0.25, XP: 50, HP: 22, AC: 13, SpeedWalk: 10, STR: 15, DEX: 16, CON: 11, INT: 2, WIS: 12, CHA: 6, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 4, DamageDice: "1d6", DamageBonus: 2, AvgDamage: 5, DamageType: "piercing"}}, Traits: []string{"Echolocation", "Keen Hearing"}},
"giant_centipede": {Slug: "giant_centipede", Name: "Giant Centipede", Size: "small", Type: "beast", CR: 0.25, XP: 50, HP: 4, AC: 13, SpeedWalk: 30, STR: 5, DEX: 14, CON: 12, INT: 1, WIS: 7, CHA: 3, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 4, DamageDice: "1d4", DamageBonus: 2, AvgDamage: 4, DamageType: "piercing"}}},
"giant_frog": {Slug: "giant_frog", Name: "Giant Frog", Size: "medium", Type: "beast", CR: 0.25, XP: 50, HP: 18, AC: 11, SpeedWalk: 30, STR: 12, DEX: 13, CON: 11, INT: 2, WIS: 10, CHA: 3, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 3, DamageDice: "1d6", DamageBonus: 1, AvgDamage: 4, DamageType: "piercing"}}, Traits: []string{"Amphibious", "Standing Leap"}},
"giant_lizard": {Slug: "giant_lizard", Name: "Giant Lizard", Size: "large", Type: "beast", CR: 0.25, XP: 50, HP: 19, AC: 12, SpeedWalk: 30, STR: 15, DEX: 12, CON: 13, INT: 2, WIS: 10, CHA: 5, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 4, DamageDice: "1d8", DamageBonus: 2, AvgDamage: 6, DamageType: "piercing"}}, Traits: []string{"Variant: Hold Breath", "Variant: Spider Climb"}},
"giant_owl": {Slug: "giant_owl", Name: "Giant Owl", Size: "large", Type: "beast", CR: 0.25, XP: 50, HP: 19, AC: 12, SpeedWalk: 5, STR: 13, DEX: 15, CON: 12, INT: 8, WIS: 13, CHA: 10, Attacks: []SRDStatAttack{{Name: "Talons", AttackBonus: 3, DamageDice: "2d6", DamageBonus: 1, AvgDamage: 8, DamageType: "slashing"}}, Traits: []string{"Flyby", "Keen Hearing and Sight"}},
"giant_poisonous_snake": {Slug: "giant_poisonous_snake", Name: "Giant Poisonous Snake", Size: "medium", Type: "beast", CR: 0.25, XP: 50, HP: 11, AC: 14, SpeedWalk: 30, STR: 10, DEX: 18, CON: 13, INT: 2, WIS: 10, CHA: 3, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 6, DamageDice: "1d4", DamageBonus: 4, AvgDamage: 6, DamageType: "piercing"}}},
"giant_wolf_spider": {Slug: "giant_wolf_spider", Name: "Giant Wolf Spider", Size: "medium", Type: "beast", CR: 0.25, XP: 50, HP: 11, AC: 13, SpeedWalk: 40, STR: 12, DEX: 16, CON: 13, INT: 3, WIS: 12, CHA: 4, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 3, DamageDice: "1d6", DamageBonus: 1, AvgDamage: 4, DamageType: "piercing"}}, Traits: []string{"Spider Climb", "Web Sense", "Web Walker"}},
"goblin": {Slug: "goblin", Name: "Goblin", Size: "small", Type: "humanoid", CR: 0.25, XP: 50, HP: 7, AC: 15, SpeedWalk: 30, STR: 8, DEX: 14, CON: 10, INT: 10, WIS: 8, CHA: 8, Attacks: []SRDStatAttack{{Name: "Scimitar", AttackBonus: 4, DamageDice: "1d6", DamageBonus: 2, AvgDamage: 5, DamageType: "slashing"}, {Name: "Shortbow", AttackBonus: 4, DamageDice: "1d6", DamageBonus: 2, AvgDamage: 5, DamageType: "piercing"}}, Traits: []string{"Nimble Escape"}},
"grimlock": {Slug: "grimlock", Name: "Grimlock", Size: "medium", Type: "humanoid", CR: 0.25, XP: 50, HP: 11, AC: 11, SpeedWalk: 30, STR: 16, DEX: 12, CON: 12, INT: 9, WIS: 8, CHA: 6, Attacks: []SRDStatAttack{{Name: "Spiked Bone Club", AttackBonus: 5, DamageDice: "1d4+1d4", DamageBonus: 5, AvgDamage: 5, DamageType: "bludgeoning"}}, Traits: []string{"Blind Senses", "Keen Hearing and Smell", "Stone Camouflage"}},
"panther": {Slug: "panther", Name: "Panther", Size: "medium", Type: "beast", CR: 0.25, XP: 50, HP: 13, AC: 12, SpeedWalk: 50, STR: 14, DEX: 15, CON: 10, INT: 3, WIS: 14, CHA: 7, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 4, DamageDice: "1d6", DamageBonus: 2, AvgDamage: 5, DamageType: "piercing"}, {Name: "Claw", AttackBonus: 4, DamageDice: "1d4", DamageBonus: 2, AvgDamage: 4, DamageType: "slashing"}}, Traits: []string{"Keen Smell", "Pounce"}},
"pseudodragon": {Slug: "pseudodragon", Name: "Pseudodragon", Size: "tiny", Type: "dragon", CR: 0.25, XP: 50, HP: 7, AC: 13, SpeedWalk: 15, STR: 6, DEX: 15, CON: 13, INT: 10, WIS: 12, CHA: 10, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 4, DamageDice: "1d4", DamageBonus: 2, AvgDamage: 4, DamageType: "piercing"}, {Name: "Sting", AttackBonus: 4, DamageDice: "1d4", DamageBonus: 2, AvgDamage: 4, DamageType: "piercing"}}, Traits: []string{"Keen Senses", "Magic Resistance", "Limited Telepathy", "Variant: Familiar"}},
"riding_horse": {Slug: "riding_horse", Name: "Riding Horse", Size: "large", Type: "beast", CR: 0.25, XP: 50, HP: 13, AC: 10, SpeedWalk: 60, STR: 16, DEX: 10, CON: 12, INT: 2, WIS: 11, CHA: 7, Attacks: []SRDStatAttack{{Name: "Hooves", AttackBonus: 5, DamageDice: "2d4", DamageBonus: 3, AvgDamage: 8, DamageType: "bludgeoning"}}},
"skeleton": {Slug: "skeleton", Name: "Skeleton", Size: "medium", Type: "undead", CR: 0.25, XP: 50, HP: 13, AC: 13, SpeedWalk: 30, STR: 10, DEX: 14, CON: 15, INT: 6, WIS: 8, CHA: 5, Attacks: []SRDStatAttack{{Name: "Shortsword", AttackBonus: 4, DamageDice: "1d6", DamageBonus: 2, AvgDamage: 5, DamageType: "piercing"}, {Name: "Shortbow", AttackBonus: 4, DamageDice: "1d6", DamageBonus: 2, AvgDamage: 5, DamageType: "piercing"}}},
"sprite": {Slug: "sprite", Name: "Sprite", Size: "tiny", Type: "fey", CR: 0.25, XP: 50, HP: 2, AC: 15, SpeedWalk: 10, STR: 3, DEX: 18, CON: 10, INT: 14, WIS: 13, CHA: 11},
"steam_mephit": {Slug: "steam_mephit", Name: "Steam Mephit", Size: "small", Type: "elemental", CR: 0.25, XP: 50, HP: 21, AC: 10, SpeedWalk: 30, STR: 5, DEX: 11, CON: 10, INT: 11, WIS: 10, CHA: 12, Attacks: []SRDStatAttack{{Name: "Claws", AttackBonus: 2, DamageDice: "2d4", DamageBonus: 0, AvgDamage: 5, DamageType: "slashing"}}, Traits: []string{"Death Burst", "Innate Spellcasting (1/Day)"}},
"swarm_of_bats": {Slug: "swarm_of_bats", Name: "Swarm of Bats", Size: "medium", Type: "beast", CR: 0.25, XP: 50, HP: 22, AC: 12, SpeedWalk: 30, STR: 5, DEX: 15, CON: 10, INT: 2, WIS: 12, CHA: 4, Attacks: []SRDStatAttack{{Name: "Bites", AttackBonus: 4, DamageDice: "2d4", DamageBonus: 0, AvgDamage: 5, DamageType: "piercing"}}, Traits: []string{"Echolocation", "Keen Hearing", "Swarm"}},
"swarm_of_rats": {Slug: "swarm_of_rats", Name: "Swarm of Rats", Size: "medium", Type: "beast", CR: 0.25, XP: 50, HP: 24, AC: 10, SpeedWalk: 30, STR: 9, DEX: 11, CON: 9, INT: 2, WIS: 10, CHA: 3, Attacks: []SRDStatAttack{{Name: "Bites", AttackBonus: 2, DamageDice: "2d6", DamageBonus: 0, AvgDamage: 7, DamageType: "piercing"}}, Traits: []string{"Keen Smell", "Swarm"}},
"swarm_of_ravens": {Slug: "swarm_of_ravens", Name: "Swarm of Ravens", Size: "medium", Type: "beast", CR: 0.25, XP: 50, HP: 24, AC: 12, SpeedWalk: 10, STR: 6, DEX: 14, CON: 8, INT: 3, WIS: 12, CHA: 6, Attacks: []SRDStatAttack{{Name: "Beaks", AttackBonus: 4, DamageDice: "2d6", DamageBonus: 0, AvgDamage: 7, DamageType: "piercing"}}, Traits: []string{"Swarm"}},
"violet_fungus": {Slug: "violet_fungus", Name: "Violet Fungus", Size: "medium", Type: "plant", CR: 0.25, XP: 50, HP: 18, AC: 5, SpeedWalk: 5, STR: 3, DEX: 1, CON: 10, INT: 1, WIS: 3, CHA: 1, Multiattack: "The fungus makes 1d4 Rotting Touch attacks.", Attacks: []SRDStatAttack{{Name: "Rotting Touch", AttackBonus: 2, DamageDice: "1d8", DamageBonus: 0, AvgDamage: 4, DamageType: "necrotic"}}, Traits: []string{"False Appearance"}},
"wolf": {Slug: "wolf", Name: "Wolf", Size: "medium", Type: "beast", CR: 0.25, XP: 50, HP: 11, AC: 13, SpeedWalk: 40, STR: 12, DEX: 15, CON: 12, INT: 3, WIS: 12, CHA: 6, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 4, DamageDice: "2d4", DamageBonus: 2, AvgDamage: 7, DamageType: "piercing"}}, Traits: []string{"Keen Hearing and Smell", "Pack Tactics"}},
"zombie": {Slug: "zombie", Name: "Zombie", Size: "medium", Type: "undead", CR: 0.25, XP: 50, HP: 22, AC: 8, SpeedWalk: 20, STR: 13, DEX: 6, CON: 16, INT: 3, WIS: 6, CHA: 5, Attacks: []SRDStatAttack{{Name: "Slam", AttackBonus: 3, DamageDice: "1d6", DamageBonus: 1, AvgDamage: 4, DamageType: "bludgeoning"}}, Traits: []string{"Undead Fortitude"}},
"ape": {Slug: "ape", Name: "Ape", Size: "medium", Type: "beast", CR: 0.5, XP: 100, HP: 19, AC: 12, SpeedWalk: 30, STR: 16, DEX: 14, CON: 14, INT: 6, WIS: 12, CHA: 7, Multiattack: "The ape makes two fist attacks.", Attacks: []SRDStatAttack{{Name: "Fist", AttackBonus: 5, DamageDice: "1d6", DamageBonus: 3, AvgDamage: 6, DamageType: "bludgeoning"}, {Name: "Rock", AttackBonus: 5, DamageDice: "1d6", DamageBonus: 3, AvgDamage: 6, DamageType: "bludgeoning"}}},
"black_bear": {Slug: "black_bear", Name: "Black Bear", Size: "medium", Type: "beast", CR: 0.5, XP: 100, HP: 19, AC: 11, SpeedWalk: 40, STR: 15, DEX: 10, CON: 14, INT: 2, WIS: 12, CHA: 7, Multiattack: "The bear makes two attacks: one with its bite and one with its claws.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 3, DamageDice: "1d6", DamageBonus: 2, AvgDamage: 5, DamageType: "piercing"}, {Name: "Claws", AttackBonus: 3, DamageDice: "2d4", DamageBonus: 2, AvgDamage: 7, DamageType: "slashing"}}, Traits: []string{"Keen Smell"}},
"cockatrice": {Slug: "cockatrice", Name: "Cockatrice", Size: "small", Type: "monstrosity", CR: 0.5, XP: 100, HP: 27, AC: 11, SpeedWalk: 20, STR: 6, DEX: 12, CON: 12, INT: 2, WIS: 13, CHA: 5, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 3, DamageDice: "1d4", DamageBonus: 1, AvgDamage: 3, DamageType: "piercing"}}},
"crocodile": {Slug: "crocodile", Name: "Crocodile", Size: "large", Type: "beast", CR: 0.5, XP: 100, HP: 19, AC: 12, SpeedWalk: 20, STR: 15, DEX: 10, CON: 13, INT: 2, WIS: 10, CHA: 5, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 4, DamageDice: "1d10", DamageBonus: 2, AvgDamage: 7, DamageType: "piercing"}}, Traits: []string{"Hold Breath"}},
"darkmantle": {Slug: "darkmantle", Name: "Darkmantle", Size: "small", Type: "monstrosity", CR: 0.5, XP: 100, HP: 22, AC: 11, SpeedWalk: 10, STR: 16, DEX: 12, CON: 13, INT: 2, WIS: 10, CHA: 5, Attacks: []SRDStatAttack{{Name: "Crush", AttackBonus: 5, DamageDice: "1d6", DamageBonus: 3, AvgDamage: 6, DamageType: "bludgeoning"}}, Traits: []string{"Echolocation", "False Appearance"}},
"deep_gnome_svirfneblin": {Slug: "deep_gnome_svirfneblin", Name: "Deep Gnome (Svirfneblin)", Size: "small", Type: "humanoid", CR: 0.5, XP: 100, HP: 16, AC: 15, SpeedWalk: 20, STR: 15, DEX: 14, CON: 14, INT: 12, WIS: 10, CHA: 9, Attacks: []SRDStatAttack{{Name: "War Pick", AttackBonus: 4, DamageDice: "1d8", DamageBonus: 2, AvgDamage: 6, DamageType: "piercing"}, {Name: "Poisoned Dart", AttackBonus: 4, DamageDice: "1d4", DamageBonus: 2, AvgDamage: 4, DamageType: "piercing"}}, Traits: []string{"Stone Camouflage", "Gnome Cunning", "Innate Spellcasting"}},
"dust_mephit": {Slug: "dust_mephit", Name: "Dust Mephit", Size: "small", Type: "elemental", CR: 0.5, XP: 100, HP: 17, AC: 12, SpeedWalk: 30, STR: 5, DEX: 14, CON: 10, INT: 9, WIS: 11, CHA: 10, Attacks: []SRDStatAttack{{Name: "Claws", AttackBonus: 4, DamageDice: "1d4", DamageBonus: 2, AvgDamage: 4, DamageType: "slashing"}}, Traits: []string{"Death Burst", "Innate Spellcasting (1/Day)"}},
"giant_goat": {Slug: "giant_goat", Name: "Giant Goat", Size: "large", Type: "beast", CR: 0.5, XP: 100, HP: 19, AC: 11, SpeedWalk: 40, STR: 17, DEX: 11, CON: 12, INT: 3, WIS: 12, CHA: 6, Attacks: []SRDStatAttack{{Name: "Ram", AttackBonus: 5, DamageDice: "2d4", DamageBonus: 3, AvgDamage: 8, DamageType: "bludgeoning"}}, Traits: []string{"Charge", "Sure-Footed"}},
"giant_sea_horse": {Slug: "giant_sea_horse", Name: "Giant Sea Horse", Size: "large", Type: "beast", CR: 0.5, XP: 100, HP: 16, AC: 13, SpeedWalk: 40, STR: 12, DEX: 15, CON: 11, INT: 2, WIS: 12, CHA: 5, Attacks: []SRDStatAttack{{Name: "Ram", AttackBonus: 3, DamageDice: "1d6", DamageBonus: 1, AvgDamage: 4, DamageType: "bludgeoning"}}, Traits: []string{"Charge", "Water Breathing"}},
"giant_wasp": {Slug: "giant_wasp", Name: "Giant Wasp", Size: "medium", Type: "beast", CR: 0.5, XP: 100, HP: 13, AC: 12, SpeedWalk: 10, STR: 10, DEX: 14, CON: 10, INT: 1, WIS: 10, CHA: 3, Attacks: []SRDStatAttack{{Name: "Sting", AttackBonus: 4, DamageDice: "1d6", DamageBonus: 2, AvgDamage: 5, DamageType: "piercing"}}},
"gnoll": {Slug: "gnoll", Name: "Gnoll", Size: "medium", Type: "humanoid", CR: 0.5, XP: 100, HP: 22, AC: 15, SpeedWalk: 30, STR: 14, DEX: 12, CON: 11, INT: 6, WIS: 10, CHA: 7, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 4, DamageDice: "1d4", DamageBonus: 2, AvgDamage: 4, DamageType: "piercing"}, {Name: "Spear", AttackBonus: 4, DamageDice: "1d6", DamageBonus: 2, AvgDamage: 5, DamageType: "piercing"}, {Name: "Longbow", AttackBonus: 3, DamageDice: "1d8", DamageBonus: 1, AvgDamage: 5, DamageType: "piercing"}}, Traits: []string{"Rampage"}},
"gray_ooze": {Slug: "gray_ooze", Name: "Gray Ooze", Size: "medium", Type: "ooze", CR: 0.5, XP: 100, HP: 22, AC: 8, SpeedWalk: 10, STR: 12, DEX: 6, CON: 16, INT: 1, WIS: 6, CHA: 2, Attacks: []SRDStatAttack{{Name: "Pseudopod", AttackBonus: 3, DamageDice: "1d6", DamageBonus: 1, AvgDamage: 4, DamageType: "bludgeoning"}}, Traits: []string{"Amorphous", "Corrode Metal", "False Appearance"}},
"hobgoblin": {Slug: "hobgoblin", Name: "Hobgoblin", Size: "medium", Type: "humanoid", CR: 0.5, XP: 100, HP: 11, AC: 18, SpeedWalk: 30, STR: 13, DEX: 12, CON: 12, INT: 10, WIS: 10, CHA: 9, Attacks: []SRDStatAttack{{Name: "Longsword", AttackBonus: 3, DamageDice: "1d8", DamageBonus: 1, AvgDamage: 5, DamageType: "slashing"}, {Name: "Longbow", AttackBonus: 3, DamageDice: "1d8", DamageBonus: 1, AvgDamage: 5, DamageType: "piercing"}}, Traits: []string{"Martial Advantage"}},
"ice_mephit": {Slug: "ice_mephit", Name: "Ice Mephit", Size: "small", Type: "elemental", CR: 0.5, XP: 100, HP: 21, AC: 11, SpeedWalk: 30, STR: 7, DEX: 13, CON: 10, INT: 9, WIS: 11, CHA: 12, Attacks: []SRDStatAttack{{Name: "Claws", AttackBonus: 3, DamageDice: "1d4", DamageBonus: 1, AvgDamage: 3, DamageType: "slashing"}}, Traits: []string{"Death Burst", "False Appearance", "Innate Spellcasting (1/Day)"}},
"lizardfolk": {Slug: "lizardfolk", Name: "Lizardfolk", Size: "medium", Type: "humanoid", CR: 0.5, XP: 100, HP: 22, AC: 15, SpeedWalk: 30, STR: 15, DEX: 10, CON: 13, INT: 7, WIS: 12, CHA: 7, Multiattack: "The lizardfolk makes two melee attacks, each one with a different weapon.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 4, DamageDice: "1d6", DamageBonus: 2, AvgDamage: 5, DamageType: "piercing"}, {Name: "Heavy Club", AttackBonus: 4, DamageDice: "1d6", DamageBonus: 2, AvgDamage: 5, DamageType: "bludgeoning"}, {Name: "Javelin", AttackBonus: 4, DamageDice: "1d6", DamageBonus: 2, AvgDamage: 5, DamageType: "piercing"}, {Name: "Spiked Shield", AttackBonus: 4, DamageDice: "1d6", DamageBonus: 2, AvgDamage: 5, DamageType: "piercing"}}, Traits: []string{"Hold Breath"}},
"magma_mephit": {Slug: "magma_mephit", Name: "Magma Mephit", Size: "small", Type: "elemental", CR: 0.5, XP: 100, HP: 22, AC: 11, SpeedWalk: 30, STR: 8, DEX: 12, CON: 12, INT: 7, WIS: 10, CHA: 10, Attacks: []SRDStatAttack{{Name: "Claws", AttackBonus: 3, DamageDice: "1d4", DamageBonus: 1, AvgDamage: 3, DamageType: "slashing"}}, Traits: []string{"Death Burst", "False Appearance", "Innate Spellcasting (1/Day)"}},
"magmin": {Slug: "magmin", Name: "Magmin", Size: "small", Type: "elemental", CR: 0.5, XP: 100, HP: 9, AC: 14, SpeedWalk: 30, STR: 7, DEX: 15, CON: 12, INT: 8, WIS: 11, CHA: 10, Attacks: []SRDStatAttack{{Name: "Touch", AttackBonus: 4, DamageDice: "2d6", DamageBonus: 0, AvgDamage: 7, DamageType: "fire"}}, Traits: []string{"Death Burst", "Ignited Illumination"}},
"orc": {Slug: "orc", Name: "Orc", Size: "medium", Type: "humanoid", CR: 0.5, XP: 100, HP: 15, AC: 13, SpeedWalk: 30, STR: 16, DEX: 12, CON: 16, INT: 7, WIS: 11, CHA: 10, Attacks: []SRDStatAttack{{Name: "Greataxe", AttackBonus: 5, DamageDice: "1d12", DamageBonus: 3, AvgDamage: 9, DamageType: "slashing"}, {Name: "Javelin", AttackBonus: 5, DamageDice: "1d6", DamageBonus: 3, AvgDamage: 6, DamageType: "piercing"}}, Traits: []string{"Aggressive"}},
"reef_shark": {Slug: "reef_shark", Name: "Reef Shark", Size: "medium", Type: "beast", CR: 0.5, XP: 100, HP: 22, AC: 12, SpeedWalk: 40, STR: 14, DEX: 13, CON: 13, INT: 1, WIS: 10, CHA: 4, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 4, DamageDice: "1d8", DamageBonus: 2, AvgDamage: 6, DamageType: "piercing"}}, Traits: []string{"Pack Tactics", "Water Breathing"}},
"rust_monster": {Slug: "rust_monster", Name: "Rust Monster", Size: "medium", Type: "monstrosity", CR: 0.5, XP: 100, HP: 27, AC: 14, SpeedWalk: 40, STR: 13, DEX: 12, CON: 13, INT: 2, WIS: 13, CHA: 6, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 3, DamageDice: "1d8", DamageBonus: 1, AvgDamage: 5, DamageType: "piercing"}}, Traits: []string{"Iron Scent", "Rust Metal"}},
"sahuagin": {Slug: "sahuagin", Name: "Sahuagin", Size: "medium", Type: "humanoid", CR: 0.5, XP: 100, HP: 22, AC: 12, SpeedWalk: 30, STR: 13, DEX: 11, CON: 12, INT: 12, WIS: 13, CHA: 9, Multiattack: "The sahuagin makes two melee attacks: one with its bite and one with its claws or spear.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 3, DamageDice: "1d4", DamageBonus: 1, AvgDamage: 3, DamageType: "piercing"}, {Name: "Claws", AttackBonus: 3, DamageDice: "1d4", DamageBonus: 1, AvgDamage: 3, DamageType: "slashing"}, {Name: "Spear", AttackBonus: 3, DamageDice: "1d6", DamageBonus: 1, AvgDamage: 4, DamageType: "piercing"}}, Traits: []string{"Blood Frenzy", "Limited Amphibiousness", "Shark Telepathy"}},
"satyr": {Slug: "satyr", Name: "Satyr", Size: "medium", Type: "fey", CR: 0.5, XP: 100, HP: 31, AC: 14, SpeedWalk: 40, STR: 12, DEX: 16, CON: 11, INT: 12, WIS: 10, CHA: 14, Attacks: []SRDStatAttack{{Name: "Ram", AttackBonus: 3, DamageDice: "2d4", DamageBonus: 1, AvgDamage: 6, DamageType: "bludgeoning"}, {Name: "Shortsword", AttackBonus: 5, DamageDice: "1d6", DamageBonus: 3, AvgDamage: 6, DamageType: "piercing"}, {Name: "Shortbow", AttackBonus: 5, DamageDice: "1d6", DamageBonus: 3, AvgDamage: 6, DamageType: "piercing"}}, Traits: []string{"Magic Resistance"}},
"scout": {Slug: "scout", Name: "Scout", Size: "medium", Type: "humanoid", CR: 0.5, XP: 100, HP: 16, AC: 13, SpeedWalk: 30, STR: 11, DEX: 14, CON: 12, INT: 11, WIS: 13, CHA: 11, Multiattack: "The scout makes two melee attacks or two ranged attacks.", Attacks: []SRDStatAttack{{Name: "Shortsword", AttackBonus: 4, DamageDice: "1d6", DamageBonus: 2, AvgDamage: 5, DamageType: "piercing"}, {Name: "Longbow", AttackBonus: 4, DamageDice: "1d8", DamageBonus: 2, AvgDamage: 6, DamageType: "piercing"}}, Traits: []string{"Keen Hearing and Sight"}},
"shadow": {Slug: "shadow", Name: "Shadow", Size: "medium", Type: "undead", CR: 0.5, XP: 100, HP: 16, AC: 12, SpeedWalk: 40, STR: 6, DEX: 14, CON: 13, INT: 6, WIS: 10, CHA: 8, Attacks: []SRDStatAttack{{Name: "Strength Drain", AttackBonus: 4, DamageDice: "2d6", DamageBonus: 2, AvgDamage: 9, DamageType: "necrotic"}}, Traits: []string{"Amorphous", "Shadow Stealth", "Sunlight Weakness"}},
"swarm_of_beetles": {Slug: "swarm_of_beetles", Name: "Swarm of Beetles", Size: "medium", Type: "beast", CR: 0.5, XP: 100, HP: 22, AC: 12, SpeedWalk: 20, STR: 3, DEX: 13, CON: 10, INT: 1, WIS: 7, CHA: 1, Attacks: []SRDStatAttack{{Name: "Bites", AttackBonus: 3, DamageDice: "4d4", DamageBonus: 0, AvgDamage: 10, DamageType: "piercing"}}, Traits: []string{"Swarm"}},
"swarm_of_centipedes": {Slug: "swarm_of_centipedes", Name: "Swarm of Centipedes", Size: "medium", Type: "beast", CR: 0.5, XP: 100, HP: 22, AC: 12, SpeedWalk: 20, STR: 3, DEX: 13, CON: 10, INT: 1, WIS: 7, CHA: 1, Attacks: []SRDStatAttack{{Name: "Bites", AttackBonus: 3, DamageDice: "4d4", DamageBonus: 0, AvgDamage: 10, DamageType: "piercing"}}, Traits: []string{"Swarm"}},
"swarm_of_insects": {Slug: "swarm_of_insects", Name: "Swarm of Insects", Size: "medium", Type: "beast", CR: 0.5, XP: 100, HP: 22, AC: 12, SpeedWalk: 20, STR: 3, DEX: 13, CON: 10, INT: 1, WIS: 7, CHA: 1, Attacks: []SRDStatAttack{{Name: "Bites", AttackBonus: 3, DamageDice: "4d4", DamageBonus: 0, AvgDamage: 10, DamageType: "piercing"}}, Traits: []string{"Swarm"}},
"swarm_of_spiders": {Slug: "swarm_of_spiders", Name: "Swarm of Spiders", Size: "medium", Type: "beast", CR: 0.5, XP: 100, HP: 22, AC: 12, SpeedWalk: 20, STR: 3, DEX: 13, CON: 10, INT: 1, WIS: 7, CHA: 1, Attacks: []SRDStatAttack{{Name: "Bites", AttackBonus: 3, DamageDice: "4d4", DamageBonus: 0, AvgDamage: 10, DamageType: "piercing"}}, Traits: []string{"Swarm", "Spider Climb", "Web Sense", "Web Walker"}},
"swarm_of_wasps": {Slug: "swarm_of_wasps", Name: "Swarm of Wasps", Size: "medium", Type: "beast", CR: 0.5, XP: 100, HP: 22, AC: 12, SpeedWalk: 5, STR: 3, DEX: 13, CON: 10, INT: 1, WIS: 7, CHA: 1, Attacks: []SRDStatAttack{{Name: "Bites", AttackBonus: 3, DamageDice: "4d4", DamageBonus: 0, AvgDamage: 10, DamageType: "piercing"}}, Traits: []string{"Swarm"}},
"thug": {Slug: "thug", Name: "Thug", Size: "medium", Type: "humanoid", CR: 0.5, XP: 100, HP: 32, AC: 11, SpeedWalk: 30, STR: 15, DEX: 11, CON: 14, INT: 10, WIS: 10, CHA: 11, Multiattack: "The thug makes two melee attacks.", Attacks: []SRDStatAttack{{Name: "Mace", AttackBonus: 4, DamageDice: "1d6", DamageBonus: 2, AvgDamage: 5, DamageType: "bludgeoning"}, {Name: "Heavy Crossbow", AttackBonus: 2, DamageDice: "1d10", DamageBonus: 0, AvgDamage: 5, DamageType: "piercing"}}, Traits: []string{"Pack Tactics"}},
"warhorse": {Slug: "warhorse", Name: "Warhorse", Size: "large", Type: "beast", CR: 0.5, XP: 100, HP: 19, AC: 11, SpeedWalk: 60, STR: 18, DEX: 12, CON: 13, INT: 2, WIS: 12, CHA: 7, Attacks: []SRDStatAttack{{Name: "Hooves", AttackBonus: 6, DamageDice: "2d6", DamageBonus: 4, AvgDamage: 11, DamageType: "bludgeoning"}}, Traits: []string{"Trampling Charge"}},
"warhorse_skeleton": {Slug: "warhorse_skeleton", Name: "Warhorse Skeleton", Size: "large", Type: "undead", CR: 0.5, XP: 100, HP: 22, AC: 13, SpeedWalk: 60, STR: 18, DEX: 12, CON: 15, INT: 2, WIS: 8, CHA: 5, Attacks: []SRDStatAttack{{Name: "Hooves", AttackBonus: 6, DamageDice: "2d6", DamageBonus: 4, AvgDamage: 11, DamageType: "bludgeoning"}}},
"worg": {Slug: "worg", Name: "Worg", Size: "large", Type: "monstrosity", CR: 0.5, XP: 100, HP: 26, AC: 13, SpeedWalk: 50, STR: 16, DEX: 13, CON: 13, INT: 7, WIS: 11, CHA: 8, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 5, DamageDice: "2d6", DamageBonus: 3, AvgDamage: 10, DamageType: "piercing"}}, Traits: []string{"Keen Hearing and Smell"}},
"animated_armor": {Slug: "animated_armor", Name: "Animated Armor", Size: "medium", Type: "construct", CR: 1, XP: 200, HP: 33, AC: 18, SpeedWalk: 25, STR: 14, DEX: 11, CON: 13, INT: 1, WIS: 3, CHA: 1, Multiattack: "The armor makes two melee attacks.", Attacks: []SRDStatAttack{{Name: "Slam", AttackBonus: 4, DamageDice: "1d6", DamageBonus: 2, AvgDamage: 5, DamageType: "bludgeoning"}}, Traits: []string{"Antimagic Susceptibility", "False Appearance"}},
"brass_dragon_wyrmling": {Slug: "brass_dragon_wyrmling", Name: "Brass Dragon Wyrmling", Size: "medium", Type: "dragon", CR: 1, XP: 200, HP: 16, AC: 16, SpeedWalk: 30, STR: 15, DEX: 10, CON: 13, INT: 10, WIS: 11, CHA: 13, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 4, DamageDice: "1d10", DamageBonus: 2, AvgDamage: 7, DamageType: "piercing"}, {Name: "Breath Weapons (Recharge 5-6)", AttackBonus: 0, DamageDice: "4d6", DamageBonus: 0, AvgDamage: 14, DamageType: "fire"}}},
"brown_bear": {Slug: "brown_bear", Name: "Brown Bear", Size: "large", Type: "beast", CR: 1, XP: 200, HP: 34, AC: 11, SpeedWalk: 40, STR: 19, DEX: 10, CON: 16, INT: 2, WIS: 13, CHA: 7, Multiattack: "The bear makes two attacks: one with its bite and one with its claws.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 5, DamageDice: "1d8", DamageBonus: 4, AvgDamage: 8, DamageType: "piercing"}, {Name: "Claws", AttackBonus: 5, DamageDice: "2d6", DamageBonus: 4, AvgDamage: 11, DamageType: "slashing"}}, Traits: []string{"Keen Smell"}},
"bugbear": {Slug: "bugbear", Name: "Bugbear", Size: "medium", Type: "humanoid", CR: 1, XP: 200, HP: 27, AC: 16, SpeedWalk: 30, STR: 15, DEX: 14, CON: 13, INT: 8, WIS: 11, CHA: 9, Attacks: []SRDStatAttack{{Name: "Morningstar", AttackBonus: 4, DamageDice: "2d8", DamageBonus: 2, AvgDamage: 11, DamageType: "piercing"}, {Name: "Javelin", AttackBonus: 4, DamageDice: "2d6", DamageBonus: 2, AvgDamage: 9, DamageType: "piercing"}}, Traits: []string{"Brute", "Surprise Attack"}},
"copper_dragon_wyrmling": {Slug: "copper_dragon_wyrmling", Name: "Copper Dragon Wyrmling", Size: "medium", Type: "dragon", CR: 1, XP: 200, HP: 22, AC: 16, SpeedWalk: 30, STR: 15, DEX: 12, CON: 13, INT: 14, WIS: 11, CHA: 13, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 4, DamageDice: "1d10", DamageBonus: 2, AvgDamage: 7, DamageType: "piercing"}, {Name: "Breath Weapons (Recharge 5-6)", AttackBonus: 0, DamageDice: "4d8", DamageBonus: 0, AvgDamage: 18, DamageType: "acid"}}},
"death_dog": {Slug: "death_dog", Name: "Death Dog", Size: "medium", Type: "monstrosity", CR: 1, XP: 200, HP: 39, AC: 12, SpeedWalk: 40, STR: 15, DEX: 14, CON: 14, INT: 3, WIS: 13, CHA: 6, Multiattack: "The dog makes two bite attacks.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 4, DamageDice: "1d6", DamageBonus: 2, AvgDamage: 5, DamageType: "piercing"}}, Traits: []string{"Two-Headed"}},
"dire_wolf": {Slug: "dire_wolf", Name: "Dire Wolf", Size: "large", Type: "beast", CR: 1, XP: 200, HP: 37, AC: 14, SpeedWalk: 50, STR: 17, DEX: 15, CON: 15, INT: 3, WIS: 12, CHA: 7, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 5, DamageDice: "2d6", DamageBonus: 3, AvgDamage: 10, DamageType: "piercing"}}, Traits: []string{"Keen Hearing and Smell", "Pack Tactics"}},
"dryad": {Slug: "dryad", Name: "Dryad", Size: "medium", Type: "fey", CR: 1, XP: 200, HP: 22, AC: 11, SpeedWalk: 30, STR: 10, DEX: 12, CON: 11, INT: 14, WIS: 15, CHA: 18, Attacks: []SRDStatAttack{{Name: "Club", AttackBonus: 2, DamageDice: "1d4", DamageBonus: 0, AvgDamage: 2, DamageType: "bludgeoning"}}, Traits: []string{"Innate Spellcasting", "Magic Resistance", "Speak with Beasts and Plants", "Tree Stride"}},
"duergar": {Slug: "duergar", Name: "Duergar", Size: "medium", Type: "humanoid", CR: 1, XP: 200, HP: 26, AC: 16, SpeedWalk: 25, STR: 14, DEX: 11, CON: 14, INT: 11, WIS: 10, CHA: 9, Attacks: []SRDStatAttack{{Name: "War Pick", AttackBonus: 4, DamageDice: "1d8", DamageBonus: 2, AvgDamage: 6, DamageType: "piercing"}, {Name: "Javelin", AttackBonus: 4, DamageDice: "1d6", DamageBonus: 2, AvgDamage: 5, DamageType: "piercing"}}, Traits: []string{"Duergar Resilience", "Sunlight Sensitivity"}},
"ghoul": {Slug: "ghoul", Name: "Ghoul", Size: "medium", Type: "undead", CR: 1, XP: 200, HP: 22, AC: 12, SpeedWalk: 30, STR: 13, DEX: 15, CON: 10, INT: 7, WIS: 10, CHA: 6, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 2, DamageDice: "2d6", DamageBonus: 2, AvgDamage: 9, DamageType: "piercing"}}},
"giant_eagle": {Slug: "giant_eagle", Name: "Giant Eagle", Size: "large", Type: "beast", CR: 1, XP: 200, HP: 26, AC: 13, SpeedWalk: 10, STR: 16, DEX: 17, CON: 13, INT: 8, WIS: 14, CHA: 10, Multiattack: "The eagle makes two attacks: one with its beak and one with its talons.", Attacks: []SRDStatAttack{{Name: "Beak", AttackBonus: 5, DamageDice: "1d6", DamageBonus: 3, AvgDamage: 6, DamageType: "piercing"}, {Name: "Talons", AttackBonus: 5, DamageDice: "2d6", DamageBonus: 3, AvgDamage: 10, DamageType: "slashing"}}, Traits: []string{"Keen Sight"}},
"giant_hyena": {Slug: "giant_hyena", Name: "Giant Hyena", Size: "large", Type: "beast", CR: 1, XP: 200, HP: 45, AC: 12, SpeedWalk: 50, STR: 16, DEX: 14, CON: 14, INT: 2, WIS: 12, CHA: 7, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 5, DamageDice: "1d6", DamageBonus: 3, AvgDamage: 6, DamageType: "piercing"}}, Traits: []string{"Rampage"}},
"giant_octopus": {Slug: "giant_octopus", Name: "Giant Octopus", Size: "large", Type: "beast", CR: 1, XP: 200, HP: 52, AC: 11, SpeedWalk: 10, STR: 17, DEX: 13, CON: 13, INT: 4, WIS: 10, CHA: 4, Attacks: []SRDStatAttack{{Name: "Tentacles", AttackBonus: 5, DamageDice: "2d6", DamageBonus: 3, AvgDamage: 10, DamageType: "bludgeoning"}}, Traits: []string{"Hold Breath", "Underwater Camouflage", "Water Breathing"}},
"giant_spider": {Slug: "giant_spider", Name: "Giant Spider", Size: "large", Type: "beast", CR: 1, XP: 200, HP: 26, AC: 14, SpeedWalk: 30, STR: 14, DEX: 16, CON: 12, INT: 2, WIS: 11, CHA: 4, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 5, DamageDice: "1d8", DamageBonus: 3, AvgDamage: 7, DamageType: "piercing"}}, Traits: []string{"Spider Climb", "Web Sense", "Web Walker"}},
"giant_toad": {Slug: "giant_toad", Name: "Giant Toad", Size: "large", Type: "beast", CR: 1, XP: 200, HP: 39, AC: 11, SpeedWalk: 20, STR: 15, DEX: 13, CON: 13, INT: 2, WIS: 10, CHA: 3, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 4, DamageDice: "1d10", DamageBonus: 2, AvgDamage: 7, DamageType: "piercing"}}, Traits: []string{"Amphibious", "Standing Leap"}},
"giant_vulture": {Slug: "giant_vulture", Name: "Giant Vulture", Size: "large", Type: "beast", CR: 1, XP: 200, HP: 22, AC: 10, SpeedWalk: 10, STR: 15, DEX: 10, CON: 15, INT: 6, WIS: 12, CHA: 7, Multiattack: "The vulture makes two attacks: one with its beak and one with its talons.", Attacks: []SRDStatAttack{{Name: "Beak", AttackBonus: 4, DamageDice: "2d4", DamageBonus: 2, AvgDamage: 7, DamageType: "piercing"}, {Name: "Talons", AttackBonus: 4, DamageDice: "2d6", DamageBonus: 2, AvgDamage: 9, DamageType: "slashing"}}, Traits: []string{"Keen Sight and Smell", "Pack Tactics"}},
"harpy": {Slug: "harpy", Name: "Harpy", Size: "medium", Type: "monstrosity", CR: 1, XP: 200, HP: 38, AC: 11, SpeedWalk: 20, STR: 12, DEX: 13, CON: 12, INT: 7, WIS: 10, CHA: 13, Multiattack: "The harpy makes two attacks: one with its claws and one with its club.", Attacks: []SRDStatAttack{{Name: "Claws", AttackBonus: 3, DamageDice: "2d4", DamageBonus: 1, AvgDamage: 6, DamageType: "slashing"}, {Name: "Club", AttackBonus: 3, DamageDice: "1d4", DamageBonus: 1, AvgDamage: 3, DamageType: "bludgeoning"}}},
"hippogriff": {Slug: "hippogriff", Name: "Hippogriff", Size: "large", Type: "monstrosity", CR: 1, XP: 200, HP: 19, AC: 11, SpeedWalk: 40, STR: 17, DEX: 13, CON: 13, INT: 2, WIS: 12, CHA: 8, Multiattack: "The hippogriff makes two attacks: one with its beak and one with its claws.", Attacks: []SRDStatAttack{{Name: "Beak", AttackBonus: 5, DamageDice: "1d10", DamageBonus: 3, AvgDamage: 8, DamageType: "piercing"}, {Name: "Claws", AttackBonus: 5, DamageDice: "2d6", DamageBonus: 3, AvgDamage: 10, DamageType: "slashing"}}, Traits: []string{"Keen Sight"}},
"imp": {Slug: "imp", Name: "Imp", Size: "tiny", Type: "fiend", CR: 1, XP: 200, HP: 10, AC: 13, SpeedWalk: 20, STR: 6, DEX: 17, CON: 13, INT: 11, WIS: 12, CHA: 14, Attacks: []SRDStatAttack{{Name: "Sting (Bite in Beast Form)", AttackBonus: 5, DamageDice: "1d4", DamageBonus: 3, AvgDamage: 5, DamageType: "piercing"}}, Traits: []string{"Shapechanger", "Devil's Sight", "Magic Resistance", "Variant: Familiar"}},
"lion": {Slug: "lion", Name: "Lion", Size: "large", Type: "beast", CR: 1, XP: 200, HP: 26, AC: 12, SpeedWalk: 50, STR: 17, DEX: 15, CON: 13, INT: 3, WIS: 12, CHA: 8, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 5, DamageDice: "1d8", DamageBonus: 3, AvgDamage: 7, DamageType: "piercing"}, {Name: "Claw", AttackBonus: 5, DamageDice: "1d6", DamageBonus: 3, AvgDamage: 6, DamageType: "slashing"}}, Traits: []string{"Keen Smell", "Pack Tactics", "Pounce", "Running Leap"}},
"quasit": {Slug: "quasit", Name: "Quasit", Size: "tiny", Type: "fiend", CR: 1, XP: 200, HP: 7, AC: 13, SpeedWalk: 40, STR: 5, DEX: 17, CON: 10, INT: 7, WIS: 10, CHA: 10, Attacks: []SRDStatAttack{{Name: "Claw (Bite in Beast Form)", AttackBonus: 4, DamageDice: "1d4", DamageBonus: 3, AvgDamage: 5, DamageType: "piercing"}}, Traits: []string{"Shapechanger", "Magic Resistance", "Variant: Familiar"}},
"specter": {Slug: "specter", Name: "Specter", Size: "medium", Type: "undead", CR: 1, XP: 200, HP: 22, AC: 12, SpeedWalk: 50, STR: 1, DEX: 14, CON: 11, INT: 10, WIS: 10, CHA: 11, Attacks: []SRDStatAttack{{Name: "Life Drain", AttackBonus: 4, DamageDice: "3d6", DamageBonus: 0, AvgDamage: 10, DamageType: "necrotic"}}, Traits: []string{"Incorporeal Movement", "Sunlight Sensitivity"}},
"spy": {Slug: "spy", Name: "Spy", Size: "medium", Type: "humanoid", CR: 1, XP: 200, HP: 27, AC: 12, SpeedWalk: 30, STR: 10, DEX: 15, CON: 10, INT: 12, WIS: 14, CHA: 16, Multiattack: "The spy makes two melee attacks.", Attacks: []SRDStatAttack{{Name: "Shortsword", AttackBonus: 4, DamageDice: "1d6", DamageBonus: 2, AvgDamage: 5, DamageType: "piercing"}, {Name: "Hand Crossbow", AttackBonus: 4, DamageDice: "1d6", DamageBonus: 2, AvgDamage: 5, DamageType: "piercing"}}, Traits: []string{"Cunning Action", "Sneak Attack (1/Turn)"}},
"swarm_of_quippers": {Slug: "swarm_of_quippers", Name: "Swarm of Quippers", Size: "medium", Type: "beast", CR: 1, XP: 200, HP: 28, AC: 13, SpeedWalk: 40, STR: 13, DEX: 16, CON: 9, INT: 1, WIS: 7, CHA: 2, Attacks: []SRDStatAttack{{Name: "Bites", AttackBonus: 5, DamageDice: "4d6", DamageBonus: 0, AvgDamage: 14, DamageType: "piercing"}}, Traits: []string{"Blood Frenzy", "Swarm", "Water Breathing"}},
"tiger": {Slug: "tiger", Name: "Tiger", Size: "large", Type: "beast", CR: 1, XP: 200, HP: 37, AC: 12, SpeedWalk: 40, STR: 17, DEX: 15, CON: 14, INT: 3, WIS: 12, CHA: 8, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 5, DamageDice: "1d10", DamageBonus: 3, AvgDamage: 8, DamageType: "piercing"}}, Traits: []string{"Keen Smell", "Pounce"}},
"ankheg": {Slug: "ankheg", Name: "Ankheg", Size: "large", Type: "monstrosity", CR: 2, XP: 450, HP: 39, AC: 14, SpeedWalk: 30, STR: 17, DEX: 11, CON: 13, INT: 1, WIS: 13, CHA: 6, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 5, DamageDice: "2d6+1d6", DamageBonus: 3, AvgDamage: 3, DamageType: "slashing"}, {Name: "Acid Spray (Recharge 6)", AttackBonus: 0, DamageDice: "3d6", DamageBonus: 0, AvgDamage: 10, DamageType: "acid"}}},
"awakened_tree": {Slug: "awakened_tree", Name: "Awakened Tree", Size: "huge", Type: "plant", CR: 2, XP: 450, HP: 59, AC: 13, SpeedWalk: 20, STR: 19, DEX: 6, CON: 15, INT: 10, WIS: 10, CHA: 7, Attacks: []SRDStatAttack{{Name: "Slam", AttackBonus: 6, DamageDice: "3d6", DamageBonus: 4, AvgDamage: 14, DamageType: "bludgeoning"}}, Traits: []string{"False Appearance"}},
"azer": {Slug: "azer", Name: "Azer", Size: "medium", Type: "elemental", CR: 2, XP: 450, HP: 39, AC: 17, SpeedWalk: 30, STR: 17, DEX: 12, CON: 15, INT: 12, WIS: 13, CHA: 10, Attacks: []SRDStatAttack{{Name: "Warhammer", AttackBonus: 5, DamageDice: "1d8+1d6", DamageBonus: 3, AvgDamage: 3, DamageType: "bludgeoning"}}, Traits: []string{"Heated Body", "Heated Weapons", "Illumination"}},
"bandit_captain": {Slug: "bandit_captain", Name: "Bandit Captain", Size: "medium", Type: "humanoid", CR: 2, XP: 450, HP: 65, AC: 15, SpeedWalk: 30, STR: 15, DEX: 16, CON: 14, INT: 14, WIS: 11, CHA: 14, Multiattack: "The captain makes three melee attacks: two with its scimitar and one with its dagger.", Attacks: []SRDStatAttack{{Name: "Scimitar", AttackBonus: 5, DamageDice: "1d6", DamageBonus: 3, AvgDamage: 6, DamageType: "slashing"}, {Name: "Dagger", AttackBonus: 5, DamageDice: "1d4", DamageBonus: 3, AvgDamage: 5, DamageType: "piercing"}}},
"berserker": {Slug: "berserker", Name: "Berserker", Size: "medium", Type: "humanoid", CR: 2, XP: 450, HP: 67, AC: 13, SpeedWalk: 30, STR: 16, DEX: 12, CON: 17, INT: 9, WIS: 11, CHA: 9, Attacks: []SRDStatAttack{{Name: "Greataxe", AttackBonus: 5, DamageDice: "1d12", DamageBonus: 3, AvgDamage: 9, DamageType: "slashing"}}, Traits: []string{"Reckless"}},
"black_dragon_wyrmling": {Slug: "black_dragon_wyrmling", Name: "Black Dragon Wyrmling", Size: "medium", Type: "dragon", CR: 2, XP: 450, HP: 33, AC: 17, SpeedWalk: 30, STR: 15, DEX: 14, CON: 13, INT: 10, WIS: 11, CHA: 13, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 4, DamageDice: "1d10", DamageBonus: 2, AvgDamage: 7, DamageType: "piercing"}, {Name: "Acid Breath (Recharge 5-6)", AttackBonus: 0, DamageDice: "5d8", DamageBonus: 0, AvgDamage: 22, DamageType: "acid"}}, Traits: []string{"Amphibious"}},
"bronze_dragon_wyrmling": {Slug: "bronze_dragon_wyrmling", Name: "Bronze Dragon Wyrmling", Size: "medium", Type: "dragon", CR: 2, XP: 450, HP: 32, AC: 17, SpeedWalk: 30, STR: 17, DEX: 10, CON: 15, INT: 12, WIS: 11, CHA: 15, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 5, DamageDice: "1d10", DamageBonus: 3, AvgDamage: 8, DamageType: "piercing"}, {Name: "Breath Weapons (Recharge 5-6)", AttackBonus: 0, DamageDice: "3d10", DamageBonus: 0, AvgDamage: 16, DamageType: "lightning"}}, Traits: []string{"Amphibious"}},
"centaur": {Slug: "centaur", Name: "Centaur", Size: "large", Type: "monstrosity", CR: 2, XP: 450, HP: 45, AC: 12, SpeedWalk: 50, STR: 18, DEX: 14, CON: 14, INT: 9, WIS: 13, CHA: 11, Multiattack: "The centaur makes two attacks: one with its pike and one with its hooves or two with its longbow.", Attacks: []SRDStatAttack{{Name: "Pike", AttackBonus: 6, DamageDice: "1d10", DamageBonus: 4, AvgDamage: 9, DamageType: "piercing"}, {Name: "Hooves", AttackBonus: 6, DamageDice: "2d6", DamageBonus: 4, AvgDamage: 11, DamageType: "bludgeoning"}, {Name: "Longbow", AttackBonus: 4, DamageDice: "1d8", DamageBonus: 2, AvgDamage: 6, DamageType: "piercing"}}, Traits: []string{"Charge"}},
"cult_fanatic": {Slug: "cult_fanatic", Name: "Cult Fanatic", Size: "medium", Type: "humanoid", CR: 2, XP: 450, HP: 22, AC: 13, SpeedWalk: 30, STR: 11, DEX: 14, CON: 12, INT: 10, WIS: 13, CHA: 14, Multiattack: "The fanatic makes two melee attacks.", Attacks: []SRDStatAttack{{Name: "Dagger", AttackBonus: 4, DamageDice: "1d4", DamageBonus: 2, AvgDamage: 4, DamageType: "piercing"}}, Traits: []string{"Dark Devotion", "Spellcasting"}},
"druid": {Slug: "druid", Name: "Druid", Size: "medium", Type: "humanoid", CR: 2, XP: 450, HP: 27, AC: 11, SpeedWalk: 30, STR: 10, DEX: 12, CON: 13, INT: 12, WIS: 15, CHA: 11, Attacks: []SRDStatAttack{{Name: "Quarterstaff", AttackBonus: 2, DamageDice: "1d6", DamageBonus: 0, AvgDamage: 3, DamageType: "bludgeoning"}}, Traits: []string{"Spellcasting"}},
"ettercap": {Slug: "ettercap", Name: "Ettercap", Size: "medium", Type: "monstrosity", CR: 2, XP: 450, HP: 44, AC: 13, SpeedWalk: 30, STR: 14, DEX: 15, CON: 13, INT: 7, WIS: 12, CHA: 8, Multiattack: "The ettercap makes two attacks: one with its bite and one with its claws.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 4, DamageDice: "1d8", DamageBonus: 2, AvgDamage: 6, DamageType: "piercing"}, {Name: "Claws", AttackBonus: 4, DamageDice: "2d4", DamageBonus: 2, AvgDamage: 7, DamageType: "slashing"}, {Name: "Variant: Web Garrote", AttackBonus: 4, DamageDice: "1d4", DamageBonus: 2, AvgDamage: 4, DamageType: "bludgeoning"}}, Traits: []string{"Spider Climb", "Web Sense", "Web Walker"}},
"gargoyle": {Slug: "gargoyle", Name: "Gargoyle", Size: "medium", Type: "elemental", CR: 2, XP: 450, HP: 52, AC: 15, SpeedWalk: 30, STR: 15, DEX: 11, CON: 16, INT: 6, WIS: 11, CHA: 7, Multiattack: "The gargoyle makes two attacks: one with its bite and one with its claws.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 4, DamageDice: "1d6", DamageBonus: 2, AvgDamage: 5, DamageType: "piercing"}, {Name: "Claws", AttackBonus: 4, DamageDice: "1d6", DamageBonus: 2, AvgDamage: 5, DamageType: "slashing"}}, Traits: []string{"False Appearance"}},
"gelatinous_cube": {Slug: "gelatinous_cube", Name: "Gelatinous Cube", Size: "large", Type: "ooze", CR: 2, XP: 450, HP: 84, AC: 6, SpeedWalk: 15, STR: 14, DEX: 3, CON: 20, INT: 1, WIS: 6, CHA: 1, Attacks: []SRDStatAttack{{Name: "Pseudopod", AttackBonus: 4, DamageDice: "3d6", DamageBonus: 0, AvgDamage: 10, DamageType: "acid"}}, Traits: []string{"Ooze Cube", "Transparent"}},
"ghast": {Slug: "ghast", Name: "Ghast", Size: "medium", Type: "undead", CR: 2, XP: 450, HP: 36, AC: 13, SpeedWalk: 30, STR: 16, DEX: 17, CON: 10, INT: 11, WIS: 10, CHA: 8, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 3, DamageDice: "2d8", DamageBonus: 3, AvgDamage: 12, DamageType: "piercing"}, {Name: "Claws", AttackBonus: 5, DamageDice: "2d6", DamageBonus: 3, AvgDamage: 10, DamageType: "slashing"}}, Traits: []string{"Stench", "Turn Defiance"}},
"giant_boar": {Slug: "giant_boar", Name: "Giant Boar", Size: "large", Type: "beast", CR: 2, XP: 450, HP: 42, AC: 12, SpeedWalk: 40, STR: 17, DEX: 10, CON: 16, INT: 2, WIS: 7, CHA: 5, Attacks: []SRDStatAttack{{Name: "Tusk", AttackBonus: 5, DamageDice: "2d6", DamageBonus: 3, AvgDamage: 10, DamageType: "slashing"}}, Traits: []string{"Charge", "Relentless (Recharges after a Short or Long Rest)"}},
"giant_constrictor_snake": {Slug: "giant_constrictor_snake", Name: "Giant Constrictor Snake", Size: "huge", Type: "beast", CR: 2, XP: 450, HP: 60, AC: 12, SpeedWalk: 30, STR: 19, DEX: 14, CON: 12, INT: 1, WIS: 10, CHA: 3, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 6, DamageDice: "2d6", DamageBonus: 4, AvgDamage: 11, DamageType: "piercing"}, {Name: "Constrict", AttackBonus: 6, DamageDice: "2d8", DamageBonus: 4, AvgDamage: 13, DamageType: "bludgeoning"}}},
"giant_elk": {Slug: "giant_elk", Name: "Giant Elk", Size: "huge", Type: "beast", CR: 2, XP: 450, HP: 42, AC: 15, SpeedWalk: 60, STR: 19, DEX: 16, CON: 14, INT: 7, WIS: 14, CHA: 10, Attacks: []SRDStatAttack{{Name: "Ram", AttackBonus: 6, DamageDice: "2d6", DamageBonus: 4, AvgDamage: 11, DamageType: "bludgeoning"}, {Name: "Hooves", AttackBonus: 6, DamageDice: "4d8", DamageBonus: 4, AvgDamage: 22, DamageType: "bludgeoning"}}, Traits: []string{"Charge"}},
"gibbering_mouther": {Slug: "gibbering_mouther", Name: "Gibbering Mouther", Size: "medium", Type: "aberration", CR: 2, XP: 450, HP: 67, AC: 9, SpeedWalk: 10, STR: 10, DEX: 8, CON: 16, INT: 3, WIS: 10, CHA: 6, Multiattack: "The gibbering mouther makes one bite attack and, if it can, uses its Blinding Spittle.", Attacks: []SRDStatAttack{{Name: "Bites", AttackBonus: 2, DamageDice: "5d6", DamageBonus: 0, AvgDamage: 17, DamageType: "piercing"}}, Traits: []string{"Aberrant Ground", "Gibbering"}},
"green_dragon_wyrmling": {Slug: "green_dragon_wyrmling", Name: "Green Dragon Wyrmling", Size: "medium", Type: "dragon", CR: 2, XP: 450, HP: 38, AC: 17, SpeedWalk: 30, STR: 15, DEX: 12, CON: 13, INT: 14, WIS: 11, CHA: 13, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 4, DamageDice: "1d10+1d6", DamageBonus: 3, AvgDamage: 3, DamageType: "piercing"}, {Name: "Poison Breath (Recharge 5-6)", AttackBonus: 0, DamageDice: "6d6", DamageBonus: 0, AvgDamage: 21, DamageType: "poison"}}, Traits: []string{"Amphibious"}},
"grick": {Slug: "grick", Name: "Grick", Size: "medium", Type: "monstrosity", CR: 2, XP: 450, HP: 27, AC: 14, SpeedWalk: 30, STR: 14, DEX: 14, CON: 11, INT: 3, WIS: 14, CHA: 5, Multiattack: "The grick makes one attack with its tentacles.", Attacks: []SRDStatAttack{{Name: "Tentacles", AttackBonus: 4, DamageDice: "2d6", DamageBonus: 2, AvgDamage: 9, DamageType: "slashing"}, {Name: "Beak", AttackBonus: 4, DamageDice: "1d6", DamageBonus: 2, AvgDamage: 5, DamageType: "piercing"}}, Traits: []string{"Stone Camouflage"}},
"griffon": {Slug: "griffon", Name: "Griffon", Size: "large", Type: "monstrosity", CR: 2, XP: 450, HP: 59, AC: 12, SpeedWalk: 30, STR: 18, DEX: 15, CON: 16, INT: 2, WIS: 13, CHA: 8, Multiattack: "The griffon makes two attacks: one with its beak and one with its claws.", Attacks: []SRDStatAttack{{Name: "Beak", AttackBonus: 6, DamageDice: "1d8", DamageBonus: 4, AvgDamage: 8, DamageType: "piercing"}, {Name: "Claws", AttackBonus: 6, DamageDice: "2d6", DamageBonus: 4, AvgDamage: 11, DamageType: "slashing"}}, Traits: []string{"Keen Sight"}},
"hunter_shark": {Slug: "hunter_shark", Name: "Hunter Shark", Size: "large", Type: "beast", CR: 2, XP: 450, HP: 45, AC: 12, SpeedWalk: 40, STR: 18, DEX: 13, CON: 15, INT: 1, WIS: 10, CHA: 4, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 6, DamageDice: "2d8", DamageBonus: 4, AvgDamage: 13, DamageType: "piercing"}}, Traits: []string{"Blood Frenzy", "Water Breathing"}},
"merrow": {Slug: "merrow", Name: "Merrow", Size: "large", Type: "monstrosity", CR: 2, XP: 450, HP: 45, AC: 13, SpeedWalk: 10, STR: 18, DEX: 10, CON: 15, INT: 8, WIS: 10, CHA: 9, Multiattack: "The merrow makes two attacks: one with its bite and one with its claws or harpoon.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 6, DamageDice: "1d8", DamageBonus: 4, AvgDamage: 8, DamageType: "piercing"}, {Name: "Claws", AttackBonus: 6, DamageDice: "2d4", DamageBonus: 4, AvgDamage: 9, DamageType: "slashing"}, {Name: "Harpoon", AttackBonus: 6, DamageDice: "2d6", DamageBonus: 4, AvgDamage: 11, DamageType: "piercing"}}, Traits: []string{"Amphibious"}},
"mimic": {Slug: "mimic", Name: "Mimic", Size: "medium", Type: "monstrosity", CR: 2, XP: 450, HP: 58, AC: 12, SpeedWalk: 15, STR: 17, DEX: 12, CON: 15, INT: 5, WIS: 13, CHA: 8, Attacks: []SRDStatAttack{{Name: "Pseudopod", AttackBonus: 5, DamageDice: "1d8", DamageBonus: 3, AvgDamage: 7, DamageType: "bludgeoning"}, {Name: "Bite", AttackBonus: 5, DamageDice: "1d8+1d8", DamageBonus: 3, AvgDamage: 3, DamageType: "piercing"}}, Traits: []string{"Shapechanger", "Adhesive (Object Form Only)", "False Appearance (Object Form Only)", "Grappler"}},
"minotaur_skeleton": {Slug: "minotaur_skeleton", Name: "Minotaur Skeleton", Size: "large", Type: "undead", CR: 2, XP: 450, HP: 67, AC: 12, SpeedWalk: 40, STR: 18, DEX: 11, CON: 15, INT: 6, WIS: 8, CHA: 5, Attacks: []SRDStatAttack{{Name: "Greataxe", AttackBonus: 6, DamageDice: "2d12", DamageBonus: 4, AvgDamage: 17, DamageType: "slashing"}, {Name: "Gore", AttackBonus: 6, DamageDice: "2d8", DamageBonus: 4, AvgDamage: 13, DamageType: "piercing"}}, Traits: []string{"Charge"}},
"ochre_jelly": {Slug: "ochre_jelly", Name: "Ochre Jelly", Size: "large", Type: "ooze", CR: 2, XP: 450, HP: 45, AC: 8, SpeedWalk: 10, STR: 15, DEX: 6, CON: 14, INT: 2, WIS: 6, CHA: 1, Attacks: []SRDStatAttack{{Name: "Pseudopod", AttackBonus: 4, DamageDice: "2d6", DamageBonus: 2, AvgDamage: 9, DamageType: "bludgeoning"}}, Traits: []string{"Amorphous", "Spider Climb"}},
"ogre": {Slug: "ogre", Name: "Ogre", Size: "large", Type: "giant", CR: 2, XP: 450, HP: 59, AC: 11, SpeedWalk: 40, STR: 19, DEX: 8, CON: 16, INT: 5, WIS: 7, CHA: 7, Attacks: []SRDStatAttack{{Name: "Greatclub", AttackBonus: 6, DamageDice: "2d8", DamageBonus: 4, AvgDamage: 13, DamageType: "bludgeoning"}, {Name: "Javelin", AttackBonus: 6, DamageDice: "2d6", DamageBonus: 4, AvgDamage: 11, DamageType: "piercing"}}},
"ogre_zombie": {Slug: "ogre_zombie", Name: "Ogre Zombie", Size: "large", Type: "undead", CR: 2, XP: 450, HP: 85, AC: 8, SpeedWalk: 30, STR: 19, DEX: 6, CON: 18, INT: 3, WIS: 6, CHA: 5, Attacks: []SRDStatAttack{{Name: "Morningstar", AttackBonus: 6, DamageDice: "2d8", DamageBonus: 4, AvgDamage: 13, DamageType: "bludgeoning"}}, Traits: []string{"Undead Fortitude"}},
"pegasus": {Slug: "pegasus", Name: "Pegasus", Size: "large", Type: "celestial", CR: 2, XP: 450, HP: 59, AC: 12, SpeedWalk: 60, STR: 18, DEX: 15, CON: 16, INT: 10, WIS: 15, CHA: 13, Attacks: []SRDStatAttack{{Name: "Hooves", AttackBonus: 6, DamageDice: "2d6", DamageBonus: 4, AvgDamage: 11, DamageType: "bludgeoning"}}},
"plesiosaurus": {Slug: "plesiosaurus", Name: "Plesiosaurus", Size: "large", Type: "beast", CR: 2, XP: 450, HP: 68, AC: 13, SpeedWalk: 20, STR: 18, DEX: 15, CON: 16, INT: 2, WIS: 12, CHA: 5, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 6, DamageDice: "3d6", DamageBonus: 4, AvgDamage: 14, DamageType: "piercing"}}, Traits: []string{"Hold Breath"}},
"polar_bear": {Slug: "polar_bear", Name: "Polar Bear", Size: "large", Type: "beast", CR: 2, XP: 450, HP: 42, AC: 12, SpeedWalk: 40, STR: 20, DEX: 10, CON: 16, INT: 2, WIS: 13, CHA: 7, Multiattack: "The bear makes two attacks: one with its bite and one with its claws.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 7, DamageDice: "1d8", DamageBonus: 5, AvgDamage: 9, DamageType: "piercing"}, {Name: "Claws", AttackBonus: 7, DamageDice: "2d6", DamageBonus: 5, AvgDamage: 12, DamageType: "slashing"}}, Traits: []string{"Keen Smell"}},
"priest": {Slug: "priest", Name: "Priest", Size: "medium", Type: "humanoid", CR: 2, XP: 450, HP: 27, AC: 13, SpeedWalk: 25, STR: 10, DEX: 10, CON: 12, INT: 13, WIS: 16, CHA: 13, Attacks: []SRDStatAttack{{Name: "Mace", AttackBonus: 2, DamageDice: "1d6", DamageBonus: 0, AvgDamage: 3, DamageType: "bludgeoning"}}, Traits: []string{"Divine Eminence", "Spellcasting"}},
"rhinoceros": {Slug: "rhinoceros", Name: "Rhinoceros", Size: "large", Type: "beast", CR: 2, XP: 450, HP: 45, AC: 11, SpeedWalk: 40, STR: 21, DEX: 8, CON: 15, INT: 2, WIS: 12, CHA: 6, Attacks: []SRDStatAttack{{Name: "Gore", AttackBonus: 7, DamageDice: "2d8", DamageBonus: 5, AvgDamage: 14, DamageType: "bludgeoning"}}, Traits: []string{"Charge"}},
"rug_of_smothering": {Slug: "rug_of_smothering", Name: "Rug of Smothering", Size: "large", Type: "construct", CR: 2, XP: 450, HP: 33, AC: 12, SpeedWalk: 10, STR: 17, DEX: 14, CON: 10, INT: 1, WIS: 3, CHA: 1, Attacks: []SRDStatAttack{{Name: "Smother", AttackBonus: 0, DamageDice: "2d6", DamageBonus: 3, AvgDamage: 10, DamageType: "bludgeoning"}}, Traits: []string{"Antimagic Susceptibility", "Damage Transfer", "False Appearance"}},
"saber_toothed_tiger": {Slug: "saber_toothed_tiger", Name: "Saber-Toothed Tiger", Size: "large", Type: "beast", CR: 2, XP: 450, HP: 52, AC: 12, SpeedWalk: 40, STR: 18, DEX: 14, CON: 15, INT: 3, WIS: 12, CHA: 8, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 6, DamageDice: "1d10", DamageBonus: 5, AvgDamage: 10, DamageType: "piercing"}, {Name: "Claw", AttackBonus: 6, DamageDice: "2d6", DamageBonus: 5, AvgDamage: 12, DamageType: "slashing"}}, Traits: []string{"Keen Smell", "Pounce"}},
"sea_hag": {Slug: "sea_hag", Name: "Sea Hag", Size: "medium", Type: "fey", CR: 2, XP: 450, HP: 52, AC: 14, SpeedWalk: 30, STR: 16, DEX: 13, CON: 16, INT: 12, WIS: 12, CHA: 13, Attacks: []SRDStatAttack{{Name: "Claws", AttackBonus: 5, DamageDice: "2d6", DamageBonus: 3, AvgDamage: 10, DamageType: "slashing"}}, Traits: []string{"Amphibious", "Horrific Appearance", "Hag Coven", "Shared Spellcasting (Coven Only)", "Hag Eye (Coven Only)"}},
"silver_dragon_wyrmling": {Slug: "silver_dragon_wyrmling", Name: "Silver Dragon Wyrmling", Size: "medium", Type: "dragon", CR: 2, XP: 450, HP: 45, AC: 17, SpeedWalk: 30, STR: 19, DEX: 10, CON: 17, INT: 12, WIS: 11, CHA: 15, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 6, DamageDice: "1d10", DamageBonus: 4, AvgDamage: 9, DamageType: "piercing"}, {Name: "Breath Weapons (Recharge 5-6)", AttackBonus: 0, DamageDice: "4d8", DamageBonus: 0, AvgDamage: 18, DamageType: "cold"}}},
"swarm_of_poisonous_snakes": {Slug: "swarm_of_poisonous_snakes", Name: "Swarm of Poisonous Snakes", Size: "medium", Type: "beast", CR: 2, XP: 450, HP: 36, AC: 14, SpeedWalk: 30, STR: 8, DEX: 18, CON: 11, INT: 1, WIS: 10, CHA: 3, Attacks: []SRDStatAttack{{Name: "Bites", AttackBonus: 6, DamageDice: "2d6", DamageBonus: 0, AvgDamage: 7, DamageType: "piercing"}}, Traits: []string{"Swarm"}},
"wererat": {Slug: "wererat", Name: "Wererat", Size: "medium", Type: "humanoid", CR: 2, XP: 450, HP: 33, AC: 12, SpeedWalk: 30, STR: 10, DEX: 15, CON: 12, INT: 11, WIS: 10, CHA: 8, Attacks: []SRDStatAttack{{Name: "Bite (Rat or Hybrid Form Only).", AttackBonus: 4, DamageDice: "1d4", DamageBonus: 2, AvgDamage: 4, DamageType: "piercing"}, {Name: "Shortsword (Humanoid or Hybrid Form Only)", AttackBonus: 4, DamageDice: "1d6", DamageBonus: 2, AvgDamage: 5, DamageType: "piercing"}, {Name: "Hand Crossbow (Humanoid or Hybrid Form Only)", AttackBonus: 4, DamageDice: "1d6", DamageBonus: 2, AvgDamage: 5, DamageType: "piercing"}}, Traits: []string{"Shapechanger", "Keen Smell"}},
"white_dragon_wyrmling": {Slug: "white_dragon_wyrmling", Name: "White Dragon Wyrmling", Size: "medium", Type: "dragon", CR: 2, XP: 450, HP: 32, AC: 16, SpeedWalk: 30, STR: 14, DEX: 10, CON: 14, INT: 5, WIS: 10, CHA: 11, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 4, DamageDice: "1d10+1d4", DamageBonus: 2, AvgDamage: 2, DamageType: "piercing"}, {Name: "Cold Breath (Recharge 5-6)", AttackBonus: 0, DamageDice: "5d8", DamageBonus: 0, AvgDamage: 22, DamageType: "cold"}}},
"will_o_wisp": {Slug: "will_o_wisp", Name: "Will-o'-Wisp", Size: "tiny", Type: "undead", CR: 2, XP: 450, HP: 22, AC: 19, SpeedWalk: 50, STR: 1, DEX: 28, CON: 10, INT: 13, WIS: 14, CHA: 11, Attacks: []SRDStatAttack{{Name: "Shock", AttackBonus: 4, DamageDice: "2d8", DamageBonus: 0, AvgDamage: 9, DamageType: "lightning"}}, Traits: []string{"Consume Life", "Ephemeral", "Incorporeal Movement", "Variable Illumination"}},
"basilisk": {Slug: "basilisk", Name: "Basilisk", Size: "medium", Type: "monstrosity", CR: 3, XP: 700, HP: 52, AC: 12, SpeedWalk: 20, STR: 16, DEX: 8, CON: 15, INT: 2, WIS: 8, CHA: 7, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 5, DamageDice: "2d6+2d6", DamageBonus: 3, AvgDamage: 3, DamageType: "piercing"}}, Traits: []string{"Petrifying Gaze"}},
"bearded_devil": {Slug: "bearded_devil", Name: "Bearded Devil", Size: "medium", Type: "fiend", CR: 3, XP: 700, HP: 52, AC: 13, SpeedWalk: 30, STR: 16, DEX: 15, CON: 15, INT: 9, WIS: 11, CHA: 11, Multiattack: "The devil makes two attacks: one with its beard and one with its glaive.", Attacks: []SRDStatAttack{{Name: "Beard", AttackBonus: 5, DamageDice: "1d8", DamageBonus: 2, AvgDamage: 6, DamageType: "piercing"}, {Name: "Glaive", AttackBonus: 5, DamageDice: "1d10", DamageBonus: 3, AvgDamage: 8, DamageType: "slashing"}}, Traits: []string{"Devil's Sight", "Magic Resistance", "Steadfast"}},
"blue_dragon_wyrmling": {Slug: "blue_dragon_wyrmling", Name: "Blue Dragon Wyrmling", Size: "medium", Type: "dragon", CR: 3, XP: 700, HP: 52, AC: 17, SpeedWalk: 30, STR: 17, DEX: 10, CON: 15, INT: 12, WIS: 11, CHA: 15, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 5, DamageDice: "1d10+1d6", DamageBonus: 3, AvgDamage: 3, DamageType: "piercing"}, {Name: "Lightning Breath (Recharge 5-6)", AttackBonus: 0, DamageDice: "4d10", DamageBonus: 0, AvgDamage: 22, DamageType: "lightning"}}},
"doppelganger": {Slug: "doppelganger", Name: "Doppelganger", Size: "medium", Type: "monstrosity", CR: 3, XP: 700, HP: 52, AC: 14, SpeedWalk: 30, STR: 11, DEX: 18, CON: 14, INT: 11, WIS: 12, CHA: 14, Multiattack: "The doppelganger makes two melee attacks.", Attacks: []SRDStatAttack{{Name: "Slam", AttackBonus: 6, DamageDice: "1d6", DamageBonus: 4, AvgDamage: 7, DamageType: "bludgeoning"}}, Traits: []string{"Shapechanger", "Ambusher", "Surprise Attack"}},
"giant_scorpion": {Slug: "giant_scorpion", Name: "Giant Scorpion", Size: "large", Type: "beast", CR: 3, XP: 700, HP: 52, AC: 15, SpeedWalk: 40, STR: 15, DEX: 13, CON: 15, INT: 1, WIS: 9, CHA: 3, Multiattack: "The scorpion makes three attacks: two with its claws and one with its sting.", Attacks: []SRDStatAttack{{Name: "Claw", AttackBonus: 4, DamageDice: "1d8", DamageBonus: 2, AvgDamage: 6, DamageType: "bludgeoning"}, {Name: "Sting", AttackBonus: 4, DamageDice: "1d10", DamageBonus: 2, AvgDamage: 7, DamageType: "piercing"}}},
"gold_dragon_wyrmling": {Slug: "gold_dragon_wyrmling", Name: "Gold Dragon Wyrmling", Size: "medium", Type: "dragon", CR: 3, XP: 700, HP: 60, AC: 17, SpeedWalk: 30, STR: 19, DEX: 14, CON: 17, INT: 14, WIS: 11, CHA: 16, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 6, DamageDice: "1d10", DamageBonus: 4, AvgDamage: 9, DamageType: "piercing"}, {Name: "Breath Weapons (Recharge 5-6)", AttackBonus: 0, DamageDice: "4d10", DamageBonus: 0, AvgDamage: 22, DamageType: "fire"}}, Traits: []string{"Amphibious"}},
"green_hag": {Slug: "green_hag", Name: "Green Hag", Size: "medium", Type: "fey", CR: 3, XP: 700, HP: 82, AC: 17, SpeedWalk: 30, STR: 18, DEX: 12, CON: 16, INT: 13, WIS: 14, CHA: 14, Attacks: []SRDStatAttack{{Name: "Claws", AttackBonus: 6, DamageDice: "2d8", DamageBonus: 4, AvgDamage: 13, DamageType: "slashing"}}, Traits: []string{"Amphibious", "Innate Spellcasting", "Mimicry", "Hag Coven", "Shared Spellcasting (Coven Only)", "Hag Eye (Coven Only)"}},
"hell_hound": {Slug: "hell_hound", Name: "Hell Hound", Size: "medium", Type: "fiend", CR: 3, XP: 700, HP: 45, AC: 15, SpeedWalk: 50, STR: 17, DEX: 12, CON: 14, INT: 6, WIS: 13, CHA: 6, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 5, DamageDice: "1d8", DamageBonus: 3, AvgDamage: 7, DamageType: "piercing"}, {Name: "Fire Breath (Recharge 5-6)", AttackBonus: 0, DamageDice: "6d6", DamageBonus: 0, AvgDamage: 21, DamageType: "fire"}}, Traits: []string{"Keen Hearing and Smell", "Pack Tactics"}},
"killer_whale": {Slug: "killer_whale", Name: "Killer Whale", Size: "huge", Type: "beast", CR: 3, XP: 700, HP: 90, AC: 12, SpeedWalk: 60, STR: 19, DEX: 10, CON: 13, INT: 3, WIS: 12, CHA: 7, Traits: []string{"Echolocation", "Hold Breath", "Keen Hearing"}},
"knight": {Slug: "knight", Name: "Knight", Size: "medium", Type: "humanoid", CR: 3, XP: 700, HP: 52, AC: 18, SpeedWalk: 30, STR: 16, DEX: 11, CON: 14, INT: 11, WIS: 11, CHA: 15, Multiattack: "The knight makes two melee attacks.", Attacks: []SRDStatAttack{{Name: "Greatsword", AttackBonus: 5, DamageDice: "2d6", DamageBonus: 3, AvgDamage: 10, DamageType: "slashing"}, {Name: "Heavy Crossbow", AttackBonus: 2, DamageDice: "1d10", DamageBonus: 0, AvgDamage: 5, DamageType: "piercing"}}, Traits: []string{"Brave"}},
"manticore": {Slug: "manticore", Name: "Manticore", Size: "large", Type: "monstrosity", CR: 3, XP: 700, HP: 68, AC: 14, SpeedWalk: 30, STR: 17, DEX: 16, CON: 17, INT: 7, WIS: 12, CHA: 8, Multiattack: "The manticore makes three attacks: one with its bite and two with its claws or three with its tail spikes.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 5, DamageDice: "1d8", DamageBonus: 3, AvgDamage: 7, DamageType: "piercing"}, {Name: "Claw", AttackBonus: 5, DamageDice: "1d6", DamageBonus: 3, AvgDamage: 6, DamageType: "slashing"}, {Name: "Tail Spike", AttackBonus: 5, DamageDice: "1d8", DamageBonus: 3, AvgDamage: 7, DamageType: "piercing"}}, Traits: []string{"Tail Spike Regrowth"}},
"minotaur": {Slug: "minotaur", Name: "Minotaur", Size: "large", Type: "monstrosity", CR: 3, XP: 700, HP: 76, AC: 14, SpeedWalk: 40, STR: 18, DEX: 11, CON: 16, INT: 6, WIS: 16, CHA: 9, Attacks: []SRDStatAttack{{Name: "Greataxe", AttackBonus: 6, DamageDice: "2d12", DamageBonus: 4, AvgDamage: 17, DamageType: "slashing"}, {Name: "Gore", AttackBonus: 6, DamageDice: "2d8", DamageBonus: 4, AvgDamage: 13, DamageType: "piercing"}}, Traits: []string{"Charge", "Labyrinthine Recall", "Reckless"}},
"mummy": {Slug: "mummy", Name: "Mummy", Size: "medium", Type: "undead", CR: 3, XP: 700, HP: 58, AC: 11, SpeedWalk: 20, STR: 16, DEX: 8, CON: 15, INT: 6, WIS: 10, CHA: 12, Multiattack: "The mummy can use its Dreadful Glare and makes one attack with its rotting fist.", Attacks: []SRDStatAttack{{Name: "Rotting Fist", AttackBonus: 5, DamageDice: "2d6", DamageBonus: 3, AvgDamage: 10, DamageType: "bludgeoning"}}},
"nightmare": {Slug: "nightmare", Name: "Nightmare", Size: "large", Type: "fiend", CR: 3, XP: 700, HP: 68, AC: 13, SpeedWalk: 60, STR: 18, DEX: 15, CON: 16, INT: 10, WIS: 13, CHA: 15, Attacks: []SRDStatAttack{{Name: "Hooves", AttackBonus: 6, DamageDice: "2d8+2d6", DamageBonus: 4, AvgDamage: 4, DamageType: "bludgeoning"}}, Traits: []string{"Confer Fire Resistance", "Illumination"}},
"owlbear": {Slug: "owlbear", Name: "Owlbear", Size: "large", Type: "monstrosity", CR: 3, XP: 700, HP: 59, AC: 13, SpeedWalk: 40, STR: 20, DEX: 12, CON: 17, INT: 3, WIS: 12, CHA: 7, Multiattack: "The owlbear makes two attacks: one with its beak and one with its claws.", Attacks: []SRDStatAttack{{Name: "Beak", AttackBonus: 7, DamageDice: "1d10", DamageBonus: 5, AvgDamage: 10, DamageType: "piercing"}, {Name: "Claws", AttackBonus: 7, DamageDice: "2d8", DamageBonus: 5, AvgDamage: 14, DamageType: "slashing"}}, Traits: []string{"Keen Sight and Smell"}},
"phase_spider": {Slug: "phase_spider", Name: "Phase Spider", Size: "large", Type: "monstrosity", CR: 3, XP: 700, HP: 32, AC: 13, SpeedWalk: 30, STR: 15, DEX: 15, CON: 12, INT: 6, WIS: 10, CHA: 6, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 4, DamageDice: "1d10", DamageBonus: 2, AvgDamage: 7, DamageType: "piercing"}}, Traits: []string{"Ethereal Jaunt", "Spider Climb", "Web Walker"}},
"veteran": {Slug: "veteran", Name: "Veteran", Size: "medium", Type: "humanoid", CR: 3, XP: 700, HP: 58, AC: 17, SpeedWalk: 30, STR: 16, DEX: 13, CON: 14, INT: 10, WIS: 11, CHA: 10, Multiattack: "The veteran makes two longsword attacks.", Attacks: []SRDStatAttack{{Name: "Longsword", AttackBonus: 5, DamageDice: "1d8", DamageBonus: 3, AvgDamage: 7, DamageType: "slashing"}, {Name: "Shortsword", AttackBonus: 5, DamageDice: "1d6", DamageBonus: 3, AvgDamage: 6, DamageType: "piercing"}, {Name: "Heavy Crossbow", AttackBonus: 3, DamageDice: "1d10", DamageBonus: 1, AvgDamage: 6, DamageType: "piercing"}}},
"werewolf": {Slug: "werewolf", Name: "Werewolf", Size: "medium", Type: "humanoid", CR: 3, XP: 700, HP: 58, AC: 11, SpeedWalk: 30, STR: 15, DEX: 13, CON: 14, INT: 10, WIS: 11, CHA: 10, Attacks: []SRDStatAttack{{Name: "Bite (Wolf or Hybrid Form Only)", AttackBonus: 4, DamageDice: "1d8", DamageBonus: 2, AvgDamage: 6, DamageType: "piercing"}, {Name: "Claws (Hybrid Form Only)", AttackBonus: 4, DamageDice: "2d4", DamageBonus: 2, AvgDamage: 7, DamageType: "slashing"}, {Name: "Spear (Humanoid Form Only)", AttackBonus: 4, DamageDice: "1d6", DamageBonus: -2, AvgDamage: 1, DamageType: "piercing"}}, Traits: []string{"Shapechanger", "Keen Hearing and Smell"}},
"wight": {Slug: "wight", Name: "Wight", Size: "medium", Type: "undead", CR: 3, XP: 700, HP: 45, AC: 14, SpeedWalk: 30, STR: 15, DEX: 14, CON: 16, INT: 10, WIS: 13, CHA: 15, Multiattack: "The wight makes two longsword attacks or two longbow attacks.", Attacks: []SRDStatAttack{{Name: "Life Drain", AttackBonus: 4, DamageDice: "1d6", DamageBonus: 2, AvgDamage: 5, DamageType: "necrotic"}, {Name: "Longsword", AttackBonus: 4, DamageDice: "1d8", DamageBonus: 2, AvgDamage: 6, DamageType: "slashing"}, {Name: "Longbow", AttackBonus: 4, DamageDice: "1d8", DamageBonus: 2, AvgDamage: 6, DamageType: "piercing"}}, Traits: []string{"Sunlight Sensitivity"}},
"winter_wolf": {Slug: "winter_wolf", Name: "Winter Wolf", Size: "large", Type: "monstrosity", CR: 3, XP: 700, HP: 75, AC: 13, SpeedWalk: 50, STR: 18, DEX: 13, CON: 14, INT: 7, WIS: 12, CHA: 8, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 6, DamageDice: "2d6", DamageBonus: 4, AvgDamage: 11, DamageType: "piercing"}, {Name: "Cold Breath (Recharge 5-6)", AttackBonus: 0, DamageDice: "4d8", DamageBonus: 0, AvgDamage: 18, DamageType: "cold"}}, Traits: []string{"Keen Hearing and Smell", "Pack Tactics", "Snow Camouflage"}},
"black_pudding": {Slug: "black_pudding", Name: "Black Pudding", Size: "large", Type: "ooze", CR: 4, XP: 1100, HP: 85, AC: 7, SpeedWalk: 20, STR: 16, DEX: 5, CON: 16, INT: 1, WIS: 6, CHA: 1, Attacks: []SRDStatAttack{{Name: "Pseudopod", AttackBonus: 5, DamageDice: "1d6+4d8", DamageBonus: 3, AvgDamage: 3, DamageType: "bludgeoning"}}, Traits: []string{"Amorphous", "Corrosive Form", "Spider Climb"}},
"chuul": {Slug: "chuul", Name: "Chuul", Size: "large", Type: "aberration", CR: 4, XP: 1100, HP: 93, AC: 16, SpeedWalk: 30, STR: 19, DEX: 10, CON: 16, INT: 5, WIS: 11, CHA: 5, Multiattack: "The chuul makes two pincer attacks.", Attacks: []SRDStatAttack{{Name: "Pincer", AttackBonus: 6, DamageDice: "2d6", DamageBonus: 4, AvgDamage: 11, DamageType: "bludgeoning"}}, Traits: []string{"Amphibious", "Sense Magic"}},
"couatl": {Slug: "couatl", Name: "Couatl", Size: "medium", Type: "celestial", CR: 4, XP: 1100, HP: 97, AC: 19, SpeedWalk: 30, STR: 16, DEX: 20, CON: 17, INT: 18, WIS: 20, CHA: 18, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 8, DamageDice: "1d6", DamageBonus: 5, AvgDamage: 8, DamageType: "piercing"}, {Name: "Constrict", AttackBonus: 6, DamageDice: "2d6", DamageBonus: 3, AvgDamage: 10, DamageType: "bludgeoning"}}, Traits: []string{"Innate Spellcasting", "Magic Weapons", "Shielded Mind"}},
"elephant": {Slug: "elephant", Name: "Elephant", Size: "huge", Type: "beast", CR: 4, XP: 1100, HP: 76, AC: 12, SpeedWalk: 40, STR: 22, DEX: 9, CON: 17, INT: 3, WIS: 11, CHA: 6, Attacks: []SRDStatAttack{{Name: "Gore", AttackBonus: 8, DamageDice: "3d8", DamageBonus: 6, AvgDamage: 19, DamageType: "piercing"}, {Name: "Stomp", AttackBonus: 8, DamageDice: "3d10", DamageBonus: 6, AvgDamage: 22, DamageType: "bludgeoning"}}, Traits: []string{"Trampling Charge"}},
"ettin": {Slug: "ettin", Name: "Ettin", Size: "large", Type: "giant", CR: 4, XP: 1100, HP: 85, AC: 12, SpeedWalk: 40, STR: 21, DEX: 8, CON: 17, INT: 6, WIS: 10, CHA: 8, Multiattack: "The ettin makes two attacks: one with its battleaxe and one with its morningstar.", Attacks: []SRDStatAttack{{Name: "Battleaxe", AttackBonus: 7, DamageDice: "2d8", DamageBonus: 5, AvgDamage: 14, DamageType: "slashing"}, {Name: "Morningstar", AttackBonus: 7, DamageDice: "2d8", DamageBonus: 5, AvgDamage: 14, DamageType: "piercing"}}, Traits: []string{"Two Heads", "Wakeful"}},
"ghost": {Slug: "ghost", Name: "Ghost", Size: "medium", Type: "undead", CR: 4, XP: 1100, HP: 45, AC: 11, SpeedWalk: 40, STR: 7, DEX: 13, CON: 10, INT: 10, WIS: 12, CHA: 17, Attacks: []SRDStatAttack{{Name: "Withering Touch", AttackBonus: 5, DamageDice: "4d6", DamageBonus: 3, AvgDamage: 17, DamageType: "necrotic"}}, Traits: []string{"Ethereal Sight", "Incorporeal Movement"}},
"lamia": {Slug: "lamia", Name: "Lamia", Size: "large", Type: "monstrosity", CR: 4, XP: 1100, HP: 97, AC: 13, SpeedWalk: 30, STR: 16, DEX: 13, CON: 15, INT: 14, WIS: 15, CHA: 16, Multiattack: "The lamia makes two attacks: one with its claws and one with its dagger or Intoxicating Touch.", Attacks: []SRDStatAttack{{Name: "Claws", AttackBonus: 5, DamageDice: "2d10", DamageBonus: 3, AvgDamage: 14, DamageType: "slashing"}, {Name: "Dagger", AttackBonus: 5, DamageDice: "1d4", DamageBonus: 3, AvgDamage: 5, DamageType: "piercing"}}, Traits: []string{"Innate Spellcasting"}},
"red_dragon_wyrmling": {Slug: "red_dragon_wyrmling", Name: "Red Dragon Wyrmling", Size: "medium", Type: "dragon", CR: 4, XP: 1100, HP: 75, AC: 17, SpeedWalk: 30, STR: 19, DEX: 10, CON: 17, INT: 12, WIS: 11, CHA: 15, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 6, DamageDice: "1d10+1d6", DamageBonus: 4, AvgDamage: 4, DamageType: "piercing"}, {Name: "Fire Breath (Recharge 5-6)", AttackBonus: 0, DamageDice: "7d6", DamageBonus: 0, AvgDamage: 24, DamageType: "fire"}}},
"succubusincubus": {Slug: "succubusincubus", Name: "Succubus/Incubus", Size: "medium", Type: "fiend", CR: 4, XP: 1100, HP: 66, AC: 15, SpeedWalk: 30, STR: 8, DEX: 17, CON: 13, INT: 15, WIS: 12, CHA: 20, Attacks: []SRDStatAttack{{Name: "Claw (Fiend Form Only)", AttackBonus: 5, DamageDice: "1d6", DamageBonus: 3, AvgDamage: 6, DamageType: "slashing"}, {Name: "Draining Kiss", AttackBonus: 0, DamageDice: "5d10", DamageBonus: 5, AvgDamage: 32, DamageType: "psychic"}}, Traits: []string{"Telepathic Bond", "Shapechanger"}},
"wereboar": {Slug: "wereboar", Name: "Wereboar", Size: "medium", Type: "humanoid", CR: 4, XP: 1100, HP: 78, AC: 10, SpeedWalk: 30, STR: 17, DEX: 10, CON: 15, INT: 10, WIS: 11, CHA: 8, Attacks: []SRDStatAttack{{Name: "Maul (Humanoid or Hybrid Form Only)", AttackBonus: 5, DamageDice: "2d6", DamageBonus: 3, AvgDamage: 10, DamageType: "bludgeoning"}, {Name: "Tusks (Boar or Hybrid Form Only)", AttackBonus: 5, DamageDice: "2d6", DamageBonus: 3, AvgDamage: 10, DamageType: "slashing"}}, Traits: []string{"Shapechanger", "Charge (Boar or Hybrid Form Only)", "Relentless (Recharges after a Short or Long Rest)"}},
"weretiger": {Slug: "weretiger", Name: "Weretiger", Size: "medium", Type: "humanoid", CR: 4, XP: 1100, HP: 120, AC: 12, SpeedWalk: 30, STR: 17, DEX: 15, CON: 16, INT: 10, WIS: 13, CHA: 11, Attacks: []SRDStatAttack{{Name: "Bite (Tiger or Hybrid Form Only)", AttackBonus: 5, DamageDice: "1d10", DamageBonus: 3, AvgDamage: 8, DamageType: "piercing"}, {Name: "Claw (Tiger or Hybrid Form Only)", AttackBonus: 5, DamageDice: "1d8", DamageBonus: 3, AvgDamage: 7, DamageType: "slashing"}, {Name: "Scimitar (Humanoid or Hybrid Form Only)", AttackBonus: 5, DamageDice: "1d6", DamageBonus: 3, AvgDamage: 6, DamageType: "slashing"}, {Name: "Longbow (Humanoid or Hybrid Form Only)", AttackBonus: 4, DamageDice: "1d8", DamageBonus: 2, AvgDamage: 6, DamageType: "piercing"}}, Traits: []string{"Shapechanger", "Keen Hearing and Smell", "Pounce (Tiger or Hybrid Form Only)"}},
"air_elemental": {Slug: "air_elemental", Name: "Air Elemental", Size: "large", Type: "elemental", CR: 5, XP: 1800, HP: 90, AC: 15, SpeedWalk: 90, STR: 14, DEX: 20, CON: 14, INT: 6, WIS: 10, CHA: 6, Multiattack: "The elemental makes two slam attacks.", Attacks: []SRDStatAttack{{Name: "Slam", AttackBonus: 8, DamageDice: "2d8", DamageBonus: 5, AvgDamage: 14, DamageType: "bludgeoning"}}, Traits: []string{"Air Form"}},
"barbed_devil": {Slug: "barbed_devil", Name: "Barbed Devil", Size: "medium", Type: "fiend", CR: 5, XP: 1800, HP: 110, AC: 15, SpeedWalk: 30, STR: 16, DEX: 17, CON: 18, INT: 12, WIS: 14, CHA: 14, Multiattack: "The devil makes three melee attacks: one with its tail and two with its claws.", Attacks: []SRDStatAttack{{Name: "Claw", AttackBonus: 6, DamageDice: "1d6", DamageBonus: 3, AvgDamage: 6, DamageType: "piercing"}, {Name: "Tail", AttackBonus: 6, DamageDice: "2d6", DamageBonus: 3, AvgDamage: 10, DamageType: "piercing"}, {Name: "Hurl Flame", AttackBonus: 5, DamageDice: "3d6", DamageBonus: 0, AvgDamage: 10, DamageType: "fire"}}, Traits: []string{"Barbed Hide", "Devil's Sight", "Magic Resistance"}},
"bulette": {Slug: "bulette", Name: "Bulette", Size: "large", Type: "monstrosity", CR: 5, XP: 1800, HP: 94, AC: 17, SpeedWalk: 40, STR: 19, DEX: 11, CON: 21, INT: 2, WIS: 10, CHA: 5, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 7, DamageDice: "4d12", DamageBonus: 4, AvgDamage: 30, DamageType: "piercing"}}, Traits: []string{"Standing Leap"}},
"earth_elemental": {Slug: "earth_elemental", Name: "Earth Elemental", Size: "large", Type: "elemental", CR: 5, XP: 1800, HP: 126, AC: 17, SpeedWalk: 30, STR: 20, DEX: 8, CON: 20, INT: 5, WIS: 10, CHA: 5, Multiattack: "The elemental makes two slam attacks.", Attacks: []SRDStatAttack{{Name: "Slam", AttackBonus: 8, DamageDice: "2d8", DamageBonus: 5, AvgDamage: 14, DamageType: "bludgeoning"}}, Traits: []string{"Earth Glide", "Siege Monster"}},
"fire_elemental": {Slug: "fire_elemental", Name: "Fire Elemental", Size: "large", Type: "elemental", CR: 5, XP: 1800, HP: 102, AC: 13, SpeedWalk: 50, STR: 10, DEX: 17, CON: 16, INT: 6, WIS: 10, CHA: 7, Multiattack: "The elemental makes two touch attacks.", Attacks: []SRDStatAttack{{Name: "Touch", AttackBonus: 6, DamageDice: "2d6", DamageBonus: 3, AvgDamage: 10, DamageType: "fire"}}, Traits: []string{"Fire Form", "Illumination", "Water Susceptibility"}},
"flesh_golem": {Slug: "flesh_golem", Name: "Flesh Golem", Size: "medium", Type: "construct", CR: 5, XP: 1800, HP: 93, AC: 9, SpeedWalk: 30, STR: 19, DEX: 9, CON: 18, INT: 6, WIS: 10, CHA: 5, Multiattack: "The golem makes two slam attacks.", Attacks: []SRDStatAttack{{Name: "Slam", AttackBonus: 7, DamageDice: "2d8", DamageBonus: 4, AvgDamage: 13, DamageType: "bludgeoning"}}, Traits: []string{"Berserk", "Aversion of Fire", "Immutable Form", "Lightning Absorption", "Magic Resistance", "Magic Weapons"}},
"giant_crocodile": {Slug: "giant_crocodile", Name: "Giant Crocodile", Size: "huge", Type: "beast", CR: 5, XP: 1800, HP: 85, AC: 14, SpeedWalk: 30, STR: 21, DEX: 9, CON: 17, INT: 2, WIS: 10, CHA: 7, Multiattack: "The crocodile makes two attacks: one with its bite and one with its tail.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 8, DamageDice: "3d10", DamageBonus: 5, AvgDamage: 21, DamageType: "piercing"}, {Name: "Tail", AttackBonus: 8, DamageDice: "2d8", DamageBonus: 5, AvgDamage: 14, DamageType: "bludgeoning"}}, Traits: []string{"Hold Breath"}},
"giant_shark": {Slug: "giant_shark", Name: "Giant Shark", Size: "huge", Type: "beast", CR: 5, XP: 1800, HP: 126, AC: 13, SpeedWalk: 50, STR: 23, DEX: 11, CON: 21, INT: 1, WIS: 10, CHA: 5, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 9, DamageDice: "3d10", DamageBonus: 6, AvgDamage: 22, DamageType: "piercing"}}, Traits: []string{"Blood Frenzy", "Water Breathing"}},
"gladiator": {Slug: "gladiator", Name: "Gladiator", Size: "medium", Type: "humanoid", CR: 5, XP: 1800, HP: 112, AC: 16, SpeedWalk: 30, STR: 18, DEX: 15, CON: 16, INT: 10, WIS: 12, CHA: 15, Multiattack: "The gladiator makes three melee attacks or two ranged attacks.", Attacks: []SRDStatAttack{{Name: "Spear", AttackBonus: 7, DamageDice: "2d6", DamageBonus: 4, AvgDamage: 11, DamageType: "piercing"}, {Name: "Shield Bash", AttackBonus: 7, DamageDice: "2d4", DamageBonus: 4, AvgDamage: 9, DamageType: "bludgeoning"}}, Traits: []string{"Brave", "Brute"}},
"gorgon": {Slug: "gorgon", Name: "Gorgon", Size: "large", Type: "monstrosity", CR: 5, XP: 1800, HP: 114, AC: 19, SpeedWalk: 40, STR: 20, DEX: 11, CON: 18, INT: 2, WIS: 12, CHA: 7, Attacks: []SRDStatAttack{{Name: "Gore", AttackBonus: 8, DamageDice: "2d12", DamageBonus: 5, AvgDamage: 18, DamageType: "piercing"}, {Name: "Hooves", AttackBonus: 8, DamageDice: "2d10", DamageBonus: 5, AvgDamage: 16, DamageType: "bludgeoning"}}, Traits: []string{"Trampling Charge"}},
"half_red_dragon_veteran": {Slug: "half_red_dragon_veteran", Name: "Half-Red Dragon Veteran", Size: "medium", Type: "humanoid", CR: 5, XP: 1800, HP: 65, AC: 18, SpeedWalk: 30, STR: 16, DEX: 13, CON: 14, INT: 10, WIS: 11, CHA: 10, Multiattack: "The veteran makes two longsword attacks.", Attacks: []SRDStatAttack{{Name: "Longsword", AttackBonus: 5, DamageDice: "1d8", DamageBonus: 3, AvgDamage: 7, DamageType: "slashing"}, {Name: "Shortsword", AttackBonus: 5, DamageDice: "1d6", DamageBonus: 3, AvgDamage: 6, DamageType: "piercing"}, {Name: "Heavy Crossbow", AttackBonus: 3, DamageDice: "1d10", DamageBonus: 1, AvgDamage: 6, DamageType: "piercing"}, {Name: "Fire Breath (Recharge 5-6)", AttackBonus: 0, DamageDice: "7d6", DamageBonus: 0, AvgDamage: 24, DamageType: "fire"}}},
"hill_giant": {Slug: "hill_giant", Name: "Hill Giant", Size: "huge", Type: "giant", CR: 5, XP: 1800, HP: 105, AC: 13, SpeedWalk: 40, STR: 21, DEX: 8, CON: 19, INT: 5, WIS: 9, CHA: 6, Multiattack: "The giant makes two greatclub attacks.", Attacks: []SRDStatAttack{{Name: "Greatclub", AttackBonus: 8, DamageDice: "3d8", DamageBonus: 5, AvgDamage: 18, DamageType: "bludgeoning"}, {Name: "Rock", AttackBonus: 8, DamageDice: "3d10", DamageBonus: 5, AvgDamage: 21, DamageType: "bludgeoning"}}},
"night_hag": {Slug: "night_hag", Name: "Night Hag", Size: "medium", Type: "fiend", CR: 5, XP: 1800, HP: 112, AC: 17, SpeedWalk: 30, STR: 18, DEX: 15, CON: 16, INT: 16, WIS: 14, CHA: 16, Attacks: []SRDStatAttack{{Name: "Claws (Hag Form Only)", AttackBonus: 7, DamageDice: "2d8", DamageBonus: 4, AvgDamage: 13, DamageType: "slashing"}}, Traits: []string{"Innate Spellcasting", "Magic Resistance", "Night Hag Items", "Hag Coven", "Shared Spellcasting (Coven Only)", "Hag Eye (Coven Only)"}},
"otyugh": {Slug: "otyugh", Name: "Otyugh", Size: "large", Type: "aberration", CR: 5, XP: 1800, HP: 114, AC: 14, SpeedWalk: 30, STR: 16, DEX: 11, CON: 19, INT: 6, WIS: 13, CHA: 6, Multiattack: "The otyugh makes three attacks: one with its bite and two with its tentacles.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 6, DamageDice: "2d8", DamageBonus: 3, AvgDamage: 12, DamageType: "piercing"}, {Name: "Tentacle", AttackBonus: 6, DamageDice: "1d8", DamageBonus: 3, AvgDamage: 7, DamageType: "bludgeoning"}}, Traits: []string{"Limited Telepathy"}},
"roper": {Slug: "roper", Name: "Roper", Size: "large", Type: "monstrosity", CR: 5, XP: 1800, HP: 93, AC: 20, SpeedWalk: 10, STR: 18, DEX: 8, CON: 17, INT: 7, WIS: 16, CHA: 6, Multiattack: "The roper makes four attacks with its tendrils, uses Reel, and makes one attack with its bite.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 7, DamageDice: "4d8", DamageBonus: 4, AvgDamage: 22, DamageType: "piercing"}}, Traits: []string{"False Appearance", "Grasping Tendrils", "Spider Climb"}},
"salamander": {Slug: "salamander", Name: "Salamander", Size: "large", Type: "elemental", CR: 5, XP: 1800, HP: 90, AC: 15, SpeedWalk: 30, STR: 18, DEX: 14, CON: 15, INT: 11, WIS: 10, CHA: 12, Multiattack: "The salamander makes two attacks: one with its spear and one with its tail.", Attacks: []SRDStatAttack{{Name: "Spear", AttackBonus: 7, DamageDice: "2d6", DamageBonus: 4, AvgDamage: 11, DamageType: "piercing"}, {Name: "Tail", AttackBonus: 7, DamageDice: "2d6+2d6", DamageBonus: 4, AvgDamage: 4, DamageType: "bludgeoning"}}, Traits: []string{"Heated Body", "Heated Weapons"}},
"shambling_mound": {Slug: "shambling_mound", Name: "Shambling Mound", Size: "large", Type: "plant", CR: 5, XP: 1800, HP: 136, AC: 15, SpeedWalk: 20, STR: 18, DEX: 8, CON: 16, INT: 5, WIS: 10, CHA: 5, Multiattack: "The shambling mound makes two slam attacks.", Attacks: []SRDStatAttack{{Name: "Slam", AttackBonus: 7, DamageDice: "2d8", DamageBonus: 4, AvgDamage: 13, DamageType: "bludgeoning"}}, Traits: []string{"Lightning Absorption"}},
"triceratops": {Slug: "triceratops", Name: "Triceratops", Size: "huge", Type: "beast", CR: 5, XP: 1800, HP: 95, AC: 13, SpeedWalk: 50, STR: 22, DEX: 9, CON: 17, INT: 2, WIS: 11, CHA: 5, Attacks: []SRDStatAttack{{Name: "Gore", AttackBonus: 9, DamageDice: "4d8", DamageBonus: 6, AvgDamage: 24, DamageType: "piercing"}, {Name: "Stomp", AttackBonus: 9, DamageDice: "3d10", DamageBonus: 6, AvgDamage: 22, DamageType: "bludgeoning"}}, Traits: []string{"Trampling Charge"}},
"troll": {Slug: "troll", Name: "Troll", Size: "large", Type: "giant", CR: 5, XP: 1800, HP: 84, AC: 15, SpeedWalk: 30, STR: 18, DEX: 13, CON: 20, INT: 7, WIS: 9, CHA: 7, Multiattack: "The troll makes three attacks: one with its bite and two with its claws.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 7, DamageDice: "1d6", DamageBonus: 4, AvgDamage: 7, DamageType: "piercing"}, {Name: "Claw", AttackBonus: 7, DamageDice: "2d6", DamageBonus: 4, AvgDamage: 11, DamageType: "slashing"}}, Traits: []string{"Keen Smell", "Regeneration", "Variant: Loathsome Limbs"}},
"unicorn": {Slug: "unicorn", Name: "Unicorn", Size: "large", Type: "celestial", CR: 5, XP: 1800, HP: 67, AC: 12, SpeedWalk: 50, STR: 18, DEX: 14, CON: 15, INT: 11, WIS: 17, CHA: 16, Multiattack: "The unicorn makes two attacks: one with its hooves and one with its horn.", Attacks: []SRDStatAttack{{Name: "Hooves", AttackBonus: 7, DamageDice: "2d6", DamageBonus: 4, AvgDamage: 11, DamageType: "bludgeoning"}, {Name: "Horn", AttackBonus: 7, DamageDice: "1d8", DamageBonus: 4, AvgDamage: 8, DamageType: "piercing"}}, Traits: []string{"Charge", "Innate Spellcasting", "Magic Resistance", "Magic Weapons"}, Legendary: true},
"vampire_spawn": {Slug: "vampire_spawn", Name: "Vampire Spawn", Size: "medium", Type: "undead", CR: 5, XP: 1800, HP: 82, AC: 15, SpeedWalk: 30, STR: 16, DEX: 16, CON: 16, INT: 11, WIS: 10, CHA: 12, Multiattack: "The vampire makes two attacks, only one of which can be a bite attack.", Attacks: []SRDStatAttack{{Name: "Claws", AttackBonus: 6, DamageDice: "2d4", DamageBonus: 3, AvgDamage: 8, DamageType: "slashing"}}, Traits: []string{"Regeneration", "Spider Climb", "Vampire Weaknesses"}},
"water_elemental": {Slug: "water_elemental", Name: "Water Elemental", Size: "large", Type: "elemental", CR: 5, XP: 1800, HP: 114, AC: 14, SpeedWalk: 30, STR: 18, DEX: 14, CON: 18, INT: 5, WIS: 10, CHA: 8, Multiattack: "The elemental makes two slam attacks.", Attacks: []SRDStatAttack{{Name: "Slam", AttackBonus: 7, DamageDice: "2d8", DamageBonus: 4, AvgDamage: 13, DamageType: "bludgeoning"}}, Traits: []string{"Water Form", "Freeze"}},
"werebear": {Slug: "werebear", Name: "Werebear", Size: "medium", Type: "humanoid", CR: 5, XP: 1800, HP: 135, AC: 10, SpeedWalk: 30, STR: 19, DEX: 10, CON: 17, INT: 11, WIS: 12, CHA: 12, Multiattack: "In bear form, the werebear makes two claw attacks.", Attacks: []SRDStatAttack{{Name: "Bite (Bear or Hybrid Form Only)", AttackBonus: 7, DamageDice: "2d10", DamageBonus: 4, AvgDamage: 15, DamageType: "piercing"}, {Name: "Claw (Bear or Hybrid Form Only)", AttackBonus: 7, DamageDice: "2d8", DamageBonus: 4, AvgDamage: 13, DamageType: "slashing"}, {Name: "Greataxe (Humanoid or Hybrid Form Only)", AttackBonus: 7, DamageDice: "1d12", DamageBonus: 4, AvgDamage: 10, DamageType: "slashing"}}, Traits: []string{"Shapechanger", "Keen Smell"}},
"wraith": {Slug: "wraith", Name: "Wraith", Size: "medium", Type: "undead", CR: 5, XP: 1800, HP: 67, AC: 13, SpeedWalk: 60, STR: 6, DEX: 16, CON: 16, INT: 12, WIS: 14, CHA: 15, Attacks: []SRDStatAttack{{Name: "Life Drain", AttackBonus: 6, DamageDice: "4d8", DamageBonus: 3, AvgDamage: 21, DamageType: "necrotic"}}, Traits: []string{"Incorporeal Movement", "Sunlight Sensitivity"}},
"xorn": {Slug: "xorn", Name: "Xorn", Size: "medium", Type: "elemental", CR: 5, XP: 1800, HP: 73, AC: 19, SpeedWalk: 20, STR: 17, DEX: 10, CON: 22, INT: 11, WIS: 10, CHA: 11, Multiattack: "The xorn makes three claw attacks and one bite attack.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 6, DamageDice: "3d6", DamageBonus: 3, AvgDamage: 13, DamageType: "piercing"}, {Name: "Claw", AttackBonus: 6, DamageDice: "1d6", DamageBonus: 3, AvgDamage: 6, DamageType: "slashing"}}, Traits: []string{"Earth Glide", "Stone Camouflage", "Treasure Sense"}},
"chimera": {Slug: "chimera", Name: "Chimera", Size: "large", Type: "monstrosity", CR: 6, XP: 2300, HP: 114, AC: 14, SpeedWalk: 30, STR: 19, DEX: 11, CON: 19, INT: 3, WIS: 14, CHA: 10, Multiattack: "The chimera makes three attacks: one with its bite, one with its horns, and one with its claws.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 7, DamageDice: "2d6", DamageBonus: 4, AvgDamage: 11, DamageType: "piercing"}, {Name: "Horns", AttackBonus: 7, DamageDice: "1d12", DamageBonus: 4, AvgDamage: 10, DamageType: "bludgeoning"}, {Name: "Claws", AttackBonus: 7, DamageDice: "2d6", DamageBonus: 4, AvgDamage: 11, DamageType: "slashing"}, {Name: "Fire Breath (Recharge 5-6)", AttackBonus: 0, DamageDice: "7d8", DamageBonus: 0, AvgDamage: 31, DamageType: "fire"}}},
"drider": {Slug: "drider", Name: "Drider", Size: "large", Type: "monstrosity", CR: 6, XP: 2300, HP: 123, AC: 19, SpeedWalk: 30, STR: 16, DEX: 16, CON: 18, INT: 13, WIS: 14, CHA: 12, Multiattack: "The drider makes three attacks, either with its longsword or its longbow.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 6, DamageDice: "1d4", DamageBonus: 2, AvgDamage: 4, DamageType: "piercing"}, {Name: "Longsword", AttackBonus: 6, DamageDice: "1d8", DamageBonus: 3, AvgDamage: 7, DamageType: "slashing"}, {Name: "Longbow", AttackBonus: 6, DamageDice: "1d8", DamageBonus: 3, AvgDamage: 7, DamageType: "piercing"}}, Traits: []string{"Fey Ancestry", "Innate Spellcasting", "Spider Climb", "Sunlight Sensitivity", "Web Walker"}},
"invisible_stalker": {Slug: "invisible_stalker", Name: "Invisible Stalker", Size: "medium", Type: "elemental", CR: 6, XP: 2300, HP: 104, AC: 14, SpeedWalk: 50, STR: 16, DEX: 19, CON: 14, INT: 10, WIS: 15, CHA: 11, Multiattack: "The stalker makes two slam attacks.", Attacks: []SRDStatAttack{{Name: "Slam", AttackBonus: 6, DamageDice: "2d6", DamageBonus: 3, AvgDamage: 10, DamageType: "bludgeoning"}}, Traits: []string{"Invisibility", "Faultless Tracker"}},
"mage": {Slug: "mage", Name: "Mage", Size: "medium", Type: "humanoid", CR: 6, XP: 2300, HP: 40, AC: 12, SpeedWalk: 30, STR: 9, DEX: 14, CON: 11, INT: 17, WIS: 12, CHA: 11, Attacks: []SRDStatAttack{{Name: "Dagger", AttackBonus: 5, DamageDice: "1d4", DamageBonus: 2, AvgDamage: 4, DamageType: "piercing"}}, Traits: []string{"Spellcasting"}},
"mammoth": {Slug: "mammoth", Name: "Mammoth", Size: "huge", Type: "beast", CR: 6, XP: 2300, HP: 126, AC: 13, SpeedWalk: 40, STR: 24, DEX: 9, CON: 21, INT: 3, WIS: 11, CHA: 6, Attacks: []SRDStatAttack{{Name: "Gore", AttackBonus: 10, DamageDice: "4d8", DamageBonus: 7, AvgDamage: 25, DamageType: "piercing"}, {Name: "Stomp", AttackBonus: 10, DamageDice: "4d10", DamageBonus: 7, AvgDamage: 29, DamageType: "bludgeoning"}}, Traits: []string{"Trampling Charge"}},
"medusa": {Slug: "medusa", Name: "Medusa", Size: "medium", Type: "monstrosity", CR: 6, XP: 2300, HP: 127, AC: 15, SpeedWalk: 30, STR: 10, DEX: 15, CON: 16, INT: 12, WIS: 13, CHA: 15, Multiattack: "The medusa makes either three melee attacks - one with its snake hair and two with its shortsword - or two ranged attacks with its longbow.", Attacks: []SRDStatAttack{{Name: "Snake Hair", AttackBonus: 5, DamageDice: "1d4", DamageBonus: 2, AvgDamage: 4, DamageType: "piercing"}, {Name: "Shortsword", AttackBonus: 5, DamageDice: "1d6", DamageBonus: 2, AvgDamage: 5, DamageType: "piercing"}, {Name: "Longbow", AttackBonus: 5, DamageDice: "2d6", DamageBonus: 0, AvgDamage: 7, DamageType: "piercing"}}, Traits: []string{"Petrifying Gaze"}},
"vrock": {Slug: "vrock", Name: "Vrock", Size: "large", Type: "fiend", CR: 6, XP: 2300, HP: 104, AC: 15, SpeedWalk: 40, STR: 17, DEX: 15, CON: 18, INT: 8, WIS: 13, CHA: 8, Multiattack: "The vrock makes two attacks: one with its beak and one with its talons.", Attacks: []SRDStatAttack{{Name: "Beak", AttackBonus: 6, DamageDice: "2d6", DamageBonus: 3, AvgDamage: 10, DamageType: "piercing"}, {Name: "Talons", AttackBonus: 6, DamageDice: "2d10", DamageBonus: 3, AvgDamage: 14, DamageType: "slashing"}}, Traits: []string{"Magic Resistance"}},
"wyvern": {Slug: "wyvern", Name: "Wyvern", Size: "large", Type: "dragon", CR: 6, XP: 2300, HP: 110, AC: 13, SpeedWalk: 20, STR: 19, DEX: 10, CON: 16, INT: 5, WIS: 12, CHA: 6, Multiattack: "The wyvern makes two attacks: one with its bite and one with its stinger.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 7, DamageDice: "2d6", DamageBonus: 4, AvgDamage: 11, DamageType: "piercing"}, {Name: "Claws", AttackBonus: 7, DamageDice: "2d8", DamageBonus: 4, AvgDamage: 13, DamageType: "slashing"}, {Name: "Stinger", AttackBonus: 7, DamageDice: "2d6", DamageBonus: 4, AvgDamage: 11, DamageType: "piercing"}}},
"young_brass_dragon": {Slug: "young_brass_dragon", Name: "Young Brass Dragon", Size: "large", Type: "dragon", CR: 6, XP: 2300, HP: 110, AC: 17, SpeedWalk: 40, STR: 19, DEX: 10, CON: 17, INT: 12, WIS: 11, CHA: 15, Multiattack: "The dragon makes three attacks: one with its bite and two with its claws.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 7, DamageDice: "2d10", DamageBonus: 4, AvgDamage: 15, DamageType: "piercing"}, {Name: "Claw", AttackBonus: 7, DamageDice: "2d6", DamageBonus: 4, AvgDamage: 11, DamageType: "slashing"}, {Name: "Breath Weapons (Recharge 5-6)", AttackBonus: 0, DamageDice: "12d6", DamageBonus: 0, AvgDamage: 42, DamageType: "fire"}}},
"young_white_dragon": {Slug: "young_white_dragon", Name: "Young White Dragon", Size: "large", Type: "dragon", CR: 6, XP: 2300, HP: 133, AC: 17, SpeedWalk: 40, STR: 18, DEX: 10, CON: 18, INT: 6, WIS: 11, CHA: 12, Multiattack: "The dragon makes three attacks: one with its bite and two with its claws.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 7, DamageDice: "2d10+1d8", DamageBonus: 4, AvgDamage: 4, DamageType: "piercing"}, {Name: "Claw", AttackBonus: 7, DamageDice: "2d6", DamageBonus: 4, AvgDamage: 11, DamageType: "slashing"}, {Name: "Cold Breath (Recharge 5-6)", AttackBonus: 0, DamageDice: "10d8", DamageBonus: 0, AvgDamage: 45, DamageType: "cold"}}, Traits: []string{"Ice Walk"}},
"giant_ape": {Slug: "giant_ape", Name: "Giant Ape", Size: "huge", Type: "beast", CR: 7, XP: 2900, HP: 157, AC: 12, SpeedWalk: 40, STR: 23, DEX: 14, CON: 18, INT: 7, WIS: 12, CHA: 7, Multiattack: "The ape makes two fist attacks.", Attacks: []SRDStatAttack{{Name: "Fist", AttackBonus: 9, DamageDice: "3d10", DamageBonus: 6, AvgDamage: 22, DamageType: "bludgeoning"}, {Name: "Rock", AttackBonus: 9, DamageDice: "7d6", DamageBonus: 6, AvgDamage: 30, DamageType: "bludgeoning"}}},
"oni": {Slug: "oni", Name: "Oni", Size: "large", Type: "giant", CR: 7, XP: 2900, HP: 110, AC: 16, SpeedWalk: 30, STR: 19, DEX: 11, CON: 16, INT: 14, WIS: 12, CHA: 15, Multiattack: "The oni makes two attacks, either with its claws or its glaive.", Attacks: []SRDStatAttack{{Name: "Claw (Oni Form Only)", AttackBonus: 7, DamageDice: "1d8", DamageBonus: 4, AvgDamage: 8, DamageType: "slashing"}, {Name: "Glaive", AttackBonus: 7, DamageDice: "2d10", DamageBonus: 4, AvgDamage: 15, DamageType: "slashing"}}, Traits: []string{"Innate Spellcasting", "Magic Weapons", "Regeneration"}},
"shield_guardian": {Slug: "shield_guardian", Name: "Shield Guardian", Size: "large", Type: "construct", CR: 7, XP: 2900, HP: 142, AC: 17, SpeedWalk: 30, STR: 18, DEX: 8, CON: 18, INT: 7, WIS: 10, CHA: 3, Multiattack: "The guardian makes two fist attacks.", Attacks: []SRDStatAttack{{Name: "Fist", AttackBonus: 7, DamageDice: "2d6", DamageBonus: 4, AvgDamage: 11, DamageType: "bludgeoning"}}, Traits: []string{"Bound", "Regeneration", "Spell Storing"}},
"stone_giant": {Slug: "stone_giant", Name: "Stone Giant", Size: "huge", Type: "giant", CR: 7, XP: 2900, HP: 126, AC: 17, SpeedWalk: 40, STR: 23, DEX: 15, CON: 20, INT: 10, WIS: 12, CHA: 9, Multiattack: "The giant makes two greatclub attacks.", Attacks: []SRDStatAttack{{Name: "Greatclub", AttackBonus: 9, DamageDice: "3d8", DamageBonus: 6, AvgDamage: 19, DamageType: "bludgeoning"}, {Name: "Rock", AttackBonus: 9, DamageDice: "4d10", DamageBonus: 6, AvgDamage: 28, DamageType: "bludgeoning"}}, Traits: []string{"Stone Camouflage"}},
"young_black_dragon": {Slug: "young_black_dragon", Name: "Young Black Dragon", Size: "large", Type: "dragon", CR: 7, XP: 2900, HP: 127, AC: 18, SpeedWalk: 40, STR: 19, DEX: 14, CON: 17, INT: 12, WIS: 11, CHA: 15, Multiattack: "The dragon makes three attacks: one with its bite and two with its claws.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 7, DamageDice: "2d10+1d8", DamageBonus: 4, AvgDamage: 4, DamageType: "piercing"}, {Name: "Claw", AttackBonus: 7, DamageDice: "2d6", DamageBonus: 4, AvgDamage: 11, DamageType: "slashing"}, {Name: "Acid Breath (Recharge 5-6)", AttackBonus: 0, DamageDice: "11d8", DamageBonus: 0, AvgDamage: 49, DamageType: "acid"}}, Traits: []string{"Amphibious"}},
"young_copper_dragon": {Slug: "young_copper_dragon", Name: "Young Copper Dragon", Size: "large", Type: "dragon", CR: 7, XP: 2900, HP: 119, AC: 17, SpeedWalk: 40, STR: 19, DEX: 12, CON: 17, INT: 16, WIS: 13, CHA: 15, Multiattack: "The dragon makes three attacks: one with its bite and two with its claws.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 7, DamageDice: "2d10", DamageBonus: 4, AvgDamage: 15, DamageType: "piercing"}, {Name: "Claw", AttackBonus: 7, DamageDice: "2d6", DamageBonus: 4, AvgDamage: 11, DamageType: "slashing"}, {Name: "Breath Weapons (Recharge 5-6)", AttackBonus: 0, DamageDice: "9d8", DamageBonus: 0, AvgDamage: 40, DamageType: "acid"}}},
"assassin": {Slug: "assassin", Name: "Assassin", Size: "medium", Type: "humanoid", CR: 8, XP: 3900, HP: 78, AC: 15, SpeedWalk: 30, STR: 11, DEX: 16, CON: 14, INT: 13, WIS: 11, CHA: 10, Multiattack: "The assassin makes two shortsword attacks.", Attacks: []SRDStatAttack{{Name: "Shortsword", AttackBonus: 6, DamageDice: "1d6", DamageBonus: 3, AvgDamage: 6, DamageType: "piercing"}, {Name: "Light Crossbow", AttackBonus: 6, DamageDice: "1d8", DamageBonus: 3, AvgDamage: 7, DamageType: "piercing"}}, Traits: []string{"Assassinate", "Evasion", "Sneak Attack (1/Turn)"}},
"cloaker": {Slug: "cloaker", Name: "Cloaker", Size: "large", Type: "aberration", CR: 8, XP: 3900, HP: 78, AC: 14, SpeedWalk: 10, STR: 17, DEX: 15, CON: 12, INT: 13, WIS: 12, CHA: 14, Multiattack: "The cloaker makes two attacks: one with its bite and one with its tail.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 6, DamageDice: "2d6", DamageBonus: 3, AvgDamage: 10, DamageType: "piercing"}, {Name: "Tail", AttackBonus: 6, DamageDice: "1d8", DamageBonus: 3, AvgDamage: 7, DamageType: "slashing"}}, Traits: []string{"Damage Transfer", "False Appearance", "Light Sensitivity"}},
"frost_giant": {Slug: "frost_giant", Name: "Frost Giant", Size: "huge", Type: "giant", CR: 8, XP: 3900, HP: 138, AC: 15, SpeedWalk: 40, STR: 23, DEX: 9, CON: 21, INT: 9, WIS: 10, CHA: 12, Multiattack: "The giant makes two greataxe attacks.", Attacks: []SRDStatAttack{{Name: "Greataxe", AttackBonus: 9, DamageDice: "3d12", DamageBonus: 6, AvgDamage: 25, DamageType: "slashing"}, {Name: "Rock", AttackBonus: 9, DamageDice: "4d10", DamageBonus: 6, AvgDamage: 28, DamageType: "bludgeoning"}}},
"hezrou": {Slug: "hezrou", Name: "Hezrou", Size: "large", Type: "fiend", CR: 8, XP: 3900, HP: 136, AC: 16, SpeedWalk: 30, STR: 19, DEX: 17, CON: 20, INT: 5, WIS: 12, CHA: 13, Multiattack: "The hezrou makes three attacks: one with its bite and two with its claws.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 7, DamageDice: "2d10", DamageBonus: 4, AvgDamage: 15, DamageType: "piercing"}, {Name: "Claws", AttackBonus: 7, DamageDice: "2d6", DamageBonus: 4, AvgDamage: 11, DamageType: "slashing"}}, Traits: []string{"Magic Resistance", "Stench"}},
"hydra": {Slug: "hydra", Name: "Hydra", Size: "huge", Type: "monstrosity", CR: 8, XP: 3900, HP: 172, AC: 15, SpeedWalk: 30, STR: 20, DEX: 12, CON: 20, INT: 2, WIS: 10, CHA: 7, Multiattack: "The hydra makes as many bite attacks as it has heads.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 8, DamageDice: "1d10", DamageBonus: 5, AvgDamage: 10, DamageType: "piercing"}}, Traits: []string{"Hold Breath", "Multiple Heads", "Reactive Heads", "Wakeful"}},
"spirit_naga": {Slug: "spirit_naga", Name: "Spirit Naga", Size: "large", Type: "monstrosity", CR: 8, XP: 3900, HP: 75, AC: 15, SpeedWalk: 40, STR: 18, DEX: 17, CON: 14, INT: 16, WIS: 15, CHA: 16, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 7, DamageDice: "1d6", DamageBonus: 4, AvgDamage: 7, DamageType: "piercing"}}, Traits: []string{"Rejuvenation", "Spellcasting"}},
"tyrannosaurus_rex": {Slug: "tyrannosaurus_rex", Name: "Tyrannosaurus Rex", Size: "huge", Type: "beast", CR: 8, XP: 3900, HP: 136, AC: 13, SpeedWalk: 50, STR: 25, DEX: 10, CON: 19, INT: 2, WIS: 12, CHA: 9, Multiattack: "The tyrannosaurus makes two attacks: one with its bite and one with its tail.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 10, DamageDice: "4d12", DamageBonus: 7, AvgDamage: 33, DamageType: "piercing"}, {Name: "Tail", AttackBonus: 10, DamageDice: "3d8", DamageBonus: 7, AvgDamage: 20, DamageType: "bludgeoning"}}},
"young_bronze_dragon": {Slug: "young_bronze_dragon", Name: "Young Bronze Dragon", Size: "large", Type: "dragon", CR: 8, XP: 3900, HP: 142, AC: 18, SpeedWalk: 40, STR: 21, DEX: 10, CON: 19, INT: 14, WIS: 13, CHA: 17, Multiattack: "The dragon makes three attacks: one with its bite and two with its claws.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 8, DamageDice: "2d10", DamageBonus: 5, AvgDamage: 16, DamageType: "piercing"}, {Name: "Claw", AttackBonus: 8, DamageDice: "2d6", DamageBonus: 5, AvgDamage: 12, DamageType: "slashing"}, {Name: "Breath Weapons (Recharge 5-6)", AttackBonus: 0, DamageDice: "10d10", DamageBonus: 0, AvgDamage: 55, DamageType: "lightning"}}, Traits: []string{"Amphibious"}},
"young_green_dragon": {Slug: "young_green_dragon", Name: "Young Green Dragon", Size: "large", Type: "dragon", CR: 8, XP: 3900, HP: 136, AC: 18, SpeedWalk: 40, STR: 19, DEX: 12, CON: 17, INT: 16, WIS: 13, CHA: 15, Multiattack: "The dragon makes three attacks: one with its bite and two with its claws.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 7, DamageDice: "2d10+2d6", DamageBonus: 4, AvgDamage: 4, DamageType: "piercing"}, {Name: "Claw", AttackBonus: 7, DamageDice: "2d6", DamageBonus: 4, AvgDamage: 11, DamageType: "slashing"}, {Name: "Poison Breath (Recharge 5-6)", AttackBonus: 0, DamageDice: "12d6", DamageBonus: 0, AvgDamage: 42, DamageType: "poison"}}, Traits: []string{"Amphibious"}},
"bone_devil": {Slug: "bone_devil", Name: "Bone Devil", Size: "large", Type: "fiend", CR: 9, XP: 5000, HP: 142, AC: 19, SpeedWalk: 40, STR: 18, DEX: 16, CON: 18, INT: 13, WIS: 14, CHA: 16, Multiattack: "The devil makes three attacks: two with its claws and one with its sting.", Attacks: []SRDStatAttack{{Name: "Claw", AttackBonus: 8, DamageDice: "1d8", DamageBonus: 4, AvgDamage: 8, DamageType: "slashing"}, {Name: "Sting", AttackBonus: 8, DamageDice: "2d8", DamageBonus: 4, AvgDamage: 13, DamageType: "piercing"}}, Traits: []string{"Devil's Sight", "Magic Resistance"}},
"clay_golem": {Slug: "clay_golem", Name: "Clay Golem", Size: "large", Type: "construct", CR: 9, XP: 5000, HP: 133, AC: 14, SpeedWalk: 20, STR: 20, DEX: 9, CON: 18, INT: 3, WIS: 8, CHA: 1, Multiattack: "The golem makes two slam attacks.", Attacks: []SRDStatAttack{{Name: "Slam", AttackBonus: 8, DamageDice: "2d10", DamageBonus: 5, AvgDamage: 16, DamageType: "bludgeoning"}}, Traits: []string{"Acid Absorption", "Berserk", "Immutable Form", "Magic Resistance", "Magic Weapons"}},
"cloud_giant": {Slug: "cloud_giant", Name: "Cloud Giant", Size: "huge", Type: "giant", CR: 9, XP: 5000, HP: 200, AC: 14, SpeedWalk: 40, STR: 27, DEX: 10, CON: 22, INT: 12, WIS: 16, CHA: 16, Multiattack: "The giant makes two morningstar attacks.", Attacks: []SRDStatAttack{{Name: "Morningstar", AttackBonus: 12, DamageDice: "3d8", DamageBonus: 8, AvgDamage: 21, DamageType: "piercing"}, {Name: "Rock", AttackBonus: 12, DamageDice: "4d10", DamageBonus: 8, AvgDamage: 30, DamageType: "bludgeoning"}}, Traits: []string{"Keen Smell", "Innate Spellcasting"}},
"fire_giant": {Slug: "fire_giant", Name: "Fire Giant", Size: "huge", Type: "giant", CR: 9, XP: 5000, HP: 162, AC: 18, SpeedWalk: 30, STR: 25, DEX: 9, CON: 23, INT: 10, WIS: 14, CHA: 13, Multiattack: "The giant makes two greatsword attacks.", Attacks: []SRDStatAttack{{Name: "Greatsword", AttackBonus: 11, DamageDice: "6d6", DamageBonus: 7, AvgDamage: 28, DamageType: "slashing"}, {Name: "Rock", AttackBonus: 11, DamageDice: "4d10", DamageBonus: 7, AvgDamage: 29, DamageType: "bludgeoning"}}},
"glabrezu": {Slug: "glabrezu", Name: "Glabrezu", Size: "large", Type: "fiend", CR: 9, XP: 5000, HP: 157, AC: 17, SpeedWalk: 40, STR: 20, DEX: 15, CON: 21, INT: 19, WIS: 17, CHA: 16, Multiattack: "The glabrezu makes four attacks: two with its pincers and two with its fists.", Attacks: []SRDStatAttack{{Name: "Pincer", AttackBonus: 9, DamageDice: "2d10", DamageBonus: 5, AvgDamage: 16, DamageType: "bludgeoning"}, {Name: "Fist", AttackBonus: 9, DamageDice: "2d4", DamageBonus: 2, AvgDamage: 7, DamageType: "bludgeoning"}}, Traits: []string{"Innate Spellcasting", "Magic Resistance"}},
"treant": {Slug: "treant", Name: "Treant", Size: "huge", Type: "plant", CR: 9, XP: 5000, HP: 138, AC: 16, SpeedWalk: 30, STR: 23, DEX: 8, CON: 21, INT: 12, WIS: 16, CHA: 12, Multiattack: "The treant makes two slam attacks.", Attacks: []SRDStatAttack{{Name: "Slam", AttackBonus: 10, DamageDice: "3d6", DamageBonus: 6, AvgDamage: 16, DamageType: "bludgeoning"}, {Name: "Rock", AttackBonus: 10, DamageDice: "4d10", DamageBonus: 6, AvgDamage: 28, DamageType: "bludgeoning"}}, Traits: []string{"False Appearance", "Siege Monster"}},
"young_blue_dragon": {Slug: "young_blue_dragon", Name: "Young Blue Dragon", Size: "large", Type: "dragon", CR: 9, XP: 5000, HP: 152, AC: 18, SpeedWalk: 40, STR: 21, DEX: 10, CON: 19, INT: 14, WIS: 13, CHA: 17, Multiattack: "The dragon makes three attacks: one with its bite and two with its claws.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 9, DamageDice: "2d10+1d10", DamageBonus: 5, AvgDamage: 5, DamageType: "piercing"}, {Name: "Claw", AttackBonus: 9, DamageDice: "2d6", DamageBonus: 5, AvgDamage: 12, DamageType: "slashing"}, {Name: "Lightning Breath (Recharge 5-6)", AttackBonus: 0, DamageDice: "10d10", DamageBonus: 0, AvgDamage: 55, DamageType: "lightning"}}},
"young_silver_dragon": {Slug: "young_silver_dragon", Name: "Young Silver Dragon", Size: "large", Type: "dragon", CR: 9, XP: 5000, HP: 168, AC: 18, SpeedWalk: 40, STR: 23, DEX: 10, CON: 21, INT: 14, WIS: 11, CHA: 19, Multiattack: "The dragon makes three attacks: one with its bite and two with its claws.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 10, DamageDice: "2d10", DamageBonus: 6, AvgDamage: 17, DamageType: "piercing"}, {Name: "Claw", AttackBonus: 10, DamageDice: "2d6", DamageBonus: 6, AvgDamage: 13, DamageType: "slashing"}, {Name: "Breath Weapons (Recharge 5-6)", AttackBonus: 0, DamageDice: "12d8", DamageBonus: 0, AvgDamage: 54, DamageType: "cold"}}},
"aboleth": {Slug: "aboleth", Name: "Aboleth", Size: "large", Type: "aberration", CR: 10, XP: 5900, HP: 135, AC: 17, SpeedWalk: 10, STR: 21, DEX: 9, CON: 15, INT: 18, WIS: 15, CHA: 18, Multiattack: "The aboleth makes three tentacle attacks.", Attacks: []SRDStatAttack{{Name: "Tentacle", AttackBonus: 9, DamageDice: "2d6", DamageBonus: 5, AvgDamage: 12, DamageType: "bludgeoning"}, {Name: "Tail", AttackBonus: 9, DamageDice: "3d6", DamageBonus: 5, AvgDamage: 15, DamageType: "bludgeoning"}}, Traits: []string{"Amphibious", "Mucous Cloud", "Probing Telepathy"}, Legendary: true},
"deva": {Slug: "deva", Name: "Deva", Size: "medium", Type: "celestial", CR: 10, XP: 5900, HP: 136, AC: 17, SpeedWalk: 30, STR: 18, DEX: 18, CON: 18, INT: 17, WIS: 20, CHA: 20, Multiattack: "The deva makes two melee attacks.", Attacks: []SRDStatAttack{{Name: "Mace", AttackBonus: 8, DamageDice: "1d6+4d8", DamageBonus: 4, AvgDamage: 4, DamageType: "bludgeoning"}}, Traits: []string{"Angelic Weapons", "Innate Spellcasting", "Magic Resistance"}},
"guardian_naga": {Slug: "guardian_naga", Name: "Guardian Naga", Size: "large", Type: "monstrosity", CR: 10, XP: 5900, HP: 127, AC: 18, SpeedWalk: 40, STR: 19, DEX: 18, CON: 16, INT: 16, WIS: 19, CHA: 18, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 8, DamageDice: "1d8", DamageBonus: 4, AvgDamage: 8, DamageType: "piercing"}, {Name: "Spit Poison", AttackBonus: 8, DamageDice: "10d8", DamageBonus: 0, AvgDamage: 45, DamageType: "poison"}}, Traits: []string{"Rejuvenation", "Spellcasting"}},
"stone_golem": {Slug: "stone_golem", Name: "Stone Golem", Size: "large", Type: "construct", CR: 10, XP: 5900, HP: 178, AC: 17, SpeedWalk: 30, STR: 22, DEX: 9, CON: 20, INT: 3, WIS: 11, CHA: 1, Multiattack: "The golem makes two slam attacks.", Attacks: []SRDStatAttack{{Name: "Slam", AttackBonus: 10, DamageDice: "3d8", DamageBonus: 6, AvgDamage: 19, DamageType: "bludgeoning"}}, Traits: []string{"Immutable Form", "Magic Resistance", "Magic Weapons"}},
"young_gold_dragon": {Slug: "young_gold_dragon", Name: "Young Gold Dragon", Size: "large", Type: "dragon", CR: 10, XP: 5900, HP: 178, AC: 18, SpeedWalk: 40, STR: 23, DEX: 14, CON: 21, INT: 16, WIS: 13, CHA: 20, Multiattack: "The dragon makes three attacks: one with its bite and two with its claws.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 10, DamageDice: "2d10", DamageBonus: 6, AvgDamage: 17, DamageType: "piercing"}, {Name: "Claw", AttackBonus: 10, DamageDice: "2d6", DamageBonus: 6, AvgDamage: 13, DamageType: "slashing"}, {Name: "Breath Weapons (Recharge 5-6)", AttackBonus: 0, DamageDice: "10d10", DamageBonus: 0, AvgDamage: 55, DamageType: "fire"}}, Traits: []string{"Amphibious"}},
"young_red_dragon": {Slug: "young_red_dragon", Name: "Young Red Dragon", Size: "large", Type: "dragon", CR: 10, XP: 5900, HP: 178, AC: 18, SpeedWalk: 40, STR: 23, DEX: 10, CON: 21, INT: 14, WIS: 11, CHA: 19, Multiattack: "The dragon makes three attacks: one with its bite and two with its claws.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 10, DamageDice: "2d10+1d6", DamageBonus: 6, AvgDamage: 6, DamageType: "piercing"}, {Name: "Claw", AttackBonus: 10, DamageDice: "2d6", DamageBonus: 6, AvgDamage: 13, DamageType: "slashing"}, {Name: "Fire Breath (Recharge 5-6)", AttackBonus: 0, DamageDice: "16d6", DamageBonus: 0, AvgDamage: 56, DamageType: "fire"}}},
"behir": {Slug: "behir", Name: "Behir", Size: "huge", Type: "monstrosity", CR: 11, XP: 7200, HP: 168, AC: 17, SpeedWalk: 50, STR: 23, DEX: 16, CON: 18, INT: 7, WIS: 14, CHA: 12, Multiattack: "The behir makes two attacks: one with its bite and one to constrict.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 10, DamageDice: "3d10", DamageBonus: 6, AvgDamage: 22, DamageType: "piercing"}, {Name: "Constrict", AttackBonus: 10, DamageDice: "2d10+2d10", DamageBonus: 6, AvgDamage: 6, DamageType: "bludgeoning"}, {Name: "Lightning Breath (Recharge 5-6)", AttackBonus: 0, DamageDice: "12d10", DamageBonus: 0, AvgDamage: 66, DamageType: "lightning"}, {Name: "Swallow", AttackBonus: 0, DamageDice: "6d6", DamageBonus: 0, AvgDamage: 21, DamageType: "acid"}}},
"chain_devil": {Slug: "chain_devil", Name: "Chain Devil", Size: "medium", Type: "fiend", CR: 11, XP: 7200, HP: 85, AC: 16, SpeedWalk: 30, STR: 18, DEX: 15, CON: 18, INT: 11, WIS: 12, CHA: 14, Multiattack: "The devil makes two attacks with its chains.", Attacks: []SRDStatAttack{{Name: "Chain", AttackBonus: 8, DamageDice: "2d6", DamageBonus: 4, AvgDamage: 11, DamageType: "slashing"}}, Traits: []string{"Devil's Sight", "Magic Resistance"}},
"djinni": {Slug: "djinni", Name: "Djinni", Size: "large", Type: "elemental", CR: 11, XP: 7200, HP: 161, AC: 17, SpeedWalk: 30, STR: 21, DEX: 15, CON: 22, INT: 15, WIS: 16, CHA: 20, Multiattack: "The djinni makes three scimitar attacks.", Attacks: []SRDStatAttack{{Name: "Scimitar", AttackBonus: 9, DamageDice: "2d6+1d6", DamageBonus: 5, AvgDamage: 5, DamageType: "slashing"}}, Traits: []string{"Elemental Demise", "Innate Spellcasting", "Variant: Genie Powers"}},
"efreeti": {Slug: "efreeti", Name: "Efreeti", Size: "large", Type: "elemental", CR: 11, XP: 7200, HP: 200, AC: 17, SpeedWalk: 40, STR: 22, DEX: 12, CON: 24, INT: 16, WIS: 15, CHA: 16, Multiattack: "The efreeti makes two scimitar attacks or uses its Hurl Flame twice.", Attacks: []SRDStatAttack{{Name: "Scimitar", AttackBonus: 10, DamageDice: "2d6+2d6", DamageBonus: 6, AvgDamage: 6, DamageType: "slashing"}, {Name: "Hurl Flame", AttackBonus: 7, DamageDice: "5d6", DamageBonus: 0, AvgDamage: 17, DamageType: "fire"}}, Traits: []string{"Elemental Demise", "Innate Spellcasting", "Variant: Genie Powers"}},
"gynosphinx": {Slug: "gynosphinx", Name: "Gynosphinx", Size: "large", Type: "monstrosity", CR: 11, XP: 7200, HP: 136, AC: 17, SpeedWalk: 40, STR: 18, DEX: 15, CON: 16, INT: 18, WIS: 18, CHA: 18, Multiattack: "The sphinx makes two claw attacks.", Attacks: []SRDStatAttack{{Name: "Claw", AttackBonus: 9, DamageDice: "2d8", DamageBonus: 4, AvgDamage: 13, DamageType: "slashing"}}, Traits: []string{"Inscrutable", "Magic Weapons", "Spellcasting"}, Legendary: true},
"horned_devil": {Slug: "horned_devil", Name: "Horned Devil", Size: "large", Type: "fiend", CR: 11, XP: 7200, HP: 178, AC: 18, SpeedWalk: 20, STR: 22, DEX: 17, CON: 21, INT: 12, WIS: 16, CHA: 17, Multiattack: "The devil makes three melee attacks: two with its fork and one with its tail.", Attacks: []SRDStatAttack{{Name: "Fork", AttackBonus: 10, DamageDice: "2d8", DamageBonus: 6, AvgDamage: 15, DamageType: "piercing"}, {Name: "Tail", AttackBonus: 10, DamageDice: "1d8", DamageBonus: 6, AvgDamage: 10, DamageType: "piercing"}, {Name: "Hurl Flame", AttackBonus: 7, DamageDice: "4d6", DamageBonus: 0, AvgDamage: 14, DamageType: "fire"}}, Traits: []string{"Devil's Sight", "Magic Resistance"}},
"remorhaz": {Slug: "remorhaz", Name: "Remorhaz", Size: "huge", Type: "monstrosity", CR: 11, XP: 7200, HP: 195, AC: 17, SpeedWalk: 30, STR: 24, DEX: 13, CON: 21, INT: 4, WIS: 10, CHA: 5, Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 11, DamageDice: "6d10+3d6", DamageBonus: 7, AvgDamage: 7, DamageType: "piercing"}}, Traits: []string{"Heated Body"}},
"roc": {Slug: "roc", Name: "Roc", Size: "gargantuan", Type: "monstrosity", CR: 11, XP: 7200, HP: 248, AC: 15, SpeedWalk: 20, STR: 28, DEX: 10, CON: 20, INT: 3, WIS: 10, CHA: 9, Multiattack: "The roc makes two attacks: one with its beak and one with its talons.", Attacks: []SRDStatAttack{{Name: "Beak", AttackBonus: 13, DamageDice: "4d8", DamageBonus: 9, AvgDamage: 27, DamageType: "piercing"}, {Name: "Talons", AttackBonus: 13, DamageDice: "4d6", DamageBonus: 9, AvgDamage: 23, DamageType: "slashing"}}, Traits: []string{"Keen Sight"}},
"archmage": {Slug: "archmage", Name: "Archmage", Size: "medium", Type: "humanoid", CR: 12, XP: 8400, HP: 99, AC: 12, SpeedWalk: 30, STR: 10, DEX: 14, CON: 12, INT: 20, WIS: 15, CHA: 16, Attacks: []SRDStatAttack{{Name: "Dagger", AttackBonus: 6, DamageDice: "1d4", DamageBonus: 2, AvgDamage: 4, DamageType: "piercing"}}, Traits: []string{"Magic Resistance", "Spellcasting"}},
"erinyes": {Slug: "erinyes", Name: "Erinyes", Size: "medium", Type: "fiend", CR: 12, XP: 8400, HP: 153, AC: 18, SpeedWalk: 30, STR: 18, DEX: 16, CON: 18, INT: 14, WIS: 14, CHA: 18, Multiattack: "The erinyes makes three attacks", Attacks: []SRDStatAttack{{Name: "Longsword", AttackBonus: 8, DamageDice: "1d8+3d8", DamageBonus: 4, AvgDamage: 4, DamageType: "slashing"}, {Name: "Longbow", AttackBonus: 7, DamageDice: "1d8+3d8", DamageBonus: 3, AvgDamage: 3, DamageType: "piercing"}}, Traits: []string{"Hellish Weapons", "Magic Resistance"}},
"adult_brass_dragon": {Slug: "adult_brass_dragon", Name: "Adult Brass Dragon", Size: "huge", Type: "dragon", CR: 13, XP: 10000, HP: 172, AC: 18, SpeedWalk: 40, STR: 23, DEX: 10, CON: 21, INT: 14, WIS: 13, CHA: 17, Multiattack: "The dragon can use its Frightful Presence.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 11, DamageDice: "2d10", DamageBonus: 6, AvgDamage: 17, DamageType: "piercing"}, {Name: "Claw", AttackBonus: 11, DamageDice: "2d6", DamageBonus: 6, AvgDamage: 13, DamageType: "slashing"}, {Name: "Tail", AttackBonus: 11, DamageDice: "2d8", DamageBonus: 6, AvgDamage: 15, DamageType: "bludgeoning"}, {Name: "Breath Weapons (Recharge 5-6)", AttackBonus: 0, DamageDice: "13d6", DamageBonus: 0, AvgDamage: 45, DamageType: "fire"}}, Traits: []string{"Legendary Resistance (3/Day)"}, Legendary: true},
"adult_white_dragon": {Slug: "adult_white_dragon", Name: "Adult White Dragon", Size: "huge", Type: "dragon", CR: 13, XP: 10000, HP: 200, AC: 18, SpeedWalk: 40, STR: 22, DEX: 10, CON: 22, INT: 8, WIS: 12, CHA: 12, Multiattack: "The dragon can use its Frightful Presence.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 11, DamageDice: "2d10+1d8", DamageBonus: 6, AvgDamage: 6, DamageType: "piercing"}, {Name: "Claw", AttackBonus: 11, DamageDice: "2d6", DamageBonus: 6, AvgDamage: 13, DamageType: "slashing"}, {Name: "Tail", AttackBonus: 11, DamageDice: "2d8", DamageBonus: 6, AvgDamage: 15, DamageType: "bludgeoning"}, {Name: "Cold Breath (Recharge 5-6)", AttackBonus: 0, DamageDice: "12d8", DamageBonus: 0, AvgDamage: 54, DamageType: "cold"}}, Traits: []string{"Ice Walk", "Legendary Resistance (3/Day)"}, Legendary: true},
"nalfeshnee": {Slug: "nalfeshnee", Name: "Nalfeshnee", Size: "large", Type: "fiend", CR: 13, XP: 10000, HP: 184, AC: 18, SpeedWalk: 20, STR: 21, DEX: 10, CON: 22, INT: 19, WIS: 12, CHA: 15, Multiattack: "The nalfeshnee uses Horror Nimbus if it can.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 10, DamageDice: "5d10", DamageBonus: 5, AvgDamage: 32, DamageType: "piercing"}, {Name: "Claw", AttackBonus: 10, DamageDice: "3d6", DamageBonus: 5, AvgDamage: 15, DamageType: "slashing"}}, Traits: []string{"Magic Resistance"}},
"rakshasa": {Slug: "rakshasa", Name: "Rakshasa", Size: "medium", Type: "fiend", CR: 13, XP: 10000, HP: 110, AC: 16, SpeedWalk: 40, STR: 14, DEX: 17, CON: 18, INT: 13, WIS: 16, CHA: 20, Multiattack: "The rakshasa makes two claw attacks", Attacks: []SRDStatAttack{{Name: "Claw", AttackBonus: 7, DamageDice: "2d6", DamageBonus: 2, AvgDamage: 9, DamageType: "slashing"}}, Traits: []string{"Limited Magic Immunity", "Innate Spellcasting"}},
"storm_giant": {Slug: "storm_giant", Name: "Storm Giant", Size: "huge", Type: "giant", CR: 13, XP: 10000, HP: 230, AC: 16, SpeedWalk: 50, STR: 29, DEX: 14, CON: 20, INT: 16, WIS: 18, CHA: 18, Multiattack: "The giant makes two greatsword attacks.", Attacks: []SRDStatAttack{{Name: "Greatsword", AttackBonus: 14, DamageDice: "6d6", DamageBonus: 9, AvgDamage: 30, DamageType: "slashing"}, {Name: "Rock", AttackBonus: 14, DamageDice: "4d12", DamageBonus: 9, AvgDamage: 35, DamageType: "bludgeoning"}, {Name: "Lightning Strike (Recharge 5-6)", AttackBonus: 0, DamageDice: "12d8", DamageBonus: 0, AvgDamage: 54, DamageType: "lightning"}}, Traits: []string{"Amphibious", "Innate Spellcasting"}},
"vampire": {Slug: "vampire", Name: "Vampire", Size: "medium", Type: "undead", CR: 13, XP: 10000, HP: 144, AC: 16, SpeedWalk: 30, STR: 18, DEX: 18, CON: 18, INT: 17, WIS: 15, CHA: 18, Attacks: []SRDStatAttack{{Name: "Unarmed Strike (Vampire Form Only)", AttackBonus: 9, DamageDice: "1d8", DamageBonus: 4, AvgDamage: 8, DamageType: "bludgeoning"}, {Name: "Bite (Bat or Vampire Form Only)", AttackBonus: 9, DamageDice: "1d6+3d6", DamageBonus: 4, AvgDamage: 4, DamageType: "piercing"}}, Traits: []string{"Shapechanger", "Legendary Resistance (3/Day)", "Misty Escape", "Regeneration", "Spider Climb", "Vampire Weaknesses"}, Legendary: true},
"adult_black_dragon": {Slug: "adult_black_dragon", Name: "Adult Black Dragon", Size: "huge", Type: "dragon", CR: 14, XP: 11500, HP: 195, AC: 19, SpeedWalk: 40, STR: 23, DEX: 14, CON: 21, INT: 14, WIS: 13, CHA: 17, Multiattack: "The dragon can use its Frightful Presence.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 11, DamageDice: "2d10+1d8", DamageBonus: 6, AvgDamage: 6, DamageType: "piercing"}, {Name: "Claw", AttackBonus: 11, DamageDice: "2d6", DamageBonus: 6, AvgDamage: 13, DamageType: "slashing"}, {Name: "Tail", AttackBonus: 11, DamageDice: "2d8", DamageBonus: 6, AvgDamage: 15, DamageType: "bludgeoning"}, {Name: "Acid Breath (Recharge 5-6)", AttackBonus: 0, DamageDice: "12d8", DamageBonus: 0, AvgDamage: 54, DamageType: "acid"}}, Traits: []string{"Amphibious", "Legendary Resistance (3/Day)"}, Legendary: true},
"adult_copper_dragon": {Slug: "adult_copper_dragon", Name: "Adult Copper Dragon", Size: "huge", Type: "dragon", CR: 14, XP: 11500, HP: 184, AC: 18, SpeedWalk: 40, STR: 23, DEX: 12, CON: 21, INT: 18, WIS: 15, CHA: 17, Multiattack: "The dragon can use its Frightful Presence.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 11, DamageDice: "2d10", DamageBonus: 6, AvgDamage: 17, DamageType: "piercing"}, {Name: "Claw", AttackBonus: 11, DamageDice: "2d6", DamageBonus: 6, AvgDamage: 13, DamageType: "slashing"}, {Name: "Tail", AttackBonus: 11, DamageDice: "2d8", DamageBonus: 6, AvgDamage: 15, DamageType: "bludgeoning"}, {Name: "Breath Weapons (Recharge 5-6)", AttackBonus: 0, DamageDice: "12d8", DamageBonus: 0, AvgDamage: 54, DamageType: "acid"}}, Traits: []string{"Legendary Resistance (3/Day)"}, Legendary: true},
"ice_devil": {Slug: "ice_devil", Name: "Ice Devil", Size: "large", Type: "fiend", CR: 14, XP: 11500, HP: 180, AC: 18, SpeedWalk: 40, STR: 21, DEX: 14, CON: 18, INT: 18, WIS: 15, CHA: 18, Multiattack: "The devil makes three attacks: one with its bite, one with its claws, and one with its tail.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 10, DamageDice: "2d6+3d6", DamageBonus: 5, AvgDamage: 5, DamageType: "piercing"}, {Name: "Claws", AttackBonus: 10, DamageDice: "2d4+3d6", DamageBonus: 5, AvgDamage: 5, DamageType: "slashing"}, {Name: "Tail", AttackBonus: 10, DamageDice: "2d6+3d6", DamageBonus: 5, AvgDamage: 5, DamageType: "bludgeoning"}}, Traits: []string{"Devil's Sight", "Magic Resistance"}},
"adult_bronze_dragon": {Slug: "adult_bronze_dragon", Name: "Adult Bronze Dragon", Size: "huge", Type: "dragon", CR: 15, XP: 13000, HP: 212, AC: 19, SpeedWalk: 40, STR: 25, DEX: 10, CON: 23, INT: 16, WIS: 15, CHA: 19, Multiattack: "The dragon can use its Frightful Presence.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 12, DamageDice: "2d10", DamageBonus: 7, AvgDamage: 18, DamageType: "piercing"}, {Name: "Claw", AttackBonus: 12, DamageDice: "2d6", DamageBonus: 7, AvgDamage: 14, DamageType: "slashing"}, {Name: "Tail", AttackBonus: 12, DamageDice: "2d8", DamageBonus: 7, AvgDamage: 16, DamageType: "bludgeoning"}, {Name: "Breath Weapons (Recharge 5-6)", AttackBonus: 0, DamageDice: "12d10", DamageBonus: 0, AvgDamage: 66, DamageType: "lightning"}}, Traits: []string{"Amphibious", "Legendary Resistance (3/Day)"}, Legendary: true},
"adult_green_dragon": {Slug: "adult_green_dragon", Name: "Adult Green Dragon", Size: "huge", Type: "dragon", CR: 15, XP: 13000, HP: 207, AC: 19, SpeedWalk: 40, STR: 23, DEX: 12, CON: 21, INT: 18, WIS: 15, CHA: 17, Multiattack: "The dragon can use its Frightful Presence.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 11, DamageDice: "2d10+2d6", DamageBonus: 6, AvgDamage: 6, DamageType: "piercing"}, {Name: "Claw", AttackBonus: 11, DamageDice: "2d6", DamageBonus: 6, AvgDamage: 13, DamageType: "slashing"}, {Name: "Tail", AttackBonus: 11, DamageDice: "2d8", DamageBonus: 6, AvgDamage: 15, DamageType: "bludgeoning"}, {Name: "Poison Breath (Recharge 5-6)", AttackBonus: 0, DamageDice: "16d6", DamageBonus: 0, AvgDamage: 56, DamageType: "poison"}}, Traits: []string{"Amphibious", "Legendary Resistance (3/Day)"}, Legendary: true},
"mummy_lord": {Slug: "mummy_lord", Name: "Mummy Lord", Size: "medium", Type: "undead", CR: 15, XP: 13000, HP: 97, AC: 17, SpeedWalk: 20, STR: 18, DEX: 10, CON: 17, INT: 11, WIS: 18, CHA: 16, Multiattack: "The mummy can use its Dreadful Glare and makes one attack with its rotting fist.", Attacks: []SRDStatAttack{{Name: "Rotting Fist", AttackBonus: 9, DamageDice: "3d6+6d6", DamageBonus: 4, AvgDamage: 4, DamageType: "bludgeoning"}}, Traits: []string{"Magic Resistance", "Rejuvenation", "Spellcasting"}, Legendary: true},
"purple_worm": {Slug: "purple_worm", Name: "Purple Worm", Size: "gargantuan", Type: "monstrosity", CR: 15, XP: 13000, HP: 247, AC: 18, SpeedWalk: 50, STR: 28, DEX: 7, CON: 22, INT: 1, WIS: 8, CHA: 4, Multiattack: "The worm makes two attacks: one with its bite and one with its stinger.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 9, DamageDice: "3d8", DamageBonus: 9, AvgDamage: 22, DamageType: "piercing"}, {Name: "Tail Stinger", AttackBonus: 9, DamageDice: "3d6", DamageBonus: 9, AvgDamage: 19, DamageType: "piercing"}}, Traits: []string{"Tunneler"}},
"adult_blue_dragon": {Slug: "adult_blue_dragon", Name: "Adult Blue Dragon", Size: "huge", Type: "dragon", CR: 16, XP: 15000, HP: 225, AC: 19, SpeedWalk: 40, STR: 25, DEX: 10, CON: 23, INT: 16, WIS: 15, CHA: 19, Multiattack: "The dragon can use its Frightful Presence.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 12, DamageDice: "2d10+1d10", DamageBonus: 7, AvgDamage: 7, DamageType: "piercing"}, {Name: "Claw", AttackBonus: 12, DamageDice: "2d6", DamageBonus: 7, AvgDamage: 14, DamageType: "slashing"}, {Name: "Tail", AttackBonus: 12, DamageDice: "2d8", DamageBonus: 7, AvgDamage: 16, DamageType: "bludgeoning"}, {Name: "Lightning Breath (Recharge 5-6)", AttackBonus: 0, DamageDice: "12d10", DamageBonus: 0, AvgDamage: 66, DamageType: "lightning"}}, Traits: []string{"Legendary Resistance (3/Day)"}, Legendary: true},
"adult_silver_dragon": {Slug: "adult_silver_dragon", Name: "Adult Silver Dragon", Size: "huge", Type: "dragon", CR: 16, XP: 15000, HP: 243, AC: 19, SpeedWalk: 40, STR: 27, DEX: 10, CON: 25, INT: 16, WIS: 13, CHA: 21, Multiattack: "The dragon can use its Frightful Presence.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 13, DamageDice: "2d10", DamageBonus: 8, AvgDamage: 19, DamageType: "piercing"}, {Name: "Claw", AttackBonus: 13, DamageDice: "2d6", DamageBonus: 8, AvgDamage: 15, DamageType: "slashing"}, {Name: "Tail", AttackBonus: 13, DamageDice: "2d8", DamageBonus: 8, AvgDamage: 17, DamageType: "bludgeoning"}, {Name: "Breath Weapons (Recharge 5-6)", AttackBonus: 0, DamageDice: "13d8", DamageBonus: 0, AvgDamage: 58, DamageType: "cold"}}, Traits: []string{"Legendary Resistance (3/Day)"}, Legendary: true},
"iron_golem": {Slug: "iron_golem", Name: "Iron Golem", Size: "large", Type: "construct", CR: 16, XP: 15000, HP: 210, AC: 20, SpeedWalk: 30, STR: 24, DEX: 9, CON: 20, INT: 3, WIS: 11, CHA: 1, Multiattack: "The golem makes two melee attacks.", Attacks: []SRDStatAttack{{Name: "Slam", AttackBonus: 13, DamageDice: "3d8", DamageBonus: 7, AvgDamage: 20, DamageType: "bludgeoning"}, {Name: "Sword", AttackBonus: 13, DamageDice: "3d10", DamageBonus: 7, AvgDamage: 23, DamageType: "slashing"}, {Name: "Poison Breath (Recharge 5-6)", AttackBonus: 0, DamageDice: "10d8", DamageBonus: 0, AvgDamage: 45, DamageType: "poison"}}, Traits: []string{"Fire Absorption", "Immutable Form", "Magic Resistance", "Magic Weapons"}},
"marilith": {Slug: "marilith", Name: "Marilith", Size: "large", Type: "fiend", CR: 16, XP: 15000, HP: 189, AC: 18, SpeedWalk: 40, STR: 18, DEX: 20, CON: 20, INT: 18, WIS: 16, CHA: 20, Multiattack: "The marilith can make seven attacks: six with its longswords and one with its tail.", Attacks: []SRDStatAttack{{Name: "Longsword", AttackBonus: 9, DamageDice: "2d8", DamageBonus: 4, AvgDamage: 13, DamageType: "slashing"}, {Name: "Tail", AttackBonus: 9, DamageDice: "2d10", DamageBonus: 4, AvgDamage: 15, DamageType: "bludgeoning"}}, Traits: []string{"Magic Resistance", "Magic Weapons", "Reactive"}},
"planetar": {Slug: "planetar", Name: "Planetar", Size: "large", Type: "celestial", CR: 16, XP: 15000, HP: 200, AC: 19, SpeedWalk: 40, STR: 24, DEX: 20, CON: 24, INT: 19, WIS: 22, CHA: 25, Multiattack: "The planetar makes two melee attacks.", Attacks: []SRDStatAttack{{Name: "Greatsword", AttackBonus: 12, DamageDice: "4d6+5d8", DamageBonus: 7, AvgDamage: 7, DamageType: "slashing"}}, Traits: []string{"Angelic Weapons", "Divine Awareness", "Innate Spellcasting", "Magic Resistance"}},
"adult_gold_dragon": {Slug: "adult_gold_dragon", Name: "Adult Gold Dragon", Size: "huge", Type: "dragon", CR: 17, XP: 18000, HP: 256, AC: 19, SpeedWalk: 40, STR: 27, DEX: 14, CON: 25, INT: 16, WIS: 15, CHA: 24, Multiattack: "The dragon can use its Frightful Presence.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 14, DamageDice: "2d10", DamageBonus: 8, AvgDamage: 19, DamageType: "piercing"}, {Name: "Claw", AttackBonus: 14, DamageDice: "2d6", DamageBonus: 8, AvgDamage: 15, DamageType: "slashing"}, {Name: "Tail", AttackBonus: 14, DamageDice: "2d8", DamageBonus: 8, AvgDamage: 17, DamageType: "bludgeoning"}, {Name: "Breath Weapons (Recharge 5-6)", AttackBonus: 0, DamageDice: "12d10", DamageBonus: 0, AvgDamage: 66, DamageType: "fire"}}, Traits: []string{"Amphibious", "Legendary Resistance (3/Day)"}, Legendary: true},
"adult_red_dragon": {Slug: "adult_red_dragon", Name: "Adult Red Dragon", Size: "huge", Type: "dragon", CR: 17, XP: 18000, HP: 256, AC: 19, SpeedWalk: 40, STR: 27, DEX: 10, CON: 25, INT: 16, WIS: 13, CHA: 21, Multiattack: "The dragon can use its Frightful Presence.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 14, DamageDice: "2d10+2d6", DamageBonus: 8, AvgDamage: 8, DamageType: "piercing"}, {Name: "Claw", AttackBonus: 14, DamageDice: "2d6", DamageBonus: 8, AvgDamage: 15, DamageType: "slashing"}, {Name: "Tail", AttackBonus: 14, DamageDice: "2d8", DamageBonus: 8, AvgDamage: 17, DamageType: "bludgeoning"}, {Name: "Fire Breath (Recharge 5-6)", AttackBonus: 0, DamageDice: "18d6", DamageBonus: 0, AvgDamage: 63, DamageType: "fire"}}, Traits: []string{"Legendary Resistance (3/Day)"}, Legendary: true},
"androsphinx": {Slug: "androsphinx", Name: "Androsphinx", Size: "large", Type: "monstrosity", CR: 17, XP: 18000, HP: 199, AC: 17, SpeedWalk: 40, STR: 22, DEX: 10, CON: 20, INT: 16, WIS: 18, CHA: 23, Multiattack: "The sphinx makes two claw attacks.", Attacks: []SRDStatAttack{{Name: "Claw", AttackBonus: 12, DamageDice: "2d10", DamageBonus: 6, AvgDamage: 17, DamageType: "slashing"}}, Traits: []string{"Inscrutable", "Magic Weapons", "Spellcasting"}, Legendary: true},
"dragon_turtle": {Slug: "dragon_turtle", Name: "Dragon Turtle", Size: "gargantuan", Type: "dragon", CR: 17, XP: 18000, HP: 341, AC: 20, SpeedWalk: 20, STR: 25, DEX: 10, CON: 20, INT: 10, WIS: 12, CHA: 12, Multiattack: "The dragon turtle makes three attacks: one with its bite and two with its claws.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 13, DamageDice: "3d12", DamageBonus: 7, AvgDamage: 26, DamageType: "piercing"}, {Name: "Claw", AttackBonus: 13, DamageDice: "2d8", DamageBonus: 7, AvgDamage: 16, DamageType: "slashing"}, {Name: "Tail", AttackBonus: 13, DamageDice: "3d12", DamageBonus: 7, AvgDamage: 26, DamageType: "bludgeoning"}, {Name: "Steam Breath (Recharge 5-6)", AttackBonus: 0, DamageDice: "15d6", DamageBonus: 0, AvgDamage: 52, DamageType: "fire"}}, Traits: []string{"Amphibious"}},
"balor": {Slug: "balor", Name: "Balor", Size: "huge", Type: "fiend", CR: 19, XP: 22000, HP: 262, AC: 19, SpeedWalk: 40, STR: 26, DEX: 15, CON: 22, INT: 20, WIS: 16, CHA: 22, Multiattack: "The balor makes two attacks: one with its longsword and one with its whip.", Attacks: []SRDStatAttack{{Name: "Longsword", AttackBonus: 14, DamageDice: "3d8+3d8", DamageBonus: 8, AvgDamage: 8, DamageType: "slashing"}, {Name: "Whip", AttackBonus: 14, DamageDice: "2d6+3d6", DamageBonus: 8, AvgDamage: 8, DamageType: "slashing"}}, Traits: []string{"Death Throes", "Fire Aura", "Magic Resistance", "Magic Weapons"}},
"ancient_brass_dragon": {Slug: "ancient_brass_dragon", Name: "Ancient Brass Dragon", Size: "gargantuan", Type: "dragon", CR: 20, XP: 25000, HP: 297, AC: 20, SpeedWalk: 40, STR: 27, DEX: 10, CON: 25, INT: 16, WIS: 15, CHA: 19, Multiattack: "The dragon can use its Frightful Presence.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 14, DamageDice: "2d10", DamageBonus: 8, AvgDamage: 19, DamageType: "piercing"}, {Name: "Claw", AttackBonus: 14, DamageDice: "2d6", DamageBonus: 8, AvgDamage: 15, DamageType: "slashing"}, {Name: "Tail", AttackBonus: 14, DamageDice: "2d8", DamageBonus: 8, AvgDamage: 17, DamageType: "bludgeoning"}, {Name: "Breath Weapons (Recharge 5-6)", AttackBonus: 0, DamageDice: "16d6", DamageBonus: 0, AvgDamage: 56, DamageType: "fire"}}, Traits: []string{"Legendary Resistance (3/Day)"}, Legendary: true},
"ancient_white_dragon": {Slug: "ancient_white_dragon", Name: "Ancient White Dragon", Size: "gargantuan", Type: "dragon", CR: 20, XP: 25000, HP: 333, AC: 20, SpeedWalk: 40, STR: 26, DEX: 10, CON: 26, INT: 10, WIS: 13, CHA: 14, Multiattack: "The dragon can use its Frightful Presence.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 14, DamageDice: "2d10+2d8", DamageBonus: 8, AvgDamage: 8, DamageType: "piercing"}, {Name: "Claw", AttackBonus: 14, DamageDice: "2d6", DamageBonus: 8, AvgDamage: 15, DamageType: "slashing"}, {Name: "Tail", AttackBonus: 14, DamageDice: "2d8", DamageBonus: 8, AvgDamage: 17, DamageType: "bludgeoning"}, {Name: "Cold Breath (Recharge 5-6)", AttackBonus: 0, DamageDice: "16d8", DamageBonus: 0, AvgDamage: 72, DamageType: "cold"}}, Traits: []string{"Ice Walk", "Legendary Resistance (3/Day)"}, Legendary: true},
"pit_fiend": {Slug: "pit_fiend", Name: "Pit Fiend", Size: "large", Type: "fiend", CR: 20, XP: 25000, HP: 300, AC: 19, SpeedWalk: 30, STR: 26, DEX: 14, CON: 24, INT: 22, WIS: 18, CHA: 24, Multiattack: "The pit fiend makes four attacks: one with its bite, one with its claw, one with its mace, and one with its tail.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 14, DamageDice: "4d6", DamageBonus: 8, AvgDamage: 22, DamageType: "piercing"}, {Name: "Claw", AttackBonus: 14, DamageDice: "2d8", DamageBonus: 8, AvgDamage: 17, DamageType: "slashing"}, {Name: "Mace", AttackBonus: 14, DamageDice: "2d6", DamageBonus: 8, AvgDamage: 15, DamageType: "bludgeoning"}, {Name: "Tail", AttackBonus: 14, DamageDice: "3d10", DamageBonus: 8, AvgDamage: 24, DamageType: "bludgeoning"}}, Traits: []string{"Fear Aura", "Magic Resistance", "Magic Weapons", "Innate Spellcasting"}},
"ancient_black_dragon": {Slug: "ancient_black_dragon", Name: "Ancient Black Dragon", Size: "gargantuan", Type: "dragon", CR: 21, XP: 33000, HP: 367, AC: 22, SpeedWalk: 40, STR: 27, DEX: 14, CON: 25, INT: 16, WIS: 15, CHA: 19, Multiattack: "The dragon can use its Frightful Presence.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 15, DamageDice: "2d10+2d8", DamageBonus: 8, AvgDamage: 8, DamageType: "piercing"}, {Name: "Claw", AttackBonus: 15, DamageDice: "2d6", DamageBonus: 8, AvgDamage: 15, DamageType: "slashing"}, {Name: "Tail", AttackBonus: 15, DamageDice: "2d8", DamageBonus: 8, AvgDamage: 17, DamageType: "bludgeoning"}}, Traits: []string{"Amphibious", "Legendary Resistance (3/Day)"}, Legendary: true},
"ancient_copper_dragon": {Slug: "ancient_copper_dragon", Name: "Ancient Copper Dragon", Size: "gargantuan", Type: "dragon", CR: 21, XP: 33000, HP: 350, AC: 21, SpeedWalk: 40, STR: 27, DEX: 12, CON: 25, INT: 20, WIS: 17, CHA: 19, Multiattack: "The dragon can use its Frightful Presence.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 15, DamageDice: "2d10", DamageBonus: 8, AvgDamage: 19, DamageType: "piercing"}, {Name: "Claw", AttackBonus: 15, DamageDice: "2d6", DamageBonus: 8, AvgDamage: 15, DamageType: "slashing"}, {Name: "Tail", AttackBonus: 15, DamageDice: "2d8", DamageBonus: 8, AvgDamage: 17, DamageType: "bludgeoning"}, {Name: "Breath Weapons (Recharge 5-6)", AttackBonus: 0, DamageDice: "14d8", DamageBonus: 0, AvgDamage: 63, DamageType: "acid"}}, Traits: []string{"Legendary Resistance (3/Day)"}, Legendary: true},
"lich": {Slug: "lich", Name: "Lich", Size: "medium", Type: "undead", CR: 21, XP: 33000, HP: 135, AC: 17, SpeedWalk: 30, STR: 11, DEX: 16, CON: 16, INT: 20, WIS: 14, CHA: 16, Attacks: []SRDStatAttack{{Name: "Paralyzing Touch", AttackBonus: 12, DamageDice: "3d6", DamageBonus: 0, AvgDamage: 10, DamageType: "cold"}}, Traits: []string{"Legendary Resistance (3/Day)", "Rejuvenation", "Spellcasting", "Turn Resistance"}, Legendary: true},
"solar": {Slug: "solar", Name: "Solar", Size: "large", Type: "celestial", CR: 21, XP: 33000, HP: 243, AC: 21, SpeedWalk: 50, STR: 26, DEX: 22, CON: 26, INT: 25, WIS: 25, CHA: 30, Multiattack: "The solar makes two greatsword attacks.", Attacks: []SRDStatAttack{{Name: "Greatsword", AttackBonus: 15, DamageDice: "4d6+6d8", DamageBonus: 8, AvgDamage: 8, DamageType: "slashing"}, {Name: "Slaying Longbow", AttackBonus: 13, DamageDice: "2d8+6d8", DamageBonus: 6, AvgDamage: 6, DamageType: "piercing"}}, Traits: []string{"Angelic Weapons", "Divine Awareness", "Innate Spellcasting", "Magic Resistance"}, Legendary: true},
"ancient_bronze_dragon": {Slug: "ancient_bronze_dragon", Name: "Ancient Bronze Dragon", Size: "gargantuan", Type: "dragon", CR: 22, XP: 41000, HP: 444, AC: 22, SpeedWalk: 40, STR: 29, DEX: 10, CON: 27, INT: 18, WIS: 17, CHA: 21, Multiattack: "The dragon can use its Frightful Presence.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 16, DamageDice: "2d10", DamageBonus: 9, AvgDamage: 20, DamageType: "piercing"}, {Name: "Claw", AttackBonus: 16, DamageDice: "1d6", DamageBonus: 9, AvgDamage: 12, DamageType: "slashing"}, {Name: "Tail", AttackBonus: 16, DamageDice: "2d8", DamageBonus: 9, AvgDamage: 18, DamageType: "bludgeoning"}, {Name: "Breath Weapons (Recharge 5-6)", AttackBonus: 0, DamageDice: "16d10", DamageBonus: 0, AvgDamage: 88, DamageType: "lightning"}}, Traits: []string{"Amphibious", "Legendary Resistance (3/Day)"}, Legendary: true},
"ancient_green_dragon": {Slug: "ancient_green_dragon", Name: "Ancient Green Dragon", Size: "gargantuan", Type: "dragon", CR: 22, XP: 41000, HP: 385, AC: 21, SpeedWalk: 40, STR: 27, DEX: 12, CON: 25, INT: 20, WIS: 17, CHA: 19, Multiattack: "The dragon can use its Frightful Presence.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 15, DamageDice: "2d10+3d6", DamageBonus: 9, AvgDamage: 9, DamageType: "piercing"}, {Name: "Claw", AttackBonus: 15, DamageDice: "4d6", DamageBonus: 8, AvgDamage: 22, DamageType: "slashing"}, {Name: "Tail", AttackBonus: 15, DamageDice: "2d8", DamageBonus: 8, AvgDamage: 17, DamageType: "bludgeoning"}, {Name: "Poison Breath (Recharge 5-6)", AttackBonus: 0, DamageDice: "22d6", DamageBonus: 0, AvgDamage: 77, DamageType: "poison"}}, Traits: []string{"Amphibious", "Legendary Resistance (3/Day)"}, Legendary: true},
"ancient_blue_dragon": {Slug: "ancient_blue_dragon", Name: "Ancient Blue Dragon", Size: "gargantuan", Type: "dragon", CR: 23, XP: 50000, HP: 481, AC: 22, SpeedWalk: 40, STR: 29, DEX: 10, CON: 27, INT: 18, WIS: 17, CHA: 21, Multiattack: "The dragon can use its Frightful Presence.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 16, DamageDice: "2d10+2d10", DamageBonus: 9, AvgDamage: 9, DamageType: "piercing"}, {Name: "Claw", AttackBonus: 16, DamageDice: "2d6", DamageBonus: 9, AvgDamage: 16, DamageType: "slashing"}, {Name: "Tail", AttackBonus: 16, DamageDice: "2d8", DamageBonus: 9, AvgDamage: 18, DamageType: "bludgeoning"}, {Name: "Lightning Breath (Recharge 5-6)", AttackBonus: 0, DamageDice: "16d10", DamageBonus: 0, AvgDamage: 88, DamageType: "lightning"}}, Traits: []string{"Legendary Resistance (3/Day)"}, Legendary: true},
"ancient_silver_dragon": {Slug: "ancient_silver_dragon", Name: "Ancient Silver Dragon", Size: "gargantuan", Type: "dragon", CR: 23, XP: 50000, HP: 487, AC: 22, SpeedWalk: 40, STR: 30, DEX: 10, CON: 29, INT: 18, WIS: 15, CHA: 23, Multiattack: "The dragon can use its Frightful Presence.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 17, DamageDice: "2d10", DamageBonus: 10, AvgDamage: 21, DamageType: "piercing"}, {Name: "Claw", AttackBonus: 17, DamageDice: "2d6", DamageBonus: 10, AvgDamage: 17, DamageType: "slashing"}, {Name: "Tail", AttackBonus: 17, DamageDice: "2d8", DamageBonus: 10, AvgDamage: 19, DamageType: "bludgeoning"}, {Name: "Breath Weapons (Recharge 5-6)", AttackBonus: 0, DamageDice: "15d8", DamageBonus: 0, AvgDamage: 67, DamageType: "cold"}}, Traits: []string{"Legendary Resistance (3/Day)"}, Legendary: true},
"kraken": {Slug: "kraken", Name: "Kraken", Size: "gargantuan", Type: "monstrosity", CR: 23, XP: 50000, HP: 472, AC: 18, SpeedWalk: 20, STR: 30, DEX: 11, CON: 25, INT: 22, WIS: 18, CHA: 20, Multiattack: "The kraken makes three tentacle attacks, each of which it can replace with one use of Fling.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 7, DamageDice: "3d8", DamageBonus: 10, AvgDamage: 23, DamageType: "piercing"}, {Name: "Tentacle", AttackBonus: 7, DamageDice: "3d6", DamageBonus: 10, AvgDamage: 20, DamageType: "bludgeoning"}, {Name: "Lightning Storm", AttackBonus: 0, DamageDice: "4d10", DamageBonus: 0, AvgDamage: 22, DamageType: "lightning"}}, Traits: []string{"Amphibious", "Freedom of Movement", "Siege Monster"}, Legendary: true},
"ancient_gold_dragon": {Slug: "ancient_gold_dragon", Name: "Ancient Gold Dragon", Size: "gargantuan", Type: "dragon", CR: 24, XP: 62000, HP: 546, AC: 22, SpeedWalk: 40, STR: 30, DEX: 14, CON: 29, INT: 18, WIS: 17, CHA: 28, Multiattack: "The dragon can use its Frightful Presence.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 17, DamageDice: "2d10", DamageBonus: 10, AvgDamage: 21, DamageType: "piercing"}, {Name: "Claw", AttackBonus: 17, DamageDice: "2d6", DamageBonus: 10, AvgDamage: 17, DamageType: "slashing"}, {Name: "Tail", AttackBonus: 17, DamageDice: "2d8", DamageBonus: 10, AvgDamage: 19, DamageType: "bludgeoning"}, {Name: "Breath Weapons (Recharge 5-6)", AttackBonus: 0, DamageDice: "13d10", DamageBonus: 0, AvgDamage: 71, DamageType: "fire"}}, Traits: []string{"Amphibious", "Legendary Resistance (3/Day)"}, Legendary: true},
"ancient_red_dragon": {Slug: "ancient_red_dragon", Name: "Ancient Red Dragon", Size: "gargantuan", Type: "dragon", CR: 24, XP: 62000, HP: 546, AC: 22, SpeedWalk: 40, STR: 30, DEX: 10, CON: 29, INT: 18, WIS: 15, CHA: 23, Multiattack: "The dragon can use its Frightful Presence.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 17, DamageDice: "2d10+4d6", DamageBonus: 10, AvgDamage: 10, DamageType: "piercing"}, {Name: "Claw", AttackBonus: 17, DamageDice: "2d6", DamageBonus: 10, AvgDamage: 17, DamageType: "slashing"}, {Name: "Tail", AttackBonus: 17, DamageDice: "2d8", DamageBonus: 10, AvgDamage: 19, DamageType: "bludgeoning"}, {Name: "Fire Breath (Recharge 5-6)", AttackBonus: 0, DamageDice: "26d6", DamageBonus: 0, AvgDamage: 91, DamageType: "fire"}}, Traits: []string{"Legendary Resistance (3/Day)"}, Legendary: true},
"tarrasque": {Slug: "tarrasque", Name: "Tarrasque", Size: "gargantuan", Type: "monstrosity", CR: 30, XP: 155000, HP: 676, AC: 25, SpeedWalk: 40, STR: 30, DEX: 11, CON: 30, INT: 3, WIS: 11, CHA: 11, Multiattack: "The tarrasque can use its Frightful Presence.", Attacks: []SRDStatAttack{{Name: "Bite", AttackBonus: 19, DamageDice: "4d12", DamageBonus: 10, AvgDamage: 36, DamageType: "piercing"}, {Name: "Claw", AttackBonus: 19, DamageDice: "4d8", DamageBonus: 10, AvgDamage: 28, DamageType: "slashing"}, {Name: "Horns", AttackBonus: 19, DamageDice: "4d10", DamageBonus: 10, AvgDamage: 32, DamageType: "piercing"}, {Name: "Tail", AttackBonus: 19, DamageDice: "4d6", DamageBonus: 10, AvgDamage: 24, DamageType: "bludgeoning"}}, Traits: []string{"Legendary Resistance (3/Day)", "Magic Resistance", "Reflective Carapace", "Siege Monster"}, Legendary: true},
}
}

View File

@@ -0,0 +1,68 @@
package plugin
import "testing"
// TestSRDStagingBestiary_Populated guards the generated raw SRD staging table:
// the full SRD dump should be present and structurally sane. Regenerate with
// `go run ./cmd/open5e-import (fetch|gen) bestiary` if the SRD set changes.
func TestSRDStagingBestiary_Populated(t *testing.T) {
if len(srdStagingBestiary) < 300 {
t.Fatalf("srdStagingBestiary has %d entries, want the full SRD set (~322)", len(srdStagingBestiary))
}
for slug, m := range srdStagingBestiary {
if m.Slug != slug {
t.Errorf("%s: Slug field = %q, want map key", slug, m.Slug)
}
if m.Name == "" {
t.Errorf("%s: empty Name", slug)
}
if m.HP <= 0 || m.AC <= 0 {
t.Errorf("%s: HP=%d AC=%d, want both positive", slug, m.HP, m.AC)
}
for _, a := range m.Attacks {
// AvgDamage is precomputed; a parsed attack should carry dice and a
// non-negative average (flat negative bonuses can zero it, not less).
if a.DamageDice == "" {
t.Errorf("%s: attack %q has no DamageDice", slug, a.Name)
}
if a.AvgDamage < 0 {
t.Errorf("%s: attack %q AvgDamage=%d, want >= 0", slug, a.Name, a.AvgDamage)
}
}
}
}
// TestSRDStagingBestiary_KnownEntry spot-checks a canonical stat block so a
// classifier regression surfaces as a value mismatch, not a silent drift.
func TestSRDStagingBestiary_KnownEntry(t *testing.T) {
ab, ok := srdStagingBestiary["aboleth"]
if !ok {
t.Fatal("aboleth missing from staging bestiary")
}
if ab.HP != 135 || ab.AC != 17 || ab.CR != 10 {
t.Errorf("aboleth = HP %d / AC %d / CR %v, want 135 / 17 / 10", ab.HP, ab.AC, ab.CR)
}
if ab.XP != 5900 {
t.Errorf("aboleth XP = %d, want 5900 (derived from CR 10)", ab.XP)
}
if ab.Multiattack == "" {
t.Error("aboleth should have a Multiattack description")
}
if !ab.Legendary {
t.Error("aboleth should be flagged Legendary")
}
// Tentacle: +9 to hit, 2d6+5 → avg 12.
var tentacle *SRDStatAttack
for i := range ab.Attacks {
if ab.Attacks[i].Name == "Tentacle" {
tentacle = &ab.Attacks[i]
}
}
if tentacle == nil {
t.Fatal("aboleth missing Tentacle attack")
}
if tentacle.AttackBonus != 9 || tentacle.DamageDice != "2d6" || tentacle.AvgDamage != 12 {
t.Errorf("aboleth Tentacle = %+v, want +9 / 2d6 / avg 12", *tentacle)
}
}

View File

@@ -0,0 +1,57 @@
package plugin
// Raw Open5e SRD stat blocks — the balance-baseline staging table.
//
// Unlike dndBestiary (hand-tuned named monsters) and srdProfiles (hand-tuned
// turn-based multiattack), this table is the *unmodified* SRD: HP, AC, ability
// scores, and per-attack damage dice straight from the 5e SRD dump. Raw SRD
// damage is calibrated for a 4-PC party and one-shots gogobee's single player
// (see bestiary_srd.go's balance-basis note), so this is NOT a drop-in roster —
// nothing here feeds the combat engine directly.
//
// What it IS: the reference the tuning pass reads against. When authoring or
// rebalancing a dndBestiary entry, srdStagingBestiary[id] gives the canonical
// SRD numbers to scale down from, so tuning is a deliberate derivation rather
// than a guess. Generated by cmd/open5e-import — see bestiary_srd_data.go.
//
// File is intentionally NOT dnd_-prefixed (see memory: no new dnd_* identifiers).
// SRDStatAttack is one weapon attack from a creature's SRD action list: the
// d20 to-hit bonus plus the raw damage dice (e.g. "2d6") and flat bonus, with
// AvgDamage precomputed as dice average + bonus for quick comparison.
type SRDStatAttack struct {
Name string
AttackBonus int
DamageDice string
DamageBonus int
AvgDamage int
DamageType string
}
// SRDStatBlock is a raw SRD creature stat block. CR/XP/HP/AC and the ability
// scores are verbatim SRD; Attacks holds each non-Multiattack weapon action;
// Multiattack carries the multiattack action's text so the tuning pass knows
// how many strikes a turn the creature makes. Traits lists the creature's
// special-ability names (Pack Tactics, Regeneration, …) — names only, since
// their mechanics live in the hand-authored MonsterAbility profiles.
type SRDStatBlock struct {
Slug string
Name string
Size string
Type string
CR float64
XP int
HP int
AC int
SpeedWalk int // feet; falls back to fastest other mode for flyers/swimmers
STR, DEX int
CON, INT int
WIS, CHA int
Multiattack string
Attacks []SRDStatAttack
Traits []string
Legendary bool
}
// srdStagingBestiary is the full raw SRD bestiary, keyed by slug (hyphens → underscores).
var srdStagingBestiary = buildSRDStagingBestiary()