This is done to encapsulate the gory details of tag search in one place so that the implementation of multiple tags per sector remains contained to a few isolated spots in the code.
This also moves the special 'tag == 0 -> activate backsector' handling into the iterator class.
- Old mess:
* Execute autoexec files right away.
* Execute -exec files right away.
* Execute command line commands right away.
- If, during any of the above, an unknown command or a set of an
unknown variable is encountered, store it for later.
- Pullin commands are directly executed and add to the list of files
to load.
* Do a little setup, including parsing CVARINFOs.
* Retry saved commands in case CVARINFO added a cvar they refer to.
- New, less messy, mess:
* Parse autoexec files into an array.
* Parse -exec files.
* Parse command line commands.
- During all of the above, exec commands are also parsed into the
array immediately rather than being saved for execution later.
- Pullin commands are parsed into a different array. The pullin
command doesn't actually do anything directly anymore.
* Add all the pullin files to the list of files to load.
* Do a little setup, including parsing CVARINFOs.
* Execute every command that was parsed in the preceding steps.
Both 'Adventures of Square' IWADs were missing an entry for base MAPINFO and as a result did not define the common editor numbers.
To prevent this, a new mindefaults MAPINFO was added to zdoom.pk3 which now gets loaded if IWADINFO does not specify a game-specific file.
This minimum setting sets all gamedefaults to a reasonable base value and defines all other things that are required to be defined.
This has an important implication:
Previously the config was loaded before IWADINFO so in order to allow the config to access the data this had to be switched around.
This means that zdoom.pk3 will not be looked for in the global IWAD search paths anymore, but since it shouldn't be there to begin with it should be an acceptable compromise.
As a result the old 'Group' property could be removed and all other means to get a section name were disabled.
As an example, if the code gets 'doom.doom2.commercial' it will use the following sections in this order:
global.autoload
doom.autoload
doom.doom2.autoload
doom.doom2.commercial.autoload.
- For when IWADs are too specific, filter by the base gametype too.
- Minor small edits to the sndinfo.txt files so that zipdir will notice
the changes, since it doesn't check path names when checking for
file differences.
- Previously, calling ReallocBuffer with a smaller buffer size than the
current one could overwrite unallocated memory. This required that the
string it was called on had more than one reference and therefore
required creating a new copy. The entire original string would be
copied, whether it fit in the new buffer or not.
- Multi-directory archives (e.g. zips) now support filtering lumps
depending on the loaded IWAD. The search rules are the same as for the
Autoload entries in the user's ini. For instance, if you are playing
Doom 2, the following filters will be applied:
* "filter/doom2/*"
* "filter/doom/*"
They will be renamed to strip out the "filter/doom2/" and "filter/doom/"
parts and will be ordered so they take precedence over any files not
inside a filter/ directory. Any files inside another filter/ directory
(e.g. "filter/hexen/*") will be ignored.
This helps the crash catcher when there are numerous wad files, for which it's possible that either the wad list, the map or the position is truncated. A more reliable alternative to this should be allocating the char buffer, but I never heard about a way to do this reliably during signal handling.
- changed monster unblocking logic to include players as well (i.e. a player being stuck inside another actor is allowed to move away from that other actor.)
* Changed the behavior of SetActorTeleFog.
- Don't force "null" to resolve to no actor since "none" is already defined as NULL (via FindClass). (This change also applies to the decorate properties.)
- Passing an empty actor name will keep the existing fog since there's otherwise no way set only one fog. Since "none" works to remove the fog, I see no reason not to have this option.
- Don't force "null" to resolve to no actor since "none" is already defined as NULL (via FindClass). (This change also applies to the decorate properties.)
- Passing an empty actor name will keep the existing fog since there's otherwise no way set only one fog. Since "none" works to remove the fog, I see no reason not to have this option.
* decided that the pain threshold should always be checked against the actual damage, even if it's down to 0, for consistency. This also restores the original behavior of using actual damage for checking the pain threshold which was altered by the introduction of the ALLOWPAIN and CAUSEPAIN flags.
* removed all newly added exceptions that excluded the player from checks for completely cancelled out damage.
* if anything during damage modification causes negative damage, no pain handling whatsoever will be initiated.
* made sure that TELEFRAG_DAMAGE will not be subjected to damage amount modification by protection items and any other kind of damage modification.
- Move MUSINFO change request out of FLevelLocals and into player_t. This
allows the MusicChanger actors to change music for each player
independantly. This is similar to PrBoom+, which switches depending on
the displayplayer. The difference being, we don't actually track the
music other players are listening to. (Which might not be a bad idea to
implement at some point.)
- Moved a few fields in player_t for better packing.
This reverts commit 5977cb04d9.
- It breaks at least one mod (Complex Doom) and who knows how many others.
Considering how long A_Die has been around, a random "fix" like this is
probably not a good idea. [P.S. Missiles have health and can be damaged
by P_DamageMob, so it's not like it never did anything on missiles.]