Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package slade for openSUSE:Factory checked 
in at 2021-06-09 21:52:34
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/slade (Old)
 and      /work/SRC/openSUSE:Factory/.slade.new.32437 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "slade"

Wed Jun  9 21:52:34 2021 rev:13 rq:898377 version:3.1.13

Changes:
--------
--- /work/SRC/openSUSE:Factory/slade/slade.changes      2021-04-29 
22:53:26.769879266 +0200
+++ /work/SRC/openSUSE:Factory/.slade.new.32437/slade.changes   2021-06-09 
21:52:55.586541513 +0200
@@ -1,0 +2,8 @@
+Tue Jun  1 11:00:31 UTC 2021 - Jan Engelhardt <[email protected]>
+
+- Update to release 3.1.13
+  * Updated ZDoom, MAPINFO and ACS language definitions
+  * Added extra UDMF flags
+  * Fixed an issue with the "optional" keyword in TEXTURES
+
+-------------------------------------------------------------------

Old:
----
  SLADE-3.1.12a.tar.gz

New:
----
  3.1.13.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ slade.spec ++++++
--- /var/tmp/diff_new_pack.vzHvEO/_old  2021-06-09 21:52:56.150542518 +0200
+++ /var/tmp/diff_new_pack.vzHvEO/_new  2021-06-09 21:52:56.154542525 +0200
@@ -17,13 +17,13 @@
 
 
 Name:           slade
-Version:        3.1.12a
+Version:        3.1.13
 Release:        0
 Summary:        An editor for DOOM maps and WAD/PK3 archives
 License:        GPL-2.0-or-later
 Group:          Amusements/Games/3D/Shoot
 URL:            https://github.com/sirjuddington/SLADE
-Source:         %URL/archive/%version.tar.gz#/SLADE-%version.tar.gz
+Source:         
https://github.com/sirjuddington/SLADE/archive/refs/tags/%version.tar.gz
 Patch1:         basepk3.diff
 Patch2:         wx.diff
 Patch3:         clzma.diff

++++++ SLADE-3.1.12a.tar.gz -> 3.1.13.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/SLADE-3.1.12a/Info.plist new/SLADE-3.1.13/Info.plist
--- old/SLADE-3.1.12a/Info.plist        2020-05-28 01:08:34.000000000 +0200
+++ new/SLADE-3.1.13/Info.plist 2021-06-01 06:32:31.000000000 +0200
@@ -17,7 +17,7 @@
        <key>CFBundlePackageType</key>
        <string>APPL</string>
        <key>CFBundleShortVersionString</key>
-       <string>3.1.12</string>
+       <string>3.1.13</string>
        <key>CFBundleSignature</key>
        <string>SLA3</string>
        <key>NSPrincipalClass</key>
@@ -25,7 +25,7 @@
        <key>NSHighResolutionCapable</key>
        <true/>
        <key>CFBundleVersion</key>
-       <string>3.1.12</string>
+       <string>3.1.13</string>
        <key>CFBundleDocumentTypes</key>
        <array>
                <dict>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/SLADE-3.1.12a/build/msvc/SLADE.rc 
new/SLADE-3.1.13/build/msvc/SLADE.rc
--- old/SLADE-3.1.12a/build/msvc/SLADE.rc       2020-05-28 01:08:34.000000000 
+0200
+++ new/SLADE-3.1.13/build/msvc/SLADE.rc        2021-06-01 06:32:31.000000000 
+0200
@@ -7,16 +7,16 @@
 //
 // Generated from the TEXTINCLUDE 2 resource.
 //
-#include "afxres.h"
+#include "winres.h"
 
 /////////////////////////////////////////////////////////////////////////////
 #undef APSTUDIO_READONLY_SYMBOLS
 
 /////////////////////////////////////////////////////////////////////////////
-// English (Australia) resources
+// English (United States) resources
 
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENA)
-LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_AUS
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
 #pragma code_page(1252)
 
 #ifdef APSTUDIO_INVOKED
@@ -32,7 +32,7 @@
 
 2 TEXTINCLUDE 
 BEGIN
-    "#include ""afxres.h""\r\n"
+    "#include ""winres.h""\r\n"
     "\0"
 END
 
@@ -47,34 +47,12 @@
 
 /////////////////////////////////////////////////////////////////////////////
 //
-// Icon
-//
-
-// Icon with lowest ID value placed first to ensure application icon
-// remains consistent on all systems.
-IDI_ICON1               ICON                    "slade.ico"
-
-// wxWidgets cursors not available by default on Windows
-//
-//WXCURSOR_HAND           CURSOR  DISCARDABLE     "wx/msw/hand.cur"
-//WXCURSOR_BULLSEYE       CURSOR  DISCARDABLE     "wx/msw/bullseye.cur"
-WXCURSOR_PENCIL         CURSOR  DISCARDABLE     "wx/msw/pencil.cur"
-//WXCURSOR_MAGNIFIER      CURSOR  DISCARDABLE     "wx/msw/magnif1.cur"
-//WXCURSOR_ROLLER         CURSOR  DISCARDABLE     "wx/msw/roller.cur"
-//WXCURSOR_PBRUSH         CURSOR  DISCARDABLE     "wx/msw/pbrush.cur"
-//WXCURSOR_PLEFT          CURSOR  DISCARDABLE     "wx/msw/pntleft.cur"
-//WXCURSOR_PRIGHT         CURSOR  DISCARDABLE     "wx/msw/pntright.cur"
-//WXCURSOR_BLANK          CURSOR  DISCARDABLE     "wx/msw/blank.cur"
-//WXCURSOR_CROSS          CURSOR  DISCARDABLE     "wx/msw/cross.cur"
-
-/////////////////////////////////////////////////////////////////////////////
-//
 // Version
 //
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 3,1,12
- PRODUCTVERSION 3,1,12
+ FILEVERSION 3,1,13
+ PRODUCTVERSION 3,1,13
  FILEFLAGSMASK 0x3fL
 #ifdef _DEBUG
  FILEFLAGS 0x1L
@@ -90,12 +68,12 @@
         BLOCK "0c0904b0"
         BEGIN
             VALUE "FileDescription", "SLADE"
-            VALUE "FileVersion", "3.1.12"
+            VALUE "FileVersion", "3.1.13"
             VALUE "InternalName", "SLADE.exe"
-            VALUE "LegalCopyright", "Copyright (C) 2020"
+            VALUE "LegalCopyright", "Copyright (C) 2021"
             VALUE "OriginalFilename", "SLADE.exe"
             VALUE "ProductName", "SLADE"
-            VALUE "ProductVersion", "3.1.12"
+            VALUE "ProductVersion", "3.1.13"
         END
     END
     BLOCK "VarFileInfo"
@@ -104,7 +82,17 @@
     END
 END
 
-#endif    // English (Australia) resources
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Icon
+//
+
+// Icon with lowest ID value placed first to ensure application icon
+// remains consistent on all systems.
+IDI_ICON1               ICON                    "slade.ico"
+
+#endif    // English (United States) resources
 /////////////////////////////////////////////////////////////////////////////
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/SLADE-3.1.12a/dist/makebuild.ps1 
new/SLADE-3.1.13/dist/makebuild.ps1
--- old/SLADE-3.1.12a/dist/makebuild.ps1        2020-05-28 01:08:34.000000000 
+0200
+++ new/SLADE-3.1.13/dist/makebuild.ps1 2021-06-01 06:32:31.000000000 +0200
@@ -1,4 +1,4 @@
-$version = "3.1.12"
+$version = "3.1.13"
 $rev_short = Invoke-Expression "git.exe rev-parse --short HEAD"
 
 # Check for 7-zip install
