Development improvements
An improvement to Objectplace I've wanted to make for a loooong time.
* Object number up/down is now assigned to ringslinger weapon next/prev. SO much nicer to use, especially since most people have that stuff bound to the scroll wheel.
Also, some changes to the devmode overlay:
* Plays nicely with showfps on - see http://imgur.com/a/zSzvm for the various cases (showfps on, devmode 65535, and both).
* Add PF_THOKKED to the flags in devmode DBG_DETAILED (as "TH").
* "Flags:" replaced with "PF:", "Heap used" replaced with "Heap". The latter is a debatable change, but the former isn't - otherwise the line is way too long compared to the rest of the stuff.
See merge request !45
Hardcoded music name switches
Like I said earlier, it's better if all the hardcoded music switches in 2.2 start with an underscore so that it's harder to accidentally overwrite them.
Should be accepted when music.dta is updated.
See merge request !17
Same no non-music lump requirement as music.dta, and is ignored with no error if music_new.dta doesn't exist
(should hopefully make playing around with music easier)
v.drawScaled negative scales fix
Lua now errors if you try to use negative scales with v.drawScaled, rather than crashing as it does in 2.1.16 currently. Not much else to say here.
See merge request !126
Fixing FF_REVERSEPLATFORM clipping fixes
Forgot the case where == 0.
Tested by @wolfy852 in Top Down, where the bugs this caused were first discovered.
See merge request !121
Even more slope-related fixes
What it says on the tin pretty much:
Currently included fixes:
* Pusher specials applied to FOFs did not properly account for slopes applied to the bottom plane; this probably was just a minor slipup that appeared on adding the support in the first place, I take it? (some waterfall in the last section of SUGOI's Fudge Canyon is the only place I can think of offhand where this bug is noticable)
See merge request !114
Treating " as whitespace in TEXTURES (and animdefs too i guess)
SLADE adds this character in its TEXTURES editor and makes SRB2 cry unless the lump is manually edited; this just treats it as whitespace so we don't have to think too hard about it.
Also, two I_Errors now refer to the correct lump name.
See merge request !122
Proper barrel sky distortion
Skies now use proper barrel distortion in both axes, rather than just the x-axis (i.e. just horizontally) as in all previous SRB2 versions. Credit goes to Nev3r for the original change and idea.
Was going to make an option for a non-barrel distorted sky, assuming barrel distortion is the default, but I just can't quite get it to work in a way that is pleasing to the eyes. So I've not bothered with it here for now, unless someone objects to barrel distorted skies for any reason?
See merge request !35
FOF wall slope skewing
FOF walls now can optionally skew with respect to slopes (software mode only currently):
* Upper Unpegged on the CONTROL linedef enables wall skewing
* Lower Unpegged on the IN-LEVEL linedefs ^1 determine which slope to skew with respect to (off = top slope, on = bottom slope)
* If Transfer Line is used however, Lower Unpegged on the control sector's linedefs does the above's job instead
^1 (this is because they already control pegging of individual FOF walls as it is, so this is for convenience and my sanity that they also deal with skewing)
See merge request !39
Fixes to horizontal spring collision
Fixed various issues arising from collision with exclusively horizontal springs. Thamks to @Inuyasha for the heads up! Of note:
* If you hold down your jump button whilst jumping into it, you no longer immediately use your ability.
* Characters with (CA_DOUBLEJUMP && CA2_MULTIABILITY) or CA_FLOAT or CA_HOVER no longer lose track of their jump count.
Also:
* Upped the strength of info.c's red and yellow horizontal springs.
See merge request !41
Horizon lines
Horizon lines for software mode! Place a Linedef type 41 somewhere on a one-sided linedef and it'll do fancy rendering hacks to draw the adjacent floor/ceiling to the "horizon". One small thing to sort out when I remember to do so, but this is good enough for merge already.
See merge request !44
FF_ANIMATE additions: globally synced animations
FF_GLOBALANIM = makes the animation synced to the level's timer, so all objects will display the same frame at the same time
![](https://dl.dropboxusercontent.com/u/3518218/22/srb22-0008.gif)
I mean, doesn't that look so much prettier?
There's also some changes to FF_MIDDLESTARTCHANCE (FF_ANIMATE behavior was split due to not acting consistent between that and SPR2 behavior).
See merge request !46
Flat sprites and collision bounds, controllable sprite ordering, and allowing sprite flipping without gravity flipping!
Okay, so I'm silly. Red showed off some ACZ2 clips of the minecart and I was like "FUCK, THAT LOOKS TERRIBL- oh wait i drew that". But it wasn't the sprites that were bad, no - it was the fact that the sprites occupied a single position in 3d space and had pre-built-in-perspective, and THAT was terrible. So I basically over-engineered a solution instead.
FF_PAPERSPRITE (name voted on by the public! http://i.imgur.com/i6g5P73.png) has:
* Accurate perspective as if it were a linedef midtexture IN-MAP!!!!!!!!!!!!!!!!!!!!! might need a little bit of tweaking though, @RedEnchilada cough meow
* As good ordering as you can get without seperating the sprite down the middle whenever it intersects something
* Pretty dang accurate clipping - only exception is http://i.imgur.com/QNjbATB.png - where the MF_PAPER mobj has moved close to the wall and then turned, and you can't really solve that without cutting Sonic's feet off like in OGL <-- might be inaccurate, need to check with fixed ordering
* I suck at understanding the casting to INT64 stuff that's used for overflow prevention elsewhere in the code, so I just cleaned up the most obvious and predictable overflow glitches manually. Still needs tweaking, though.
* GFY one - the player rotating on the spot (recorded with the player having MF_PAPER): http://gfycat.com/WhichSpectacularDesertpupfish
* GFY two - a ring box stays static as the player turns (recorded with the MF_PAPER check turned off): http://gfycat.com/SimpleShallowDeviltasmanian
* GFY three - THE ACZ2 MINECART! What I MADE this for... http://gfycat.com/EsteemedPleasedDuck
Also, MF_PAPERCOLLISION!
* Collision bounds are limited to the surface of the MF_PAPERCOLLISION. These objects can kinda get stuck inside solid stuff when they turn, though - I tried to do some rudimentary pushing but it's glitchy as hell so it's put behind a #define for now, since stuck is generally better than overt glitching and can at least be user-mitigated.
* To make space for this, MF_AMBUSH is now MF2_AMBUSH. Because it's more like an MF2 in all its uses, honestly. Literally no object definitions in info.c use that flag, and it's always applied at runtime - like all the other MF2s! Heck, there's some precedent - the mapthing flag MTF_OBJECTFLIP applies MF2_OBJECTFLIP. It just makes sense, and prevents wastage of our precious MF_ resources which are already dwindling so.
Ultimately, I see several major uses of various combinations of these things:
* Walls (for boxes/other shapes) with perspective that can cross sector boundaries at the expense of not being as thoroughly visually handled as polyobjects.
* Flat, potentially moving hazards like Scrap Brain sawblades that are excessively simple to set up.
* Robo-Hood's arrows and other types of elongated missiles being possible to dodge based on their apparent collision bounds rather than a solid cuboid.
Nev3r is obviously of course already salivating thinking about what he can do with this.
Unfortunately, the collision issues with regards to solid stuff will probably prevent people from giving MF_PAPERCOLLISION to everything (sorry, no Paper Mario Koopa Blast for now) since it's way too easy to get stuck at the moment. Hopefully that can be ironed out down the line - but if that makes you think this branch is incomplete, keep in mind that that this level of development was never actually my intent. In the end, I just wanted flat sprites to make my shitty minecart better, and I got that - the sawblade style stuff working accurately is just a further bonus!
No relevant OpenGL code included because you know how I feel about that, but that should be easy enough for someone else to do at a later date considering the effect happens a lot in that renderer unintentionally. :V
ALSO: I added another feature which (ab)uses some structural changes I made for papersprites. It's MF2_LINKDRAW!
* Sets the sortscale of the mobj to that of its tracer.
* Basically, Smiles' tails won't clip through shields thanks to this.
* http://gfycat.com/GraveGlassEwe
ALSO ALSO: I added ANOTHER feature. FF_VERTICALFLIP allows sprite flipping without gravity flipping. No need to bullet point, it stacks properly with gravity. http://gfycat.com/FrailLongKusimanse
Test using <root>/toaster/flatminecart.wad (and <root>/!LatestSRB2Files/srb2win_branch_paper.exe if you can't compile!) MF2_LINKDRAW doesn't have a testwad but I'm doing a lot of Smiles stuff right now so it probably won't be too long.
See merge request !37
* Object number up/down is now assigned to ringslinger weapon next/prev. SO much nicer to use, especially since most people have that stuff bound to the scroll wheel.
Monitor reworking + infinite repeat use 'gold' monitors
All the monitor sprites, states, and objects are completely changed to be simpler. 'Gold' repeat use monitors are also introduced.
I'm gonna be keeping my playtest EXEs in !LSF from now on.
See merge request !20
Animated sky support
What it says on the tin: skies can be animated textures now. Just set them up as normal animated textures (keeping in mind the starting texture still has to comply with the SKYn/SKYnn/SKYnnn naming format) and hey presto, your sky animates.
See merge request !34