diff --git a/src/common/console/c_bind.cpp b/src/common/console/c_bind.cpp index 609f2bf86..7dcabf96c 100644 --- a/src/common/console/c_bind.cpp +++ b/src/common/console/c_bind.cpp @@ -59,11 +59,11 @@ const char *KeyNames[NUM_KEYS] = nullptr, "Escape", "1", "2", "3", "4", "5", "6", //00 "7", "8", "9", "0", "-", "=", "Backspace","Tab", //08 "Q", "W", "E", "R", "T", "Y", "U", "I", //10 - "O", "P", "[", "]", "Enter", "LCtrl", "A", "S", //18 + "O", "P", "[", "]", "Enter", "Ctrl", "A", "S", //18 "D", "F", "G", "H", "J", "K", "L", ";", //20 - "'", "`", "LShift", "\\", "Z", "X", "C", "V", //28 + "'", "`", "Shift", "\\", "Z", "X", "C", "V", //28 "B", "N", "M", ",", ".", "/", "RShift", "KP*", //30 - "LAlt", "Space", "CapsLock", "F1", "F2", "F3", "F4", "F5", //38 + "Alt", "Space", "CapsLock", "F1", "F2", "F3", "F4", "F5", //38 "F6", "F7", "F8", "F9", "F10", "NumLock", "Scroll", "KP7", //40 "KP8", "KP9", "KP-", "KP4", "KP5", "KP6", "KP+", "KP1", //48 "KP2", "KP3", "KP0", "KP.", nullptr, nullptr, "OEM102", "F11", //50 @@ -717,13 +717,25 @@ void C_SetDefaultKeys(const char* baseconfig) while ((lump = fileSystem.FindLumpFullName(baseconfig, &lastlump)) != -1) { if (fileSystem.GetFileContainer(lump) > 0) break; - ReadBindings(lump, true); + // [SW] - We need to check to see the origin of the DEFBINDS... if it + // Comes from an IWAD/IPK3/IPK7 allow it to override the users settings... + // If it comes from a user mod however, don't. + if (fileSystem.GetFileContainer(lump) > fileSystem.GetMaxIwadNum()) + ReadBindings(lump, false); + else + ReadBindings(lump, true); } lastlump = 0; while ((lump = fileSystem.FindLump("DEFBINDS", &lastlump)) != -1) { - ReadBindings(lump, false); + // [SW] - We need to check to see the origin of the DEFBINDS... if it + // Comes from an IWAD/IPK3/IPK7 allow it to override the users settings... + // If it comes from a user mod however, don't. + if (fileSystem.GetFileContainer(lump) > fileSystem.GetMaxIwadNum()) + ReadBindings(lump, false); + else + ReadBindings(lump, true); } } diff --git a/src/common/engine/namedef.h b/src/common/engine/namedef.h index 02f4c6d7c..538242e54 100644 --- a/src/common/engine/namedef.h +++ b/src/common/engine/namedef.h @@ -462,6 +462,7 @@ xx(Friend) xx(Strifeally) xx(Standing) xx(Countsecret) +xx(NoCount) xx(Score) xx(Roll) xx(Scale) diff --git a/src/common/scripting/backend/codegen.cpp b/src/common/scripting/backend/codegen.cpp index aaef459a6..8368220d3 100644 --- a/src/common/scripting/backend/codegen.cpp +++ b/src/common/scripting/backend/codegen.cpp @@ -6362,7 +6362,7 @@ FxExpression *FxMemberIdentifier::Resolve(FCompileContext& ctx) if (Object->ValueType->isRealPointer()) { auto ptype = Object->ValueType->toPointer()->PointedType; - if (ptype->isContainer()) + if (ptype && ptype->isContainer()) { auto ret = ResolveMember(ctx, ctx.Class, Object, static_cast(ptype)); delete this; diff --git a/src/common/textures/hw_material.h b/src/common/textures/hw_material.h index f6311c962..ee752c1f4 100644 --- a/src/common/textures/hw_material.h +++ b/src/common/textures/hw_material.h @@ -47,7 +47,7 @@ class FMaterial bool TrimBorders(uint16_t *rect); public: - FTexture *tex; + FTexture *tex = nullptr; FTexture *sourcetex; // in case of redirection this is different from tex. FMaterial(FTexture *tex, bool forceexpand); diff --git a/src/d_main.cpp b/src/d_main.cpp index bf2eb02df..eee2b3647 100644 --- a/src/d_main.cpp +++ b/src/d_main.cpp @@ -186,7 +186,7 @@ extern bool insave; extern TDeletingArray LightDefaults; const char* iwad_folders[13] = { "flats/", "textures/", "hires/", "sprites/", "voxels/", "colormaps/", "acs/", "maps/", "voices/", "patches/", "graphics/", "sounds/", "music/" }; -const char* iwad_reserved[12] = { "mapinfo", "zmapinfo", "gameinfo", "sndinfo", "sbarinfo", "menudef", "gldefs", "animdefs", "decorate", "zscript", "iwadinfo" "maps/" }; +const char* iwad_reserved[12] = { "mapinfo", "zmapinfo", "gameinfo", "sndinfo", "sbarinfo", "menudef", "gldefs", "animdefs", "decorate", "zscript", "iwadinfo", "maps/" }; CUSTOM_CVAR(Float, i_timescale, 1.0f, CVAR_NOINITCALL) diff --git a/src/doomdata.h b/src/doomdata.h index 572ebb61e..d52d82389 100644 --- a/src/doomdata.h +++ b/src/doomdata.h @@ -418,6 +418,7 @@ enum EMapThingFlags MTF_SECRET = 0x080000, // Secret pickup MTF_NOINFIGHTING = 0x100000, + MTF_NOCOUNT = 0x200000, // Removes COUNTKILL/COUNTITEM // BOOM and DOOM compatible versions of some of the above diff --git a/src/g_level.cpp b/src/g_level.cpp index bd3d86855..875ade355 100644 --- a/src/g_level.cpp +++ b/src/g_level.cpp @@ -634,8 +634,7 @@ void FLevelLocals::ChangeLevel(const char *levelname, int position, int inflags, nextlevel = levelname; } - if (nextSkill != -1) - NextSkill = nextSkill; + NextSkill = (unsigned)nextSkill < AllSkills.Size() ? nextSkill : -1; if (inflags & CHANGELEVEL_NOINTERMISSION) { diff --git a/src/intermission/intermission.cpp b/src/intermission/intermission.cpp index a06feac8f..1efaa6acc 100644 --- a/src/intermission/intermission.cpp +++ b/src/intermission/intermission.cpp @@ -848,20 +848,20 @@ bool DIntermissionController::Responder (event_t *ev) { const char *cmd = Bindings.GetBind (ev->data1); - if (cmd != NULL && - (!stricmp(cmd, "toggleconsole") || - !stricmp(cmd, "screenshot"))) + if (cmd != nullptr) { - return false; - } - - // The following is needed to be able to enter main menu with a controller, - // by pressing buttons that are usually assigned to this action, Start and Back by default - if (!stricmp(cmd, "menu_main") || !stricmp(cmd, "pause")) - { - M_StartControlPanel(true); - M_SetMenu(NAME_Mainmenu, -1); - return true; + if (!stricmp(cmd, "toggleconsole") || !stricmp(cmd, "screenshot")) + { + return false; + } + // The following is needed to be able to enter main menu with a controller, + // by pressing buttons that are usually assigned to this action, Start and Back by default + else if (!stricmp(cmd, "menu_main") || !stricmp(cmd, "pause")) + { + M_StartControlPanel(true); + M_SetMenu(NAME_Mainmenu, -1); + return true; + } } } diff --git a/src/maploader/udmf.cpp b/src/maploader/udmf.cpp index 5a059be0b..e4428263a 100644 --- a/src/maploader/udmf.cpp +++ b/src/maploader/udmf.cpp @@ -637,6 +637,11 @@ public: Flag(th->flags, MTF_SECRET, key); break; + case NAME_NoCount: + CHECK_N(Zd | Zdt) + Flag(th->flags, MTF_NOCOUNT, key); + break; + case NAME_Floatbobphase: CHECK_N(Zd | Zdt) th->FloatbobPhase = CheckInt(key); diff --git a/src/playsim/p_mobj.cpp b/src/playsim/p_mobj.cpp index a23e71ebb..a55f653a2 100644 --- a/src/playsim/p_mobj.cpp +++ b/src/playsim/p_mobj.cpp @@ -4721,6 +4721,19 @@ void AActor::HandleSpawnFlags () Level->total_secrets++; } } + if (SpawnFlags & MTF_NOCOUNT) + { + if (flags & MF_COUNTKILL) + { + flags &= ~MF_COUNTKILL; + Level->total_monsters--; + } + if (flags & MF_COUNTITEM) + { + flags &= ~MF_COUNTITEM; + Level->total_items--; + } + } } DEFINE_ACTION_FUNCTION(AActor, HandleSpawnFlags) diff --git a/src/rendering/hwrenderer/scene/hw_renderstate.h b/src/rendering/hwrenderer/scene/hw_renderstate.h index 6ec91b6c3..c20898169 100644 --- a/src/rendering/hwrenderer/scene/hw_renderstate.h +++ b/src/rendering/hwrenderer/scene/hw_renderstate.h @@ -90,7 +90,7 @@ struct FStateVec4 struct FMaterialState { - FMaterial *mMaterial; + FMaterial *mMaterial = nullptr; int mClampMode; int mTranslation; int mOverrideShader; diff --git a/src/scripting/vmthunks.cpp b/src/scripting/vmthunks.cpp index 02394188f..a55abc5e6 100644 --- a/src/scripting/vmthunks.cpp +++ b/src/scripting/vmthunks.cpp @@ -3005,7 +3005,7 @@ DEFINE_ACTION_FUNCTION_NATIVE(_AltHUD, GetLatency, Net_GetLatency) // //========================================================================== -DEFINE_ACTION_FUNCTION(_Wads, GetNumEntries) +DEFINE_ACTION_FUNCTION(_Wads, GetNumLumps) { PARAM_PROLOGUE; ACTION_RETURN_INT(fileSystem.GetNumEntries()); diff --git a/src/sound/s_doomsound.cpp b/src/sound/s_doomsound.cpp index 4887f8e5c..371a70d4d 100644 --- a/src/sound/s_doomsound.cpp +++ b/src/sound/s_doomsound.cpp @@ -118,15 +118,6 @@ public: static FString LookupMusic(const char* musicname, int& order) { - if (strnicmp(musicname, ",CD,", 4) == 0) - { - static bool warned = false; - if (!warned) - Printf(TEXTCOLOR_RED "CD Audio no longer supported\n"); - warned = true; - return ""; - } - // allow specifying "*" as a placeholder to play the level's default music. if (musicname != nullptr && !strcmp(musicname, "*")) { @@ -146,6 +137,16 @@ static FString LookupMusic(const char* musicname, int& order) // got nothing, return nothing. return ""; } + + if (strnicmp(musicname, ",CD,", 4) == 0) + { + static bool warned = false; + if (!warned) + Printf(TEXTCOLOR_RED "CD Audio no longer supported\n"); + warned = true; + return ""; + } + if (*musicname == '/') musicname++; FString DEH_Music; diff --git a/wadsrc/static/zscript/base.zs b/wadsrc/static/zscript/base.zs index 976d1b63d..a1800f9fd 100644 --- a/wadsrc/static/zscript/base.zs +++ b/wadsrc/static/zscript/base.zs @@ -879,7 +879,7 @@ struct Wads native static int FindLump(string name, int startlump = 0, FindLumpNamespace ns = GlobalNamespace); native static string ReadLump(int lump); - native static int GetNumEntries(); + native static int GetNumLumps(); native static string GetLumpName(int lump); native static string GetLumpFullName(int lump); native static int GetLumpNamespace(int lump); diff --git a/wadsrc/static/zscript/constants.zs b/wadsrc/static/zscript/constants.zs index 02e6d4fce..725044afe 100644 --- a/wadsrc/static/zscript/constants.zs +++ b/wadsrc/static/zscript/constants.zs @@ -997,6 +997,7 @@ enum EMapThingFlags MTF_SECRET = 0x080000, // Secret pickup MTF_NOINFIGHTING = 0x100000, + MTF_NOCOUNT = 0x200000, // Removes COUNTKILL/COUNTITEM }; enum ESkillProperty diff --git a/wadsrc/static/zscript/level_compatibility.zs b/wadsrc/static/zscript/level_compatibility.zs index 44fb88e71..ee81f4d7a 100644 --- a/wadsrc/static/zscript/level_compatibility.zs +++ b/wadsrc/static/zscript/level_compatibility.zs @@ -1040,6 +1040,20 @@ class LevelCompatibility : LevelPostProcessor ClearSectorTags(214); break; } + case '9A4615498C3451413F1CD3D15099ACC7': // Eternal Doom map05 + { + // an imp and two cyberdemons are located at the softlock area + SetThingFlags(272, GetThingFlags (272) | MTF_NOCOUNT); + SetThingFlags(273, GetThingFlags (273) | MTF_NOCOUNT); + SetThingFlags(274, GetThingFlags (274) | MTF_NOCOUNT); + break; + } + case '8B55842D5A509902738040AF10B4E787': // Eternal Doom map10 + { + // soulsphere at the end of the level is there merely to replicate the start of the next map + SetThingFlags(548, GetThingFlags (548) | MTF_NOCOUNT); + break; + } case 'DCE862393CAAA6FF1294FB7056B53057': // UAC Ultra map07 { @@ -1488,6 +1502,16 @@ class LevelCompatibility : LevelPostProcessor SetLineFlags(2040, Line.ML_REPEAT_SPECIAL); break; } + case '145C4DFCF843F2B92C73036BA0E1D98A': // Hell Revealed MAP26 + { + // The 4 archviles that produce the ghost monsters cannot be killed + // Make them not count so they still produce ghosts while allowing 100% kills. + SetThingFlags(320, GetThingFlags (320) | MTF_NOCOUNT); + SetThingFlags(347, GetThingFlags (347) | MTF_NOCOUNT); + SetThingFlags(495, GetThingFlags (495) | MTF_NOCOUNT); + SetThingFlags(496, GetThingFlags (496) | MTF_NOCOUNT); + break; + } case '0E379EEBEB189F294ED122BC60D10A68': // Hellbound MAP29 { @@ -1948,6 +1972,133 @@ class LevelCompatibility : LevelPostProcessor SetSectorSpecial(240, 0); break; } + + case '1497894956B3C8EBE8A240B7FDD99C6A': // Memento Mori 2 MAP25 + { + // an imp is used for the lift activation and cannot be killed + SetThingFlags(51, GetThingFlags (51) | MTF_NOCOUNT); + break; + } + + case '51960F3E9D46449E98DBC7D97F49DB23': // Shotgun Symphony E1M1 + { + // harmless cyberdemon included for the 'story' sake + SetThingFlags(158, GetThingFlags (158) | MTF_NOCOUNT); + break; + } + + case '60D362BAE16B4C10A1DCEE442C878CAE': // 50 Shades of Graytall MAP06 + { + // there are four invisibility spheres used for decoration + SetThingFlags(144, GetThingFlags (144) | MTF_NOCOUNT); + SetThingFlags(145, GetThingFlags (145) | MTF_NOCOUNT); + SetThingFlags(194, GetThingFlags (194) | MTF_NOCOUNT); + SetThingFlags(195, GetThingFlags (195) | MTF_NOCOUNT); + break; + } + + case 'C104E740CC3F70BCFD5D2EA8E833318D': // 50 Monsters MAP29 + { + // there are two invisibility spheres used for decoration + SetThingFlags(111, GetThingFlags (111) | MTF_NOCOUNT); + SetThingFlags(112, GetThingFlags (112) | MTF_NOCOUNT); + break; + } + + case '76393C84102480A4C75A4674C9C3217A': // Deadly Standards 2 E2M8 + { + // 923 lost souls are used as environmental hazard + for (int i = 267; i < 275; i++) + SetThingFlags (i, GetThingFlags (i) | MTF_NOCOUNT); + for (int i = 482; i < 491; i++) + SetThingFlags (i, GetThingFlags (i) | MTF_NOCOUNT); + for (int i = 510; i < 522; i++) + SetThingFlags (i, GetThingFlags (i) | MTF_NOCOUNT); + for (int i = 880; i < 1510; i++) + SetThingFlags (i, GetThingFlags (i) | MTF_NOCOUNT); + for (int i = 1622; i < 1660; i++) + SetThingFlags (i, GetThingFlags (i) | MTF_NOCOUNT); + + for (int i = 1682; i < 1820; i++) + SetThingFlags (i, GetThingFlags (i) | MTF_NOCOUNT); + for (int i = 1847; i < 1875; i++) + SetThingFlags (i, GetThingFlags (i) | MTF_NOCOUNT); + for (int i = 2110; i < 2114; i++) + SetThingFlags (i, GetThingFlags (i) | MTF_NOCOUNT); + for (int i = 2243; i < 2293; i++) + SetThingFlags (i, GetThingFlags (i) | MTF_NOCOUNT); + + SetThingFlags(493, GetThingFlags (493) | MTF_NOCOUNT); + SetThingFlags(573, GetThingFlags (573) | MTF_NOCOUNT); + SetThingFlags(613, GetThingFlags (613) | MTF_NOCOUNT); + SetThingFlags(614, GetThingFlags (614) | MTF_NOCOUNT); + SetThingFlags(1679, GetThingFlags (1679) | MTF_NOCOUNT); + SetThingFlags(1680, GetThingFlags (1680) | MTF_NOCOUNT); + break; + } + + case '42B4D294A60BE4E3500AF150291CF6D4': // Hell Ground MAP05 + { + // 5 cyberdemons are located at the 'pain end' sector + for (int i = 523; i < 528; i++) + SetThingFlags (i, GetThingFlags (i) | MTF_NOCOUNT); + break; + } + + case '0C0513A9821F26F3D7997E3B0359A318': // Mayhem 1500 MAP06 + { + // there's an archvile behind the bossbrain at the very end that can't be killed + SetThingFlags(61, GetThingFlags (61) | MTF_NOCOUNT); + break; + } + + case '00641DA23DDE998F6725BC5896A0DBC2': // 20 Years of Doom E1M8 + { + // 32 lost souls are located at the 'pain end' sector + for (int i = 1965; i < 1975; i++) + SetThingFlags (i, GetThingFlags (i) | MTF_NOCOUNT); + for (int i = 2189; i < 2202; i++) + SetThingFlags (i, GetThingFlags (i) | MTF_NOCOUNT); + for (int i = 2311; i < 2320; i++) + SetThingFlags (i, GetThingFlags (i) | MTF_NOCOUNT); + break; + } + + case 'EEBDD9CA280F6FF06C30AF2BEE85BF5F': // 2002ad10.wad E3M3 + { + // swarm of cacodemons at the end meant to be pseudo-endless and not killed + for (int i = 467; i < 547; i++) + SetThingFlags (i, GetThingFlags (i) | MTF_NOCOUNT); + break; + } + + case '988DFF5BB7073B857DEE3957A91C8518': // Speed of Doom MAP14 + { + // you can get only one of the soulspheres, the other, depending on your choice, becomes unavailable + SetThingFlags(1044, GetThingFlags (1044) | MTF_NOCOUNT); + SetThingFlags(1045, GetThingFlags (1045) | MTF_NOCOUNT); + break; + } + + case '361734AC5D78E872A05335C83E4F6DB8': // inf-lutz.wad E3M8 + { + // there is a trap with 10 cyberdemons at the end of the map, you are not meant to kill them + for (int i = 541; i < 546; i++) + SetThingFlags (i, GetThingFlags (i) | MTF_NOCOUNT); + for (int i = 638; i < 643; i++) + SetThingFlags (i, GetThingFlags (i) | MTF_NOCOUNT); + break; + } + + case '8F844B272E7235E82EA78AD2A2EB2D4A': // Serenity E3M7 + { + // two spheres can't be obtained and thus should not count towards 100% items + SetThingFlags(443, GetThingFlags (443) | MTF_NOCOUNT); + SetThingFlags(444, GetThingFlags (444) | MTF_NOCOUNT); + // one secret is unobtainable + SetSectorSpecial (97, 0); + break; + } } } } diff --git a/wadsrc/static/zscript/ui/statusbar/statusbar.zs b/wadsrc/static/zscript/ui/statusbar/statusbar.zs index 131649a2f..c2ed4c6d9 100644 --- a/wadsrc/static/zscript/ui/statusbar/statusbar.zs +++ b/wadsrc/static/zscript/ui/statusbar/statusbar.zs @@ -1019,7 +1019,7 @@ class BaseStatusBar native ui // //============================================================================ - void DrawBar(String ongfx, String offgfx, double curval, double maxval, Vector2 position, int border, int vertical, int flags = 0) + void DrawBar(String ongfx, String offgfx, double curval, double maxval, Vector2 position, int border, int vertical, int flags = 0, double alpha = 1.0) { let ontex = TexMan.CheckForTexture(ongfx, TexMan.TYPE_MiscPatch); if (!ontex.IsValid()) return; @@ -1050,17 +1050,17 @@ class BaseStatusBar native ui for(int i = 0; i < 4; i++) Clip[i] += border; //Draw the whole foreground - DrawTexture(ontex, position, flags | DI_ITEM_LEFT_TOP); + DrawTexture(ontex, position, flags | DI_ITEM_LEFT_TOP, alpha); SetClipRect(position.X + Clip[0], position.Y + Clip[1], texsize.X - Clip[0] - Clip[2], texsize.Y - Clip[1] - Clip[3], flags); } - if (offtex.IsValid() && TexMan.GetScaledSize(offtex) == texsize) DrawTexture(offtex, position, flags | DI_ITEM_LEFT_TOP); - else Fill(color(255,0,0,0), position.X + Clip[0], position.Y + Clip[1], texsize.X - Clip[0] - Clip[2], texsize.Y - Clip[1] - Clip[3]); + if (offtex.IsValid() && TexMan.GetScaledSize(offtex) == texsize) DrawTexture(offtex, position, flags | DI_ITEM_LEFT_TOP, alpha); + else Fill(color(int(255*alpha),0,0,0), position.X + Clip[0], position.Y + Clip[1], texsize.X - Clip[0] - Clip[2], texsize.Y - Clip[1] - Clip[3]); - if (border == 0) + if (border == 0) { SetClipRect(position.X + Clip[0], position.Y + Clip[1], texsize.X - Clip[0] - Clip[2], texsize.Y - Clip[1] - Clip[3], flags); - DrawTexture(ontex, position, flags | DI_ITEM_LEFT_TOP); + DrawTexture(ontex, position, flags | DI_ITEM_LEFT_TOP, alpha); } // restore the previous clipping rectangle screen.SetClipRect(cx, cy, cw, ch); diff --git a/wadsrc/static/zscript/ui/statusbar/strife_sbar.zs b/wadsrc/static/zscript/ui/statusbar/strife_sbar.zs index 79fc0ada4..912effbb4 100644 --- a/wadsrc/static/zscript/ui/statusbar/strife_sbar.zs +++ b/wadsrc/static/zscript/ui/statusbar/strife_sbar.zs @@ -353,8 +353,8 @@ class StrifeStatusBar : BaseStatusBar if (ammo2 != NULL && ammo1!=ammo2) { // Draw secondary ammo just above the primary ammo - DrawString(mGrnFont, FormatNumber(ammo1.Amount, 3), (-23, -48)); - DrawInventoryIcon(ammo1, (-14, -55)); + DrawString(mGrnFont, FormatNumber(ammo2.Amount, 3), (-23, -48)); + DrawInventoryIcon(ammo2, (-14, -55)); } } diff --git a/wadsrc_extra/static/filter/doom.id/fonts/bigfont/0402.lmp b/wadsrc_extra/static/filter/doom.id/fonts/bigfont/0402.lmp index a00a09d09..e159c4c17 100644 Binary files a/wadsrc_extra/static/filter/doom.id/fonts/bigfont/0402.lmp and b/wadsrc_extra/static/filter/doom.id/fonts/bigfont/0402.lmp differ diff --git a/wadsrc_extra/static/filter/doom.id/fonts/bigfont/040B.lmp b/wadsrc_extra/static/filter/doom.id/fonts/bigfont/040B.lmp index 474c63332..875b2d72d 100644 Binary files a/wadsrc_extra/static/filter/doom.id/fonts/bigfont/040B.lmp and b/wadsrc_extra/static/filter/doom.id/fonts/bigfont/040B.lmp differ diff --git a/wadsrc_extra/static/filter/doom.id/fonts/bigupper/0402.lmp b/wadsrc_extra/static/filter/doom.id/fonts/bigupper/0402.lmp index 4f72414a2..23ca14215 100644 Binary files a/wadsrc_extra/static/filter/doom.id/fonts/bigupper/0402.lmp and b/wadsrc_extra/static/filter/doom.id/fonts/bigupper/0402.lmp differ diff --git a/wadsrc_extra/static/filter/doom.id/fonts/bigupper/040B.lmp b/wadsrc_extra/static/filter/doom.id/fonts/bigupper/040B.lmp index 33b4ea06f..686572ecb 100644 Binary files a/wadsrc_extra/static/filter/doom.id/fonts/bigupper/040B.lmp and b/wadsrc_extra/static/filter/doom.id/fonts/bigupper/040B.lmp differ diff --git a/wadsrc_extra/static/filter/doom.id/fonts/bigupper/0452.lmp b/wadsrc_extra/static/filter/doom.id/fonts/bigupper/0452.lmp index d029013b6..4147794ac 100644 Binary files a/wadsrc_extra/static/filter/doom.id/fonts/bigupper/0452.lmp and b/wadsrc_extra/static/filter/doom.id/fonts/bigupper/0452.lmp differ diff --git a/wadsrc_extra/static/filter/doom.id/fonts/bigupper/045B.lmp b/wadsrc_extra/static/filter/doom.id/fonts/bigupper/045B.lmp index 4687f2356..cd1b9de37 100644 Binary files a/wadsrc_extra/static/filter/doom.id/fonts/bigupper/045B.lmp and b/wadsrc_extra/static/filter/doom.id/fonts/bigupper/045B.lmp differ