Skip to content

Documentation for sigilharvest.lic

Mahtra edited this page Feb 4, 2026 · 1 revision

SigilHarvest (v2.0.0)

SigilHarvest is a dr-scripts automation script for the sigil harvesting enchanting minigame in DragonRealms. It travels to known sigil locations, perceives sigils in the world, plays the precision improvement minigame using a tuned strategy, and scribes successful sigils onto blank scrolls for use in enchanting.

The script handles the full harvesting cycle: room navigation, sigil detection, strategic action selection during the improvement minigame, resource management, scribing, and automatic restocking of blank scrolls.


Table of Contents


Requirements

Software

  • Lich or Lich5 with the dr-scripts dependency installed and up to date.
  • The base-sigils.yaml data file (included with dr-scripts) which contains room lists for each sigil type, city, and season.

In-Game Prerequisites

  • Enchanting skill training. Characters with higher Enchanting skill will see better results.
  • Sigil Comprehension techniques (Inspired, Enlightened, Illuminated, Awakened) are strongly recommended. See the Sigil Comprehension Techniques section for details.
  • A burin in your inventory or on your enchanting belt. A precise burin is recommended for best results.
  • Blank scrolls in your crafting container. The script will automatically purchase replacements when your supply runs low.
  • Sufficient currency to buy blank scrolls in the city you are harvesting in.

YAML Settings

The following settings must be configured in your character YAML profile:

Setting Required Description
crafting_container Yes The container that holds your crafting supplies (e.g., duffel bag).
enchanting_tools Yes List of enchanting tools. Must include a burin (e.g., precise burin).
enchanting_belt No Your crafting toolbelt, if you use one. Can be a string or a hash with a name key.
crafting_items_in_container No List of crafting items stored in your container. Used for belt/bag resolution.
sigil_harvest_settings Yes A hash containing sigil harvest-specific options (see below).

The sigil_harvest_settings hash supports the following keys:

Key Required Default Description
danger_rooms Yes (none) An array of room IDs to skip. Use this for rooms with persistent enemies or other hazards.
blank_scrolls No 25 Target number of blank scrolls to keep on hand. The script will buy more when your count drops below this number.

Usage

sigilharvest <city> <sigil> <precision> [minutes] [debug]

Arguments

Argument Required Description
city Yes The city/region to harvest in. One of: Crossing, Riverhaven, or Shard.
sigil Yes The type of sigil to harvest (see list below), or random to target a randomly chosen sigil type each route cycle.
precision Yes The target precision value. The script will scribe any sigil that reaches this precision.
minutes No Session time limit in minutes. Default: 30.
debug No Include the word debug to enable verbose output showing internal decisions and state.

Examples

Harvest permutation sigils in Shard with precision target 90 for 60 minutes:

sigilharvest Shard permutation 90 60

Harvest random sigils in Crossing with precision target 75 for the default 30 minutes:

sigilharvest Crossing random 75

Harvest congruence sigils in Riverhaven with precision target 80 for 45 minutes with debug output:

sigilharvest Riverhaven congruence 80 45 debug

Supported Sigil Types

The script supports all 15 sigil types available in the game:

Sigil Sigil Sigil
abolition antipode ascension
clarification congruence decay
evolution induction integration
metamorphosis nurture paradox
permutation rarefaction unity

You may also specify random as the sigil type. When random is selected, the script picks a new random sigil type from this list at the start of each route cycle through the room list.


YAML Configuration

Below is a complete example of the relevant YAML settings for a character profile:

crafting_container: duffel bag
enchanting_tools:
  - brazier
  - augmenting loop
  - precise burin
  - imbuement rod
enchanting_belt:
  name: toolbelt
crafting_items_in_container:
  - brazier
  - augmenting loop
  - imbuement rod
sigil_harvest_settings:
  danger_rooms: [15480, 12412, 9817]
  blank_scrolls: 25

