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 0aedc48b25..e631c4e994 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 d52e35979a..fc338b32f9 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 d50b56b67e..4f179155f6 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 9932b9d1dc..5eca78b010 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 add7ed3635..84ed9fc1a3 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 4d54aadfc7..0191bd4178 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 330f52783d..19347e9d1f 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 510adc8f5e..ecfedb7c0c 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 4c4db13746..da1fbe81be 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 0000000000..ec6c65c734 --- /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 ea4a7f07ab..a6d8216c27 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 f27ee3288d..63b6de4202 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 1aefb0ba0c..6404ac7133 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 f854d5c8c8..f2e82cc7ad 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`2Al2NU8&|J`kG&u{{vG12F?rNl97Re+K5_;!*|%AYE8k45o{U%E5GL NX(f%l$05Jn|EeQMv(Zx9EGN?F69RRsG7s&ts 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 zcmXZV+YQ1n3CZb$CAXZ&Hp0AG|emy zE6~x2M9#BQ`NcMb7?X{v*i5~urZNh8qS>nk+{m3g z$dkOuLO$e6aLL(P$J83V-!O3&5obk90CwSO%^}7)hjpb$NdOmnpfwvhegRIMi0}Kc rl|MU#AT}3YcUOwz%OR!YwWQbXRC9C2=&WVtN!#JrE<1ApjA`NrhU_)2 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 zcmW;G>kWf23UYO1^H8(!ehw1zWP&Ytp4*d^gvoxjv literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-chex/fonts/bigfont/0413.lmp b/wadsrc_extra/static/filter/game-chex/fonts/bigfont/0413.lmp new file mode 100644 index 0000000000000000000000000000000000000000..251573986785febf12b63fa963b2241321a95e4d GIT binary patch literal 138 zcmXZV!3}^Q3boQ5%R^5>CbRAK(FboWm!T234GFEv<7-=&t{k>I)CoB9#CD literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-chex/fonts/bigfont/0414.lmp b/wadsrc_extra/static/filter/game-chex/fonts/bigfont/0414.lmp new file mode 100644 index 0000000000000000000000000000000000000000..aa6c8dd69a45db43ca13008e238aa35324712f65 GIT binary patch literal 256 zcmXxey%EAN3X(~(M@ z;0zbILWBoA;RSE_z!!cnf@{pYX^fL=RoMn1n(8j+$dW9^yCpQLp4l^V$i|9aG*Krq zBu!C7gUt<9p*@WqnZK1rtyt@JW&b)4X;2LrXVwiO5?&eH0E$XyO)b;fD2SC3!C74GA~E2>o2m&D_ny zJk8sD%-6sLG2$!Pz?jksBN4_}ClZkYV1b!)E|N>;JrHq&!~qny;D{sy@1}{DW$>zT l&xq2RcOn$R;B)?G)zV+jbM0AGs(o`f_GM1nJiC5}^#^zoFuVW& literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-chex/fonts/bigfont/0416.lmp b/wadsrc_extra/static/filter/game-chex/fonts/bigfont/0416.lmp new file mode 100644 index 0000000000000000000000000000000000000000..c56d17a881a1c643d1b65ef68a08b662a12fd2cf GIT binary patch literal 272 zcmW-b?+t=L48;pb2mv>80%vdqleTxg0!N&{5nRC)9KjJ>!Eby$A2#{Dy#7s(G}0a? za0VA}1vhX95AXyp@CG071$6~!Qj&S@>uHLy(7}v3gswGnlW{CGx{I=yiluqmP$0@F zMmAqIM5%gQan-P=g$7k-mV^ai#yC2#YKTbmKRD;SB#mocQK$y&OHdPo!N8CbORyzd gi0)W0v=+4Tq_)4*x=$VQu7#{||DlGXzJVb70c)aF*8l(j literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-chex/fonts/bigfont/0417.lmp b/wadsrc_extra/static/filter/game-chex/fonts/bigfont/0417.lmp new file mode 100644 index 0000000000000000000000000000000000000000..0035023287525d28c336c8685a97d57dd4a4dea6 GIT binary patch literal 201 zcmW;G(G9{d3JrU^e>i1Z@a`m%kX6A?K& zIkmj3NClA_(N>+5!%3?PHu6%&TxS% z+~5ugUhswwe8C@7C8pGl-Yk(a9<}{RHPafa2s*czaSS1@^mzI{m~xJRSZzZ!=SN${ mea<-$aav7?8Go6Po}yGD8eyuXR4G;^_w?P2Eu7o_NBaS^Sv~#$ literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-chex/fonts/bigfont/041C.lmp b/wadsrc_extra/static/filter/game-chex/fonts/bigfont/041C.lmp new file mode 100644 index 0000000000000000000000000000000000000000..8d808f72c16465f7df94d423b317f812537c43f4 GIT binary patch literal 288 zcmXYr%TdHI5JY7-U~CsfNQ6KNWT5#-qaXHRGav&p*a$X-&0s?y1<_iVs@I39p6+>Z zn;Y{6-oXc8Z~|Z88=S!fT)_?efDT?K$QmQF=OjF)yDdiVJtcwiar`Za#FDCp`@+nN zhVq2#VfJA;2Gk7ZI|IZ|(u5q?9eyY;hz`>!@?{zw}>D4_b}@ literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-chex/fonts/bigfont/041D.lmp b/wadsrc_extra/static/filter/game-chex/fonts/bigfont/041D.lmp new file mode 100644 index 0000000000000000000000000000000000000000..aa0937e6c7e0706aef4dbd882d86ff36d8e8de50 GIT binary patch literal 227 zcmb`omSfDK~H*-G~*!QstUYitXmO_O;d<4P&K!U#p0gd0J!!ZbHAN?1-n)~kzR}U PFl55&^IzS+;_ChYIK4q~ 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 zcmW;Fiw(js3KZBx2cf)aYG|g=T9xX*Rn?4n!>wgB?W5 zz6OJHej^$O@7>y7Fbj)na2RbtO3rOr(EA-hH-(V#-6HEo#+2?z^tk1i)zr2h+j<;m E{^?*oIsgCw 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 zcmXZU!41MN3# BKra9Q 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 zcmXZT>kR@S5Cq`4h~bP^iY3^BE!cuAEYG{d0xZDaS1ArE;Y*fb=Y$30TQ6 z^rAQIgmcc$32&=0gpP%8@4YzRiUQw2YRxKf%{tEvQu4qWIDiv4f-9INg`?%Clnva#6&%6Y&PPc;E-!HJLL=34gF8In z2`|{;4IlWz4_cK{Oks82OEY*s+nD@fnT4*~X3Wfp%pnMk>pHtw&Lum$Xf1Sd&Lni` xK4-I(BGfZmO*C}Q9U0S3)6iM#mBMq3Ce;5Sm`Ef|$BcrypVg7khV{1I@&{vfHX8r{ 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 zcmX}kK@LDb3HD~?7w162{BekZz6t1H~# z4iA{X!wcT+)*o_CL%Zqv|KbP6<1SnP literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-chex/fonts/bigfont/0424.lmp b/wadsrc_extra/static/filter/game-chex/fonts/bigfont/0424.lmp new file mode 100644 index 0000000000000000000000000000000000000000..65f16a785edf126e1ace8819a9b260b6e4c1c9ee GIT binary patch literal 270 zcmXZV(QU#&3Fl%R z6CG)ZGhE;kuD~$C7u?|+e&81#@Prp^8=__#QPix`K0*+sRBHRa6Ty*6A7-8JojW2V zrEm}lHdH#OcET*#^V)g*A7M7Pv^1c=S&OiaLwOfun1;mT6t}gIQfi4zaUs?PsUIx+ fJR@;Wnxu^QY1*7s)vz7!2scNW>Sh-)FVpo8q2p3~ 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 zcmW;Fiw(js3t}nDl#vo?adm-7@76q)|Qi5 q6pp1N)k=$dLXC=VCQ@lVj-1-3v?Y`)_3n<_)Vb$Y4{bO9&-w!cF*Qv9 literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-chex/fonts/bigfont/0426.lmp b/wadsrc_extra/static/filter/game-chex/fonts/bigfont/0426.lmp new file mode 100644 index 0000000000000000000000000000000000000000..edf11d891c0f889c2a08facb41c5662fb487cce5 GIT binary patch literal 260 zcmXYr%MHRX5JWc;5TYbhLEe;PMS(Vi<4fQs2&fh36%!3m%FmB fIlEUHMMML~Ig6%k!@`hg^JK{+O3%tP>v;~eXMs5a)42evnjL|82YqZu(1jE`sIvG+5F2N|e zs-lWMijoo3b(xaM52V&nA+lZ!YppZdBfEA4$cI6~ViX-Vn6=b($y+ppp4kOHM?cKN Y|52a6&3kznM~Tgta>uUSX61YO0kqyvWdHyG literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-chex/fonts/bigfont/0429.lmp b/wadsrc_extra/static/filter/game-chex/fonts/bigfont/0429.lmp new file mode 100644 index 0000000000000000000000000000000000000000..3ebfcea2990f230fea42533b683a9e2cf688173f GIT binary patch literal 313 zcmYL@!EM7Z3`Oa{t!-E>3S@=cyGBRI3b{$NXi~DXK(1Y(D|Cg9kZV@xsaN+acF_+! zK>E`E1Yh6^Zr~eK7116Xz$>8MOuH$YLOCzwLh#8V2k*TS z!C)S3$Wux(Bp6lSG}O?KqZBZ4Y3r0ic_6n{iK$-=W*&l%$ZkIbiZW$cjjG26cdhrf x*1xF8s5*$AEl&6H|7a{@>4`b!dCt}$t1&J+w{@Xnr9o;3;>M8?Sb-yPoVZR)2j~bazyb`woqci*uZ{Fc$uGw}^|YQd zT;K{fxP!q0FL=WTzVHLuGpklQh(w}Fod~my8VB8a&;0Pw6xHiGfZ!vm4Ox?HVV!Dp&}2&IPV; zgF6Vk;0+)6!VhRrW%k+9WNg-GWPZfth8m4%4>7U%R4nTr)^&Lnwz3w92!~k-dm~t+)f(6EJTXm F8$WdjJiGt^ 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 zcmXZW%S{9^3<_=67fMDzl$Kqp1nZb3xMuC$F_tR!`=5MdyqL0L-* zVZRN`a;?g_ebq6TPKY5dVI1fWiwHC46l%RrE3>Gw6m$EIH0Lzrf&}yV9v_i{I(i#} z2j^n%%VTTadcSSBc%(j;aNmg0G1sKxQycHEW{z|AK2g0l 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}pdU10c2nVpkvz1majA&IIC8AZ`TWULc+c#7wNU5b&Rot+uwRq@<*__CEuA vZEbl;d3iaMT~u2NQUn%9VV5D)mz9^57eUpO))v*4LD?m><+a67Hq0sjxp+6h 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 zcmXZU!3lsc5Jb_ah?e5Tn*~^a1z3Oum~|73VQP=FumcbNY348m+d>=dbkIo`-SknI kfE5W`vwo3Oy#*rT9U+L`T2UYGl2r@48-bFo`oYf7e$}BV_y7O^ literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/00D8.lmp b/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/00D8.lmp new file mode 100644 index 0000000000000000000000000000000000000000..17639fa7b749ef7c3e8dc04d244d368ba076b038 GIT binary patch literal 130 zcmd;JU}pdU4InlGVp|~g1maL2P6XmyAg%ynCe~UIC@lQX$W~ihRZ&$~Tl=4Z9mp&$ lEv|yH3u{3TA`W7ez|@qMmV?y*wH5;Pf`nNMfhvLEKLFcRDiHtx literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/00DD.lmp b/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/00DD.lmp new file mode 100644 index 0000000000000000000000000000000000000000..47a47dc981790510c8a788f5943e2823cfd68ca9 GIT binary patch literal 125 zcmd;J;9y{2U}Vq$k_JF*3B;~I90bJiK%4`_r9jNYTnhsKnOJIT3rm0uMs^^#u(%W? i$iPusTMps^2{5M!!~sfyIkmM#5M>~}MP)!ym|*}5GAGyo literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/00DE.lmp b/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/00DE.lmp new file mode 100644 index 0000000000000000000000000000000000000000..a48593840c9362807967fe30a973ac9a7255d3cb GIT binary patch literal 130 zcmd;J;9y{2U}Vq$lBPiH1jPP890SB@KwJRCRY1(ZQ40tEL7dX^^1{N>+FA&w2#Hf$ d2!ufJpOLi|$SQ`hN@1+3(kh@B6EoPr{{Z@5Doy|Z literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/0100.lmp b/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/0100.lmp new file mode 100644 index 0000000000000000000000000000000000000000..c2b210ae0a836e5d543bb863bfa933203f788854 GIT binary patch literal 140 zcmY+6-3fp&5QC#u=qSEAf(y8S3;5i>10gRiUeh9if$xrR$$5AH0~XCyY+@IOI7Jq> oaE@ISW82eAUMZ0ko(!~P_8Mzek$(A^z)-#pSz?TewO3vB0eH_YQvd(} 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 zcmZXM!3}^g3iPp$v40$B0zF2U}9!(-*Dtnx&OL;d)*msJbxKg_E49eZXgXW!TJQ3LzbVK7 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 zcmYj}(FuS+3`1KHyipv$0bIZZT)=P1dEh}locxT{4@+NYXh^bTW^SW&60=yuDmIbD pCEQ8&orKK>vXEze?nHtWcnu&69Pud%?XeLne^Z&Gq`AtzX*ZNcF2eu- 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 zcmX|&OAdfA2t=_qhNE=n)(dz6FW?2-Sp1|-=InKdM#3Y!45+AxbdoqnGLe}qWF;FZ nBnGfrAAwT2h`Lv^S8@i-?EI1&JG^=3$uItM02h-mxOlY(DlIE4 literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/010E.lmp b/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/010E.lmp new file mode 100644 index 0000000000000000000000000000000000000000..3cd7c8cbf7b846f01cc4be57123b115411e98f81 GIT binary patch literal 132 zcmX|(!3}^g3@x1gj8xCHLXbh1-Pw?<`#QvY99kaEkOVP 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 zcmXZU!3lsc429vU6zeV?Jv)E{IDi9qunjfJySuf%U;-cffi^=(!Dgh1W?E>ajdr@} qp|*p~+eAR?#R@$uA5y&~bG(Zd74Hl|u};7V1>gUR-4pu}{q_gjQ7=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 zcmX|((FuSs5JS&eq@(!fuM4<<3%Gz^y_R}HX0JIB1Mj#Hk|aq)2AO#mvXYJLN88~Wd%W6x2ptcswDXuLC l0x+kz7^Doy2Fa9_A#p%@%1g^Dpn9rmi%N=sivJ^<3;-usFg^eP literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/0134.lmp b/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/0134.lmp new file mode 100644 index 0000000000000000000000000000000000000000..c6790f0cd50e143b6c64fdd6ec0404b674ab1cc4 GIT binary patch literal 159 zcmd;L;9y{2U}P`=k`_Sh0K|Sk91Fx*KwJ*QEkHa0h-UyXD|0Of{0GrxK$?*W#0Bw+ wfjkC?D4fdy7Ot%X%W)I~siM*{kTwPm5LHo8Q3c|#gUte)3o-#D1~KcokNk%hUEjqKzgC%H%^ p!-#L1oq(dMz^hSHrka`Snk%!30}>^cUOeLMeJ?-=%DZO&mk(}7E7kx2 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}Vq$l14ym3&dVP91g@OKwJpKbwJF_S_=XHnb>M;t4d2tYis{AaDc>0 pO3N$2oT8%I+UkmGpb%K593)o-mnkU&$wT!N7ncIn{bz!k3IO^EEjj=I 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 zcmXYoQ3`-C3`4sKb4T&tfB!vz7w`g7WjKa8`%KGPUPwurC5uRqg}RcB?BpOPxyVOi o!kBLM#Zv&cH&kiE%v`zjlC7al>p0jc{$L5vDjJh1+L2uQ4;rB?$p8QV literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/0158.lmp b/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/0158.lmp new file mode 100644 index 0000000000000000000000000000000000000000..4735a98014436a5c58d36e77858a60763267aeb6 GIT binary patch literal 140 zcmX|((FuSs3`Apv(oy_(0T*xq7w|jPVhJ3MUN5DX@Qz$UE=dxRNfzo#HnNk0oa81i p2@#{3B%dB!1)#|p$WZOZ_sae+YFfty(9(ZA%PNffIe1p=+CH=&E;j%G 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 zcmXYnu?>JQ3*nxV$x`0{`MgagA3Mfhd literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/0160.lmp b/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/0160.lmp new file mode 100644 index 0000000000000000000000000000000000000000..90fa7ae4504c868ef466056b86a008eeb29889d7 GIT binary patch literal 121 zcmZQ);9y{2U}R7Ml6pXF4a6Qm916rqK%5W6%&fH#@SlML#Hg&St*EU9a>~kTYs*S& g3&9+qcx_QdZ82P?q@n~U57kpxSyl<;Fu{!i0P+$i;Q#;t literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/0162.lmp b/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/0162.lmp new file mode 100644 index 0000000000000000000000000000000000000000..641ea31dca12a58a2f8d9afe6915be467363fa42 GIT binary patch literal 124 zcmd;J;9vj&4InlEVhbR41>ztejtAl#AT9x72Ig82_z$8BKr{!Kh6(~Xg{44HTU-p0 XDJm{11_Cgr1gr?E7svsd0Wu2!*;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}Vq$l7>KR1H_&{916sVK%57}l|anIQVRzE8QFkzd0AC$?SBRiAgi{h kv=qc)WUs9)tF0|Ahq6ncY>=Yj+7hTDkmj;-kb1a*0O|lLUjP6A 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}Vq$l7>KR4a6Qm916rqK%5W6l|anIQVRzEnOJLU%gd^2YyUHFfJBN) iOCg-1q9P!-xEw4~R0O199FVdSh%%7wvT~3HxPbuU#VSGo literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/0179.lmp b/wadsrc_extra/static/filter/game-chex/fonts/defsmallfont/0179.lmp new file mode 100644 index 0000000000000000000000000000000000000000..e740a85c149de2ffded68ae96c48969bc8d09619 GIT binary patch literal 120 zcmZQ);9y{2U}R7MlKMbw1;lPZ91O$>K%5K2Ol-AK@E^o1tt~69t^Lo)4iqe@Ehz!A i88|?~MO9VBP)xKn_SpSrt$dgb6X|KLDV5CinmV 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}R7MlKMbw1H_&{90tV6KwJRCOl-AK@SlML#44>VE3K^sa*B#-YfEZN hO2C}j+Va|>s;XkROi@{FAylTewyX-Mt@b~XSpY(FD9!)? 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 zcmY+-(FuSs3q9KZn_z%^>xfXmfWBjUk>BOIi0-d$;_qn-vD wX`-1HT4|%Q!joLoz#$?)b{PK^33RR910 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 zcmXZU!3lsc5Jb_ah?e3-=3)UBU;!3j0iNwD>n0ddT%3g+c<@g%hbh<=+GwYPPP*u( nhr$G`NZ^|FhotH)5E1VPLG;#&`g)hFTG-tPlx)=xc82x?pUNY8 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 zcmXww%L#xm5JaO8V=3Miyjy?;Sbzn1x2+`xWt)p{{mk%S7-ssAf@^>gCYWJ?6*kzR mjp9u qO9bH@yDG-Eryi+loV^Py6OXc8zhMU literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0102.lmp b/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0102.lmp new file mode 100644 index 0000000000000000000000000000000000000000..6732a582b053f340efc47ff53d4ee836b3d304c9 GIT binary patch literal 140 zcmZXM(FuSs5JRI@=qUaLM{ofbZ~+%^0Y|!)7F@38ihl;)-34-qhyVsGnyc8vE)H>u pOWYy^b~TK?r|nC653A literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0104.lmp b/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0104.lmp new file mode 100644 index 0000000000000000000000000000000000000000..9da49e83e31b3a7702c53deb170c92da61bf278d GIT binary patch literal 145 zcmd;N;9vj&9UwLXVn-nM1>#5`P6gsZAg%@CP9SDt)rWxpjBNV)yS8lEqObp-fn8sJ r`Z6xoa1wp1PuLK)6a;hdqAR<$1a^ZkAjV0;9`QKn0ddT%3g+c<@g%hbh<=+GwYPPP*u( nhr$G`NZ^|FhotH)5E1VPLG;#&`g)hFTG-tPlx)=xc82x?pUNY8 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 zcmX|((FuSs3`Aos(oy`o4P3wlT)+ifz@1D>jmy=G6c1j)gXEGV5gBCW1X;*RHnNk0 poFoP?O};foz#i8GTre%QOGQ!DUvjnbpQ#~t0dBy5!sNA{_5yXcBq;y@ literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0114.lmp b/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0114.lmp new file mode 100644 index 0000000000000000000000000000000000000000..6627819fd1892b3c34a6519190a6a74aa820653b GIT binary patch literal 138 zcmX|((G7qg3`8pu!zljU1}@+NF5m(#;7$~RxEx-I;gZ+urI!W?A~MO!39^x$9ONVy qxruk6nsl2zP+yB7My{Gm4?say)e%yudDOHb{TJY|E}C2Ht*L#kge5Nk 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 zcmXZU(FuSs3`NnZ6zeX+`|;ZW9KZn_zy(~ud2B7bL^4mNKS0j&=!^sIbI^_I->E?QK)GX%vt0XGzU|1Wk=>__z5AF+TZY5)KL 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 zcmX|((FuSs5JS&eq@(zkUl(uz7jOX=aIIcTJ(sIF5d-hI5RxQGL_YkN)3KvmT*X(-L=pQxeyoeS_zn0&z19~ZhK#Q*>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}pdU4InlEVrw9F2jXBLjtAl_AT9!8CT4vQ_|L!wqBenkcRzsAA`4Ae#}aTpz?_0h$1#LD~UC86B_y literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0143.lmp b/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/0143.lmp new file mode 100644 index 0000000000000000000000000000000000000000..02d47abfe0f0414d5dc011522d164e3a29087bfb GIT binary patch literal 133 zcmX|((G7qg3`C1YWfcD|@!x+3Z~+%^0k;Aw1ct+l5}UlsyR@klDgFsoP~QbKOUA>7Wj0(h^ytKI+d0r;UKk^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}Vq$l14ym3&dVP91g@OKwJpKbwJF_st*DGnb`F8cWvFeRbT%<0|!WK r%hv5Xz?@B+^!0b|*bNi{%WMb9?Sji}*#?q_>e;+`D^T5kCb+2plp-az 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 zcmXYo!3}^g3_z_aD!y1(o|bcvkG%KG5$Z`v3p{ literal 0 HcmV?d00001 diff --git a/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/015A.lmp b/wadsrc_extra/static/filter/game-doom/fonts/defsmallfont/015A.lmp new file mode 100644 index 0000000000000000000000000000000000000000..fa3b15508f1a8b011357b35a355279c8e613dee9 GIT binary patch literal 118 zcmXYn!3}^g3M#RlD8Q%sAW@y?`zpBU61YGvS^uI)rq)VZ_0$&}>mFVJ 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 zcmYMs!3}^g38Ob+5$PU|;v~!V%_5LhHYu{pA=8X8 fuVtXIp=uFJgHwpl!?I4u^ 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&4InlEVhbR41>ztejtAl#AT9x724;N__z$8tfM^ad4HX1(Hf{w1{mq*p YGMhGU+6)9>&K9sDs9qokYzD|I0E@~WXaE2J 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}Vq$l7>KR4a6Qm916rqK%5W6l|anIq7MfDnOODpw{P2}um7Kc10=F( k>sAP7)22;8?&j@anN6F3G>ijMwgsXLqXp8;5a1z3RLXwy8pTyPm)W#Uegs6x<;a;~U_@OF6%dXO6akTy#eL{kj3us~}ha 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 2ababdce46..f6ea6f805c 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 0400a12feb..9c76bd9990 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 61aa2e970b..996f919e12 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 9e3b1a444c..9a0d04c9ac 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 10bc411c0a..162bad2985 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 ca564cf933..0d28b2a186 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 4f6740a0ec..7fc19d5fa0 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 c7a9e5edb7..fb9a6ac1ec 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 0000000000..e96088f4a5 --- /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