@@ -24,11 +24,22 @@
 # Build SLADE
 if ($buildbinaries.ToLower() -eq "y")
 {
+       # Find devenv path (community or professional)
        $devenvpath19 = "${env:ProgramFiles(x86)}\Microsoft Visual 
Studio\2019\Professional\Common7\IDE\devenv.com"
-#      $devenvpath17 = "${env:ProgramFiles(x86)}\Microsoft Visual 
Studio\2017\Professional\Common7\IDE\devenv.com"
-       & $devenvpath19 (resolve-path ..\build\msvc\SLADE.sln).Path /rebuild 
"Release - vcpkg, static|Win32" /project SLADE.vcxproj
-       & $devenvpath19 (resolve-path ..\build\msvc\SLADE.sln).Path /rebuild 
"Release - vcpkg, static|x64" /project SLADE.vcxproj
-#      & $devenvpath17 (resolve-path ..\build\msvc\SLADE.sln).Path /rebuild 
"Release - WinXP|Win32" /project SLADE.vcxproj
+       if (-not (Test-Path $devenvpath19))
+       {
+               $devenvpath19 = "${env:ProgramFiles(x86)}\Microsoft Visual 
Studio\2019\Community\Common7\IDE\devenv.com"
+       }
+       if (-not (Test-Path $devenvpath19))
+       {
+               Write-Host "`nCould not find Visual Studio 2019 path" 
-ForegroundColor Red
+               Exit-PSSession
+       }
+       else
+       {
+               & $devenvpath19 (resolve-path ..\build\msvc\SLADE.sln).Path 
/rebuild "Release - vcpkg, static|Win32" /project SLADE.vcxproj
+               & $devenvpath19 (resolve-path ..\build\msvc\SLADE.sln).Path 
/rebuild "Release - vcpkg, static|x64" /project SLADE.vcxproj
+       }
 }
 
 # Determine release directory + platforms
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/SLADE-3.1.12a/dist/res/config/languages/acs.txt 
new/SLADE-3.1.13/dist/res/config/languages/acs.txt
--- old/SLADE-3.1.12a/dist/res/config/languages/acs.txt 2020-05-28 
01:08:34.000000000 +0200
+++ new/SLADE-3.1.13/dist/res/config/languages/acs.txt  2021-06-01 
06:32:31.000000000 +0200
@@ -160,7 +160,7 @@
        keywords = {
                function, enter, respawn, death, lightning, unloading, 
disconnect, kill,
                fixed, global, net, import, libdefine, library, nocompact, 
nowadauthor,
-               EncryptStrings, static, wadauthor, region, endregion,
+               EncryptStrings, static, wadauthor, region, endregion, reopen,
                
                // Skulltag script types
                BlueReturn, RedReturn, WhiteReturn, Pickup, ClientSide
@@ -207,7 +207,7 @@
                BT_ATTACK, BT_USE, BT_JUMP, BT_CROUCH, BT_TURN180, 
BT_ALTATTACK, BT_RELOAD, 
                BT_ZOOM, BT_SPEED, BT_STRAFE, BT_MOVERIGHT, BT_MOVELEFT, 
BT_BACK, BT_FORWARD, 
                BT_RIGHT, BT_LEFT, BT_LOOKUP, BT_LOOKDOWN, BT_MOVEUP, 
BT_MOVEDOWN, 
-               BT_SHOWSCORES, BT_USER1, BT_USER2, BT_USER3, BT_USER4, 
+               BT_SHOWSCORES, BT_USER1, BT_USER2, BT_USER3, BT_USER4, BT_RUN,
 
                CR_UNTRANSLATED, CR_BRICK, CR_TAN, CR_GRAY, CR_GREY, CR_GREEN, 
CR_BROWN, 
                CR_GOLD, CR_RED, CR_BLUE, CR_ORANGE, CR_WHITE, CR_YELLOW, 
CR_BLACK, 
@@ -377,6 +377,8 @@
                SECF_PUSH, SECF_SILENTMOVE, SECF_DMGTERRAINFX, 
SECF_DMGENDGODMODE, SECF_DMGENDLEVEL,
                SECF_DMGHAZARD,
 
+               SECPART_3D, SECPART_Ceiling, SECPART_Floor,
+
                BLOCKF_CREATURES, BLOCKF_MONSTERS, BLOCKF_PLAYERS, 
BLOCKF_FLOATERS, BLOCKF_HITSCAN,
                BLOCKF_PROJECTILES, BLOCKF_EVERYTHING, BLOCKF_RAILING, 
BLOCKF_USE, BLOCKF_SIGHT, 
                BLOCKF_SOUND,
@@ -440,7 +442,15 @@
 
                // CheckProximity flags
                CPXF_ANCESTOR, CPXF_CHECKSIGHT, CPXF_CLOSEST, CPXF_COUNTDEAD, 
CPXF_DEADONLY, CPXF_EXACT, CPXF_FARTHEST,
-               CPXF_LESSOREQUAL, CPXF_NOZ, CPXF_SETMASTER, CPXF_SETONPTR, 
CPXF_SETTARGET, CPXF_SETTRACER
+               CPXF_LESSOREQUAL, CPXF_NOZ, CPXF_SETMASTER, CPXF_SETONPTR, 
CPXF_SETTARGET, CPXF_SETTRACER,
+
+               // Line_SetAutomapFlags
+               AMLF_Secret, AMLF_DontDraw, AMLF_Mapped, AMLF_Revealed,
+
+               // Line_SetAutomapStyle
+               AMLS_Default, AMLS_OneSided, AMLS_TwoSided, AMLS_FloorDiff, 
AMLS_CeilingDiff, AMLS_ExtraFloor,
+               AMLS_Special, AMLS_Secret, AMLS_NotSeen, AMLS_Locked, 
AMLS_IntraTeleport, AMLS_InterTeleport,
+               AMLS_UnexploredSecret, AMLS_Portal
        }
 
        functions
@@ -581,7 +591,10 @@
                Light_StrobeDoom = "int tag, int u-tics, int l-tics";
                Line_AlignCeiling  = "int lineid, int side";
                Line_AlignFloor = "int lineid, int side";
+               Line_SetAutomapFlags = "int lineid, int setflags, int 
clearflags";
+               Line_SetAutomapStyle = "int lineid, int style";
                Line_SetBlocking = "int lineid, int setflags, int clearflags";
+               Line_SetHealth = "int lineid, int health";
                Line_SetPortalTarget = "int sourceline, int targetline";
                Line_SetTextureOffset = "int id, int x, int y, int side, int 
flags";
                Line_SetTextureScale = "int id, int x, int y, int side, int 
flags";
@@ -635,6 +648,7 @@
                Sector_SetFloorScale2 = "int tag, int x-factor, int y-factor";
                Sector_SetFriction = "int tag, int amount";
                Sector_SetGravity = "int tag, int intpart, int fracpart";
+               Sector_SetHealth = "int tag, int part, int health";
                Sector_SetLink = "int controltag, int linktag, int 
floor/ceiling, int movetype";
                Sector_SetPlaneReflection = "int tag, int floor, int ceiling";
                Sector_SetRotation = "int tag, int floor-angle, int 
ceiling-angle";
@@ -767,6 +781,7 @@
                GetCVarString = "str cvarname";
                GetLevelInfo = "int levelinfo";
                GetLineActivation = "int lineid";
+               GetLineHealth = "int lineid";
                GetLineRowOffset;
                GetLineUDMFFixed = "int lineid, str key";
                GetLineUDMFInt = "int lineid, str key";
@@ -781,6 +796,7 @@
                GetScreenWidth;
                GetSectorCeilingZ = "int tag, int x, int y";
                GetSectorFloorZ = "int tag, int x, int y";
+               GetSectorHealth = "int tag, int part";
                GetSectorLightLevel = "int tag";
                GetSectorUDMFFixed = "int tag, string key";
                GetSectorUDMFInt = "int tag, string key";
@@ -816,7 +832,7 @@
                PlayerIsBot = "int playernumber";
                PlayerNumber;
                PlayMovie = "str moviename - but this function does not work 
anyway";
-               PlaySound = "int tid, str sound, [int channel], [fixed volume], 
[bool looping], [fixed attenuation]";
+               PlaySound = "int tid, str sound, [int channel], [fixed volume], 
[bool looping], [fixed attenuation], [bool local]";
                PolyWait = "int polynum";
                Print = "type:expression";
                PrintBold = "type:expression";
@@ -870,7 +886,9 @@
                SetSectorGlow = "int tag, bool which, int red, int green, int 
blue, int height";
                SetSectorTerrain = "int tag, int whichplane, str terraintype";
                SetSkyScrollSpeed = "int sky, float skyspeed";
+               SetSubtitleNumber = "int num, str sound";
                SetThingSpecial = "int tid, int special, [int arg1], [int 
arg2], [int arg3], [int arg4], [int arg5]";
+               SetTranslation = "int tid, str transname";
                SetUserArray = "int tid, str name, int pos, int value";
                SetUserCVar = "int playernum, str cvarname, int newvalue", "int 
playernum, str cvarname, fixed newvalue", "int playernum, str cvarname, bool 
newvalue";
                SetUserCVarString = "int playernum, str cvarname, str newvalue";
@@ -956,12 +974,14 @@
                GetPlayerAccountName = "unknown parameters list";
                GetPlayerLivesLeft = "int player";
                GetTeamProperty = "int team, int property";
+               GetTimeProperty = "int timestamp, int which, [int utc]";
                IncrementDBEntry = "unknown parameters list";
                IsMultiplayer;
                IsNetworkGame;
                IsOneFlagCTF;
                KickFromGame = "int player, str reason";
                Music_Change = "str music, int pattern";
+               NamedRequestScriptPuke = "str script, [int arg0], [int arg1], 
[int arg2], [int arg3]";
                PlayerArmorPoints;
                PlayerHealth;
                PlayerIsLoggedIn = "int playernumber";
@@ -988,6 +1008,8 @@
                SetPlayerLivesLeft = "int player, int amount";
                SinglePlayer;
                SortDBEntries = "unknown parameters list";