Notes on Configuration

  • enchanting_tools: The script searches this list for any entry matching burin. If your burin has a qualifier (e.g., "precise burin"), list it that way here.
  • enchanting_belt: If omitted, the script will look for the burin in your crafting container instead. When set, the script will untie/tie the burin from the belt automatically.
  • danger_rooms: Start with an empty array [] and add room IDs as you encounter enemies. The script will suggest room IDs to add when it encounters enemies during a session.
  • blank_scrolls: Scrolls are purchased in bundles of 25 from the local enchanting society shop. The script calculates how many bundles are needed to reach your target count.

How It Works

When you start SigilHarvest, the script performs the following sequence:

  1. Initialization: Validates your configuration, locates your burin (checking belt and container), detects the current in-game season, and queries your known Sigil Comprehension techniques.

  2. Scroll Check: Counts your blank scrolls and buys more if you are below the configured threshold. Scrolls are purchased automatically from the enchanting society shop in your chosen city.

  3. Room Traversal: Loads the room list for the chosen city, sigil type, and current season from the sigil database. Walks to each room in sequence, skipping any rooms on your danger list.

  4. Sigil Detection: In each room, the script uses PERCEIVE SIGIL to search for sigils. If enemies are present, the room is skipped and its ID is flagged for you to consider adding to your danger list. If the room was recently searched or does not contain the target sigil, it moves on.

  5. Improvement Minigame: Once a matching sigil is found, the script enters the improvement loop:

    • Reads the available improvement actions, each described by a difficulty level, a resource cost type, and an aspect (precision or resource repair).
    • Selects the best precision action using a difficulty-first strategy (higher difficulty yields larger precision gains).
    • Monitors three mental resources -- sanity, resolve, and focus -- to avoid exhaustion.
    • May perform resource repair actions when needed to unlock higher-difficulty precision actions.
    • Evaluates whether the sigil can still plausibly reach the target precision; abandons unpromising sigils early rather than wasting time.
  6. Scribing: When a sigil reaches the target precision (or comes within 5 points at the iteration cap), the script scribes it onto blank scrolls using your burin. Multiple scrolls can be produced from a single sigil. The resulting sigil-scrolls are stowed in your container.

  7. Loop and Summary: The script continues visiting rooms until the time limit expires, then walks back to your starting room and prints a session summary.


Sigil Comprehension Techniques

Sigil Comprehension is a set of four artificing crafting techniques that improve your ability to work with sigils during the improvement minigame. The script detects which techniques your character has learned and displays them in the startup banner.

Technique Effect
Inspired Sigil Comprehension Foundational technique. Improves baseline sigil perception.
Enlightened Sigil Comprehension Builds on Inspired. Further improves outcomes.
Illuminated Sigil Comprehension Builds on Enlightened. Provides additional improvement capability.
Awakened Sigil Comprehension The most advanced technique. Provides the strongest benefit to sigil work.

These techniques are cumulative. A character with all four techniques will see meaningfully better results than one with none. The techniques are learned through the in-game crafting technique system under the Artificing discipline (CRAFT ARTIFICING to check your current techniques).

Having all four Sigil Comprehension techniques is one of the single biggest factors in successful sigil harvesting. If you are getting poor results, learning these techniques should be your first priority.


Session Output

Startup Banner

When the script launches, it prints a banner summarizing your configuration:

== SigilHarvest v2.0.0 ==
  City:             Shard
  Sigil:            permutation
  Target prec:      90
  Time limit:       60 minutes
  Debug:            false
  Season:           summer
  Techniques:       Inspired, Enlightened, Illuminated, Awakened
  Burin:            precise burin (belt)
  Bag:              duffel bag
  Danger rooms:     [15480, 12412, 9817]
  Stock scrolls:    25
  Enchanting tools: ["brazier", "augmenting loop", "precise burin", "imbuement rod"]
========================

This banner confirms which burin was found and whether it is stored on a belt or in your pack. The "Techniques" line shows which Sigil Comprehension techniques your character knows (or "none" if you have not learned any).

