From fa123f37c7d0ed910350f2f9ab66bccec1df505c Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Fri, 1 Mar 2019 22:04:39 +0100 Subject: [PATCH 01/20] - adjustment for renamed spreadsheet. --- src/gamedata/stringtable.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gamedata/stringtable.cpp b/src/gamedata/stringtable.cpp index 89695429b..2fbe12a61 100644 --- a/src/gamedata/stringtable.cpp +++ b/src/gamedata/stringtable.cpp @@ -70,7 +70,7 @@ bool FStringTable::LoadLanguageFromSpreadsheet(int lumpnum) return false; } - if (!readSheetIntoTable(xlsxio, "Sheet1")) return false; + if (!readSheetIntoTable(xlsxio, "strings")) return false; // readMacros(xlsxio, "macros"); xlsxioread_close(xlsxio); From ce1ecd0d4ba15ff6fc3f57b8b4471a5d21c35396 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sat, 2 Mar 2019 12:06:24 +0100 Subject: [PATCH 02/20] - implemented string table macros. --- src/d_main.cpp | 3 +- src/gamedata/d_dehacked.cpp | 14 +- src/gamedata/stringtable.cpp | 251 +++++++++++++++++++++------ src/gamedata/stringtable.h | 21 ++- src/p_interaction.cpp | 4 +- src/utility/xlsxread/xlsxio_read.cpp | 2 +- 6 files changed, 228 insertions(+), 67 deletions(-) diff --git a/src/d_main.cpp b/src/d_main.cpp index d26ae1d0c..f73049397 100644 --- a/src/d_main.cpp +++ b/src/d_main.cpp @@ -2581,7 +2581,8 @@ void D_DoomMain (void) }; for (p = 0; p < 5; ++p) { - const char *str = GStrings[startupString[p]]; + // At this point we cannot use the player's gender info yet so force 'male' here. + const char *str = GStrings.GetString(startupString[p], nullptr, 0); if (str != NULL && str[0] != '\0') { Printf("%s\n", str); diff --git a/src/gamedata/d_dehacked.cpp b/src/gamedata/d_dehacked.cpp index 4643cd492..c7105117d 100644 --- a/src/gamedata/d_dehacked.cpp +++ b/src/gamedata/d_dehacked.cpp @@ -2164,13 +2164,14 @@ static int PatchMusic (int dummy) while ((result = GetLine()) == 1) { - const char *newname = skipwhite (Line2); + FString newname = skipwhite (Line2); FString keystring; keystring << "MUSIC_" << Line1; - DehStrings.Insert(keystring, newname); - DPrintf (DMSG_SPAMMY, "Music %s set to:\n%s\n", keystring.GetChars(), newname); + TableElement te = { newname, newname, newname, newname }; + DehStrings.Insert(keystring, te); + DPrintf (DMSG_SPAMMY, "Music %s set to:\n%s\n", keystring.GetChars(), newname.GetChars()); } return result; @@ -2283,7 +2284,9 @@ static int PatchText (int oldSize) str = EnglishStrings.MatchString(oldStr); if (str != NULL) { - DehStrings.Insert(str, newStr); + FString newname = newStr; + TableElement te = { newname, newname, newname, newname }; + DehStrings.Insert(str, te); EnglishStrings.Remove(str); // remove entry so that it won't get found again by the next iteration or by another replacement later good = true; } @@ -2337,7 +2340,8 @@ static int PatchStrings (int dummy) // Account for a discrepancy between Boom's and ZDoom's name for the red skull key pickup message const char *ll = Line1; if (!stricmp(ll, "GOTREDSKULL")) ll = "GOTREDSKUL"; - DehStrings.Insert(ll, holdstring); + TableElement te = { holdstring, holdstring, holdstring, holdstring }; + DehStrings.Insert(ll, te); DPrintf (DMSG_SPAMMY, "%s set to:\n%s\n", Line1, holdstring.GetChars()); } diff --git a/src/gamedata/stringtable.cpp b/src/gamedata/stringtable.cpp index 2fbe12a61..a892992e1 100644 --- a/src/gamedata/stringtable.cpp +++ b/src/gamedata/stringtable.cpp @@ -42,9 +42,16 @@ #include "c_dispatch.h" #include "v_text.h" #include "gi.h" +#include "d_player.h" #include "xlsxread/xlsxio_read.h" +//========================================================================== +// +// +// +//========================================================================== + void FStringTable::LoadStrings () { int lastlump, lump; @@ -58,8 +65,14 @@ void FStringTable::LoadStrings () } SetLanguageIDs(); UpdateLanguage(); + allMacros.Clear(); } +//========================================================================== +// +// +// +//========================================================================== bool FStringTable::LoadLanguageFromSpreadsheet(int lumpnum) { @@ -69,14 +82,60 @@ bool FStringTable::LoadLanguageFromSpreadsheet(int lumpnum) { return false; } - - if (!readSheetIntoTable(xlsxio, "strings")) return false; - // readMacros(xlsxio, "macros"); + readMacros(xlsxio, "macros"); + readSheetIntoTable(xlsxio, "strings"); xlsxioread_close(xlsxio); return true; } +//========================================================================== +// +// +// +//========================================================================== + +bool FStringTable::readMacros(xlsxioreader reader, const char *sheetname) +{ + xlsxioreadersheet sheet = xlsxioread_sheet_open(reader, sheetname, XLSXIOREAD_SKIP_NONE); + if (sheet == nullptr) return false; + + while (xlsxioread_sheet_next_row(sheet)) + { + auto macroname = xlsxioread_sheet_next_cell(sheet); + auto language = xlsxioread_sheet_next_cell(sheet); + if (!macroname || !language) continue; + FStringf combined_name("%s/%s", language, macroname); + free(language); + free(macroname); + FName name = combined_name; + + StringMacro macro; + + char *value; + for (int i = 0; i < 4; i++) + { + value = xlsxioread_sheet_next_cell(sheet); + macro.Replacements[i] = value; + free(value); + } + // This is needed because the reader code would choke on incompletely read rows. + while ((value = xlsxioread_sheet_next_cell(sheet)) != nullptr) + { + free(value); + } + allMacros.Insert(name, macro); + } + xlsxioread_sheet_close(sheet); + return true; +} + +//========================================================================== +// +// +// +//========================================================================== + bool FStringTable::readSheetIntoTable(xlsxioreader reader, const char *sheetname) { @@ -94,7 +153,7 @@ bool FStringTable::readSheetIntoTable(xlsxioreader reader, const char *sheetname while ((value = xlsxioread_sheet_next_cell(sheet)) != nullptr) { auto vcopy = value; - if (table.Size() <= row) table.Reserve(1); + if (table.Size() <= (unsigned)row) table.Reserve(1); while (*vcopy && iswspace((unsigned char)*vcopy)) vcopy++; // skip over leaading whitespace; auto vend = vcopy + strlen(vcopy); while (vend > vcopy && iswspace((unsigned char)vend[-1])) *--vend = 0; // skip over trailing whitespace @@ -105,67 +164,74 @@ bool FStringTable::readSheetIntoTable(xlsxioreader reader, const char *sheetname } row++; } - xlsxioread_sheet_close(sheet); int labelcol = -1; int filtercol = -1; TArray> langrows; - for (unsigned column = 0; column < table[0].Size(); column++) + if (table.Size() > 0) { - auto &entry = table[0][column]; - if (entry.CompareNoCase("filter") == 0) + for (unsigned column = 0; column < table[0].Size(); column++) { - filtercol = column; - } - else if (entry.CompareNoCase("identifier") == 0) - { - labelcol = column;; - } - else - { - auto languages = entry.Split(" ", FString::TOK_SKIPEMPTY); - for (auto &lang : languages) + auto &entry = table[0][column]; + if (entry.CompareNoCase("filter") == 0) { - if (lang.CompareNoCase("default") == 0) + filtercol = column; + } + else if (entry.CompareNoCase("identifier") == 0) + { + labelcol = column;; + } + else + { + auto languages = entry.Split(" ", FString::TOK_SKIPEMPTY); + for (auto &lang : languages) { - langrows.Push(std::make_pair(column, default_table)); + if (lang.CompareNoCase("default") == 0) + { + langrows.Push(std::make_pair(column, default_table)); + } + else if (lang.Len() < 4) + { + lang.ToLower(); + langrows.Push(std::make_pair(column, MAKE_ID(lang[0], lang[1], lang[2], 0))); + } } - else if (lang.Len() < 4) + } + } + + for (unsigned i = 1; i < table.Size(); i++) + { + auto &row = table[i]; + if (filtercol > -1) + { + auto filterstr = row[filtercol]; + auto filter = filterstr.Split(" ", FString::TOK_SKIPEMPTY); + if (filter.Size() > 0 && filter.FindEx([](const auto &str) { return str.CompareNoCase(GameNames[gameinfo.gametype]) == 0; }) == filter.Size()) + continue; + } + + FName strName = row[labelcol]; + for (auto &langentry : langrows) + { + auto str = row[langentry.first]; + if (str.Len() > 0) { - lang.ToLower(); - langrows.Push(std::make_pair(column, MAKE_ID(lang[0], lang[1], lang[2], 0))); + InsertString(langentry.second, strName, str); } } } } - - for (unsigned i = 1; i < table.Size(); i++) - { - auto &row = table[i]; - if (filtercol > -1) - { - auto filterstr = row[filtercol]; - auto filter = filterstr.Split(" ", FString::TOK_SKIPEMPTY); - if (filter.Size() > 0 && filter.FindEx([](const auto &str) { return str.CompareNoCase(GameNames[gameinfo.gametype]) == 0; }) == filter.Size()) - continue; - } - - FName strName = row[labelcol]; - for (auto &langentry : langrows) - { - auto str = row[langentry.first]; - if (str.Len() > 0) - { - allStrings[langentry.second].Insert(strName, str); - str.Substitute("\n", "|"); - Printf(PRINT_LOG, "Setting %s for %s to %.40s\n\n", strName.GetChars(), &langentry.second, str.GetChars()); - } - } - } + xlsxioread_sheet_close(sheet); return true; } +//========================================================================== +// +// +// +//========================================================================== + void FStringTable::LoadLanguage (int lumpnum) { bool errordone = false; @@ -262,13 +328,52 @@ void FStringTable::LoadLanguage (int lumpnum) // Insert the string into all relevant tables. for (auto map : activeMaps) { - allStrings[map].Insert(strName, strText); + InsertString(map, strName, strText); } } } } } +//========================================================================== +// +// +// +//========================================================================== + +void FStringTable::InsertString(int langid, FName label, const FString &string) +{ + const char *strlangid = (const char *)&langid; + TableElement te = { string, string, string, string }; + long index; + while ((index = te.strings[0].IndexOf("@[")) >= 0) + { + auto endindex = te.strings[0].IndexOf(']', index); + if (endindex == -1) + { + Printf("Bad macro in %s : %s\n", strlangid, label.GetChars()); + break; + } + FString macroname(string.GetChars() + index + 2, endindex - index - 2); + FStringf lookupstr("%s/%s", strlangid, macroname.GetChars()); + FStringf replacee("@[%s]", macroname.GetChars()); + FName lookupname(lookupstr, true); + auto replace = allMacros.CheckKey(lookupname); + for (int i = 0; i < 4; i++) + { + const char *replacement = replace && replace->Replacements[i] ? replace->Replacements[i] : ""; + te.strings[i].Substitute(replacee, replacement); + } + } + allStrings[langid].Insert(label, te); +} + +//========================================================================== +// +// +// +//========================================================================== + void FStringTable::UpdateLanguage() { currentLanguageSet.Clear(); @@ -290,7 +395,12 @@ void FStringTable::UpdateLanguage() checkone(default_table); } +//========================================================================== +// // Replace \ escape sequences in a string with the escaped characters. +// +//========================================================================== + size_t FStringTable::ProcessEscapes (char *iptr) { char *sptr = iptr, *optr = iptr, c; @@ -317,10 +427,15 @@ size_t FStringTable::ProcessEscapes (char *iptr) return optr - sptr; } +//========================================================================== +// +// Checks if the given key exists in any one of the default string tables that are valid for all languages. +// To replace IWAD content this condition must be true. +// +//========================================================================== + bool FStringTable::exists(const char *name) { - // Checks if the given key exists in any one of the default string tables that are valid for all languages. - // To replace IWAD content this condition must be true. if (name == nullptr || *name == 0) { return false; @@ -343,13 +458,20 @@ bool FStringTable::exists(const char *name) return false; } +//========================================================================== +// // Finds a string by name and returns its value -const char *FStringTable::GetString(const char *name, uint32_t *langtable) const +// +//========================================================================== + +const char *FStringTable::GetString(const char *name, uint32_t *langtable, int gender) const { if (name == nullptr || *name == 0) { return nullptr; } + if (gender == -1) gender = players[consoleplayer].userinfo.GetGender(); + if (gender < 0 || gender > 3) gender = 0; FName nm(name, true); if (nm != NAME_None) { @@ -359,20 +481,27 @@ const char *FStringTable::GetString(const char *name, uint32_t *langtable) const if (item) { if (langtable) *langtable = map.first; - return item->GetChars(); + return item->strings[gender].GetChars(); } } } return nullptr; } +//========================================================================== +// // Finds a string by name in a given language -const char *FStringTable::GetLanguageString(const char *name, uint32_t langtable) const +// +//========================================================================== + +const char *FStringTable::GetLanguageString(const char *name, uint32_t langtable, int gender) const { if (name == nullptr || *name == 0) { return nullptr; } + if (gender == -1) gender = players[consoleplayer].userinfo.GetGender(); + if (gender < 0 || gender > 3) gender = 0; FName nm(name, true); if (nm != NAME_None) { @@ -381,14 +510,19 @@ const char *FStringTable::GetLanguageString(const char *name, uint32_t langtable auto item = map->CheckKey(nm); if (item) { - return item->GetChars(); + return item->strings[gender].GetChars(); } } return nullptr; } +//========================================================================== +// // Finds a string by name and returns its value. If the string does // not exist, returns the passed name instead. +// +//========================================================================== + const char *FStringTable::operator() (const char *name) const { const char *str = operator[] (name); @@ -396,7 +530,14 @@ const char *FStringTable::operator() (const char *name) const } +//========================================================================== +// // Find a string with the same exact text. Returns its name. +// This does not need to check genders, it is only used by +// Dehacked on the English table for finding stock strings. +// +//========================================================================== + const char *StringMap::MatchString (const char *string) const { StringMap::ConstIterator it(*this); @@ -404,7 +545,7 @@ const char *StringMap::MatchString (const char *string) const while (it.NextPair(pair)) { - if (pair->Value.CompareNoCase(string) == 0) + if (pair->Value.strings[0].CompareNoCase(string) == 0) { return pair->Key.GetChars(); } diff --git a/src/gamedata/stringtable.h b/src/gamedata/stringtable.h index d0d7b0347..c341d97b8 100644 --- a/src/gamedata/stringtable.h +++ b/src/gamedata/stringtable.h @@ -47,14 +47,25 @@ #include "doomdef.h" #include "doomtype.h" +struct TableElement +{ + FString strings[4]; +}; + // This public interface is for Dehacked -class StringMap : public TMap +class StringMap : public TMap { public: const char *MatchString(const char *string) const; }; +struct StringMacro +{ + FString Replacements[4]; +}; + + class FStringTable { public: @@ -66,6 +77,7 @@ public: }; using LangMap = TMap; + using StringMacroMap = TMap; void LoadStrings (); void UpdateLanguage(); @@ -76,8 +88,8 @@ public: UpdateLanguage(); } - const char *GetLanguageString(const char *name, uint32_t langtable) const; - const char *GetString(const char *name, uint32_t *langtable) const; + const char *GetLanguageString(const char *name, uint32_t langtable, int gender = -1) const; + const char *GetString(const char *name, uint32_t *langtable, int gender = -1) const; const char *operator() (const char *name) const; // Never returns NULL const char *operator[] (const char *name) const { @@ -87,12 +99,15 @@ public: private: + StringMacroMap allMacros; LangMap allStrings; TArray> currentLanguageSet; void LoadLanguage (int lumpnum); bool LoadLanguageFromSpreadsheet(int lumpnum); + bool readMacros(struct xlsxio_read_struct *reader, const char *sheet); bool readSheetIntoTable(struct xlsxio_read_struct *reader, const char *sheet); + void InsertString(int langid, FName label, const FString &string); static size_t ProcessEscapes (char *str); }; diff --git a/src/p_interaction.cpp b/src/p_interaction.cpp index 6cd290c1b..121fb1cad 100644 --- a/src/p_interaction.cpp +++ b/src/p_interaction.cpp @@ -261,12 +261,12 @@ void ClientObituary (AActor *self, AActor *inflictor, AActor *attacker, int dmgf if (message != NULL && message[0] == '$') { - message = GStrings[message+1]; + message = GStrings.GetString(message+1, nullptr, self->player->userinfo.GetGender()); } if (message == NULL) { - message = GStrings("OB_DEFAULT"); + message = GStrings.GetString("OB_DEFAULT", nullptr, self->player->userinfo.GetGender()); } // [CK] Don't display empty strings diff --git a/src/utility/xlsxread/xlsxio_read.cpp b/src/utility/xlsxread/xlsxio_read.cpp index 738268707..48f6de5d8 100644 --- a/src/utility/xlsxread/xlsxio_read.cpp +++ b/src/utility/xlsxread/xlsxio_read.cpp @@ -63,7 +63,7 @@ void zip_close(zip_t *zipfile) zip_file_t *zip_fopen(zip_t *zipfile, const char *filename) { - if (!zipfile) return NULL; + if (!zipfile || !filename) return NULL; auto lump = zipfile->FindLump(filename); if (!lump) return NULL; return new FileReader(std::move(lump->NewReader())); From 5ac5a0a85696310bf558463d10a715b2668d9085 Mon Sep 17 00:00:00 2001 From: Nemrtvi Date: Sat, 2 Mar 2019 10:38:55 +0100 Subject: [PATCH 03/20] French characters for Raven games Most of this is ripped from Hexen 64 with minor edits and palette conversions. Credits to Jimmy for the cedillas and BIGFONT breves! --- .../game-heretic/fonts/defbigfont/00C0.lmp | Bin 0 -> 276 bytes .../game-heretic/fonts/defbigfont/00C2.lmp | Bin 0 -> 296 bytes .../game-heretic/fonts/defbigfont/00C7.lmp | Bin 0 -> 242 bytes .../game-heretic/fonts/defbigfont/00C8.lmp | Bin 0 -> 254 bytes .../game-heretic/fonts/defbigfont/00C9.lmp | Bin 0 -> 254 bytes .../game-heretic/fonts/defbigfont/00CA.lmp | Bin 0 -> 278 bytes .../game-heretic/fonts/defbigfont/00CB.lmp | Bin 0 -> 274 bytes .../game-heretic/fonts/defbigfont/00CE.lmp | Bin 0 -> 195 bytes .../game-heretic/fonts/defbigfont/00CF.lmp | Bin 0 -> 187 bytes .../game-heretic/fonts/defbigfont/00D4.lmp | Bin 0 -> 321 bytes .../game-heretic/fonts/defbigfont/00D9.lmp | Bin 0 -> 257 bytes .../game-heretic/fonts/defbigfont/00DB.lmp | Bin 0 -> 283 bytes .../game-heretic/fonts/defbigfont/0401.lmp | Bin 0 -> 274 bytes .../game-heretic/fonts/defbigfont/0407.lmp | Bin 0 -> 187 bytes .../game-heretic/fonts/defsmallfont/00C0.lmp | Bin 0 -> 163 bytes .../game-heretic/fonts/defsmallfont/00C2.lmp | Bin 0 -> 164 bytes .../game-heretic/fonts/defsmallfont/00C7.lmp | Bin 0 -> 163 bytes .../game-heretic/fonts/defsmallfont/00C8.lmp | Bin 0 -> 160 bytes .../game-heretic/fonts/defsmallfont/00C9.lmp | Bin 0 -> 160 bytes .../game-heretic/fonts/defsmallfont/00CA.lmp | Bin 0 -> 162 bytes .../game-heretic/fonts/defsmallfont/00CB.lmp | Bin 0 -> 158 bytes .../game-heretic/fonts/defsmallfont/00CE.lmp | Bin 0 -> 125 bytes .../game-heretic/fonts/defsmallfont/00CF.lmp | Bin 0 -> 119 bytes .../game-heretic/fonts/defsmallfont/00D4.lmp | Bin 0 -> 160 bytes .../game-heretic/fonts/defsmallfont/00D9.lmp | Bin 0 -> 169 bytes .../game-heretic/fonts/defsmallfont/00DB.lmp | Bin 0 -> 169 bytes .../game-heretic/fonts/defsmallfont/0401.lmp | Bin 168 -> 158 bytes .../game-heretic/fonts/defsmallfont/0407.lmp | Bin 0 -> 119 bytes .../filter/game-hexen/fonts/defbigfont/00C0.lmp | Bin 0 -> 276 bytes .../filter/game-hexen/fonts/defbigfont/00C2.lmp | Bin 0 -> 296 bytes .../filter/game-hexen/fonts/defbigfont/00C7.lmp | Bin 0 -> 242 bytes .../filter/game-hexen/fonts/defbigfont/00C8.lmp | Bin 0 -> 254 bytes .../filter/game-hexen/fonts/defbigfont/00C9.lmp | Bin 0 -> 254 bytes .../filter/game-hexen/fonts/defbigfont/00CA.lmp | Bin 0 -> 278 bytes .../filter/game-hexen/fonts/defbigfont/00CB.lmp | Bin 0 -> 279 bytes .../filter/game-hexen/fonts/defbigfont/00CE.lmp | Bin 0 -> 195 bytes .../filter/game-hexen/fonts/defbigfont/00CF.lmp | Bin 0 -> 187 bytes .../filter/game-hexen/fonts/defbigfont/00D4.lmp | Bin 0 -> 321 bytes .../filter/game-hexen/fonts/defbigfont/00D9.lmp | Bin 0 -> 257 bytes .../filter/game-hexen/fonts/defbigfont/00DB.lmp | Bin 0 -> 283 bytes .../filter/game-hexen/fonts/defbigfont/0401.lmp | Bin 0 -> 274 bytes .../filter/game-hexen/fonts/defbigfont/0407.lmp | Bin 0 -> 187 bytes .../game-hexen/fonts/defsmallfont/00C0.lmp | Bin 0 -> 163 bytes .../game-hexen/fonts/defsmallfont/00C2.lmp | Bin 0 -> 164 bytes .../game-hexen/fonts/defsmallfont/00C7.lmp | Bin 0 -> 163 bytes .../game-hexen/fonts/defsmallfont/00C8.lmp | Bin 0 -> 160 bytes .../game-hexen/fonts/defsmallfont/00C9.lmp | Bin 0 -> 160 bytes .../game-hexen/fonts/defsmallfont/00CA.lmp | Bin 0 -> 162 bytes .../game-hexen/fonts/defsmallfont/00CB.lmp | Bin 0 -> 158 bytes .../game-hexen/fonts/defsmallfont/00CE.lmp | Bin 0 -> 125 bytes .../game-hexen/fonts/defsmallfont/00CF.lmp | Bin 0 -> 119 bytes .../game-hexen/fonts/defsmallfont/00D4.lmp | Bin 0 -> 160 bytes .../game-hexen/fonts/defsmallfont/00D6.lmp | Bin 165 -> 156 bytes .../game-hexen/fonts/defsmallfont/00D9.lmp | Bin 0 -> 169 bytes .../game-hexen/fonts/defsmallfont/00DB.lmp | Bin 0 -> 169 bytes .../game-hexen/fonts/defsmallfont/0401.lmp | Bin 168 -> 158 bytes .../game-hexen/fonts/defsmallfont/0407.lmp | Bin 0 -> 119 bytes 57 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00C0.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00C2.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00C7.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00C8.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00C9.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00CA.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00CB.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00CE.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00CF.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00D4.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00D9.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00DB.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/0401.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/0407.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00C0.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00C2.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00C7.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00C8.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00C9.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00CA.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00CB.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00CE.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00CF.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00D4.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00D9.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00DB.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/0407.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00C0.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00C2.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00C7.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00C8.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00C9.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00CA.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00CB.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00CE.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00CF.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00D4.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00D9.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00DB.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/0401.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/0407.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00C0.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00C2.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00C7.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00C8.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00C9.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00CA.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00CB.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00CE.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00CF.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00D4.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00D9.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00DB.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/0407.lmp diff --git a/wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00C0.lmp b/wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00C0.lmp new file mode 100644 index 0000000000000000000000000000000000000000..75d0dba6e7334c80f8acd4c16d8d3ddb59c5f7d3 GIT binary patch literal 276 zcmd;P5M%%W69xtbdjWdip9yR+Bm0#r*REZ^c?~3f?b?kS{7g4)T)q0Ah4(tx z!W*}4-nw=3CRpU^)$1T|eZ_t;>wl( E0Lwq1-T(jq literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00C2.lmp b/wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00C2.lmp new file mode 100644 index 0000000000000000000000000000000000000000..18986ca2f74ea717d401adf55ecaa1a2fe70354d GIT binary patch literal 296 zcmd;P5M%%W69xtbdj({Sexx&eD_3DjVH*egye&x!4CbsL>uU)-){qki_ zj_cQN-@I}C21q?4`}ONLuUxxv4J3Z!#;qIIu3o!-?b?3^=IhsQUAe--a{W3??&j6Y zmoHxf$uZry0hPLX6;__BSFc?I@vmRIe)Y({Sdxx&eI_3E{2SFT>U@}H6Q>eXvkuU)>( n39jdELX0;xR)>gXJ)*7`SO1N7TkyT literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00C8.lmp b/wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00C8.lmp new file mode 100644 index 0000000000000000000000000000000000000000..21ddc5483ffe2fb153117d38207bbaad07fcc9c4 GIT binary patch literal 254 zcmd;P5M%%W69xtbI|c@Z00stzR0alyS_TG&=?n}E>lhdqjxaDVTxVclc)`HH@STBy zfrItx)oa(UUA_9Bf$8ei8#mb5uU@@=RQ|>W!P%uibzsV*zQn za)p%}Bzo=2wVT(kg0wR-U%7Ja+BH_@>(_5xyT-+S?b`LLSFT>Wa^*h@^VO@jZrtEx zz6w&v%X0PVb&%;G;hWd5bAa?+y~@XY{rZioSO2rHUA=l8>>ys2%a^Z#gjk_Ecv-Go bxq9`=mH%u^SFc{Z$^#Mxna{&?4MYI|exr+t literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00C9.lmp b/wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00C9.lmp new file mode 100644 index 0000000000000000000000000000000000000000..1701606e25b29469634ba30537199f7b9dcea04c GIT binary patch literal 254 zcmd;P5M%%W69xtbI|c>@F9rsN2nGg*db2|Fu3r7m&VKdk^&2;CT)%qtKO5)Ot2b_5zjgyG!^nK)%C&3PSh+!h*REW< zdHpI#0|N_4>y<04%-65qx^|6={o1wbSFc>XcIC={2IebQZd|*@!hH4Wts6HunXiI0 z@UmRJdL3js1Jl*3H*SC=Z(hI70W$pRRX*nH*Kb_C`k#gE>ecID2l298zI+WN#0u5N e%W~z))vH&o{AXjjdiCm69*{7|G9IRDAPNA#GmBLK literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00CA.lmp b/wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00CA.lmp new file mode 100644 index 0000000000000000000000000000000000000000..5862b6600cbca4b9bd8fbc9612c7ef2cfd55979f GIT binary patch literal 278 zcmd;P5M%%W69xtbI|c>@e+CAIWCjL?Dh39IDGUq@8yOfF&M`1BJYis9_|3q;z|Y9Q zz`=U;>b2|Fu3r7m%y{kEHFox^SFhi=apU^ctN)ppu3x`)jg9l_)f+djU%LTT#K?U8 z`pqj>Sh+!h*REW$k34VFgjwu5qznyLSERm8;jTT=~zybmPXAD=f@c zuimyLJ;Id-M8r4(2OYu3f##$9(tNUMvRuA=4J69MbnV);YphTccv-Goxq9`=mH*6)SFT)PW4e0v>Qx?)9LQ=OrfVPy E0N#t3LI3~& literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00CB.lmp b/wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00CB.lmp new file mode 100644 index 0000000000000000000000000000000000000000..d6f35ff0d62f6ad9b25fa22ef6c618d741fe2b1c GIT binary patch literal 274 zcmd;P5M%%W69xtbI|c>@e+CAI6b1%{Y6b>|$qWn(s~8vb2|Fu3r7m$awAAHFox^SFhi=apU^ctN$68uU)%&{W=@x)vGsdUcYt&tcrp8 z%9ZPvFSBxk1g~AWcJumGh~_I-uCOv+zkci5H7@pR*REf^a`oDkEB{%TuU@@%;|3@5 zRgf}XmaA8;Z~@->JI#A>J^ kyewC)T)leb%6~@2D_5?tFylBL)Trdjq9yT;0M1q3dG Wh$~kvU;fX;1XA>$neob%EB^tKb!$@q literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00CF.lmp b/wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00CF.lmp new file mode 100644 index 0000000000000000000000000000000000000000..83a34a75f845242ddf7f2bd99bd2cc392ecaec51 GIT binary patch literal 187 zcmd;N5MW?n`2Syrfq}t@fq}t+fq@}{fq@~9fq|i(fq`Kv0|Uca1_p+$3=9m6jMuJR z`_I69?b^-j*IAjaU%z_wKLhiXE7vbyX5qPZ?bgkkH*em!ar4H_Teto*GG4iIg@xz( z^_$nPU%zqv+I0~4&%$%_=8bC*&h_ipuKfoa$-;Bv#`S9;aP|7NYhXjcRwlFmtmGc4F3-R!6|41 literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00D4.lmp b/wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00D4.lmp new file mode 100644 index 0000000000000000000000000000000000000000..b0aeff63c3f56a14e81254479e0e511f911cf2aa GIT binary patch literal 321 zcmd;O5M%%W8wLgjcLoNANCpOmJO&1aRt5%!`3wvU+Zh-b&NDDDJZE5F_{YG&AjZhR zpvB0*V9vh&AfuU@(GpPBL6wQKAg*RI{XapT7IYgexPXJWd3{n|A)uItxt zUcYwj+I6rXBlGp^H?Le_<-T_9CP?4aYuB$`z51Vl`TF%+SFW(Ig3P;i`7#gdRglb; zEB_goZr%h*fK0u5`7$rd)vMR9gT-&$0Eu4**$)!Ga^?DUuu0dhfi+yY0(J%;^NkxI z^SFiqOX1sFc3L6(# g_}aDWH$fg^=K$G#{rU|MhlBO<7#J9CGB7Z_ zVqjqS#lXP8%60wv6$rR~<;s5+?rYa>U%deWH?Lp4`k$Hi>ecJFu3d+KYgexPXJEQ| z^~Md5I7k$v@cMO-N(SaDS8iOp#=>(I4zAs}cI`g{%hjvbu3x#r%Y6Mhh|kD;<;t~d z*Laz4f-PX-zIpS;O$fMk?b?49o?ExBUB3nb*KdH#W#PGf``UG|$aRoY|FdvkzkUT~ O$CWGpd6_`Y{|^Aj`k8ps~H#=b}}$9Twq{ec)`HH@SlN! zL4=WkfsO0>^(zo?{mPa9%#7ErU1R0GcJ21n8z6A=`qiudnfR|?zjpQdt!vjI;M$cd z{}~0YU%z?fDo6;V?)r6*LI&pR*Kb|9!pd_M4zAs}cI`g{)6JV#uJAEmzYgKuxB=qb z1RKu4eC^uJD_2;#Z{ECd69R5syY`=v`TF&n*RHYh+`4t``ZW-^egk9$6BCHd%5(en gwd-K<>mc|4XJ)(tGUNL7D=?d{T=~z(1oGH_0Ke&`7ytkO literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/0401.lmp b/wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/0401.lmp new file mode 100644 index 0000000000000000000000000000000000000000..d6f35ff0d62f6ad9b25fa22ef6c618d741fe2b1c GIT binary patch literal 274 zcmd;P5M%%W69xtbI|c>@e+CAI6b1%{Y6b>|$qWn(s~8vb2|Fu3r7m$awAAHFox^SFhi=apU^ctN$68uU)%&{W=@x)vGsdUcYt&tcrp8 z%9ZPvFSBxk1g~AWcJumGh~_I-uCOv+zkci5H7@pR*REf^a`oDkEB{%TuU@@%;|3@5 zRgf}XmaA8;Z~@->JI#A>J^ kyewC)T)leb%6~@2D_5?tFwlFmtmGc4F3-R!6|41 literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00C0.lmp b/wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00C0.lmp new file mode 100644 index 0000000000000000000000000000000000000000..63f0991cc6406d61c86efc0cea6e24cfbbe9eea9 GIT binary patch literal 163 zcmd;N;9_84U}Vr?U|=v|U|_IgU|OV literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00C2.lmp b/wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00C2.lmp new file mode 100644 index 0000000000000000000000000000000000000000..8d6e4b4b1080758ca642614ba8566cad4a5008b8 GIT binary patch literal 164 zcmd;N;9_84U}Vr?U|=v|U|?`yU|{fLU|@)4U|`5+U|^_aU|{HGU|^WRz`(%D%*x8j z&iSPRasG%mGwU(Co8KItD=~Qm^>@%e+DjARxvSFc~+1h>wg9|R#q`}c3DgT%h0N@%Aj??USy}%B0Q(dX AR{#J2 literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00C7.lmp b/wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00C7.lmp new file mode 100644 index 0000000000000000000000000000000000000000..e4ad4b44227575c8a54057bff92867e905b3226c GIT binary patch literal 163 zcmd;N;9_84`1fCjfq}tjMU|=XjPU|=X=U|?uwU|^WSz`(%D%*x8n z%KD#$m6cUdUY3>hKQlWktGtwim>4VTeSPRZ(7+mGwU(Co8KItGtwim>4VTe+DjARxvSlSym}l2^d$MRf<)XRf?Vc tKLZy#yObD+!zzW)Dl5S%!Os4liG!V;m0d)L6=V)86UYV*MpjnV{{ZK!5j6k+ literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00CB.lmp b/wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00CB.lmp new file mode 100644 index 0000000000000000000000000000000000000000..c674b40e70e7ca63269b43dd1876f245e6de4914 GIT binary patch literal 158 zcmd;N;A8*+9R>yl69xtb2L=WPKL!Sd7zPH0Oa=yqas~#5Rt5%!Nem1OEX=H|?5wQ+ z8QED`Sy>h3Wm#GOGjOu9%CpK#Nr;I-d1CCctWvBJAaxw9tgKS3vaC|<>`;XuDJhsj jR(V+oRta|Y|BN7o>>@&}ATwB)*x6ZG*%?_`S^on7o0$-* literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00CE.lmp b/wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00CE.lmp new file mode 100644 index 0000000000000000000000000000000000000000..8427095c803d2dfa7199983a6889c5616761ad00 GIT binary patch literal 125 zcmZQ);9_84U}R8XU|`T@U|_IjU|{fKU|@)3U|`5#U|=X?U|?WkVrOS%{m;nC$|}Xq z%F4>Y#LCLb`k#S|l~qiPRi2d{4Q^{F?kiA|TD2tgKS3 Ltn6U)A8H~1cSa0o literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00CF.lmp b/wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00CF.lmp new file mode 100644 index 0000000000000000000000000000000000000000..7fddb83d5e944cf42d6297720082ff5d3fca1bdc GIT binary patch literal 119 zcmZQ);A8*+6$SSPRbEPrmGwU(Co8KItAq%@CO<3de+DjARxvSlDOOfiArP01l~qigRf3h3 uotc$Y1SG=6&Mqa!D#psnD#p$Z(=8<{CBe!HHCIGPla=*9D>KLr*8c#aG!WbX literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00D9.lmp b/wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00D9.lmp new file mode 100644 index 0000000000000000000000000000000000000000..58d8d00530935cf02f0729b760811afa1e6ffc46 GIT binary patch literal 169 zcmd;N;9_84U}Vr?U|_IhU|?`zU|jPU|=X`U|?urU|^WYz`!tjMU|=X=U|?usU|^WQz`!tSTl~oL+fRmkFN(^L{EL^j^qOu}LGZP0pJFA3pF literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/0401.lmp b/wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/0401.lmp index df10c490c79fd7de7edef5a41e6bd4261ebd4cef..c674b40e70e7ca63269b43dd1876f245e6de4914 100644 GIT binary patch literal 158 zcmd;N;A8*+9R>yl69xtb2L=WPKL!Sd7zPH0Oa=yqas~#5Rt5%!Nem1OEX=H|?5wQ+ z8QED`Sy>h3Wm#GOGjOu9%CpK#Nr;I-d1CCctWvBJAaxw9tgKS3vaC|<>`;XuDJhsj jR(V+oRta|Y|BN7o>>@&}ATwB)*x6ZG*%?_`S^on7o0$-* literal 168 zcmd;N;A8*+9R>yl69xtbM+OE4e+CAISOx}$Yz78~N(Kgob_NE9sSFGZEX=H|?5wQ+ z892bSqP#4K!^z4j%PKD=Atnap39-wvO0i0SdF<@0tWvD9tWxak{~0(z+CXwrU^%cp gSqWANsGJBZyND1g*c4`vK2{bc5XH{O%F6m504>fC;{X5v diff --git a/wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/0407.lmp b/wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/0407.lmp new file mode 100644 index 0000000000000000000000000000000000000000..7fddb83d5e944cf42d6297720082ff5d3fca1bdc GIT binary patch literal 119 zcmZQ);A8*+6$S0+qiDk%2jJtt@_Wvykf<=RjXK7)~tcaZCJT%*|Jq2 zIgXVpSFKsGX5GpaD>#|ftl6-Ep9yR+Bm0UKt5&VqunHu;YSp@R{7mcCtz7w^g?A0u z!gU)rY}~kE16X9`$~7RcZq1rCU<+A!R<2yN3dCHqYR$?OEB>=_tyr;g<;s;HV#SL8 E0B7=p_5c6? literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00C2.lmp b/wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00C2.lmp new file mode 100644 index 0000000000000000000000000000000000000000..81ad7e05469ad465cb235bb36f9bcc1265c566b7 GIT binary patch literal 296 zcmd;P5M%%W69xtbdj>8`iB`vtq@6Cbl(eR;}EyX4x`M zjx}pGZCJNv9Y{SR`qwv3YrjdEGt&PxXYIPXJ%ZsY}tPR4dZY% literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00C8.lmp b/wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00C8.lmp new file mode 100644 index 0000000000000000000000000000000000000000..7470e6eb90a68114cad77803d76bddd3625dd075 GIT binary patch literal 254 zcmd;P5M%%W69xtbI|c@Z00stzR0alyS_TG&=?n}E>lhdqjxaDVTxVclc)`HH@STBy zfrEAB%2jJttz7w^fobK+b?eyKSFT*MZr!>yAQ9#jE7q-A#m2dE<+=@PR;`05V*zPc zv4WKwB)V$Fsts#ag0wR-uUN5a)hbrzHETAmTE)e_YSo&RD^{*rvEn}q^U9SQ*RA7Z zUI|jj%d&Fi8j$HA;SFonaDeo!T*=40X3e^lEB~{wtz5YV>>ys2Wy@B9gjk_Ecv)7g bSh;e=ivMg(D_5>u$paDwna{(t3Pb?_mY{On literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00C9.lmp b/wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00C9.lmp new file mode 100644 index 0000000000000000000000000000000000000000..331f0c1638b8215294467573de13f9442d684e83 GIT binary patch literal 254 zcmd;P5M%%W69xtbI|c>@F9rsN2nGg*dxvbu%xl(cT(ydeebuTpD_5*swPMA82Idtj)~#B_!n|_j#&zpBnOA}| z@UpC2xdvo91JlZt>(+rJH>_F10Wy5$N0dlAS literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00CA.lmp b/wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00CA.lmp new file mode 100644 index 0000000000000000000000000000000000000000..6f9b3a88b27ef632558482e570f8e9157994c5b4 GIT binary patch literal 278 zcmd;P5M%%W69xtbI|c>@e+CAIWCjL?Dh39IDGUq@8yOfF&M`1BJYis9_|3q;z|Y9Q zz`?q5<*GHSR<8Wd%(!aRDt7jjE7z=Bw{FeKmH(NT)~s2zij8yS%5@votXclhdqPBJhsJZ4~E_|3q;z|Y9Q zAjZhRz`?q5<*GHSR<8Wd$hd0NDt7jjE7z=Bw{FeKmH!!-SFPHxW(^zX%9ZOjtXZ`V ztcrno#fmk{ma%e!1XrzCwPDRlh~^b5R#>=v7*(!(( p#A>J^yeunLtX#Qb#eYV|6)RS-F|Ay=awQK)4rDJ6(<%`49{?%udo=(6 literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00CE.lmp b/wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00CE.lmp new file mode 100644 index 0000000000000000000000000000000000000000..2927fa75604ca2cae71b2c5b83757520984976ff GIT binary patch literal 195 zcmd;N5M%%W9R>ylBL)TrdjJ1XA>$nQ_I675@PjB3N($ literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00CF.lmp b/wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00CF.lmp new file mode 100644 index 0000000000000000000000000000000000000000..bcd452caff26fa79e8b2ab844f1e27982c409b80 GIT binary patch literal 187 zcmd;N5MW?n`2Syrfq}t@fq}t+fq@}{fq@~9fq|i(fq`Kv0|Uca1_p+$3=9m6jH_0y z`p>|;YSo4{Ygn1qtXaA8KLhiM6>F9)W8qn~YU73t8#b(4w_)9ejT`?nGOk#$f`wRcltQT=}1YdCi)QD^{?ug3MdBY#9&hN|4No z75^ESHf#V%fJ|MvY#A@h%9U%@fW_CX1BtHz*$)z5v0}{{ut}>{fiNDKBjf+R;~Ka#I$PFs#UCPD^`HaS+RnbdButiD_8z!W?Zpi1sfMw gc-5*k8$cdn=K$HgX3aVfhl6$5vK1>=u3Y&a0Iv^|0RR91 literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00D9.lmp b/wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00D9.lmp new file mode 100644 index 0000000000000000000000000000000000000000..f067f1e97b6823f8c3e26020197bf795a43c28fd GIT binary patch literal 257 zcmd;K5MW?n`2XL6fq}uDfq@~Mfq@~Dfq|isfq`Kr0|UcK1_p*53=9k>7#J9CGB7Z_ zVqjqS#lXP8%C%ps~H#=b}}$9Twq{ec)`HH@SlN! zL4=WkfsJd;niUYRX2pvC%#5p6tzzX~wQAGKbs(@|&B~SknfTYNS+#P_##L(|VAYBh z{}~0=tl6+)B}fRQZp|8yLI&nFYc{S}!OF7|4pyyOwdy|u(}oQzR`4;eSp(s%TLAutoYBz1oGH_0C_@)lmGw# literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/0401.lmp b/wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/0401.lmp new file mode 100644 index 0000000000000000000000000000000000000000..aa274ae8b11434b45603890c40ce503a772dc65d GIT binary patch literal 274 zcmd;P5M%%W69xtbI|c>@e+CAI6b1%{Y6b>|$qWn(s~8v#>=v7*(!((#A>J^ kyeunLtX#Qb#eYV|6)RS-F|Ay=awQK)4rDJ6(<%@J09VX;@&Et; literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/0407.lmp b/wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/0407.lmp new file mode 100644 index 0000000000000000000000000000000000000000..bcd452caff26fa79e8b2ab844f1e27982c409b80 GIT binary patch literal 187 zcmd;N5MW?n`2Syrfq}t@fq}t+fq@}{fq@~9fq|i(fq`Kv0|Uca1_p+$3=9m6jH_0y z`p>|;YSo4{Ygn1qtXaA8KLhiM6>F9)W8qn~YU73t8#b(4w_)9ejT`?nGOk#$f`w2u**oXOR=;6XX4=GWM`LGkOvtCGDcELMhc_~#AavbWangO{|^B3y%C)N literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00C2.lmp b/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00C2.lmp new file mode 100644 index 0000000000000000000000000000000000000000..277015f206eef0003cb4201eeddae95999977ab8 GIT binary patch literal 164 zcmd;N;9_84U}Vr?U|=v|U|?`yU|{fLU|@)4U|`5+U|^_aU|{HGU|^WRz`(%D%+Aiv z$@!m&os*NDT|q&Po&7%}Cp)_gyMm;+q&z$Oe+Djgc1cNgd3KN>`+o*Dc6LcVPC0gV zc4l^VNst0gPEHv~b{Q#lDVSzXc6kMPkWow=oSf{EQZiB?g&?cg**V!c+1dXC02!AN A;{X5v literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00C7.lmp b/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00C7.lmp new file mode 100644 index 0000000000000000000000000000000000000000..3afaf4b158a6722c4c46267b134bdb1b9b0b3bed GIT binary patch literal 163 zcmd;N;9_84`1fCjfq}tjMU|=XjPU|=X=U|?uwU|^WSz`(%D%+Aiq z&iyl69xtb2L=WPKL!Sd7zPH0Oa=yqas~#5Rt5%!Nem1OEX?feob2rX z8QDQVL0*oX{XYXIJG(r)yo{8jB$Ow~DaS6uE(KD@!OqSu!!E}z!^sI%2$GV4DP)(I elVX?R=8)- literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00CE.lmp b/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00CE.lmp new file mode 100644 index 0000000000000000000000000000000000000000..8a695afbe0e9398e506c424c015a2b4abee78bc1 GIT binary patch literal 125 zcmZQ);9_84U}R8XU|`T@U|_IjU|{fKU|@)3U|`5#U|=X?U|?Wk;^bs!|If(E&Mw2r z&d$!k#Lmvn{-1%1on2CrU7npCgdto$b_IDkc?C|+{|sE5oHCN^!WzP&;vmhO?Cdh^ L?3`fqA8H~1hinYV literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00CF.lmp b/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00CF.lmp new file mode 100644 index 0000000000000000000000000000000000000000..d1296467d34150a3afc87df2ae8887d808b75622 GIT binary patch literal 119 zcmZQ);A8*+6$SBgM`RHCJ3zgPr|9D>KLr_WuCI6A^X* literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00D6.lmp b/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00D6.lmp index e9cda191b431f30b4db563f52389a5e2c7185d04..1278c23b7b2482dc49c9c5a23be8afd1d2f7bc06 100644 GIT binary patch literal 156 zcmd;N;A8*+9R>yl69xtb2L=WPKL!Sd7zPH090mr4Dh39I4h9B>DGUq@EX?fe?3|qc z8QDQVUPh9g{XYXIJG(r)l(?{lFq9|BDZ|drF3QgSpOJ-~on4BZosF5DT^uSa&o0T% l&MwKx3DzmeE+r!;BLz|mGLl_fRD+%UKMOM_Cp$a)e*k=_5cmK9 literal 165 zcmd;N;A8*+9R>ylO9lo8HwFfV5C#T@L@3Xe z?ChMJ{~0*g+2z^U2(z>QXXIdK=agY*XBTB>|IftC&Mw8y v&c@8nE)JDrmt<#Wmjs!?2{J=UMovZwWC#by5O#4<4UjsBU7Vck?Ck#m@N5x7 diff --git a/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00D9.lmp b/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00D9.lmp new file mode 100644 index 0000000000000000000000000000000000000000..21d2f82047f4aca9de8e7e8cb86a1da3f247727c GIT binary patch literal 169 zcmd;N;9_84U}Vr?U|_IhU|?`zU|jPU|=X`U|?urU|^WYz`!tXJ+H%lwy~YVQ2r(z{JkZ$;r&l&Mqe?%{WQ>%!s5nR!h|SK<4pR3Y04w$p A%>V!Z literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00DB.lmp b/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00DB.lmp new file mode 100644 index 0000000000000000000000000000000000000000..12c51335ac5ada68d6beecffd3627b9138a6f3e3 GIT binary patch literal 169 zcmd;N;9_84U}Vr?U|_IhU|?`%U|jMU|=X=U|?usU|^WQz`!tXJY5%7fRmF`MiOL}99*-!f`S4_GZP0VC%crms5nR=Ge`|PJ109k`+opLg%SS% literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/0401.lmp b/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/0401.lmp index fb128a8f580eff9cc8425c1c9476e325596275d7..04f10ef00561cadcd72e652ef2eeba9924c6dce9 100644 GIT binary patch literal 158 zcmd;N;A8*+9R>yl69xtb2L=WPKL!Sd7zPH0Oa=yqas~#5Rt5%!Nem1OEX?feob2rX z8QDQVL0*oX{XYXIJG(r)yo{8jB$Ow~DaS6uE(KD@!OqSu!!E}z!^sI%2$GV4DP)(I elVX?R=8)- literal 168 zcmd;N;A8*+9R>yl69xtbM+OE4e+CAISOx}$Yz78~N(Kgob_NE9sSFGZEX+zu%1TQA z892bSg1j7v!>Obsrz9^UB`FEzi7Lw}$tX#IdCJO4N-|1vN;1mI{~0(z+CXwLU^%cp gIVmM6sGPWxvbd-c*c4`vJ|z|=5XH`@q@?s80QFE9U;qFB diff --git a/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/0407.lmp b/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/0407.lmp new file mode 100644 index 0000000000000000000000000000000000000000..d1296467d34150a3afc87df2ae8887d808b75622 GIT binary patch literal 119 zcmZQ);A8*+6$S Date: Sat, 2 Mar 2019 12:20:58 +0100 Subject: [PATCH 04/20] - moved the sprite box on the player menu up a bit because this was badly overlapping with some long texts in most languages. --- wadsrc/static/menudef.txt | 4 ++-- wadsrc/static/zscript/ui/menu/playermenu.zs | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/wadsrc/static/menudef.txt b/wadsrc/static/menudef.txt index a4690fbef..738c59403 100644 --- a/wadsrc/static/menudef.txt +++ b/wadsrc/static/menudef.txt @@ -419,12 +419,12 @@ ListMenu "PlayerMenu" IfGame(Doom, Heretic, Strife, Chex) { MouseWindow 0, 220 - PlayerDisplay 220, 80, "20 00 00", "80 00 40", 1, "PlayerDisplay" + PlayerDisplay 220, 48, "20 00 00", "80 00 40", 1, "PlayerDisplay" } IfGame(Hexen) { MouseWindow 0, 220 - PlayerDisplay 220, 80, "00 07 00", "40 53 40", 1, "PlayerDisplay" + PlayerDisplay 220, 48, "00 07 00", "40 53 40", 1, "PlayerDisplay" } ValueText "$PLYRMNU_TEAM", "Team" diff --git a/wadsrc/static/zscript/ui/menu/playermenu.zs b/wadsrc/static/zscript/ui/menu/playermenu.zs index 09d05b0c2..38c70353b 100644 --- a/wadsrc/static/zscript/ui/menu/playermenu.zs +++ b/wadsrc/static/zscript/ui/menu/playermenu.zs @@ -586,9 +586,9 @@ class PlayerMenu : ListMenu { Super.Drawer(); String str = Stringtable.Localize("$PLYRMNU_PRESSSPACE"); - screen.DrawText (SmallFont, Font.CR_GOLD, 320 - 32 - 32 - SmallFont.StringWidth (str)/2, 50 + 48 + 70, str, DTA_Clean, true); + screen.DrawText (SmallFont, Font.CR_GOLD, 320 - 32 - 32 - SmallFont.StringWidth (str)/2, 130, str, DTA_Clean, true); str = Stringtable.Localize(mRotation ? "$PLYRMNU_SEEFRONT" : "$PLYRMNU_SEEBACK"); - screen.DrawText (SmallFont, Font.CR_GOLD, 320 - 32 - 32 - SmallFont.StringWidth (str)/2, 50 + 48 + 70 + SmallFont.GetHeight (), str, DTA_Clean, true); + screen.DrawText (SmallFont, Font.CR_GOLD, 320 - 32 - 32 - SmallFont.StringWidth (str)/2, 130 + SmallFont.GetHeight (), str, DTA_Clean, true); } From 5f6198f4e438a65bd97e0c5d821d5588a6de15aa Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sat, 2 Mar 2019 12:54:46 +0100 Subject: [PATCH 05/20] - let IWAD and PWAD BigFonts override BigUpper for consistency. --- src/gamedata/fonts/font.cpp | 3 +++ src/gamedata/fonts/singlelumpfont.cpp | 3 +++ src/gamedata/fonts/v_font.cpp | 20 +++++++++++++++++++- src/gamedata/fonts/v_font.h | 14 ++++++++++++++ src/menu/menu.h | 3 +++ src/menu/menudef.cpp | 3 +++ 6 files changed, 45 insertions(+), 1 deletion(-) diff --git a/src/gamedata/fonts/font.cpp b/src/gamedata/fonts/font.cpp index 5d67b3bce..92ebb03ed 100644 --- a/src/gamedata/fonts/font.cpp +++ b/src/gamedata/fonts/font.cpp @@ -185,6 +185,7 @@ FFont::FFont (const char *name, const char *nametemplate, const char *filetempla if (FixedWidth > 0) { ReadSheetFont(folderdata, FixedWidth, FontHeight, Scale); + Type = Folder; } else { @@ -211,6 +212,7 @@ FFont::FFont (const char *name, const char *nametemplate, const char *filetempla } if (lump.isValid()) { + Type = Multilump; if (position < minchar) minchar = position; if (position > maxchar) maxchar = position; charMap.Insert(position, TexMan.GetTexture(lump)); @@ -235,6 +237,7 @@ FFont::FFont (const char *name, const char *nametemplate, const char *filetempla auto tex = TexMan.GetTexture(lump); tex->SetScale(Scale); charMap.Insert((int)position, tex); + Type = Folder; } } } diff --git a/src/gamedata/fonts/singlelumpfont.cpp b/src/gamedata/fonts/singlelumpfont.cpp index 63cd6ea5a..02e8564b1 100644 --- a/src/gamedata/fonts/singlelumpfont.cpp +++ b/src/gamedata/fonts/singlelumpfont.cpp @@ -131,6 +131,7 @@ FSingleLumpFont::FSingleLumpFont (const char *name, int lump) : FFont(lump) if (data[0] == 0xE1 && data[1] == 0xE6 && data[2] == 0xD5 && data[3] == 0x1A) { LoadBMF(lump, data); + Type = BMF; } else if (data[0] != 'F' || data[1] != 'O' || data[2] != 'N' || (data[3] != '1' && data[3] != '2')) @@ -143,10 +144,12 @@ FSingleLumpFont::FSingleLumpFont (const char *name, int lump) : FFont(lump) { case '1': LoadFON1 (lump, data); + Type = Fon1; break; case '2': LoadFON2 (lump, data); + Type = Fon2; break; } } diff --git a/src/gamedata/fonts/v_font.cpp b/src/gamedata/fonts/v_font.cpp index d7ec9c0ac..9218c5d19 100644 --- a/src/gamedata/fonts/v_font.cpp +++ b/src/gamedata/fonts/v_font.cpp @@ -859,6 +859,12 @@ FFont *V_GetFont(const char *name, const char *fontlumpname) FFont *font = FFont::FindFont (name); if (font == nullptr) { + if (!stricmp(name, "BIGUPPER")) + { + font = FFont::FindFont("BIGFONT"); + if (font) return font; + } + int lump = -1; int folderfile = -1; @@ -1446,6 +1452,10 @@ void V_InitFonts() SmallFont2 = new FFont("SmallFont2", "STBFN%.3d", "defsmallfont2", HU_FONTSTART, HU_FONTSIZE, HU_FONTSTART, -1); } } + + //This must be read before BigFont so that it can be properly substituted. + BigUpper = V_GetFont("BigUpper"); + if (!(BigFont = V_GetFont("BigFont"))) { if (gameinfo.gametype & GAME_Raven) @@ -1453,7 +1463,15 @@ void V_InitFonts() BigFont = new FFont("BigFont", "FONTB%02u", "defbigfont", HU_FONTSTART, HU_FONTSIZE, 1, -1); } } - if (!(BigUpper = V_GetFont("BigUpper"))) + + // let PWAD BIGFONTs override the stock BIGUPPER font. (This check needs to be made smarter.) + if (BigUpper && BigFont->Type != FFont::Folder && BigUpper->Type == FFont::Folder) + { + delete BigUpper; + BigUpper = BigFont; + } + + if (BigUpper == nullptr) { BigUpper = BigFont; } diff --git a/src/gamedata/fonts/v_font.h b/src/gamedata/fonts/v_font.h index 94028589e..7b84e3f06 100644 --- a/src/gamedata/fonts/v_font.h +++ b/src/gamedata/fonts/v_font.h @@ -81,6 +81,18 @@ extern int NumTextColors; class FFont { public: + + enum EFontType + { + Unknown, + Folder, + Multilump, + Fon1, + Fon2, + BMF, + Custom + }; + FFont (const char *fontname, const char *nametemplate, const char *filetemplate, int first, int count, int base, int fdlump, int spacewidth=-1, bool notranslate = false); virtual ~FFont (); @@ -119,6 +131,7 @@ protected: void ReadSheetFont(TArray &folderdata, int width, int height, const DVector2 &Scale); + EFontType Type = EFontType::Unknown; int FirstChar, LastChar; int SpaceWidth; int FontHeight; @@ -147,6 +160,7 @@ protected: friend struct FontsDeleter; friend void V_ClearFonts(); + friend void V_InitFonts(); }; diff --git a/src/menu/menu.h b/src/menu/menu.h index 758ca253e..43a96f812 100644 --- a/src/menu/menu.h +++ b/src/menu/menu.h @@ -9,6 +9,7 @@ #include "r_data/r_translate.h" #include "c_cvars.h" #include "v_font.h" +#include "gi.h" #include "textures/textures.h" EXTERN_CVAR(Float, snd_menuvolume) @@ -207,6 +208,8 @@ public: mScrollTop = 0; mIndent = 0; mDontDim = 0; + mFont = gameinfo.gametype == GAME_Doom ? BigUpper : BigFont; + } size_t PropagateMark() override; ~DOptionMenuDescriptor() diff --git a/src/menu/menudef.cpp b/src/menu/menudef.cpp index e096b4718..e3df4fbf0 100644 --- a/src/menu/menudef.cpp +++ b/src/menu/menudef.cpp @@ -948,6 +948,7 @@ static void ParseOptionMenu(FScanner &sc) sc.MustGetString(); DOptionMenuDescriptor *desc = Create(); + desc->mFont = gameinfo.gametype == GAME_Doom ? BigUpper : BigFont; desc->mMenuName = sc.String; desc->mSelectedItem = -1; desc->mScrollPos = 0; @@ -1303,6 +1304,7 @@ static void BuildPlayerclassMenu() DOptionMenuDescriptor *od = Create(); MenuDescriptors[NAME_Playerclassmenu] = od; od->mMenuName = NAME_Playerclassmenu; + od->mFont = gameinfo.gametype == GAME_Doom ? BigUpper : BigFont; od->mTitle = "$MNU_CHOOSECLASS"; od->mSelectedItem = 0; od->mScrollPos = 0; @@ -1683,6 +1685,7 @@ fail: od = Create(); MenuDescriptors[NAME_Skillmenu] = od; od->mMenuName = NAME_Skillmenu; + od->mFont = gameinfo.gametype == GAME_Doom ? BigUpper : BigFont; od->mTitle = "$MNU_CHOOSESKILL"; od->mSelectedItem = defindex; od->mScrollPos = 0; From 4cf90d70aef0a8f5b54e6af5bedad4d1d2501edc Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sat, 2 Mar 2019 12:58:28 +0100 Subject: [PATCH 06/20] - fixed: cl_maxdecals did not reset the decal counter when deleting decals. --- src/g_cvars.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/g_cvars.cpp b/src/g_cvars.cpp index a9e2ec311..7aac035d0 100644 --- a/src/g_cvars.cpp +++ b/src/g_cvars.cpp @@ -94,6 +94,7 @@ CUSTOM_CVAR (Int, cl_maxdecals, 1024, CVAR_ARCHIVE|CVAR_NOINITCALL) if (thinker != NULL) { thinker->Destroy(); + Level->ImpactDecalCount--; } } } From 0febe20a080125e1f8b9ebc470972cf95544da06 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sat, 2 Mar 2019 13:15:38 +0100 Subject: [PATCH 07/20] - fixed: Unmorphing a monster did not clear its UNMORPHED flag. --- src/p_mobj.cpp | 2 ++ wadsrc/static/zscript/actors/player/player_morph.zs | 1 + 2 files changed, 3 insertions(+) diff --git a/src/p_mobj.cpp b/src/p_mobj.cpp index 44e8a97e9..d2c00d2a5 100644 --- a/src/p_mobj.cpp +++ b/src/p_mobj.cpp @@ -7396,5 +7396,7 @@ void PrintMiscActorInfo(AActor *query) Printf("FriendlySeeBlocks: %d\n", query->friendlyseeblocks); Printf("Target: %s\n", query->target ? query->target->GetClass()->TypeName.GetChars() : "-"); Printf("Last enemy: %s\n", query->lastenemy ? query->lastenemy->GetClass()->TypeName.GetChars() : "-"); + auto sn = FState::StaticGetStateName(query->state); + Printf("State:%s, Tics: %d", sn.GetChars(), query->tics); } } diff --git a/wadsrc/static/zscript/actors/player/player_morph.zs b/wadsrc/static/zscript/actors/player/player_morph.zs index 7921d1dce..87ee90ac9 100644 --- a/wadsrc/static/zscript/actors/player/player_morph.zs +++ b/wadsrc/static/zscript/actors/player/player_morph.zs @@ -562,6 +562,7 @@ class MorphedMonster : Actor unmorphed.args[3] = args[3]; unmorphed.args[4] = args[4]; unmorphed.CopyFriendliness (self, true); + unmorphed.bUnmorphed = false; UnmorphedMe = NULL; Substitute(unmorphed); Destroy (); From 00febf0498e4ddd95d707f3b829044664d39647a Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sat, 2 Mar 2019 13:24:52 +0100 Subject: [PATCH 08/20] - fixed: FLevelLocals did not set the owner for its event manager. --- src/g_level.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/g_level.cpp b/src/g_level.cpp index 1181d4559..02eaa56e9 100644 --- a/src/g_level.cpp +++ b/src/g_level.cpp @@ -1530,7 +1530,7 @@ FLevelLocals::FLevelLocals() : Behaviors(this), tagManager(this) { Players[i] = &players[i]; } - localEventManager = new EventManager; + localEventManager = new EventManager(this); } FLevelLocals::~FLevelLocals() From 9ab57e242bf5d67a1c9753a7bb300d8dca098ef3 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sat, 2 Mar 2019 13:35:35 +0100 Subject: [PATCH 09/20] - fixed: PlayerStartStomp must check for NOTELEFRAG. --- src/p_map.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/p_map.cpp b/src/p_map.cpp index 06bd5dce1..c8ba45470 100644 --- a/src/p_map.cpp +++ b/src/p_map.cpp @@ -557,6 +557,9 @@ void P_PlayerStartStomp(AActor *actor, bool mononly) if (th->player == NULL && !(th->flags3 & MF3_ISMONSTER)) continue; + if ((th->flags6 & MF6_NOTELEFRAG) && !(th->flags7 & MF7_ALWAYSTELEFRAG)) + continue; + if (th->player != NULL && mononly) continue; From d89329918584b5b41cbd7b5a756a5b22c15f7918 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sat, 2 Mar 2019 13:50:58 +0100 Subject: [PATCH 10/20] - fixed: static event handlers must also receive WorldLoaded events on loading a savegame. --- src/events.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/events.cpp b/src/events.cpp index 293ca48d0..5b39d7f54 100755 --- a/src/events.cpp +++ b/src/events.cpp @@ -278,7 +278,7 @@ void EventManager::WorldLoaded() { for (DStaticEventHandler* handler = FirstEventHandler; handler; handler = handler->next) { - if (savegamerestore) continue; // don't execute WorldLoaded for handlers loaded from the savegame. + if (!handler->IsStatic() && savegamerestore) continue; // don't execute WorldLoaded for handlers loaded from the savegame. handler->WorldLoaded(); } } From 5682b1b5bb4acc6095ab17f4d6ebfde9c525657a Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sat, 2 Mar 2019 16:03:56 +0100 Subject: [PATCH 11/20] -corrected text placement on load+save menu. --- wadsrc/static/zscript/ui/menu/loadsavemenu.zs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/wadsrc/static/zscript/ui/menu/loadsavemenu.zs b/wadsrc/static/zscript/ui/menu/loadsavemenu.zs index c0f125b46..6843a6b8b 100644 --- a/wadsrc/static/zscript/ui/menu/loadsavemenu.zs +++ b/wadsrc/static/zscript/ui/menu/loadsavemenu.zs @@ -228,6 +228,7 @@ class LoadSaveMenu : ListMenu } screen.SetClipRect(listboxLeft, listboxTop+rowHeight*i, listboxRight, listboxTop+rowHeight*(i+1)); + int fontoffset = -CleanYFac; if (j == Selected) { @@ -235,19 +236,19 @@ class LoadSaveMenu : ListMenu didSeeSelected = true; if (!mEntering) { - screen.DrawText (ConFont, colr, listboxLeft+1, listboxTop+rowHeight*i+CleanYfac, node.SaveTitle, DTA_CleanNoMove, true); + screen.DrawText (ConFont, colr, listboxLeft+1, listboxTop+rowHeight*i+CleanYfac + fontoffset, node.SaveTitle, DTA_CleanNoMove, true); } else { String s = mInput.GetText() .. ConFont.GetCursor(); int length = ConFont.StringWidth(s) * CleanXFac; int displacement = min(0, listboxWidth - 2 - length); - screen.DrawText (ConFont, Font.CR_WHITE, listboxLeft + 1 + displacement, listboxTop+rowHeight*i+CleanYfac, s, DTA_CleanNoMove, true); + screen.DrawText (ConFont, Font.CR_WHITE, listboxLeft + 1 + displacement, listboxTop+rowHeight*i+CleanYfac + fontoffset, s, DTA_CleanNoMove, true); } } else { - screen.DrawText (ConFont, colr, listboxLeft+1, listboxTop+rowHeight*i+CleanYfac, node.SaveTitle, DTA_CleanNoMove, true); + screen.DrawText (ConFont, colr, listboxLeft+1, listboxTop+rowHeight*i+CleanYfac + fontoffset, node.SaveTitle, DTA_CleanNoMove, true); } screen.ClearClipRect(); j++; From 7a8d5bc23c8619bae28674ab7b3e33dab34da6be Mon Sep 17 00:00:00 2001 From: Nemrtvi Date: Sat, 2 Mar 2019 18:09:08 +0100 Subject: [PATCH 12/20] Spanish font for Doom and Raven MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Also includes extra French letters (ÿ and œ) as well as a tiny fix for the Hexen smallfont ü. --- .../game-doom/fonts/defsmallfont/00D1.lmp | Bin 143 -> 148 bytes .../game-doom/fonts/defsmallfont/0152.lmp | Bin 0 -> 178 bytes .../filter/game-doomchex/fonts/bigfont/00A1.lmp | Bin 134 -> 134 bytes .../filter/game-doomchex/fonts/bigfont/00BF.lmp | Bin 252 -> 252 bytes .../filter/game-doomchex/fonts/bigfont/0152.lmp | Bin 0 -> 513 bytes .../game-doomchex/fonts/bigupper/00A1.lmp | Bin 142 -> 142 bytes .../game-doomchex/fonts/bigupper/00BF.lmp | Bin 255 -> 255 bytes .../game-doomchex/fonts/bigupper/0152.lmp | Bin 0 -> 648 bytes .../game-doomchex/fonts/bigupper/0153.lmp | Bin 0 -> 513 bytes .../game-heretic/fonts/defbigfont/00BF.lmp | Bin 265 -> 265 bytes .../game-heretic/fonts/defbigfont/00D1.lmp | Bin 0 -> 331 bytes .../game-heretic/fonts/defbigfont/00FF.lmp | Bin 0 -> 279 bytes .../game-heretic/fonts/defbigfont/0152.lmp | Bin 0 -> 449 bytes .../game-heretic/fonts/defsmallfont/00A1.lmp | Bin 86 -> 86 bytes .../game-heretic/fonts/defsmallfont/00BF.lmp | Bin 136 -> 136 bytes .../game-heretic/fonts/defsmallfont/00C4.lmp | Bin 161 -> 164 bytes .../game-heretic/fonts/defsmallfont/00D1.lmp | Bin 0 -> 180 bytes .../game-heretic/fonts/defsmallfont/00FF.lmp | Bin 0 -> 170 bytes .../game-heretic/fonts/defsmallfont/0152.lmp | Bin 0 -> 242 bytes .../filter/game-hexen/fonts/defbigfont/00BF.lmp | Bin 265 -> 265 bytes .../filter/game-hexen/fonts/defbigfont/00D1.lmp | Bin 0 -> 331 bytes .../filter/game-hexen/fonts/defbigfont/00FF.lmp | Bin 0 -> 279 bytes .../filter/game-hexen/fonts/defbigfont/0152.lmp | Bin 0 -> 449 bytes .../game-hexen/fonts/defsmallfont/00A1.lmp | Bin 86 -> 86 bytes .../game-hexen/fonts/defsmallfont/00BF.lmp | Bin 136 -> 136 bytes .../game-hexen/fonts/defsmallfont/00C4.lmp | Bin 161 -> 164 bytes .../game-hexen/fonts/defsmallfont/00D1.lmp | Bin 0 -> 180 bytes .../game-hexen/fonts/defsmallfont/00FF.lmp | Bin 0 -> 170 bytes .../game-hexen/fonts/defsmallfont/0152.lmp | Bin 0 -> 242 bytes 29 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0152.lmp create mode 100644 wadsrc_extra/static/filter/game-doomchex/fonts/bigfont/0152.lmp create mode 100644 wadsrc_extra/static/filter/game-doomchex/fonts/bigupper/0152.lmp create mode 100644 wadsrc_extra/static/filter/game-doomchex/fonts/bigupper/0153.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00D1.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00FF.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/0152.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00D1.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00FF.lmp create mode 100644 wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/0152.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00D1.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00FF.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/0152.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00D1.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00FF.lmp create mode 100644 wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/0152.lmp diff --git a/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/00D1.lmp b/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/00D1.lmp index c3f9c4cc29d5cb8fa1cb43d680ab1ef6d6194bb9..98796cc272c5d8c02e93dbaba4a12514078c0daa 100644 GIT binary patch literal 148 zcmd;J;9y{2U}Vr>U|=w3U|?`zU|aBQKLf}1?fUv#wr<}6=4{!bufKc8ZhbIEUw^y4zW$b7P|i;ME!#G2 W0&{ll(%0X-dFyTv2V^)C+;9M4Vkwyb literal 143 zcmd;J;9y{2U}Vr>U|=w1U|?`!U|{fPU|@)0U|`5(U|=X?U|?uwU|?Y2V9nhH*em&8^mFU8O`t? E0P9{PzW@LL diff --git a/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0152.lmp b/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0152.lmp new file mode 100644 index 0000000000000000000000000000000000000000..19854b4548ad616beb628391fca4ae9d56e2639b GIT binary patch literal 178 zcmd;PU}pdU69xtb8wLgjHwFfVAO;48I0goWECvRKG6n{QCI$wEJ_ZJcSquye%NQ6K zn3(lJ;6Ed)zW%NqyY%({GqCIH@7la|GmO1)r~b~3P;n4@3zWTc^QNuaq3o@jH*eky gWpCNJW#?8Xd$ayleVFOofO>+Amq0F;t6bN~PV literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-doomchex/fonts/bigfont/00A1.lmp b/wadsrc_extra/static/filter/game-doomchex/fonts/bigfont/00A1.lmp index 916ceb9c0cc6c42c72acf1d15bba0ad7e6ad6b96..da7389a7bc28fc02ab895c3453928017437705b6 100644 GIT binary patch literal 134 zcmZQ$;9+23`14wv6%-N@5)u&)6~NGfZ0dgiPgN>T literal 134 zcmZQ$;9&p(1qKENLk0#0Ck6(FU}4gl$e#392*-Oo1B#e j7D$ZF%8CgM4Gju_3dDzJWyOaE1qKB|1u(QAoBAIBb-^hA diff --git a/wadsrc_extra/static/filter/game-doomchex/fonts/bigfont/00BF.lmp b/wadsrc_extra/static/filter/game-doomchex/fonts/bigfont/00BF.lmp index 036a4819cc6e93f24f915a021c48f567c7085a07..b4a5cc7b69d5cc023e286973a81bd01662728bb1 100644 GIT binary patch delta 169 zcmeyv_=k~$kAa7Qf#J{pi5#)@;Xy$`5vf^O|5-S)vZBL-LL-v1vi>vhWPw3+LRMBt z0#qO-HY+$NAuB5wCJ+&q6$+9CVX&6)*sQ21WECONS&7k!Sy^E)Enri#paL8$SrS@_A@qt-cF#%A4 z`0%XYkbtbL2$(=pR8~Y-0FsK7n5>kzKx7q(S&8w{Sy>=+;D&-s1`BYoWJzQt2WDmc P=U~aoN{ogwK=S_qKPNq2 diff --git a/wadsrc_extra/static/filter/game-doomchex/fonts/bigfont/0152.lmp b/wadsrc_extra/static/filter/game-doomchex/fonts/bigfont/0152.lmp new file mode 100644 index 0000000000000000000000000000000000000000..c6bbd12a70a566ed49d102d81bea9ffed124c9b3 GIT binary patch literal 513 zcmb1S;9&rP90mr4QU(TwCI$wEi3|)33m6y}HZm|U9AaQ#xXi%7@PvVZ;VT0J0~;d) zgE%7tg9al5gC!#ag9jr6LpUP?Lk1%QLnR{vLl+|h!)!(dhBb@~40{R-)AcMlg!2&EA8kIScHL=;(y__{8``kO0Wp32{-eu`zK8P-n-5M?}ZQ zM8fpPM}~)k{1FTj2#t)74+r5Gs0|>c;fYyU!C*)6WMu^>Wo3n?WMv_InwXUpnv|6l l2sa}IO$Asv$PAbYkYOPGaDRZ@AD@(!6%A7X@)ZpK2LQRzqjCTM literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-doomchex/fonts/bigupper/00A1.lmp b/wadsrc_extra/static/filter/game-doomchex/fonts/bigupper/00A1.lmp index b0121f7772ead2de4b2412b614baf991ffb7955c..1bed4cbffc77f02d0828b4e202057550209663bf 100644 GIT binary patch literal 142 zcmZQ$;Adc9`14wyXW)nO65=AGqoX4u sv$DWq;UQUBDX}rp(b3T{(MV#+v9Yl+F)=YPbzt3zF|iwX9fm_a0Uj3Yz78~dIkmtR<0~0@SlMn%8L#O3kwSi3CPL< pizP;9WyOL7LPAi);=@9Mf`WoVf}rZax+B8_f`WnqKzh-P2LPxJD@XtU diff --git a/wadsrc_extra/static/filter/game-doomchex/fonts/bigupper/00BF.lmp b/wadsrc_extra/static/filter/game-doomchex/fonts/bigupper/00BF.lmp index c403f2146dffb6f441e3457c0038d5eb081cc86f..2a66f8f4064e998c06ea5e2acd330a20c7fee47a 100644 GIT binary patch delta 147 zcmey*_@9x3mw}&wf#J{pi5!vjAt50lkqKE@|JgaRvckec!Xjf~oS3Yv&`2mJI1zX599%9vNXW} diff --git a/wadsrc_extra/static/filter/game-doomchex/fonts/bigupper/0152.lmp b/wadsrc_extra/static/filter/game-doomchex/fonts/bigupper/0152.lmp new file mode 100644 index 0000000000000000000000000000000000000000..1fa0d811eac0e3554285f3730e4e07d1f964f4a7 GIT binary patch literal 648 zcmb1P;Aa4V3I+y-76t}}DGUq@%NQ6Kb}%q7oMB*Kc)-BG@R@;ufsK)YL6VVyL5Gon z!Jd(UA&8NIA&rrNp^A}#p@)%yVICs`!zM-shGUEj47V5=7~U~5FfcJOFo-cRFlaI{ zFxW6LF!(buFeEWCFqASeFtD&^!N7ke?yRh=#H6&ew4}tWtgQcxyjfXkiD^kGndym% zi5XCl#Ehi0l(dwTq@rbNr{PYvG^1aGb<}ACM6{eq>eQ!D?TYL zD~k)nNC9hQ&B}^NgbGC`!i2)(Qy{8BL2~~YShKRiK`fBQ(D+2CS#Y7?XqZqWOk;FR zJV+IPR#tpkN(R__k<5|R=@#)5sB5FZ~O6B82?9hU_2Wn@Hj zR8(YSL^#-Z{;aH|=x`8-1Q8%rAfJavCS_%XM#h5(m{=%CED%J1S>O-~3{T3+0u#X? z35Xbo6$+9F01*f=u!93YvS7~#M<+qT1B(#Y8i=ZRs4A!h;824KLEQlg_(Z5sWDMB3 MtYEt!#)Fyv0qx<>KL7v# literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-doomchex/fonts/bigupper/0153.lmp b/wadsrc_extra/static/filter/game-doomchex/fonts/bigupper/0153.lmp new file mode 100644 index 0000000000000000000000000000000000000000..2189fba1248ef24672caddbe7d1ced26361c2c74 GIT binary patch literal 513 zcmb1S;9+23`1?PHfq|ivfq|ikfq`Kn0|UbX1_p+W3=9m17#J8XGcYhbVPIhR%D}+D z#>l`R&d9)^!N|a1$;iOq!N|Z6&d9)!!N|Z+$;iOa#mK-gn~{NG4I=}?UPcCnbBqiO z_Zb-&J}@#cu&`u-!G9)>tgNiWn3$NXtgQcxTv=I3fuW(Hp@B(IZa{E&cxZ57bXL}X z2A-^}`0((Un3%}mz<8)YaCj2Ppzv_8083U@KulH^2bBKL0A+v$z-E91lAtQ!TA%{K zDIh~ZDiR?oLK8s(JXu+xktrZsB4a?#0=pwRIw3wjF+LF_0CILhTvTjqOk4ug*>T|! z(Xla+F#Yk7;o%^E1j7VEBje-4K{y6#14wCjVpdi#*ik%LS;0wJS)nOeSqPsdW@UvY nWn~4z%}7C00agw&1EvCG7)U?dA0YR~CuLSW^JW)NmzVEFTYB1gUXwd>ceTw!Cqa^>pPYgexdFkiiT^ZNDw46IkL-n?=B h>Qy$@t5>gG1It{ycH`PLn9Rg|Qp{JcU7dJa4*<{#E|UNN delta 82 zcmeBV>SW^JW)Nlofr%XT=2x#>y>f+(^~#m2SFc^YD!_d8>doud|1+>&y?Xt|&8t`0 eSg&5ab`30Z?b?lN*I+Ue_en8dyMArrZ9M=(vn-eZ diff --git a/wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00D1.lmp b/wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00D1.lmp new file mode 100644 index 0000000000000000000000000000000000000000..868a0142aa19d6a7839ea85bde220c9d342cceca GIT binary patch literal 331 zcmd;O5M%%W8wLgjPX-2tC)tfh2c&}f-0a6LU zSFiqO02{>0bNTYst5=}l^5y>w%wUDAOxLb~ZM%N`>Qz>z8#iDMVg$2Uc&}c)dF|TG zn>TNPoOb>Ce+Fi-2v`E_CNOagmUiHD_5>wW#zeY1*{b8 W=Bro#vvFU(eC5hzh>I>?{tp1jox)lG literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00FF.lmp b/wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00FF.lmp new file mode 100644 index 0000000000000000000000000000000000000000..390f7dde517d75bfc7fdb542adfef1f635b60349 GIT binary patch literal 279 zcmd;P5Mf|o`2XL8fq}t+fq@}{fq|iffq`KX0|Ubv1_p+m3=9k>85kJuGcYiGXJBC9 zW@KPsWxsy?+V$(#u3owFpONv}wQDS#SFYT;e)Hyy>({Pc6=1x6{rZ0f=4;n(Ucb)5 zb>+&<>o=}LrI>EsymI9~1M`(D*DqgY;l6U^2H2$Q*FgH1uV23gHu1`pD=Y$6u3W!z z`SRtf*REZ^cKOzgYnLzo=jOO_8V}o*E7z}Iy8$*7Y#}S-l`B_x zSg%~UaqY_G%W$iBu3Wiw<;s;S*RJ0H8T+3Rq>P2@>eZXquivZeG831MEIVZV>O<6_BGr?qy`Ye*M<9Yi#V-u3f)+(^PBuUxry^(q(h_3Jl4qM%>`d!3Wz^5ttFAx5w_ cK{~Hoxe5wDCZ?-buU_Q<34_e%V7dmP0I;U~KL7v# literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00A1.lmp b/wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00A1.lmp index cbfb264c0a5327290aa9a02f0b787b7445312f90..1cee5470e254ef5c77bfc52692fd52426603bf28 100644 GIT binary patch literal 86 zcmZQ!;ACK6`1fCefq_Ajfq}uCfq}u5fq{X6iItU=m6?s59YnLT{%7E1WmRNVR+N{O Z0`u6}#aJc8M1({@Jg8z;R#ve3{{VU!2-^Sv literal 86 zcmZQ!;A8*+2?hoRO$G)Aa|Q+mSC9Y`D=RB2GaD-_J3EN=pMjH|U5r&kNJLD6mGwUZ ZCo8KWtCXy~qB4jFSIo-F%FfFA9{|{a2HXGu diff --git a/wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00BF.lmp b/wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00BF.lmp index d05449d66f0fee11e65006f68ccb364f461164c4..5bf08de63b9c836fe5dcf66c87ae57c28404879b 100644 GIT binary patch delta 102 zcmeBR>|o^JVBln6VEFfcB8PUUyeup0e+DL2R#sMKHda|o^JVBll`fr%X2p(0|etp6F9SXo(Fnb}xbCFEtn0-UU@vaAxatgI63?Ee`! mSy`o6uaK(%uEiA08V)Cr4|5=$?S!LPT|FeP(`VRnC`wRmB diff --git a/wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00C4.lmp b/wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00C4.lmp index 00318427ce801a0095acc03d21aa83c59b9d455f..d4950c50a9626675df2b8f1767a03f16a822823c 100644 GIT binary patch delta 66 zcmZ3;xP;M)lYx@~1aue}7)%%#7@Qdx7y=m>7~&Zi81fky7^)c<7&;jk7^X8YFt9MQ Tva+(X|7T=mWo2caXr2WC0M26vJ^%m! diff --git a/wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00D1.lmp b/wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00D1.lmp new file mode 100644 index 0000000000000000000000000000000000000000..f28db98a89675b2259e4dc3d82cdab5fce1d81e3 GIT binary patch literal 180 zcmd;N;9_84U}Vr?U|_IhU|?`(U|jRU|^_VU|?utU|^Waz`(Gafq{XEgPon7 z6$1Vv)9R>yl3kC)T4+aK?CsSFGZiy0Ugn3&kvSy|Z` zSy@^CGqSL->yS%)t5Xf+_S{7DT5fG1si4|lc00W8wgAzR#piSeocNbo1I;X zm6cTp#Aaq?m0)FMVP<6&0dd(`S;bgcS;g4dAzGwlr6gEc!3If5h(cA!OG$`93}t7R wWt9RM09Gx=pf~l94V3hzlhmDSW^JW)NmzVEFTYB1gUXsx_-ttYBkZv0~-QRV!BtFt1#>Va=NV46G|xZdkWw h$! delta 82 zcmeBV>SW^JW)Nlofr%XT<||jNT(N?Ub;XL6D_5;tDZspP<%TtD{xh(yT)Af5hLtPX eSXZuGwF)e=YSp?`t6(w{_en9YTC-~6Z9M=q$0Zy9 diff --git a/wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00D1.lmp b/wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00D1.lmp new file mode 100644 index 0000000000000000000000000000000000000000..8251867126d8aef85931ee453c28afb9edcaec43 GIT binary patch literal 331 zcmd;O5M%%W8wLgjPX-2tC{~4H9tXQ{lB@6GWRU6i=S+#1_8ZcV*pMh!R$_*P>c-O312T}>a zD_8z!02{>0vuxSQl`EiN*|Pr(%wUDAOsiIbZCkTuMmj`wswZYM(9u literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00FF.lmp b/wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00FF.lmp new file mode 100644 index 0000000000000000000000000000000000000000..483c3f7953bfa2dc79aa2f008e2a16362ddb6f61 GIT binary patch literal 279 zcmd;P5Mf|o`2XL8fq}t+fq@}{fq|iffq`KX0|Ubv1_p+m3=9k>85kJuGcYiGXJBC9 zW@KPsWnZ&q)tWV{R<2m_pOJCZs#PqUD^_e=vth%!HLF&x6kuGlX3c*F=2fdUtXadt zwPMAFHS5+urIHY4S_d{1Y#}S-iWMt( zSXZoAw`#?*WpJx_R;<{#V#SITtJbUo8T+3Rq>P1Y<;o3f)~wsGZsoFN%l@;luUxrq J)vA>seE_S5gy8@H literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/0152.lmp b/wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/0152.lmp new file mode 100644 index 0000000000000000000000000000000000000000..cdefd35efd3b5d47394db69ad9f6b374375828cc GIT binary patch literal 449 zcmWe*;ALQ7`13!3fq@~Lfq|idfq|i&fq`K<0|Ub<1_p*b3=9nC7#JAtGcYi`XJBAp zWMp6vU}RvBWn^H`WMp74XJlY-XJlZAVq{<_WMp7yXJlZQ#mK<0nvsEF7b61$3){+- zYu2q>HmqB>Zq2F{EB-Taty!~S&8k(a)_}Q;+^be?0I6EJYR#&ZEB`aF zg0!t#wv2;yB}iz+ivJ9(AiXP>E#qWaxpK`Ku*e#a(IAl(E7q(5Yg@4bY(5wBx^*BW zjI66xfo`d!3VI*|Jq2Ax5w_ cK{{8gSP2S0CZ?4uSFYp$34_e%U|I#D0N0$*KL7v# literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00A1.lmp b/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00A1.lmp index 2eaf0487a1b87c90f9857007f4563d4d026bf486..ece681c9e1bbd724530522f7e8878e4c2ed241af 100644 GIT binary patch literal 86 zcmZQ!;ACK6`1fCefq_Ajfq}uCfq}u5fq{X6iJhIDotcf36GXGK|7YN2XIEfXP>`3C Z0rNOHCE2AU#YM$IJg8!Jc6PA({{Vx82`&Ht literal 86 zcmZQ!;A8*+2?hoRO$G)Aa|Q+mSC9Y`J3Bi&GaHCx=VWL9&%nvfuD~uMC$FFY=5caL TvWts~OG<%waK)UQAPxTk|o^JVBln6VEFfcB8PUUyc|3Ge+DLYc6N4VHg|o^JVBll`fr%X2q2iM4?Ee{<*xA|Hnc3LcrR3$n0-WsZa_mxa?CesUoc|d( o+1X{-<=H`EaK()5?Ch*8?Cg^A?Ck$pnc3OpI642bf(`l)0Bg()bN~PV diff --git a/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00C4.lmp b/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00C4.lmp index b5b1cedab1ab95e69e3a9f65d31ad8ec87f276da..c0b9abc9435b01518f5cc04aeec0088ed83a8b27 100644 GIT binary patch delta 67 zcmZ3;xP;M~lYx@~1aue}7)%%#7@Qdx7y=m>7~&Zi81fky7^)c<7&;jk7^X8YFt9MQ Uv$Jz@{%2%lXJ=<-ooJB>0P7|PZ~y=R delta 64 zcmZ3&xRB9;lYx@~1aue}7)%%#7#tWF82lI*7-AS07;+dG7%CVT7}^*Z7^W~VFt9MQ Rv$Jz@{%2%oXP;=D2>{hS2T}k4 diff --git a/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00D1.lmp b/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00D1.lmp new file mode 100644 index 0000000000000000000000000000000000000000..2513dad769824a6ab427e60bd864b3312f258f51 GIT binary patch literal 180 zcmd;N;9_84U}Vr?U|_IhU|?`(U|jRU|^_VU|?utU|^Waz`(Gafq{XEgOih! z9RmI{aaxj6!{{sN- CpAshk literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00FF.lmp b/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00FF.lmp new file mode 100644 index 0000000000000000000000000000000000000000..7583181148f88e97aedf277707816501a51d8148 GIT binary patch literal 170 zcmd;N;9>v)9R>yl3kC)T4+aK?CsSFGZiy0Ugn3y;@+1c3{ z+1c6uGqSL=vn#N(voV9I{|s#G?DCv)^6c#F%k046XIxc~qF literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/0152.lmp b/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/0152.lmp new file mode 100644 index 0000000000000000000000000000000000000000..0cf50cb1b3416e4752d745af4aee724ee0129bbe GIT binary patch literal 242 zcmd;QU}s=p`1jw1fq}t?fq@~6fq@~3fq@~9fq|ixfq|iufq`Kv0|Uc+1_p-J3=9n0 z85kH2GcYimXJBBs&A`C$jDdlHiJ6_9os;uFBP%<*yo@9}`+o*@c6KRoVGUt0o0C(9 zot<42#Aaq^mttpUVP Date: Sat, 2 Mar 2019 18:32:20 +0100 Subject: [PATCH 13/20] =?UTF-8?q?moved=20the=20'=C3=BF's=20to=20the=20corr?= =?UTF-8?q?esponding=20uppercase=20code=20point=20so=20that=20the=20intern?= =?UTF-8?q?al=20substitution=20logic=20handles=20this=20properly.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fonts/defbigfont/{00FF.lmp => 0178.lmp} | Bin .../fonts/defsmallfont/{00FF.lmp => 0178.lmp} | Bin .../fonts/defbigfont/{00FF.lmp => 0178.lmp} | Bin .../fonts/defsmallfont/{00FF.lmp => 0178.lmp} | Bin 4 files changed, 0 insertions(+), 0 deletions(-) rename wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/{00FF.lmp => 0178.lmp} (100%) rename wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/{00FF.lmp => 0178.lmp} (100%) rename wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/{00FF.lmp => 0178.lmp} (100%) rename wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/{00FF.lmp => 0178.lmp} (100%) diff --git a/wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00FF.lmp b/wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/0178.lmp similarity index 100% rename from wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/00FF.lmp rename to wadsrc_extra/static/filter/game-heretic/fonts/defbigfont/0178.lmp diff --git a/wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00FF.lmp b/wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/0178.lmp similarity index 100% rename from wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/00FF.lmp rename to wadsrc_extra/static/filter/game-heretic/fonts/defsmallfont/0178.lmp diff --git a/wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00FF.lmp b/wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/0178.lmp similarity index 100% rename from wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/00FF.lmp rename to wadsrc_extra/static/filter/game-hexen/fonts/defbigfont/0178.lmp diff --git a/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00FF.lmp b/wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/0178.lmp similarity index 100% rename from wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/00FF.lmp rename to wadsrc_extra/static/filter/game-hexen/fonts/defsmallfont/0178.lmp From 9add9e2af9f4d9dc07ea8360f814b85eb4a555d3 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sat, 2 Mar 2019 19:02:16 +0100 Subject: [PATCH 14/20] - added two missing characters. --- .../filter/game-doomchex/fonts/bigfont/0178.lmp | Bin 0 -> 298 bytes .../filter/game-doomchex/fonts/bigupper/0178.lmp | Bin 0 -> 316 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 wadsrc_extra/static/filter/game-doomchex/fonts/bigfont/0178.lmp create mode 100644 wadsrc_extra/static/filter/game-doomchex/fonts/bigupper/0178.lmp diff --git a/wadsrc_extra/static/filter/game-doomchex/fonts/bigfont/0178.lmp b/wadsrc_extra/static/filter/game-doomchex/fonts/bigfont/0178.lmp new file mode 100644 index 0000000000000000000000000000000000000000..d91230a9a7218d33e46b0632a797bd7da76d8cea GIT binary patch literal 298 zcmWe&;Adc9U}o@OU|jPU|=X_U|?usU|^WWz`(GYfq`Ks0|Ucx1_p*Z z3=9k(7#JA-GcYjlGBPkoGBPkIF)}bPGiQOoe`c1ftk9&atpAMcAbx0kVpi6F2F|Rk z$mFbm@MtiPD=RB3F)JW2G!o3^&&mpl&&mo84h)O|=>chG0x?**va*81qod;!lRzf2 zab{%&L`FtN#(=cJc;VskXc{8Jqa!0hf(-m%YqJ8wLnC1(Ge9g442LS=1X~^$3NZ!j Q<^V7ojPU|=X_U|?usU|^WZz`(GPfq~%=0|Ucl1_p-L z3=9lRj0_Bdj0_C&j0_Cgj0_AWj0_CS%vm7tpP3~qD>No6>pvqqh#wrCn3eUPfio*B zGC37oi~aV6TA%VSWVwwa8)` literal 0 HcmV?d00001 From 580c55f8a5ba5cf071071335c34a6978e46c0f66 Mon Sep 17 00:00:00 2001 From: Rachael Alexanderson Date: Sat, 2 Mar 2019 13:59:42 -0500 Subject: [PATCH 15/20] - moved language changer to miscellaneous menu - removed spacing gaps in the customize controls menu --- wadsrc/static/menudef.txt | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/wadsrc/static/menudef.txt b/wadsrc/static/menudef.txt index 738c59403..981538408 100644 --- a/wadsrc/static/menudef.txt +++ b/wadsrc/static/menudef.txt @@ -378,8 +378,6 @@ OptionMenu "OptionsMenu" protected Submenu "$OPTMNU_DISPLAY", "VideoOptions" Submenu "$OPTMNU_VIDEO", "VideoModeMenu" StaticText " " - Option "$OPTMNU_LANGUAGE", "language", "LanguageOptions" - StaticText " " SafeCommand "$OPTMNU_DEFAULTS", "reset2defaults" SafeCommand "$OPTMNU_RESETTOSAVED", "reset2saved" Command "$OPTMNU_CONSOLE", "menuconsole" @@ -453,25 +451,12 @@ OptionMenu "CustomizeControls" protected { Title "$CNTRLMNU_TITLE" - StaticText "" Submenu "$CNTRLMNU_ACTION" , "ActionControlsMenu" - - StaticText "" Submenu "$CNTRLMNU_CHAT" , "ChatControlsMenu" - - StaticText "" Submenu "$CNTRLMNU_WEAPONS" , "WeaponsControlMenu" - - StaticText "" Submenu "$CNTRLMNU_INVENTORY" , "InventoryControlsMenu" - - StaticText "" Submenu "$CNTRLMNU_OTHER" , "OtherControlsMenu" - - StaticText "" Submenu "$CNTRLMNU_POPUPS" , "StrifeControlsMenu" - - StaticText "" Submenu "$MAPCNTRLMNU_CONTROLS" , "MapControlsMenu" } @@ -1149,6 +1134,8 @@ OptionMenu "MiscOptions" protected Option "$MISCMNU_CACHENODES", "gl_cachenodes", "OnOff" Slider "$MISCMNU_CACHETIME", "gl_cachetime", 0.0, 2.0, 0.1 SafeCommand "$MISCMNU_CLEARNODECACHE", "clearnodecache" + StaticText " " + Option "$OPTMNU_LANGUAGE", "language", "LanguageOptions" } //------------------------------------------------------------------------------------------- From 0f184a0f283aff747685868c4c1aaa567f706002 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sat, 2 Mar 2019 21:09:45 +0100 Subject: [PATCH 16/20] - reject all DMX sounds shorter than or equal 8 bytes. 8 bytes is the minimum header size for DMX, so for one byte of sample data it has to be 9 bytes. This was causing access to invalid memory when trying to read the header of something too short. For other file formats this is of no concern because none has a header this short. --- src/s_sound.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/s_sound.cpp b/src/s_sound.cpp index abc11b255..b6aefd868 100644 --- a/src/s_sound.cpp +++ b/src/s_sound.cpp @@ -1490,7 +1490,7 @@ sfxinfo_t *S_LoadSound(sfxinfo_t *sfx, FSoundLoadBuffer *pBuffer) DPrintf(DMSG_NOTIFY, "Loading sound \"%s\" (%td)\n", sfx->name.GetChars(), sfx - &S_sfx[0]); int size = Wads.LumpLength(sfx->lumpnum); - if (size > 0) + if (size > 8) { auto wlump = Wads.OpenLumpReader(sfx->lumpnum); auto sfxdata = wlump.Read(size); @@ -1556,7 +1556,7 @@ static void S_LoadSound3D(sfxinfo_t *sfx, FSoundLoadBuffer *pBuffer) else { int size = Wads.LumpLength(sfx->lumpnum); - if (size <= 0) return; + if (size <= 8) return; auto wlump = Wads.OpenLumpReader(sfx->lumpnum); auto sfxdata = wlump.Read(size); From ef30ddbd40b75d6b8817eaf1875800639037f602 Mon Sep 17 00:00:00 2001 From: Magnus Norddahl Date: Sat, 2 Mar 2019 21:12:50 +0100 Subject: [PATCH 17/20] - fix typo --- src/utility/vectors.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utility/vectors.h b/src/utility/vectors.h index f06d26f1d..d388f825e 100644 --- a/src/utility/vectors.h +++ b/src/utility/vectors.h @@ -681,7 +681,7 @@ struct TVector4 // Test for equality bool operator== (const TVector4 &other) const { - return X == other.X && Y == other.Y && Z == other.Z && W = other.W; + return X == other.X && Y == other.Y && Z == other.Z && W == other.W; } // Test for inequality From 0dc348599028316ea28c5fd6ffc23ed9555ec05c Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sat, 2 Mar 2019 22:10:44 +0100 Subject: [PATCH 18/20] - fixed: in CollectWithinRadius, make pos a value variable instead of a reference. The underlying data here can be reallocated and invalidate what it points to. --- src/g_shared/a_dynlight.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/g_shared/a_dynlight.cpp b/src/g_shared/a_dynlight.cpp index d1b91af9d..edc2e4dfd 100644 --- a/src/g_shared/a_dynlight.cpp +++ b/src/g_shared/a_dynlight.cpp @@ -539,7 +539,7 @@ void FDynamicLight::CollectWithinRadius(const DVector3 &opos, FSection *section, bool hitonesidedback = false; for (unsigned i = 0; i < collected_ss.Size(); i++) { - auto &pos = collected_ss[i].pos; + auto pos = collected_ss[i].pos; section = collected_ss[i].sect; touching_sector = AddLightNode(§ion->lighthead, section, this, touching_sector); From eacc6c8e08c057b3c4d9b613f584929346ccd040 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sat, 2 Mar 2019 23:01:42 +0100 Subject: [PATCH 19/20] - fixed: ACS's LocalAmbientSound did not check the activator before calling its methods. --- src/p_acs.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/p_acs.cpp b/src/p_acs.cpp index 0734eb243..dff6e4cb3 100644 --- a/src/p_acs.cpp +++ b/src/p_acs.cpp @@ -8869,7 +8869,7 @@ scriptwait: case PCD_LOCALAMBIENTSOUND: lookup = Level->Behaviors.LookupString (STACK(2)); - if (lookup != NULL && activator->CheckLocalView()) + if (lookup != NULL && activator && activator->CheckLocalView()) { S_Sound (CHAN_AUTO, lookup, From 3903d957bdc871a2b8b3f80e085b4b5ed4ff12e8 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sun, 3 Mar 2019 00:03:22 +0100 Subject: [PATCH 20/20] - moved the weapon bobbing options from the Display Options to the HUD Options menu. --- wadsrc/static/menudef.txt | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/wadsrc/static/menudef.txt b/wadsrc/static/menudef.txt index 981538408..192727398 100644 --- a/wadsrc/static/menudef.txt +++ b/wadsrc/static/menudef.txt @@ -897,9 +897,6 @@ OptionMenu "VideoOptions" protected Option "$DSPLYMNU_NOMONSTERINTERPOLATION", "nomonsterinterpolation", "NoYes" Slider "$DSPLYMNU_MENUDIM", "dimamount", 0, 1.0, 0.05, 2 ColorPicker "$DSPLYMNU_DIMCOLOR", "dimcolor" - Slider "$DSPLYMNU_MOVEBOB", "movebob", 0, 1.0, 0.05, 2 - Slider "$DSPLYMNU_STILLBOB", "stillbob", 0, 1.0, 0.05, 2 - Slider "$DSPLYMNU_BOBSPEED", "wbobspeed", 0, 2.0, 0.1 IfOption(Windows) { StaticText " " @@ -990,6 +987,11 @@ OptionMenu "HUDOptions" protected Option "$HUDMNU_POISONFLASHES", "pf_poison", "ZDoomHexen" Option "$HUDMNU_ICEFLASHES", "pf_ice", "ZDoomHexen" Option "$HUDMNU_HAZARDFLASHES", "pf_hazard", "ZDoomStrife" + StaticText " " + Slider "$DSPLYMNU_MOVEBOB", "movebob", 0, 1.0, 0.05, 2 + Slider "$DSPLYMNU_STILLBOB", "stillbob", 0, 1.0, 0.05, 2 + Slider "$DSPLYMNU_BOBSPEED", "wbobspeed", 0, 2.0, 0.1 + } OptionMenu "ScalingOptions" protected