+               Strftime = "int timestamp, str format, [int utc]";
+               SystemTime;
                
                // ZDaemon functions
                GetTeamScore = "int team";
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/SLADE-3.1.12a/dist/res/config/languages/srb2lua.txt 
new/SLADE-3.1.13/dist/res/config/languages/srb2lua.txt
--- old/SLADE-3.1.12a/dist/res/config/languages/srb2lua.txt     2020-05-28 
01:08:34.000000000 +0200
+++ new/SLADE-3.1.13/dist/res/config/languages/srb2lua.txt      2021-06-01 
06:32:31.000000000 +0200
@@ -5,6 +5,10 @@
        comment_end =  "]]", "*/";
        comment_line = "--", "//";
        case_sensitive = true;
+       block_begin = "{";
+       block_end = "}";
+       word_block_begin = "do", "function", "if";
+       word_block_end = "end";
 
        keywords = {
                and, break, continue, do, else, elseif, end, false, for, 
function,
@@ -13,6 +17,10 @@
        }
 
        constants = {
+               false,
+               true,
+               nil,
+
                // userdata types
                valid,
 
@@ -100,6 +108,9 @@
                FRACUNIT,
                FRACBITS,
                TICRATE,
+               NEWTICRATERATIO,
+               NEWTICRATE,
+               MUSICRATE,
                RING_DIST,
                PUSHACCEL,
                MODID,
@@ -112,6 +123,7 @@
                MISSILERANGE,
                ONFLOORZ,
                ONCEILINGZ,
+               INFLIVES,
 
                // translucency levels
                TR_TRANS10,
@@ -125,6 +137,252 @@
                TR_TRANS90,
                NUMTRANSMAPS,
 
+               // frame settings
+               FF_FRAMEMASK,
+               FF_SPR2SUPER,
+               FF_SPR2ENDSTATE,
+               FF_SPR2MIDSTART,
+               FF_TRANSMASK,
+               FF_TRANSSHIFT,
+               FF_TRANS10,
+               FF_TRANS20,
+               FF_TRANS30,
+               FF_TRANS40,
+               FF_TRANS50,
+               FF_TRANS60,
+               FF_TRANS70,
+               FF_TRANS80,
+               FF_TRANS90,
+               FF_FULLBRIGHT,
+               FF_VERTICALFLIP,
+               FF_PAPERSPRITE,
+               FF_ANIMATE,
+               FF_RANDOMANIM,
+               FF_GLOBALANIM,
+               FF_HORIZONTALFLIP,
+
+               // translation colormaps
+               TC_DEFAULT,
+               TC_BOSS,
+               TC_METALSONIC,
+               TC_ALLWHITE,
+               TC_RAINBOW,
+               TC_BLINK,
+               TC_DASHMODE,
+
+               // A_Chase directions
+               DI_NODIR,
+               DI_EAST,
+               DI_NORTHEAST,
+               DI_NORTH,
+               DI_NORTHWEST,
+               DI_WEST,
+               DI_SOUTHWEST,
+               DI_SOUTH,
+               DI_SOUTHEAST,
+               NUMDIRS,
+
+               // damage/death types
+               DMG_WATER,
+               DMG_FIRE,
+               DMG_ELECTRIC,
+               DMG_SPIKE,
+               DMG_NUKE,
+               DMG_INSTAKILL,
+               DMG_DROWNED,
+               DMG_SPACEDROWN,
+               DMG_DEATHPIT,
+               DMG_CRUSHED,
+               DMG_SPECTATOR,
+               DMG_CANHURTSELF,
+               DMG_DEATHMASK,
+
+               // skin flags
+               SF_SUPER,
+               SF_NOSUPERSPIN,
+               SF_NOSPINDASHDUST,
+               SF_HIRES,
+               SF_NOSKID,
+               SF_NOSPEEDADJUST,
+               SF_RUNONWATER,
+               SF_NOJUMPSPIN,
+               SF_NOJUMPDAMAGE,
+               SF_STOMPDAMAGE,
+               SF_MARIODAMAGE,
+               SF_MACHINE,
+               SF_DASHMODE,
+               SF_FASTEDGE,
+               SF_MULTIABILITY,
+               SF_NONIGHTSROTATION,
+               SF_NOSUPERSPRITES,
+
+               // Character abilities
+               CA_NONE,
+               CA_THOK,
+               CA_FLY,
+               CA_GLIDEANDCLIMB,
+               CA_HOMINGTHOK,
+               CA_SWIM,
+               CA_DOUBLEJUMP,
+               CA_FLOAT,
+               CA_SLOWFALL,
+               CA_TELEKINESIS,
+               CA_FALLSWITCH,
+               CA_JUMPBOOST,
+               CA_AIRDRILL,
+               CA_JUMPTHOK,
+               CA_BOUNCE,
+               CA_TWINSPIN,
+               CA2_NONE,
+               CA2_SPINDASH,
+               CA2_GUNSLINGER,
+               CA2_MELEE,
+
+               // player states
+               PST_LIVE,
+               PST_DEAD,
+               PST_REBORN,
+
+               // skin sounds
+               SKSSPIN,
+               SKSPUTPUT,
+               SKSPUDPUD,
+               SKSPLPAN1,
+               SKSPLPAN2,
+               SKSPLPAN3,
+               SKSPLPAN4,
+               SKSPLDET1,
+               SKSPLDET2,
+               SKSPLDET3,
+               SKSPLDET4,
+               SKSPLVCT1,
+               SKSPLVCT2,
+               SKSPLVCT3,
+               SKSPLVCT4,
+               SKSTHOK,
+               SKSSPNDSH,
+               SKSZOOM,
+               SKSSKID,
+               SKSGASP,
+               SKSJUMP,
+
+               // internal player flags
+               PF_FLIPCAM,
+               PF_ANALOGMODE,
+               PF_DIRECTIONCHAR,
+               PF_AUTOBRAKE,
+               PF_GODMODE,
+               PF_NOCLIP,
+               PF_INVIS,
+               PF_ATTACKDOWN,
+               PF_USEDOWN,
+               PF_JUMPDOWN,
+               PF_WPNDOWN,
+               PF_STASIS,
+               PF_JUMPSTASIS,
+               PF_FULLSTASIS,
+               PF_APPLYAUTOBRAKE,
+               PF_STARTJUMP,
+               PF_JUMPED,
+               PF_NOJUMPDAMAGE,
+               PF_STARTDASH,
+               PF_THOKKED,
+               PF_SHIELDABILITY,
+               PF_GLIDING,
+               PF_BOUNCING,
+               PF_SLIDING,
+               PF_TRANSFERTOCLOSEST,
+               PF_DRILLING,
+               PF_GAMETYPEOVER,
+               PF_TAGIT,
+               PF_FORCESTRAFE,
+               PF_CANCARRY,
+               PF_FINISHED,
+
+               // player animations
+               PA_ETC,
+               PA_IDLE,
+               PA_EDGE,
+               PA_WALK,
+               PA_RUN,
+               PA_DASH,
+               PA_PAIN,
+               PA_ROLL,
+               PA_JUMP,
+               PA_SPRING,
+               PA_FALL,
+               PA_ABILITY,
+               PA_ABILITY2,
+               PA_RIDE,
+
+               // shield types
+               SH_NONE,
+               SH_PITY,
+               SH_WHIRLWIND,
+               SH_ARMAGEDDON,
+               SH_PINK,
+               SH_ELEMENTAL,
+               SH_ATTRACT,
+               SH_FLAMEAURA,
+               SH_BUBBLEWRAP,
+               SH_THUNDERCOIN,
+               SH_FORCE,
+               SH_FORCEHP,
+               SH_FIREFLOWER,
+               SH_STACK,
+               SH_NOSTACK,
+               SH_PROTECTFIRE,
+               SH_PROTECTWATER,
+               SH_PROTECTELECTRIC,
+               SH_PROTECTSPIKE,
+
+               // carry types
+               CR_NONE,
+               CR_GENERIC,
+               CR_PLAYER,
+               CR_NIGHTSMODE,
+               CR_NIGHTSFALL,
+               CR_BRAKGOOP,
+               CR_ZOOMTUBE,
+               CR_ROPEHANG,
+               CR_MACESPIN,
+               CR_MINECART,
+               CR_ROLLOUT,
+               CR_PTERABYTE,
+
+               // emerald flags
+               EMERALD1,
+               EMERALD2,
+               EMERALD3,
+               EMERALD4,
+               EMERALD5,
+               EMERALD6,
+               EMERALD7,
+
+               // button flags
+               BT_WEAPONMASK,
+               BT_WEAPONNEXT,
+               BT_WEAPONPREV,
+               BT_ATTACK,
+               BT_USE,
+               BT_CAMLEFT,
+               BT_CAMRIGHT,
+               BT_TOSSFLAG,
+               BT_JUMP,
+               BT_FIRENORMAL,
+               BT_CUSTOM1,
+               BT_CUSTOM2,
+               BT_CUSTOM3,
+
+               // current weapon
+               WEP_AUTO,
+               WEP_BOUNCE,
+               WEP_SCATTER,
+               WEP_GRENADE,
+               WEP_EXPLODE,
+               WEP_RAIL,
+               NUM_WEAPONS,
+
                // kick reasons
                KR_KICK,
                KR_BAN,
@@ -135,14 +393,132 @@
 
                // slope flags
                SL_NOPHYSICS,
-               SL_NODYNAMIC,
-               SL_ANCHORVERTEX,
-               SL_VERTEXSLOPE,
-
-               // save override
-               SAVE_NEVER,
-               SAVE_DEFAULT,
-               SAVE_ALWAYS
+               SL_DYNAMIC,
+
+               // emblem flags
+               GE_NIGHTSPULL,
+               GE_NIGHTSITEM,
+               ME_ALLEMERALDS,
+               ME_ULTIMATE,
+               ME_PERFECT,
+
+               // jingle types
+               JT_NONE,
+               JT_OTHER,
+               JT_MASTER,
+               JT_1UP,
+               JT_SHOES,
+               JT_INV,
+               JT_MINV,
+               JT_DROWN,
+               JT_SUPER,
+               JT_GOVER,
+               JT_NIGHTSTIMEOUT,
+               JT_SSTIMEOUT,
+
+               // player powers
+               pw_invulnerability,
+               pw_sneakers,
+               pw_flashing,
+               pw_shield,
+               pw_carry,
+               pw_tailsfly,
+               pw_underwater,
+               pw_spacetime,
+               pw_extralife,
+               pw_pushing,
+               pw_justsprung,
+               pw_noautobrake,
+               pw_super,
+               pw_gravityboots,
+               pw_infinityring,
+               pw_automaticring,
+               pw_bouncering,
+               pw_scatterring,
+               pw_grenadering,
+               pw_explosionring,
+               pw_railring,
+               pw_emeralds,
+               pw_nights_superloop,
+               pw_nights_helper,
+               pw_nights_linkfreeze,
+               pw_nocontrol,
+               pw_dye,
+               pw_justlaunched,
+               pw_ignorelatch,
+
+               // gametype rules
+               GTR_CAMPAIGN,
+               GTR_RINGSLINGER,
+               GTR_SPECTATORS,
+               GTR_LIVES,
+               GTR_TEAMS,
+               GTR_FIRSTPERSON,
+               GTR_POWERSTONES,
+               GTR_TEAMFLAGS,
+               GTR_FRIENDLY,
+               GTR_SPECIALSTAGES,
+               GTR_EMERALDTOKENS,
+               GTR_EMERALDHUNT,
+               GTR_RACE,
+               GTR_TAG,
+               GTR_POINTLIMIT,
+               GTR_TIMELIMIT,
+               GTR_OVERTIME,
+               GTR_HURTMESSAGES,
+               GTR_FRIENDLYFIRE,
+               GTR_STARTCOUNTDOWN,
+               GTR_HIDEFROZEN,
+               GTR_BLINDFOLDED,
+               GTR_RESPAWNDELAY,
+               GTR_PITYSHIELD,
+               GTR_DEATHPENALTY,
+               GTR_NOSPECTATORSPAWN,
+               GTR_DEATHMATCHSTARTS,
+               GTR_SPAWNINVUL,
+               GTR_SPAWNENEMIES,
+               GTR_ALLOWEXIT,
+               GTR_NOTITLECARD,
+               GTR_CUTSCENES,
+
+               // P_FlashPal palettes
+               PAL_WHITE,
+               PAL_MIXUP,
+               PAL_RECYCLE,
+               PAL_NUKE,
+
+               // TypeOfLevel flags
+               TOL_SP,
+               TOL_COOP,
+               TOL_COMPETITION,
+               TOL_RACE,
+               TOL_MATCH,
+               TOL_TAG,
+               TOL_CTF,
+               TOL_CUSTOM,
+               TOL_2D,
+               TOL_MARIO,
+               TOL_NIGHTS,
+               TOL_ERZ3,
+               TOL_XMAS,
+
+               // Linedef flags
+               ML_IMPASSIBLE,
+               ML_BLOCKMONSTERS,
+               ML_TWOSIDED,
+               ML_DONTPEGTOP,
+               ML_DONTPEGBOTTOM,
+               ML_EFFECT1,
+               ML_NOCLIMB,
+               ML_EFFECT2,
+               ML_EFFECT3,
+               ML_EFFECT4,
+               ML_EFFECT5,
+               ML_NETONLY,
+               ML_NONET,
+               ML_EFFECT6,
+               ML_BOUNCY,
+               ML_TFERLINE,
        }
 
        functions {
@@ -152,8 +528,9 @@
                freeslot = "string resource, [string resource2], [...]";
                super = "mobj_t actor, int var1, int var2";
                addHook = "string hook, function(?) fn, [int extra]";
-               EvalMath = "string word";
                IsPlayerAdmin = "player_t player";
+               userdataType = "* v";
+               reserveLuabanks;
 
                // math
                abs = "int a";
@@ -205,7 +582,10 @@
 
                // p_mobj
                P_SpawnMobj = "fixed x, fixed y, fixed z, int type";
+               P_SpawnMobjFromMobj = "mobj_t origin, fixed x, fixed y, fixed 
z, int type";
                P_RemoveMobj = "mobj_t mobj";
+               P_IsValidSprite2 = "mobj_t mobj, int sprite2";
+               P_SpawnLockOn = "player_t player, mobj_t target, state_t state";
                P_SpawnMissile = "mobj_t source, mobj_t dest, int type";
                P_SpawnXYZMissile = "mobj_t source, mobj_t dest, int type, 
fixed x, fixed y, fixed z";
                P_SpawnPointMissile = "mobj_t source, fixed dest_x, fixed 
dest_y, fixed dest_z, int type, fixed x, fixed y, fixed z";
@@ -235,18 +615,23 @@
                P_GetPlayerSpinHeight = "player_t player";
                P_GetPlayerControlDirection = "player_t player";
                P_AddPlayerScore = "player_t player, int amount";
+               P_StealPlayerScore = "player_t player, int amount";
+               P_GetJumpFlags = "player_t player";
                P_PlayerInPain = "player_t player";
                P_DoPlayerPain = "player_t player, [mobj_t source], [mobj_t 
inflictor]";
                P_ResetPlayer = "player_t player";
