promotional bannermobile promotional banner

Ashenfall: Living World

Ashenfall: Living World — a dynamic Dragonwilds overhaul where wildlife, dragons, world events, and player actions continuously change the world around you

Ashenfall: Living World

What if Ashenfall didn't wait for you? Dragons leave evidence, regions react to how you hunt, and the world runs its own events whether you're watching or not — scattered clues build into a trail, the trail can escalate into a full world event, and the aftermath sticks around.

What it does

🔍 Evidence & investigation — scorched ground, disturbed tracks, dropped scales, and distant roars appear as an unseen dragon moves through the region. Evidence accumulates into a trail rather than a single marker.

🦌 Living wildlife — a territory hit by a world event goes quiet afterward — evidence and activity there thin out for a while, the way a spooked region would, before recovering.

🐉 World events — five types (Dragon Migration, Superstorm, Ancient Awakening, Wildfire, Rare Migration), each running a warning → active → resolved arc rather than a flat notification. Weighted odds are fully configurable.

🗺️ Dragon territories — evidence accumulates per-territory across three regions. Enough of it opens up a trackable hunt instead of a flat quest marker.

⚔️ Dragon hunts & trophies — track a dragon into a time-limited encounter, defeat it, and walk away with weighted trophy drops (scale, fang, bone, heart, eye). Miss the encounter window and the dragon gets away — no guaranteed kill.

🏹 Player impact — heavy hunting in one region temporarily suppresses wildlife activity there, then recovers after a cooldown.

🏆 Hunter's Lodge — collect enough trophies and unlock a permanent Lodge display of your hunting record.

🎖️ Milestones — six tracked, from your first trophy to becoming Warden of Ashenfall, with on-screen announcements and progress saved between sessions.

📖 Codex — every event, evidence find, and completed hunt is logged, with trophies tallied and progress saved between sessions.

🧪 Debug/testing commands — trigger evidence, trigger any event by name, record kills, inspect state, and reset — all from the console, so you can preview the whole system without waiting out real timers.

⚠️ One-time setup required

This mod's class names are matched against your game build via UE4SS, since Ashenfall doesn't publish a Blueprint SDK. On first launch, check UE4SS.log — it'll tell you plainly which systems are already active and which need a 2-minute GenerateSDK step (fully walked through in the README) to switch on. Nothing crashes either way; unset systems just quietly wait for their class name.

Requirements

UE4SS (matched to your Dragonwilds build) must be installed first. See the README in the download for step-by-step install and configuration instructions.

Configuration

All timings, escalation chances, hunting thresholds, event weights, and hook targets are editable in scripts/config.lua — no coding required.

Notes

This mod works entirely through the game's existing systems (Lua scripting via UE4SS) and adds no new meshes or textures. It's submitted under the UE4SS Mods class, tagged Gameplay, Creatures & Wildlife, and World Generation.

Readme contents

Setup

Three steps: install UE4SS, install the mod, then configure its hooks.

Do them in order — the hook step needs the game running at least once.

1. Requirements

RuneScape: Dragonwilds 1.0

UE4SS, matched to your Dragonwilds build

2. Install UE4SS + the mod

Install UE4SS if you haven't (CurseForge → RuneScape: Dragonwilds →

Discover → any UE4SS mod → Install sets it up, or see

blog.curseforge.com/how-to-mod-runescape-dragonwilds).

Locate your UE4SS mods folder:

...\RSDragonwilds\RSDragonwilds\Binaries\Win64\ue4ss\Mods\

Copy this package's AshenfallLivingWorld folder into that directory.

Result:

...\ue4ss\Mods\AshenfallLivingWorld\Scripts\main.lua

...\ue4ss\Mods\AshenfallLivingWorld\enabled.txt

Launch the game.

At this point the mod is running — ALW.ShowState in the UE4SS console

should already work (see "Test it" below). But its in-world systems

(dragon visuals, FX, item rewards) are still inactive until step 3.

3. Configure the game-specific hooks (~2 minutes, once)

Ashenfall doesn't publish a Blueprint SDK, so this mod's game-facing

systems are matched against your specific game build rather than

hardcoded, the same way the game's other class-name-dependent mods work.

On first launch, check ue4ss/UE4SS.log (or the console output) — it

prints a clear ACTIVE / WAITING line for each system:

[ALW] ---- Hook status ----

[ALW] PlayerPawnClass WAITING (blank in config.lua)

[ALW] CreatureBaseClass WAITING (blank in config.lua)

[ALW] CreatureDeathFunction WAITING (blank in config.lua)

[ALW] EvidenceFXClass WAITING (blank in config.lua)

[ALW] NotificationWidgetClass WAITING (blank in config.lua)

[ALW] DragonActorClass WAITING (blank in config.lua)

[ALW] GiveItemFunction WAITING (blank in config.lua)

[ALW] LodgeDisplayFunction WAITING (blank in config.lua)

Nothing crashes either way. A WAITING system just keeps tracking phase

and logging to console — evidence trails, event escalation, region

cooldowns, hunts, trophies, milestones, and the debug commands all work

regardless. Only the in-world visuals (FX spawn, HUD toasts, auto-detected

kills, spawning the actual dragon, granting real items, placing the Lodge

display) depend on the class names.

To fill them in:

With the game running, open the UE4SS console (UE4SS prints the

actual key bind to its own log on startup), and run GenerateSDK

(or DumpAllObjects if that's unavailable in your build).

Open the dump and find: the player pawn/character class, the base

creature/wildlife class, its death/kill function, a decal or particle

FX class already used for ground effects, the HUD notification/toast

widget class, the dragon actor class itself, the function used to

grant items to the player (for trophy rewards), and (optional) a way

to place a static display object for the Lodge.

Paste those into scripts/config.lua's HookTargets table (plain

strings, no coding — see the comments above each field for the exact

format expected). Everything else in config.lua — timings, chances,

thresholds — is also freely editable, no coding required.

Restart the game. The hook-status report should now show ACTIVE for

whichever entries you filled in correctly.

Test it

Open the UE4SS console.

ALW.ShowState — should print phase=IDLE event=nil evidence=0.

ALW.TriggerEvidence emberfall_ridge four times — territory evidence

climbs, and after the 3rd a "Hunt available" line appears.

ALW.ShowTerritory emberfall_ridge to check.

ALW.StartHunt emberfall_ridge — phase goes to ENCOUNTER.

ALW.DefeatDragon emberfall_ridge — should log a defeat, award two

weighted trophies, and reset that territory's evidence to 0.

ALW.ShowCodex to see the trophy tally and hunt count.

Repeat evidence → hunt → defeat in moss_hollow and shattered_coast

— should trigger the "Territorial" milestone. Keep going until total

trophies hit 5 — should trigger "Warden of Ashenfall" and unlock the

Lodge. ALW.ShowLodge and ALW.ShowMilestones to check.

ALW.TriggerEvent Superstorm — WARNING → (~60s) ACTIVE, at which

point ALW.ShowTerritory <the territory it picked> should show

suppressed=true. RESOLVED (~5 more min) fires the "Storm Chaser"

milestone. Shrink PulseIntervalSeconds etc. in config.lua for

faster testing.

ALW.RecordKill some_region six times (matches HeavyHuntingThreshold)

— should log the region entering cooldown.

Save and reload. ALW.ShowState / ALW.ShowCodex again should match

pre-reload state (proves JSON persistence in alw_state.json).

Anything fail? Check ue4ss/UE4SS.log for [ALW] lines and send

them over.

Ashenfall: Living World Team

profile avatar
  • 3
    Projects
  • 494
    Downloads