diff --git a/CHANGELOG.txt b/CHANGELOG.txt index de91f4b3f..97ca33234 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -38,6 +38,8 @@ New Features to present skill levels - Default value is false +- RSCRIPT: "EXACT_" prefix added for ON_CONDITION checks (Courtesy of akaAgar - https://github.com/edge-classic/EDGE-classic/pull/578) + - Allows check for the exact value of a benefit/etc, versus the default of greater-than-or-equal General Improvements/Changes @@ -46,9 +48,10 @@ General Improvements/Changes - Video Options crosshair selection will not be shown when switching to/from weapons that have DDF custom crosshairs - Slightly re-organized the Key binding menu to accomodate the new 3rd and 4th attacks. - Implemented 'episode' UMAPINFO key; EDGE-Classic now fully supports the UMAPINFO spec, Revision 2.2 - - ZMAPINFO/MAPINFO episode definitions will now be parsed as well -- ZMAPINFO/MAPINFO will now respect the 'noskillmenu' episode definition key - - Leverages the new NO_SKILL_MENU DDFGAME command mentioned above +- ZMAPINFO/MAPINFO parsing updates: + - Episode definitions and the 'clearepisodes' directive will now be respected + - ZMAPINFO 'ResetInventory' level definition key will result in the RESET_PLAYER DDFLEVL command being applied + Bugs fixed ---------- diff --git a/source_files/edge/p_umapinfo.cc b/source_files/edge/p_umapinfo.cc index 4dcbd9fe3..d3b2a7aee 100644 --- a/source_files/edge/p_umapinfo.cc +++ b/source_files/edge/p_umapinfo.cc @@ -1385,6 +1385,10 @@ static void ParseZMAPINFOEntry(epi::lexer_c& lex, MapEntry *val) { val->spidermastermindspecial = true; } + else if (epi::case_cmp(key, "resetinventory") == 0) + { + val->resetplayer = true; + } else if (epi::prefix_case_cmp(key, "specialaction_") == 0) { // Only one specialaction_* should be used at a time diff --git a/source_files/edge/p_umapinfo.h b/source_files/edge/p_umapinfo.h index 88cbd8bd9..ea504ea1f 100644 --- a/source_files/edge/p_umapinfo.h +++ b/source_files/edge/p_umapinfo.h @@ -57,14 +57,13 @@ struct MapEntry int docast; int dobunny; int endgame; + bool resetplayer = false; bool map07special = false; bool baronspecial = false; bool cyberdemonspecial = false; bool spidermastermindspecial = false; char *specialaction; - unsigned int propertycount; - struct MapProperty *properties; struct BossAction *bossactions; }; diff --git a/source_files/edge/w_wad.cc b/source_files/edge/w_wad.cc index 977992119..ee38de38e 100644 --- a/source_files/edge/w_wad.cc +++ b/source_files/edge/w_wad.cc @@ -1648,6 +1648,11 @@ void W_ReadUMAPINFOLumps(void) temp_level->nextmapname.clear(); } + if(Maps.maps[i].resetplayer) + { + temp_level->force_on |= MPF_ResetPlayer; + } + if(Maps.maps[i].partime > 0) temp_level->partime = Maps.maps[i].partime;