promotional bannermobile promotional banner

ESL: Dragonwilds

Required library for Extra Special Studio's Dragonwilds mods. Puts custom skills on the game's own screens and adds one Action Wheel for every mod.
Back to Files

ESL:DragonWilds 1.0.0

File nameESLDragonWilds-1.0.0.zip
Uploaded
Oct 7, 2026
Downloads
15
Size
3.3 MB
File ID
9093252
Type
R
Release
Supported game versions
  • 1.0

What's new

The first release. ESL puts custom skills on the game's own screens, and gives modders an API to build their own, with Historian as a possible prerequisite.

Features

  • Custom skills show on character select (their tile and both total-level numbers) and in the skills menu (tile, detail panel and perk list).
  • The game's own level-up banner and XP popup show custom skills with their badge. They never name a vanilla skill by mistake.
  • Skill requirements appear on world interaction prompts, with the game's own requirement icon. Only objects a mod has named get one, so vanilla objects are never affected.
  • Locked skills show greyed out with the game's padlock and add nothing to the totals until unlocked. Then a "New skill" card appears.
  • Progress is saved per character in %LOCALAPPDATA%\RSDragonwilds\Saved\ESLDragonWilds, so updating or reinstalling a mod never loses it. The game's own saves are only read.
  • If ESL is installed but not enabled, skill mods show a "MOD SETUP" card in the world.
  • A skill whose mod is removed drops off the grids and totals a minute after the next start. Its progress is kept.
  • Cards that arrive during the first 20 seconds in a world wait for the loading screen to go. Long card text wraps on a full dark panel, and a card without a badge leaves the icon out.
  • The Action Wheel comes with ESL, so it's no longer a separate mod. Hold Z while looking at something and every installed mod's actions for it sit on one wheel, along with some of the game's own (wild crops, bushes).
  • Wheel settings live in ESLDragonWilds\Wheel\config.txt and are picked up while the game runs. enabled = false turns the wheel off.
  • If the old standalone ActionWheel mod is still installed, it runs the wheel and ESL's stays off, so you never get two.
  • The release holds only file types CurseForge accepts for Dragonwilds UE4SS mods (.txt, .lua, .pak, .utoc, .ucas): the wheel art ships cooked into ESLDragonWilds_P, and the readme, changelog and licence ship as .txt.

Fixes

  • Custom skill badges no longer go missing on character select. The game redraws the grid from its own data, and the badges are now put back even when the selected character can't be read.

Technical notes

  • Public API version 1.0.0. Full reference: docs/ESL_API.md. Template: examples/ExampleSkill (not in the release zip).
  • Registration and XP: ESL.RegisterSkill, the shared 1-99 curve, ESL.Award (once per source), ESL.AddXp (repeatable), ESL.GetLevel and ESL.GetXp for any registered skill. A source the capXp cap clamps to nothing still counts as paid. Only the mod that registers a skill can write its progress.
  • Dependencies: ESL.API_VERSION, ESL.RequireVersion, ESL.VersionAtLeast and ESL.Depends, which reports a missing or outdated mod in the log and on a card.
  • Unlocks: requires on RegisterSkill combines custom skill levels, vanilla levels (read from the game's character save), journal entries and a skill's own books. Also ESL.MeetsRequirements, ESL.RequirementsText, ESL.Gate, ESL.IsUnlocked, ESL.GetVanillaLevel, ESL.HasJournalEntry, ESL.ReadBook and ESL.HasReadBook.
  • Perks: rows can be minor, and perkSummary shows their running total in the skills menu's middle panel.
  • Cards and status: ESL.ShowCard (badge, duration, wrapped text) and ESL.ToggleStatus (optional second line).
  • Events: ESL.OnLevelChanged, ESL.OnSkillUnlocked and ESL.OnCharacterChanged.
  • World helpers: ESL.InWorld, ESL.Location, ESL.LocalJournal, ESL.ScreenOpen, ESL.Every, ESL.RunInGame, ESL.TESTED_BUILD and ESL.GameBuild. ESL.WatchSurfaces is no longer needed and does nothing.
  • One host, the ESLDragonWilds mod, draws every registered skill. Each UE4SS mod has its own Lua state, so skill mods talk to it through files (registry, per-character save, notification outbox). Saves are written through a .tmp file, and the registry and outbox are compacted.
  • Saves are keyed by the character's permanent id from the game save. Older save files move to the new folder once.
  • The game's own new-skill card is never sent, because it is hard-wired to Farming & Fishing.
  • Action Wheel client API, unchanged from the standalone mod: require("actionwheel"), AW.Register, target_name and AW.ShowsTargetName, found on ESL's Scripts path. Mods keep working without the wheel. Reference: docs/ACTION_WHEEL.md. Example: examples/ExampleWheelClient.
  • Badges and wheel textures can be /Game/... asset paths, including textures cooked into a mod's own pak under /Game/Mods/ (loaded through the asset registry, since LoadAsset does not see mod paks), or PNG files as before.
  • The wheel art and ESL's fallback padlock are UTexture2D assets in ESLDragonWilds_P.{pak,utoc,ucas}, cooked for UE 5.6 with the same settings ImportFileAsTexture2D gives a PNG (uncompressed, no mips). The default config.txt names them; configs written by earlier builds with the old PNG defaults move to them on load, and a player's own PNG paths keep working.
  • The Runtime, Saves and Wheel\Runtime folders ship with a keep.txt (a .gitkeep from earlier builds still counts).
  • tools\package.ps1 builds the release zip from an allowlist and refuses any file type CurseForge rejects, and tools\check_release.ps1 runs every offline test (ESL's and the wheel's), checks that no local files are tracked, that the pak has every default texture and that a built zip holds only accepted file types.

This mod has no additional files