ESL:DragonWilds 1.0.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.txtand are picked up while the game runs.enabled = falseturns 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.GetLevelandESL.GetXpfor any registered skill. A source thecapXpcap 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.VersionAtLeastandESL.Depends, which reports a missing or outdated mod in the log and on a card. - Unlocks:
requiresonRegisterSkillcombines custom skill levels, vanilla levels (read from the game's character save), journal entries and a skill's own books. AlsoESL.MeetsRequirements,ESL.RequirementsText,ESL.Gate,ESL.IsUnlocked,ESL.GetVanillaLevel,ESL.HasJournalEntry,ESL.ReadBookandESL.HasReadBook. - Perks: rows can be
minor, andperkSummaryshows their running total in the skills menu's middle panel. - Cards and status:
ESL.ShowCard(badge, duration, wrapped text) andESL.ToggleStatus(optional second line). - Events:
ESL.OnLevelChanged,ESL.OnSkillUnlockedandESL.OnCharacterChanged. - World helpers:
ESL.InWorld,ESL.Location,ESL.LocalJournal,ESL.ScreenOpen,ESL.Every,ESL.RunInGame,ESL.TESTED_BUILDandESL.GameBuild.ESL.WatchSurfacesis no longer needed and does nothing. - One host, the
ESLDragonWildsmod, 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.tmpfile, 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_nameandAW.ShowsTargetName, found on ESL'sScriptspath. 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, sinceLoadAssetdoes 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 settingsImportFileAsTexture2Dgives a PNG (uncompressed, no mips). The defaultconfig.txtnames 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,SavesandWheel\Runtimefolders ship with akeep.txt(a.gitkeepfrom earlier builds still counts). tools\package.ps1builds the release zip from an allowlist and refuses any file type CurseForge rejects, andtools\check_release.ps1runs 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

