Jet Jaw crash fix
Turns out not having MF_SHOOTABLE can cause the Jet Jaw to endlessly loop between the two states, until somehow LUA_CallAction inexplicably causes Z_StrDup to crash anyway (that one's a mystery to me, I'm not going to look into it right now). I tweaked A_JetJawChomp so this endless loop can't happen anymore.
See merge request !176
<Alam_Squeeze> p_floor.c:2932: warning: 'widthfactor' might be used uninitialized in this function
<Alam_Squeeze> p_floor.c:2932: warning: 'heightfactor' might be used uninitialized in this function
<Alam_Squeeze> m_menu.c:1907: error: initializer element is not constant
<Alam_Squeeze> m_menu.c:1907: error: (near initialization for `OP_ScreenshotOptionsDef.drawroutine')
<Alam_Squeeze> m_menu.c:9353: warning: 'M_DrawScreenshotMenu' defined but not used
<Alam_Squeeze> Makefile:770: recipe for target '../objs/Mingw/Debug/m_menu.o' failed
<Alam_Squeeze> make: *** [../objs/Mingw/Debug/m_menu.o] Error 1
Level specials setup stuff
Some changes to level setup, largely inconsequential for gameplay but maybe helpful for Lua scripting:
* gravity, weather, and some other internal variables are set to their defaults before loading things, so their values from a previous level don't affect mobj spawning potentially
* Tag lists are also initialised before loading things, so that tag-based search functions (such as P_FindSpecialLineFromTag) can be used internally for the maces and particle generator. This should probably extend to Lua as well
* the level header "forcecharacter" no longer recognises "255" as "None" anymore. This is because it no longer takes skin numbers (as of whenever that change was added... version 2.0?), and level headers are auto-cleared when edited anyway.
See merge request !88
obj folders fix
Partial backtrack of changes I made in !174. Apparently removing all the `.gitignore` files from `/objs`'s subfolders removed the only reason Git was keeping the folders alive (Git doesn't care about empty folders as it turns out). So now they have `.gitignore`s again, with a warning in each not to remove them.
See merge request !177
New User Experiences - Menus, Closed Captioning, and other non-substantial tweaks
Hello! I'm going to words.
* Menu stuff!
* Scrolling menus when there's lots of options instead of doing lots of nestling!
* Video Options, Server Options, and Screenshot Options have been updated to take advantage of this.
* Headings are prettier in general to match the level platter's headers!
* Expose a bunch of stuff Mystic wanted exposed, without iundating the player!
* Little arrows!
* Better, clearer control menus!
* I know this is probably related to the above, but whatever.
* Very organised with lots of renaming and magical clarifying context headings!
* Killed the analog-only Camera L/R keys in favour of merging them with the regular turn keys in that context!
* Also little arrows!
* Statistics!
* One page instead of two, loses a lot less info than you'd expect!
* The benefit of having them on one page is greater than the loss of being able to individually discern which of your Score/Time/Rings is incomplete.
* ALSO also little arrows!
* Secrets checklist!
* Scrolls vertically!
* Allows for autogeneration of conditions based off conditionset, which allows for names of required levels to be hidden if you haven't played them yet!
* Still allows overriding condition string per traditional checklist.
* This allows us to show every secret's condition without letting it be spoiled or overflowing the everything.
* Also ALSO also little arrows!
* Closed captioning!
* Console command "closedcaptioning on/off".
* Shows stuff in the bottom right hand corner of the screen.
* sfxinfo[sfx_name].caption = "Butt.".
* S_StartMusicCaption(string, tics, optional player) allows for a caption to play without being anchored to a specific sound.
* Color Profile!
* Using only the best in advanced cube-based majyks.
* cv_gamma now goes from -15 to +5!
* cv_saturation - from 0 to 10!
* A new menu for modifying the hue, saturation and gamma of specific corners of the cube (RYGCBM) independently of the master options!
* Screenshots/Video Mode now supports turning on/off circumstantial color profile alterations (cv_screenshot_colorprofile).
* Spring cleaning!
* cv_allcaps is dead.
* Sudden death and old match scoring (25 points for shield damage as the only change??) is dead
* A few things are taken off the menu because they're not that relevant to have.
* cv_competitionboxes now applies to race as well.
* Failed teleports go nuh-uh.
* Question mark boxes don't have doomednums anymore, so they can't be placed in singleplayer and used to get free lives by playing with the tv_extralife etc stuff.
* Other tidbits!
* HUD offsets are tweaked to give one digit less space to score and one digit more space each to time and rings to match up the right edges.
* Emerald tokens show up on the level complete screen and are loaded into a coin slot at the end of the tally.
* Speaking of Emerald tokens, they now give score all the time, and continues instead of 50 rings when you have all Emeralds.
* Moved Race HUD down, and made it go bing bing bing BONG.
* V_DrawCroppedPatch now properly handles topdeltas.
* Minor tweak to GFZ3 eggmobile's pinch to be more lenient.
* Hudnames for skins now replace full stops with katakana dots. We could make it replace a different character instead if we really wanted to, but I figure this matches what is desired.
Check out ```<root>/!LatestSRB2Files/srb2win_branch_deeznux.exe``` to try it out.
See merge request !91
.gitignore stuff
The following changes have been made to `.gitignore` files in the objs/ and bin/ folders:
* All the `.gitignore`s living in subfolders of objs/ have been done away with and replaced with a single `objs/.gitignore`, covering all the things that the subfolders ignored before (including depend.ped, if anyone is like me and has to remove that file manually)
* All the `.gitignore`s living in subfolders of `bin/Mingw` ignore .exes of any name, not just srb2win/srb2dd/srb2sdl. en.mo is also ignored now... or rather any .mo file (just in case). This is mostly for my own sanity and that of anyone else who uses EXENAME=[name.exe] when compiling with MinGW.
If you're not sure what `.gitignore` does exactly, as far as I'm aware it literally just tells Git what to "ignore" (or rather, not track), so anyone using Git GUI or some other Git program etc doesn't have to see changes certain files and can't accidentally commit the files or whatever.
See merge request !174
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.