Software plane rendering fixes/cleanup
This is mostly cleanup, with the exception that polyobject planes should now behave somewhat better than they do in 2.1 currently (translucent polyobj planes should now always be actually translucent regardless of where you view them from, for instance). I can't claim I've fixed their rendering once and for all though, there may still be bugs for all I know...
See merge request !136
Some texture-related fixes
Bugs fixed in this branch:
* upper/lower/middle textures with non-existent texture ids being capable of crashing the game. For instance, RVZ1 has colormap codes on non-colormap linedefs, which causes them to wind up with invalid texture ids because of how the game tries to interpret lower/upper textures with "#" followed by characters on normal linedefs. Fortunately these "textures" are normally not visible anyway (since they're all in control sectors) unless they are swapped with in-level textures by some crazy Lua script of some sort...
* animated single-patch textures with holes displaying garbage on first viewing (see this thread: https://mb.srb2.org/showthread.php?t=42195)
* the heights of the lighting (shadows or colormapping) from water/translucent/shadowcasting/etc FOFs become messed up when displayed on repeated midtextures.
See merge request !144
Flat changing hotfix
This should fix how Lua scripts that change flats in levels, particularly to flats that don't already exist in the level, cause SRB2 to crash for anyone who joins a netgame afterwards. (I'm not sure if it's a consistent thing or not though)
Probably needs a good test to verify the issue is completely fixed before being merged in. Maybe there are other minor things I didn't account for in this fix? I don't know!
See merge request !141
Remove secplanes
This is just removing SSNTails's old port of ZDoom's secplane code and math, from back when he attempted slopes himself. The slopes we've had since 2.1.15 however do not need these, so we can pretty much toss the code for them out now (nothing uses them anyway).
See merge request !149
Savegame hotfix
This fixes the first mobj thinker added/read from $$$.sav not being relinked to other objects as their target/tracer/etc properly. In particular, this fixes Brak's electric shield disappearing for anyone joining a netgame playing ERCZ (as Brak happens to be the first object added/read in this case, and Brak is the shield's target).
See merge request !146
-Updated packet name list so the debug file no longer shows garbage packet names
-Replaced byte values with actual net command names in the debug file. Only the first net command in a packet will be shown though
-Added a MOBJCONSISTANCY define that makes the game takes all revelant mobjs to be counted in the synch seed
-Added a PACKETDROP define that adds two console commands "drop" and "droprate" to simulate bad internet by dropping packets
-Added/changed comments here in there in the netcode
-Fixed a minor error that would ignore one of the urgent ack slots
-Added a space between the map name and "zone" for the messages shown in a joiner's console
This fixes Brak's electric barrier disappearing for joiners to ERZC. There seems to be some issues with the lava falls there too I've found, but the electric barrier actually stays around now at least
Shield actions
The branch is basically complete, I just need to figure out the best way to have the whirlwind shield let the player know you can use it.
SRB2 shields:
* WHIRLWIND SHIELD - It's like King Dedede. You can't improve on perfection. (Might get some new sprites as tells for being able to use it, though.)
* ARMAGEDDON SHIELD - Create a bomb burst whenever you pick up another of the same shield FOR FREE!
* MAGNETIC SHIELD - Homing attack towards enemies only, no stopping when you hit 'em, no zooming off if you're not near enemies.
* ELEMENTAL SHIELD - Perform a piercing stomp that rips through enemies (that don't have spikes on their heads) and creates a fire burst when you land above water.
* FORCE SHIELD - Perfect stop in midair.
S3NK shields:
* FLAME SHIELD - Additive thok on the spin button.
* BUBBLE SHIELD - Bubble bounce to 1.5*jumpheight (also rips through enemies).
* THUNDER SHIELD - Double jump, but with no uncurl and a twang noise.
Supers don't have access to shield actives. Characters with thok can superfloat like usual.
New Lua hooks:
* "ShieldSpawn" in the form function(player), hooks into P_SpawnShieldOrb.
* "ShieldSpecial" in the form function(player), hooks into the shield activation code.
See merge request !31
Spindash dust
Charging a spindash kicks up dust, we all know this feature was dying to get in at some point. Bubble and flame forms of spin dust are included from FSonic, for underwater and elemental respectively.
Oh, and as a bonus I reorganised the spindash/spinning/other ability2 stuff code to look a bit neater and more organised.
New resources:
* MT_SPINDUST - the object
* S_SPINDUST1 to 4 - the normal form's states
* S_SPINDUST_BUBBLE1 to 4 - the bubble form's states
* S_SPINDUST_FIRE1 to 4 - the bubble form's states
* SPR_DUST - the normal form's sprite set (uses frames A to D, just pinch FSonic's sprites really)
* SPR_FPRT - the flame form's sprite set (frame A only)
SF_NOSPINDASHDUST disables spindash dust for a character
See merge request !52
Multi-patch texture support for transparency AND translucency
Fixes the transparent bits of the multi-patch glass texture in THZ1 turning cyan when linedef types 900-908 are applied for translucency
See merge request !56
Zoom tube camera fix
Fixed a mistake where I accidentially allowed people to change the player angle whilst in a zoom tube when previously improving them.
See merge request !57
Smoother ropes and zoom tubes
Makes rope hangs and zoom tubes suck less. Specifically, they handle corners (and vertical height changes, ala sloped rope hangs) a LOT nicer. Ported from internal.
See merge request !139
As LJSonic has pointed out, there's no need for a for loop in either case; just use sector->floorpic/ceilingpic as a levelflats index directly
(Besides, if that was to stop any out-of-bounds indexes being used, that's hardly the way to do it anyway)
TEXTURES additions
Some new features and fixes for textures and the TEXTURES lump:
* Flipping of individual patches used by textures is now supported, both horizontally and vertically. The formatting for doing so in TEXTURES should match that of ZDoom's:
```
WallTexture EXAMPLE, 128, 128
{
Patch TEST, 0, 0
Patch TEST, 64, 0
{
FlipX
}
Patch TEST, 0, 64
{
FlipY
}
Patch TEST, 64, 64
{
FlipX
FlipY
}
}
```
(in other words you need { and } below the Patch you want to flip, containing FlipX if you want horizontal flipping or FlipY if you want vertical flipping... or both, if you want both!)
* Negative patch y-offsets should now work properly for multi-patch textures or single-patch textures with no holes.
See merge request !58
SDL2 i_video.c code cleanup
Made some code look a bit neater, removed the need for some SDL2STUBs Fury placed, vid_info console command actually kind of has a use again, etc
See merge request !138
Fix ceiling springs thrusting themselves down in midair on touch
What the title says. I blame MFE_ONGROUND for being stupid, but for now I made it behave a bit better with flipped items at least.
See merge request !140