Skip to content

Releases: ProJ-Yeet/Medieval2-GUI-Toolkit

M2 GUI-Kit V2.4.3

Choose a tag to compare

@ProJ-Yeet ProJ-Yeet released this 02 Oct 04:46

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 wrote oder
    into the trigger file instead of or. 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

Pre-release

Choose a tag to compare

@ProJ-Yeet ProJ-Yeet released this 02 Oct 04:46

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

Choose a tag to compare

@ProJ-Yeet ProJ-Yeet released this 01 Oct 13:32

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_swap wrote the files a whole source tree deeper,
    under umbar_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

Pre-release

Choose a tag to compare

@ProJ-Yeet ProJ-Yeet released this 01 Oct 13:34

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

Choose a tag to compare

@ProJ-Yeet ProJ-Yeet released this 30 Sep 16:33

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 banner line 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_infantry instead. Neither leaves a Health finding.

  • M2EX mods that read their battle models as text. A mod whose
    descr_caps_ex.txt says model_battle_source text has its models read from
    and written to descr_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 (its hold_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.modeldb with a stray
    letter after a 0 is named as the hand edit it is, with the line, and a
    blank entry holding a name reads.

M2 GUI-Kit beta 2026-09-30

Pre-release

Choose a tag to compare

@ProJ-Yeet ProJ-Yeet released this 30 Sep 16:33

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

Choose a tag to compare

@ProJ-Yeet ProJ-Yeet released this 26 Sep 14:17

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 .cas plays 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 .cas files and a
    descr_skeleton.txt block 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: an ownership or 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 .cas does 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 called MTW2_Halberd_Primary and MTW2_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

Pre-release

Choose a tag to compare

@ProJ-Yeet ProJ-Yeet released this 26 Sep 14:17

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

Choose a tag to compare

@ProJ-Yeet ProJ-Yeet released this 25 Sep 02:49

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: every wall_level has a block, and every building's tower_level has
    enough firing levels on its wall. It found ROCSS's three empty shot_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
    england inquisitor 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 .cas from 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.tga is looked for
    as x.tga.dds, then x.tga, and never as x.dds. DaC's Amroth general
    paints, and 864 materials that have both a real .tga and a .tga.dds now
    show the .tga.dds, as the game does.

  • Animations from an unpacked pack play. A pack.dat unpacked 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 .cas beside 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

Pre-release

Choose a tag to compare

@ProJ-Yeet ProJ-Yeet released this 25 Sep 02:49

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 a bbox_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
    .tsv with a row per tile (region, owner, ground, feature, climate,
    height…), and downloads one campaign at its data/ 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.