Per-Sigil Log Lines

Each sigil attempt produces a summary line:

[Sigil #3] type=permutation result=SCRIBED precision=92/90 iterations=8 danger=4 room=15 elapsed=1.2m total=5.7m
Field Meaning
type The sigil type that was found.
result Outcome: SCRIBED (success), FAILED (mishap or abandoned), or SKIPPED (room had enemies, wrong sigil, or was recently searched).
precision Final precision achieved out of the target precision.
iterations Number of improvement actions taken.
danger Final danger level (0-star minimum, higher is riskier).
room Cumulative count of rooms visited so far.
elapsed Time spent on this individual sigil.
total Total session elapsed time.

Session Summary

At the end of a session, the script prints a summary:

== Session Summary ==
  City:             Shard
  Sigil:            permutation
  Target prec:      90
  Time limit:       60 minutes
  Run time:         58.3 minutes
  Rooms visited:    42
  ---
  Sigils total:     38
  Scribed:          4
  Failed:           22
  Skipped:          12
  Success rate:     10.5%
  Avg precision:    51.2 (non-skipped)
  Avg iterations:   5.8 (non-skipped)
  Best sigil:       #17 precision=95/90 iterations=9
== End SigilHarvest v2.0.0 ==

The summary separates skipped sigils (rooms with enemies or wrong sigil type) from attempted sigils when calculating averages. The success rate is calculated across all sigils including skipped ones.

If enemies were encountered during the session, the script also prints the room IDs where enemies appeared and suggests adding them to your danger_rooms list.


Algorithm Overview

For users curious about how the script makes decisions during the improvement minigame, here is a simplified overview of the strategy:

Action Selection

  1. Difficulty-first selection: The script always prefers the highest-difficulty precision action available. In-game data shows that difficulty is the sole determinant of precision gain (trivial averages +2.3, straightforward +4.5, formidable +6.8, challenging +9.0, difficult +13.3). Higher difficulty means a bigger jump in precision per action.

  2. Cost-based tiebreaking: When two actions have the same difficulty, the script prefers the one with the lower resource cost to conserve mental resources for future iterations.

  3. Resource-aware tiebreaking: When difficulty and cost are also tied, the script prefers the action that draws from whichever mental resource (sanity, resolve, or focus) is currently most abundant. This preserves scarce resources.

Early Exit Conditions

The script avoids wasting time on unpromising sigils through several checks:

  • Starting precision filter: If your target precision is 80 or higher and the sigil starts below precision 13, it is abandoned immediately.
  • Move budget: The script estimates whether the remaining iterations can plausibly close the gap to the target precision. If not, it moves on.
  • Resource exhaustion detection: If the combined remaining mental resources (sanity + resolve + focus) are insufficient to plausibly reach the target, the sigil is abandoned.
  • Iteration cap: A hard cap of 15 iterations prevents runaway attempts. If the cap is reached and precision is within 5 of the target, the sigil is scribed anyway.

Minimum Difficulty Threshold

The script skips trivial-difficulty precision actions entirely. The expected value of refreshing the action menu for a better option (74% chance of non-trivial action at +8.0 average gain) exceeds the expected value of taking a trivial action (+2.3 average gain). This optimization was validated through controlled experiments.

Resource Repair

When the script identifies a high-difficulty precision action that cannot be safely attempted due to a depleted mental resource, it may take a repair action to restore that resource. Repairs are limited and only taken when they would unlock meaningfully better precision actions.


Trader Bonus

Characters of the Trader guild with circle 65 or higher receive a small bonus: when a sigil starts at precision 14 or above, the script will use SPECULATE LUCK before beginning the improvement process. This provides a minor benefit from the Trader's luck manipulation abilities.


Tips for Best Results

  • Learn all four Sigil Comprehension techniques (Inspired, Enlightened, Illuminated, Awakened). These are the single most impactful factor in your success rate. Check your current techniques with CRAFT ARTIFICING.

  • Use a target precision of 90 for maximum scroll output if your Enchanting skill and techniques support it. Lower targets (70-80) are appropriate for characters still building their skills.

  • Run longer sessions (60 minutes) for full route coverage. Short sessions may not visit all available rooms for a given sigil type. The room list loops, so the script will revisit rooms if time permits.

  • Shard generally has the most rooms in the sigil database for many sigil types. If you have access to all three cities, experiment to find which works best for your target sigil.

  • Build up your danger room list over time. The script automatically detects and reports rooms with enemies. After each session, copy the suggested room IDs into your danger_rooms YAML setting to avoid those rooms in future runs.

  • The script auto-applies outdoor buffs using your character's configured buff settings at the start of each room visit. Make sure your outdoor buff configuration is set up in your YAML if you want active buffs during harvesting.

  • Blank scrolls are cheap. Set blank_scrolls to 50 or higher if you run long sessions to avoid mid-session shopping trips.

  • Use the random sigil type if you need a variety of sigil types for enchanting. This avoids depleting a single sigil type's room list and exposes you to different room routes.

  • Seasons matter. The room list for each sigil type changes by season. If a particular sigil seems sparse in one season, it may have more rooms available in another.


Troubleshooting

"Could not find any burin in inventory or on belt"

The script could not locate a burin. Check the following:

  • Your enchanting_tools YAML setting must include an entry containing the word "burin" (e.g., precise burin, burin).
  • If using an enchanting_belt, make sure the belt name matches what you are wearing in-game.
  • The burin must be physically present either on your belt or in your crafting container.
  • The script tries multiple resolution methods: settings name from belt, settings name from bag, plain "burin" from bag, and parsed game redirect. If all four fail, this error appears.

"No crafting container configured"

Set the crafting_container setting in your YAML to the name of your crafting bag or container.

"No sigil_harvest_settings configured"

Add a sigil_harvest_settings block to your YAML with at least a danger_rooms array. See the YAML Configuration section for an example.

No sigils found in any rooms

  • Verify you are specifying the correct city name (Crossing, Riverhaven, or Shard).
  • Make sure the sigil type you specified is spelled correctly and is one of the 15 supported types.
  • Sigil availability changes by season. The current season is detected automatically and displayed in the startup banner.
  • Some rooms may have been recently searched by you or another player. The script will move on and try the next room.

Enemies in rooms / frequent skipping

  • Rooms with enemies are automatically skipped and flagged. Add flagged room IDs to your danger_rooms list in your YAML to skip them in future sessions.
  • Some areas have persistent creature spawns. Building a comprehensive danger room list over multiple sessions will gradually eliminate wasted travel time.
  • Refer to the sample danger room list in the YAML Configuration section or community-shared profiles for a head start.

Low success rate

  • Ensure you have learned Sigil Comprehension techniques. Characters without techniques will see significantly lower success rates.
  • Lower your target precision. A target of 70-80 is more achievable for characters with lower Enchanting skill.
  • Check that your Enchanting skill is at an appropriate level for the precision target you have set.

Script ends immediately

  • Check the startup banner for ERROR lines. The most common cause is a missing burin or unconfigured settings.
  • Make sure your character is not in combat or otherwise unable to act when starting the script.

"This room does not contain the desired sigil or has been searched too recently"

This is normal behavior. Not every room will contain the sigil you are looking for at any given time. The script handles this by moving to the next room. If you see this message for every room, the sigil type may be scarce in the current season or city.


Version History

  • v2.0.0 -- Current release. Full minigame automation with tuned algorithm, session summaries, automatic scroll purchasing, technique detection, and Trader luck support.
  • v1.5.x -- Algorithm experimentation series. Eighteen controlled experiments refined action selection, resource management, and early exit logic. See source code comments for the full experiment log.
  • v1.2.0 -- Original baseline implementation.

This documentation covers SigilHarvest v2.0.0 for use with Lich/Lich5 and the dr-scripts scripting repository.

Clone this wiki locally