* Single-player files can now save when using mods! (!1749)
* Multiplayer emblems and unlockables (!1756)
* Emblems and unlockables now work in Coop mode! (!1756)
* Implement per-texture offsets in UDMF (!2018)
* These are handled per-player, but the gamestate for unlockables is based on what the server has. (what levels are available in level select, linedef executor triggers, etc...)
* New skincolors, color grid view for skincolor selection (!2027)
* The multiplayer pause menu now displays the same stats as singleplayer, and use Emblem Hints + Emblem Radar.
* Modders: Added the "ShareEmblems" option to MainCfg, which makes Emblems collected by clients share with the server host, intended for progression-based level packs.
* Several new skincolor features: (!2027)
* Added 44 new base skincolor options.
* Updated the default colors for Knuckles, Amy, and Fang.
* Added color grid view for skincolor selection. Press Enter on the Color selector!
* Added the ability to press PageUp/PageDown to scroll through colors faster.
* Added some extra keys to the Player Setup menu for modders:
* Press Pause/Break to pause the character's walking animation.
* Press Insert to preview the current skincolor's opposite color shade on the background.
* Added the `renderhitbox` console variable, for modders to debug & fine-tune custom object hitboxes.
* UDMF: Implement per-texture offsets. (!2018)
* SOC: Added A_Shockwave, which spawns a ring of objects like Sea Egg's attack. (!1777)
* Lua: Added player power `pw_strong`. This allows for fine-tuning of player attack interactions. (!1366)
* Lua: Added time/date functions from the `os` library. (!2060)
* Christmas Mode will nevah die.
* Lua: Add `dispoffset` as a property for `mobj_t` userdata. This allows you to edit this directly instead of being tied to their `mobjinfo`. (!1708)
* Lua: Added access to floor/ceiling plane offsets, angle, and lighting. (!1884)
* Lua: Added R_TextureNameForNum and R_CheckTextureNameForNum, for getting strings from texture IDs. (!1880)
* Lua: Added `ping` as a read-only property for `player_t` userdata. (!2025)
* Dedicated servers: Added the "dedicatedidletime" console variable. This stops game logic from running when your server has no players interacting with it after the specified amount of time. Defaults to 10 seconds, can be turned back off by setting to 0. (!2019)
## Improvements
## Improvements
* Turn dispoffset into a mobj field (!1708)
* Using an unlockable Level Select now gives you the option to use it again from the pause menu. (!1756)
* LUA_EnumLib optimizations for constant value access (!1721, !2017)
* Raised several unlockable-related limits. (!1988)
* Don't break targeting when bosses take damage. (!1917)
* Reallow score chains from rolling (!1833)
* Added HUD icons for timed NiGHTS powerups if powerup display is enabled. (!1949)
* Interpolate console animation, make con_height update on the fly (!1878)
* Bomb spheres are no longer attracted by the Attraction shield. (!1953)
* Allow targeting invulnerable bosses & don't break targeting when they take damage (!1917)
* Score chains can be gotten from rolling again. (!1833)
* Add HUD icons for timed NiGHTS powerups (!1949)
* Interpolated console animation. (!1878)
* Don't attract bomb spheres with Attraction shield (!1953)
* Drop shadows are now interpolated while their caster is scaling. (!1986)
* Small text colormap tweaks (!1971)
* Added extra colors to the NiGHTS Link palette cycle past 600. (!1811)
* Optimize field lookups in Lua metatables (!2024)
* 3D model improvements: (!1840)
* Simplified the way invcolor works (!2027)
* Support sprite x/y offset, adjusts the model position sideways relative to the camera.
* Support sprite x/y scale; x scale adjusts model horizontal scale, y scale adjusts model vertical scale.
* Sprite roll angle is now handled like Software, where the roll is done relative to the camera.
* Note for modders: `rotaxis` in spriteinfo has been deprecated, as it is now handled automatically.
* Console improvements:
* Added "true" and "false" as possible values for console variables. (!2049)
* Show list of aliases when typing "alias" alone. (!2055)
* Replace existing aliases if there's already one with the same name. (!2055)
* Changed function key behaviors:
* F10 now toggles fullscreen and windowed mode. There is also now a separate resolution used for windowed mode.
* F11 now toggles the current renderer.
* Netcode improvements:
* Drastically improved input pacing when connected as a client with interpolation turned on. (!2046)
* The game puts you in a "waiting for next level" state when trying to join on intermission, avoiding a desync. (!2019)
* Prevent connection timeouts during fade transitions. (!2019)
* Clients are now consistently given a connection timeout when their delay reaches past the end of the backup buffer. (!2019)
* Refresh all character sprites when new Sprite2s are added. This makes characters able to supply animations for level packs without being load order dependent. (!1750)
* Adds new linedef actions 516-518, 526-528 and 536-538, for scrolling/carrying both floors and ceilings simultaneously.
* Checking the Effect 6 flag on these actions allows setting the scrolling/carrying/pushing speed/strength via the front X offset, instead of the linedef's length.
* SOC: Custom gametypes with both teams and lives now shows your lives count. (!1579)
* SOC: Simplified the way the `invcolor` property for skincolors works. (!2027)
* Lua: Overriding SOC actions using `super` now respects other loaded mods. (!1737)
* Lua: Optimized `LUA_EnumLib` constant value access. (!1721, !2017, !2034)
* Lua: Optimized field lookups in metatables. (!2024)
* Small tweaks were made to text colormaps for custom graphics. (!1971)
* Crash handler messages were made more descriptive. (!2042)