- Effectively similar to Actors, but without the excess.
- Can be created with either the `level` function or the static `Spawn` function in ZSprite.
- STAT_SPRITE belongs to ZSprites only; ZSprites cannot be moved out of, nor can anything else be moved in to, this statnum.
Misc:
- Fixed (Sprite)Offset taking roll into account.
Crediting phantombeta, RicardoLuis0 and RaveYard for assistance.
This is needed for implementing reliable serialization of custom translations. As long as they are merely ints they cannot be restored on loading a savegame because the serialization code does not know that these variables are special.
Genesis of Descent E1M2 is impossible to complete on ITYTD/HNTR. I had to decompile the ACS script to figure out what was going on, basically at one point you get locked into a room and have to kill exactly 3 enemies with TID 215 for the door to unlock. One of these is a Baron tagged for only Medium and Hard, in his place is an Imp #1184 that has all the right script setups but is not set to appear on any difficulty. The fix is to simply have this imp appear on Easy.
Thanks to brick' for the fix.
This adds ViewBobSpeed to PlayerPawn that is passed in CalcHeight() instead of the value of 20 and can be adjusted with the Player.ViewBobSpeed variable. This will let modders dynamically adjust how to only how far the camera bobs up and down, but also how *quickly* it does that, which allows to easily convey a feeling of a heavy, slow-moving character whose view might bob a lot but would do it slowly.
This discrepancy is ancient, so the approach used for the shotgunner does not work here and some hacks are needed to remap the function only for Dehacked.
Most were still at 3.1 which prompts noisy warnings from up-to-date CMake versions.
Version requirements have been removed entirely from dependent subprojects, all others were upped to 3.16.
Localized reflection code to a single function. Fixed an error where NOSHIELDREFLECT was being checked on the wrong Actor. Fixed an oversight where MIRRORREFLECT was checking for valid target despite not needing one.
These properties allow to specify how much an actors' aim is degraded when shooting at a shadow actor. And how much the shadow actor itself affects the shooters' aim, respectively.
GZDoom used to have hardcoded MessageBox menu selector, 0x0d character
of console font, while the other menu is displayed is SmallFont.
It looked too ugly if SmallFont and ConFont heights are different,
and also there was no method of modifying the selector.
Now, the selector is 0x0d from SmallFont, if SmallFont contains this glyph
(its height is greater than zero), otherwise it falls back to previous
behavior (using ConFont as a source of this glyph).
To define custom MessageBox menu selector, just define 0x0d glyph for
SmallFont, and it will be displayed in the menu.
The gap between selector and menu options text is 3 pixels (as before), and
if you wish to enlarge this gap, just add some transparent columns at the
right side of 0x0d glyph.
This implements a bruteforce approach for 2D line antialiasing.
It's not perfect by any means, but it seems to do its job well enough.
Since it draws 9 lines instead of 1 line per segment, it's significantly
more expensive but should still be usable on modern hardware (except
on very complex maps).
Automap line antialiasing is disabled by default and can be enabled
with the `am_lineantialiasing 1` cvar.
The minimum value was increased from 30 to 35 to reflect the lowest
value you can actually use in `vid_maxfps`. Values lower than 35
are silently clamped to 35.
The maximum value is chosen to cater to the fastest commercially
available display as of writing (500 Hz).
Being able to specify maximum FPS with a more precise slider has
several benefits:
- This adds support for monitors with less common refresh rates
(138 Hz, 165 Hz, ...).
- This adds support for monitors with very high refresh rates
(240 Hz or more).
- This allows catering to variable refresh rate setups with a FPS cap
chosen to avoid V-Sync input lag, while also avoiding tearing.
For example, choosing a FPS cap of 117 on a 120 Hz display will prevent
the display from reaching its maximum refresh rate.
More information: https://blurbusters.com/howto-low-lag-vsync-on/
- The value no longer displays a "Unknown" if customized in the console
using the `vid_maxfps` cvar.
* Key.ValidLock: returns whether a lock number is valid (can be unlocked) or belongs to a "does not work" door.
* Key.GetMapColorForLock: returns the automap color for a lock number (or -1 if the lock isn't valid).
* Key.GetMapColorForKey: likewise, but for a specific key.