From c45c7cdb4bc89ca8a0b070e2de2f8a6ebf8e76a7 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sun, 14 Apr 2019 14:02:53 +0200 Subject: [PATCH 1/5] - reimplemented as an OptionsMenu. This is both for consistency and better localizability. The old code is retained to ensure that mods inheriting from the old menu continue to work. --- src/d_netinfo.cpp | 6 - src/d_player.h | 3 +- src/menu/menu.cpp | 5 +- src/menu/menudef.cpp | 91 +++ src/menu/playermenu.cpp | 5 +- src/utility/namedef.h | 4 + wadsrc/static/menudef.txt | 54 +- wadsrc/static/zscript.txt | 1 + wadsrc/static/zscript/ui/menu/menu.zs | 2 + .../static/zscript/ui/menu/newplayermenu.zs | 556 ++++++++++++++++++ wadsrc/static/zscript/ui/menu/optionmenu.zs | 9 +- .../static/zscript/ui/menu/playerdisplay.zs | 67 ++- wadsrc/static/zscript/ui/menu/playermenu.zs | 20 +- 13 files changed, 798 insertions(+), 25 deletions(-) create mode 100644 wadsrc/static/zscript/ui/menu/newplayermenu.zs diff --git a/src/d_netinfo.cpp b/src/d_netinfo.cpp index 0aedc48b2..e631c4e99 100644 --- a/src/d_netinfo.cpp +++ b/src/d_netinfo.cpp @@ -489,12 +489,6 @@ int userinfo_t::PlayerClassChanged(const char *classname) return classnum; } -int userinfo_t::PlayerClassNumChanged(int classnum) -{ - *static_cast((*this)[NAME_PlayerClass]) = classnum; - return classnum; -} - int userinfo_t::ColorSetChanged(int setnum) { *static_cast((*this)[NAME_ColorSet]) = setnum; diff --git a/src/d_player.h b/src/d_player.h index d52e35979..fc338b32f 100644 --- a/src/d_player.h +++ b/src/d_player.h @@ -264,8 +264,7 @@ struct userinfo_t : TMap int SkinNumChanged(int skinnum); int GenderChanged(const char *gendername); int PlayerClassChanged(const char *classname); - int PlayerClassNumChanged(int classnum); - uint32_t ColorChanged(const char *colorname); + uint32_t ColorChanged(const char *colorname); uint32_t ColorChanged(uint32_t colorval); int ColorSetChanged(int setnum); }; diff --git a/src/menu/menu.cpp b/src/menu/menu.cpp index d50b56b67..4f179155f 100644 --- a/src/menu/menu.cpp +++ b/src/menu/menu.cpp @@ -66,7 +66,6 @@ CVAR (Bool, show_obituaries, true, CVAR_ARCHIVE) CVAR (Int, m_showinputgrid, 0, CVAR_ARCHIVE | CVAR_GLOBALCONFIG) CVAR(Bool, m_blockcontrollers, false, CVAR_ARCHIVE | CVAR_GLOBALCONFIG) - CVAR (Float, snd_menuvolume, 0.6f, CVAR_ARCHIVE) CVAR(Int, m_use_mouse, 2, CVAR_ARCHIVE|CVAR_GLOBALCONFIG) CVAR(Int, m_show_backbutton, 0, CVAR_ARCHIVE|CVAR_GLOBALCONFIG) @@ -518,6 +517,10 @@ void M_SetMenu(FName menu, int param) void ActivateEndGameMenu(); ActivateEndGameMenu(); return; + + case NAME_Playermenu: + menu = NAME_NewPlayerMenu; // redirect the old player menu to the new one. + break; } // End of special checks diff --git a/src/menu/menudef.cpp b/src/menu/menudef.cpp index 9932b9d1d..5eca78b01 100644 --- a/src/menu/menudef.cpp +++ b/src/menu/menudef.cpp @@ -48,6 +48,8 @@ #include "i_system.h" #include "v_video.h" #include "gstrings.h" +#include "teaminfo.h" +#include "r_data/sprites.h" void ClearSaveGames(); @@ -1543,6 +1545,95 @@ void M_CreateMenus() { I_BuildALResamplersList(*opt); } + opt = OptionValues.CheckKey(NAME_PlayerTeam); + if (opt != nullptr) + { + auto op = *opt; + op->mValues.Resize(Teams.Size() + 1); + op->mValues[0].Value = 0; + op->mValues[0].Text = "$OPTVAL_NONE"; + for (unsigned i = 0; i < Teams.Size(); i++) + { + op->mValues[i+1].Value = i+1; + op->mValues[i+1].Text = Teams[i].GetName(); + } + } + opt = OptionValues.CheckKey(NAME_PlayerClass); + if (opt != nullptr) + { + auto op = *opt; + int o = 0; + if (!gameinfo.norandomplayerclass && PlayerClasses.Size() > 1) + { + op->mValues.Resize(PlayerClasses.Size()+1); + op->mValues[0].Value = -1; + op->mValues[0].Text = "$MNU_RANDOM"; + o = 1; + } + else op->mValues.Resize(PlayerClasses.Size()); + for (unsigned i = 0; i < PlayerClasses.Size(); i++) + { + op->mValues[i+o].Value = i; + op->mValues[i+o].Text = GetPrintableDisplayName(PlayerClasses[i].Type); + } + } +} + + +DEFINE_ACTION_FUNCTION(DMenu, UpdateColorsets) +{ + PARAM_PROLOGUE; + PARAM_POINTER(playerClass, FPlayerClass); + + TArray PlayerColorSets; + + EnumColorSets(playerClass->Type, &PlayerColorSets); + + auto opt = OptionValues.CheckKey(NAME_PlayerColors); + if (opt != nullptr) + { + auto op = *opt; + op->mValues.Resize(PlayerColorSets.Size() + 1); + op->mValues[0].Value = -1; + op->mValues[0].Text = "$OPTVAL_CUSTOM"; + for (unsigned i = 0; i < PlayerColorSets.Size(); i++) + { + auto cset = GetColorSet(playerClass->Type, PlayerColorSets[i]); + op->mValues[i + 1].Value = PlayerColorSets[i]; + op->mValues[i + 1].Text = cset? cset->Name.GetChars() : "?"; // The null case should never happen here. + } + } + return 0; +} + +DEFINE_ACTION_FUNCTION(DMenu, UpdateSkinOptions) +{ + PARAM_PROLOGUE; + PARAM_POINTER(playerClass, FPlayerClass); + + auto opt = OptionValues.CheckKey(NAME_PlayerSkin); + if (opt != nullptr) + { + auto op = *opt; + + if ((GetDefaultByType(playerClass->Type)->flags4 & MF4_NOSKIN) || players[consoleplayer].userinfo.GetPlayerClassNum() == -1) + { + op->mValues.Resize(1); + op->mValues[0].Value = -1; + op->mValues[0].Text = "$OPTVAL_DEFAULT"; + } + else + { + op->mValues.Clear(); + for (unsigned i = 0; i < Skins.Size(); i++) + { + op->mValues.Reserve(1); + op->mValues.Last().Value = i; + op->mValues.Last().Text = Skins[i].Name; + } + } + } + return 0; } //============================================================================= diff --git a/src/menu/playermenu.cpp b/src/menu/playermenu.cpp index add7ed363..84ed9fc1a 100644 --- a/src/menu/playermenu.cpp +++ b/src/menu/playermenu.cpp @@ -133,8 +133,9 @@ DEFINE_ACTION_FUNCTION(DPlayerMenu, ClassChanged) PARAM_POINTER(cls, FPlayerClass); if (DMenu::InMenu) { - players[consoleplayer].userinfo.PlayerClassNumChanged(gameinfo.norandomplayerclass ? sel : sel - 1); - cvar_set("playerclass", sel == 0 && !gameinfo.norandomplayerclass ? "Random" : GetPrintableDisplayName(cls->Type).GetChars()); + const char *pclass = sel == -1 ? "Random" : GetPrintableDisplayName(cls->Type).GetChars(); + players[consoleplayer].userinfo.PlayerClassChanged(pclass); + cvar_set("playerclass", pclass); } return 0; } diff --git a/src/utility/namedef.h b/src/utility/namedef.h index 4d54aadfc..0191bd417 100644 --- a/src/utility/namedef.h +++ b/src/utility/namedef.h @@ -1083,3 +1083,7 @@ xx(MapMarker) xx(Spawn2) xx(LevelLocals) xx(Level) +xx(PlayerTeam) +xx(PlayerColors) +xx(PlayerSkin) +xx(NewPlayerMenu) diff --git a/wadsrc/static/menudef.txt b/wadsrc/static/menudef.txt index 330f52783..19347e9d1 100644 --- a/wadsrc/static/menudef.txt +++ b/wadsrc/static/menudef.txt @@ -369,7 +369,7 @@ OptionMenu "OptionsMenu" protected Submenu "$OPTMNU_MOUSE", "MouseOptions" Submenu "$OPTMNU_JOYSTICK", "JoystickOptions" StaticText " " - Submenu "$OPTMNU_PLAYER", "PlayerMenu" + Submenu "$OPTMNU_PLAYER", "NewPlayerMenu" Submenu "$OPTMNU_GAMEPLAY", "GameplayOptions" Submenu "$OPTMNU_COMPATIBILITY", "CompatibilityOptions" Submenu "$OPTMNU_AUTOMAP", "AutomapOptions" @@ -401,6 +401,58 @@ OptionValue "Gender" 3, "$OPTVAL_OTHER" } +OptionValue "PlayerTeam" +{ + // Filled in programmatically +} + +OptionValue "PlayerColors" +{ + // Filled in programmatically +} + +OptionValue "PlayerClass" +{ + // Filled in programmatically +} + +OptionValue "PlayerSkin" +{ + // Filled in programmatically +} + +/* + IfGame(Doom, Heretic, Strife, Chex) + { + MouseWindow 0, 220 + PlayerDisplay 220, 48, "20 00 00", "80 00 40", 1, "PlayerDisplay" + } + IfGame(Hexen) + { + MouseWindow 0, 220 + PlayerDisplay 220, 48, "00 07 00", "40 53 40", 1, "PlayerDisplay" + } +*/ + +OptionMenu "NewPlayerMenu" +{ + Title "$MNU_PLAYERSETUP" + PlayerNameField "$PLYRMNU_NAME" + PlayerTeamItem "$PLYRMNU_TEAM", "PlayerTeam" + PlayerColorItem "$PLYRMNU_PLAYERCOLOR", "PlayerColors" + PlayerColorSlider "$PLYRMNU_RED", 0 + PlayerColorSlider "$PLYRMNU_GREEN", 1 + PlayerColorSlider "$PLYRMNU_BLUE", 2 + PlayerClassItem "$PLYRMNU_PLAYERCLASS", "PlayerClass" + PlayerSkinItem "$PLYRMNU_PLAYERSKIN", "PlayerSkin" + PlayerGenderItem "$PLYRMNU_PLAYERGENDER", "Gender" + AutoaimSlider "$PLYRMNU_AUTOAIM" + PlayerSwitchOnPickupItem "$PLYRMNU_SWITCHONPICKUP", "OffOn" + Option "$PLYRMNU_ALWAYSRUN", cl_run, "OnOff" + Class "NewPlayerMenu" +} + +// The old player menu is kept for mods that redefine it. ListMenu "PlayerMenu" { StaticTextCentered 160, 6, "$MNU_PLAYERSETUP" diff --git a/wadsrc/static/zscript.txt b/wadsrc/static/zscript.txt index 510adc8f5..ecfedb7c0 100644 --- a/wadsrc/static/zscript.txt +++ b/wadsrc/static/zscript.txt @@ -246,6 +246,7 @@ version "3.8" #include "zscript/ui/menu/messagebox.zs" #include "zscript/ui/menu/optionmenu.zs" #include "zscript/ui/menu/optionmenuitems.zs" +#include "zscript/ui/menu/newplayermenu.zs" #include "zscript/ui/menu/playercontrols.zs" #include "zscript/ui/menu/playerdisplay.zs" #include "zscript/ui/menu/playermenu.zs" diff --git a/wadsrc/static/zscript/ui/menu/menu.zs b/wadsrc/static/zscript/ui/menu/menu.zs index 4c4db1374..da1fbe81b 100644 --- a/wadsrc/static/zscript/ui/menu/menu.zs +++ b/wadsrc/static/zscript/ui/menu/menu.zs @@ -98,6 +98,8 @@ class Menu : Object native ui version("2.4") native static void SetMouseCapture(bool on); native void Close(); native void ActivateMenu(); + native static void UpdateColorsets(PlayerClass cls); + native static void UpdateSkinOptions(PlayerClass cls); //============================================================================= // diff --git a/wadsrc/static/zscript/ui/menu/newplayermenu.zs b/wadsrc/static/zscript/ui/menu/newplayermenu.zs new file mode 100644 index 000000000..ec6c65c73 --- /dev/null +++ b/wadsrc/static/zscript/ui/menu/newplayermenu.zs @@ -0,0 +1,556 @@ +/* +** playermenu.cpp +** The player setup menu +** +**--------------------------------------------------------------------------- +** Copyright 2001-2010 Randy Heit +** Copyright 2010-2017 Christoph Oelckers +** All rights reserved. +** +** Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions +** are met: +** +** 1. Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** 2. Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in the +** documentation and/or other materials provided with the distribution. +** 3. The name of the author may not be used to endorse or promote products +** derived from this software without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +** IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +** OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +** IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +** NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +** THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +**--------------------------------------------------------------------------- +** +*/ + +//============================================================================= +// +// +// +//============================================================================= + +class OptionMenuItemPlayerNameField : OptionMenuItemTextField +{ + OptionMenuItemTextField Init(String label) + { + Super.Init(label, "", null); + mEnter = null; + return self; + } + + override bool, String GetString (int i) + { + if (i == 0) + { + return true, players[consoleplayer].GetUserName(); +; + } + return false, ""; + } + + override bool SetString (int i, String s) + { + if (i == 0) + { + PlayerMenu.PlayerNameChanged(s); + return true; + } + return false; + } +} + +//============================================================================= +// +// +// +//============================================================================= + +class OptionMenuItemPlayerTeamItem : OptionMenuItemOptionBase +{ + OptionMenuItemPlayerTeamItem Init(String label, Name values) + { + Super.Init(label, 'none', values, null , false); + return self; + } + + //============================================================================= + override int GetSelection() + { + int Selection = -1; + int cnt = OptionValues.GetCount(mValues); + if (cnt > 0) + { + int myteam = players[consoleplayer].GetTeam(); + let f = double(myteam == Team.NoTeam? 0 : myteam + 1); + for(int i = 0; i < cnt; i++) + { + if (f ~== OptionValues.GetValue(mValues, i)) + { + Selection = i; + break; + } + } + } + return Selection; + } + + override void SetSelection(int Selection) + { + int cnt = OptionValues.GetCount(mValues); + if (cnt > 0) + { + PlayerMenu.TeamChanged(Selection); + } + } +} + +//============================================================================= +// +// +// +//============================================================================= + +class OptionMenuItemPlayerColorItem : OptionMenuItemOptionBase +{ + OptionMenuItemPlayerColorItem Init(String label, Name values) + { + Super.Init(label, 'none', values, null , false); + return self; + } + + //============================================================================= + override int GetSelection() + { + int Selection = -1; + int cnt = OptionValues.GetCount(mValues); + if (cnt > 0) + { + int mycolorset = players[consoleplayer].GetColorSet(); + let f = double(mycolorset); + for(int i = 0; i < cnt; i++) + { + if (f ~== OptionValues.GetValue(mValues, i)) + { + Selection = i; + break; + } + } + } + return Selection; + } + + override void SetSelection(int Selection) + { + int cnt = OptionValues.GetCount(mValues); + if (cnt > 0) + { + let val = int(OptionValues.GetValue(mValues, Selection)); + PlayerMenu.ColorSetChanged(val); + let menu = NewPlayerMenu(Menu.GetCurrentMenu()); + if (menu) menu.UpdateTranslation(); + } + } +} + +//============================================================================= +// +// +// +//============================================================================= + +class OptionMenuItemPlayerColorSlider : OptionMenuSliderBase +{ + int mChannel; + + OptionMenuItemPlayerColorSlider Init(String label, int channel) + { + Super.Init(label, 0, 255, 16, false, 'none'); + mChannel = channel; + return self; + } + + override double GetSliderValue() + { + Color colr = players[consoleplayer].GetColor(); + if (mChannel == 0) return colr.r; + else if (mChannel == 1) return colr.g; + else return colr.b; + } + + override void SetSliderValue(double val) + { + Color colr = players[consoleplayer].GetColor(); + int r = colr.r; + int g = colr.g; + int b = colr.b; + if (mChannel == 0) r = int(val); + else if (mChannel == 1) g = int(val); + else b = int(val); + PlayerMenu.ColorChanged(r, g, b); + let menu = NewPlayerMenu(Menu.GetCurrentMenu()); + if (menu) menu.UpdateTranslation(); + } + + override int Draw(OptionMenuDescriptor desc, int y, int indent, bool selected) + { + int mycolorset = players[consoleplayer].GetColorSet(); + if (mycolorset == -1) + { + return super.Draw(desc, y, indent, selected); + } + return indent; + } + + +} + +//============================================================================= +// +// +// +//============================================================================= + +class OptionMenuItemPlayerClassItem : OptionMenuItemOptionBase +{ + OptionMenuItemPlayerClassItem Init(String label, Name values) + { + Super.Init(label, 'none', values, null , false); + return self; + } + + //============================================================================= + override int GetSelection() + { + int Selection = -1; + int cnt = OptionValues.GetCount(mValues); + if (cnt > 0) + { + double f = players[consoleplayer].GetPlayerClassNum(); + for(int i = 0; i < cnt; i++) + { + if (f ~== OptionValues.GetValue(mValues, i)) + { + Selection = i; + break; + } + } + } + return Selection; + } + + override void SetSelection(int Selection) + { + + int cnt = OptionValues.GetCount(mValues); + if (cnt > 1) + { + let val = int(OptionValues.GetValue(mValues, Selection)); + let menu = NewPlayerMenu(Menu.GetCurrentMenu()); + if (menu) + { + menu.PickPlayerClass(val); + PlayerMenu.ClassChanged(val, menu.mPlayerClass); + menu.mPlayerDisplay.SetValue(ListMenuItemPlayerDisplay.PDF_CLASS, players[consoleplayer].GetPlayerClassNum()); + menu.UpdateSkins(); + } + } + } +} + +//============================================================================= +// +// +// +//============================================================================= + +class OptionMenuItemPlayerSkinItem : OptionMenuItemOptionBase +{ + OptionMenuItemPlayerSkinItem Init(String label, Name values) + { + Super.Init(label, 'none', values, null , false); + return self; + } + + //============================================================================= + override int GetSelection() + { + int Selection = 0; + int cnt = OptionValues.GetCount(mValues); + if (cnt > 1) + { + double f = players[consoleplayer].GetSkin(); + for(int i = 0; i < cnt; i++) + { + if (f ~== OptionValues.GetValue(mValues, i)) + { + Selection = i; + break; + } + } + } + return Selection; + } + + override void SetSelection(int Selection) + { + + int cnt = OptionValues.GetCount(mValues); + if (cnt > 1) + { + let val = int(OptionValues.GetValue(mValues, Selection)); + let menu = NewPlayerMenu(Menu.GetCurrentMenu()); + PlayerMenu.SkinChanged(val); + if (menu) + { + menu.mPlayerDisplay.SetValue(ListMenuItemPlayerDisplay.PDF_SKIN, val); + menu.UpdateTranslation(); + } + } + } +} + +//============================================================================= +// +// +// +//============================================================================= + +class OptionMenuItemPlayerGenderItem : OptionMenuItemOptionBase +{ + OptionMenuItemPlayerGenderItem Init(String label, Name values) + { + Super.Init(label, 'none', values, null , false); + return self; + } + + //============================================================================= + override int GetSelection() + { + return players[consoleplayer].GetGender(); + } + + override void SetSelection(int Selection) + { + PlayerMenu.GenderChanged(Selection); + } +} + +//============================================================================= +// +// +// +//============================================================================= + +class OptionMenuItemAutoaimSlider : OptionMenuSliderBase +{ + OptionMenuItemAutoaimSlider Init(String label) + { + Super.Init(label, 0, 35, 1, false, 'none'); + return self; + } + + override double GetSliderValue() + { + return players[consoleplayer].GetAutoaim(); + } + + override void SetSliderValue(double val) + { + PlayerMenu.AutoaimChanged(val); + } +} + +//============================================================================= +// +// +// +//============================================================================= + +class OptionMenuItemPlayerSwitchOnPickupItem : OptionMenuItemOptionBase +{ + OptionMenuItemPlayerSwitchOnPickupItem Init(String label, Name values) + { + Super.Init(label, 'none', values, null , false); + return self; + } + + //============================================================================= + override int GetSelection() + { + return players[consoleplayer].GetNeverSwitch()? 1:0; + } + + override void SetSelection(int Selection) + { + PlayerMenu.SwitchOnPickupChanged(Selection); + } +} + +//============================================================================= +// +// +// +//============================================================================= + +class NewPlayerMenu : OptionMenu +{ + PlayerClass mPlayerClass; + int mRotation; + PlayerMenuPlayerDisplay mPlayerDisplay; + + const PLAYERDISPLAY_X = 220; + const PLAYERDISPLAY_Y = 60; + const PLAYERDISPLAY_W = 144; + const PLAYERDISPLAY_H = 160; + const PLAYERDISPLAY_SPACE = 180; + + override void Init(Menu parent, OptionMenuDescriptor desc) + { + Super.Init(parent, desc); + let BaseColor = gameinfo.gametype == GAME_Hexen? 0x200000 : 0x000700; + let AddColor = gameinfo.gametype == GAME_Hexen? 0x800040 : 0x405340; + mPlayerDisplay = new("PlayerMenuPlayerDisplay"); + mPlayerDisplay.init(BaseColor, AddColor); + PickPlayerClass(); + + PlayerInfo p = players[consoleplayer]; + mRotation = 0; + + mPlayerDisplay.SetValue(ListMenuItemPlayerDisplay.PDF_ROTATION, 0); + mPlayerDisplay.SetValue(ListMenuItemPlayerDisplay.PDF_MODE, 1); + mPlayerDisplay.SetValue(ListMenuItemPlayerDisplay.PDF_TRANSLATE, 1); + mPlayerDisplay.SetValue(ListMenuItemPlayerDisplay.PDF_CLASS, p.GetPlayerClassNum()); + UpdateSkins(); + } + + override int GetIndent() + { + return Super.GetIndent() - 45*CleanXfac_1; + } + + + //============================================================================= + // + // + // + //============================================================================= + + void UpdateTranslation() + { + Translation.SetPlayerTranslation(TRANSLATION_Players, MAXPLAYERS, consoleplayer, mPlayerClass); + } + + //============================================================================= + // + // + // + //============================================================================= + + static int GetPlayerClassIndex(int pick = -100) + { + int pclass = 0; + // [GRB] Pick a class from player class list + if (PlayerClasses.Size () > 1) + { + pclass = pick == -100? players[consoleplayer].GetPlayerClassNum() : pick; + + if (pclass < 0) + { + pclass = (MenuTime() >> 7) % PlayerClasses.Size (); + } + } + return pclass; + } + + //============================================================================= + // + // + // + //============================================================================= + + void PickPlayerClass(int pick = -100) + { + let PlayerClassIndex = GetPlayerClassIndex(pick); + mPlayerClass = PlayerClasses[PlayerClassIndex]; + UpdateColorsets(mPlayerClass); + UpdateSkinOptions(mPlayerClass); + UpdateTranslation(); + } + + + //============================================================================= + // + // + // + //============================================================================= + + void UpdateSkins() + { + PlayerInfo p = players[consoleplayer]; + if (mPlayerClass != NULL && !(GetDefaultByType (mPlayerClass.Type).bNoSkin) && p.GetPlayerClassNum() != -1) + { + mPlayerDisplay.SetValue(ListMenuItemPlayerDisplay.PDF_SKIN, p.GetSkin()); + } + UpdateTranslation(); + } + + //============================================================================= + // + // + // + //============================================================================= + + override bool OnUIEvent(UIEvent ev) + { + if (ev.Type == UIEvent.Type_Char && ev.KeyChar == 32) + { + // turn the player sprite around + mRotation = 8 - mRotation; + mPlayerDisplay.SetValue(ListMenuItemPlayerDisplay.PDF_ROTATION, mRotation); + return true; + } + return Super.OnUIEvent(ev); + } + + //============================================================================= + // + // + // + //============================================================================= + + override void Ticker() + { + mPlayerDisplay.Ticker(); + } + + //============================================================================= + // + // + // + //============================================================================= + + override void Drawer() + { + Super.Drawer(); + mPlayerDisplay.Drawer(false); + + int x = screen.GetWidth()/(CleanXfac_1*2) + PLAYERDISPLAY_X + PLAYERDISPLAY_W/2; + int y = PLAYERDISPLAY_Y + PLAYERDISPLAY_H + 5; + String str = Stringtable.Localize("$PLYRMNU_PRESSSPACE"); + screen.DrawText (NewSmallFont, Font.CR_GOLD, x - NewSmallFont.StringWidth(str)/2, y, str, DTA_VirtualWidth, CleanWidth_1, DTA_VirtualHeight, CleanHeight_1, DTA_KeepRatio, true); + str = Stringtable.Localize(mRotation ? "$PLYRMNU_SEEFRONT" : "$PLYRMNU_SEEBACK"); + y += NewSmallFont.GetHeight(); + screen.DrawText (NewSmallFont, Font.CR_GOLD,x - NewSmallFont.StringWidth(str)/2, y, str, DTA_VirtualWidth, CleanWidth_1, DTA_VirtualHeight, CleanHeight_1, DTA_KeepRatio, true); + + } +} diff --git a/wadsrc/static/zscript/ui/menu/optionmenu.zs b/wadsrc/static/zscript/ui/menu/optionmenu.zs index ea4a7f07a..a6d8216c2 100644 --- a/wadsrc/static/zscript/ui/menu/optionmenu.zs +++ b/wadsrc/static/zscript/ui/menu/optionmenu.zs @@ -410,6 +410,12 @@ class OptionMenu : Menu // //============================================================================= + virtual int GetIndent() + { + int indent = max(0, (mDesc.mIndent + 40) - CleanWidth_1 / 2); + return screen.GetWidth() / 2 + indent * CleanXfac_1; + } + override void Drawer () { int y = mDesc.mPosition; @@ -433,8 +439,7 @@ class OptionMenu : Menu int fontheight = OptionMenuSettings.mLinespacing * CleanYfac_1; y *= CleanYfac_1; - int indent = max(0, (mDesc.mIndent + 40) - CleanWidth_1 / 2); - indent = screen.GetWidth() / 2 + indent * CleanXfac_1; + int indent = GetIndent(); int ytop = y + mDesc.mScrollTop * 8 * CleanYfac_1; int lastrow = screen.GetHeight() - OptionHeight() * CleanYfac_1; diff --git a/wadsrc/static/zscript/ui/menu/playerdisplay.zs b/wadsrc/static/zscript/ui/menu/playerdisplay.zs index f27ee3288..63b6de420 100644 --- a/wadsrc/static/zscript/ui/menu/playerdisplay.zs +++ b/wadsrc/static/zscript/ui/menu/playerdisplay.zs @@ -132,6 +132,7 @@ class ListMenuItemPlayerDisplay : ListMenuItem { if (classnum < 0 || classnum >= PlayerClasses.Size ()) { + Console.Printf("Setting random class for %d, size = %d", classnum, PlayerClasses.Size ()); if (mClassNum != -1) { mClassNum = -1; @@ -141,6 +142,7 @@ class ListMenuItemPlayerDisplay : ListMenuItem } else if (mPlayerClass != PlayerClasses[classnum] || force) { + Console.Printf("Setting class for %d", classnum); UpdatePlayer(classnum); mClassNum = classnum; } @@ -154,7 +156,7 @@ class ListMenuItemPlayerDisplay : ListMenuItem bool UpdatePlayerClass() { - if (mOwner.mSelectedItem >= 0) + if (mOwner && mOwner.mSelectedItem >= 0) { int classnum; Name seltype; @@ -289,4 +291,67 @@ class ListMenuItemPlayerDisplay : ListMenuItem } } } +} + +//============================================================================= +// +// +// +//============================================================================= + +class PlayerMenuPlayerDisplay : ListMenuItemPlayerDisplay +{ + void Init(Color c1, Color c2) + { + Super.Init(null, 0, 0, c1, c2, true, 'none'); + } + + override void Drawer(bool selected) + { + int x = screen.GetWidth()/2 + NewPlayerMenu.PLAYERDISPLAY_X * CleanXfac_1; + int y = NewPlayerMenu.PLAYERDISPLAY_Y * CleanYfac_1; + + int r = mBaseColor.r + mAddColor.r; + int g = mBaseColor.g + mAddColor.g; + int b = mBaseColor.b + mAddColor.b; + int m = max(r, g, b); + r = r * 255 / m; + g = g * 255 / m; + b = b * 255 / m; + Color c = Color(255, r, g, b); + + screen.DrawTexture(mBackdrop, false, x, y - 1, + DTA_DestWidth, NewPlayerMenu.PLAYERDISPLAY_W * CleanXfac_1, + DTA_DestHeight, NewPlayerMenu.PLAYERDISPLAY_H * CleanYfac_1, + DTA_Color, c, + DTA_KeepRatio, mNoPortrait, + DTA_Masked, true); + + Screen.DrawFrame (x, y, NewPlayerMenu.PLAYERDISPLAY_W*CleanXfac_1, NewPlayerMenu.PLAYERDISPLAY_H*CleanYfac_1-1); + + if (mPlayerState != NULL) + { + Vector2 Scale; + TextureID sprite; + bool flip; + + let playdef = GetDefaultByType((class)(mPlayerClass.Type)); + [sprite, flip, Scale] = mPlayerState.GetSpriteTexture(mRotation, mSkin, playdef.Scale); + + if (sprite.IsValid()) + { + int trans = mTranslate? Translation.MakeID(TRANSLATION_Players, MAXPLAYERS) : 0; + let tscale = TexMan.GetScaledSize(sprite); + Scale.X *= CleanXfac_1 * tscale.X * 2; + Scale.Y *= CleanYfac_1 * tscale.Y * 2; + + screen.DrawTexture (sprite, false, + x + (NewPlayerMenu.PLAYERDISPLAY_W/2) * CleanXfac_1, y + (NewPlayerMenu.PLAYERDISPLAY_H-16) * CleanYfac_1, + DTA_DestWidthF, Scale.X, DTA_DestHeightF, Scale.Y, + DTA_TranslationIndex, trans, + DTA_KeepRatio, mNoPortrait, + DTA_FlipX, flip); + } + } + } } \ No newline at end of file diff --git a/wadsrc/static/zscript/ui/menu/playermenu.zs b/wadsrc/static/zscript/ui/menu/playermenu.zs index 1aefb0ba0..6404ac713 100644 --- a/wadsrc/static/zscript/ui/menu/playermenu.zs +++ b/wadsrc/static/zscript/ui/menu/playermenu.zs @@ -42,16 +42,16 @@ class PlayerMenu : ListMenu Array mPlayerSkins; // All write function for the player config are native to prevent abuse. - protected static native void AutoaimChanged(float val); - protected static native void TeamChanged(int val); - protected static native void AlwaysRunChanged(int val); - protected static native void GenderChanged(int val); - protected static native void SwitchOnPickupChanged(int val); - protected static native void ColorChanged(int red, int green, int blue); - protected static native void ColorSetChanged(int red); - protected static native void PlayerNameChanged(String name); - protected static native void SkinChanged (int val); - protected static native void ClassChanged(int sel, PlayerClass cls); + static native void AutoaimChanged(float val); + static native void TeamChanged(int val); + static native void AlwaysRunChanged(int val); + static native void GenderChanged(int val); + static native void SwitchOnPickupChanged(int val); + static native void ColorChanged(int red, int green, int blue); + static native void ColorSetChanged(int red); + static native void PlayerNameChanged(String name); + static native void SkinChanged (int val); + static native void ClassChanged(int sel, PlayerClass cls); //============================================================================= // From dd61222c6a11dfeaf21dab568345653c593348bd Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sun, 14 Apr 2019 14:11:34 +0200 Subject: [PATCH 2/5] - reset RF_NOINTERPOLATEVIEW when unpredicting a player. --- src/p_user.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/p_user.cpp b/src/p_user.cpp index f854d5c8c..f2e82cc7a 100644 --- a/src/p_user.cpp +++ b/src/p_user.cpp @@ -1380,6 +1380,7 @@ void P_PredictPlayer (player_t *player) act->flags &= ~MF_PICKUP; act->flags2 &= ~MF2_PUSHWALL; + act->renderflags &= ~RF_NOINTERPOLATEVIEW; player->cheats |= CF_PREDICTING; BackupNodeList(act, act->touching_sectorlist, §or_t::touching_thinglist, PredictionTouchingSectors_sprev_Backup, PredictionTouchingSectorsBackup); From 69722accbb73247385367cbc6e49bef919001f38 Mon Sep 17 00:00:00 2001 From: Nemrtvi Date: Sun, 14 Apr 2019 13:58:55 +0200 Subject: [PATCH 3/5] Russian Chex font Made by @JNechaevsky! Also includes a new hyphen symbol used for Russian. --- .../filter/game-chex/fonts/bigfont/002D.lmp | Bin 80 -> 78 bytes .../filter/game-chex/fonts/bigfont/0410.lmp | Bin 0 -> 221 bytes .../filter/game-chex/fonts/bigfont/0411.lmp | Bin 0 -> 210 bytes .../filter/game-chex/fonts/bigfont/0412.lmp | Bin 0 -> 201 bytes .../filter/game-chex/fonts/bigfont/0413.lmp | Bin 0 -> 138 bytes .../filter/game-chex/fonts/bigfont/0414.lmp | Bin 0 -> 256 bytes .../filter/game-chex/fonts/bigfont/0415.lmp | Bin 0 -> 196 bytes .../filter/game-chex/fonts/bigfont/0416.lmp | Bin 0 -> 272 bytes .../filter/game-chex/fonts/bigfont/0417.lmp | Bin 0 -> 201 bytes .../filter/game-chex/fonts/bigfont/0418.lmp | Bin 0 -> 204 bytes .../filter/game-chex/fonts/bigfont/0419.lmp | Bin 0 -> 233 bytes .../filter/game-chex/fonts/bigfont/041A.lmp | Bin 0 -> 206 bytes .../filter/game-chex/fonts/bigfont/041B.lmp | Bin 0 -> 193 bytes .../filter/game-chex/fonts/bigfont/041C.lmp | Bin 0 -> 288 bytes .../filter/game-chex/fonts/bigfont/041D.lmp | Bin 0 -> 227 bytes .../filter/game-chex/fonts/bigfont/041E.lmp | Bin 0 -> 223 bytes .../filter/game-chex/fonts/bigfont/041F.lmp | Bin 0 -> 226 bytes .../filter/game-chex/fonts/bigfont/0420.lmp | Bin 0 -> 170 bytes .../filter/game-chex/fonts/bigfont/0421.lmp | Bin 0 -> 203 bytes .../filter/game-chex/fonts/bigfont/0422.lmp | Bin 0 -> 159 bytes .../filter/game-chex/fonts/bigfont/0423.lmp | Bin 0 -> 174 bytes .../filter/game-chex/fonts/bigfont/0424.lmp | Bin 0 -> 270 bytes .../filter/game-chex/fonts/bigfont/0425.lmp | Bin 0 -> 202 bytes .../filter/game-chex/fonts/bigfont/0426.lmp | Bin 0 -> 260 bytes .../filter/game-chex/fonts/bigfont/0427.lmp | Bin 0 -> 180 bytes .../filter/game-chex/fonts/bigfont/0428.lmp | Bin 0 -> 281 bytes .../filter/game-chex/fonts/bigfont/0429.lmp | Bin 0 -> 313 bytes .../filter/game-chex/fonts/bigfont/042A.lmp | Bin 0 -> 212 bytes .../filter/game-chex/fonts/bigfont/042B.lmp | Bin 0 -> 292 bytes .../filter/game-chex/fonts/bigfont/042C.lmp | Bin 0 -> 189 bytes .../filter/game-chex/fonts/bigfont/042D.lmp | Bin 0 -> 208 bytes .../filter/game-chex/fonts/bigfont/042E.lmp | Bin 0 -> 306 bytes .../filter/game-chex/fonts/bigfont/042F.lmp | Bin 0 -> 196 bytes 33 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/bigfont/0410.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/bigfont/0411.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/bigfont/0412.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/bigfont/0413.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/bigfont/0414.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/bigfont/0415.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/bigfont/0416.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/bigfont/0417.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/bigfont/0418.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/bigfont/0419.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/bigfont/041A.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/bigfont/041B.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/bigfont/041C.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/bigfont/041D.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/bigfont/041E.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/bigfont/041F.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/bigfont/0420.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/bigfont/0421.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/bigfont/0422.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/bigfont/0423.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/bigfont/0424.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/bigfont/0425.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/bigfont/0426.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/bigfont/0427.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/bigfont/0428.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/bigfont/0429.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/bigfont/042A.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/bigfont/042B.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/bigfont/042C.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/bigfont/042D.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/bigfont/042E.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/bigfont/042F.lmp diff --git a/wadsrc_extra/static/filter/game-chex/fonts/bigfont/002D.lmp b/wadsrc_extra/static/filter/game-chex/fonts/bigfont/002D.lmp index 89e50ba3c4841aff140d241809dfad312cc93672..c7d5997f3bd2ea4b8dcc06be97fb7e33fd154158 100644 GIT binary patch literal 78 zcmZQ$U}j)o`2Amjfq_Atfq_Avfq}uCfq}uEfq}uDfq{X6sidT=>^}o@ad9aF!+!?m Z!op%OT~t&Krb|mJ85sUEGJ(|o2LK=F5QG2# literal 80 zcmZQ$U}j)o`2Amjfq_ATfq}t*fq}t-fq}t+fq}t;fq{X6xfTTegXrSgTC8*#RJ^vf G_CEl*ITy(Q diff --git a/wadsrc_extra/static/filter/game-chex/fonts/bigfont/0410.lmp b/wadsrc_extra/static/filter/game-chex/fonts/bigfont/0410.lmp new file mode 100644 index 0000000000000000000000000000000000000000..ca5e4f2c00e1231a4ff3f85c03fb1be37f90a22d GIT binary patch literal 221 zcmd;K;9&p(3kC)T2L=WP9|i`7Xa)v`90mr4S_TG&9tH-6Squyes~8vavom z8g{5aVNqFSU2zEq$j<)^TqPw%#pQJzr6mj?dCtPZqN1{@iqg``%Kr@9rKP21)fFWr zB}GM5RsR{e85kJqs!NNDOUrT@82&SJf}BxZRbEoX!0?}y9b{s4c{KyWe-0K9n}Oj! E0Asm4L;wH) literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-chex/fonts/bigfont/0411.lmp b/wadsrc_extra/static/filter/game-chex/fonts/bigfont/0411.lmp new file mode 100644 index 0000000000000000000000000000000000000000..68001a04e5b03dc6025b36d6937bc83cce2fefea GIT binary patch literal 210 zcmd;N;9&p(9R>yl8wLgjUj_z-I0goWd^0D5|O`VPF6Y6joN2mz0)PmzR9|_Md^LtgMKEp|F&VfdRz$ z&%j(>UckV>!dz5T%*MtEqConfq8ue9MFr&*#g$;Oii$!81{RL8va;f;in1E8SXEUy eNQ|Ams=BJ8nt_4gKO+;!Wvpxr3=Hh-AOQe|>@}_c literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-chex/fonts/bigfont/0412.lmp b/wadsrc_extra/static/filter/game-chex/fonts/bigfont/0412.lmp new file mode 100644 index 0000000000000000000000000000000000000000..a33ac2d1c88140aff329a11588284ee4c67eca69 GIT binary patch literal 201 zcmd;N;9&p(9R>yl8wLgjUj_z-I0goWd^0D5|O`VPF6Y6joN2mz0)PmzQvG{Ab`PD=T7Ps4it=U;r`x zGccEz7celeFqf1Rv$1h97ZnwQ^;J|96c!d16_i&LSAqp|W{?8zii(1Qf`Y=b%96t3 z;{Oah<>iINMTLb$Rh1w(|0V%CaH`hW|`F6%{1~MWvM`CDoOs3=IDnc?${( z3knK~D=G`hL00`|;3+C9D=jZADJm*2u4G{N&%je&Uc|u8@QsI|vakvyz*JsdQo_Lk zG9Sd{DK9TBEh{fCt|%{nXea`K;=%%$3f@vMC@C$4I*E}NWETjRLtVzfR#5?U6DKQ3 Jf`NhIKLALhNu2-y literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-chex/fonts/bigfont/0415.lmp b/wadsrc_extra/static/filter/game-chex/fonts/bigfont/0415.lmp new file mode 100644 index 0000000000000000000000000000000000000000..66ae25aa77a82c34d416812382c36432b72705c2 GIT binary patch literal 196 zcmd;J;9&p(4F(1V3kC)TPX-2tCrKP1M3=CicE32!k%8E*As%sb+{xfnjFfbGr7nK&4f;{n`fxE1%ps={K zs=Bneq`dq;15asbVQCcu14DI1Q7OnttmWku>ylD+UGzUj_z-L&pl@C_sY040nw#Q*>R literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-chex/fonts/bigfont/0418.lmp b/wadsrc_extra/static/filter/game-chex/fonts/bigfont/0418.lmp new file mode 100644 index 0000000000000000000000000000000000000000..36789e5bb65b81a3815ca3123472911ccb8b11eb GIT binary patch literal 204 zcmd;L;9&p(0|o{L2L=X)Kn4beBnAeCA_fMAItB)YE(QjMSquyes~H#=_J9;}7Zw&3 zmX?;36c-hhm;YzrDJm)`EG#T4E-5LkVqo~sz*AUQP*hS{SX5G4Rn5TgpOKrLoxQH2 zu&A`EhJk_MKQnt-S#e=;O&v&%y{4w9u%x&Wq>;O*sGy**prER0r1VPQc*VNqdG cb$M|)NC8h-S!qR8b#)bc4b)_igW&i-0L4i<761SM literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-chex/fonts/bigfont/0419.lmp b/wadsrc_extra/static/filter/game-chex/fonts/bigfont/0419.lmp new file mode 100644 index 0000000000000000000000000000000000000000..67bb17019e83262f6a56e487256e9c8031b02139 GIT binary patch literal 233 zcmd;L;Adc9U}i92U|?`yU|jRU|^_aU|{HHU|^Wfz`(GHfq~%!0|UcNkV@{t z!lJ^`(vp(mqN4Kh|I9o^MFoY0g+;|BC8bpi4F4GzD=RCRc?t^)ib_fgi%LqXszIVm zrKJ@WEZpqu>~$4|MWt0W3=9na8JP+SDk|96%gTxii)-pY>bOfwE9w|(iV91LD?xm| zii$dhqJo0Lf`Y2b(&F;+|BQ?vXMijyC@d;0sxB`sXJGix%u`lYT2WP9UBzAlwvmOK I0U7)U0PAu>KL7v# literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-chex/fonts/bigfont/041A.lmp b/wadsrc_extra/static/filter/game-chex/fonts/bigfont/041A.lmp new file mode 100644 index 0000000000000000000000000000000000000000..5890a4a6557b6f4e7eba749f48bb6bf329978dd7 GIT binary patch literal 206 zcmd;L;9&p(0|o{L2L=X)Kn4beBnAeCVg?3=ItB)Y9tH-6ISdR8>lqjr4uBMLmy{G1 zl~h%hmlhY5mi}kpDJdx^D6A|mDJm)|Wncgc6c!hiRh5^P6qkVoa&znI$_vY@+1P7p z7#RLDv6Yt>6c$!iRsCn=EGjA}Dl00kEUT>i&%j+$QczS`&stGgR$Ny0pMkZwxTuEF{AcE@swyifDy%FoXJGixz*AjaT3Ap}SX5G5#|{$UDl022 zC@HO~{`T$LxBm?6U~UDN&0SVjP*PG_TvT0NQd;_-fv2>zu(-Imu)MOQqy(gwr>d%= aqO!cAy0W|sWI7`^$hi#PK;$|EQSyob5R8?MBT>PJj3*@}& z;*zS;Vg`o)%$!wKWhF(0mF49itvuD$rG*6rg+(Q`b?hJkE|B#lrB&5+9Cda7L9Qz( zDJd;3sxB`nE&b2HQ(9V3TwGjOURhF70#eUYRaH?@Szb|HSzZP*k&zo@9Rml5~7gUqR_DFsms4F6eJYHG@hKq{$aHpE~C28RCtIK4q~ literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-chex/fonts/bigfont/041E.lmp b/wadsrc_extra/static/filter/game-chex/fonts/bigfont/041E.lmp new file mode 100644 index 0000000000000000000000000000000000000000..9dc79a683e545a8f9c7a4944e15f4df8d2086135 GIT binary patch literal 223 zcmd;P;9&p(69xtb2L=WPKL!SdI0goWdpMj^Kps2E@ioLF; zqNtpK0W46$4ziG;rl=Goz*1OPTFt<~!BSdUSOyZ{DJm){DygX{FDxjk1PfGF78X`l yl@t~fmDVvZ{Ac7YFR!XDFDWi5t7c$l|If(9z)+uCRZ&&L4&pL#fQ@Hh0C526U_Lqk literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-chex/fonts/bigfont/041F.lmp b/wadsrc_extra/static/filter/game-chex/fonts/bigfont/041F.lmp new file mode 100644 index 0000000000000000000000000000000000000000..0e7470cf8cfac9038add257269cc96ed470fe2db GIT binary patch literal 226 zcmd;P;9&p(69xtb7X}7~PzDBuGzJESas~#54h9B>i3|)33mF&~HZd?T9A;o(xC~Ov zT~JU^SWsSBQdm$>Q1G9Drx3&_uBfaiE-qkT_|L#oT3TLOQdCr4Q(0LK7AP(*si>>1 ztF5Z5s{;!Z6_tRDVqgc8{~1_{i;LMoGTg<*1?9D+W##3Sm1SlB8F-3{ii!&hN~$YM wN=iTqcuGr4OG`?tt4d2sN*NgbGjdl~*VM4r)l^qkS1~aBXW{}I2_^mm0G<3mF8}}l literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-chex/fonts/bigfont/0420.lmp b/wadsrc_extra/static/filter/game-chex/fonts/bigfont/0420.lmp new file mode 100644 index 0000000000000000000000000000000000000000..04ada5d5528aea274a3a98fc8d4f0f30ed4f3553 GIT binary patch literal 170 zcmd;N;9&p(9R>yl8wLgjUj_z-I0goWdv}?q_U2!uBN1@ zl!N0x18Yf1VHE=d0|!e@O<`$W-G2s_;^HC>1_n;%k`geVxum2hH2@e@5ow;wliorly7+%m+E0fs+YD{RaSJb~YOT literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-chex/fonts/bigfont/0422.lmp b/wadsrc_extra/static/filter/game-chex/fonts/bigfont/0422.lmp new file mode 100644 index 0000000000000000000000000000000000000000..16ab2b9685bb60208eef595adb4346c9efb599c7 GIT binary patch literal 159 zcmd;N;9&p(9R>yl69xtb8wLgj9|i`7SOx}$JO&1adIkoD2@DJjGeC-%i;4;=EB`aV zXzr4d!qT$R(#pE(((>~E3_QifMMVV#1qBtAg=Gv3{~36Sib_gKiV6yft4qpZ0#!9N hRTa54mDMnTI*{2A{GWljq@<*-?mr__T^$3%e*nHUEX@D_ literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-chex/fonts/bigfont/0423.lmp b/wadsrc_extra/static/filter/game-chex/fonts/bigfont/0423.lmp new file mode 100644 index 0000000000000000000000000000000000000000..f4630173037211569e09973c0b94cc7196904d79 GIT binary patch literal 174 zcmd;L;9&p(0|o{L3kC)TM+OFlAO;48WCjL?Vg?3=W(Ed^i3|)3a~T*ImV*>Bmz5P( zR{m#TDJ?B1C@%ibz*b&fSX5A0TFS{(US3l2A7o&4SxHGjVR=Tw-8g zxX-}A@P>hb;Rgc)0}CSq10zdKO<75K`F{qsnwp}bqN1|0{|xLE6$M2_1w}(|%zkU19z)@LQTvA+A mR?WchpOL+^w4|h@yavp!si`cltY%zQ}Yd^`#%7o<5GM8 literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-chex/fonts/bigfont/0425.lmp b/wadsrc_extra/static/filter/game-chex/fonts/bigfont/0425.lmp new file mode 100644 index 0000000000000000000000000000000000000000..527aafb1e894efd805a89246e52defc1490da8c3 GIT binary patch literal 202 zcmd;L;9&p(0|o{LTLuOOUj_z-LMk-NCKu%Mu_ zx}+Fn=6@!RqN0L=;+o15kR)eGNl{@zQFV1`aq)i!?#jy2;(`K(>dLZ`!ovRyJXKW{ ir65Zg%1R4C=Cf2*Rx&U!a57g`R)DlKfh4)Wn6p2EU{%8HVr!h(W=as~#lKw(j3bwx=@ad9PB zps1*l9K<7ydYPCaCt#xSrN#5wu*|9>dI0E OhX0(bAPEKrhW`LJM@%gM literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-chex/fonts/bigfont/0427.lmp b/wadsrc_extra/static/filter/game-chex/fonts/bigfont/0427.lmp new file mode 100644 index 0000000000000000000000000000000000000000..00c98bab5c3a1e13983caf6c12dccadab13e9ca6 GIT binary patch literal 180 zcmd;L;9&p(0|o{LYX$}ecLoNA5C#T@cm@WBECvRKA_fMACI$wE$qWn(OF#gxV8u`w_(uosmxF#Km_ zE-tQMVEE6#U0PaJUS3>KURzmNUjCnfr>Ll?xUit4y0WOa;@h|X3_PW!rKKgM)m5bx TT1aG!yJ z;R6E$10y2?gD@ilg9;-9gFYhz0|R$OMLB16RYiGud3jaUe+Hhy!h*_*lA^+bf`W1e zhW`vaMMY&5#Z}dnm8Hd%3=IDnx!Ktn*cra@FjN*+F);k+V5zJu1W7RPK#eM`C@+8r z6crT}7Z#LM!&Q`)mX?;3R#%lmv@mjm`~bobJ_k!VOlxUrS$TPJX?bl$Nj2CR2(2X` zYZ-Wpib|?#YN{$YD+?>jOG^GT@qi3sU|=XOs4Oc2xs0u%qNKXAl!4(tCo5F$KLF*V BSF`{C literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-chex/fonts/bigfont/042A.lmp b/wadsrc_extra/static/filter/game-chex/fonts/bigfont/042A.lmp new file mode 100644 index 0000000000000000000000000000000000000000..cd5dbd81691179f8a92ef82b99da0d23b17b3e3c GIT binary patch literal 212 zcmd;K;9&p(3kC)TdjLl)u(Yzgq^PK{9HfA!sHm{C zsJybGs=TZOEKpZhQ(IM3UR76BT*$!ipOG76Y;iF=14DTUJNthYja7MBzkl~pq^{AXn^EiEZ2DX(E*_|L{xSy^6L&A`C$pPl8~H+B#M0OSro2><{9 literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-chex/fonts/bigfont/042B.lmp b/wadsrc_extra/static/filter/game-chex/fonts/bigfont/042B.lmp new file mode 100644 index 0000000000000000000000000000000000000000..a33fb910defea7b5600b1a9b1fa2e80c8e421017 GIT binary patch literal 292 zcmd;Q;9&p(7X}7~5C#T@R0alyG6n{Qb_NE9=?n}EOBfg!HZm|U>}6nJIKjZcaFKz5 z;UNP9!zTs?24+SE1`$RE1_thulA@x@>hjWx@}lzc{|r1uMFoYWmE|QxMTO-I3}Au6 z(xURpimLLm60ksBT}^FOQF&EeRdFE$!+%C@kRytV*%=thOW4`}vv8D^6<1W1msWoJ z_Me5Lva-0OxTvg}f#E+ZdueG&NlAGP1H*qdw#v%#%4!A%hX3p=-@dVf7$C*DCB;Q$)eH>(S=mcVOG--0 bYZw^*v$0iHmRD9YFfjaQXZiMx9mD_tnqoM3 literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-chex/fonts/bigfont/042D.lmp b/wadsrc_extra/static/filter/game-chex/fonts/bigfont/042D.lmp new file mode 100644 index 0000000000000000000000000000000000000000..5d95eadd8805b715fca2db4e3538d40b44df63de GIT binary patch literal 208 zcmd;L;9&p(0|o{L8wLgjZw3a27zPH0dHp&&XU*P{_c*!CYQmTvPL(fu*>(sI;z*gQc>vq>_Q*KLcA~VOb4NacLadtnJXI|oZ$T}k=3Z~qy1ii?ZOI7_S8t4bmIc*@F(3ks_$iV90A y>KGXQGjf%e7Z+5Pm6TLefBW{Ik*lt*qP(W6qOuw!%f!LJz{6Ho$IigO@E-tm2t2$1 literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-chex/fonts/bigfont/042E.lmp b/wadsrc_extra/static/filter/game-chex/fonts/bigfont/042E.lmp new file mode 100644 index 0000000000000000000000000000000000000000..5284a9507d2d66aa414bd7d801782349b0c1168e GIT binary patch literal 306 zcmd;Q;9&p(7X}7~5C#T@R0alyG6n{Qb_NE9=?n}EOBfg!HZw3V9ARK!xXQr5@RWgp z;Tr=313M!FgBT+NgDN8f0|R$aQBhHOO?hcyVPSdse+C{9zp%WjqNupIih@QB_50X$@GQyu7lyx~QPCZhkdLfRP*Ih?2rm5XHdopNXTeu%MuzvZA!Q`adIA zK|x_rQ9)rZs`AR}@{&rhX@!MlHDH~bCFLLi=HlYAZ{Ijr>gr0$ zzkLJiC@$k<_{LsU3e{0oR$Nd}T~Sn6Qc=gi@Sl;Zyu7%eva+P4qWasn|BPI9brt0` XRTY)hAXz331_mCsx;l0S28RCtKg3^P literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-chex/fonts/bigfont/042F.lmp b/wadsrc_extra/static/filter/game-chex/fonts/bigfont/042F.lmp new file mode 100644 index 0000000000000000000000000000000000000000..0ecbbbbf6d59bb161ee724691b5dc44df5468238 GIT binary patch literal 196 zcmd;N;9&p(9R>yl8wLgje+CAI1O^6%LIwtgMg|6kNem1Oiy0UgwlFX-FtS!vl~q*K z)p0V_)RdI`XJjiVC@d%}XJ_YNsi-I_WnlQvz*A6AR9IM2QB_=AQVtdl3-MTLb0V1cr-;-adms?yTZ(h{&hMMXtr Ud3i;3WqBFMOh#^yi{bb`07COMf&c&j literal 0 HcmV?d00001 From 5260352f26a23ad5f922d79b780435dacf7b0f39 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sun, 14 Apr 2019 16:18:00 +0200 Subject: [PATCH 4/5] - added all Latin letters to the Doom and Chex SmallFont for the Latin 1 Supplement plus everything needed from Latin Extended A for the WIP languages and a few more that were more or less waste products. --- .../filter/game-chex/fonts/defsmallfont/00C6.lmp | Bin 0 -> 165 bytes .../filter/game-chex/fonts/defsmallfont/00D0.lmp | Bin 0 -> 130 bytes .../filter/game-chex/fonts/defsmallfont/00D8.lmp | Bin 0 -> 130 bytes .../filter/game-chex/fonts/defsmallfont/00DD.lmp | Bin 0 -> 125 bytes .../filter/game-chex/fonts/defsmallfont/00DE.lmp | Bin 0 -> 130 bytes .../filter/game-chex/fonts/defsmallfont/0100.lmp | Bin 0 -> 140 bytes .../filter/game-chex/fonts/defsmallfont/0102.lmp | Bin 0 -> 140 bytes .../filter/game-chex/fonts/defsmallfont/0104.lmp | Bin 0 -> 145 bytes .../filter/game-chex/fonts/defsmallfont/0106.lmp | Bin 0 -> 129 bytes .../filter/game-chex/fonts/defsmallfont/0108.lmp | Bin 0 -> 141 bytes .../filter/game-chex/fonts/defsmallfont/010C.lmp | Bin 0 -> 132 bytes .../filter/game-chex/fonts/defsmallfont/010E.lmp | Bin 0 -> 132 bytes .../filter/game-chex/fonts/defsmallfont/0112.lmp | Bin 0 -> 138 bytes .../filter/game-chex/fonts/defsmallfont/0114.lmp | Bin 0 -> 138 bytes .../filter/game-chex/fonts/defsmallfont/0118.lmp | Bin 0 -> 144 bytes .../filter/game-chex/fonts/defsmallfont/011A.lmp | Bin 0 -> 132 bytes .../filter/game-chex/fonts/defsmallfont/011C.lmp | Bin 0 -> 141 bytes .../filter/game-chex/fonts/defsmallfont/0124.lmp | Bin 0 -> 142 bytes .../filter/game-chex/fonts/defsmallfont/0134.lmp | Bin 0 -> 159 bytes .../filter/game-chex/fonts/defsmallfont/0141.lmp | Bin 0 -> 122 bytes .../filter/game-chex/fonts/defsmallfont/0143.lmp | Bin 0 -> 133 bytes .../filter/game-chex/fonts/defsmallfont/0147.lmp | Bin 0 -> 136 bytes .../filter/game-chex/fonts/defsmallfont/0154.lmp | Bin 0 -> 137 bytes .../filter/game-chex/fonts/defsmallfont/0158.lmp | Bin 0 -> 140 bytes .../filter/game-chex/fonts/defsmallfont/015A.lmp | Bin 0 -> 118 bytes .../filter/game-chex/fonts/defsmallfont/015C.lmp | Bin 0 -> 127 bytes .../filter/game-chex/fonts/defsmallfont/015E.lmp | Bin 0 -> 122 bytes .../filter/game-chex/fonts/defsmallfont/0160.lmp | Bin 0 -> 121 bytes .../filter/game-chex/fonts/defsmallfont/0162.lmp | Bin 0 -> 124 bytes .../filter/game-chex/fonts/defsmallfont/016C.lmp | Bin 0 -> 130 bytes .../filter/game-chex/fonts/defsmallfont/016E.lmp | Bin 0 -> 130 bytes .../filter/game-chex/fonts/defsmallfont/0179.lmp | Bin 0 -> 120 bytes .../filter/game-chex/fonts/defsmallfont/017B.lmp | Bin 0 -> 119 bytes .../filter/game-chex/fonts/defsmallfont/017D.lmp | Bin 0 -> 123 bytes .../filter/game-doom/fonts/defsmallfont/00C6.lmp | Bin 0 -> 165 bytes .../filter/game-doom/fonts/defsmallfont/00D0.lmp | Bin 0 -> 130 bytes .../filter/game-doom/fonts/defsmallfont/00D8.lmp | Bin 0 -> 130 bytes .../filter/game-doom/fonts/defsmallfont/00DD.lmp | Bin 0 -> 125 bytes .../filter/game-doom/fonts/defsmallfont/00DE.lmp | Bin 0 -> 130 bytes .../filter/game-doom/fonts/defsmallfont/0100.lmp | Bin 0 -> 140 bytes .../filter/game-doom/fonts/defsmallfont/0102.lmp | Bin 0 -> 140 bytes .../filter/game-doom/fonts/defsmallfont/0104.lmp | Bin 0 -> 145 bytes .../filter/game-doom/fonts/defsmallfont/0106.lmp | Bin 0 -> 129 bytes .../filter/game-doom/fonts/defsmallfont/010C.lmp | Bin 0 -> 132 bytes .../filter/game-doom/fonts/defsmallfont/010E.lmp | Bin 0 -> 132 bytes .../filter/game-doom/fonts/defsmallfont/0110.lmp | Bin 0 -> 130 bytes .../filter/game-doom/fonts/defsmallfont/0112.lmp | Bin 0 -> 138 bytes .../filter/game-doom/fonts/defsmallfont/0114.lmp | Bin 0 -> 138 bytes .../filter/game-doom/fonts/defsmallfont/0118.lmp | Bin 0 -> 144 bytes .../filter/game-doom/fonts/defsmallfont/011A.lmp | Bin 0 -> 132 bytes .../filter/game-doom/fonts/defsmallfont/0141.lmp | Bin 0 -> 122 bytes .../filter/game-doom/fonts/defsmallfont/0143.lmp | Bin 0 -> 133 bytes .../filter/game-doom/fonts/defsmallfont/0147.lmp | Bin 0 -> 136 bytes .../filter/game-doom/fonts/defsmallfont/0154.lmp | Bin 0 -> 137 bytes .../filter/game-doom/fonts/defsmallfont/0158.lmp | Bin 0 -> 140 bytes .../filter/game-doom/fonts/defsmallfont/015A.lmp | Bin 0 -> 118 bytes .../filter/game-doom/fonts/defsmallfont/015E.lmp | Bin 0 -> 122 bytes .../filter/game-doom/fonts/defsmallfont/0160.lmp | Bin 0 -> 121 bytes .../filter/game-doom/fonts/defsmallfont/0162.lmp | Bin 0 -> 124 bytes .../filter/game-doom/fonts/defsmallfont/016E.lmp | Bin 0 -> 130 bytes .../filter/game-doom/fonts/defsmallfont/0179.lmp | Bin 0 -> 120 bytes .../filter/game-doom/fonts/defsmallfont/017B.lmp | Bin 0 -> 119 bytes .../filter/game-doom/fonts/defsmallfont/017D.lmp | Bin 0 -> 123 bytes 63 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/00C6.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/00D0.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/00D8.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/00DD.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/00DE.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/0100.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/0102.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/0104.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/0106.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/0108.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/010C.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/010E.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/0112.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/0114.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/0118.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/011A.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/011C.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/0124.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/0134.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/0141.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/0143.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/0147.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/0154.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/0158.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/015A.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/015C.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/015E.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/0160.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/0162.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/016C.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/016E.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/0179.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/017B.lmp create mode 100644 wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/017D.lmp create mode 100644 wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/00C6.lmp create mode 100644 wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/00D0.lmp create mode 100644 wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/00D8.lmp create mode 100644 wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/00DD.lmp create mode 100644 wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/00DE.lmp create mode 100644 wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0100.lmp create mode 100644 wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0102.lmp create mode 100644 wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0104.lmp create mode 100644 wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0106.lmp create mode 100644 wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/010C.lmp create mode 100644 wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/010E.lmp create mode 100644 wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0110.lmp create mode 100644 wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0112.lmp create mode 100644 wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0114.lmp create mode 100644 wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0118.lmp create mode 100644 wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/011A.lmp create mode 100644 wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0141.lmp create mode 100644 wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0143.lmp create mode 100644 wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0147.lmp create mode 100644 wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0154.lmp create mode 100644 wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0158.lmp create mode 100644 wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/015A.lmp create mode 100644 wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/015E.lmp create mode 100644 wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0160.lmp create mode 100644 wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0162.lmp create mode 100644 wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/016E.lmp create mode 100644 wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0179.lmp create mode 100644 wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/017B.lmp create mode 100644 wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/017D.lmp diff --git a/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/00C6.lmp b/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/00C6.lmp new file mode 100644 index 0000000000000000000000000000000000000000..e57b956d2c1e6e1be0bfe712bce25280bd08c2ff GIT binary patch literal 165 zcmd;LU}pdU0|o{LD+UGzR|W=#Kn4beSOx}$Oa=yqQU(TwMg|6kUIqq+nG6gJOsusK z@Sl;bwzjIIq@=d?KLdMhZFxy~c{!9_R9gyC1QthOmm$=bm6w$lLDiSm7S)zP*(J5* OwZ%|2$dKCF+W!E#csIcS literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/00D0.lmp b/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/00D0.lmp new file mode 100644 index 0000000000000000000000000000000000000000..2f37093ae89cb4dc802b16e722082c9c9573f194 GIT binary patch literal 130 zcmd;JU}pdU4F(1V69xtb2L=WP9|i`72nGg*6b1%{0tN<#Dv$#9+FIS((%RbE+W!pf zwY3$sr6na$c2R9nQ4y3~SX)$E2xXU4*H#xp*_CA_C6%?c{~1|pYb(n@EGA}U|=v{U|_IhU|?`%U|U|=w1U|?`!U|{fPU|@)0U|>jNU|=XU|=w0U|?`$U|{fLU|@)5U|`5#U|=X^U|?usU|?WjsRe`o3``)J znYFgIs-&d0_CEthZEaC)c}aOWlv57k)?(un)fSb(_0-mu6&DxR*8T?>1v0YsKLB{o BE>i#i literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/0102.lmp b/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/0102.lmp new file mode 100644 index 0000000000000000000000000000000000000000..2677c491efc88dd19dae62ce99349669eca448ab GIT binary patch literal 140 zcmd;J;9y{2U}Vr>U|=w0U|?`$U|{fLU|@)5U|`5#U|=X^U|?usU|?WjsRe`o3``)J znYFgIs-&d0_CEthQBiGec}aOWm{VI@URzXKUW>^ADJv?2>H(QiR$N?MTl*hm6o^~< F9{_Y9EylGX@3*M+OE4Uj_z-NCpOmR0alyLIwtgS_TG&P6h@BCe~UA_|M2z zTU%99Qc_#{pMkx$w!Eagyd26dsx1X60*j-t%Mj|zii?YjYis{AvV)Y?mX+1k{%2(d Hv;PACAPq0V literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/0106.lmp b/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/0106.lmp new file mode 100644 index 0000000000000000000000000000000000000000..f7e5393fe44a7c82ed901270561e0d1dc261d00b GIT binary patch literal 129 zcmd;J;9y{2U}Vr>U|`T^U|_IdU|?`&U|{fPU|@)0U|`5(U|=X?U|?Wjs;#Z9{m;x& zTU%LGTl=4ht+uwRxERD_WUsBQEiNuDt*!mfz)@RUURziTLSRl2h*b!csjV%ktu2G< K2ANk|`yT+LzbVK7 literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/0108.lmp b/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/0108.lmp new file mode 100644 index 0000000000000000000000000000000000000000..7121c4d62b45a93b7a22173d408b4fa460068497 GIT binary patch literal 141 zcmd;J;9y{2U}Vr>U|=v|U|?`yU|{fNU|@)1U|>jRU|=X=U|?tjsbH+Ftz}`Vt*x#7 z&%j<=TUJ|JSp{Nq)YcZ)RuvaRIK{=awZ+B7rC^z|vfA20F#6BH0n&oRsj4jjiPZjQ KWCxiE#{U77MlQnu literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/010C.lmp b/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/010C.lmp new file mode 100644 index 0000000000000000000000000000000000000000..3a1e5d973f97408ed318e13eccb4726182411468 GIT binary patch literal 132 zcmd;J;9y{2U}Vr>U|`T^U|_IdU|?`%U|U|=w2U|?`yU|{fNU|@)1U|>jRU|=X=U|^_aU|?WktF6_o1%dwz z93ZNqwzQe^zcOl@stSxIGW?SEz#5VN-S KKMNDcr2hap^eYbl literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/0112.lmp b/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/0112.lmp new file mode 100644 index 0000000000000000000000000000000000000000..cd64f26c06508a4206991a9f716e9d414df50f72 GIT binary patch literal 138 zcmd;J;9y{2U}Vr>U|`T^U|_IgU|{fOU|@(~U|>jPU|=X>U|^_cU|?Wjs;#Z9{m%fV zm|1FTE2}_Uj@sIy+REb6aww;~wzRmo7|tmvuPlXfifW51YfGS<+S-cRT96(lHjuF( G{2u@a2Q60s literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/0114.lmp b/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/0114.lmp new file mode 100644 index 0000000000000000000000000000000000000000..25f25e864879f91f6768a5198372112c29e51196 GIT binary patch literal 138 zcmd;J;9y{2U}Vr>U|`T^U|_IgU|{fOU|@(~U|>jPU|=X>U|^_cU|?Wjs;#Z9{m%fV zm|1FTE2}_Uj-sO4+REb6axka1w!F5qxVRY3DJick1#>{kiYseNz#NcC6(F^>|C!i8 I91#8w00TlTK>z>% literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/0118.lmp b/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/0118.lmp new file mode 100644 index 0000000000000000000000000000000000000000..f524889f91dcf371a9795c6d9f76cb2bf5921dd9 GIT binary patch literal 144 zcmd;N;9vj&9R>yl69xtbI|c>@F9rsNFa`#OBnAeCJO&1aY6b>|4h9AWCgxfY_|M2% zTU%LPRa^U?fxWi2vbd&E-o&HvP&vUDodg4;@Z;M5)hlCwzi_SvbMYy$^n^I K3ev#}H5&liQ7=3I literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/011A.lmp b/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/011A.lmp new file mode 100644 index 0000000000000000000000000000000000000000..cc5aac045d61b48c88b26be8d3bad02d5fd3c57d GIT binary patch literal 132 zcmd;J;9y{2U}Vr>U|`T^U|_IdU|?`%U|U|=v|U|?`yU|{fNU|@)1U|>jRU|=X=U|?tjsbH+Ftz}`Vt*x#7 z&%j<=TUJ|JUIk)v)YcZ)mY0;4gE_^;wY4P`6%bBYS#50*82xA90BI?zttbU6tF5i7 TEvhXls;&Lc$PO|SjQ;}wl;SSD literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/0124.lmp b/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/0124.lmp new file mode 100644 index 0000000000000000000000000000000000000000..ff278602074ebec2721c39f69fa94d57b73083f7 GIT binary patch literal 142 zcmd;J;9y{2U}Vr>U|=v|U|?`$U|{fLU|@)5U|`5#U|=X^U|?thsbH^#f&UB~wY6on zB_$;#wY6YQacy~dc{!LrvW Xii(OVkS=zxE|5WB6F_1RbN>SX>ijb` literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/0141.lmp b/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/0141.lmp new file mode 100644 index 0000000000000000000000000000000000000000..989c1eb45475336b112c584eb9b2b1eb3296fa83 GIT binary patch literal 122 zcmd;JU}pdU4F(1V0|o{LYX$}ecLoNAU+iZBcDyac%8?MzHc)5R-+u7EXh-0|1!BCVT(@ literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/0143.lmp b/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/0143.lmp new file mode 100644 index 0000000000000000000000000000000000000000..61955342bf2e6f44b5f35c1ee158835b8404acfc GIT binary patch literal 133 zcmd;J;9y{2U}Vr>U|=v}U|_IiU|{fIU|jOU|`5&U|^_bU|?Wot%ZR9Ol-Ba zRi&k+wY6YoNojdSZS8+X_S)Lo>Wb>x+S>mN9JRIOwY9Y+RZvb*ZAn>C5tLI~TU=aP J4blxa5&&*TE7kx2 literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/0147.lmp b/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/0147.lmp new file mode 100644 index 0000000000000000000000000000000000000000..10dbd95864bbab15d785e6fddfe3ad0520b6a707 GIT binary patch literal 136 zcmd;J;9y{2U}Vr>U|=v}U|_IiU|{fKU|jLU|=X@U|^_YU|?Wot%ZR9Ol-Ba zRi&k+wYC2lI6z`0rR5c1PEk>9ZFNO;EtpeVTV7jRTT%t)fMiO_KqOR8adByNZS8+1 GxTyg82`xGR literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/0154.lmp b/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/0154.lmp new file mode 100644 index 0000000000000000000000000000000000000000..1ab2598578c376e556741f997c7866e5d85cc9d8 GIT binary patch literal 137 zcmd;J;9y{2U}Vr>U|=w2U|_IgU|{fMU|jMU|`5+U|^_WU|?WktA&F9AZB@O zacONWm|0X?SXf*8pOL+`wzjagu(r1LKLbZ?ZFy~BRbd5`Q&d}63f2IUsjaQ5sI984 O{m;wU|=w2U|?`yU|{fNU|@)1U|>jRU|=X=U|^_cU|?WktA&F93>+X< zd2MlNZS8*sj-sO4+M?RRLNKScw!F5mwy+k=0m&3r6;^;bAU%bpU_BtSsw!%$YHR;9 LGl9g}z~p}bv>z@v literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/015A.lmp b/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/015A.lmp new file mode 100644 index 0000000000000000000000000000000000000000..bc4dbc743335aa62cf3d2951d40ad564288c0458 GIT binary patch literal 118 zcmZQ);9y{2U}R8XU|`T=U|_IhU|?`zU| zwY6YoS!r!yZS8+X_S)LoqKew$+S>mN9JRHTwIvlLWl&C8ZDD0uC5Qu31vLi%ZptQV literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/015C.lmp b/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/015C.lmp new file mode 100644 index 0000000000000000000000000000000000000000..611ef6506c6b963f9342e0e0a2f5a599cdfc52fe GIT binary patch literal 127 zcmZQ);9y{2U}R8XU|=w2U|?`yU|{fNU|@)1U|>jRU|=W#$uic~)-to!Lco6pj@sI? z+RC!pirQK*r?|GPthNx$DK4(9Evl?626I5lN@`2Wpq#4O%G$EZ+S>n&Y!H)bYySfP DuS6;G literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/015E.lmp b/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/015E.lmp new file mode 100644 index 0000000000000000000000000000000000000000..aabeb6bc8c89bb9907c49b49a63b26502b4fa26a GIT binary patch literal 122 zcmZQ);9vj&6$Sw8wLgjPX-2tFa`#OWCjL?djMU|`5+U|?Wot%ZR93>+XvWo2ze xZS8*sj+Tvn}Oi^)BaWRxr0#*dl!(3Zi0;OwfYySfP*;gkf literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/016C.lmp b/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/016C.lmp new file mode 100644 index 0000000000000000000000000000000000000000..a0e7aefb84665c83d894257af5468342422d7962 GIT binary patch literal 130 zcmd;J;9y{2U}Vr>U|=w0U|_IeU|{fMU|jOU|`5&U|^_ZU|?WksRe`ojBK^F zwdG}1wYC2lIBILlYl})tK^#W*+S;<(+T!xs+W#PS36u>|R9ssERRq#pRt{1RHxK~o C04iSq literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/016E.lmp b/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/016E.lmp new file mode 100644 index 0000000000000000000000000000000000000000..b234e501f747a92a41406df08248ef9dc9cce5d7 GIT binary patch literal 130 zcmd;J;9y{2U}Vr>U|=w0U|_IjU|{fIU|jMU|`5+U|^_ZU|?WksRe`oOsuuF vjKU|`5)U|?WktA&F9AZBT8S!r$U xe@6D&+S-!Zl9Jlm{|p?pwWYO1RaM1MPDyQ1S#2SdQ(IeBRSVJr(hV``KLEs0Cu#ry literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/017B.lmp b/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/017B.lmp new file mode 100644 index 0000000000000000000000000000000000000000..5eb19c7734166cd34a24a6f6d536a749d5385628 GIT binary patch literal 119 zcmZQ);9y{2U}R8XU|`T^U|_IfU|?`(U|jOU|`5$U|?WktA&F9AZBT8S!r$U te+CYaU`cIB36xV>TU1q54CU0;7M0Z&*4Bb`lvUM&bbvI2^wie=2LPaYCinmV literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/017D.lmp b/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/017D.lmp new file mode 100644 index 0000000000000000000000000000000000000000..37667c6ef9b425416488917d8bf85f559b67b089 GIT binary patch literal 123 zcmZQ);9y{2U}R8XU|`T^U|_IeU|{fMU|jQU|=X+XD0) uZS8*sj-sO4+LGFm5-_K>w!F5es;U^w0m&4V)fR#|AU$POwIDr6W&r>~b12RL literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/00C6.lmp b/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/00C6.lmp new file mode 100644 index 0000000000000000000000000000000000000000..db6cb44c27dc84b69a05ec785de3427be3124f9a GIT binary patch literal 165 zcmd;LU}pdU0|o{LD+UGzR|W=#Kn4beSOx}$Oa=yqQU(TwMg|6kUIqq+nG6gJOsx74 z@Sl-QUw_w@EnD>U|1+@b>u=w(efxGOdz1cFkRq@+3VRzu{kHAfwr_%}->Sb!e;bs& RMSr{gW+)qEh`zr5e*ld7EmZ&j literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/00D0.lmp b/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/00D0.lmp new file mode 100644 index 0000000000000000000000000000000000000000..2496c83f3cfe2fbbad9fb29f49c24ed9d23d203a GIT binary patch literal 130 zcmd;JU}pdU4F(1V69xtb2L=WP9|i`72nGg*6b1%{0tN<#Dv$zpeSKa1t@`@<`u`c& z_4Rk?Z{4y5%HE{EY11Ysd!zm){f$uemfiZhH$&Mww{6+7Q(yl-Bdfmt&TSwT6Eny# G{r>=;$|HIJ literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/00D8.lmp b/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/00D8.lmp new file mode 100644 index 0000000000000000000000000000000000000000..b07f707ea65d5e83cf1e97f1a726283119adff06 GIT binary patch literal 130 zcmd;JU}pdU4F(1VBL)TrTLuOOPX-2tPzDBuLg)e!VAt2*wR!92T~PK$eGr6*gIHUj;=8tP-40g6rmw$o*A6g~b>l{mf%^Xe D4N)b1 literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/00DD.lmp b/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/00DD.lmp new file mode 100644 index 0000000000000000000000000000000000000000..0158095e5d7a4a76875ec52068181e161b038986 GIT binary patch literal 125 zcmd;J;9y{2U}Vr>U|=v{U|_IhU|?`%U|^*Vo^;d8@v@{(lAzef{kq?sh0=6Ns}F%F)-~1W^XkyJ?%g{(qQZ0B^h= AA^-pY literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/00DE.lmp b/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/00DE.lmp new file mode 100644 index 0000000000000000000000000000000000000000..e7ad7e10718305a2113f710f0232c47271d11f77 GIT binary patch literal 130 zcmd;J;9y{2U}Vr>U|=w1U|?`!U|{fPU|@)0U|>jNU|=X{>Y(nDbZ`9uiQv08gRbPMO-p%^@5Y|>0YuDCY`uhKwm_ds4{{sM{%p&vv literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0100.lmp b/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0100.lmp new file mode 100644 index 0000000000000000000000000000000000000000..f3bbde28891814ee0362b875099c13c119e332dc GIT binary patch literal 140 zcmd;J;9y{2U}Vr>U|=w0U|?`$U|{fLU|@)5U|`5#U|=X^U|?usU|?Wj(FcS73``)J znN?qZ*Oo2%`u`a?^z}FCZ{M#MQ^f*`&W|8(fdR{U|=w0U|?`$U|{fLU|@)5U|`5#U|=X^U|?usU|?Wj(FcS73``)J znN?qZ*Oo2%`u`a?Hf_?^-@ax0b}&a@f4lxB{q6dg9FVe2+n{ylGX@3*M+OE4Uj_z-NCpOmR0alyLIwtgS_TG&P6h@BCRTk2_|M3u zufJ={mM!}F{~6fz^|x=?zI{8Cy-9y7ND){Zg}n`-e%t2Fn>Xw0|7TIn=9{_QMClmkx literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0106.lmp b/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0106.lmp new file mode 100644 index 0000000000000000000000000000000000000000..b1451f6ffa7777b6130d00b7f551a397525115e3 GIT binary patch literal 129 zcmd;J;9y{2U}Vr>U|`T^U|_IdU|?`&U|{fPU|@)0U|`5(U|=X?U|?Wj(%0A5|If^# zufKDbzW#qEHhukFn>T})jO_aQ`kOaz-m0(vpMgVPf4lxheGme3Hi1|hp)&gVTlDp} ML3M-7)7SqG06}IS_5c6? literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/010C.lmp b/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/010C.lmp new file mode 100644 index 0000000000000000000000000000000000000000..3f8fcbc3e4f5e59cf000812921fcc49930a04759 GIT binary patch literal 132 zcmd;J;9y{2U}Vr>U|`T^U|_IdU|?`%U|TOX3YFQezfm8A{xfiZWZ)c-o-O+N+w}GSGqHg< HAp9Qy*mEKp literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/010E.lmp b/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/010E.lmp new file mode 100644 index 0000000000000000000000000000000000000000..b3b79cc1417c7dfe20348176f34b0304cda39412 GIT binary patch literal 132 zcmd;J;9y{2U}Vr>U|=w2U|?`yU|{fNU|@)1U|>jRU|=X=U|^_aU|?Wk)7RJ42Z8?# z93X0k{?;w}`u`a?Hf_?^-=x2F6PTl~zg>T$J_tc&w(Qp543*K>-??qePJR9V%q$?L MzW#p}CXh-00iUuW*#H0l literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0110.lmp b/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0110.lmp new file mode 100644 index 0000000000000000000000000000000000000000..2496c83f3cfe2fbbad9fb29f49c24ed9d23d203a GIT binary patch literal 130 zcmd;JU}pdU4F(1V69xtb2L=WP9|i`72nGg*6b1%{0tN<#Dv$zpeSKa1t@`@<`u`c& z_4Rk?Z{4y5%HE{EY11Ysd!zm){f$uemfiZhH$&Mww{6+7Q(yl-Bdfmt&TSwT6Eny# G{r>=;$|HIJ literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0112.lmp b/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0112.lmp new file mode 100644 index 0000000000000000000000000000000000000000..ffd919e8a8bd7f02993ce1a188d19f6e9c7743d8 GIT binary patch literal 138 zcmd;J;9y{2U}Vr>U|`T^U|_IgU|{fOU|@(~U|>jPU|=X>U|^_cU|?Wj(%0A5|IYxX zm|67ockTjlIrQ~6>F?aUbvu-^U4QH5&70wzE!%f)g>p9OZ{DfD1U|`T^U|_IgU|{fOU|@(~U|>jPU|=X>U|^_cU|?Wj(%0A5|IYxX zm|67ockTjlIW}$5*WbB$>vk|lUw^y)*3FwY!#P{F@7xOJfRt_CslNrx0hzP|q*nhw K6B~#F!v6uTge5Nk literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0118.lmp b/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0118.lmp new file mode 100644 index 0000000000000000000000000000000000000000..9eceabef715efcbabc62a77d2b914e727e80ff13 GIT binary patch literal 144 zcmd;N;9vj&9R>yl69xtbI|c>@F9rsNFa`#OBnAeCJO&1aY6b>|4h9AWCT4vQ_|M3y zufKEqE`9y~4D9;)J2!9Ix*f{ix_R^F%~1B1om+Npg|av6Z`I!dVsq&0@6g|=zg-{7 N0hzZIq=OY|HUP1JCu#ry literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/011A.lmp b/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/011A.lmp new file mode 100644 index 0000000000000000000000000000000000000000..60ef97bbd2936da14bd309e70e905f497d667c03 GIT binary patch literal 132 zcmd;J;9y{2U}Vr>U|`T^U|_IdU|?`%U|R literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0141.lmp b/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0141.lmp new file mode 100644 index 0000000000000000000000000000000000000000..fb979ea52f8f34ba946271b1d76e98837ec2b0e6 GIT binary patch literal 122 zcmd;JU}pdU4F(1V0|o{LYX$}ecLoNAU;Gq9*Vo^&W5U|=v}U|_IiU|{fIU|jOU|`5&U|^_bU|?Wo)rWxpOl`bZrQqhhra%QMs|ID{oOlu>+9?PXW-D+->$E(zhxJcvq^u;woRL$9DV)G Mo44);>4qB#0QjLJk^lez literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0147.lmp b/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0147.lmp new file mode 100644 index 0000000000000000000000000000000000000000..68056d50464c56bcc7c78edd99589d1f320756aa GIT binary patch literal 136 zcmd;J;9y{2U}Vr>U|=v}U|_IiU|{fKU|jLU|=X@U|^_YU|?Wo)rWxpOl+5gX1?GTcwrm5DP(7PBZ{4l0 J|DOqNDgcxsCAI(n literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0154.lmp b/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0154.lmp new file mode 100644 index 0000000000000000000000000000000000000000..69be778ad369fc00eca5d39fc90a82b26b97af9c GIT binary patch literal 137 zcmd;J;9y{2U}Vr>U|=w2U|_IgU|{fMU|jMU|`5+U|^_WU|?Wk(}#lpAm(=c z&0F>L!OTti8#n6f|7T>^*Vo^uzfoUb|33qVzW#Rojk`APfO0nJZ`=yj0Fu$y-?c-3 Qm%jdgW+sr4Y+&*~03`(?%>V!Z literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0158.lmp b/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0158.lmp new file mode 100644 index 0000000000000000000000000000000000000000..9294b77ae28ba99c71074436a4983ce80f84ee97 GIT binary patch literal 140 zcmd;J;9y{2U}Vr>U|=w2U|?`yU|{fNU|@)1U|>jRU|=X=U|^_cU|?Wk(}#lp3>+ZV zcKyv;_4WTVaBSM7ufIuu<3=z?Uw^y)M*WTYU=B!TSvrT{F&TTtE9FQugIRG5% B9$o+d literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/015E.lmp b/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/015E.lmp new file mode 100644 index 0000000000000000000000000000000000000000..b43ce1d8751b23a87174555d7c7c709453caa2f7 GIT binary patch literal 122 zcmZQ);9vj&6$Sw8wLgjPX-2tFa`#OWCjL?dJF u`ubqbwryMWH|lTM0_JSe-=@EL3zV}(f5(<>U}fz3`a8k8^#3y;i~;}w!y(K7 literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0160.lmp b/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0160.lmp new file mode 100644 index 0000000000000000000000000000000000000000..a3248bd1347e434dfbdf652b76a1c7e7e543460f GIT binary patch literal 121 zcmZQ);9y{2U}R8XU|`T=U|_IjU|{fIU|jMU|`5+U|?Wo)rWxp3>+ZF&Yk)@ z^!5KUaBSPAufJ`p{zfoIUw^0mrXBj5!5omxmK|HRfjJ;O8+UHosjvT^32qbsr|lq> literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0162.lmp b/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0162.lmp new file mode 100644 index 0000000000000000000000000000000000000000..8c0032d13fc21baea445bf15219888b79599a2a0 GIT binary patch literal 124 zcmd;J;9vj&4F(1V0|o{L3kC)TR|W=#AO;48cm@WB90mr45|9FBeGvH1z^t#oL0|tr s0|%G}i9t9Uw{G3KRe$qlh|H$Vn>KHTa<+gKf%Guz>u-V5`uh6+0gK8XXaE2J literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/016E.lmp b/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/016E.lmp new file mode 100644 index 0000000000000000000000000000000000000000..4ba5cfe2decbd82576a446c0e7f9a6c520e968f9 GIT binary patch literal 130 zcmd;J;9y{2U}Vr>U|=w0U|_IjU|{fIU|jMU|`5+U|^_ZU|?Wk(FcS7Osx9) x+qdn~*ZjKU|`5)U|?Wk(}#lpAmZCmyA z|1+}d>+5gP-?Bwt|33qVzW!GIO}ln&hH|#(Z`!865z5im-?mF1qy?lKV$y#AMfe^x literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/017B.lmp b/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/017B.lmp new file mode 100644 index 0000000000000000000000000000000000000000..1a8ec698aa6ac4918aaf3ce957c43a6388cd633b GIT binary patch literal 119 zcmZQ);9y{2U}R8XU|`T^U|_IfU|?`(U|jOU|`5$U|?Wk(}#lpAmZCmyA v|1)ra1h?pK*#hNk)!(#h*Jdb3Uw_j!{f+wiU>)0b>4S8DG=uc$>;DG;6QLb~ literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/017D.lmp b/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/017D.lmp new file mode 100644 index 0000000000000000000000000000000000000000..54bc8c353edc0a1d5ad1f786879b4d24638c6eba GIT binary patch literal 123 zcmZQ);9y{2U}R8XU|`T^U|_IeU|{fMU|jQU|=X+ZVR{d>T w_4WTVaBSM7ufIiq%N8(4Uw^y)rd_)>gE=6XP22Q0f;k{P+ji-L^dOl90Mn}=SO5S3 literal 0 HcmV?d00001 From a8c47408fa7a3cba02c8554ab6a8f1c4c8c6349f Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sun, 14 Apr 2019 22:46:03 +0200 Subject: [PATCH 5/5] - implemented 'deletelumps' feature and add Chex Quest 3 texts. The episode titles required a workaround because the CQ3 episodes do not contain names in text form: If this is the case, the patch name will be used as a string table identifier to get a matching text for localization. --- src/d_iwad.cpp | 4 +- src/d_main.cpp | 2 +- src/gamedata/fonts/v_font.cpp | 9 - src/gamedata/g_mapinfo.cpp | 2 + src/gamedata/gi.h | 2 - src/gamedata/w_wad.cpp | 22 +- src/gamedata/w_wad.h | 4 +- wadsrc/static/iwadinfo.txt | 4 +- .../static/filter/chex.chex3/language.csv | 268 ++++++++++++++++++ 9 files changed, 287 insertions(+), 30 deletions(-) create mode 100644 wadsrc_extra/static/filter/chex.chex3/language.csv diff --git a/src/d_iwad.cpp b/src/d_iwad.cpp index 2ababdce4..f6ea6f805 100644 --- a/src/d_iwad.cpp +++ b/src/d_iwad.cpp @@ -132,9 +132,7 @@ void FIWadManager::ParseIWadInfo(const char *fn, const char *data, int datasize, do { sc.MustGetString(); - if(sc.Compare("NoTextcolor")) iwad->flags |= GI_NOTEXTCOLOR; - else if (sc.Compare("NoBigFont")) iwad->flags |= GI_IGNOREBIGFONTLUMP; - else if(sc.Compare("Poly1")) iwad->flags |= GI_COMPATPOLY1; + if(sc.Compare("Poly1")) iwad->flags |= GI_COMPATPOLY1; else if(sc.Compare("Poly2")) iwad->flags |= GI_COMPATPOLY2; else if(sc.Compare("Shareware")) iwad->flags |= GI_SHAREWARE; else if(sc.Compare("Teaser2")) iwad->flags |= GI_TEASER2; diff --git a/src/d_main.cpp b/src/d_main.cpp index 0400a12fe..9c76bd999 100644 --- a/src/d_main.cpp +++ b/src/d_main.cpp @@ -2388,7 +2388,7 @@ void D_DoomMain (void) } if (!batchrun) Printf ("W_Init: Init WADfiles.\n"); - Wads.InitMultipleFiles (allwads); + Wads.InitMultipleFiles (allwads, iwad_info->DeleteLumps); allwads.Clear(); allwads.ShrinkToFit(); SetMapxxFlag(); diff --git a/src/gamedata/fonts/v_font.cpp b/src/gamedata/fonts/v_font.cpp index 61aa2e970..996f919e1 100644 --- a/src/gamedata/fonts/v_font.cpp +++ b/src/gamedata/fonts/v_font.cpp @@ -1169,15 +1169,6 @@ void V_InitFontColors () while ((lump = Wads.FindLump ("TEXTCOLO", &lastlump)) != -1) { - if (gameinfo.flags & GI_NOTEXTCOLOR) - { - // Chex3 contains a bad TEXTCOLO lump, probably to force all text to be green. - // This renders the Gray, Gold, Red and Yellow color range inoperable, some of - // which are used by the menu. So we have no choice but to skip this lump so that - // all colors work properly. - // The text colors should be the end user's choice anyway. - if (Wads.GetLumpFile(lump) == Wads.GetIwadNum()) continue; - } FScanner sc(lump); while (sc.GetString()) { diff --git a/src/gamedata/g_mapinfo.cpp b/src/gamedata/g_mapinfo.cpp index 9e3b1a444..9a0d04c9a 100644 --- a/src/gamedata/g_mapinfo.cpp +++ b/src/gamedata/g_mapinfo.cpp @@ -2059,6 +2059,8 @@ void FMapInfoParser::ParseEpisodeInfo () ParseAssign(); sc.MustGetString (); pic = sc.String; + // If no name has been specified, synthesize a string table reference with the same name as the patch. + if (name.IsEmpty()) name.Format("$%s", sc.String); } else if (sc.Compare ("remove")) { diff --git a/src/gamedata/gi.h b/src/gamedata/gi.h index 10bc411c0..162bad298 100644 --- a/src/gamedata/gi.h +++ b/src/gamedata/gi.h @@ -48,9 +48,7 @@ enum GI_COMPATSTAIRS = 0x00000020, // same for stairbuilding GI_COMPATPOLY1 = 0x00000040, // Hexen's MAP36 needs old polyobject drawing GI_COMPATPOLY2 = 0x00000080, // so does HEXDD's MAP47 - GI_NOTEXTCOLOR = 0x00000100, // Chex Quest 3 would have everything green GI_IGNORETITLEPATCHES = 0x00000200, // Ignore the map name graphics when not runnning in English language - GI_IGNOREBIGFONTLUMP = 0x00000400, // Needed for Chex Quest 3, so that the extended internal font can be used instead. }; #include "gametype.h" diff --git a/src/gamedata/w_wad.cpp b/src/gamedata/w_wad.cpp index ca564cf93..0d28b2a18 100644 --- a/src/gamedata/w_wad.cpp +++ b/src/gamedata/w_wad.cpp @@ -134,7 +134,7 @@ void FWadCollection::DeleteAll () // //========================================================================== -void FWadCollection::InitMultipleFiles (TArray &filenames) +void FWadCollection::InitMultipleFiles (TArray &filenames, const TArray &deletelumps) { int numfiles; @@ -154,7 +154,7 @@ void FWadCollection::InitMultipleFiles (TArray &filenames) I_FatalError ("W_InitMultipleFiles: no files found"); } RenameNerve(); - RenameSprites(); + RenameSprites(deletelumps); FixMacHexen(); // [RH] Set up hash table @@ -755,7 +755,7 @@ void FWadCollection::InitHashChains (void) // //========================================================================== -void FWadCollection::RenameSprites () +void FWadCollection::RenameSprites (const TArray &deletelumps) { bool renameAll; bool MNTRZfound = false; @@ -894,16 +894,14 @@ void FWadCollection::RenameSprites () } else if (LumpInfo[i].lump->Namespace == ns_global) { - // Rename the game specific big font lumps so that the font manager does not have to do problematic special checks for them. - if (!strcmp(LumpInfo[i].lump->Name, altbigfont)) - strcpy(LumpInfo[i].lump->Name, "BIGFONT"); - - if (LumpInfo[i].wadnum == GetIwadNum() && gameinfo.flags & GI_IGNOREBIGFONTLUMP) + if (LumpInfo[i].wadnum == GetIwadNum() && deletelumps.Find(LumpInfo[i].lump->Name) < deletelumps.Size()) { - if (!strcmp(LumpInfo[i].lump->Name, "BIGFONT")) - { - LumpInfo[i].lump->Name[0] = 0; - } + LumpInfo[i].lump->Name[0] = 0; // Lump must be deleted from directory. + } + // Rename the game specific big font lumps so that the font manager does not have to do problematic special checks for them. + else if (!strcmp(LumpInfo[i].lump->Name, altbigfont)) + { + strcpy(LumpInfo[i].lump->Name, "BIGFONT"); } } } diff --git a/src/gamedata/w_wad.h b/src/gamedata/w_wad.h index 4f6740a0e..7fc19d5fa 100644 --- a/src/gamedata/w_wad.h +++ b/src/gamedata/w_wad.h @@ -117,7 +117,7 @@ public: int GetIwadNum() { return IwadIndex; } void SetIwadNum(int x) { IwadIndex = x; } - void InitMultipleFiles (TArray &filenames); + void InitMultipleFiles (TArray &filenames, const TArray &deletelumps); void AddFile (const char *filename, FileReader *wadinfo = NULL); int CheckIfWadLoaded (const char *name); @@ -213,7 +213,7 @@ protected: void InitHashChains (); // [RH] Set up the lumpinfo hashing private: - void RenameSprites(); + void RenameSprites(const TArray &deletelumps); void RenameNerve(); void FixMacHexen(); void DeleteAll(); diff --git a/wadsrc/static/iwadinfo.txt b/wadsrc/static/iwadinfo.txt index c7a9e5edb..fb9a6ac1e 100644 --- a/wadsrc/static/iwadinfo.txt +++ b/wadsrc/static/iwadinfo.txt @@ -105,9 +105,10 @@ IWad Config = "Chex" IWADName = "chex3.wad" Mapinfo = "mapinfo/chex.txt" - Compatibility = "NoTextcolor", "NoBigFont" MustContain = "E1M1", "CYCLA1", "FLMBA1", "MAPINFO" BannerColors = "ff ff 00", "00 c0 00" + IgnoreTitlePatches = 1 + DeleteLumps = "LANGUAGE", "TEXTCOLO", "DBIGFONT" } IWad @@ -120,6 +121,7 @@ IWad Mapinfo = "mapinfo/chex.txt" MustContain = "E1M1", "E4M1", "W94_1", "POSSH0M0" BannerColors = "ff ff 00", "00 c0 00" + IgnoreTitlePatches = 1 } IWad diff --git a/wadsrc_extra/static/filter/chex.chex3/language.csv b/wadsrc_extra/static/filter/chex.chex3/language.csv new file mode 100644 index 000000000..e96088f4a --- /dev/null +++ b/wadsrc_extra/static/filter/chex.chex3/language.csv @@ -0,0 +1,268 @@ +default,Identifier,Remarks,Filter,eng enc ena enz eni ens enj enb enl ent enw,cz,de,es,esm esn esg esc esa esd esv eso esr ess esf esl esy esz esb ese esh esi esu,fr,hu,it,pt,ro,ru,sr,ko +,,,,,,,,,,,,,,,, +Picked up a blue flemkey.,GOTBLUEFLEM,,,,,Blauen Flemschlüssel genommen,,,Flemclé bleue récupérée.,,,Pegou uma flemchave azul.,,,,청색 플렘열쇠 획득. +Picked up a yellow flemkey.,GOTYELLOWFLEM,,,,,Gelben Flemschlüssel genommen,,,Flemclé jaune récupérée.,,,Pegou uma flemchave amarela.,,,,황색 플렘열쇠 획득. +Picked up a red flemkey.,GOTREDFLEM,,,,,Roten Flemschlüssel genommen.,,,Flemclé rouge récupérée.,,,Pegou uma flemchave vermelha.,,,,적색 플렘열쇠 획득. +Found Ultra Goggles,GOTGOGGLES,,,,,Ultrasichtbrille gefunden,,,Ultra-lunettes récupérées.,,,Achou um Ultra Óculos.,,,,울트라 고글 사용. +You need a blue key to activate this object,PD_BLUECO,,,,,"Du brauchst einen blauen Schlüssel, um dieses Objekt zu aktivieren.",Necesitas una llave azul para activar este objeto,,Il vous faut une clé bleue pour activer cet objet.,Egy kék kulcs szükséges az objektum aktiválásához.,Ti serve una chiave blu per attivare questo oggetto,Você precisa de uma chave azul para ativar este objeto,,Для активации нужен синий ключ,Треба вам плави кључ да би активирали овај предмет,이걸 작동하려면 청색 열쇠가 필요합니다 +You need a red key to activate this object,PD_REDCO,,,,,"Du brauchst einen roten Schlüssel, um dieses Objekt zu aktivieren.",Necesitas una llave roja para activar este objeto,,Il vous faut une clé rouge pour activer cet objet.,"Piros kulcs kell, hogy aktiválhasd ezt az objektumot.",Ti serve una chiave rossa per attivare questo oggetto,Você precisa de uma chave vermelha para ativar este objeto,,Для активации нужен красный ключ,Треба вам црвени кључ да би активирали овај предмет,이걸 작동하려면 적색 열쇠가 필요합니다 +You need a yellow key to activate this object,PD_YELLOWCO,,,,,"Du brauchst einen gelben Schlüssel, um dieses Objekt zu aktivieren.",Necesitas una llave amarilla para activar este objeto,,Il vous faut une clé jaune pour activer cet objet.,Egy sárga kulccsal aktiválható ez az objektum,Ti serve una chiave gialla per attivare questo oggetto,Você precisa de uma chave amarela para ativar este objeto,,Для активации нужен жёлтый ключ,Треба вам жути кључ да би активирали овај предмет,이걸 작동하려면 황색 열쇠가 필요합니다 +You need a blue flemkey to activate this object,PD_BLUEFO,,,,,"Du brauchst einen blauen Flemschlüssel, um dieses Objekt zu aktivieren.",,,Il vous faut une flemclé bleue pour activer cet objet.,,,Você precisa de uma flemchave azul para ativar este objeto,,,,이걸 작동하려면 청색 플렘열쇠가 필요합니다 +You need a red flemkey to activate this object,PD_REDFO,,,,,"Du brauchst einen roten Flemschlüssel, um dieses Objekt zu aktivieren.",,,Il vous faut une flemclé rouge pour activer cet objet.,,,Você precisa de uma flemchave vermelha para ativar este objeto,,,,이걸 작동하려면 적색 플렘열쇠가 필요합니다 +You need a yellow flemkey to activate this object,PD_YELLOWFO,,,,,"Du brauchst einen gelben Flemschlüssel, um dieses Objekt zu aktivieren.",,,Il vous faut une flemclé jaune pour activer cet objet.,,,Você precisa de uma flemchave amarela para ativar este objeto,,,,이걸 작동하려면 황색 플렘열쇠가 필요합니다 +Picked up a zorcher.,PICKUP_PISTOL_DROPPED,,,,,Zorcher genommen.,,,Zorcheur récupéré.,,,Pegou um zorcher.,,,,자쳐 습득. +Invincible mode on,STSTR_DQDON,,,,,Unverwundbarkeit AN,,,Mode invincible ON.,,,Modo invencível LIGADO,,,,무적모드 켬 +Invincible mode OFF,STSTR_DQDOFF,,,,,Unverwundbarkeit AUS,,,Mode invincible OFF.,,,Modo invencível DESLIGADO,,,,무적모드 끔 +Zorch and keys added,STSTR_KFAADDED,,,,,Zorch und Schlüssel hinzugefügt.,,,Zorch et clés ajoutées.,,,Zorch e chaves adicionadas,,,,저치와 열쇠 +Zorch Added,STSTR_FAADDED,,,,,Zorch hinzugefügt.,,,Zorch ajouté.,,,Zorch adicionado,,,,저치가 추가됨 +E1M1: Landing Zone,HUSTR_E1M1,,,,,E1M1: Landezone,E1M1: Zona de Aterrizaje,,E1M1: Zone D'Atterissage,E1M1: Landoló Zóna,E1M1: Zona di Atterraggio,E1M1: Zona de Pouso,,E1M1: Зона приземления,,E1M1: 착륙 지점 +E1M2: Storage Facility,HUSTR_E1M2,,,,,E1M2: Lagerhalle,E1M2: Instalación de Almacenamiento,,E1M2: Centre de Stockage,,E1M2: Struttura di Immagazzinamento,E1M2: Depósito,,E1M2: Хранилище,,E1M2: 저장 시설 +E1M3: Laboratory,HUSTR_E1M3,,,,,E1M3: Labor,E1M3: Laboratorio,,E1M3: Laboratoire,,E1M3: Laboratorio,E1M3: Laboratório de Experimentos,,E1M3: Лаборатория,,E1M3: 연구소 +E1M4: Arboretum,HUSTR_E1M4,,,,,,E1M4: Arboreto,,E1M4: Arboretum,,E1M4: Arboreto,E1M4: Arvoredo,,E1M4: Дендрарий,,E1M4: 수목원 +E1M5: Caverns of Bazoik,HUSTR_E1M5,,,,,E1M5: Die Höhlen von Bazoik,E1M5: Cavernas de Bazoik,,E1M5: Cavernes de Bazoik,,E1M5: Caverne di Bazoik,E1M5: Cavernas de Bazoik,,E1M5: Каверны Базоика,,E1M5: 바조이크의 대동굴 +E2M1: Spaceport,HUSTR_E2M1,,,,,E2M1: Raumhafen,,,E2M1: Spatioport,,,E2M1: Espaçoporto,,,,E2M1: 우주공항 +E2M2: Cinema,HUSTR_E2M2,,,,,E2M2: Kino,,,E2M2: Cinéma,,,E2M2: Cinema,,,,E2M2: 극장 +E2M3: Chex Museum,HUSTR_E2M3,,,,,,,,E2M3: Musée Chex,,,E2M3: Museu Chex,,,,E2M3: 첵스 박물관 +E2M4: City Streets,HUSTR_E2M4,,,,,E2M4: städtische Straßen,,,E2M4: Rues de la Ville,,,E2M4: Ruas da Cidade,,,,E2M4: 도시 거리 +E2M5: Sewer System,HUSTR_E2M5,,,,,E2M5: Kanalisation,,,E2M5: Système d'égouts,,,E2M5: Rede de Esgoto,,,,E2M5: 하수도 +E3M1: Central Command,HUSTR_E3M1,,,,,E3M1: Kommandozentrale,,,E3M1: Commandement,,,E3M1: Comando Central,,,,E3M1: 중앙 사령부 +E3M2: United Cereals,HUSTR_E3M2,,,,,E3M2: Vereinigte Zerealien,,,E3M2: Céréales Unies,,,E3M2: Cereais Unidos,,,,E3M2: 시리얼 연합 +E3M3: Villa Chex,HUSTR_E3M3,,,,,,,,E3M3: Villa Chex,,,E3M3: Villa Chex,,,,E3M3: 책스 주택 +E3M4: Provincial Park,HUSTR_E3M4,,,,,E3M4: Provinzpark,,,E3M4: Parc Naturel,,,E3M4: Parque Natural,,,,E3M4: 주립공원 +E3M5: Meteor Spaceship,HUSTR_E3M5,,,,,E3M5: Meteor-Raumschiff,,,E3M5: Vaisseau Météore,,,E3M5: Espaçonave Meteoro,,,,E3M5: 거대 유성호 +Commonus,CC_ZOMBIE,,,,,,,,,,,,,,,커머누스 +Bipedicus,CC_SHOTGUN,,,,,,,,,,,,,,,바이피디쿠스 +Bipedicus with Armor,CC_IMP,,,,,Bipedicus mit Panzerung,,,Bipedicus avec Armure,,,Bipedicus de Armadura,,,,정예 바이피디쿠스 +Stridicus,CC_DEMON,,,,,,,,,,,,,,,스트리디쿠스 +Flem Mine,CC_LOST,,,,,,,,,,,Mina Flem,,,,플렘 지뢰 +Super Cycloptis,CC_CACO,,,,,,,,,,,,,,,슈퍼 사이클롭티스 +Maximus,CC_BARON,,,,,,,,,,,,,,,맥시무스 +The Flembomination,CC_SPIDER,,,,,Die Flembomination,,,La Flembomination,,,A Flembominação,,,,플렘보미네이션 +Lord Snotfolus,CC_CYBER,,,,,,,,Seigneur Morvator,,,Lorde Snotfolus,,,,스놋폴러스 마왕 +Chex Warrior,CC_HERO,,,,,Chex Krieger,,,Guerrier Chex,,,,,,,첵스 전사 +You need a blue key to open this door,PD_BLUEC,,,,,"Du brauchst einen blauen Schlüssel, um diese Tür zu öffnen.",Necesitas una llave azul para abrir esta puerta,,Il vous faut une clé bleue pour ouvrir cette porte.,Az ajtót a kék kulcs nyitja.,Ti serve una chiave blu per aprire questa porta,Você precisa de uma chave azul para abrir essa porta,,"Нужен синий ключ, чтобы открыть",Треба вам плави кључ да би отворили ова врата,이 문을 열려면 청색 열쇠가 필요합니다 +You need a red key to open this door,PD_REDC,,,,,"Du brauchst einen roten Schlüssel, um diese Tür zu öffnen.",Necesitas una llave roja para abrir esta puerta,,Il vous faut une clé rouge pour ouvrir cette porte.,"Piros kulcs szükséges, hogy az ajtót kinyithasd.",Ti serve una chiave rossa per aprire questa porta,Você precisa de uma chave vermelha para abrir essa porta,,"Нужен красный ключ, чтобы открыть",Треба вам црвени кључ да би отворили ова врата,이 문을 열려면 적색 열쇠가 필요합니다 +You need a yellow key to open this door,PD_YELLOWC,,,,,"Du brauchst einen gelben Schlüssel, um diese Tür zu öffnen.",Necesitas una llave amarilla para abrir esta puerta,,Il vous faut une clé jaune pour ouvrir cette porte.,Kell egy sárga kulcs hogy kinyisd ezt az ajtót.,Ti serve una chiave gialla per aprire questa porta,Você precisa de uma chave amarela para abrir essa porta,,"Нужен жёлтый ключ, чтобы открыть",Треба вам жути кључ да би отворили ова врата,이 문을 열려면 황색 열쇠가 필요합니다 +You need a blue flemkey to open this door,PD_BLUEF,,,,,"Du brauchst einen blauen Flemschlüssel, um diese Tür zu öffnen.",,,Il vous faut une flemclé bleue pour ouvrir cette porte.,,,Você precisa de uma flemchave azul para ativar este objeto,,,,이 문을 열려면 청색 플렘열쇠가 필요합니다 +You need a red flemkey to open this door,PD_REDF,,,,,"Du brauchst einen roten Flemschlüssel, um diese Tür zu öffnen.",,,Il vous faut une flemclé rouge pour ouvrir cette porte.,,,Você precisa de uma flemchave vermelha para ativar este objeto,,,,이 문을 열려면 적색 플렘열쇠가 필요합니다 +You need a yellow flemkey to open this door,PD_YELLOWF,,,,,"Du brauchst einen gelben Flemschlüssel, um diese Tür zu öffnen.",,,Il vous faut une flemclé jaune pour ouvrir cette porte.,,,Você precisa de uma flemchave amarela para ativar este objeto,,,,이 문을 열려면 황색 플렘열쇠가 필요합니다 +%o sinks into some slime.,OB_SLIME,,,,,%o versank im Schleim,,,%o se noie dans la morve.,,,%o afundou na gosma.,,,,%o 는(은) 점액 속으로 가라앉았습니다. +%o sinks into some slime.,OB_LAVA,,,,,%o versank im Schleim,,,%o se noie dans la morve.,,,%o afundou na gosma.,,,,%o 는(은) 질척하게 가라앉았습니다. +%o was hit by inter-dimensional slime!,OB_POWERSTRAND,,,,,%o wurde von interdimensionalem Schleim getroffen,,,%o s'est fait@[e_fr] toucher par de la morve interdimensionelle!,,,%o foi atingid@[ao_ptb] por gosma interdimensional!,,,,%o 는(은) 차원균열 점액에 맞았습니다! +%o was hit by inter-dimensional slime!,OB_KILLEDSELF,,,,,%o wurde von interdimensionalem Schleim getroffen,,,%o s'est fait@[e_fr] toucher par de la morve interdimensionelle!,,,%o foi atingid@[ao_ptb] por gosma interdimensional!,,,,%o 는(은) 모르는 사이에 점액에 당했습니다! +%o was boogered by a stridicus.,OB_STRIDICUS,,,,,%o wurde von einem Stridicus bepopelt.,,,%o s'est fait@[e_fr] engluer par un stridicus.,,,%o foi melecad@[ao_ptb] por um stridicus.,,,,%o 는(은) 스트리디쿠스의 코딱지에 당했습니다. +%o was gooed by a flem mine.,OB_FLEMMINE,,,,,%o wurde von einer Flem-Mine beschmiert.,,,%o s'est fait@[e_fr] éclabousser par une flem mine.,,,%o foi engosmad@[ao_ptb] por uma mina flem.,,,,%o 는(은) 플렘 지뢰에 의해 점액 범벅이 됐습니다. +%o was slimed by a super cycloptis.,OB_SUPERCYCLOPTIS,,,,,%o wurde von einem Super Cycloptis vollgeschleimt.,,,%o s'est fait@[e_fr] gélifier par un super cycloptis.,,,%o foi lambuzad@[ao_ptb] por um super cyclóptis.,,,,%o 는(은) 슈퍼 사이클롭티스의 점액에 당했습니다. +%o was defeated by a Maximus.,OB_MAXIMUS,,,,,%o wurde von einem Maximus besiegt.,,,%o s'est fait@[e_fr] batre par un Maximus.,,,%o foi derrotad@[ao_ptb] por um Maximus.,,,,%o 는(은) 맥시무스에게 패배했습니다. +%o was gooed by a larva.,OB_LARVA,,,,,%o wurde von einer Larve beschmiert.,,,%o s'est fait@[e_fr] tacher par une larve.,,,%o foi engosmad@[ao_ptb] por uma larva.,,,,%o 는(은) 애벌레에 의해 점액 범벅이 됐습니다. +%o was slimed by a Quadrumpus.,OB_QUADRUMPUS,,,,,%o wurde von einem Quadrumpus vollgeschleimt.,,,%o s'est fait@[e_fr] morver par un quadrumpus.,,,%o foi melecad@[ao_ptb] por um Quadrumpus.,,,,%o 는(은) 쿼드럼푸스의 점액에 당했습니다. +%o was defeated by the Flembomination.,OB_FLEMBOMINATION,,,,,%o wurde von der Flembomination besiegt.,,,%o s'est fait@[e_fr] éliminer par la Flembomination.,,,%o foi derrotad@[ao_ptb] pela Flembominação.,,,,%o 는(은) 플렘보미네이션으로부터 벗어날 수 없었습니다. +%o was defeated by Lord Snotfolus.,OB_SNOTFOLUS,,,,,%o wurde von Lord Snotfolus besiegt.,,,%o est tombé@[e_fr] face au Seigneur Morvator.,,,%o foi derrotad@[ao_ptb] pelo Lorde Snotfolus.,,,,%o 는(은) 스놋폴러스 마왕과 싸울 준비를 제대로 하지 못했습니다. +%o was hit by %k's propulsor.,OB_MPR_SPLASH,,,,,%o wurde von %ks Propeller getroffen,,,%o s'est fait@[e_fr] propulser par %k.,,,%o foi atingid@[ao_ptb] pelo propulsor de %k.,,,,%o 는(은) %k 의 추진력에 휘말렸습니다. +%o was lazzed by %k.,OB_MPBFG_SPLASH,,,,,%o wurde von %o weggezorcht.,,,%o est entré@[e_fr] dans la zone de zorchage large de %k.,,,%o foi LAZead@[ao_ptb] por %k.,,,,%o 는(은) %k 에게 레이져를 쐬였습니다. +"After sending the monstrous Flembrane +back to his own dimension, you free the +captives. Yet flemoids are everywhere! +You and the captives make a break for +your spaceship. The flemoids slime your +ship, but you narrowly escape into orbit. +During the return you are congratulated +for the daring rescue, but you issue a +warning... +We haven't seen the last of the Flemoids. + +Unfortunately you are correct. For as you +return home, you find that the Flemoids +have somehow followed you here. Prepare +for Chex Quest 2: Terror in Chex City!",E1TEXT,,,,,"Nachdem du die monströse Flembrane +in ihre eigene Dimension zurückgeschickt +hast, befreist du die Gefangenen. +Und dennoch sind die Flemoiden +überall! Du kämpfst dich mit den +Gefangenen zu deinem Raumschiff +durch und entkommst mit knapper Not. +Du schickst eine Warnung ab, dass wir +die Flemoiden noch nicht los sind. + +Unglückicherweise hast du Recht. +Denn als du nach Hause kommst, +erkennst du, dass dir die Flemoiden +gefolgt sind. Bereite dich auf Chex +Quest 2: Terror in Chex-City vor!",,,"Ayant renvoyé la terrible Flembrane dans +sa dimension, vous libérez les prisonniers. +Pourtant, les flémoïdes sont partout! +Vous aidez les prisonniers à rejoindre +votre vaisseau. Les flémoïdes s'agglutinent +dessus, mais vous arrivez à vous mettre +en orbite. Lors du retour, vous êtes félicité, +mais vous avez un avertissement.. +Ce n'est pas la fin de la menace flémoïde. + +Malheureusement, vous avez raison. +Quand vous retournez sur votre planète, +vous découvrez que les flémoïdes vous +ont suivi jusqu'ici. Préparez vous pour +Chex Quest 2: Terreur à Chex City!",,,"Após mandar a monstruosa Flembrana +para sua dimensão, você libertou os +prisioneiros! Você e os prisioneiros correm +até a sua espaçonave. Os flemóides +lambuzam a sua nave, mas por pouco +você consegue escapar até a órbita. +Ao retornar, você é parabenizado pelo seu +resgate ousado, mas também há um aviso... +A ameaça flemóide ainda não chegou ao fim. + +Infelizmente, você está corret@[ao_ptb]. +Pois ao retornar para casa, você descobre +que os flemóides te seguiram até aqui de +alguma forma. Prepare-se para o +Chex Quest 2: Terror em Chexópolis!",,,,"플렘브레인을 원래 차원으로 보내버린 뒤, 당신은 인질들을 풀어줬지만, +아직 플레모이드들이 사방에 있습니다! 당신과 인질들은 당신의 +우주선으로 도망갔습니다. 플레모이드들이 당신의 우주선에 +공격을 가하지만, 아슬아슬하게 궤도 밖으로 탈출하는 +데 성공했습니다. 돌아오는 동안 당신의 용맹한 구출 작전의 +성공에 모두 축배를 들지만, 한 가지 걸리는 게 있으니... +바로 플레모이드들과 끝장을 보지 못했다는 것! + +불행히도 그 예감은 맞았습니다. 집으로 돌아가는 와중, +플레모이드들이 당신을 추적해왔다는 걸 알게 됐는데... +다음 이야기는 ""첵스 퀘스트 2 : 첵스 시티의 공포""에서 계속됩니다!" +"You zorch the remaining flemoids who had +gathered in the sewers. Chex City has been +saved. It seems that the Flemoid threat +has finally ended. + + +Ten years pass in peace and prosperity. +But the Flemoids were not defeated and +their desire to control the nutritionally +rich cereal dimension has not diminished. +They have gathered all their forces, opened +a gigantic inter-dimensional rift in space +and now a great ball of slime is headed +straight for the cereals' planet! + +Get ready for +Chex Quest 3: Invasion! +",E2TEXT,,,,,"Du zorchst die verbleibenden +Flemoiden, die sich noch in der +Kanalisation aufhielten, weg. Chex +City ist gerettet. Es sieht aus, als ob die +Flemoidenbedrohung beendet ist. + +Zehn Jahre vergehen in Frieden und +Wohlstand. Aber die Flemoiden waren +nicht besiegt und ihr Verlangen, die +Zerealiendimension zu kontollieren, hat +nicht abgenommen. Sie haben all ihre +Truppen zusammengezogen und ein +gigantisches interdimensionales Portal +erschaffen, und nun macht sich ein +gigantischer Ball intergalaktischen +Schleims auf den Weg zum Zerealien- +planeten. + +Mach dich bereit für Chex Quest 3: +Invasion!",,,"Vous zorchez les derniers flémoïdes +restant dans les égouts. Chex City +est sauvée. Il semble que la menace +flémoïde n'existe plus. + +Dix ans se déroulent dans la paix et +la prospérité, mais les flémoïdes ne +se sont pas laissé battre, et veulent +contrôler la dimension des céréales, +riche en nutriments. Ils on regroupé +leur forces et ont ouvert un portail +inter-dimensionnel colossal, et +maintenant, une sphère de morve +géante se dirige vers la planète +des céréales! + +Préparez vous pour Chex Quest 3: +Invasion!",,,"Você zorcha os flemóides que restaram nos +esgotos. Chexópolis foi salva. Parece que +a ameaça flemóide finalmente acabou. + +Dez anos se passaram com paz e +propseridade. Mas os flemóides não foram +derrotados e seu desejo para controlar a +dimensão dos cereias ricos em nutrientes +não diminuiu. Eles juntaram todas as suas +forças, abriram uma grande fenda +interdimensional no espaço e agora uma +bola gigante de gosma está vindo direto +para o planeta dos cereais! + +Se prepare para o +Chex Quest 3: A Invasão!",,,,"당신은 하수구에 모인 잔존 플레모이드들을 처리하는 데 성공했습니다. +이제 책스 시티는 안전합니다. 플레모이드들의 위협도 이로써 +막을 내린 것 같습니다. + +평화와 번창 속에서 10 년이라는 세월이 흘렀지만, 사실 플레모이드들 +전부가 패배한 것이 아니었고, 그들의 영양가 풍부한 시리얼 행성을 +지배하려는 야망은 아직 사그라지지 않았던 것이었습니다! 그들은 +병력을 모아, 우주에 거대한 차원균열 관문을 열었고 그들의 거대한 +녹색 점액 덩어리가 시리얼 행성을 향하고 있는데! + +다음 이야기는 """"첵스 퀘스트 3: 대침공""""에서 이어집니다!" +"With one final blast, you zorch Lord +Snotfolus back to his own dimension! +Against all the odds you have single- +handedly foiled the invasion! + +You truly hope that the Flemoids have +finally learned their lesson and will +never again return to the cereal +dimension. + + + +But if they do you know you will be +ready for them! +",E3TEXT,,,,,"Mit einem letzten Schuss zorchst du +Lord Snotfolus zurück in seine eigene +Dimension! Gegen alle Widerstände +hast du eigenhändiig die Invasion +scheitern lassen! + +Du hoffst wirklich, dass die Flemoiden +ihre Lektion gelernt haben und nie +wieder in die Zerealiendimension +zurückkehren. + +Aber falls sie das doch tun, wirst du +bereit sein!",,,"Avec un dernier tir, vous zorchez +Seigneur Morvator dans sa propre +dimension! Contre toute attente, +vous avez surmonté l'invasion +de par vos propres moyens. + +Vous espérez sincèrement que les +flémoïdes ont appris leur leçon +et qu'il n'essaieront jamais de +revenir envahir la dimension des +céréales. + +Mais vous savez que vous serez +prêt pour eux!",,,"Com mais uma última explosão, você zorcha +o Lorde Snotfolus de volta para sua +dimensão! Contra todas as probabilidades +você impediu sozinh@[ao_ptb] a invasão! + +Você torce que os flemóides finalmente +tenham aprendido a lição e que eles nunca +mais voltarão para a dimensão dos cereais. + + +Mas se voltarem, você sabe que você +estará preparad@[ao_ptb]!",,,,"최후의 한방으로, 당신은 스놋폴러스 마왕을 원래 세계로 추방했습니다! +그 모든 역경 속에서 당신은 손쉽게 모든 침공을 막아냈습니다! + +당신은 드디어 플레모이드들이 정신을 차리고 다신 +시리얼 차원에 발을 들일 생각조차 안 하기를 바랐습니다. + +뭐, 다시 온다 해도 당신은 항상 대비하고 있을 테지만!" +Rescue on Bazoik,M_EPI1,,,,,Rettung auf Bazoik,,,,,,,,,, +Terror in Chex City,M_EPI2,,,,,,,,,,,Terror em Chexópolis!,,,,"첵스 시티의 공포""에서 계속됩니다" +Invasion!,M_EPI3,,,,,,,,,,,A Invasão!,,,,"대침공""""에서 이어집니다!" \ No newline at end of file