Modding Start


So I didn't know how to start modding. Literally looked everywhere. Found a random post that pointed me where. Made this guide to help novices get started.

For the next level see this discussion:

Workshop Disclaimer + Link

I wrote this guide as a time killer til workshop modders could save us. Now that its here, Ill leave modding to the pros

To follow more recent modding topics, go to this forum:


It is not recommended to edit the vanilla files direct (data.pack) but creating own pack files with RPFM.

Currently there is no mod support or mod manager meaning that custom pack files won't be loaded.

There is a workaround for this creating movie files via rpfm but that is not a perfect solution.

So my advice is: as soon as mod support is given, change your edited data back to the original one and create your own packfile containing the changes you want to appear.

How To Get Started

Download RPFM from, and close Warhammer 3

Launch RPFM, allow it to download schemas/templates when prompted

In RPFM, navigate PackFile > Preferences > Settings , check Allow Editing of CA Packfiles

Make a backup of SteamLibrary\steamapps\common\Total War WARHAMMER III\data\data.pack

Navigate PackFile > OpenPackfile, select SteamLibrary\steamapps\common\Total War WARHAMMER III\data\data.pack

Select PackFile > SavePackFile

Launch Warhammer 3, you will see an "!" next to saves indicating they detect the data.pack has changed since they were created.

Rift Edits

In RPFM PackFile_Contents, navigate Script > Campaign > wh3_main_chaos > realms > wh3_realm_common.lua

In the text file, modify line 94, 98, 101, 104, and 105 desired.

Event Chain start is in the lines just below: Script > Campaign > wh3_main_chaos > realms > wh3_realm_common.lua right under where the rift timing settings were.

-- trigger ursuns roar event





return not are_any_rifts_open(true) and (cm:turn_number() == 38 or cm:get_saved_value("ursuns_roar_available"));



cm:set_saved_value("ursuns_roar_available", true);

local chance = cm:get_saved_value("chance_to_trigger_ursuns_roar") or 10;

local roll = cm:random_number(100);

out.chaos("Turn " .. cm:turn_number() .. " - Trying to trigger the Ursun's Roar event, rolled " .. roll .. " - if this is lower than " .. chance .. " then we'll proceed");

if roll <= chance then


cm:set_saved_value("chance_to_trigger_ursuns_roar", false);


cm:set_saved_value("chance_to_trigger_ursuns_roar", chance + 10);





======== return not are_any_rifts_open(true) and (cm:turn_number() == 38 or cm:get_saved_value("ursuns_roar_available"));


it will start to give a growing chance for every turn after the number here.


Thank you to Steam User that posted this in a random discussion. Will edit this when I find discussion with your full name.

Credit RedDragon0908 for the disclaimer which I strongly suggest

Credit DrunkCowboy for the rift edits


More Total War: WARHAMMER III guilds