+               P_PlayerCanDamage = "player_t player, mobj_t mobj";
                P_IsObjectOnGround = "mobj_t mobj";
                P_SetObjectMomZ = "mobj_t mobj, fixed momz, [boolean 
relative?]";
                P_RestoreMusic = "player_t player";
+               P_SpawnShieldOrb = "player_t player";
                P_SpawnGhostMobj = "mobj_t mobj";
                P_GivePlayerRings = "player_t player, int amount";
                P_GivePlayerLives = "player_t player, int amount";
+               P_GiveCoopLives = "player_t player, int amount, [boolean 
playsound]";
                P_ResetScore = "player_t player";
                P_BlackOw = "player_t player";
-               P_ElementalFireTrail = "player_t player";
+               P_ElementalFire = "player_t player";
                P_DoPlayerExit = "player_t player";
                P_InstaThrust = "mobj_t mobj, angle angle, fixed move";
                P_ReturnThrustX = "mobj_t mobj, angle angle, fixed move";
@@ -257,10 +642,16 @@
                P_SpawnThokMobj = "player_t player";
                P_SpawnSpinMobj = "player_t player, int type";
                P_Telekinesis = "player_t player, fixed_t thrust, fixed_t 
range";
+               P_SwitchShield = "player_t player, int shield";
+               P_PlayJingle = "player_t player, int jingletype";
+               P_PlayJingleMusic = "player_t player, string musname, [int 
musflags], [boolean looping], [int jingletype]";
                P_InQuicksand = "mobj_t mobj";
                P_InSpaceSector = "mobj_t mobj";
                P_DoJumpShield = "player_t player";
+               P_DoBubbleBounce = "player_t player";
                P_IsObjectInGoop = "mobj_t mobj";
+               P_SpawnSkidDust = "player_t player, fixed_t radius, [int 
sound]";
+               P_Earthquake = "mobj_t inflictor, mobj_t source, fixed_t 
radius";
 
                // r_data
                R_TextureNumForName = "string name";
@@ -275,13 +666,12 @@
                P_BounceMove = "mobj_t mo";
                P_CheckSight = "mobj_t source, mobj_t target";
                P_CheckHoopPosition = "mobj_t hoop, fixed x, fixed y, fixed z, 
fixed radius";
-               P_RadiusAttack = "mobj_t inflictor, mobj_t source, fixed 
radius";
+               P_RadiusAttack = "mobj_t inflictor, mobj_t source, fixed 
radius, [int damagetype], [boolean sightcheck]";
                P_FloorzAtPos = "fixed x, fixed y, fixed z, fixed height";
                P_DoSpring = "mobj_t spring, mobj_t object";
 
                // p_inter
                P_RemoveShield = "player_t player";
-               P_SpawnShieldOrb = "player_t player";
                P_DamageMobj = "mobj_t target, [mobj_t inflictor], [mobj_t 
