Skybox improvements
Some improvements to skyboxes and new features for them:
* *The Thing's Z position now determines the relative z position of a skybox viewpoint from the ground, the Thing's angle no longer affects the Z position at all.* This should also fix objectplace breaking skyboxes after you place a Thing, and allow Z heights to be more easily controlled by custom skybox mobjs set by Lua's `P_SetSkyboxMobj`.
* The skybox viewpoint Thing's "Parameter" value (or the multiple of 4096 added to the Thing type, if you're still using SRB2DB) determines the ID number for a viewpoint or centerpoint, a value between 0 and 15. By default the game uses the viewpoint and centerpoint using ID 0. Note: this ID system does not apply to custom skybox mobjs set by Lua, only to `MT_SKYBOX` mobjs spawned by Things for a map.
* **Linedef type 448** has been added as a linedef executor special for changing the skybox viewpoint and/or centerpoint used, making use of the new ID system mentioned above:
* By default, only the *viewpoint* will be changed. The front x offsets set the ID of the new viewpoint to use; if the number is out of range (numbers accepted are 0 to 15), the game will simply not use any viewpoint at all.
* If the "*Block Enemies*" flag is set, the centerpoint will be changed as well. In this case the front y offsets set the new centerpoint ID to use.
* If the "*Solid Midtexture*" flag is set, the viewpoint will **not** be changed at all. Combine this with Block Enemies to make the linedef type change only the centerpoint if needed (otherwise the linedef will do nothing lol).
* By default, only the player who triggered the linedef will see the skybox being changed. If a player did not trigger the linedef executor directly, no change will be seen by anyone. If the "*Not Climbable*" flag is set, the skybox change will be "global", i.e. it will be seen by all players in the map.
In my folder on the FTP I've made a subfolder called "skybox improvements", and in it are the following files:
* srb2win-skyboximprov.exe - the test exe for this branch I've compiled myself
* skyboxchange-test.wad - an edit of my test map for my skybox change Lua script release on the MB, to test out the new skybox change linedef type.
See merge request !89
Admin ban fix
Okay, THIS time admin bans should work properly. Turns out the relevant code for banning did not properly consider the case of admins doing the banning, at least until now.
Unlike my last attempt at fixing admin bans (!165), this one would require both host and admin to have the fix exe assuming everyone else would be using 2.1.17, so I'm merging to next instead of master.
See merge request !167
Allowteamchange fix
Fixes "allowteamchange no" to actually work properly and NOT desync you from the game in most cases. You can now switch TO spectator freely (as intended it turns out), and switching FROM spectator is prohibited. The "Enter Game" menu option in Match/Tag now displays one of those blue window notices just like with "Change Teams" in CTF/Team Match if you cannot change teams right now. Everything else works as you'd expect.
The de-sync issue was originally reported here https://mb.srb2.org/showthread.php?p=789965#85
See merge request !168
Used instead of pLocalPalette when attempting to determine objective truths, such as "the colours of this gif without color profile modification" and "what indicies should this colormap remap to".
Also, made f_wipe.c's paldiv only get calculated once.
* Serious refactor of - and internal exposure of - what has become S_StartCaption().
* Renaming of a few existing captions.
* The prevention of access to - or writing over - sfx_None's stuff in SOC or Lua.
* The new Lua wrapper function S_StartMusicCaption(string, tics, optional player), which essentially allows custom music captions to be created. (This is best used for stuff like final lap music in SRB2 Kart or bonus time in a thokker-like game, not a comprehensive Now Playing expy. That'd be a different kettle of fish.)
Also, updated all the lock-on stuff to use P_IsLocalPlayer instead of rolling my own.
A less memetic message: On permission of Mystic, rejiggered a few things such that Race uses cv_competitionboxes, allowing the menu to be nicer.
Also:
* disabled the doomednum for ? boxes
* made A_MixUp play sfx_lose if you're in a gametype that can't use it
* Removed the all-teleporters option from cv_competitionboxes. It could just be done by tweaking the random monitor toggles, anyways.
This means setting the skybox view angle is no longer stupid, objectplace no longer breaks skyboxes, and Lua-defined skybox mobjs can actually set a Z position more easily now.
Falling rocks fix
This fixes the rock spawners' rocks not being removed if they rolled down to the ground from a slope rather than bouncing (see https://mb.srb2.org/showthread.php?t=41963)
See merge request !162
This allows tag lists, gravity, weather, and the "CheckFor" vars to be initialised before running P_LoadThings or P_ResetDynamicSlopes, in case they could affect mobj spawning or cause a netgame desync somehow by carrying over the previous level's values
DrawFill made not stupid
made it more consistent with other drawing functions; doesn't draw off of the sides, and doesn't ignore snapping or widths for reasons that don't make sense
(for instance: the green bar in MI's test script showed *above* the blue one in non-green resolutions in 2.1.17)
See merge request !173