Releases: ProJ-Yeet/Medieval2-GUI-Toolkit
Release list
M2 GUI-Kit V2.4.3
v2.4.3
The toolkit in Spanish, and German that no longer leaks English. The
second translation of the interface: every one of its 8,120 strings in
Spanish, offered in Settings as a draft for a native speaker to read over.
Translating it turned up places where the code put English words into a
translated sentence; those are fixed for German too, along with one that
wrote German into a trigger file.
New
- Español. Settings > Interface language now offers Español (Spanish) -
borrador. Every screen, button, finding and message is in Spanish (Spain),
with the game's own words where the Spanish release has them (séquito
for ancillaries, turno for a turn). It is marked a draft until a Spanish
speaker has read it; anything that reads wrong is worth reporting. Mod
content, unit names and file names stay as the mod has them.
Fixed
-
The trigger editor wrote its joiner in your language. With the
interface in German, choosing oder between two conditions wroteoder
into the trigger file instead ofor. The joiner is now always written as
the file spells it, whatever the interface language. -
No English left inside translated sentences. Nearly thirty messages
took a word from the code in English (a plural ending, "wider", "summer or
winter", "(nobody)", a module name). Each is now a whole sentence or a
translated word in every language. -
German is complete again. The eight strings the transfer fixes of
v2.4.2 added are in German. -
My Changes no longer goes blank when it is reopened before it has
finished reading the first time.
M2 GUI-Kit beta 2026-10-02
beta 2026-10-02
Everything in v2.4.3 with the campaign map switched on: the interface in
Spanish, offered as a draft in Settings, including every panel of the
campaign map editor; the trigger joiner always written as and/or; no
English left inside German or Spanish sentences.
Nothing on the map itself changed since beta 2026-10-01.
This is still a beta for the reason the first one was: the campaign map
editor is the first thing this toolkit does that WRITES to a campaign, and a
campaign is the one part of a mod where a bad write shows up ten turns in rather
than the moment you load it. Everything it writes is backed up and one Undo
away. Read the plan before you press Apply.
M2 GUI-Kit V2.4.2
v2.4.2
The toolkit in German, and a transfer that lands files where you point
it. The first translation of the interface: every one of its 8,112 strings
in German, offered in Settings as a draft for a native speaker to read over.
And two fixes to Unit Transfer from a tester's report.
New
-
Deutsch. Settings > Interface language now offers Deutsch (German) -
Entwurf. Every screen, button, finding and message is in German, with the
game's own words where the German release has them (Gefolge for
ancillaries, Runde for a turn). It is marked a draft until a German
speaker has read it; anything that reads wrong is worth reporting. Mod
content, unit names and file names stay as the mod has them. -
Room for longer words. Every screen was measured in German at desktop
width and on a phone with nothing clipped; the one squeeze, the Buildings
view toggle, no longer shrinks.
Fixed
-
Reroute lands files in the folder you pick. Picking
unit_models/_units/umbar_swapwrote the files a whole source tree deeper,
underumbar_swap/_Units/Umbar/. They now land in the folder picked; only
when two files would land on one path is the full structure kept. -
A unit whose dictionary the destination already uses is a conflict. A
new unit type with a dictionary name the destination had (97 of Third Age
Reforged's units against Divide and Conquer) became a second unit on the
same dictionary, and overwrote the other unit's name, description and cards.
It is now caught as a conflict: Rename keeps the type and gives it a new
dictionary, and a rename never reuses a type or dictionary the destination
already has. -
The unit card choices say what they do. Keep only fills the faction
folders that have no card; the panel now says so, along with what
Overwrite does.
M2 GUI-Kit beta 2026-10-01
beta 2026-10-01
Everything in v2.4.2 with the campaign map switched on: the interface in
German, offered as a draft in Settings, including every panel of the campaign
map editor, and the two Unit Transfer fixes (a reroute that lands files in
the folder picked, and a dictionary name the destination already uses caught
as a conflict).
Nothing on the map itself changed since beta 2026-09-30.
This is still a beta for the reason the first one was: the campaign map
editor is the first thing this toolkit does that WRITES to a campaign, and a
campaign is the one part of a mod where a bad write shows up ten turns in rather
than the moment you load it. Everything it writes is backed up and one Undo
away. Read the plan before you press Apply.
M2 GUI-Kit V2.4.1
v2.4.1
Transfer does more of the job, M2EX mods are read the way M2EX reads them,
and the screens fit the window. Everything since v2.4.0: a transferred unit
can arrive recruitable, carrying only the skins its new owners wear, with a
banner the destination did not have; an M2EX mod that reads its battle models
as text is read and written through that text; a cloned faction arrives with
its victory conditions and campaign descriptions; and the layout holds at
every interface size, down to a phone.
Measured on the mods the reports came from: Tsardoms 3.0 (the recruitment lag)
and M2EX's own files (the text battle models).
New
-
Let the faction recruit them. A tick on the transfer page adds the unit's
recruit pools in the same job as the unit, through the Recruitment tab's own
writer. A renamed copy of a unit the destination has gets the original's
pools, held to its owners; a new unit goes into the building levels that
recruited it in the source, where the destination has a level of that name.
Each pool is listed before you apply, one Undo takes them back with the
unit, and a unit left with none says so. -
Copy only the skins the new owners wear. An option on the transfer: the
copied models keep the texture records of the factions that will own the
unit, and the files only the others named are not copied. The plan says how
many files and MB that saved. -
A banner the destination has not got. A unit whose
bannerline names a
banner missing from the destination is caught in the plan: bring the banner
across (cut to the destination's factions, with a row for each owner) or use
main_cavalry/main_infantryinstead. Neither leaves a Health finding. -
M2EX mods that read their battle models as text. A mod whose
descr_caps_ex.txtsaysmodel_battle_source texthas its models read from
and written todescr_model_battle.txt, so a transfer into or out of one
lands in the file the game reads, converting between the two. The Home card
says which file a mod reads, and Health warns when the one the game does not
read has been changed since. -
A cloned faction's campaign files. Add a faction now writes the donor's
victory conditions under the new name in every campaign (itshold_regions
left empty, since those provinces are the donor's) and a title and
description on the faction picker, and says what is left for you to fill. -
New resources on M2EX. On a mod marked as running on M2EX, Minor Files >
Resources no longer flags a 29th resource as ignored, and offers New
resource and Clone: the record, its name and tooltip, and its icon. -
Open any screen in a new tab. The Home card's screen buttons and the side
menu are links now: a middle click, Ctrl+click or Open in new tab opens that
screen for that mod beside the one you are in. -
The turns beside a pool's rate on the Unit Editor's Recruitment tab, as
the Buildings editor shows them: "= 8.9 turns" under 0.112.
Fixed
-
The Buildings editor no longer freezes on a big level. On Tsardoms'
militia barracks (1,131 recruit pools) a ▲ on a pool's rate froze the page,
and every open tab of the toolkit with it, for a third of a second a click.
Ten fast clicks now take a fifth of a second in all. -
The layout fits the window at every interface size. The Minor Files tab
strip is one row that scrolls instead of tabs three lines tall pushing the
page sideways, + New and Port from another mod are the size of their
labels, and the breakpoints now follow Settings' interface size, not only the
window's. Nothing scrolls sideways at 1280, 1600 or 1920 px at 60-125%, or on
a phone. -
Restart now to apply it keeps its console. With Keep the console window
open ticked, a restart came back with no console; it now starts on the
console interpreter. -
A faction clone's shield. A cloned faction pointed at shield names the
interface sheets did not have and showed the wrong button; it gets shields of
its own, and the Factions editor, Health and the faction audit find and
repair the ones made before. -
A sprite at the far LOD. A transferred model whose sprite path the
destination already used for a different sprite showed the destination's;
it now arrives under a name of its own. -
A models file with a hand edit. A
battle_models.modeldbwith a stray
letter after a0is named as the hand edit it is, with the line, and a
blankentry holding a name reads.
M2 GUI-Kit beta 2026-09-30
beta 2026-09-30
Everything in v2.4.1 with the campaign map switched on, plus four changes
on the map from users' reports: a watchtower's line of sight drawn on the map,
a region rename that no longer takes seconds, painting that survives saving a
settlement, and a way back to the brush from the province itself.
This is still a beta for the reason the first one was: the campaign map
editor is the first thing this toolkit does that WRITES to a campaign, and a
campaign is the one part of a mod where a bad write shows up ten turns in rather
than the moment you load it. Everything it writes is backed up and one Undo
away. Read the plan before you press Apply.
On the map
-
A watchtower's line of sight. Every watchtower's reach, 10 tiles, drawn
filled or as an outline (w, or the box in the markers panel), and drawn
under the pointer while one is being placed or dragged, so its spot can be
chosen by what it covers. -
Paint its tiles. The region's own panel has a button that picks up the
brush with that province as its colour, for adding tiles to it or redrawing
its border.
Fixed on the map
-
Painting is no longer lost to a settlement save. Painting a province and
then making a settlement its faction's capital threw the unsaved painting
away. It now carries on where it was, unless a map image it painted was
changed outside the tool. -
Renaming a region is quick. The first rename planned in 11 seconds on
Divide and Conquer, and every save after it paid that again; it now takes
about one.
M2 GUI-Kit V2.4.0
v2.4.0
Animations travel with a unit, and can be edited where the game plays them.
Everything since v2.3.9: a mod's animation packs read in place, every action a
model has played in the Models viewer, a transferred unit bringing the
animations the destination lacks, an edit saved straight into the pack, and a
skeleton or one animation brought from another mod. Nothing is unpacked or
repacked: a pack is only ever added to, and one Undo takes each change back.
Every change to a pack was proved in the game on Third Age Reforged with units
from Divide and Conquer: Hobbit Infantry, Suriut Chariots, Trolls, the Moria
Balrog and Steward's Guard all animate after the transfer.
New
-
Every animation a model has, in the Models viewer. The actions are the
filled slots of each of the model's skeletons, read straight out of the mod's
pack.dat(or vanilla's, for a mod that ships none), all 687 slots named and
grouped: idles, walks, attacks, deaths and the rest. A slot's impact frame
and its sound and effect cues are marked on the scrubber. The weapon
skeletons move the weapon, a rider can be shown on his mount, a campaign
model's.casplays too, and another mod's take on the same action can be
played beside it. -
A transfer brings the unit's animations. A skeleton the destination's
pack does not have is appended to it with every animation its slots name,
reusing what the destination has already, byte for byte, under any name.
DaC's Balrog costs a few MB, not a copy of DaC's 352 MB pack. The copied
model is pointed at the name the skeleton lands under, and the transfer's
one Undo cuts the pack back. The loose.casfiles and a
descr_skeleton.txtblock are written too, so a modder who removes the
packs to have the game rebuild them keeps the unit. -
An edit saved into the pack. The animation editor now opens on an action
played from the pack and saves the edit there, under a new name, with the
skeleton's slot pointed at it, so the game plays it on every model with that
skeleton. What the editor previews is exactly what it writes. -
Another mod's animation in one slot. Beside the model, Use it here puts
another mod's take on an action into this mod's slot. When the two
skeletons' bones differ, the animation is carried across bone by bone. -
A skeleton from another mod. Bring a skeleton from another mod… in the
animation panel ports one skeleton with all its animations. If this mod
already has a skeleton of that name, it comes in under a name of its own,
and the model on screen can be pointed at it. -
Animation packs on the Home screen. Each mod card has an Animation
packs line: what the packs hold that nothing plays, and a compaction that
writes them again without it, the old packs kept until you let them go. All
three mods measured were already clean.
Fixed
-
A transfer no longer breaks the destination's unit file in three ways
the game rejects outright: anownershipor era line naming a faction the
destination has not got (it is left out, and a unit left with no owner is
given to the rebels), an engine's shot effect the destination lacks
(commented out), and a soldier count above what the destination's engine
takes (DaC's 120 Balrogs become 100 in a mod without M2TWEOP's higher cap). -
The editor says what a loose file does. A loose
.casdoes not override
an animation the pack holds, so the editor no longer tells you a rebuild with
an outside tool is the way; it saves into the pack instead. -
Two skeletons whose names differ only in case (vanilla has a body and a
weapon skeleton calledMTW2_Halberd_PrimaryandMTW2_Halberd_primary)
are told apart. -
The interface starts with an ad blocker on. One of its scripts was named
so that some blockers dropped it, and the page never finished loading.
M2 GUI-Kit beta 2026-09-26
beta 2026-09-26
Everything in v2.4.0 with the campaign map switched on, plus the rest of
Mylae's New Map Editor brought into the map screen: the real world picked
anywhere on Earth, reference and historical maps, lakes and seas, ground types
and climates from real data, historic sites, a new campaign on any stretch of
the real world, and the layers exported as one bundle.
This is still a beta for the reason the first one was: the campaign map
editor is the first thing this toolkit does that WRITES to a campaign, and a
campaign is the one part of a mod where a bad write shows up ten turns in rather
than the moment you load it. Everything it writes is backed up and one Undo
away. Read the plan before you press Apply.
On the map
-
A world picker. Pick it on a world map… on the Real world tab opens the
whole world before any box exists: search for a place, draw the map's box,
move it, resize it and turn it, with the size of a tile in km shown as you
go. -
Reference and historical maps. The backdrop can be OpenStreetMap,
OpenTopoMap, OSM Humanitarian, a relief drawn from the real heights, or
OpenHistoricalMap at any year from 500 to 1600. -
Lakes, lagoons and seas. The real outlines, an island in a lake kept dry,
shown over the map and made sea in one stroke with the Paint tab's Undo. -
Ground types and climates from the real world. Ground types from
OpenStreetMap land use or from ESA land cover, and climates from the
Köppen-Geiger zones, each a preview and one Undo. -
A new campaign on the real world. The new-map form can start a campaign
on any box picked on the world map, with its cities picked there too, a
province round each. It loads and validates clean. -
Historic sites. Castles, towers, monasteries and the rest of 21 kinds of
site from OpenStreetMap, marked on the map, any of them made a fort, a
watchtower or a new region. -
Every OpenStreetMap request shown chunk by chunk. A stretch that never
answers costs only that stretch, and can be asked again with a click. -
The map bundle. Export the map bundle puts the map's layers, its box
and a list of its provinces with their cities and ports in one zip, in the
shape Mylae's editor exports.
Everywhere else
Everything in v2.4.0: animations played out of a mod's packs in the Models
viewer, a transfer bringing the unit's animations, an edit saved into the pack,
another mod's animation or skeleton brought across, the packs' housekeeping on
the Home screen, and the transfer and start-up fixes. See its notes.
M2 GUI-Kit V2.3.9
v2.3.9
Walls, agents, and whole things brought across. Everything since v2.3.8:
screens for descr_walls.txt and descr_character.txt; a building tree, a
settlement model and any data/ zip brought in from somewhere else; campaign
models drawn standing up rather than piled on the ground; and animations played
out of a pack that was unpacked in place.
New
-
Walls, gates and towers. A tab edits
descr_walls.txt, which is per wall
level (0 to 4), not per culture: the wall, the gateway and its gate types, the
tower's firing levels and the gatehouse. It is held against the buildings
file: everywall_levelhas a block, and every building'stower_levelhas
enough firing levels on its wall. It found ROCSS's three emptyshot_gfx
lines. -
Agents and generals. A tab edits
descr_character.txt: each agent type's
actions, wage and action points, and each faction's strat models, battle
model and kit, with a grid of which faction has which type. A strat model's
card in the Models Editor lists every character block it stands in for, as
links, and each model on the tab links back to its card. It found DaC's two
englandinquisitor blocks. -
A building tree from another mod. From another mod… on the Buildings
screen brings one or more building lines of another installed mod across
whole: the block, its text (per faction and per culture, carried to the new
name) and its building cards. Every faction and culture this mod lacks is
mapped or left out, a recruit this mod lacks is left out and listed, a hidden
resource it lacks is added, and a level that needs a line, resource or
religion it lacks is refused with a one-click add that line. A same-named
line can be replaced in place. One backup, one Undo. -
A settlement model imported and put on a culture's level. Import…
beside each level's model on the Cultures screen (and the fort, fort wall,
fishing village and watchtower lines) copies a settlement.casfrom another
mod or from disk, with the textures it names, into a folder where nothing is
written over, and puts it on that line, keeping its settlement plan. -
Any
data/zip loaded back. My changes takes any zip laid out under
data/(the changed files, a faction's files, a whole campaign) and plans
each file: new, the same, replacing (with the records named) or refused. Stale
compiled maps are deleted, and one Undo takes it all back.
Fixed
-
Campaign models drawn in their pose. A skinned strat model is now placed
by its skeleton, each piece where its bone puts it, instead of piled on the
ground. All 296 characters in both mods stand. 53 ROCSS models with a baked
animation, its diplomat among them, decode at all. -
Strat textures in the game's order. A material named
x.tgais looked for
asx.tga.dds, thenx.tga, and never asx.dds. DaC's Amroth general
paints, and 864 materials that have both a real.tgaand a.tga.ddsnow
show the.tga.dds, as the game does. -
Animations from an unpacked pack play. A
pack.datunpacked in place keeps
each file under the path it was packed from, and the viewer found none of
them. It now looks where the game reads, then under the nested path, and reads
those entries with the unpacked skeleton's bones: 40,460 of DaC's 41,501. An
edit saves as a loose.casbeside the entry, never over it.
Also
- A mod's layers save faster where numpy is installed. The release runs as
before without it.
M2 GUI-Kit beta 2026-09-25
beta 2026-09-25
Everything in v2.3.9 with the campaign map switched on, plus the rest of
the map roadmap: the real world behind the map, a map resized or made from
nothing, layers generated from the real world, every tile as text, a campaign
brought in from another mod, a horde start, and a validator that listens to the
people who fix these maps by hand.
This is still a beta for the reason the first one was: the campaign map
editor is the first thing this toolkit does that WRITES to a campaign, and a
campaign is the one part of a mod where a bad write shows up ten turns in rather
than the moment you load it. Everything it writes is backed up and one Undo
away. Read the plan before you press Apply.
On the map
-
Resize the map. The new Size tab under Map grows or shrinks it by any
number of tiles on each edge. New ground is the map's own sea. Every
coordinate the game's files hold moves with it: the strat, the events, the
custom battle tiles, the custom battles and the campaign scripts (DaC: 7,149
coordinates in 9 files). A shrink that would leave a settlement, character or
resource standing nowhere is refused, naming the file and line of each. -
A new campaign on a map made from nothing. New map on the same tab makes
a campaign with its own map: an island of the size and number of provinces
you ask for, a city in each, one province and a leader per faction you pick,
the rest held by rebels. It loads and validates clean, and your base map is
not touched. -
Layers from the real world. The new Generate tab makes heights from the
real ground under the map's box, at the game's own scale; ground types from
the heights; climates from the ground types; and rivers, cliffs and volcanoes
from OpenStreetMap, drawn the way the game can build a river (no diagonal
steps, no loops, one source each, never under a city). Each shows its picture
before it writes. -
The real world behind the map. The Real world tab aligns the map to a
box (typed, or abbox_coords.txt), draws OpenStreetMap over it, fetches the
real coastline and marks every land tile on its water side, and finds places
by name. It is off until Settings turns it on, and nothing is sent until
then. -
Every tile as text, and a campaign as a zip. The Export tab writes a
.tsvwith a row per tile (region, owner, ground, feature, climate,
height…), and downloads one campaign at itsdata/paths. -
A campaign from another mod. From another mod under New campaign
brings another installed mod's campaign in as a new one. Its factions are
mapped onto your slots, and what your mod lacks is substituted, left out and
counted. -
A horde start for a faction that holds nothing. The people panel's Horde
start either puts leaders and armies on the map from turn one, or has them
arrive later the way vanilla's Mongols do.
Validator
From a modder's feedback, and checked against the game itself:
- Ports are drawn on their dock, the sea tile the game shows the port on,
not one tile inland. - The same resource twice on a tile is no longer a finding. The game loads
every copy and the province trades all of them, so modders stack them on
purpose, and the old Fix deleted lines the game uses. - A settlement on dense forest is now fatal: a battle there can crash.
- A river crossing on uneven ground warns. A battle map averages the 5x5
tiles around the fight, so a bridge under a mountain ends up in mid-air.
Smooth, on each crossing, levels the ground around it and eases it back
into the hills.
Also in this build
Everything in v2.3.9: walls, gates and towers; agents and generals; a
building tree, a settlement model and any data/ zip brought in from
elsewhere; campaign models drawn in their pose; strat textures in the game's
order; and animations from a pack unpacked in place. See RELEASE_2_3_9.md.