source], [int damage]";
                P_KillMobj = "mobj_t target, [mobj_t inflictor], [mobj_t 
source]";
                P_PlayerRingBurst = "player_t player, [int numrings]";
@@ -295,6 +685,7 @@
                P_PlayLivesJingle = "player_t player";
                P_CanPickupItem = "player_t player, [boolean weapon?]";
                P_DoNightsScore = "player_t player";
+               P_DoMatchSuper = "player_t player";
 
                // p_spec
                P_Thrust = "mobj_t mobj, angle angle, fixed move";
@@ -306,13 +697,14 @@
                P_SwitchWeather = "int weather, [player_t player]";
                P_LinedefExecute = "int tag, [mobj_t actor], [sector_t caller]";
                P_SpawnLightningFlash = "sector_t sector";
-               P_FadeLight = "int tag, int destvalue, int speed";
+               P_FadeLight = "int tag, int destvalue, int speed, [boolean 
ticbased, [boolean force]";
                P_ThingOnSpecial3DFloor = "mobj_t mobj";
                P_SetupLevelSky = "int skynum, [player player]";
                P_SetSkyboxMobj = "mobj_t mobj, [boolean centerpoint?], 
[player_t user]";
                P_StartQuake = "fixed intensity, int time, [table{x/y/z} 
epicenter], [fixed radius]";
                P_IsFlagAtBase = "int type";
                EV_CrumbleChain = "sector_t sector, ffloor_t rover";
+               EV_StartCrumble = "sector_t sector, ffloor_t rover, [boolean 
floating], [player_t player], [fixed origalpha], [boolean crumblereturn]";
 
                // r_defs
                R_PointToAngle = "fixed x, fixed y";
@@ -325,24 +717,39 @@
                R_Char2Frame = "string char";
                R_Frame2Char = "int frame";
                R_SetPlayerSkin = "player_t player, int/string skin";
+               R_SkinUsable = "player_t player, int/string skin";
+
+               // r_draw
+               R_GetColorByName = "string colorname";
+               R_GetNameByColor = "int color";
 
                // s_sound
                S_StartSound = "mobj_t origin, int soundnum, [player_t player]";
                S_StartSoundAtVolume = "mobj_t origin, int soundnum, int 
volume, [player_t player]";
                S_StopSound = "mobj_t origin";
-               S_ChangeMusic = "int musicnum, [boolean looping?], [player_t 
player]";
+               S_ChangeMusic = "int musicnum, [[boolean looping?, [player_t 
player, [int tracknum, [int position, [int prefadems], [int fadeinms]";
                S_SpeedMusic = "fixed musicspeed, [player_t player]";
                S_StopMusic = "[player_t player]";
+               S_SetInternalMusicVolume = "int volume, [player_t player]";
+               S_StopFadingMusic = "[player_t player]";
+               S_FadeMusic = "int target_volume, int ms, [player_t player]";
+               S_FadeOutStopMusic = "int ms, [player_t player]";
                S_OriginPlaying = "mobj_t origin";
                S_IdPlaying = "int soundnum";
                S_SoundPlaying = "mobj_t origin, int soundnum";
+               S_StartMusicCaption = "player_t player, string caption, int 
lifespan";
+               S_GetMusicLength;
+               S_GetMusicPosition;
+               S_SetMusicPosition = "int position";
 
                // g_game
                G_BuildMapName = "int map";
+               G_EnoughPlayersFinished;
                G_DoReborn = "int playernum";
                G_ExitLevel = "[int nextmap], [boolean skipstats]";
-               G_SetCustomExitVars = "[int nextmap], [boolean skipstats]";
+               G_SetCustomExitVars = "[int nextmap], [int skipstats]";
                G_IsSpecialStage = "int map";
+               G_AddGametype = "table t";
                G_GametypeUsesLives;
                G_GametypeHasTeams;
                G_GametypeHasSpectators;
@@ -360,6 +767,7 @@
                COM_BufAddText = "player_t player, string text";
                COM_BufInsertText = "player_t player, string text";
                CV_RegisterVar = "table{string name/string defaultvalue/int 
flags/PossibleValue pv/function() fn}, [...]";
+               CV_FindVar = "string var";
                CONS_Printf = "player_t player, string text";
 
                // blockmap search
@@ -367,7 +775,7 @@
 
                // iterators
                players.iterate;
-               thinkers.iterate = "string type";
+               mobjs.iterate;
                skins.iterate;
                sectors.iterate;
                subsectors.iterate;
@@ -383,21 +791,36 @@
                // technically these are a part of the video code but you can 
rename that whatever you want...
                draw = "int x, int y, patch patch, [int flags], [colormap c]";
                drawScaled = "fixed x, fixed y, fixed scale, patch patch, [int 
flags], [colormap c]";
+               drawStreched = "fixed x, fixed y, fixed hscale, fixed vscale, 
patch_t patch, [int flags], [colormap c]";
                drawNum = "int x, int y, int num, [int flags]";
                drawPaddedNum = "int x, int y, int num, [int digits], [int 
flags]";
                drawFill = "[int x], [int y], [int w], [int h], [int color]";
                drawString = "fixed x, fixed y, string str, [int flags], 
[string alignment]";
+               drawNameTag = "int x, int y, string text, [int flags], [int 
basecolor], [int outlinecolor]";
+               drawScaledNameTag = "int x, int y, string text, [int flags], 
[int scale], [int basecolor], [int outlinecolor]";
                patchExists = "string name";
                cachePatch = "string name";
                getColormap = "[string/int skin], [int color]";
+               fadeScreen = "int color, int strength";
+               getSpritePatch = "int sprite, [int frame], [int angle]";
+               getSprite2Patch = "string/int skin, string/int sprite2, 
[boolean super?], [int frame], [int rotation], [angle rollangle]";
                stringWidth = "string string, [int flags], [string widthtype]";
-               getLocalTransFlag;
+               nameTagWidth = "string text";
+               localTransFlag;
+               userTransFlag;
+               RandomFixed;
+               RandomByte;
+               RandomKey = "int a";
+               RandomRange = "int a";
+               SignedRandom;
+               RandomChance = "fixed p";
 
                // basic Lua
                assert = "boolean assert, [string errormsg]";
                collectgarbage = "[string opt], [string arg]";
                error = "string message, [int level]";
-               gcinfo = "(unknown)";
+               dofile = "string file";
+               gcinfo;
                getfenv = "function(*) fn";
                getmetatable = "object obj";
                ipairs = "table{} t";
@@ -415,6 +838,11 @@
                type = "* v";
                unpack = "table{} list, [int start], [int end]";
                xpcall = "function(?) call, function(boolean status) errortrap";
