Migrating from MythicMobs

/bestiary import <file|dir>

Converts mobs, skills and drop tables to native Bestiary YAML. Point it at one file or a whole directory.

Why it is mostly a table

MythicMobs writes:

- damage{amount=10} @Target ~onTimer:20 ?health<0.5

Bestiary writes:

- damage{amount=10} @target ~onTimer:20 ?health{amount="< 0.5"}

That is the same four-part grammar with different spellings. The shorthand parser is already most of the machinery, so what the importer adds is a name-mapping table and a writer:

Mapped
Mechanics100
Targeters33
Conditions44

Attributes, options, drops and skill lists are converted structurally on top of that.

What happens to the rest

Anything with no equivalent is written into the output file, in place, with a comment saying why, and named in the summary:

my_boss_skill:
  skills:
    - damage{amount=10} @target
  _unconverted:
    - "- customthing{x=1} @Forward   # no equivalent mechanic for 'customthing'"
    - "- damage{amount=} @Target   # unparseable: empty value for 'amount'"

Three things end up there: mechanics with no equivalent, conditions with no equivalent, and lines that would not parse at all.

The _unconverted block is not valid Bestiary content, so it does not silently half-work. You deal with it or you delete it.

After importing

  1. Read the summary. It names every file and every unconverted line.
  2. Resolve the _unconverted blocks, usually by picking a different mechanic or writing the behaviour as a small skill.
  3. /bestiary reload.
  4. /bestiary info <mob> to check the definition came out as expected.
  5. /bestiary cast <skill> to watch one actually run.

Differences worth knowing

Namespaces. Bestiary mobs live under mobs/<namespace>/, and the first directory is the namespace. Imported mobs need to land somewhere deliberate rather than in the root.

Conditions are explicit. ?health<0.5 becomes a condition with a comparator argument. Bestiary's comparators are <=, >=, <, >, = and !=, and a bare number means =.

Triggers only live on mobs. A Bestiary skill file defines what happens; a mob file decides when. Trigger lines attached to a skill in MythicMobs move to the mob that uses it.

Guards apply. An imported skill that recursed freely before is now bounded by depth, mechanic count, targets and tick budget. If something stops part-way and logs, that is the guard doing its job. See Performance.

Sigil items in drop tables

Where Sigil is installed, a drop entry's item may name a Sigil item as well as a vanilla one. That is usually the cleanest replacement for a MythicMobs item definition, since Bestiary does not do items itself.

Keep the original files until the converted mob passes /bestiary info, a traced cast, a spawn test and a drop-table test. The importer writes a starting point; it does not make _unconverted blocks executable or migrate state held by external plugins.