Post news Report RSS
0.4 - Thirteen languages and a living ludus
Version 0.4 is out: Italian, Korean and Traditional Chinese join the mod, the ludus gets day and night, a Medicus and a palus that obeys, paid guards are Roman soldiers, and the odds before a fight now match the fight.
Posted by Sindarry on Sep 14th, 2026
Version 0.4 is out. It comes almost entirely from playtest reports: a ludus that finally behaves like one, guards who look like guards, and a mod that now speaks every language Bannerlord does.
Thirteen languages
- Italian, Korean and Traditional Chinese join the ten existing languages: 5,370 texts each, plus every armour name and the whole character creation.
- English players now actually see English. Bannerlord never reads a translation file when the game is set to English, so the mod's own French was showing. That is fixed.
- A language the mod does not speak falls back to English, not French, and switching language mid-game now updates the lists (seasons, renown tiers...) without a restart.
A ludus that lives
- The palus obeys at once. A man sent to training goes straight to his post. Men who changed exercise used to stand still: that was a bug, now gone. Three places at level 1, one more per level, and varied strike and lifting animations.
- Day and night. The HUD shows the hour. In the evening the men eat at the table, at night they sleep in the dormitory, and a Sound the wake-up call button starts the training day whenever you want.
- The Medicus. Wounded men leave the courtyard and lie in the infirmary beds.
- Roman guards. A guard you pay appears the moment you hire him, in a Montefortino or Coolus helmet and lorica hamata or segmentata. Legionary cuirasses are now reserved for guards, so your gladiators can never be mistaken for them during a revolt. Any you already owned are swapped for a cuirass of the same rarity.
- The HUD follows you to the market and the gala, and every resource is now labelled.
The sand
- One combat model. The odds shown before a fight now come from the same model as the 3D fight. A fight announced at 100% no longer ends in defeat. The forecast reads plainly: -24% health: you +10% / him -1%.
- Tournaments: you play your own matches, 2v2 is counted in pairs, and the thumb belongs to the host of the games, not to the winner.
- A watched match now shows its report, and every man has at least two fights per season.
And also
- Business that arrives now pops up; what you postpone waits in the ludus book.
- Blacksmith resale follows rarity; eight slaves stand behind the slave trader; interface sounds; pass the season from TAB.
- The earthquake only strikes once the provincial circuit is open to you.
It is still an alpha. Your bug reports are what turn it into a game, and Spartacus.log in the mod folder does half the work.
Nexus: nexusmods.com/mountandblade2bannerlord/mods/13124
Discord: discord.gg/9qQY7fbfvQ
Post a comment
");
var textarea = $("#reply"+post);
var mentions = $("#commentform .mentions-input").length > 0;
if(mentions) {
textarea.mentionsInput({source: "https://www.moddb.com/html/scripts/autocomplete.php?a=mentions&p=home&l=6&u=666"});
}
$("#cancelreply"+post).click(function() {
$("#"+post+" div.replypostholder").remove();
});
$("#savereply"+post).click(function() {
postcontent = mentions ? textarea.mentionsInput("getValue") : textarea.val();
if(postcontent) {
$(this).remove();
$("#cancelreply"+post).remove();
textarea.after("Saving your reply");
if(mentions) {
$("#commentsummary").mentionsInput("setValue", postcontent);
} else {
$("#commentsummary").val(postcontent);
}
$("#commentform input[name=replyid]").val(post);
$("#commentsubmit").click();
} else {
$(this).text("Please enter a comment");
}
});
}
return false;
});
$(".mods72857watch").click(function(){ $.achtung({message: "Only members can follow mods. Sign up today and follow your favorites.", className: "achtungFail", timeout:5}); return false; }); $(".downloadautotoggle").click(function(){ $(".downloadon").slideToggle(); return false; });
$(".c76625d26ff7f0c55142db2c328da119watch").click(function(){ $.achtung({message: "Only members can follow mods. Sign up today and follow your favorites.", className: "achtungFail", timeout:5}); if($(this).hasClass("button")) { $(this).addClass("buttonon"); } return false; });
$(".togglertxinfo").click(function(e){
if($(this).attr("href") == "#rtxremix") {
localStorage.setItem("rtxtoggled", true);
$("#rtxremix").show();
return true;
} else {
localStorage.removeItem("rtxtoggled");
$("#rtxremix").hide();
return false;
}
});
function cookieScript(e) {
var status = CookieScript.instance.currentState().categories.includes("targeting") ? "false" : "true";
var cookies = CookieScript.instance.currentState().categories.includes("performance") ? "true" : "false";
var cookie_data = { npa : {status:status,cookies:cookies,version:"1.0.13",chosen:"true"}, expires : 365 };
Cookies.set("dfp-npa", cookie_data.npa, { expires: cookie_data.expires, secure: true });
if (typeof gtag === "function") { gtag("consent", "update", {"ad_storage": cookie_data.npa.status == "false" ? "granted" : "denied", "ad_user_data": cookie_data.npa.status == "false" ? "granted" : "denied", "ad_personalization": cookie_data.npa.status == "false" ? "granted" : "denied", "analytics_storage": cookie_data.npa.cookies == "true" ? "granted" : "denied"}); }
if(cookie_data.npa.status == "false") {
// personalize
if (typeof permutive === "object") { permutive.consent({ "opt_in": true, "token": "Allow All" }); }
} else {
// don't personalize
if (typeof permutive === "object") { permutive.consent({ "opt_in": false }); }
Cookies.remove("permutive-id", { domain: "moddb.com", secure: true });
}
}
if(!Cookies.get("dfp-npa")) {
Cookies.set("dfp-npa", {status:"false",cookies:"true",version:"1.0.13",chosen:"false"}, { expires: 60, secure: true });
}
window.addEventListener("CookieScriptAcceptAll", cookieScript);
window.addEventListener("CookieScriptAccept", cookieScript);
window.addEventListener("CookieScriptReject", cookieScript);
window.addEventListener("CookieScriptClose", cookieScript);
$("a.thickbox").click(function() { $.colorbox({href:$(this).attr("href"), rel:$(this).attr("rel"), open:true, onOpen:function(){ $(".nextmediabox").hide(); }, onClosed:function(){ $(".nextmediabox").show(); }}); return false; }); });