+               io.open = "string filename, [string mode], function callback";
+               io.openlocal = "string filename, [string mode], function 
callback";
+               io.close = "file file";
+               io.tmpfile;
+               io.type = "* obj";
 
                coroutine.create = "function(?) fn";
                coroutine.resume = "coroutine co, [* val], [...]";
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/SLADE-3.1.12a/dist/res/config/languages/zdoom.txt 
new/SLADE-3.1.13/dist/res/config/languages/zdoom.txt
--- old/SLADE-3.1.12a/dist/res/config/languages/zdoom.txt       2020-05-28 
01:08:34.000000000 +0200
+++ new/SLADE-3.1.13/dist/res/config/languages/zdoom.txt        2021-06-01 
06:32:31.000000000 +0200
@@ -186,14 +186,15 @@
 
        keywords = {
                // Generic
-               lookup,
+               lookup, include,
                
                // Cluster
                Cluster, ClusterDef, EnterText, ExitText, ExitTextIsLump, 
Music, Flat, Pic, Hub, 
-               AllowIntermission,
+               AllowIntermission, entertextislump,
                
                // Episode
                ClearEpisodes, Episode, Name, PicName, Key, Remove, 
NoSkillMenu, Optional, Extended,
+               teaser,
                
                // Map
                Map, DefaultMap, AddDefaultMap, GameDefaults, 
@@ -221,6 +222,23 @@
                Translator, UnFreezeSinglePlayerConversations, UsePlayerStartZ, 
VertWallShade,
                ForceFakeContrast, PrecacheTextures, PrecacheClasses, 
HazardColor, HazardFlash,
                AddEventHandlers, EventHandlers, TextMusic, TextFlat, TextPic,
+               additive_scrollers, author, brightfog, cd_end1_track, 
cd_end2_track, cd_end3_track,
+               cd_intermission_track, cd_start_track, cd_title_track, 
compat_anybossdeath,
+               compat_badangles, compat_boomscroll, compat_checkswitchrange, 
compat_corpsegibs,
+               compat_crossdropoff, compat_dehhealth, compat_dropoff, 
compat_explode1, compat_explode2,
+               compat_floormove, compat_invisibility, compat_light, 
compat_limitpain,
+               compat_maskedmidtex, compat_mbfmonstermove, compat_minotaur, 
compat_missileclip,
+               compat_multiexit, compat_mushroom, compat_noblockfriends, 
compat_nodoorlight,
+               compat_nopassover, compat_notossdrops, compat_pointonline, 
compat_polyobj,
+               compat_pushwindow, compat_railing, compat_ravenscroll, 
compat_scriptwait,
+               compat_sectorsounds, compat_shorttex, 
compat_silent_instant_floors, compat_soundcutoff,
+               compat_soundtarget, compat_spritesort, compat_stairs, 
compat_teleport, compat_trace,
+               compat_useblocking, edata, endofgame, forceworldpanning, 
fs_nocheckposition,
+               interpic, killeractivatesdeathspecials, loadacs, mapintermusic, 
needclustertext,
+               noclustertext, noinfiniteflightpowerup, nomonsterfallingdamage, 
nostatistics,
+               notexturefill, partime, pausemusicinmenus, resetitems, 
skyrotate2, sndinfo, sndseq,
+               soundinfo, specialaction_lowerfloortohighest, warptrans, 
wrapmidtextures,
+               propermonsterfallingdamage, disableskyboxao, enableskyboxao,
 
                // GZDoom
                FogDensity, OutsideFogDensity, SkyFog, LightMode, 
NoColoredSpriteLighting, SkyRotate, PixelRatio,
@@ -230,7 +248,8 @@
                Skill, ClearSkills, AmmoFactor, DropAmmoFactor, 
DoubleAmmoFactor, DamageFactor, RespawnTime, RespawnLimit,
                Aggressiveness, SpawnFilter, ACSReturn, Key, MustConfirm, Name, 
PlayerClassName, PicName, TextColor, EasyBossBrain,
                FastMonsters, SlowMonsters, DisableCheats, AutoUseHealth, 
ReplaceActor, MonsterHealth, FriendlyHealth, NoPain,
-               DefaultSkill, ArmorFactor, EasyKey, HealthFactor, 
KickbackFactor, NoMenu,
+               DefaultSkill, ArmorFactor, EasyKey, HealthFactor, 
KickbackFactor, NoMenu, baby, easy, hard, nightmare, normal,
+               playerrespawn, SpawnMulti, InstantReaction,
 
                // GameInfo definitions
                GameInfo, AddCreditPage, AddInfoPage, AddPlayerClasses, 
AddQuitMessages, AdvisoryTime, Border, BackpackType,
@@ -244,18 +263,22 @@
                NoRandomPlayerclass, StatScreen_EnteringPatch, 
StatScreen_FinishedPatch, StatScreen_MapNameFont, NightmareFast,
                DontCrunchCorpses, CheatKey, ForceKillScripts, MessageBoxClass, 
StatusBarClass, DefaultConversationMenuClass,
                StatScreen_FinishedFont, StatScreen_EnteringFont, Dialogue, 
StatScreen_Single, StatScreen_Coop, StatScreen_DM,
-               BlurAmount, CorrectPrintBold, MenuSliderColor,
+               BlurAmount, CorrectPrintBold, MenuSliderColor, althudclass, 
forcenogfxsubstitution, forcetextinmenus,
+               fullscreenautoaspect, nomergepickupmsg, normforwardmove, 
normsidemove, statscreen_authorfont,
+               statscreen_contentfont, menusliderbackcolor, hidepartimes,
 
                // Intermission definitions
                Intermission, Link, Cast, Fader, GotoTitle, Image, Scroller, 
TextScreen, Wiper, Background, CDMusic, Draw,
                DrawConditional, Music, Sound, Time, CastClass, CastName, 
AttackSound, FadeType, Background2, InitialDelay,
                ScrollDirection, ScrollTime, Position, Text, TextColor, 
TextDelay, TextLump, TextSpeed, WipeType,
+               down, left, right, up, fadein, fadeout, burn, crossfade, 
default, melt, subtitle,
 
                // Automap
                Automap, Automap_Overlay, AlmostBackgroundColor, Base, 
CeilingDiffWallColor, ExtraFloorWallColor, FloorDiffWallColor,
                GridColor, InterTeleportColor, IntraTeleportColor, LockedColor, 
NotSeenColor, SecretSectorColor, SecretWallColor,
                ShowLocks, SpecialWallColor, ThingColor, ThingColor_CountItem, 
ThingColor_Friend, ThingColor_Item, ThingColor_Monster,
                ThingColor_NocountMonster, TwoSidedWallColor, WallColor, 
XHairColor, YourColor,
+               false, true, portalcolor, unexploredsecretcolor,
 
                // Thing editor numbers
                DoomEdNums, NoSkillFlags,
@@ -281,25 +304,25 @@
        keyword_link = "http://zdoom.org/wiki/MENUDEF";;
        constant_link = "http://zdoom.org/wiki/MENUDEF";;
        function_link = "http://zdoom.org/wiki/MENUDEF";;
-       blocks = "listmenu", "optionmenu", addoptionmenu, "optionvalue", 
"optionstring";
+       blocks = "listmenu", "addlistmenu", "optionmenu", addoptionmenu, 
"optionvalue", "optionstring";
        
        keywords = { 
-               ListMenu, OptionMenu, AddOptionMenu, OptionValue, OptionString, 
+               ListMenu, AddListMenu, OptionMenu, AddOptionMenu, OptionValue, 
OptionString, 
                DefaultListMenu, DefaultOptionMenu, OptionMenuSettings, 
                Font, Linespacing, LabelOffset, PlayerDisplay, Position, 
Selector, StaticText, 
                StaticTextSwitchable, ScrollTop, SafeCommand, ColorPicker, 
Class, ScreenResolution, 
                StaticPatch, Control, Option, Slider, PatchItem, TextItem, 
Submenu, Command,
                NetgameMessage, StaticPatchCentered, StaticTextCentered, 
MouseWindow, CenterMenu,
                Title, PlayerNameBox, ValueText, MapControl, Else, TextField, 
NumberField,
-               ScaleSlider
+               ScaleSlider, Size, AnimatedTransition, FlagOption, Before, After
        }
        
        functions { ifgame = "game, [...]"; ifoption = "option, [...]"; }
        
        constants = { 
                doom, heretic, hexen, strife, chex, readthis, swapmenu, 
windows, unix, mac,
-               LoadMenu, SaveMenu, PlayerMenu, JoystickConfigMenu, 
-               GameplayMenu, CompatibilityMenu, VideoModeMenu, 
+               openal, LoadMenu, SaveMenu, PlayerMenu, JoystickConfigMenu, 
+               GameplayMenu, CompatibilityMenu, VideoModeMenu,
        }
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/SLADE-3.1.12a/dist/res/config/ports/include/flags_zdoom.cfg 
new/SLADE-3.1.13/dist/res/config/ports/include/flags_zdoom.cfg
--- old/SLADE-3.1.12a/dist/res/config/ports/include/flags_zdoom.cfg     
2020-05-28 01:08:34.000000000 +0200
+++ new/SLADE-3.1.13/dist/res/config/ports/include/flags_zdoom.cfg      
2021-06-01 06:32:31.000000000 +0200
@@ -91,6 +91,18 @@
                value   = 16384;
                udmf    = "standing";
        }
+       
+       flag "Count as Secret"
+       {
+               value   = 524288;
+               udmf    = "countsecret";
+       }
+       
+       flag "Does Not Count"
+       {
+               value   = 2097152;
+               udmf    = "nocount";
+       }
 }
 
 line_flags
@@ -375,4 +387,4 @@
                udmf    = "blockeverything";
        }
 }
-#endif // !NAMESPACE_ZDOOM
\ No newline at end of file
+#endif // !NAMESPACE_ZDOOM
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/SLADE-3.1.12a/net.mancubus.SLADE.metainfo.xml 
new/SLADE-3.1.13/net.mancubus.SLADE.metainfo.xml
--- old/SLADE-3.1.12a/net.mancubus.SLADE.metainfo.xml   2020-05-28 
01:08:34.000000000 +0200
+++ new/SLADE-3.1.13/net.mancubus.SLADE.metainfo.xml    2021-06-01 
06:32:31.000000000 +0200
@@ -58,6 +58,7 @@
                </screenshot>
        </screenshots>
        <releases>
+               <release date="2021-06-01" version="3.1.13"/>
                <release date="2020-05-26" version="3.1.12"/>
                <release date="2020-03-03" version="3.1.11"/>
                <release date="2020-02-20" version="3.1.10"/>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/SLADE-3.1.12a/src/Application/App.cpp 
new/SLADE-3.1.13/src/Application/App.cpp
--- old/SLADE-3.1.12a/src/Application/App.cpp   2020-05-28 01:08:34.000000000 
+0200
+++ new/SLADE-3.1.13/src/Application/App.cpp    2021-06-01 06:32:31.000000000 
+0200
@@ -71,7 +71,7 @@
 std::thread::id main_thread_id;
 
 // Version
-Version version_num{ 3, 1, 12, 0 };
+Version version_num{ 3, 1, 13, 0 };
 
 // Directory paths
 string dir_data = "";
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/SLADE-3.1.12a/src/CMakeLists.txt 
new/SLADE-3.1.13/src/CMakeLists.txt
--- old/SLADE-3.1.12a/src/CMakeLists.txt        2020-05-28 01:08:34.000000000 
+0200
+++ new/SLADE-3.1.13/src/CMakeLists.txt 2021-06-01 06:32:31.000000000 +0200
@@ -162,6 +162,11 @@
 # enable SSE instructions for dumb library
 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_USE_SSE -msse")
 
+if(USE_SANITIZER)
+       set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address")
+       set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address")
+endif(USE_SANITIZER)
+
 # External libraries are compiled separately to enable unity builds
 add_subdirectory(External)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/SLADE-3.1.12a/src/General/ResourceManager.cpp 
new/SLADE-3.1.13/src/General/ResourceManager.cpp
--- old/SLADE-3.1.12a/src/General/ResourceManager.cpp   2020-05-28 
01:08:34.000000000 +0200
+++ new/SLADE-3.1.13/src/General/ResourceManager.cpp    2021-06-01 
06:32:31.000000000 +0200
@@ -31,6 +31,7 @@
 //
 // ----------------------------------------------------------------------------
 #include "Main.h"
+#include "Archive/ArchiveEntry.h"
 #include "ResourceManager.h"
 #include "Archive/ArchiveManager.h"
 #include "General/Console/Console.h"
@@ -296,7 +297,7 @@
        removeArchiveFromMap(satextures_fp_, archive);
 
        // Remove any textures in the archive
-       for (auto& i : textures_)
+       for (auto& i : composites_)
                i.second.remove(archive);
 
        // Announce resource update
@@ -408,7 +409,7 @@
                }
 
                // Check for stand-alone texture entry
-               if (entry->isInNamespace("textures") || 
entry->isInNamespace("hires"))
+               if (entry->isInNamespace("textures"))
                {
                        satextures_[name].add(entry);
                        if (!entry->getParent()->isTreeless())
@@ -418,7 +419,10 @@
 
                        // Add name to hash table
                        
ResourceManager::doom64_hash_table_[getTextureHash(name)] = name;
-
+               }
+               else if (entry->isInNamespace("hires"))
+               { // Handle hi-res textures
+                       hires_[name].add(entry);
                }
        }
 
@@ -452,7 +456,7 @@
                for (unsigned a = 0; a < tx.nTextures(); a++)
                {
                        tex = tx.getTexture(a);
-                       textures_[tex->getName()].add(tex, entry->getParent());
+                       composites_[tex->getName()].add(tex, 
entry->getParent());
                }
        }
 }
@@ -509,7 +513,7 @@
 
                // Remove all texture resources
                for (unsigned a = 0; a < tx.nTextures(); a++)
-                       
textures_[tx.getTexture(a)->getName()].remove(entry->getParent());
+                       
composites_[tx.getTexture(a)->getName()].remove(entry->getParent());
        }
 }
 
@@ -562,7 +566,7 @@
 void ResourceManager::getAllTextures(vector<TextureResource::Texture*>& list, 
Archive* priority, Archive* ignore)
 {
        // Add all primary textures to the list
-       for (auto& i : textures_)
+       for (auto& i : composites_)
        {
                // Skip if no entries
                if (i.second.length() == 0)
@@ -602,7 +606,7 @@
 void ResourceManager::getAllTextureNames(vector<string>& list)
 {
        // Add all primary textures to the list
-       for (auto& i : textures_)
+       for (auto& i : composites_)
                if (i.second.length() > 0)      // Ignore if no entries
                        list.push_back(i.first);
 }
@@ -725,24 +729,37 @@
        return nullptr;
 }
 
+ArchiveEntry* ResourceManager::getHiresEntry(const string& texture, Archive* 
priority)
+{
+       // Hi-res textures can only be used with a short name
+       ArchiveEntry* entry = hires_[texture.Upper()].getEntry(priority, 
"hires", true);
+       if (entry)
+               return entry;
+       return nullptr;
+}
+
 // ----------------------------------------------------------------------------
 // ResourceManager::getTexture
 //
 // Returns the most appropriate managed texture for [texture], or nullptr if no
 // match found
 // ----------------------------------------------------------------------------
-CTexture* ResourceManager::getTexture(const string& texture, Archive* 
priority, Archive* ignore)
+CTexture* ResourceManager::getTexture(const string& texture, const string& 
type, Archive* priority, Archive* ignore)
 {
        // Check texture resource with matching name exists
-       TextureResource& res = textures_[texture.Upper()];
+       TextureResource& res = composites_[texture.Upper()];
        if (res.textures_.empty())
                return nullptr;
 
        // Go through resource textures
-       CTexture* tex = &res.textures_[0].get()->tex;
+       CTexture* tex = nullptr;
        Archive* parent = res.textures_[0].get()->parent;
        for (auto& res_tex : res.textures_)
        {
+               // Skip if it's not the desired type
+               if (type != "" && res_tex->tex.getType() != type)
+                       continue;
+
                // Skip if it's in the 'ignore' archive
                if (res_tex->parent == ignore)
                        continue;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/SLADE-3.1.12a/src/General/ResourceManager.h 
new/SLADE-3.1.13/src/General/ResourceManager.h
--- old/SLADE-3.1.12a/src/General/ResourceManager.h     2020-05-28 
01:08:34.000000000 +0200
+++ new/SLADE-3.1.13/src/General/ResourceManager.h      2021-06-01 
06:32:31.000000000 +0200
@@ -1,5 +1,6 @@
 #pragma once
 
+#include "Archive/ArchiveEntry.h"
 #include "common.h"
 #include "Archive/Archive.h"
 #include "General/ListenerAnnouncer.h"
@@ -104,7 +105,8 @@
        ArchiveEntry*   getPatchEntry(const string& patch, const string& nspace 
= "patches", Archive* priority = nullptr);
        ArchiveEntry*   getFlatEntry(const string& flat, Archive* priority = 
nullptr);
        ArchiveEntry*   getTextureEntry(const string& texture, const string& 
nspace = "textures", Archive* priority = nullptr);
-       CTexture*               getTexture(const string& texture, Archive* 
priority = nullptr, Archive* ignore = nullptr);
+       ArchiveEntry*   getHiresEntry(const string& texture, Archive* priority 
= nullptr);
+       CTexture*               getTexture(const string& texture, const string& 
type = "", Archive* priority = nullptr, Archive* ignore = nullptr);
        uint16_t                getTextureHash(const string& name);
 
        void    onAnnouncement(Announcer* announcer, string event_name, 
MemChunk& event_data) override;
@@ -123,7 +125,8 @@
        EntryResourceMap        satextures_;    // Stand Alone textures (e.g., 
between TX_ or T_ markers)
        EntryResourceMap        satextures_fp_;
        //EntryResourceMap      satextures_fp_only_; // Probably not needed
-       TextureResourceMap      textures_;              // Composite textures 
(defined in a TEXTUREx/TEXTURES lump)
+       EntryResourceMap        hires_;
+       TextureResourceMap      composites_;            // Composite textures 
(defined in a TEXTUREx/TEXTURES lump)
 
        static ResourceManager* instance_;
        static string                   doom64_hash_table_[65536];
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/SLADE-3.1.12a/src/Graphics/CTexture/CTexture.cpp 
new/SLADE-3.1.13/src/Graphics/CTexture/CTexture.cpp
--- old/SLADE-3.1.12a/src/Graphics/CTexture/CTexture.cpp        2020-05-28 
01:08:34.000000000 +0200
+++ new/SLADE-3.1.13/src/Graphics/CTexture/CTexture.cpp 2021-06-01 
06:32:31.000000000 +0200
@@ -711,7 +711,7 @@
 bool CTexture::parse(Tokenizer& tz, string type)
 {
        // Check if optional
-       if (tz.advIfNext("optional"))
+       if (tz.advIfNextNC("optional"))
                optional = true;
 
        // Read basic info
@@ -1090,7 +1090,7 @@
 
                // Otherwise, try the resource manager
                // TODO: Something has to be ignored here. The entire archive 
or just the current list?
-               CTexture* tex = 
theResourceManager->getTexture(patch->getName(), parent);
+               CTexture* tex = 
theResourceManager->getTexture(patch->getName(), "", parent);
                if (tex)
                        return tex->toImage(image, parent, pal);
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/SLADE-3.1.12a/src/MainEditor/UI/TextureXEditor/PatchBrowser.cpp 
new/SLADE-3.1.13/src/MainEditor/UI/TextureXEditor/PatchBrowser.cpp
--- old/SLADE-3.1.12a/src/MainEditor/UI/TextureXEditor/PatchBrowser.cpp 
2020-05-28 01:08:34.000000000 +0200
+++ new/SLADE-3.1.13/src/MainEditor/UI/TextureXEditor/PatchBrowser.cpp  
2021-06-01 06:32:31.000000000 +0200
@@ -90,7 +90,7 @@
        if (type_ == 1)
        {
                // Find texture
-               CTexture* tex = theResourceManager->getTexture(name_, archive_);
+               CTexture* tex = theResourceManager->getTexture(name_, "", 
archive_);
 
                // Load texture to image, if it exists
                if (tex)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/SLADE-3.1.12a/src/MapEditor/MapTextureManager.cpp 
new/SLADE-3.1.13/src/MapEditor/MapTextureManager.cpp
--- old/SLADE-3.1.12a/src/MapEditor/MapTextureManager.cpp       2020-05-28 
01:08:34.000000000 +0200
+++ new/SLADE-3.1.13/src/MapEditor/MapTextureManager.cpp        2021-06-01 
06:32:31.000000000 +0200
@@ -29,6 +29,7 @@
  * INCLUDES
  *******************************************************************/
 #include "Main.h"
+#include "Archive/ArchiveEntry.h"
 #include "Archive/ArchiveManager.h"
 #include "Game/Configuration.h"
 #include "General/Misc.h"
@@ -143,13 +144,8 @@
        //Palette8bit* pal = getResourcePalette();
 
        // Look for stand-alone textures first
-       ArchiveEntry* etex = theResourceManager->getTextureEntry(name, "hires", 
archive);
+       ArchiveEntry* etex = theResourceManager->getHiresEntry(name, archive);
        int textypefound = TEXTYPE_HIRES;
-       if (etex == nullptr)
-       {
-               etex = theResourceManager->getTextureEntry(name, "textures", 
archive);
-               textypefound = TEXTYPE_TEXTURE;
-       }
        if (etex)
        {
                SImage image;
@@ -181,9 +177,24 @@
                        }
                }
        }
+       else
+       {
+               etex = theResourceManager->getTextureEntry(name, "textures", 
archive);
+               textypefound = TEXTYPE_TEXTURE;
+               SImage image;
+               // Get image format hint from type, if any
+               if (Misc::loadImageFromEntry(&image, etex))
+               {
+                       mtex.texture = new GLTexture(false);
+                       mtex.texture->setFilter(filter);
+                       mtex.texture->loadImage(&image, palette);
+               }
+       }
 
        // Try composite textures then
-       CTexture* ctex = theResourceManager->getTexture(name, archive);
+       CTexture* ctex = theResourceManager->getTexture(name, "", archive);
+       CTexture* wallctex = theResourceManager->getTexture(name, 
"WallTexture", archive);
+       if (wallctex) ctex = wallctex;
        if (ctex) // Composite textures take precedence over the textures 
directory
        {
                textypefound = TEXTYPE_WALLTEXTURE;
@@ -250,10 +261,17 @@
                }
        }
 
+       // Prioritize standalone textures
+       if (mixed && theResourceManager->getTextureEntry(name, "textures", 
archive))
+       {
+               return getTexture(name, false);
+       }
+
+       // Try composite flat texture
        if (mixed)
        {
-               CTexture* ctex = theResourceManager->getTexture(name, archive);
-               if (ctex && ctex->isExtended() && ctex->getType() != 
"WallTexture")
+               CTexture* ctex = theResourceManager->getTexture(name, "Flat", 
archive);
+               if (ctex)
                {
                        SImage image;
                        if (ctex->toImage(image, archive, palette, true))
@@ -263,30 +281,44 @@
                                mtex.texture->loadImage(&image, palette);
                                double sx = ctex->getScaleX(); if (sx == 0) sx 
= 1.0;
                                double sy = ctex->getScaleY(); if (sy == 0) sy 
= 1.0;
-                               mtex.texture->setScale(1.0/sx, 1.0/sy);
                                
mtex.texture->setWorldPanning(ctex->worldPanning());
+                               mtex.texture->setScale(1.0/sx, 1.0/sy);
                                return mtex.texture;
                        }
                }
        }
 
-       // Flat not found, look for it
-       //Palette8bit* pal = getResourcePalette();
+       // Try to search for an actual flat
        if (!mtex.texture)
        {
-               ArchiveEntry* entry = theResourceManager->getTextureEntry(name, 
"hires", archive);
-               if (entry == nullptr)
-                       entry = theResourceManager->getTextureEntry(name, 
"flats", archive);
-               if (entry == nullptr)
-                       entry = theResourceManager->getFlatEntry(name, archive);
-               if (entry)
+               ArchiveEntry* entry = theResourceManager->getFlatEntry(name, 
archive);
+               ArchiveEntry* hires_entry = 
theResourceManager->getHiresEntry(name, archive);
+               ArchiveEntry* image_entry = hires_entry;
+               ArchiveEntry* scale_entry = entry;
+               // No high-res texture found
+               if (!image_entry)
                {
-                       SImage image;
-                       if (Misc::loadImageFromEntry(&image, entry))
+                       image_entry = entry;
+                       scale_entry = nullptr;
+               }
+               // Load the image
+               SImage image;
+               if (Misc::loadImageFromEntry(&image, image_entry))
+               {
+                       mtex.texture = new GLTexture(false);
+                       mtex.texture->setFilter(filter);
+                       mtex.texture->loadImage(&image, palette);
+               }
+               // Get high-res texture scale
+               if (scale_entry)
+               {
+                       SImage lores_image;
+                       if (Misc::loadImageFromEntry(&lores_image, scale_entry))
                        {
-                               mtex.texture = new GLTexture(false);
-                               mtex.texture->setFilter(filter);
-                               mtex.texture->loadImage(&image, palette);
+                               double scaleX = (double)lores_image.getWidth() 
/ (double)image.getWidth();
+                               double scaleY = (double)lores_image.getHeight() 
/ (double)image.getHeight();
+                               mtex.texture->setWorldPanning(true);
+                               mtex.texture->setScale(scaleX, scaleY);
                        }
                }
        }
@@ -294,13 +326,13 @@
        // Not found
        if (!mtex.texture)
        {
-               // Try textures if mixed
+               // Try to search for a composite texture instead
                if (mixed)
+               {
                        return getTexture(name, false);
+               }
 
-               // Otherwise use missing texture
-               else
-                       mtex.texture = &(GLTexture::missingTex());
+               mtex.texture = &(GLTexture::missingTex());
        }
 
        return mtex.texture;
@@ -370,7 +402,7 @@
        }
        else    // Try composite textures then
        {
-               CTexture* ctex = theResourceManager->getTexture(name, archive);
+               CTexture* ctex = theResourceManager->getTexture(name, "", 
archive);
                if (ctex && ctex->toImage(image, archive, this->palette, true))
                        found = true;
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/SLADE-3.1.12a/src/MapEditor/Renderer/MapRenderer3D.cpp 
new/SLADE-3.1.13/src/MapEditor/Renderer/MapRenderer3D.cpp
--- old/SLADE-3.1.12a/src/MapEditor/Renderer/MapRenderer3D.cpp  2020-05-28 
01:08:34.000000000 +0200
+++ new/SLADE-3.1.13/src/MapEditor/Renderer/MapRenderer3D.cpp   2021-06-01 
06:32:31.000000000 +0200
@@ -150,12 +150,12 @@
        dist_sectors.clear();
        if (quads)
        {
-               delete quads;
+               delete[] quads;
                quads = nullptr;
        }
        if (flats)
        {
-               delete flats;
+               delete[] flats;
                flats = nullptr;
        }
 
@@ -2554,7 +2554,8 @@
 {
        // Create quads array if empty
        if (!quads)
-               quads = (quad_3d_t**)malloc(sizeof(quad_3d_t*) * map->nLines() 
* 4);
+               // quads = (quad_3d_t**)malloc(sizeof(quad_3d_t*) * 
map->nLines() * 4);
+               quads = new quad_3d_t*[map->nLines() * 4];
 
        // Go through lines
        MapLine* line;
@@ -2638,7 +2639,8 @@
 {
        // Create flats array if empty
        if (!flats)
-               flats = (flat_3d_t**)malloc(sizeof(flat_3d_t*) * 
map->nSectors() * 2);
+               // flats = (flat_3d_t**)malloc(sizeof(flat_3d_t*) * 
map->nSectors() * 2);
+               flats = new flat_3d_t*[map->nSectors() * 2];
 
        // Go through sectors
        MapSector* sector;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/SLADE-3.1.12a/win_installer/SLADE.iss 
new/SLADE-3.1.13/win_installer/SLADE.iss
--- old/SLADE-3.1.12a/win_installer/SLADE.iss   2020-05-28 01:08:34.000000000 
+0200
+++ new/SLADE-3.1.13/win_installer/SLADE.iss    2021-06-01 06:32:31.000000000 
+0200
@@ -2,7 +2,7 @@
 ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
 
 #define MyAppName "SLADE"
-#define MyAppVersion "3.1.12"
+#define MyAppVersion "3.1.13"
 #define MyAppURL "http://slade.mancubus.net";
 #define MyAppExeName "SLADE.exe"
 

Reply via email to